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 00000000..75d7d72e
Binary files /dev/null and b/androidApp/keyguard-qa.keystore differ
diff --git a/androidApp/keyguard-qa.properties b/androidApp/keyguard-qa.properties
new file mode 100644
index 00000000..929919d6
--- /dev/null
+++ b/androidApp/keyguard-qa.properties
@@ -0,0 +1,3 @@
+key_alias=AChep
+password_store=qqQJQ32ENxi9@ffMVx9crTgQ
+password_key=qqQJQ32ENxi9@ffMVx9crTgQ
diff --git a/androidApp/proguard-rules.pro b/androidApp/proguard-rules.pro
new file mode 100644
index 00000000..2f4c9f42
--- /dev/null
+++ b/androidApp/proguard-rules.pro
@@ -0,0 +1,115 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+##
+## https://github.com/sqlcipher/sqlcipher-android/issues/18
+##
+
+-keep class androidx.room.** extends androidx.sqlite.db.SupportSQLiteOpenHelper
+
+-keep,includedescriptorclasses class net.zetetic.database.** { *; }
+-keep,includedescriptorclasses interface net.zetetic.database.** { *; }
+
+##
+## https://github.com/Kotlin/kotlinx.serialization#android
+##
+
+# Keep `Companion` object fields of serializable classes.
+# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects.
+-if @kotlinx.serialization.Serializable class **
+-keepclassmembers class <1> {
+ 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 00000000..7fb0a2a7
Binary files /dev/null and b/androidApp/src/main/res/drawable/ic_logo_bitwarden.png differ
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 00000000..61700e24
Binary files /dev/null and b/androidApp/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/androidApp/src/main/res/mipmap-mdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..1c68e800
Binary files /dev/null and b/androidApp/src/main/res/mipmap-mdpi/ic_launcher.png differ
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 00000000..8f23a2b5
Binary files /dev/null and b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..6af08f8d
Binary files /dev/null and b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
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 00000000..34d241de
Binary files /dev/null and b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/androidApp/src/main/res/raw/silence b/androidApp/src/main/res/raw/silence
new file mode 100644
index 00000000..ec45eed4
Binary files /dev/null and b/androidApp/src/main/res/raw/silence differ
diff --git a/androidApp/src/main/res/resources.properties b/androidApp/src/main/res/resources.properties
new file mode 100644
index 00000000..467b3efe
--- /dev/null
+++ b/androidApp/src/main/res/resources.properties
@@ -0,0 +1 @@
+unqualifiedResLocale=en-US
diff --git a/androidApp/src/main/res/values-v31/colors.xml b/androidApp/src/main/res/values-v31/colors.xml
new file mode 100644
index 00000000..70355507
--- /dev/null
+++ b/androidApp/src/main/res/values-v31/colors.xml
@@ -0,0 +1,8 @@
+
+
+ @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;->