├── .cirrus.yml ├── .editorconfig ├── .github ├── scripts │ ├── build_aosp.sh │ └── run_tests.sh └── workflows │ ├── build.yml │ ├── codacy.yml │ ├── mobsf.yml │ └── test.yml ├── .gitignore ├── .idea ├── .name ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── copyright │ ├── Apache_2_0.xml │ └── profiles_settings.xml ├── dictionaries │ └── user.xml ├── inspectionProfiles │ └── Project_Default.xml ├── runConfigurations │ ├── All_unit_tests.xml │ ├── Instrumentation_tests__app.xml │ ├── Unit_tests__app.xml │ ├── Unit_tests__contactsbackup.xml │ ├── Unit_tests__storage_lib.xml │ ├── app.xml │ ├── app_emulator.xml │ └── seedvault_storage_lib__assembleRelease_.xml └── scopes │ ├── Kotlin_Files.xml │ └── XML_Files.xml ├── .reuse └── dep5 ├── Android.bp ├── CHANGELOG.md ├── LICENSES ├── AGPL-3.0-or-later.txt ├── Apache-2.0.txt ├── CC-BY-SA-3.0.txt ├── GPL-3.0-only.txt ├── MIT.txt └── MPL-2.0.txt ├── README.md ├── SECURITY.md ├── allowlist_com.stevesoltys.seedvault.xml ├── app ├── build.gradle.kts ├── build │ └── generated │ │ └── source │ │ └── proto │ │ └── debug │ │ └── kotlin │ │ └── com │ │ └── stevesoltys │ │ └── seedvault │ │ └── proto │ │ └── SnapshotKt.kt ├── development │ ├── DEVELOPMENT.md │ ├── platform.jks │ └── scripts │ │ ├── clear_app_data.sh │ │ ├── install_app.sh │ │ ├── provision_emulator.sh │ │ └── start_emulator.sh ├── lint.xml └── src │ ├── androidTest │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── stevesoltys │ │ └── seedvault │ │ ├── KoinInstrumentationTestApp.kt │ │ ├── KoinInstrumentationTestRunner.kt │ │ ├── PluginTest.kt │ │ ├── backend │ │ └── saf │ │ │ └── SafBackendTest.kt │ │ ├── e2e │ │ ├── LargeBackupTestBase.kt │ │ ├── LargeRestoreTestBase.kt │ │ ├── LargeTestBase.kt │ │ ├── SeedvaultLargeTest.kt │ │ ├── SeedvaultLargeTestResult.kt │ │ ├── impl │ │ │ └── BackupRestoreTest.kt │ │ ├── io │ │ │ ├── BackupDataInputIntercept.kt │ │ │ └── BackupDataOutputIntercept.kt │ │ └── screen │ │ │ ├── UiDeviceScreen.kt │ │ │ └── impl │ │ │ ├── BackupScreen.kt │ │ │ ├── DocumentPickerScreen.kt │ │ │ ├── RecoveryCodeScreen.kt │ │ │ └── RestoreScreen.kt │ │ ├── transport │ │ └── backup │ │ │ ├── KvBackupInstrumentationTest.kt │ │ │ └── PackageServiceTest.kt │ │ └── worker │ │ └── IconManagerTest.kt │ ├── debug │ ├── AndroidManifest.xml │ └── res │ │ └── values │ │ ├── arrays.xml │ │ └── config.xml │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ └── logback.xml │ ├── java │ │ └── com │ │ │ └── stevesoltys │ │ │ └── seedvault │ │ │ ├── App.kt │ │ │ ├── BackupMonitor.kt │ │ │ ├── BackupStateManager.kt │ │ │ ├── Base64Utils.kt │ │ │ ├── Clock.kt │ │ │ ├── UsbIntentReceiver.kt │ │ │ ├── UsbMonitorService.kt │ │ │ ├── backend │ │ │ ├── BackendManager.kt │ │ │ ├── LegacyStoragePlugin.kt │ │ │ ├── saf │ │ │ │ ├── DocumentsProviderLegacyPlugin.kt │ │ │ │ ├── DocumentsProviderModule.kt │ │ │ │ ├── DocumentsStorage.kt │ │ │ │ ├── SafHandler.kt │ │ │ │ ├── SafStorageOptions.kt │ │ │ │ └── StorageRootResolver.kt │ │ │ └── webdav │ │ │ │ ├── WebDavHandler.kt │ │ │ │ └── WebDavModule.kt │ │ │ ├── crypto │ │ │ ├── CipherFactory.kt │ │ │ ├── Crypto.kt │ │ │ ├── CryptoModule.kt │ │ │ └── KeyManager.kt │ │ │ ├── header │ │ │ ├── Header.kt │ │ │ ├── HeaderModule.kt │ │ │ └── HeaderReader.kt │ │ │ ├── metadata │ │ │ ├── Metadata.kt │ │ │ ├── MetadataManager.kt │ │ │ ├── MetadataModule.kt │ │ │ ├── MetadataReader.kt │ │ │ └── MetadataWriter.kt │ │ │ ├── repo │ │ │ ├── AppBackupManager.kt │ │ │ ├── BackupData.kt │ │ │ ├── BackupReceiver.kt │ │ │ ├── BlobCache.kt │ │ │ ├── BlobCreator.kt │ │ │ ├── Checker.kt │ │ │ ├── CheckerResult.kt │ │ │ ├── Loader.kt │ │ │ ├── PaddedInputStream.kt │ │ │ ├── Padding.kt │ │ │ ├── Pruner.kt │ │ │ ├── RepoModule.kt │ │ │ ├── SnapshotCreator.kt │ │ │ ├── SnapshotCreatorFactory.kt │ │ │ └── SnapshotManager.kt │ │ │ ├── restore │ │ │ ├── AppDataRestoreManager.kt │ │ │ ├── AppSelectionAdapter.kt │ │ │ ├── AppSelectionFragment.kt │ │ │ ├── AppSelectionManager.kt │ │ │ ├── FilesSelectionFragment.kt │ │ │ ├── RecycleBackupFragment.kt │ │ │ ├── RestoreActivity.kt │ │ │ ├── RestoreErrorBroadcastReceiver.kt │ │ │ ├── RestoreFilesFragment.kt │ │ │ ├── RestoreProgressAdapter.kt │ │ │ ├── RestoreProgressFragment.kt │ │ │ ├── RestoreService.kt │ │ │ ├── RestoreSetAdapter.kt │ │ │ ├── RestoreSetFragment.kt │ │ │ ├── RestoreUiModule.kt │ │ │ ├── RestoreViewModel.kt │ │ │ └── install │ │ │ │ ├── ApkInstaller.kt │ │ │ │ ├── ApkRestore.kt │ │ │ │ ├── ApkSplitCompatibilityChecker.kt │ │ │ │ ├── DeviceInfo.kt │ │ │ │ ├── InstallIntentCreator.kt │ │ │ │ ├── InstallModule.kt │ │ │ │ ├── InstallProgressAdapter.kt │ │ │ │ ├── InstallProgressFragment.kt │ │ │ │ ├── InstallRestriction.kt │ │ │ │ └── InstallResult.kt │ │ │ ├── settings │ │ │ ├── AboutDialogFragment.kt │ │ │ ├── AppListRetriever.kt │ │ │ ├── AppStatusAdapter.kt │ │ │ ├── AppStatusFragment.kt │ │ │ ├── ExpertSettingsFragment.kt │ │ │ ├── FirstRunFragment.kt │ │ │ ├── SchedulingFragment.kt │ │ │ ├── SettingsActivity.kt │ │ │ ├── SettingsFragment.kt │ │ │ ├── SettingsManager.kt │ │ │ ├── SettingsViewModel.kt │ │ │ ├── TryAgainBroadcastReceiver.kt │ │ │ └── preference │ │ │ │ └── M3ListPreference.kt │ │ │ ├── storage │ │ │ ├── StorageModule.kt │ │ │ └── StorageRestoreService.kt │ │ │ ├── transport │ │ │ ├── ConfigurableBackupTransport.kt │ │ │ ├── ConfigurableBackupTransportService.kt │ │ │ ├── backup │ │ │ │ ├── BackupCoordinator.kt │ │ │ │ ├── BackupInitializer.kt │ │ │ │ ├── BackupModule.kt │ │ │ │ ├── BackupTransportMonitor.kt │ │ │ │ ├── FinalizeBackupService.kt │ │ │ │ ├── FullBackup.kt │ │ │ │ ├── InputFactory.kt │ │ │ │ ├── KVBackup.kt │ │ │ │ ├── KVDbManager.kt │ │ │ │ └── PackageService.kt │ │ │ └── restore │ │ │ │ ├── FullRestore.kt │ │ │ │ ├── KVRestore.kt │ │ │ │ ├── OutputFactory.kt │ │ │ │ ├── RestorableBackup.kt │ │ │ │ ├── RestoreCoordinator.kt │ │ │ │ └── RestoreModule.kt │ │ │ ├── ui │ │ │ ├── AppBackupState.kt │ │ │ ├── AppViewHolder.kt │ │ │ ├── BackupActivity.kt │ │ │ ├── LiveEvent.kt │ │ │ ├── LiveEventHandler.java │ │ │ ├── MutableLiveEvent.kt │ │ │ ├── RequireProvisioningActivity.kt │ │ │ ├── RequireProvisioningViewModel.kt │ │ │ ├── SystemData.kt │ │ │ ├── UiUtils.kt │ │ │ ├── check │ │ │ │ ├── AppCheckFragment.kt │ │ │ │ ├── AppCheckResultActivity.kt │ │ │ │ ├── FileCheckFragment.kt │ │ │ │ └── FileCheckResultActivity.kt │ │ │ ├── files │ │ │ │ ├── FileSelectionFragment.kt │ │ │ │ └── FileSelectionViewModel.kt │ │ │ ├── notification │ │ │ │ ├── BackupNotificationManager.kt │ │ │ │ └── NotificationBackupObserver.kt │ │ │ ├── recoverycode │ │ │ │ ├── RecoveryCodeActivity.kt │ │ │ │ ├── RecoveryCodeAdapter.kt │ │ │ │ ├── RecoveryCodeInputFragment.kt │ │ │ │ ├── RecoveryCodeOutputFragment.kt │ │ │ │ └── RecoveryCodeViewModel.kt │ │ │ └── storage │ │ │ │ ├── BackupStorageViewModel.kt │ │ │ │ ├── PermissionGrantActivity.kt │ │ │ │ ├── RestoreStorageViewModel.kt │ │ │ │ ├── StorageActivity.kt │ │ │ │ ├── StorageCheckFragment.kt │ │ │ │ ├── StorageOption.kt │ │ │ │ ├── StorageOptionAdapter.kt │ │ │ │ ├── StorageOptionFetcher.kt │ │ │ │ ├── StorageOptionsFragment.kt │ │ │ │ ├── StorageViewModel.kt │ │ │ │ └── WebDavConfigFragment.kt │ │ │ └── worker │ │ │ ├── ApkBackup.kt │ │ │ ├── ApkBackupManager.kt │ │ │ ├── AppBackupPruneWorker.kt │ │ │ ├── AppBackupWorker.kt │ │ │ ├── AppCheckerWorker.kt │ │ │ ├── BackupRequester.kt │ │ │ ├── FileBackupWorker.kt │ │ │ ├── FileCheckerWorker.kt │ │ │ ├── IconManager.kt │ │ │ └── WorkerModule.kt │ ├── proto │ │ └── snapshot.proto │ ├── res │ │ ├── drawable │ │ │ ├── davx5.xml │ │ │ ├── davx5_foreground.xml │ │ │ ├── ic_access_time.xml │ │ │ ├── ic_app_settings.xml │ │ │ ├── ic_apps.xml │ │ │ ├── ic_battery_charging_full.xml │ │ │ ├── ic_bug_report.xml │ │ │ ├── ic_call.xml │ │ │ ├── ic_check_green.xml │ │ │ ├── ic_cloud_circle.xml │ │ │ ├── ic_cloud_done.xml │ │ │ ├── ic_cloud_download.xml │ │ │ ├── ic_cloud_error.xml │ │ │ ├── ic_cloud_reuse.xml │ │ │ ├── ic_cloud_search.xml │ │ │ ├── ic_cloud_upload.xml │ │ │ ├── ic_contacts.xml │ │ │ ├── ic_error_red.xml │ │ │ ├── ic_info_outline.xml │ │ │ ├── ic_launcher_default.xml │ │ │ ├── ic_launcher_default_background.xml │ │ │ ├── ic_launcher_default_foreground.xml │ │ │ ├── ic_launcher_foreground.xml │ │ │ ├── ic_library_add.xml │ │ │ ├── ic_message.xml │ │ │ ├── ic_network_warning.xml │ │ │ ├── ic_phone_android.xml │ │ │ ├── ic_save_alt.xml │ │ │ ├── ic_settings.xml │ │ │ ├── ic_storage.xml │ │ │ ├── ic_usb.xml │ │ │ ├── ic_vpn_key.xml │ │ │ ├── ic_warning.xml │ │ │ ├── ic_warning_yellow.xml │ │ │ ├── nextcloud.xml │ │ │ ├── nextcloud_background.xml │ │ │ ├── nextcloud_foreground.xml │ │ │ ├── round_sync.xml │ │ │ └── round_sync_foreground.xml │ │ ├── layout │ │ │ ├── activity_check_result.xml │ │ │ ├── activity_fragment_container.xml │ │ │ ├── activity_recovery_code.xml │ │ │ ├── footer_files_selection.xml │ │ │ ├── footer_snapshots.xml │ │ │ ├── fragment_about.xml │ │ │ ├── fragment_app_check.xml │ │ │ ├── fragment_app_status.xml │ │ │ ├── fragment_recovery_code_input.xml │ │ │ ├── fragment_recovery_code_output.xml │ │ │ ├── fragment_recycle_backup.xml │ │ │ ├── fragment_restore_app_selection.xml │ │ │ ├── fragment_restore_files_started.xml │ │ │ ├── fragment_restore_progress.xml │ │ │ ├── fragment_restore_set.xml │ │ │ ├── fragment_settings.xml │ │ │ ├── fragment_storage_check.xml │ │ │ ├── fragment_storage_options.xml │ │ │ ├── fragment_webdav_config.xml │ │ │ ├── header_files_selection.xml │ │ │ ├── header_snapshots.xml │ │ │ ├── list_item_app_section_title.xml │ │ │ ├── list_item_app_status.xml │ │ │ ├── list_item_recovery_code_output.xml │ │ │ ├── list_item_restore_set.xml │ │ │ ├── list_item_storage_root.xml │ │ │ ├── preference_switch.xml │ │ │ └── recovery_code_input.xml │ │ ├── menu │ │ │ ├── app_status_menu.xml │ │ │ └── settings_menu.xml │ │ ├── mipmap-anydpi │ │ │ └── ic_launcher.xml │ │ ├── values-af │ │ │ └── strings.xml │ │ ├── values-am │ │ │ └── strings.xml │ │ ├── values-ar │ │ │ └── strings.xml │ │ ├── values-as │ │ │ └── strings.xml │ │ ├── values-ast │ │ │ └── strings.xml │ │ ├── values-az │ │ │ └── strings.xml │ │ ├── values-b+sr+Latn │ │ │ └── strings.xml │ │ ├── values-b+zh+Hant+HK │ │ │ └── strings.xml │ │ ├── values-be │ │ │ └── strings.xml │ │ ├── values-bg │ │ │ └── strings.xml │ │ ├── values-bn │ │ │ └── strings.xml │ │ ├── values-bs │ │ │ └── strings.xml │ │ ├── values-ca │ │ │ └── strings.xml │ │ ├── values-cs │ │ │ └── strings.xml │ │ ├── values-cy │ │ │ └── strings.xml │ │ ├── values-da │ │ │ └── strings.xml │ │ ├── values-de │ │ │ └── strings.xml │ │ ├── values-el │ │ │ └── strings.xml │ │ ├── values-en-rAU │ │ │ └── strings.xml │ │ ├── values-en-rCA │ │ │ └── strings.xml │ │ ├── values-en-rGB │ │ │ └── strings.xml │ │ ├── values-en-rIN │ │ │ └── strings.xml │ │ ├── values-eo │ │ │ └── strings.xml │ │ ├── values-es-rUS │ │ │ └── strings.xml │ │ ├── values-es │ │ │ └── strings.xml │ │ ├── values-et │ │ │ └── strings.xml │ │ ├── values-eu │ │ │ └── strings.xml │ │ ├── values-fa │ │ │ └── strings.xml │ │ ├── values-fi │ │ │ └── strings.xml │ │ ├── values-fr-rCA │ │ │ └── strings.xml │ │ ├── values-fr │ │ │ └── strings.xml │ │ ├── values-gd │ │ │ └── strings.xml │ │ ├── values-gl │ │ │ └── strings.xml │ │ ├── values-gu │ │ │ └── strings.xml │ │ ├── values-hi │ │ │ └── strings.xml │ │ ├── values-hr │ │ │ └── strings.xml │ │ ├── values-hu │ │ │ └── strings.xml │ │ ├── values-hy │ │ │ └── strings.xml │ │ ├── values-in │ │ │ └── strings.xml │ │ ├── values-is │ │ │ └── strings.xml │ │ ├── values-it │ │ │ └── strings.xml │ │ ├── values-iw │ │ │ └── strings.xml │ │ ├── values-ja │ │ │ └── strings.xml │ │ ├── values-ka │ │ │ └── strings.xml │ │ ├── values-kk │ │ │ └── strings.xml │ │ ├── values-km │ │ │ └── strings.xml │ │ ├── values-kn │ │ │ └── strings.xml │ │ ├── values-ko │ │ │ └── strings.xml │ │ ├── values-ky │ │ │ └── strings.xml │ │ ├── values-lo │ │ │ └── strings.xml │ │ ├── values-lt │ │ │ └── strings.xml │ │ ├── values-lv │ │ │ └── strings.xml │ │ ├── values-mk │ │ │ └── strings.xml │ │ ├── values-ml │ │ │ └── strings.xml │ │ ├── values-mn │ │ │ └── strings.xml │ │ ├── values-mr │ │ │ └── strings.xml │ │ ├── values-ms │ │ │ └── strings.xml │ │ ├── values-my │ │ │ └── strings.xml │ │ ├── values-nb-rNO │ │ │ └── strings.xml │ │ ├── values-ne │ │ │ └── strings.xml │ │ ├── values-night │ │ │ ├── bools.xml │ │ │ └── colors.xml │ │ ├── values-nl │ │ │ └── strings.xml │ │ ├── values-or │ │ │ └── strings.xml │ │ ├── values-pa │ │ │ └── strings.xml │ │ ├── values-pl │ │ │ └── strings.xml │ │ ├── values-pt-rBR │ │ │ └── strings.xml │ │ ├── values-pt-rPT │ │ │ └── strings.xml │ │ ├── values-pt │ │ │ └── strings.xml │ │ ├── values-ro │ │ │ └── strings.xml │ │ ├── values-ru │ │ │ └── strings.xml │ │ ├── values-si │ │ │ └── strings.xml │ │ ├── values-sk │ │ │ └── strings.xml │ │ ├── values-sl │ │ │ └── strings.xml │ │ ├── values-sq │ │ │ └── strings.xml │ │ ├── values-sr │ │ │ └── strings.xml │ │ ├── values-sv │ │ │ └── strings.xml │ │ ├── values-sw │ │ │ └── strings.xml │ │ ├── values-ta │ │ │ └── strings.xml │ │ ├── values-te │ │ │ └── strings.xml │ │ ├── values-th │ │ │ └── strings.xml │ │ ├── values-tl │ │ │ └── strings.xml │ │ ├── values-tr │ │ │ └── strings.xml │ │ ├── values-ug │ │ │ └── strings.xml │ │ ├── values-uk │ │ │ └── strings.xml │ │ ├── values-ur │ │ │ └── strings.xml │ │ ├── values-uz │ │ │ └── strings.xml │ │ ├── values-vi │ │ │ └── strings.xml │ │ ├── values-zh-rCN │ │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ │ └── strings.xml │ │ ├── values-zu │ │ │ └── strings.xml │ │ ├── values │ │ │ ├── arrays.xml │ │ │ ├── bools.xml │ │ │ ├── colors.xml │ │ │ ├── config.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ └── xml │ │ │ ├── device_filter.xml │ │ │ ├── network_security_config.xml │ │ │ ├── settings.xml │ │ │ ├── settings_expert.xml │ │ │ └── settings_scheduling.xml │ └── resources │ │ └── simplelogger.properties │ ├── sharedTest │ └── java │ │ └── com │ │ └── stevesoltys │ │ └── seedvault │ │ ├── TestUtils.kt │ │ └── crypto │ │ └── KeyManagerTestImpl.kt │ └── test │ ├── java │ └── com │ │ └── stevesoltys │ │ └── seedvault │ │ ├── TestApp.kt │ │ ├── backend │ │ └── saf │ │ │ └── DocumentFileTest.kt │ │ ├── crypto │ │ ├── Bip39ComparisonTest.kt │ │ ├── CryptoImplTest.kt │ │ ├── CryptoIntegrationTest.kt │ │ ├── CryptoTest.kt │ │ ├── KeyManagerImplTest.kt │ │ └── WordListTest.kt │ │ ├── header │ │ └── HeaderReaderTest.kt │ │ ├── metadata │ │ ├── MetadataManagerTest.kt │ │ ├── MetadataReaderTest.kt │ │ └── MetadataV0ReadTest.kt │ │ ├── repo │ │ ├── AppBackupManagerTest.kt │ │ ├── BackupReceiverTest.kt │ │ ├── BlobCacheTest.kt │ │ ├── BlobCreatorTest.kt │ │ ├── CheckerTest.kt │ │ ├── PaddingTest.kt │ │ ├── PrunerTest.kt │ │ ├── SnapshotCreatorTest.kt │ │ └── SnapshotManagerTest.kt │ │ ├── restore │ │ ├── AppSelectionManagerTest.kt │ │ └── install │ │ │ ├── ApkBackupRestoreTest.kt │ │ │ ├── ApkRestoreTest.kt │ │ │ ├── ApkRestoreV1Test.kt │ │ │ ├── ApkSplitCompatibilityCheckerTest.kt │ │ │ └── DeviceInfoTest.kt │ │ ├── transport │ │ ├── CoordinatorIntegrationTest.kt │ │ ├── TransportTest.kt │ │ ├── backup │ │ │ ├── BackupCoordinatorTest.kt │ │ │ ├── BackupCreationTest.kt │ │ │ ├── BackupTest.kt │ │ │ ├── FullBackupTest.kt │ │ │ ├── KVBackupTest.kt │ │ │ └── TestKvDbManager.kt │ │ └── restore │ │ │ ├── FullRestoreTest.kt │ │ │ ├── FullRestoreV1Test.kt │ │ │ ├── KVRestoreTest.kt │ │ │ ├── KVRestoreV1Test.kt │ │ │ ├── RestoreCoordinatorTest.kt │ │ │ ├── RestoreTest.kt │ │ │ ├── RestoreV0IntegrationTest.kt │ │ │ └── RestoreV1IntegrationTest.kt │ │ └── worker │ │ ├── ApkBackupManagerTest.kt │ │ └── ApkBackupTest.kt │ └── resources │ └── simplelogger.properties ├── build.gradle.kts ├── contactsbackup ├── .gitignore ├── Android.bp ├── README.md ├── build.gradle.kts ├── default-permissions_org.calyxos.backup.contacts.xml ├── libs │ └── com.android.vcard.jar ├── lint.xml ├── src │ ├── androidTest │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── org │ │ │ └── calyxos │ │ │ └── backup │ │ │ └── contacts │ │ │ ├── BackupRestoreTest.kt │ │ │ └── ContactUtils.kt │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── org │ │ │ │ └── calyxos │ │ │ │ └── backup │ │ │ │ └── contacts │ │ │ │ ├── ContactsBackupAgent.java │ │ │ │ ├── FullBackupFileHandler.java │ │ │ │ ├── StartBroadcastReceiver.java │ │ │ │ ├── VCardExporter.java │ │ │ │ └── VCardImporter.java │ │ └── res │ │ │ ├── values-af │ │ │ └── strings.xml │ │ │ ├── values-am │ │ │ └── strings.xml │ │ │ ├── values-ar │ │ │ └── strings.xml │ │ │ ├── values-as │ │ │ └── strings.xml │ │ │ ├── values-ast │ │ │ └── strings.xml │ │ │ ├── values-az │ │ │ └── strings.xml │ │ │ ├── values-b+sr+Latn │ │ │ └── strings.xml │ │ │ ├── values-b+zh+Hant+HK │ │ │ └── strings.xml │ │ │ ├── values-be │ │ │ └── strings.xml │ │ │ ├── values-bg │ │ │ └── strings.xml │ │ │ ├── values-bn │ │ │ └── strings.xml │ │ │ ├── values-bs │ │ │ └── strings.xml │ │ │ ├── values-ca │ │ │ └── strings.xml │ │ │ ├── values-cs │ │ │ └── strings.xml │ │ │ ├── values-cy │ │ │ └── strings.xml │ │ │ ├── values-da │ │ │ └── strings.xml │ │ │ ├── values-de │ │ │ └── strings.xml │ │ │ ├── values-el │ │ │ └── strings.xml │ │ │ ├── values-en-rAU │ │ │ └── strings.xml │ │ │ ├── values-en-rCA │ │ │ └── strings.xml │ │ │ ├── values-en-rGB │ │ │ └── strings.xml │ │ │ ├── values-en-rIN │ │ │ └── strings.xml │ │ │ ├── values-eo │ │ │ └── strings.xml │ │ │ ├── values-es-rUS │ │ │ └── strings.xml │ │ │ ├── values-es │ │ │ └── strings.xml │ │ │ ├── values-et │ │ │ └── strings.xml │ │ │ ├── values-eu │ │ │ └── strings.xml │ │ │ ├── values-fa │ │ │ └── strings.xml │ │ │ ├── values-fi │ │ │ └── strings.xml │ │ │ ├── values-fr-rCA │ │ │ └── strings.xml │ │ │ ├── values-fr │ │ │ └── strings.xml │ │ │ ├── values-gd │ │ │ └── strings.xml │ │ │ ├── values-gl │ │ │ └── strings.xml │ │ │ ├── values-gu │ │ │ └── strings.xml │ │ │ ├── values-hi │ │ │ └── strings.xml │ │ │ ├── values-hr │ │ │ └── strings.xml │ │ │ ├── values-hu │ │ │ └── strings.xml │ │ │ ├── values-hy │ │ │ └── strings.xml │ │ │ ├── values-in │ │ │ └── strings.xml │ │ │ ├── values-is │ │ │ └── strings.xml │ │ │ ├── values-it │ │ │ └── strings.xml │ │ │ ├── values-iw │ │ │ └── strings.xml │ │ │ ├── values-ja │ │ │ └── strings.xml │ │ │ ├── values-ka │ │ │ └── strings.xml │ │ │ ├── values-kk │ │ │ └── strings.xml │ │ │ ├── values-km │ │ │ └── strings.xml │ │ │ ├── values-kn │ │ │ └── strings.xml │ │ │ ├── values-ko │ │ │ └── strings.xml │ │ │ ├── values-ky │ │ │ └── strings.xml │ │ │ ├── values-lo │ │ │ └── strings.xml │ │ │ ├── values-lt │ │ │ └── strings.xml │ │ │ ├── values-lv │ │ │ └── strings.xml │ │ │ ├── values-mk │ │ │ └── strings.xml │ │ │ ├── values-ml │ │ │ └── strings.xml │ │ │ ├── values-mn │ │ │ └── strings.xml │ │ │ ├── values-mr │ │ │ └── strings.xml │ │ │ ├── values-ms │ │ │ └── strings.xml │ │ │ ├── values-my │ │ │ └── strings.xml │ │ │ ├── values-nb-rNO │ │ │ └── strings.xml │ │ │ ├── values-ne │ │ │ └── strings.xml │ │ │ ├── values-nl │ │ │ └── strings.xml │ │ │ ├── values-or │ │ │ └── strings.xml │ │ │ ├── values-pa │ │ │ └── strings.xml │ │ │ ├── values-pl │ │ │ └── strings.xml │ │ │ ├── values-pt-rBR │ │ │ └── strings.xml │ │ │ ├── values-pt-rPT │ │ │ └── strings.xml │ │ │ ├── values-pt │ │ │ └── strings.xml │ │ │ ├── values-ro │ │ │ └── strings.xml │ │ │ ├── values-ru │ │ │ └── strings.xml │ │ │ ├── values-si │ │ │ └── strings.xml │ │ │ ├── values-sk │ │ │ └── strings.xml │ │ │ ├── values-sl │ │ │ └── strings.xml │ │ │ ├── values-sq │ │ │ └── strings.xml │ │ │ ├── values-sr │ │ │ └── strings.xml │ │ │ ├── values-sv │ │ │ └── strings.xml │ │ │ ├── values-sw │ │ │ └── strings.xml │ │ │ ├── values-ta │ │ │ └── strings.xml │ │ │ ├── values-te │ │ │ └── strings.xml │ │ │ ├── values-th │ │ │ └── strings.xml │ │ │ ├── values-tl │ │ │ └── strings.xml │ │ │ ├── values-tr │ │ │ └── strings.xml │ │ │ ├── values-ug │ │ │ └── strings.xml │ │ │ ├── values-uk │ │ │ └── strings.xml │ │ │ ├── values-ur │ │ │ └── strings.xml │ │ │ ├── values-uz │ │ │ └── strings.xml │ │ │ ├── values-vi │ │ │ └── strings.xml │ │ │ ├── values-zh-rCN │ │ │ └── strings.xml │ │ │ ├── values-zh-rTW │ │ │ └── strings.xml │ │ │ ├── values-zu │ │ │ └── strings.xml │ │ │ └── values │ │ │ └── strings.xml │ └── test │ │ └── java │ │ └── org │ │ └── calyxos │ │ └── backup │ │ └── contacts │ │ └── ContactsBackupAgentTest.kt └── testkey.jks ├── core ├── .gitignore ├── Android.bp ├── build.gradle.kts ├── libs │ ├── Android.bp │ ├── dav4jvm │ │ ├── Android.bp │ │ ├── dav4jvm-c1bc143.jar │ │ └── okhttp-4.12.0.jar │ ├── kotlin-logging-jvm-6.0.3.jar │ ├── slf4j-api-2.0.16.jar │ └── tink-android-1.15.0.jar └── src │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── org │ │ │ └── calyxos │ │ │ └── seedvault │ │ │ └── core │ │ │ ├── ByteArrayUtils.kt │ │ │ ├── MemoryLogger.kt │ │ │ ├── backends │ │ │ ├── Backend.kt │ │ │ ├── BackendFactory.kt │ │ │ ├── BackendProperties.kt │ │ │ ├── BackendSaver.kt │ │ │ ├── BackendTest.kt │ │ │ ├── Constants.kt │ │ │ ├── FileHandle.kt │ │ │ ├── IBackendManager.kt │ │ │ ├── RetryBackend.kt │ │ │ ├── saf │ │ │ │ ├── DocumentFileCache.kt │ │ │ │ ├── SafBackend.kt │ │ │ │ ├── SafHelper.kt │ │ │ │ ├── SafProperties.kt │ │ │ │ └── UriUtils.kt │ │ │ └── webdav │ │ │ │ ├── WebDavBackend.kt │ │ │ │ ├── WebDavConfig.kt │ │ │ │ ├── WebDavHelper.kt │ │ │ │ └── WebDavProperties.kt │ │ │ └── crypto │ │ │ ├── CoreCrypto.kt │ │ │ ├── Hkdf.kt │ │ │ └── KeyManager.kt │ └── res │ │ ├── values-night │ │ └── colors.xml │ │ └── values │ │ ├── colors.xml │ │ └── styles.xml │ └── test │ ├── java │ └── org │ │ └── calyxos │ │ └── seedvault │ │ └── core │ │ ├── backends │ │ ├── RetryBackendTest.kt │ │ └── webdav │ │ │ ├── WebDavBackendTest.kt │ │ │ └── WebDavTestConfig.kt │ │ └── crypto │ │ └── HkdfTest.kt │ └── resources │ └── simplelogger.properties ├── default-permissions_com.stevesoltys.seedvault.xml ├── doc └── README.md ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libs ├── Android.bp ├── aosp │ ├── android.jar │ └── libcore.jar ├── koin-android │ ├── Android.bp │ ├── koin-android-3.5.6.aar │ └── koin-core-jvm-3.5.6.jar ├── kotlin-bip39-jvm-1.0.8.jar ├── logback-android-3.0.0.aar ├── protobuf-kotlin-lite-3.21.12.jar ├── seedvault-chunker-0.1.jar └── zstd-jni-1.5.6-5.aar ├── logcat-verbose.sh ├── permissions_com.stevesoltys.seedvault.xml ├── settings.gradle.kts └── storage ├── .gitignore ├── README.md ├── artwork ├── ic_cloud_restore.svg └── ic_download_library.svg ├── demo ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ └── test.jpg │ ├── ic_launcher-playstore.png │ ├── java │ └── de │ │ └── grobox │ │ └── storagebackuptester │ │ ├── App.kt │ │ ├── Job.kt │ │ ├── LogAdapter.kt │ │ ├── LogFragment.kt │ │ ├── MainActivity.kt │ │ ├── MainViewModel.kt │ │ ├── backup │ │ └── BackupStats.kt │ │ ├── crypto │ │ └── KeyManager.kt │ │ ├── plugin │ │ └── TestSafBackend.kt │ │ ├── restore │ │ ├── DemoFileSelectionFragment.kt │ │ ├── DemoSnapshotFragment.kt │ │ ├── RestoreFragment.kt │ │ └── RestoreStats.kt │ │ ├── scanner │ │ ├── DocumentScanFragment.kt │ │ ├── DocumentScanner.kt │ │ ├── MediaScanFragment.kt │ │ └── MediaScanner.kt │ │ └── settings │ │ ├── InfoFragment.kt │ │ ├── SettingsFragment.kt │ │ └── SettingsManager.kt │ └── res │ ├── drawable │ ├── ic_info.xml │ ├── ic_launcher_background.xml │ ├── ic_launcher_foreground.xml │ ├── ic_refresh.xml │ ├── ic_settings.xml │ └── ic_share.xml │ ├── layout │ ├── activity_main.xml │ ├── footer_files.xml │ ├── footer_snapshot.xml │ ├── fragment_content.xml │ ├── fragment_log.xml │ ├── fragment_scan.xml │ ├── header_file_select.xml │ └── item_log.xml │ ├── menu │ ├── fragment_main.xml │ ├── fragment_scan.xml │ └── fragment_settings.xml │ ├── mipmap-anydpi-v26 │ └── ic_launcher.xml │ ├── values-night │ └── themes.xml │ └── values │ ├── colors.xml │ ├── strings.xml │ └── themes.xml ├── doc └── design.md ├── lib ├── .gitignore ├── Android.bp ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro ├── schemas │ └── org.calyxos.backup.storage.db.Db │ │ ├── 1.json │ │ └── 2.json └── src │ ├── androidTest │ └── java │ │ └── org │ │ └── calyxos │ │ └── backup │ │ └── storage │ │ └── db │ │ ├── ChunksCacheTest.kt │ │ ├── FilesCacheTest.kt │ │ ├── MigrationTest.kt │ │ └── UriStoreTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── org │ │ │ └── calyxos │ │ │ └── backup │ │ │ └── storage │ │ │ ├── SnapshotRetriever.kt │ │ │ ├── TimeUtils.kt │ │ │ ├── UriUtils.kt │ │ │ ├── api │ │ │ ├── BackupContentType.kt │ │ │ ├── BackupFile.kt │ │ │ ├── BackupObserver.kt │ │ │ ├── CheckObserver.kt │ │ │ ├── CheckResult.kt │ │ │ ├── RestoreObserver.kt │ │ │ ├── Snapshot.kt │ │ │ ├── StorageBackup.kt │ │ │ └── StoragePlugin.kt │ │ │ ├── backup │ │ │ ├── Backup.kt │ │ │ ├── BackupJobService.kt │ │ │ ├── BackupService.kt │ │ │ ├── BackupWorker.kt │ │ │ ├── ChunkWriter.kt │ │ │ ├── Chunker.kt │ │ │ ├── ChunksCacheRepopulater.kt │ │ │ ├── FileBackup.kt │ │ │ ├── NotificationBackupObserver.kt │ │ │ ├── SmallFileBackup.kt │ │ │ └── ZipChunker.kt │ │ │ ├── check │ │ │ ├── Checker.kt │ │ │ ├── CheckerWorker.kt │ │ │ └── NotificationCheckObserver.kt │ │ │ ├── content │ │ │ └── ContentFile.kt │ │ │ ├── crypto │ │ │ ├── ChunkCrypto.kt │ │ │ └── StreamCrypto.kt │ │ │ ├── db │ │ │ ├── ChunksCache.kt │ │ │ ├── Db.kt │ │ │ ├── FilesCache.kt │ │ │ └── UriStore.kt │ │ │ ├── prune │ │ │ ├── Pruner.kt │ │ │ └── RetentionManager.kt │ │ │ ├── restore │ │ │ ├── AbstractChunkRestore.kt │ │ │ ├── FileRestore.kt │ │ │ ├── FileSplitter.kt │ │ │ ├── MultiChunkRestore.kt │ │ │ ├── NotificationRestoreObserver.kt │ │ │ ├── Restore.kt │ │ │ ├── RestoreService.kt │ │ │ ├── SingleChunkRestore.kt │ │ │ └── ZipChunkRestore.kt │ │ │ ├── scanner │ │ │ ├── DocumentScanner.kt │ │ │ ├── FileScanner.kt │ │ │ └── MediaScanner.kt │ │ │ └── ui │ │ │ ├── Notifications.kt │ │ │ ├── backup │ │ │ ├── BackupContentAdapter.kt │ │ │ ├── BackupContentFragment.kt │ │ │ ├── BackupContentItem.kt │ │ │ └── BackupContentViewModel.kt │ │ │ ├── check │ │ │ ├── CheckResultActivity.kt │ │ │ ├── CheckResultFragment.kt │ │ │ └── SnapshotFilesFragment.kt │ │ │ └── restore │ │ │ ├── FileSelectionFragment.kt │ │ │ ├── FileSelectionManager.kt │ │ │ ├── FilesAdapter.kt │ │ │ ├── FilesItem.kt │ │ │ ├── SnapshotAdapter.kt │ │ │ └── SnapshotFragment.kt │ ├── proto │ │ ├── backup_document_file.proto │ │ ├── backup_media_file.proto │ │ └── backup_snapshot.proto │ └── res │ │ ├── drawable │ │ ├── ic_add.xml │ │ ├── ic_audio_file.xml │ │ ├── ic_auto_delete.xml │ │ ├── ic_chevron_right.xml │ │ ├── ic_cloud_done.xml │ │ ├── ic_cloud_error.xml │ │ ├── ic_cloud_restore.xml │ │ ├── ic_cloud_search.xml │ │ ├── ic_cloud_upload.xml │ │ ├── ic_download_library.xml │ │ ├── ic_folder.xml │ │ ├── ic_image.xml │ │ ├── ic_indeterminate_check_box.xml │ │ ├── ic_insert_drive_file.xml │ │ ├── ic_keyboard_arrow_down.xml │ │ ├── ic_more_vert.xml │ │ ├── ic_music_library.xml │ │ ├── ic_photo_library.xml │ │ ├── ic_video_file.xml │ │ ├── ic_video_library.xml │ │ └── ic_warning.xml │ │ ├── layout │ │ ├── activity_check_results.xml │ │ ├── fragment_backup_content.xml │ │ ├── fragment_check_results.xml │ │ ├── fragment_select_files.xml │ │ ├── fragment_snapshot.xml │ │ ├── header_snapshot_files.xml │ │ ├── item_custom.xml │ │ ├── item_file.xml │ │ ├── item_media.xml │ │ └── item_snapshot.xml │ │ ├── menu │ │ └── item_custom.xml │ │ ├── values-af │ │ └── strings.xml │ │ ├── values-am │ │ └── strings.xml │ │ ├── values-ar │ │ └── strings.xml │ │ ├── values-as │ │ └── strings.xml │ │ ├── values-ast │ │ └── strings.xml │ │ ├── values-az │ │ └── strings.xml │ │ ├── values-b+sr+Latn │ │ └── strings.xml │ │ ├── values-b+zh+Hant+HK │ │ └── strings.xml │ │ ├── values-be │ │ └── strings.xml │ │ ├── values-bg │ │ └── strings.xml │ │ ├── values-bn │ │ └── strings.xml │ │ ├── values-bs │ │ └── strings.xml │ │ ├── values-ca │ │ └── strings.xml │ │ ├── values-cs │ │ └── strings.xml │ │ ├── values-cy │ │ └── strings.xml │ │ ├── values-da │ │ └── strings.xml │ │ ├── values-de │ │ └── strings.xml │ │ ├── values-el │ │ └── strings.xml │ │ ├── values-en-rAU │ │ └── strings.xml │ │ ├── values-en-rCA │ │ └── strings.xml │ │ ├── values-en-rGB │ │ └── strings.xml │ │ ├── values-en-rIN │ │ └── strings.xml │ │ ├── values-eo │ │ └── strings.xml │ │ ├── values-es-rUS │ │ └── strings.xml │ │ ├── values-es │ │ └── strings.xml │ │ ├── values-et │ │ └── strings.xml │ │ ├── values-eu │ │ └── strings.xml │ │ ├── values-fa │ │ └── strings.xml │ │ ├── values-fi │ │ └── strings.xml │ │ ├── values-fr-rCA │ │ └── strings.xml │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-gd │ │ └── strings.xml │ │ ├── values-gl │ │ └── strings.xml │ │ ├── values-gu │ │ └── strings.xml │ │ ├── values-hi │ │ └── strings.xml │ │ ├── values-hr │ │ └── strings.xml │ │ ├── values-hu │ │ └── strings.xml │ │ ├── values-hy │ │ └── strings.xml │ │ ├── values-in │ │ └── strings.xml │ │ ├── values-is │ │ └── strings.xml │ │ ├── values-it │ │ └── strings.xml │ │ ├── values-iw │ │ └── strings.xml │ │ ├── values-ja │ │ └── strings.xml │ │ ├── values-ka │ │ └── strings.xml │ │ ├── values-kk │ │ └── strings.xml │ │ ├── values-km │ │ └── strings.xml │ │ ├── values-kn │ │ └── strings.xml │ │ ├── values-ko │ │ └── strings.xml │ │ ├── values-ky │ │ └── strings.xml │ │ ├── values-lo │ │ └── strings.xml │ │ ├── values-lt │ │ └── strings.xml │ │ ├── values-lv │ │ └── strings.xml │ │ ├── values-mk │ │ └── strings.xml │ │ ├── values-ml │ │ └── strings.xml │ │ ├── values-mn │ │ └── strings.xml │ │ ├── values-mr │ │ └── strings.xml │ │ ├── values-ms │ │ └── strings.xml │ │ ├── values-my │ │ └── strings.xml │ │ ├── values-nb-rNO │ │ └── strings.xml │ │ ├── values-ne │ │ └── strings.xml │ │ ├── values-nl │ │ └── strings.xml │ │ ├── values-or │ │ └── strings.xml │ │ ├── values-pa │ │ └── strings.xml │ │ ├── values-pl │ │ └── strings.xml │ │ ├── values-pt-rBR │ │ └── strings.xml │ │ ├── values-pt-rPT │ │ └── strings.xml │ │ ├── values-pt │ │ └── strings.xml │ │ ├── values-ro │ │ └── strings.xml │ │ ├── values-ru │ │ └── strings.xml │ │ ├── values-si │ │ └── strings.xml │ │ ├── values-sk │ │ └── strings.xml │ │ ├── values-sl │ │ └── strings.xml │ │ ├── values-sq │ │ └── strings.xml │ │ ├── values-sr │ │ └── strings.xml │ │ ├── values-sv │ │ └── strings.xml │ │ ├── values-sw │ │ └── strings.xml │ │ ├── values-ta │ │ └── strings.xml │ │ ├── values-te │ │ └── strings.xml │ │ ├── values-th │ │ └── strings.xml │ │ ├── values-tl │ │ └── strings.xml │ │ ├── values-tr │ │ └── strings.xml │ │ ├── values-ug │ │ └── strings.xml │ │ ├── values-uk │ │ └── strings.xml │ │ ├── values-ur │ │ └── strings.xml │ │ ├── values-uz │ │ └── strings.xml │ │ ├── values-vi │ │ └── strings.xml │ │ ├── values-zh-rCN │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ └── strings.xml │ │ ├── values-zu │ │ └── strings.xml │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── org │ └── calyxos │ └── backup │ └── storage │ ├── BackupRestoreTest.kt │ ├── TestUtils.kt │ ├── backup │ ├── BackupTest.kt │ ├── ChunkWriterTest.kt │ ├── ChunkerTest.kt │ ├── ChunksCacheRepopulaterTest.kt │ ├── SmallFileBackupIntegrationTest.kt │ ├── SmallFileBackupTest.kt │ └── ZipChunkerTest.kt │ ├── prune │ ├── PrunerTest.kt │ └── RetentionManagerTest.kt │ └── restore │ └── FileSplitterTest.kt ├── lint.xml └── logcat-verbose.sh /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | end_of_line = lf 4 | insert_final_newline = true 5 | trim_trailing_whitespace = true 6 | 7 | [*.{kt,kts}] 8 | indent_size = 4 9 | max_line_length = 100 10 | 11 | [app/src/main/res/values-*/strings.xml] 12 | insert_final_newline = unset 13 | trim_trailing_whitespace = unset 14 | 15 | [*.md] 16 | trim_trailing_whitespace = false 17 | 18 | [gradlew.bat] 19 | charset = latin1 20 | end_of_line = crlf 21 | insert_final_newline = false 22 | 23 | [.editorconfig] 24 | ij_editorconfig_spaces_around_assignment_operators = true 25 | -------------------------------------------------------------------------------- /.github/scripts/run_tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # SPDX-FileCopyrightText: 2023 The Calyx Institute 3 | # SPDX-License-Identifier: Apache-2.0 4 | # 5 | 6 | echo "Disable auto-restore" 7 | adb shell bmgr autorestore false 8 | 9 | echo "Installing Seedvault app..." 10 | ./gradlew --stacktrace :app:installDebugAndroidTest 11 | sleep 60 12 | 13 | large_test_exit_code=0 14 | ./gradlew --stacktrace -Pinstrumented_test_size=large :app:connectedAndroidTest || large_test_exit_code=$? 15 | 16 | adb pull /sdcard/seedvault_test_results 17 | 18 | if [ "$large_test_exit_code" -ne 0 ]; then 19 | echo 'Large tests failed.' 20 | exit 1 21 | fi 22 | 23 | medium_test_exit_code=0 24 | ./gradlew --stacktrace -Pinstrumented_test_size=medium :app:connectedAndroidTest || medium_test_exit_code=$? 25 | 26 | if [ "$medium_test_exit_code" -ne 0 ]; then 27 | echo 'Medium tests failed.' 28 | exit 1 29 | fi 30 | 31 | exit 0 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Java 2 | *.class 3 | *.war 4 | *.ear 5 | hs_err_pid* 6 | 7 | ## Intellij 8 | out/ 9 | build/ 10 | storage/build/ 11 | contactsbackup/build/ 12 | /lib/ 13 | .idea/* 14 | !.idea/runConfigurations* 15 | !.idea/inspectionProfiles* 16 | !.idea/codeStyles* 17 | !.idea/copyright* 18 | !.idea/dictionaries* 19 | !.idea/scopes* 20 | !.idea/.name 21 | *.ipr 22 | *.iws 23 | *.iml 24 | 25 | ## Eclipse 26 | .classpath 27 | .project 28 | .metadata 29 | **/bin/ 30 | tmp/ 31 | *.tmp 32 | *.bak 33 | *.swp 34 | *~.nib 35 | local.properties 36 | .settings/ 37 | .loadpath 38 | .externalToolBuilders/ 39 | *.launch 40 | 41 | ## NetBeans 42 | **/nbproject/private/ 43 | /build/ 44 | /app/build/ 45 | nbbuild/ 46 | dist/ 47 | nbdist/ 48 | nbactions.xml 49 | nb-configuration.xml 50 | 51 | ## Gradle 52 | .gradle 53 | keystore.properties 54 | gradle-app.setting 55 | 56 | ## OS Specific 57 | .DS_Store 58 | 59 | ## Android 60 | gen/ 61 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | Seedvault -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/copyright/Apache_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/dictionaries/user.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | apk 5 | chunker 6 | davx 7 | ejectable 8 | hasher 9 | hkdf 10 | launchable 11 | repopulater 12 | restorable 13 | seedvault 14 | snowden 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/runConfigurations/All_unit_tests.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/runConfigurations/Unit_tests__app.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |