diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 9f21d2f9..361385d6 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1 +1 @@
-patreon: omgodse
\ No newline at end of file
+ko_fi: philkes
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 00000000..744a6c63
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,36 @@
+name: Bug Report
+description: Create a report to help us improve
+labels: ["bug"]
+projects: []
+body:
+ - type: textarea
+ id: what-happened
+ attributes:
+ label: What happened?
+ description: Also tell us, what did you expect to happen?
+ placeholder: Tell us what you see!
+ value: "A bug happened!"
+ validations:
+ required: true
+ - type: input
+ id: version
+ attributes:
+ label: App Version
+ description: What version of the app are you running?
+ validations:
+ required: true
+ - type: input
+ id: android-version
+ attributes:
+ label: Android Version (API Level)
+ description: What Android version are you using?
+ - type: textarea
+ id: logs
+ attributes:
+ label: (Optional) Relevant log output
+ description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
+ render: shell
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for taking the time to fill out this bug report!
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 00000000..ceaa098a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,14 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: enhancement
+assignees: ''
+
+---
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/translation.md b/.github/ISSUE_TEMPLATE/translation.md
new file mode 100644
index 00000000..747d8052
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/translation.md
@@ -0,0 +1,10 @@
+---
+name: Translation Update
+about: Update translations by uploading updated translations.xlsx
+title: ' translations update'
+labels: translations
+assignees: ''
+
+---
+
+Drag'n'drop your updated translations.xlsx file here 🙂
diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml
new file mode 100644
index 00000000..05533367
--- /dev/null
+++ b/.github/workflows/deploy.yaml
@@ -0,0 +1,56 @@
+name: Deploy to GitHub Pages
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - documentation/**
+ # Review gh actions docs if you want to further define triggers, paths, etc
+ # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on
+
+jobs:
+ build:
+ name: Build Docusaurus
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 18
+ cache-dependency-path: documentation/yarn.lock
+ cache: yarn
+
+ - name: Install dependencies
+ working-directory: documentation
+ run: yarn install --frozen-lockfile
+ - name: Build website
+ working-directory: documentation
+ run: yarn build
+
+ - name: Upload Build Artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: documentation/build
+
+ deploy:
+ name: Deploy to GitHub Pages
+ needs: build
+
+ # Grant GITHUB_TOKEN the permissions required to make a Pages deployment
+ permissions:
+ pages: write # to deploy to Pages
+ id-token: write # to verify the deployment originates from an appropriate source
+
+ # Deploy to the github-pages environment
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+
+ runs-on: ubuntu-latest
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 603b1407..6238d340 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,16 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea/
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
+*/.attach_pid*
+fastlane/*
+!fastlane/join-testers.png
+!fastlane/metadata
+Gemfile*
+*.sh
+!generate-changelogs.sh
\ No newline at end of file
diff --git a/.scripts/pre-commit b/.scripts/pre-commit
new file mode 100755
index 00000000..ecd6b1d6
--- /dev/null
+++ b/.scripts/pre-commit
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Capture the list of initially staged Kotlin files
+initial_staged_files=$(git diff --name-only --cached -- '*.kt')
+
+if [ -z "$initial_staged_files" ]; then
+ echo "No Kotlin files staged for commit."
+ exit 0
+fi
+
+formatted_files=$(echo "$initial_staged_files" | sed 's|^app/||' | paste -sd "," -)
+echo "Formatting Kotlin files: $formatted_files"
+./gradlew ktfmtPrecommit --include-only="$formatted_files"
+
+if [ $? -ne 0 ]; then
+ echo "Kotlin formatting failed. Please fix the issues."
+ exit 1
+fi
+
+# Re-stage only the initially staged Kotlin files
+for file in $initial_staged_files; do
+ git add "$file"
+done
+
+echo "Kotlin files formatted"
diff --git a/.scripts/pre-commit.bat b/.scripts/pre-commit.bat
new file mode 100644
index 00000000..cf2e19d6
--- /dev/null
+++ b/.scripts/pre-commit.bat
@@ -0,0 +1,35 @@
+@echo off
+setlocal enabledelayedexpansion
+
+rem Capture the list of initially staged Kotlin files
+set "initial_staged_files="
+for /f "delims=" %%f in ('git diff --name-only --cached -- "*.kt"') do (
+ set "initial_staged_files=!initial_staged_files! %%f,"
+)
+
+rem Check if there are any staged Kotlin files
+if "%initial_staged_files%"=="" (
+ echo No Kotlin files staged for commit.
+ exit /b 0
+)
+
+rem Remove the trailing comma from the list of formatted files
+set "formatted_files=%initial_staged_files:~0,-1%"
+
+echo Formatting Kotlin files: %formatted_files%
+call gradlew ktfmtPrecommit --include-only="%formatted_files%"
+
+rem Check if the formatting command was successful
+if errorlevel 1 (
+ echo Kotlin formatting failed. Please fix the issues.
+ exit /b 1
+)
+
+rem Re-stage only the initially staged Kotlin files
+for %%f in (%initial_staged_files%) do (
+ git add "%%f"
+)
+
+echo Kotlin files formatted
+
+exit /b 0
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..ced10c27
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,371 @@
+# Changelog
+
+## [v7.4.0](https://github.com/PhilKes/NotallyX/tree/v7.4.0) (2025-04-18)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v7.3.1...v7.4.0)
+
+### Added Features
+
+- Don't force capitalization when adding a label [\#532](https://github.com/PhilKes/NotallyX/issues/532)
+- Add a screen protection against screenshot attempts [\#386](https://github.com/PhilKes/NotallyX/issues/386)
+
+### Fixed Bugs
+
+- Share pure text note error [\#544](https://github.com/PhilKes/NotallyX/issues/544)
+- Crash when deleting checked items in a list [\#539](https://github.com/PhilKes/NotallyX/issues/539)
+- Keyboard don't open after closing it on Android 7 [\#537](https://github.com/PhilKes/NotallyX/issues/537)
+- Unable to open links before changing view mode [\#527](https://github.com/PhilKes/NotallyX/issues/527)
+- Reminder popup cut on small screens [\#522](https://github.com/PhilKes/NotallyX/issues/522)
+- Auto Backup failed [\#514](https://github.com/PhilKes/NotallyX/issues/514)
+
+## [v7.3.1](https://github.com/PhilKes/NotallyX/tree/v7.3.1) (2025-04-08)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v7.3.0...v7.3.1)
+
+### Fixed Bugs
+
+- Button to close note search doesn't work [\#519](https://github.com/PhilKes/NotallyX/issues/519)
+- app crashes when pressing label [\#517](https://github.com/PhilKes/NotallyX/issues/517)
+
+## [v7.3.0](https://github.com/PhilKes/NotallyX/tree/v7.3.0) (2025-04-07)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v7.2.1...v7.3.0)
+
+### Added Features
+
+- Persist viewMode of each note individually [\#497](https://github.com/PhilKes/NotallyX/issues/497)
+- Read-only mode by default and new notes [\#495](https://github.com/PhilKes/NotallyX/issues/495)
+- Hide notes based on labels [\#401](https://github.com/PhilKes/NotallyX/issues/401)
+- An archived note should be visible in its label's folder. [\#398](https://github.com/PhilKes/NotallyX/issues/398)
+- Sharing notes from the app [\#380](https://github.com/PhilKes/NotallyX/issues/380)
+- Add support for json notes import [\#377](https://github.com/PhilKes/NotallyX/issues/377)
+- Sharing images to the app [\#281](https://github.com/PhilKes/NotallyX/issues/281)
+- Strikethrough checked items lists [\#250](https://github.com/PhilKes/NotallyX/issues/250)
+- Click on list element to check it [\#248](https://github.com/PhilKes/NotallyX/issues/248)
+- Add long press actions to undo/redo buttons [\#244](https://github.com/PhilKes/NotallyX/issues/244)
+- Convert Note \<=\> List [\#190](https://github.com/PhilKes/NotallyX/issues/190)
+- Edit labels inside notes [\#180](https://github.com/PhilKes/NotallyX/issues/180)
+- Support Wallpaper color themes [\#175](https://github.com/PhilKes/NotallyX/issues/175)
+- View Mode [\#76](https://github.com/PhilKes/NotallyX/issues/76)
+
+### Fixed Bugs
+
+- Android 7.0 Navigation bar color issue [\#515](https://github.com/PhilKes/NotallyX/issues/515)
+- Search Mode loop for Android \< 9.0 [\#508](https://github.com/PhilKes/NotallyX/issues/508)
+- BaseNote.viewMode database migration error [\#505](https://github.com/PhilKes/NotallyX/issues/505)
+- New list items can't be added with linebreak/enter [\#496](https://github.com/PhilKes/NotallyX/issues/496)
+- Undo changes more than the last changed character [\#472](https://github.com/PhilKes/NotallyX/issues/472)
+- Auto Backup failed [\#468](https://github.com/PhilKes/NotallyX/issues/468)
+- Amount of backups to keep in periodic backups are not respected if nextcloud mount is used. [\#133](https://github.com/PhilKes/NotallyX/issues/133)
+
+## [v7.2.1](https://github.com/PhilKes/NotallyX/tree/v7.2.1) (2025-03-18)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v7.2.0...v7.2.1)
+
+### Added Features
+
+- Note not automatically saved when App is killed by system [\#446](https://github.com/PhilKes/NotallyX/issues/446)
+
+### Fixed Bugs
+
+- Auto Backup failed [\#456](https://github.com/PhilKes/NotallyX/issues/456)
+
+## [v7.2.1](https://github.com/PhilKes/NotallyX/tree/v7.2.1) (2025-03-18)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v7.2.0...v7.2.1)
+
+### Added Features
+
+- Note not automatically saved when App is killed by system [\#446](https://github.com/PhilKes/NotallyX/issues/446)
+
+### Fixed Bugs
+
+- Auto Backup failed [\#456](https://github.com/PhilKes/NotallyX/issues/456)
+
+## [v7.2.0](https://github.com/PhilKes/NotallyX/tree/v7.2.0) (2025-03-08)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v7.1.0...v7.2.0)
+
+### Added Features
+
+- Sort notes by color [\#442](https://github.com/PhilKes/NotallyX/issues/442)
+
+### Fixed Bugs
+
+- Unable to locate the 'Uncheck all' option [\#444](https://github.com/PhilKes/NotallyX/issues/444)
+- List crash when last unchecked item moved [\#436](https://github.com/PhilKes/NotallyX/issues/436)
+- Pasting multi line text in empty lists crash [\#434](https://github.com/PhilKes/NotallyX/issues/434)
+- Quickly tapping delete button crash [\#428](https://github.com/PhilKes/NotallyX/issues/428)
+- First list item can keep parent property [\#427](https://github.com/PhilKes/NotallyX/issues/427)
+- \(List\) Move last unchecked item above parent bug [\#425](https://github.com/PhilKes/NotallyX/issues/425)
+- Dragging child item to same position breaks parent association [\#422](https://github.com/PhilKes/NotallyX/issues/422)
+- Disabling list auto sorting crash [\#421](https://github.com/PhilKes/NotallyX/issues/421)
+- Crash while indenting a checklist item [\#419](https://github.com/PhilKes/NotallyX/issues/419)
+- List swipe as subtask crash [\#418](https://github.com/PhilKes/NotallyX/issues/418)
+- List crash [\#413](https://github.com/PhilKes/NotallyX/issues/413)
+- Checked parent + subtask places between item [\#410](https://github.com/PhilKes/NotallyX/issues/410)
+- App crashed while screen was off [\#408](https://github.com/PhilKes/NotallyX/issues/408)
+- Unchecked items can't be deleted [\#407](https://github.com/PhilKes/NotallyX/issues/407)
+- Some list items can't be set to subtask after unchecked [\#406](https://github.com/PhilKes/NotallyX/issues/406)
+- List items deleted [\#405](https://github.com/PhilKes/NotallyX/issues/405)
+- List item parent task becomes subtask [\#404](https://github.com/PhilKes/NotallyX/issues/404)
+- Check empty item crash [\#403](https://github.com/PhilKes/NotallyX/issues/403)
+- Drag problem in long checklist [\#396](https://github.com/PhilKes/NotallyX/issues/396)
+- List swap items bug [\#395](https://github.com/PhilKes/NotallyX/issues/395)
+- Background crashes [\#323](https://github.com/PhilKes/NotallyX/issues/323)
+
+## [v7.1.0](https://github.com/PhilKes/NotallyX/tree/v7.1.0) (2025-02-20)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v7.0.0...v7.1.0)
+
+### Added Features
+
+- Dark mode for note colors [\#352](https://github.com/PhilKes/NotallyX/issues/352)
+- Add "new color" option when deleting a color [\#347](https://github.com/PhilKes/NotallyX/issues/347)
+- Make "Start view" as default view [\#339](https://github.com/PhilKes/NotallyX/issues/339)
+- Display first item as title for lists without title [\#317](https://github.com/PhilKes/NotallyX/issues/317)
+- Remove delete option from top bar since it's already in the bottom more menu [\#316](https://github.com/PhilKes/NotallyX/issues/316)
+- Add "Export" to bottom menu [\#315](https://github.com/PhilKes/NotallyX/issues/315)
+- Move "Hide labels" switch up below the labels slider [\#311](https://github.com/PhilKes/NotallyX/issues/311)
+- Display widgets with the notes' colors [\#300](https://github.com/PhilKes/NotallyX/issues/300)
+- Allow Pinning a Specific Label as the Starting Page [\#269](https://github.com/PhilKes/NotallyX/issues/269)
+- Move checked / unchecked items in list [\#251](https://github.com/PhilKes/NotallyX/issues/251)
+- Moving all labels to the sidebar [\#240](https://github.com/PhilKes/NotallyX/issues/240)
+- Add "no label" category [\#219](https://github.com/PhilKes/NotallyX/issues/219)
+- Manual color selection [\#187](https://github.com/PhilKes/NotallyX/issues/187)
+- Pure Dark Mode [\#16](https://github.com/PhilKes/NotallyX/issues/16)
+
+### Fixed Bugs
+
+- Moving group of task at first position wrong order [\#392](https://github.com/PhilKes/NotallyX/issues/392)
+- Parent task not checked in specific case [\#391](https://github.com/PhilKes/NotallyX/issues/391)
+- Add auto-backup no error notification [\#381](https://github.com/PhilKes/NotallyX/issues/381)
+- Backup on save setting not restored [\#373](https://github.com/PhilKes/NotallyX/issues/373)
+- Start View setting not restored [\#367](https://github.com/PhilKes/NotallyX/issues/367)
+- \(List\) Child item can't be place after the item below it [\#362](https://github.com/PhilKes/NotallyX/issues/362)
+- Android 9 Crash java.lang.NoSuchMethodError: getTextSelectHandleLeft\(\) [\#358](https://github.com/PhilKes/NotallyX/issues/358)
+- List items order bug [\#357](https://github.com/PhilKes/NotallyX/issues/357)
+- Lists parent-child items crash [\#356](https://github.com/PhilKes/NotallyX/issues/356)
+- List new items wrong position [\#354](https://github.com/PhilKes/NotallyX/issues/354)
+- Replacement color message title limited to 2 lines [\#348](https://github.com/PhilKes/NotallyX/issues/348)
+- \(Lists\) Delete checked items and undo crash [\#331](https://github.com/PhilKes/NotallyX/issues/331)
+- Sort List items strange bug [\#330](https://github.com/PhilKes/NotallyX/issues/330)
+- Backup folder re-select prompt closes automatically [\#324](https://github.com/PhilKes/NotallyX/issues/324)
+- Biometric lock can't be enabled [\#259](https://github.com/PhilKes/NotallyX/issues/259)
+
+
+## [v7.0.0](https://github.com/PhilKes/NotallyX/tree/v7.0.0) (2025-01-27)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v6.4.1...v7.0.0)
+
+### Added Features
+
+- Add Reminders menu to navigation panel [\#294](https://github.com/PhilKes/NotallyX/issues/294)
+- Extend notes colors to full screen [\#264](https://github.com/PhilKes/NotallyX/issues/264)
+- Auto-backup on note modification [\#203](https://github.com/PhilKes/NotallyX/issues/203)
+- Option to show full date inside the note regardless of chosen date format [\#111](https://github.com/PhilKes/NotallyX/issues/111)
+- Reminder for Notes [\#85](https://github.com/PhilKes/NotallyX/issues/85)
+
+### Fixed Bugs
+
+- Restoring settings and backup folder [\#310](https://github.com/PhilKes/NotallyX/issues/310)
+- Settings can't be imported [\#307](https://github.com/PhilKes/NotallyX/issues/307)
+- Label create/edit dialog broken [\#302](https://github.com/PhilKes/NotallyX/issues/302)
+- Rotating screen moves the cursor to the end of note [\#293](https://github.com/PhilKes/NotallyX/issues/293)
+- Creating an empty note corrupts auto backup archive [\#288](https://github.com/PhilKes/NotallyX/issues/288)
+- Changes to check lists \(checking items and removing items\) reverts when screen rotatates [\#287](https://github.com/PhilKes/NotallyX/issues/287)
+- Auto-backups stop exporting after set limit is reached [\#270](https://github.com/PhilKes/NotallyX/issues/270)
+- Link is not saved if it's the last edit [\#267](https://github.com/PhilKes/NotallyX/issues/267)
+- Labels hidden in overview not applied when importing JSON [\#266](https://github.com/PhilKes/NotallyX/issues/266)
+- An unexpected error occurred. Sorry for the inconvenience [\#262](https://github.com/PhilKes/NotallyX/issues/262)
+- List subtasks bugs [\#207](https://github.com/PhilKes/NotallyX/issues/207)
+- Remove link also remove text [\#201](https://github.com/PhilKes/NotallyX/issues/201)
+- Biometric Lock crash [\#177](https://github.com/PhilKes/NotallyX/issues/177)
+- Import from Evernote and Google Keep not working [\#134](https://github.com/PhilKes/NotallyX/issues/134)
+
+## [v6.4.1](https://github.com/PhilKes/NotallyX/tree/v6.4.1) (2025-01-17)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v6.4.0...v6.4.1)
+
+### Added Features
+
+- Bottom AppBar cutoff + chinese translations [\#176](https://github.com/PhilKes/NotallyX/issues/176)
+
+### Fixed Bugs
+
+- Crash loop when enabling biometrics [\#256](https://github.com/PhilKes/NotallyX/issues/256)
+- Crash when creating notes in 6.4.0 [\#255](https://github.com/PhilKes/NotallyX/issues/255)
+
+## [v6.4.0](https://github.com/PhilKes/NotallyX/tree/v6.4.0) (2025-01-17)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v6.3.0...v6.4.0)
+
+### Added Features
+
+- Prevent word wrap in titles [\#220](https://github.com/PhilKes/NotallyX/issues/220)
+- Move more top menu to bottom appbar [\#206](https://github.com/PhilKes/NotallyX/issues/206)
+- App settings backup [\#204](https://github.com/PhilKes/NotallyX/issues/204)
+- Add a touch bar to scroll quickly [\#202](https://github.com/PhilKes/NotallyX/issues/202)
+- Select all notes menu button [\#186](https://github.com/PhilKes/NotallyX/issues/186)
+- One line entries in main menu [\#185](https://github.com/PhilKes/NotallyX/issues/185)
+- Some suggestions [\#183](https://github.com/PhilKes/NotallyX/issues/183)
+
+### Fixed Bugs
+
+- Cutting text during search causes app crash [\#245](https://github.com/PhilKes/NotallyX/issues/245)
+- Long notes can't be shared [\#243](https://github.com/PhilKes/NotallyX/issues/243)
+- Trigger disable/enable dataOnExternalStorage on settings import [\#231](https://github.com/PhilKes/NotallyX/issues/231)
+- Fast scrollbar in notes overview lags [\#230](https://github.com/PhilKes/NotallyX/issues/230)
+- Handle user unenrolling device biometrics while biometric lock is enabled [\#229](https://github.com/PhilKes/NotallyX/issues/229)
+- Crash on import if no file explorer app installed [\#227](https://github.com/PhilKes/NotallyX/issues/227)
+- Assign label inactive checkboxes [\#221](https://github.com/PhilKes/NotallyX/issues/221)
+- List icon bug in main view [\#215](https://github.com/PhilKes/NotallyX/issues/215)
+- Import plain text issues [\#209](https://github.com/PhilKes/NotallyX/issues/209)
+- "Auto backup period in days" cursor buggy [\#192](https://github.com/PhilKes/NotallyX/issues/192)
+- Unable to view full link while editing [\#181](https://github.com/PhilKes/NotallyX/issues/181)
+- Scrollbar missing ... [\#178](https://github.com/PhilKes/NotallyX/issues/178)
+- Widget is invisible when placed [\#156](https://github.com/PhilKes/NotallyX/issues/156)
+
+**Closed issues:**
+
+- Items in Lists [\#184](https://github.com/PhilKes/NotallyX/issues/184)
+
+## [v6.3.0](https://github.com/PhilKes/NotallyX/tree/v6.3.0) (2024-12-23)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v6.2.2...v6.3.0)
+
+### Added Features
+
+- Possibility to directly report bug when crash occurs [\#170](https://github.com/PhilKes/NotallyX/issues/170)
+- "Link Note" text for notes without a title [\#166](https://github.com/PhilKes/NotallyX/issues/166)
+- Improve app theme's color contrasts [\#163](https://github.com/PhilKes/NotallyX/issues/163)
+- Paste text containing link does not convert to clickable link + polish translation [\#157](https://github.com/PhilKes/NotallyX/issues/157)
+- Bottom navigation to increase accessibility for one handed usage [\#129](https://github.com/PhilKes/NotallyX/issues/129)
+- Search in selected note [\#108](https://github.com/PhilKes/NotallyX/issues/108)
+
+### Fixed Bugs
+
+- App crashes when enabling biometric lock [\#168](https://github.com/PhilKes/NotallyX/issues/168)
+- Barely visible Navigation buttons on Motorola devices in Light Theme [\#161](https://github.com/PhilKes/NotallyX/issues/161)
+
+## [v6.2.2](https://github.com/PhilKes/NotallyX/tree/v6.2.2) (2024-12-09)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v6.2.1...v6.2.2)
+
+### Added Features
+
+- Encrypted backups [\#151](https://github.com/PhilKes/NotallyX/issues/151)
+- Parse list items when pasting a list formatted text into a list note [\#150](https://github.com/PhilKes/NotallyX/issues/150)
+- Chinese display of options interface [\#149](https://github.com/PhilKes/NotallyX/issues/149)
+
+### Fixed Bugs
+
+- List notes deleting item even though text is not empty on backspace pressed [\#142](https://github.com/PhilKes/NotallyX/issues/142)
+
+## [v6.2.1](https://github.com/PhilKes/NotallyX/tree/v6.2.1) (2024-12-06)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v6.2.0...v6.2.1)
+
+### Added Features
+
+- Add change color option inside of a Note [\#140](https://github.com/PhilKes/NotallyX/issues/140)
+- Let user choose whether add items in a todo-list at the bottom or top of already existing items [\#132](https://github.com/PhilKes/NotallyX/issues/132)
+- Migrate Theme to Material 3 [\#104](https://github.com/PhilKes/NotallyX/issues/104)
+
+### Fixed Bugs
+
+- Exporting multiple notes with same title overwrites files [\#144](https://github.com/PhilKes/NotallyX/issues/144)
+- Single notes export as "Untitled.txt" [\#143](https://github.com/PhilKes/NotallyX/issues/143)
+
+## [v6.2.0](https://github.com/PhilKes/NotallyX/tree/v6.2.0) (2024-12-03)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v6.1.2...v6.2.0)
+
+### Added Features
+
+- Replace positions of "Link Note" and "Select all" [\#136](https://github.com/PhilKes/NotallyX/issues/136)
+- Allow to add Notes in Label View [\#128](https://github.com/PhilKes/NotallyX/issues/128)
+- Empty notes deleted forever [\#118](https://github.com/PhilKes/NotallyX/issues/118)
+- Sync devices using Syncthing [\#109](https://github.com/PhilKes/NotallyX/issues/109)
+- Import from txt files [\#103](https://github.com/PhilKes/NotallyX/issues/103)
+- Add more Export formats [\#62](https://github.com/PhilKes/NotallyX/issues/62)
+
+### Fixed Bugs
+
+- Using delete option from inside a note won't delete the note [\#131](https://github.com/PhilKes/NotallyX/issues/131)
+- The app crashes when creating a link [\#112](https://github.com/PhilKes/NotallyX/issues/112)
+- Pinning does not work [\#110](https://github.com/PhilKes/NotallyX/issues/110)
+
+## [v6.1.2](https://github.com/PhilKes/NotallyX/tree/v6.1.2) (2024-11-19)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v6.1.1...v6.1.2)
+
+### Fixed Bugs
+
+- F-Droid can't build [\#126](https://github.com/PhilKes/NotallyX/issues/126)
+- Undo in list can be quite destructive [\#125](https://github.com/PhilKes/NotallyX/issues/125)
+- Actions like pin/label/archive only work from overview, not individual note/list [\#124](https://github.com/PhilKes/NotallyX/issues/124)
+- Jumbled notes after opening settings [\#100](https://github.com/PhilKes/NotallyX/issues/100)
+
+## [v6.1.1](https://github.com/PhilKes/NotallyX/tree/v6.1.1) (2024-11-14)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/v6.0...v6.1.1)
+
+### Added Features
+
+- Show delete option in top bar after selecting a note [\#105](https://github.com/PhilKes/NotallyX/issues/105)
+- Clear previous search term by default [\#96](https://github.com/PhilKes/NotallyX/issues/96)
+- Color the navigation bar [\#95](https://github.com/PhilKes/NotallyX/issues/95)
+- Make multiselection easier [\#91](https://github.com/PhilKes/NotallyX/issues/91)
+- Auto Discard Empty Notes [\#86](https://github.com/PhilKes/NotallyX/issues/86)
+- Pin/label multiple Notes [\#78](https://github.com/PhilKes/NotallyX/issues/78)
+- Hide widget notes when app locked. [\#75](https://github.com/PhilKes/NotallyX/issues/75)
+- Creating categories [\#72](https://github.com/PhilKes/NotallyX/issues/72)
+- Add Search Bar to Archived and Deleted Notes Sections [\#68](https://github.com/PhilKes/NotallyX/issues/68)
+- Ability to swipe ListItem on DragHandle [\#67](https://github.com/PhilKes/NotallyX/issues/67)
+- Show Last Modified Dates in Notes [\#60](https://github.com/PhilKes/NotallyX/issues/60)
+- Import from major note apps [\#53](https://github.com/PhilKes/NotallyX/issues/53)
+- Display Labels in NavigationView [\#49](https://github.com/PhilKes/NotallyX/issues/49)
+- Unneeded Notification Permission on Image Upload [\#34](https://github.com/PhilKes/NotallyX/issues/34)
+- Linking Notes Within Notes [\#32](https://github.com/PhilKes/NotallyX/issues/32)
+
+### Fixed Bugs
+
+- Deleted notes won't "delete forever" [\#117](https://github.com/PhilKes/NotallyX/issues/117)
+- Empty Auto Backup [\#101](https://github.com/PhilKes/NotallyX/issues/101)
+- Selector Moves Left in Widget When Selecting Untitled Notes [\#63](https://github.com/PhilKes/NotallyX/issues/63)
+
+## [v6.0](https://github.com/PhilKes/NotallyX/tree/v6.0) (2024-10-28)
+
+[Full Changelog](https://github.com/PhilKes/NotallyX/compare/a29bff9a2d1adcbea47cb024ab21426bd678c016...v6.0)
+
+### Added Features
+
+- Change icon and add monochrome icon [\#44](https://github.com/PhilKes/NotallyX/issues/44)
+- Improve copy&paste behaviour [\#40](https://github.com/PhilKes/NotallyX/issues/40)
+- Option to Change a Note in Widget [\#36](https://github.com/PhilKes/NotallyX/issues/36)
+- Improve auto-backups [\#31](https://github.com/PhilKes/NotallyX/issues/31)
+- Lock Notes via PIN/Fingerprint [\#30](https://github.com/PhilKes/NotallyX/issues/30)
+- More options for sorting Notes in Overview [\#29](https://github.com/PhilKes/NotallyX/issues/29)
+- Support subtasks in Widgets \(for list notes\) [\#6](https://github.com/PhilKes/NotallyX/issues/6)
+- Improving Image Display on Notes [\#15](https://github.com/PhilKes/NotallyX/issues/15)
+- File attachment [\#9](https://github.com/PhilKes/NotallyX/issues/9)
+- Highlighting Completed Tasks in widget [\#17](https://github.com/PhilKes/NotallyX/issues/17)
+- Encrypt backups [\#18](https://github.com/PhilKes/NotallyX/issues/18)
+- Undo deleting/archiving notes [\#19](https://github.com/PhilKes/NotallyX/issues/19)
+
+### Fixed Bugs
+
+- Title Change Doesn’t Update Last Modified Date [\#61](https://github.com/PhilKes/NotallyX/issues/61)
+- Biometric Lock Improvement [\#58](https://github.com/PhilKes/NotallyX/issues/58)
+- App crashes when pin lock is enabled [\#50](https://github.com/PhilKes/NotallyX/issues/50)
+- Undo action ignored Spans [\#47](https://github.com/PhilKes/NotallyX/issues/47)
+- Crash After Importing a Note [\#13](https://github.com/PhilKes/NotallyX/issues/13)
+- Tasks Disappear When Changing App Language [\#4](https://github.com/PhilKes/NotallyX/issues/4)
+- Unable to Swipe Back After Adding Tasks [\#5](https://github.com/PhilKes/NotallyX/issues/5)
+- App Crash When Importing Notes and Opening a Task Note [\#7](https://github.com/PhilKes/NotallyX/issues/7)
+- improving subtasks [\#8](https://github.com/PhilKes/NotallyX/issues/8)
+
+
+
+\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index dc240eda..00000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,5 +0,0 @@
-### Contributing
-
-Issues are currently disabled.
-
-Please use the pull requests tab only for translations or bug fixes.
\ No newline at end of file
diff --git a/Privacy-Policy.md b/Privacy-Policy.md
new file mode 100644
index 00000000..ebc572ce
--- /dev/null
+++ b/Privacy-Policy.md
@@ -0,0 +1,25 @@
+## Privacy Policy
+
+This privacy policy applies to the NotallyX app (hereby referred to as "Application") for mobile devices that was created as an Open Source service. This service is intended for use "AS IS".
+
+### What information does the Application obtain and how is it used?
+
+The Application does not obtain any information when you download and use it. Registration is not required to use the Application.
+
+### Does the Application collect precise real time location information of the device?
+
+This Application does not collect precise information about the location of your mobile device.
+
+### Do third parties see and/or have access to information obtained by the Application?
+
+Since the Application does not collect any information, no data is shared with third parties.
+
+### Your Consent
+
+By using the Application, you are consenting to this Privacy Policy now and as amended by the developer.
+
+### Contact Us
+
+If you have any questions regarding privacy while using the Application, or have questions about the practices, please contact us via email at philkeyplaystore@gmail.com.
+
+This privacy policy is effective as of 2024-10-30
diff --git a/Privacy-Policy.txt b/Privacy-Policy.txt
deleted file mode 100644
index 27349a36..00000000
--- a/Privacy-Policy.txt
+++ /dev/null
@@ -1 +0,0 @@
-No user data is collected
\ No newline at end of file
diff --git a/README.md b/README.md
index 210b2a14..9205d7a2 100644
--- a/README.md
+++ b/README.md
@@ -1,35 +1,88 @@
-### Background
-Notally was created because I wanted to make something that was beautiful and at the same time, useful. It's extremely light, there are minimal dependencies and lines of code.
+
+
+
+ NotallyX | Minimalistic note taking app
+
+
+
+
+
+
+
+
+
+
+
+
### Features
-* Widgets
-* Auto backup
-* Adjustable text size
-* Support for Lollipop devices and up
-* APK size of 1.4 MB (1.8 MB uncompressed)
-* Color, pin and label your notes for quick organisation
-* Complement your notes with pictures (JPG, PNG, WEBP)
-* Export notes as TXT, JSON, HTML or PDF files with formatting
-* Create rich text notes with support for bold, italics, mono space and strike-through
-* Add clickable links to notes with support for phone numbers, email addresses and web urls
+[Notally](https://github.com/OmGodse/Notally), but eXtended
-[
](https://play.google.com/store/apps/details?id=com.omgodse.notally)
-[
](https://f-droid.org/packages/com.omgodse.notally/)
+* Create **rich text** notes with support for bold, italics, mono space and strike-through
+* Create **task lists** and order them with subtasks (+ auto-sort checked items to the end)
+* Set **reminders** with notifications for important notes
+* Complement your notes with any type of file such as **pictures**, PDFs, etc.
+* **Sort notes** by title, last modified date, creation date
+* **Color, pin and label** your notes for quick organisation
+* Add **clickable links** to notes with support for phone numbers, email addresses and web urls
+* **Undo/Redo actions**
+* Use **Home Screen Widget** to access important notes fast
+* **Lock your notes via Biometric/PIN**
+* Configurable **auto-backups**
+* Create quick audio notes
+* Display the notes either in a **List or Grid**
+* Quickly share notes by text
+* Extensive preferences to adjust views to your liking
+* Actions to quickly remove checked tasks
+* Adaptive android app icon
+* Support for Lollipop devices and up
+
+---
+
+### Bug Reports / Feature-Requests
+If you find any bugs or want to propose a new Feature/Enhancement, feel free to [create a new Issue](https://github.com/PhilKes/NotallyX/issues/new/choose)
+
+When using the app and an unknown error occurs, causing the app to crash you will see a dialog (see showcase video in https://github.com/PhilKes/NotallyX/pull/171) from which you can immediately create a bug report on Github with the crash details pre-filled.
+
+#### Beta Releases
+
+I occasionally release BETA versions of the app during development, since its very valuable for me to get feedback before publicly releasing a new version.
+These BETA releases have another `applicationId` as the release versions, thats why when you install a BETA version it will show up on your device as a separate app called `NotallyX BETA`.
+BETA versions also have their own data, they do not use the data of your NotallyX app
+You can download the most recent BETA release [here on Github](https://github.com/PhilKes/NotallyX/releases/tag/beta)
### Translations
-All translations are crowd sourced. To contribute, follow these [guidelines](https://m2.material.io/design/communication/writing.html) and email me or open a pull request.
+All translations are crowd sourced.
+To contribute:
+1. Download current [translations.xlsx](https://github.com/PhilKes/NotallyX/raw/refs/heads/main/app/translations.xlsx)
+2. Open in Excel/LibreOffice and add missing translations
+ Notes:
+ - Missing translations are marked in red
+ - You can filter by key or any language column values
+ - Non-Translatable strings are hidden and marked in gray, do not add translations for them
+ - For plurals, some languages need/have more quantity strings than others, if a quantity string in the default language (english) is not needed the row is highlighted in yellow. If your language does not need that quantity string either, ignore them.
+3. Open a [Update Translations Issue](https://github.com/PhilKes/NotallyX/issues/new?assignees=&labels=translations&projects=&template=translation.md&title=%3CINSERT+LANGUAGE+HERE%3E+translations+update)
+4. I will create a Pull-Request to add your updated translations
-

+See [Android Translations Converter](https://github.com/PhilKes/android-translations-converter-plugin) for more details
-### Hall of fame
-* [Top 20 Android Apps 2021!](https://www.youtube.com/watch?v=bwz13aM0qJk)
-* [De-Googling Any Android Phone! (Google Apps Alternatives)](https://www.youtube.com/watch?v=RQUEgwgV99I)
-* [The BEST Private Notetaking Apps Explained](https://www.youtube.com/watch?v=BJw5tKPP1PY)
-* [Notally](https://www.noteapps.ca/notally/)
-* [The 9 Best Simple Note-Taking Apps for Android](https://www.makeuseof.com/simple-note-apps-android/)
+### Contributing
-### Copycats
-Clones of Notally keep popping up on the Play Store. They are not licensed under GPL3 and usually change a few colors, include ads, etc. Please [report them](https://support.google.com/googleplay/android-developer/contact/takedown) and [inform me](mailto:omgodseapps@gmail.com) if you find a new one.
+If you would like to contribute code yourself, just grab any open issue (that has no other developer assigned yet), leave a comment that you want to work on it and start developing by forking this repo.
-* https://play.google.com/store/apps/details?id=com.sladjan.notes
-* https://play.google.com/store/apps/details?id=com.sladjan.notespro
\ No newline at end of file
+The project is a default Android project written in Kotlin, I highly recommend using Android Studio for development. Also be sure to test your changes with an Android device/emulator that uses the same Android SDK Version as defined in the `build.gradle` `targetSdk`.
+
+Before submitting your proposed changes as a Pull-Request, make sure all tests are still working (`./gradlew test`), and run `./gradlew ktfmtFormat` for common formatting (also executed automatically as pre-commit hook).
+
+### Attribution
+The original Notally project was developed by [OmGodse](https://github.com/OmGodse) under the [GPL 3.0 License](https://github.com/OmGodse/Notally/blob/master/LICENSE.md).
+
+In accordance to GPL 3.0, this project is licensed under the same [GPL 3.0 License](https://github.com/PhilKes/NotallyX/blob/master/LICENSE.md).
diff --git a/app/.gitignore b/app/.gitignore
index 796b96d1..956c004d 100644
--- a/app/.gitignore
+++ b/app/.gitignore
@@ -1 +1,2 @@
/build
+/release
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 3ab6c39b..00000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,89 +0,0 @@
-plugins {
- id 'com.android.application'
- id 'kotlin-android'
- id 'kotlin-parcelize'
- id 'com.google.devtools.ksp'
- id 'com.ncorti.ktfmt.gradle' version '0.20.1'
-}
-
-android {
- compileSdk 34
- namespace 'com.omgodse.notally'
-
- defaultConfig {
- applicationId 'com.omgodse.notally'
- minSdk 21
- targetSdk 33
- versionCode 55
- versionName "6.0-SNAPSHOT"
- resConfigs 'en', 'ca', 'cs', 'da', 'de', 'el', 'es', 'fr', 'hu', 'in', 'it', 'ja', 'my', 'nb', 'nl', 'nn', 'pl', 'pt-rBR', 'pt-rPT', 'ro', 'ru', 'sk', 'sv', 'tl', 'tr', 'uk', 'vi', 'zh-rCN'
- vectorDrawables.generatedDensities = []
- }
-
- ksp {
- arg("room.generateKotlin", "true")
- arg("room.schemaLocation", "$projectDir/schemas")
- }
-
- buildTypes {
- debug {
- applicationIdSuffix ".debug"
- }
- release {
- crunchPngs false
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
- }
- }
-
- kotlinOptions { jvmTarget = "1.8" }
-
- buildFeatures { viewBinding true }
-
- packagingOptions.resources {
- excludes += ["DebugProbesKt.bin", "META-INF/**.version", "kotlin/**.kotlin_builtins", "kotlin-tooling-metadata.json"]
- }
-}
-
-tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) {
- kotlinOptions.jvmTarget = "1.8"
-}
-
-ktfmt {
- kotlinLangStyle()
-}
-
-tasks.withType(Test).configureEach {
-// dependsOn 'ktfmtFormat'
-}
-
-dependencies {
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'junit:junit:4.12'
- final def navVersion = "2.3.5"
- final def roomVersion = "2.6.1"
-
- ksp "androidx.room:room-compiler:$roomVersion"
- implementation "androidx.room:room-ktx:$roomVersion"
- implementation "androidx.room:room-runtime:$roomVersion"
-
- implementation "androidx.work:work-runtime:2.9.0"
-
- implementation "androidx.navigation:navigation-ui-ktx:$navVersion"
- implementation "androidx.navigation:navigation-fragment-ktx:$navVersion"
-
- implementation "org.ocpsoft.prettytime:prettytime:4.0.6.Final"
- implementation "com.google.android.material:material:1.4.0"
-
- implementation 'com.github.zerobranch:SwipeLayout:1.3.1'
-
- implementation "com.github.bumptech.glide:glide:4.15.1"
- implementation "com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0"
-
- testImplementation "junit:junit:4.13.2"
- testImplementation "androidx.test:core:1.6.1"
- testImplementation "org.mockito:mockito-core:5.13.0"
- testImplementation "org.mockito.kotlin:mockito-kotlin:5.4.0"
- testImplementation "io.mockk:mockk:1.13.12"
-}
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
new file mode 100644
index 00000000..159c15e7
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,223 @@
+import com.android.build.gradle.internal.tasks.factory.dependsOn
+import com.ncorti.ktfmt.gradle.tasks.KtfmtFormatTask
+import org.apache.commons.configuration2.PropertiesConfiguration
+import org.apache.commons.configuration2.io.FileHandler
+
+plugins {
+ id("com.android.application")
+ id("org.jetbrains.kotlin.android")
+ id("org.jetbrains.kotlin.plugin.parcelize")
+ id("com.google.devtools.ksp")
+ id("com.ncorti.ktfmt.gradle") version "0.20.1"
+ id("org.jetbrains.kotlin.plugin.serialization") version "1.9.0"
+ id("io.github.philkes.android-translations-converter") version "1.0.5"
+}
+
+android {
+ namespace = "com.philkes.notallyx"
+ compileSdk = 34
+ ndkVersion = "29.0.13113456"
+ defaultConfig {
+ applicationId = "com.philkes.notallyx"
+ minSdk = 21
+ targetSdk = 34
+ versionCode = project.findProperty("app.versionCode").toString().toInt()
+ versionName = project.findProperty("app.versionName").toString()
+ resourceConfigurations += listOf(
+ "en", "ca", "cs", "da", "de", "el", "es", "fr", "hu", "in", "it", "ja", "my", "nb", "nl", "nn", "pl", "pt-rBR", "pt-rPT", "ro", "ru", "sk", "sv", "tl", "tr", "uk", "vi", "zh-rCN", "zh-rTW"
+ )
+ vectorDrawables.generatedDensities?.clear()
+ ndk {
+ debugSymbolLevel= "FULL"
+ }
+ }
+ ksp {
+ arg("room.generateKotlin", "true")
+ arg("room.schemaLocation", "$projectDir/schemas")
+ }
+
+ signingConfigs {
+ create("release") {
+ storeFile = file(providers.gradleProperty("RELEASE_STORE_FILE").get())
+ storePassword = providers.gradleProperty("RELEASE_STORE_PASSWORD").get()
+ keyAlias = providers.gradleProperty("RELEASE_KEY_ALIAS").get()
+ keyPassword = providers.gradleProperty("RELEASE_KEY_PASSWORD").get()
+ }
+ }
+
+ buildTypes {
+ debug {
+ applicationIdSuffix = ".debug"
+ versionNameSuffix = "-DEBUG"
+ resValue("string", "app_name", "NotallyX DEBUG")
+ }
+ release {
+ isCrunchPngs = false
+ isMinifyEnabled = true
+ isShrinkResources = true
+ proguardFiles(
+ getDefaultProguardFile("proguard-android-optimize.txt"),
+ "proguard-rules.pro"
+ )
+ signingConfig = signingConfigs.getByName("release")
+ }
+ create("beta"){
+ initWith(getByName("release"))
+ applicationIdSuffix = ".beta"
+ versionNameSuffix = "-BETA"
+ resValue("string", "app_name", "NotallyX BETA")
+ }
+ }
+
+ applicationVariants.all {
+ this.outputs
+ .map { it as com.android.build.gradle.internal.api.ApkVariantOutputImpl }
+ .forEach { output ->
+ output.outputFileName = "NotallyX-$versionName.apk"
+ }
+ }
+
+ dependenciesInfo {
+ includeInApk = false
+ includeInBundle = false
+ }
+
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
+
+ buildFeatures {
+ viewBinding = true
+ }
+
+ packaging {
+ resources.excludes += listOf(
+ "DebugProbesKt.bin",
+ "META-INF/**.version",
+ "kotlin/**.kotlin_builtins",
+ "kotlin-tooling-metadata.json"
+ )
+ }
+
+ testOptions {
+ unitTests.isIncludeAndroidResources = true
+ }
+}
+
+ktfmt {
+ kotlinLangStyle()
+}
+
+tasks.register("ktfmtPrecommit") {
+ source = project.fileTree(rootDir)
+ include("**/*.kt")
+}
+
+tasks.register("installLocalGitHooks") {
+ val scriptsDir = File(rootProject.rootDir, ".scripts/")
+ val hooksDir = File(rootProject.rootDir, ".git/hooks")
+ from(scriptsDir) {
+ include("pre-commit", "pre-commit.bat")
+ }
+ into(hooksDir)
+ inputs.files(file("${scriptsDir}/pre-commit"), file("${scriptsDir}/pre-commit.bat"))
+ outputs.dir(hooksDir)
+ fileMode = 509 // 0775 octal in decimal
+ // If this throws permission denied:
+ // chmod +rwx ./.git/hooks/pre-commit*
+}
+
+tasks.preBuild.dependsOn(tasks.named("installLocalGitHooks"), tasks.exportTranslationsToExcel)
+
+tasks.register("generateChangelogs") {
+ doLast {
+ val githubToken = providers.gradleProperty("CHANGELOG_GITHUB_TOKEN").orNull
+
+ val command = mutableListOf(
+ "bash",
+ rootProject.file("generate-changelogs.sh").absolutePath,
+ "v${project.findProperty("app.lastVersionName").toString()}",
+ rootProject.file("CHANGELOG.md").absolutePath
+ )
+ if (!githubToken.isNullOrEmpty()) {
+ command.add(githubToken)
+ } else {
+ println("CHANGELOG_GITHUB_TOKEN not found, which limits the allowed amount of Github API calls")
+ }
+ exec {
+ commandLine(command)
+ standardOutput = System.out
+ errorOutput = System.err
+ }
+
+ val config = PropertiesConfiguration()
+ val fileHandler = FileHandler(config).apply {
+ file = rootProject.file("gradle.properties")
+ load()
+ }
+ val currentVersionName = config.getProperty("app.versionName")
+ config.setProperty("app.lastVersionName", currentVersionName)
+ fileHandler.save()
+ println("Updated app.lastVersionName to $currentVersionName")
+ }
+}
+
+afterEvaluate {
+ tasks.named("bundleRelease").configure {
+ dependsOn(tasks.named("testReleaseUnitTest"))
+ }
+ tasks.named("assembleRelease").configure {
+ dependsOn(tasks.named("testReleaseUnitTest"))
+ finalizedBy(tasks.named("generateChangelogs"))
+ }
+}
+
+dependencies {
+ val navVersion = "2.3.5"
+ val roomVersion = "2.6.1"
+
+ implementation("androidx.navigation:navigation-fragment-ktx:$navVersion")
+ implementation("androidx.navigation:navigation-ui-ktx:$navVersion")
+ implementation("androidx.preference:preference-ktx:1.2.1")
+ ksp("androidx.room:room-compiler:$roomVersion")
+ implementation("androidx.room:room-ktx:$roomVersion")
+ implementation("androidx.room:room-runtime:$roomVersion")
+ implementation("androidx.security:security-crypto:1.1.0-alpha06")
+ implementation("androidx.sqlite:sqlite-ktx:2.4.0")
+ implementation("androidx.work:work-runtime:2.9.1")
+ implementation("androidx.biometric:biometric:1.1.0")
+ implementation("cat.ereza:customactivityoncrash:2.4.0")
+ implementation("com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0")
+ implementation("com.github.bumptech.glide:glide:4.15.1")
+ implementation("cn.Leaqi:SwipeDrawer:1.6")
+ implementation("com.github.skydoves:colorpickerview:2.3.0")
+ implementation("com.google.android.material:material:1.12.0")
+ implementation("com.google.code.findbugs:jsr305:3.0.2")
+ implementation("me.zhanghai.android.fastscroll:library:1.3.0")
+ implementation("net.lingala.zip4j:zip4j:2.11.5")
+ implementation("net.zetetic:android-database-sqlcipher:4.5.3")
+ implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
+ implementation("org.jsoup:jsoup:1.18.1")
+ implementation("org.ocpsoft.prettytime:prettytime:4.0.6.Final")
+ implementation("org.simpleframework:simple-xml:2.7.1") {
+ exclude(group = "xpp3", module = "xpp3")
+ }
+
+ androidTestImplementation("androidx.room:room-testing:$roomVersion")
+ androidTestImplementation("androidx.work:work-testing:2.9.1")
+ testImplementation("androidx.arch.core:core-testing:2.2.0")
+ testImplementation("androidx.test:core-ktx:1.6.1")
+ testImplementation("androidx.test:core:1.6.1")
+ testImplementation("io.mockk:mockk:1.13.12")
+ testImplementation("junit:junit:4.13.2")
+ testImplementation("org.assertj:assertj-core:3.24.2")
+ testImplementation("org.json:json:20180813")
+ testImplementation("org.mockito.kotlin:mockito-kotlin:5.4.0")
+ testImplementation("org.mockito:mockito-core:5.13.0")
+ testImplementation("org.robolectric:robolectric:4.13")
+}
\ No newline at end of file
diff --git a/app/obfuscation/mapping.txt b/app/obfuscation/mapping.txt
new file mode 100644
index 00000000..3ff4adba
--- /dev/null
+++ b/app/obfuscation/mapping.txt
@@ -0,0 +1,271494 @@
+# compiler: R8
+# compiler_version: 8.7.18
+# min_api: 21
+# common_typos_disable
+# {"id":"com.android.tools.r8.mapping","version":"2.2"}
+# pg_map_id: 2bf1b8f
+# pg_map_hash: SHA-256 2bf1b8f612e244296e72a6021ee2dac1f581fed69d8620f8c586fa67906b67f0
+_COROUTINE.ArtificialStackFrames -> R8$$REMOVED$$CLASS$$0:
+# {"id":"sourceFile","fileName":"CoroutineDebugging.kt"}
+android.app.ForegroundServiceStartNotAllowedException -> android.app.ForegroundServiceStartNotAllowedException:
+# {"id":"com.android.tools.r8.synthesized"}
+ void () ->
+ # {"id":"com.android.tools.r8.synthesized"}
+android.app.ServiceStartNotAllowedException -> android.app.ServiceStartNotAllowedException:
+# {"id":"com.android.tools.r8.synthesized"}
+ void () ->
+ # {"id":"com.android.tools.r8.synthesized"}
+android.print.PdfExtensionsKt -> R8$$REMOVED$$CLASS$$1:
+# {"id":"sourceFile","fileName":"PdfExtensions.kt"}
+android.print.PdfExtensionsKt$printPdf$1 -> android.print.PdfExtensionsKt$printPdf$1:
+# {"id":"sourceFile","fileName":"PdfExtensions.kt"}
+ androidx.documentfile.provider.DocumentFile $file -> $file
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/documentfile/provider/RawDocumentFile;"}
+ android.print.PdfPrintListener $pdfPrintListener -> $pdfPrintListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/appcompat/widget/AppCompatDrawableManager$1;"}
+ 9:12:void (android.webkit.WebView,androidx.documentfile.provider.DocumentFile,android.content.Context,android.print.PdfPrintListener):18:18 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroid/webkit/WebView;Landroidx/documentfile/provider/RawDocumentFile;Landroid/content/Context;Landroidx/appcompat/widget/AppCompatDrawableManager$1;)V"}
+ 1:4:void onPageFinished(android.webkit.WebView,java.lang.String):21:21 -> onPageFinished
+ 5:18:java.lang.String com.philkes.notallyx.utils.AndroidExtensionsKt.getNameWithoutExtension(androidx.documentfile.provider.DocumentFile):410:410 -> onPageFinished
+ 5:18:void onPageFinished(android.webkit.WebView,java.lang.String):21 -> onPageFinished
+ 19:32:void onPageFinished(android.webkit.WebView,java.lang.String):21:21 -> onPageFinished
+ 33:43:void onPageFinished(android.webkit.WebView,java.lang.String):22:22 -> onPageFinished
+ 44:50:void android.print.PdfExtensionsKt.printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):33:33 -> onPageFinished
+ 44:50:void android.print.PdfExtensionsKt.access$printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onPageFinished
+ 44:50:void onPageFinished(android.webkit.WebView,java.lang.String):22 -> onPageFinished
+ 51:55:android.print.PrintAttributes android.print.PdfExtensionsKt.createPrintAttributes():70:70 -> onPageFinished
+ 51:55:void android.print.PdfExtensionsKt.printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):44 -> onPageFinished
+ 51:55:void android.print.PdfExtensionsKt.access$printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onPageFinished
+ 51:55:void onPageFinished(android.webkit.WebView,java.lang.String):22 -> onPageFinished
+ 56:60:android.print.PrintAttributes android.print.PdfExtensionsKt.createPrintAttributes():71:71 -> onPageFinished
+ 56:60:void android.print.PdfExtensionsKt.printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):44 -> onPageFinished
+ 56:60:void android.print.PdfExtensionsKt.access$printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onPageFinished
+ 56:60:void onPageFinished(android.webkit.WebView,java.lang.String):22 -> onPageFinished
+ 61:65:android.print.PrintAttributes android.print.PdfExtensionsKt.createPrintAttributes():72:72 -> onPageFinished
+ 61:65:void android.print.PdfExtensionsKt.printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):44 -> onPageFinished
+ 61:65:void android.print.PdfExtensionsKt.access$printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onPageFinished
+ 61:65:void onPageFinished(android.webkit.WebView,java.lang.String):22 -> onPageFinished
+ 66:77:android.print.PrintAttributes android.print.PdfExtensionsKt.createPrintAttributes():73:73 -> onPageFinished
+ 66:77:void android.print.PdfExtensionsKt.printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):44 -> onPageFinished
+ 66:77:void android.print.PdfExtensionsKt.access$printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onPageFinished
+ 66:77:void onPageFinished(android.webkit.WebView,java.lang.String):22 -> onPageFinished
+ 78:81:android.print.PrintAttributes android.print.PdfExtensionsKt.createPrintAttributes():74:74 -> onPageFinished
+ 78:81:void android.print.PdfExtensionsKt.printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):44 -> onPageFinished
+ 78:81:void android.print.PdfExtensionsKt.access$printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onPageFinished
+ 78:81:void onPageFinished(android.webkit.WebView,java.lang.String):22 -> onPageFinished
+ 82:89:android.print.PrintAttributes android.print.PdfExtensionsKt.createPrintAttributes():70:70 -> onPageFinished
+ 82:89:void android.print.PdfExtensionsKt.printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):44 -> onPageFinished
+ 82:89:void android.print.PdfExtensionsKt.access$printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onPageFinished
+ 82:89:void onPageFinished(android.webkit.WebView,java.lang.String):22 -> onPageFinished
+ 90:93:void android.print.PdfExtensionsKt.printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):44:44 -> onPageFinished
+ 90:93:void android.print.PdfExtensionsKt.access$printPdf(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onPageFinished
+ 90:93:void onPageFinished(android.webkit.WebView,java.lang.String):22 -> onPageFinished
+android.print.PdfExtensionsKt$printPdf$onLayoutResult$1 -> android.print.PdfExtensionsKt$printPdf$onLayoutResult$1:
+# {"id":"sourceFile","fileName":"PdfExtensions.kt"}
+ androidx.documentfile.provider.DocumentFile $file -> $file
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/documentfile/provider/RawDocumentFile;"}
+ android.print.PdfPrintListener $pdfPrintListener -> $pdfPrintListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/appcompat/widget/AppCompatDrawableManager$1;"}
+ 9:12:void (android.print.PdfPrintListener,android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter):33:33 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/appcompat/widget/AppCompatDrawableManager$1;Landroid/content/ContentResolver;Landroidx/documentfile/provider/RawDocumentFile;Landroid/print/PrintDocumentAdapter;)V"}
+ 1:6:void onLayoutFailed(java.lang.CharSequence):36:36 -> onLayoutFailed
+ 1:10:void android.print.PdfExtensionsKt.writeToFile(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):53:53 -> onLayoutFinished
+ 1:10:void android.print.PdfExtensionsKt.access$writeToFile(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onLayoutFinished
+ 1:10:void onLayoutFinished(android.print.PrintDocumentInfo,boolean):40 -> onLayoutFinished
+ 11:17:void android.print.PdfExtensionsKt.writeToFile(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):64:64 -> onLayoutFinished
+ 11:17:void android.print.PdfExtensionsKt.access$writeToFile(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onLayoutFinished
+ 11:17:void onLayoutFinished(android.print.PrintDocumentInfo,boolean):40 -> onLayoutFinished
+ 18:23:android.net.Uri androidx.documentfile.provider.RawDocumentFile.getUri():68:68 -> onLayoutFinished
+ 18:23:void android.print.PdfExtensionsKt.writeToFile(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):65 -> onLayoutFinished
+ 18:23:void android.print.PdfExtensionsKt.access$writeToFile(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onLayoutFinished
+ 18:23:void onLayoutFinished(android.print.PrintDocumentInfo,boolean):40 -> onLayoutFinished
+ 24:31:void android.print.PdfExtensionsKt.writeToFile(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):65:65 -> onLayoutFinished
+ 24:31:void android.print.PdfExtensionsKt.access$writeToFile(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onLayoutFinished
+ 24:31:void onLayoutFinished(android.print.PrintDocumentInfo,boolean):40 -> onLayoutFinished
+ 32:38:void android.print.PdfExtensionsKt.writeToFile(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):66:66 -> onLayoutFinished
+ 32:38:void android.print.PdfExtensionsKt.access$writeToFile(android.content.ContentResolver,androidx.documentfile.provider.DocumentFile,android.print.PrintDocumentAdapter,android.print.PdfPrintListener):1 -> onLayoutFinished
+ 32:38:void onLayoutFinished(android.print.PrintDocumentInfo,boolean):40 -> onLayoutFinished
+android.print.PdfExtensionsKt$writeToFile$onWriteResult$1 -> android.print.PdfExtensionsKt$writeToFile$onWriteResult$1:
+# {"id":"sourceFile","fileName":"PdfExtensions.kt"}
+ androidx.documentfile.provider.DocumentFile $file -> $file
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/documentfile/provider/RawDocumentFile;"}
+ android.print.PdfPrintListener $pdfPrintListener -> $pdfPrintListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/appcompat/widget/AppCompatDrawableManager$1;"}
+ 5:8:void (android.print.PdfPrintListener,androidx.documentfile.provider.DocumentFile):53:53 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/appcompat/widget/AppCompatDrawableManager$1;Landroidx/documentfile/provider/RawDocumentFile;)V"}
+ 1:6:void onWriteFailed(java.lang.CharSequence):56:56 -> onWriteFailed
+ 1:8:void onWriteFinished(android.print.PageRange[]):60:60 -> onWriteFinished
+android.print.PdfPrintListener -> android.print.PdfPrintListener:
+# {"id":"sourceFile","fileName":"PdfExtensions.kt"}
+ void onSuccess(androidx.documentfile.provider.DocumentFile) -> onSuccess
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/documentfile/provider/RawDocumentFile;)V"}
+android.support.v4.app.RemoteActionCompatParcelizer -> android.support.v4.app.RemoteActionCompatParcelizer:
+# {"id":"sourceFile","fileName":"RemoteActionCompatParcelizer.java"}
+ 1:4:void ():8:8 ->
+ 1:5:androidx.core.app.RemoteActionCompat read(androidx.versionedparcelable.VersionedParcel):10:10 -> read
+ 1:4:void write(androidx.core.app.RemoteActionCompat,androidx.versionedparcelable.VersionedParcel):14:14 -> write
+android.support.v4.graphics.drawable.IconCompatParcelizer -> android.support.v4.graphics.drawable.IconCompatParcelizer:
+# {"id":"sourceFile","fileName":"IconCompatParcelizer.java"}
+ 1:4:void ():8:8 ->
+ 1:5:androidx.core.graphics.drawable.IconCompat read(androidx.versionedparcelable.VersionedParcel):10:10 -> read
+ 1:4:void write(androidx.core.graphics.drawable.IconCompat,androidx.versionedparcelable.VersionedParcel):14:14 -> write
+androidx.activity.ActivityViewModelLazyKt -> R8$$REMOVED$$CLASS$$2:
+# {"id":"sourceFile","fileName":"ActivityViewModelLazy.kt"}
+androidx.activity.ActivityViewModelLazyKt$viewModels$1 -> androidx.activity.ActivityViewModelLazyKt$viewModels$1:
+# {"id":"sourceFile","fileName":"ActivityViewModelLazy.kt"}
+ 2:2:java.lang.Object invoke():54:54 -> invoke
+ 2:2:androidx.lifecycle.ViewModelStore invoke():54 -> invoke
+ 2:2:java.lang.Object invoke():54 -> invoke
+androidx.activity.ActivityViewModelLazyKt$viewModels$2 -> androidx.activity.ActivityViewModelLazyKt$viewModels$2:
+# {"id":"sourceFile","fileName":"ActivityViewModelLazy.kt"}
+ 2:2:java.lang.Object invoke():56:56 -> invoke
+ 2:2:androidx.lifecycle.viewmodel.CreationExtras invoke():56 -> invoke
+ 2:2:java.lang.Object invoke():56 -> invoke
+androidx.activity.ActivityViewModelLazyKt$viewModels$3 -> androidx.activity.ActivityViewModelLazyKt$viewModels$3:
+# {"id":"sourceFile","fileName":"ActivityViewModelLazy.kt"}
+ 2:2:java.lang.Object invoke():85:85 -> invoke
+ 2:2:androidx.lifecycle.ViewModelStore invoke():85 -> invoke
+ 2:2:java.lang.Object invoke():85 -> invoke
+androidx.activity.ActivityViewModelLazyKt$viewModels$4 -> androidx.activity.ActivityViewModelLazyKt$viewModels$4:
+# {"id":"sourceFile","fileName":"ActivityViewModelLazy.kt"}
+ 2:2:java.lang.Object invoke():87:87 -> invoke
+ 2:2:androidx.lifecycle.viewmodel.CreationExtras invoke():87 -> invoke
+ 2:2:java.lang.Object invoke():87 -> invoke
+androidx.activity.ActivityViewModelLazyKt$viewModels$factoryPromise$1 -> androidx.activity.ActivityViewModelLazyKt$viewModels$factoryPromise$1:
+# {"id":"sourceFile","fileName":"ActivityViewModelLazy.kt"}
+ 2:2:androidx.lifecycle.ViewModelProvider$Factory invoke():49:49 -> invoke
+ 2:2:java.lang.Object invoke():48 -> invoke
+androidx.activity.ActivityViewModelLazyKt$viewModels$factoryPromise$2 -> androidx.activity.ActivityViewModelLazyKt$viewModels$factoryPromise$2:
+# {"id":"sourceFile","fileName":"ActivityViewModelLazy.kt"}
+ 2:2:androidx.lifecycle.ViewModelProvider$Factory invoke():80:80 -> invoke
+ 2:2:java.lang.Object invoke():79 -> invoke
+androidx.activity.Api34Impl -> androidx.activity.Api34Impl:
+# {"id":"sourceFile","fileName":"BackEventCompat.kt"}
+ 3:5:void ():99:99 ->
+ 3:5:void ():0 ->
+ 6:8:void ():0:0 ->
+ 1:6:android.window.BackEvent createOnBackEvent(float,float,float,int):103:103 -> createOnBackEvent
+ 6:10:float progress(android.window.BackEvent):106:106 -> progress
+ 6:10:int swipeEdge(android.window.BackEvent):115:115 -> swipeEdge
+ 6:10:float touchX(android.window.BackEvent):109:109 -> touchX
+ 6:10:float touchY(android.window.BackEvent):112:112 -> touchY
+androidx.activity.BackEventCompat -> androidx.activity.BackEventCompat:
+# {"id":"sourceFile","fileName":"BackEventCompat.kt"}
+ 6:11:void (android.window.BackEvent):55:55 ->
+ 12:15:void (android.window.BackEvent):56:56 ->
+ 16:19:void (android.window.BackEvent):57:57 ->
+ 20:23:void (android.window.BackEvent):58:58 ->
+ 24:26:void (float,float,float,int):31:31 ->
+ 24:26:void (android.window.BackEvent):54 ->
+ 27:28:void (float,float,float,int):36:36 ->
+ 27:28:void (android.window.BackEvent):54 ->
+ 29:30:void (float,float,float,int):41:41 ->
+ 29:30:void (android.window.BackEvent):54 ->
+ 31:32:void (float,float,float,int):45:45 ->
+ 31:32:void (android.window.BackEvent):54 ->
+ 33:35:void (float,float,float,int):50:50 ->
+ 33:35:void (android.window.BackEvent):54 ->
+ 1:37:java.lang.String toString():86:86 -> toString
+ 38:39:java.lang.String toString():87:87 -> toString
+ 40:52:java.lang.String toString():86:86 -> toString
+androidx.activity.Cancellable -> androidx.activity.Cancellable:
+# {"id":"sourceFile","fileName":"Cancellable.kt"}
+androidx.activity.ComponentActivity -> androidx.activity.ComponentActivity:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.result.ActivityResultRegistry mActivityResultRegistry -> mActivityResultRegistry
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/ComponentActivity$1;"}
+ androidx.activity.contextaware.ContextAwareHelper mContextAwareHelper -> mContextAwareHelper
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Lcom/bumptech/glide/util/GlideSuppliers$1;"}
+ androidx.lifecycle.ViewModelProvider$Factory mDefaultFactory -> mDefaultFactory
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/lifecycle/SavedStateViewModelFactory;"}
+ androidx.activity.ComponentActivity$ReportFullyDrawnExecutor mReportFullyDrawnExecutor -> mReportFullyDrawnExecutor
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;"}
+ androidx.savedstate.SavedStateRegistryController mSavedStateRegistryController -> mSavedStateRegistryController
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Lcom/bumptech/glide/RegistryFactory$1;"}
+ 1:3:void ():263:263 ->
+ 4:10:void ():143:143 ->
+ 11:26:void ():144:144 ->
+ 27:33:void ():145:145 ->
+ 34:38:androidx.savedstate.SavedStateRegistryController androidx.savedstate.SavedStateRegistryController$Companion.create(androidx.savedstate.SavedStateRegistryOwner):92:92 ->
+ 34:38:androidx.savedstate.SavedStateRegistryController androidx.savedstate.SavedStateRegistryController.create(androidx.savedstate.SavedStateRegistryOwner):0 ->
+ 34:38:void ():148 ->
+ 39:41:void ():148:148 ->
+ 42:43:void ():154:154 ->
+ 44:48:androidx.activity.ComponentActivity$ReportFullyDrawnExecutor createFullyDrawnExecutor():1144:1144 ->
+ 44:48:void ():156 ->
+ 49:50:void ():156:156 ->
+ 51:62:void ():158:158 ->
+ 63:69:void ():170:170 ->
+ 70:76:void ():172:172 ->
+ 77:83:void ():244:244 ->
+ 84:90:void ():246:246 ->
+ 91:97:void ():248:248 ->
+ 98:104:void ():250:250 ->
+ 105:111:void ():252:252 ->
+ 112:113:void ():272:272 ->
+ 114:121:void ():273:273 ->
+ 122:129:void ():287:287 ->
+ 130:137:void ():302:302 ->
+ 138:140:void ():310:310 ->
+ 141:142:androidx.lifecycle.Lifecycle$State androidx.lifecycle.LifecycleRegistry.getCurrentState():98:98 ->
+ 141:142:void androidx.lifecycle.SavedStateHandleSupport.enableSavedStateHandles(androidx.savedstate.SavedStateRegistryOwner):45 ->
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 141:142:void ():311 ->
+ 143:159:void androidx.lifecycle.SavedStateHandleSupport.enableSavedStateHandles(androidx.savedstate.SavedStateRegistryOwner):47:47 ->
+ 143:159:void ():311 ->
+ 160:169:void androidx.lifecycle.SavedStateHandleSupport.enableSavedStateHandles(androidx.savedstate.SavedStateRegistryOwner):52:52 ->
+ 160:169:void ():311 ->
+ 170:174:void androidx.lifecycle.SavedStateHandleSupport.enableSavedStateHandles(androidx.savedstate.SavedStateRegistryOwner):53:53 ->
+ 170:174:void ():311 ->
+ 175:179:void androidx.lifecycle.SavedStateHandleSupport.enableSavedStateHandles(androidx.savedstate.SavedStateRegistryOwner):54:54 ->
+ 175:179:void ():311 ->
+ 180:191:void androidx.lifecycle.SavedStateHandleSupport.enableSavedStateHandles(androidx.savedstate.SavedStateRegistryOwner):55:55 ->
+ 180:191:void ():311 ->
+ 192:193:void ():314:314 ->
+ 194:196:void androidx.activity.ImmLeaksCleaner.(android.app.Activity):46:46 ->
+ 194:196:void ():314 ->
+ 197:198:void androidx.activity.ImmLeaksCleaner.(android.app.Activity):47:47 ->
+ 197:198:void ():314 ->
+ 199:201:void ():314:314 ->
+ 202:212:void ():316:316 ->
+ 213:221:void ():322:322 ->
+ 1:4:void access$001(androidx.activity.ComponentActivity):119:119 -> access$001
+ 1:5:void addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):499:499 -> addOnContextAvailableListener
+ 6:11:void androidx.activity.contextaware.ContextAwareHelper.addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):58:58 -> addOnContextAvailableListener
+ 6:11:void addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):499 -> addOnContextAvailableListener
+ 12:14:void androidx.activity.contextaware.ContextAwareHelper.addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):59:59 -> addOnContextAvailableListener
+ 12:14:void addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):499 -> addOnContextAvailableListener
+ 15:22:void androidx.activity.contextaware.ContextAwareHelper.addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):61:61 -> addOnContextAvailableListener
+ 15:22:void addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):499 -> addOnContextAvailableListener
+ 1:2:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():648:648 -> getDefaultViewModelCreationExtras
+ 3:7:void androidx.lifecycle.viewmodel.MutableCreationExtras.(androidx.lifecycle.viewmodel.CreationExtras,int,kotlin.jvm.internal.DefaultConstructorMarker):52:52 -> getDefaultViewModelCreationExtras
+ 3:7:void androidx.lifecycle.viewmodel.MutableCreationExtras.():0 -> getDefaultViewModelCreationExtras
+ 3:7:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():648 -> getDefaultViewModelCreationExtras
+ 8:15:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():649:649 -> getDefaultViewModelCreationExtras
+ 16:21:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():650:650 -> getDefaultViewModelCreationExtras
+ 22:24:void androidx.lifecycle.viewmodel.MutableCreationExtras.set(androidx.lifecycle.viewmodel.CreationExtras$Key,java.lang.Object):61:61 -> getDefaultViewModelCreationExtras
+ 22:24:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():650 -> getDefaultViewModelCreationExtras
+ 25:26:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():652:652 -> getDefaultViewModelCreationExtras
+ 27:29:void androidx.lifecycle.viewmodel.MutableCreationExtras.set(androidx.lifecycle.viewmodel.CreationExtras$Key,java.lang.Object):61:61 -> getDefaultViewModelCreationExtras
+ 27:29:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():652 -> getDefaultViewModelCreationExtras
+ 30:31:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():653:653 -> getDefaultViewModelCreationExtras
+ 32:34:void androidx.lifecycle.viewmodel.MutableCreationExtras.set(androidx.lifecycle.viewmodel.CreationExtras$Key,java.lang.Object):61:61 -> getDefaultViewModelCreationExtras
+ 32:34:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():653 -> getDefaultViewModelCreationExtras
+ 35:50:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():654:654 -> getDefaultViewModelCreationExtras
+ 51:60:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():655:655 -> getDefaultViewModelCreationExtras
+ 61:64:void androidx.lifecycle.viewmodel.MutableCreationExtras.set(androidx.lifecycle.viewmodel.CreationExtras$Key,java.lang.Object):61:61 -> getDefaultViewModelCreationExtras
+ 61:64:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():655 -> getDefaultViewModelCreationExtras
+ 1:4:androidx.lifecycle.ViewModelProvider$Factory getDefaultViewModelProviderFactory():628:628 -> getDefaultViewModelProviderFactory
+ 5:6:androidx.lifecycle.ViewModelProvider$Factory getDefaultViewModelProviderFactory():629:629 -> getDefaultViewModelProviderFactory
+ 7:10:androidx.lifecycle.ViewModelProvider$Factory getDefaultViewModelProviderFactory():630:630 -> getDefaultViewModelProviderFactory
+ 11:31:androidx.lifecycle.ViewModelProvider$Factory getDefaultViewModelProviderFactory():632:632 -> getDefaultViewModelProviderFactory
+ 32:34:androidx.lifecycle.ViewModelProvider$Factory getDefaultViewModelProviderFactory():634:634 -> getDefaultViewModelProviderFactory
+ 1:3:androidx.lifecycle.Lifecycle getLifecycle():586:586 -> getLifecycle
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Landroidx/lifecycle/LifecycleRegistry;"}
+ 1:4:androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher():689:689 -> getOnBackPressedDispatcher
+ 5:17:androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher():690:690 -> getOnBackPressedDispatcher
+ 18:27:androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher():714:714 -> getOnBackPressedDispatcher
+ 28:30:androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher():731:731 -> getOnBackPressedDispatcher
+ 1:7:androidx.savedstate.SavedStateRegistry androidx.savedstate.SavedStateRegistryController.getSavedStateRegistry():33:33 -> getSavedStateRegistry
+ 1:7:androidx.savedstate.SavedStateRegistry getSavedStateRegistry():737 -> getSavedStateRegistry
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 1:6:androidx.lifecycle.ViewModelStore getViewModelStore():602:602 -> getViewModelStore
+ 7:10:void ensureViewModelStore():612:612 -> getViewModelStore
+ 7:10:androidx.lifecycle.ViewModelStore getViewModelStore():606 -> getViewModelStore
+ 11:18:void ensureViewModelStore():614:614 -> getViewModelStore
+ 11:18:androidx.lifecycle.ViewModelStore getViewModelStore():606 -> getViewModelStore
+ 19:22:void ensureViewModelStore():617:617 -> getViewModelStore
+ 19:22:androidx.lifecycle.ViewModelStore getViewModelStore():606 -> getViewModelStore
+ 23:26:void ensureViewModelStore():619:619 -> getViewModelStore
+ 23:26:androidx.lifecycle.ViewModelStore getViewModelStore():606 -> getViewModelStore
+ 27:33:void ensureViewModelStore():620:620 -> getViewModelStore
+ 27:33:androidx.lifecycle.ViewModelStore getViewModelStore():606 -> getViewModelStore
+ 34:36:androidx.lifecycle.ViewModelStore getViewModelStore():607:607 -> getViewModelStore
+ 37:44:androidx.lifecycle.ViewModelStore getViewModelStore():603:603 -> getViewModelStore
+ 1:8:void onActivityResult(int,int,android.content.Intent):845:845 -> onActivityResult
+ 9:12:void onActivityResult(int,int,android.content.Intent):846:846 -> onActivityResult
+ 1:8:void onBackPressed():678:678 -> onBackPressed
+ 1:3:void onConfigurationChanged(android.content.res.Configuration):917:917 -> onConfigurationChanged
+ 4:21:void onConfigurationChanged(android.content.res.Configuration):918:918 -> onConfigurationChanged
+ 22:26:void onConfigurationChanged(android.content.res.Configuration):919:919 -> onConfigurationChanged
+ 1:5:void onCreate(android.os.Bundle):357:357 -> onCreate
+ 6:10:void onCreate(android.os.Bundle):358:358 -> onCreate
+ 11:12:void androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(android.content.Context):82:82 -> onCreate
+ 11:12:void onCreate(android.os.Bundle):358 -> onCreate
+ 13:32:void androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(android.content.Context):83:83 -> onCreate
+ 13:32:void onCreate(android.os.Bundle):358 -> onCreate
+ 33:36:void androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(android.content.Context):84:84 -> onCreate
+ 33:36:void onCreate(android.os.Bundle):358 -> onCreate
+ 37:39:void onCreate(android.os.Bundle):359:359 -> onCreate
+ 40:45:void androidx.lifecycle.ReportFragment.injectIfNeededIn(android.app.Activity):0:0 -> onCreate
+ 40:45:void onCreate(android.os.Bundle):360 -> onCreate
+ 3:5:boolean onCreatePanelMenu(int,android.view.Menu):520:520 -> onCreatePanelMenu
+ 6:8:boolean onCreatePanelMenu(int,android.view.Menu):521:521 -> onCreatePanelMenu
+ 9:14:void androidx.core.view.MenuHostHelper.onCreateMenu(android.view.Menu,android.view.MenuInflater):92:92 -> onCreatePanelMenu
+ 9:14:boolean onCreatePanelMenu(int,android.view.Menu):521 -> onCreatePanelMenu
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 15:25:void androidx.core.view.MenuHostHelper.onCreateMenu(android.view.Menu,android.view.MenuInflater):92:92 -> onCreatePanelMenu
+ 15:25:boolean onCreatePanelMenu(int,android.view.Menu):521 -> onCreatePanelMenu
+ 26:29:boolean onCreatePanelMenu(int,android.view.Menu):0:0 -> onCreatePanelMenu
+ # {"id":"com.android.tools.r8.outlineCallsite","positions":{"3":33,"4":35,"5":38,"6":42},"outline":"Landroidx/room/RoomDatabase$Builder$$ExternalSyntheticOutline0;m(Ljava/util/Iterator;)Ljava/lang/ClassCastException;"}
+ 30:32:void androidx.core.view.MenuHostHelper.onCreateMenu(android.view.Menu,android.view.MenuInflater):92:92 -> onCreatePanelMenu
+ 30:32:boolean onCreatePanelMenu(int,android.view.Menu):521 -> onCreatePanelMenu
+ 33:33:void androidx.core.view.MenuHostHelper.onCreateMenu(android.view.Menu,android.view.MenuInflater):92:92 -> onCreatePanelMenu
+ 33:33:boolean onCreatePanelMenu(int,android.view.Menu):521 -> onCreatePanelMenu
+ 35:35:void androidx.core.view.MenuHostHelper.onCreateMenu(android.view.Menu,android.view.MenuInflater):93:93 -> onCreatePanelMenu
+ 35:35:boolean onCreatePanelMenu(int,android.view.Menu):521 -> onCreatePanelMenu
+ 38:38:void androidx.core.view.MenuHostHelper.onCreateMenu(android.view.Menu,android.view.MenuInflater):92:92 -> onCreatePanelMenu
+ 38:38:boolean onCreatePanelMenu(int,android.view.Menu):521 -> onCreatePanelMenu
+ 42:42:void androidx.core.view.MenuHostHelper.onCreateMenu(android.view.Menu,android.view.MenuInflater):92:92 -> onCreatePanelMenu
+ 42:42:boolean onCreatePanelMenu(int,android.view.Menu):521 -> onCreatePanelMenu
+ 1:11:boolean onMenuItemSelected(int,android.view.MenuItem):528:528 -> onMenuItemSelected
+ 12:17:boolean androidx.core.view.MenuHostHelper.onMenuItemSelected(android.view.MenuItem):106:106 -> onMenuItemSelected
+ 12:17:boolean onMenuItemSelected(int,android.view.MenuItem):532 -> onMenuItemSelected
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 18:28:boolean androidx.core.view.MenuHostHelper.onMenuItemSelected(android.view.MenuItem):106:106 -> onMenuItemSelected
+ 18:28:boolean onMenuItemSelected(int,android.view.MenuItem):532 -> onMenuItemSelected
+ 29:32:boolean onMenuItemSelected(int,android.view.MenuItem):0:0 -> onMenuItemSelected
+ # {"id":"com.android.tools.r8.outlineCallsite","positions":{"3":35,"4":37,"5":40,"6":44},"outline":"Landroidx/room/RoomDatabase$Builder$$ExternalSyntheticOutline0;m(Ljava/util/Iterator;)Ljava/lang/ClassCastException;"}
+ 33:34:boolean androidx.core.view.MenuHostHelper.onMenuItemSelected(android.view.MenuItem):106:106 -> onMenuItemSelected
+ 33:34:boolean onMenuItemSelected(int,android.view.MenuItem):532 -> onMenuItemSelected
+ 35:35:boolean androidx.core.view.MenuHostHelper.onMenuItemSelected(android.view.MenuItem):106:106 -> onMenuItemSelected
+ 35:35:boolean onMenuItemSelected(int,android.view.MenuItem):532 -> onMenuItemSelected
+ 37:37:boolean androidx.core.view.MenuHostHelper.onMenuItemSelected(android.view.MenuItem):107:107 -> onMenuItemSelected
+ 37:37:boolean onMenuItemSelected(int,android.view.MenuItem):532 -> onMenuItemSelected
+ 40:40:boolean androidx.core.view.MenuHostHelper.onMenuItemSelected(android.view.MenuItem):106:106 -> onMenuItemSelected
+ 40:40:boolean onMenuItemSelected(int,android.view.MenuItem):532 -> onMenuItemSelected
+ 44:44:boolean androidx.core.view.MenuHostHelper.onMenuItemSelected(android.view.MenuItem):106:106 -> onMenuItemSelected
+ 44:44:boolean onMenuItemSelected(int,android.view.MenuItem):532 -> onMenuItemSelected
+ 1:3:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1029:1029 -> onMultiWindowModeChanged
+ 4:21:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1033:1033 -> onMultiWindowModeChanged
+ 22:23:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1034:1034 -> onMultiWindowModeChanged
+ 24:29:void androidx.core.app.MultiWindowModeChangedInfo.(boolean,android.content.res.Configuration):0:0 -> onMultiWindowModeChanged
+ 24:29:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1034 -> onMultiWindowModeChanged
+ 30:32:void androidx.core.app.MultiWindowModeChangedInfo.(boolean):27:27 -> onMultiWindowModeChanged
+ 30:32:void androidx.core.app.MultiWindowModeChangedInfo.(boolean,android.content.res.Configuration):50 -> onMultiWindowModeChanged
+ 30:32:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1034 -> onMultiWindowModeChanged
+ 33:37:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1034:1034 -> onMultiWindowModeChanged
+ 1:3:void onNewIntent(android.content.Intent):972:972 -> onNewIntent
+ 4:21:void onNewIntent(android.content.Intent):973:973 -> onNewIntent
+ 22:26:void onNewIntent(android.content.Intent):974:974 -> onNewIntent
+ 1:6:void androidx.core.view.MenuHostHelper.onMenuClosed(android.view.Menu):121:121 -> onPanelClosed
+ 1:6:void onPanelClosed(int,android.view.Menu):539 -> onPanelClosed
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 7:16:void androidx.core.view.MenuHostHelper.onMenuClosed(android.view.Menu):121:121 -> onPanelClosed
+ 7:16:void onPanelClosed(int,android.view.Menu):539 -> onPanelClosed
+ 17:20:void onPanelClosed(int,android.view.Menu):540:540 -> onPanelClosed
+ 21:24:void onPanelClosed(int,android.view.Menu):0:0 -> onPanelClosed
+ # {"id":"com.android.tools.r8.outlineCallsite","positions":{"3":26,"4":28,"5":31,"6":35},"outline":"Landroidx/room/RoomDatabase$Builder$$ExternalSyntheticOutline0;m(Ljava/util/Iterator;)Ljava/lang/ClassCastException;"}
+ 25:25:void androidx.core.view.MenuHostHelper.onMenuClosed(android.view.Menu):121:121 -> onPanelClosed
+ 25:25:void onPanelClosed(int,android.view.Menu):539 -> onPanelClosed
+ 26:26:void androidx.core.view.MenuHostHelper.onMenuClosed(android.view.Menu):121:121 -> onPanelClosed
+ 26:26:void onPanelClosed(int,android.view.Menu):539 -> onPanelClosed
+ 28:28:void androidx.core.view.MenuHostHelper.onMenuClosed(android.view.Menu):122:122 -> onPanelClosed
+ 28:28:void onPanelClosed(int,android.view.Menu):539 -> onPanelClosed
+ 31:31:void androidx.core.view.MenuHostHelper.onMenuClosed(android.view.Menu):121:121 -> onPanelClosed
+ 31:31:void onPanelClosed(int,android.view.Menu):539 -> onPanelClosed
+ 35:35:void androidx.core.view.MenuHostHelper.onMenuClosed(android.view.Menu):121:121 -> onPanelClosed
+ 35:35:void onPanelClosed(int,android.view.Menu):539 -> onPanelClosed
+ 1:3:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1091:1091 -> onPictureInPictureModeChanged
+ 4:21:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1096:1096 -> onPictureInPictureModeChanged
+ 22:23:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1097:1097 -> onPictureInPictureModeChanged
+ 24:28:void androidx.core.app.PictureInPictureModeChangedInfo.(boolean,android.content.res.Configuration):0:0 -> onPictureInPictureModeChanged
+ 24:28:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1097 -> onPictureInPictureModeChanged
+ 29:31:void androidx.core.app.PictureInPictureModeChangedInfo.(boolean):27:27 -> onPictureInPictureModeChanged
+ 29:31:void androidx.core.app.PictureInPictureModeChangedInfo.(boolean,android.content.res.Configuration):50 -> onPictureInPictureModeChanged
+ 29:31:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1097 -> onPictureInPictureModeChanged
+ 32:36:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1097:1097 -> onPictureInPictureModeChanged
+ 3:5:boolean onPreparePanel(int,android.view.View,android.view.Menu):511:511 -> onPreparePanel
+ 6:11:void androidx.core.view.MenuHostHelper.onPrepareMenu(android.view.Menu):79:79 -> onPreparePanel
+ 6:11:boolean onPreparePanel(int,android.view.View,android.view.Menu):512 -> onPreparePanel
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 12:22:void androidx.core.view.MenuHostHelper.onPrepareMenu(android.view.Menu):79:79 -> onPreparePanel
+ 12:22:boolean onPreparePanel(int,android.view.View,android.view.Menu):512 -> onPreparePanel
+ 23:26:boolean onPreparePanel(int,android.view.View,android.view.Menu):0:0 -> onPreparePanel
+ # {"id":"com.android.tools.r8.outlineCallsite","positions":{"3":30,"4":32,"5":35,"6":39},"outline":"Landroidx/room/RoomDatabase$Builder$$ExternalSyntheticOutline0;m(Ljava/util/Iterator;)Ljava/lang/ClassCastException;"}
+ 27:29:void androidx.core.view.MenuHostHelper.onPrepareMenu(android.view.Menu):79:79 -> onPreparePanel
+ 27:29:boolean onPreparePanel(int,android.view.View,android.view.Menu):512 -> onPreparePanel
+ 30:30:void androidx.core.view.MenuHostHelper.onPrepareMenu(android.view.Menu):79:79 -> onPreparePanel
+ 30:30:boolean onPreparePanel(int,android.view.View,android.view.Menu):512 -> onPreparePanel
+ 32:32:void androidx.core.view.MenuHostHelper.onPrepareMenu(android.view.Menu):80:80 -> onPreparePanel
+ 32:32:boolean onPreparePanel(int,android.view.View,android.view.Menu):512 -> onPreparePanel
+ 35:35:void androidx.core.view.MenuHostHelper.onPrepareMenu(android.view.Menu):79:79 -> onPreparePanel
+ 35:35:boolean onPreparePanel(int,android.view.View,android.view.Menu):512 -> onPreparePanel
+ 39:39:void androidx.core.view.MenuHostHelper.onPrepareMenu(android.view.Menu):79:79 -> onPreparePanel
+ 39:39:boolean onPreparePanel(int,android.view.View,android.view.Menu):512 -> onPreparePanel
+ 1:7:void onRequestPermissionsResult(int,java.lang.String[],int[]):870:870 -> onRequestPermissionsResult
+ 8:13:void onRequestPermissionsResult(int,java.lang.String[],int[]):871:871 -> onRequestPermissionsResult
+ 14:18:void onRequestPermissionsResult(int,java.lang.String[],int[]):872:872 -> onRequestPermissionsResult
+ 19:26:void onRequestPermissionsResult(int,java.lang.String[],int[]):870:870 -> onRequestPermissionsResult
+ 27:32:void onRequestPermissionsResult(int,java.lang.String[],int[]):873:873 -> onRequestPermissionsResult
+ 33:36:void onRequestPermissionsResult(int,java.lang.String[],int[]):874:874 -> onRequestPermissionsResult
+ 1:4:java.lang.Object onRetainNonConfigurationInstance():389:389 -> onRetainNonConfigurationInstance
+ 5:12:java.lang.Object onRetainNonConfigurationInstance():394:394 -> onRetainNonConfigurationInstance
+ 13:18:java.lang.Object onRetainNonConfigurationInstance():396:396 -> onRetainNonConfigurationInstance
+ 19:20:java.lang.Object onRetainNonConfigurationInstance():404:404 -> onRetainNonConfigurationInstance
+ 21:23:void androidx.activity.ComponentActivity$NonConfigurationInstances.():136:136 -> onRetainNonConfigurationInstance
+ 21:23:java.lang.Object onRetainNonConfigurationInstance():404 -> onRetainNonConfigurationInstance
+ 24:26:java.lang.Object onRetainNonConfigurationInstance():406:406 -> onRetainNonConfigurationInstance
+ 1:6:void onSaveInstanceState(android.os.Bundle):370:370 -> onSaveInstanceState
+ 7:11:void onSaveInstanceState(android.os.Bundle):371:371 -> onSaveInstanceState
+ 12:14:void onSaveInstanceState(android.os.Bundle):373:373 -> onSaveInstanceState
+ 15:20:void onSaveInstanceState(android.os.Bundle):374:374 -> onSaveInstanceState
+ 1:3:void onTrimMemory(int):945:945 -> onTrimMemory
+ 4:21:void onTrimMemory(int):946:946 -> onTrimMemory
+ 22:30:void onTrimMemory(int):947:947 -> onTrimMemory
+ 1:9:androidx.activity.result.ActivityResultLauncher registerForActivityResult(androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultRegistry,androidx.activity.result.ActivityResultCallback):885:885 -> registerForActivityResult
+ 1:9:androidx.activity.result.ActivityResultLauncher registerForActivityResult(androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):894 -> registerForActivityResult
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/fragment/app/FragmentManager$FragmentIntentSenderContract;Landroidx/activity/result/ActivityResultCallback;)Landroidx/activity/result/ActivityResultLauncher;"}
+ 10:20:androidx.activity.result.ActivityResultLauncher registerForActivityResult(androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultRegistry,androidx.activity.result.ActivityResultCallback):886:886 -> registerForActivityResult
+ 10:20:androidx.activity.result.ActivityResultLauncher registerForActivityResult(androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):894 -> registerForActivityResult
+ 21:27:androidx.activity.result.ActivityResultLauncher registerForActivityResult(androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultRegistry,androidx.activity.result.ActivityResultCallback):885:885 -> registerForActivityResult
+ 21:27:androidx.activity.result.ActivityResultLauncher registerForActivityResult(androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):894 -> registerForActivityResult
+ 1:6:void reportFullyDrawn():1119:1119 -> reportFullyDrawn
+ 7:8:void reportFullyDrawn():1120:1120 -> reportFullyDrawn
+ 9:14:void androidx.tracing.TraceApi18Impl.beginSection(java.lang.String):49:49 -> reportFullyDrawn
+ 9:14:void androidx.tracing.Trace.beginSection(java.lang.String):81 -> reportFullyDrawn
+ 9:14:void reportFullyDrawn():1120 -> reportFullyDrawn
+ 15:17:void reportFullyDrawn():1124:1124 -> reportFullyDrawn
+ 18:22:void reportFullyDrawn():1134:1134 -> reportFullyDrawn
+ 23:29:void androidx.tracing.TraceApi18Impl.endSection():60:60 -> reportFullyDrawn
+ 23:29:void androidx.tracing.Trace.endSection():94 -> reportFullyDrawn
+ 23:29:void reportFullyDrawn():1136 -> reportFullyDrawn
+ 30:30:void reportFullyDrawn():1137:1137 -> reportFullyDrawn
+ 1:8:void initializeViewTreeOwners():474:474 -> setContentView
+ 1:8:void setContentView(android.view.View):445 -> setContentView
+ 9:16:void androidx.lifecycle.ViewTreeLifecycleOwner.set(android.view.View,androidx.lifecycle.LifecycleOwner):0:0 -> setContentView
+ 9:16:void initializeViewTreeOwners():474 -> setContentView
+ 9:16:void setContentView(android.view.View):445 -> setContentView
+ 17:19:void androidx.lifecycle.ViewTreeLifecycleOwner.set(android.view.View,androidx.lifecycle.LifecycleOwner):37:37 -> setContentView
+ 17:19:void initializeViewTreeOwners():474 -> setContentView
+ 17:19:void setContentView(android.view.View):445 -> setContentView
+ 20:27:void initializeViewTreeOwners():475:475 -> setContentView
+ 20:27:void setContentView(android.view.View):445 -> setContentView
+ 28:33:void androidx.lifecycle.ViewTreeViewModelStoreOwner.set(android.view.View,androidx.lifecycle.ViewModelStoreOwner):0:0 -> setContentView
+ 28:33:void initializeViewTreeOwners():475 -> setContentView
+ 28:33:void setContentView(android.view.View):445 -> setContentView
+ 34:36:void androidx.lifecycle.ViewTreeViewModelStoreOwner.set(android.view.View,androidx.lifecycle.ViewModelStoreOwner):38:38 -> setContentView
+ 34:36:void initializeViewTreeOwners():475 -> setContentView
+ 34:36:void setContentView(android.view.View):445 -> setContentView
+ 37:44:void initializeViewTreeOwners():476:476 -> setContentView
+ 37:44:void setContentView(android.view.View):445 -> setContentView
+ 45:50:void androidx.savedstate.ViewTreeSavedStateRegistryOwner.set(android.view.View,androidx.savedstate.SavedStateRegistryOwner):0:0 -> setContentView
+ 45:50:void initializeViewTreeOwners():476 -> setContentView
+ 45:50:void setContentView(android.view.View):445 -> setContentView
+ 51:53:void androidx.savedstate.ViewTreeSavedStateRegistryOwner.set(android.view.View,androidx.savedstate.SavedStateRegistryOwner):41:41 -> setContentView
+ 51:53:void initializeViewTreeOwners():476 -> setContentView
+ 51:53:void setContentView(android.view.View):445 -> setContentView
+ 54:67:void initializeViewTreeOwners():477:477 -> setContentView
+ 54:67:void setContentView(android.view.View):445 -> setContentView
+ 68:70:void androidx.activity.ViewTreeOnBackPressedDispatcherOwner.set(android.view.View,androidx.activity.OnBackPressedDispatcherOwner):38:38 -> setContentView
+ 68:70:void initializeViewTreeOwners():477 -> setContentView
+ 68:70:void setContentView(android.view.View):445 -> setContentView
+ 71:78:void initializeViewTreeOwners():478:478 -> setContentView
+ 71:78:void setContentView(android.view.View):445 -> setContentView
+ 79:84:void androidx.activity.ViewTreeFullyDrawnReporterOwner.set(android.view.View,androidx.activity.FullyDrawnReporterOwner):0:0 -> setContentView
+ 79:84:void initializeViewTreeOwners():478 -> setContentView
+ 79:84:void setContentView(android.view.View):445 -> setContentView
+ 85:87:void androidx.activity.ViewTreeFullyDrawnReporterOwner.set(android.view.View,androidx.activity.FullyDrawnReporterOwner):36:36 -> setContentView
+ 85:87:void initializeViewTreeOwners():478 -> setContentView
+ 85:87:void setContentView(android.view.View):445 -> setContentView
+ 88:95:void setContentView(android.view.View):446:446 -> setContentView
+ 96:102:void androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl.viewCreated(android.view.View):1210:1210 -> setContentView
+ 96:102:void setContentView(android.view.View):446 -> setContentView
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 103:104:void androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl.viewCreated(android.view.View):1211:1211 -> setContentView
+ 103:104:void setContentView(android.view.View):446 -> setContentView
+ 105:111:void androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl.viewCreated(android.view.View):1212:1212 -> setContentView
+ 105:111:void setContentView(android.view.View):446 -> setContentView
+ 112:115:void setContentView(android.view.View):447:447 -> setContentView
+androidx.activity.ComponentActivity$$ExternalSyntheticLambda2 -> androidx.activity.ComponentActivity$$ExternalSyntheticLambda2:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ androidx.activity.ComponentActivity androidx.activity.ComponentActivity$$InternalSyntheticLambda$1$5dadcb51e38206f711ac33b43be9f1d0a0b44942d6cdeb5df7bcc27f4845fc40$1.f$0 -> f$0
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/appcompat/app/AppCompatActivity;"}
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (androidx.appcompat.app.AppCompatActivity):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:7:kotlin.Unit androidx.activity.ComponentActivity.lambda$new$0():162:162 -> invoke
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Ljava/lang/Object;"}
+androidx.activity.ComponentActivity$$ExternalSyntheticLambda3 -> androidx.activity.ComponentActivity$$ExternalSyntheticLambda3:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ androidx.activity.ComponentActivity androidx.activity.ComponentActivity$$InternalSyntheticLambda$1$5dadcb51e38206f711ac33b43be9f1d0a0b44942d6cdeb5df7bcc27f4845fc40$2.f$0 -> f$0
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Ljava/lang/Object;"}
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (int,java.lang.Object):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ 19:23:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():318:318 -> saveState
+ 24:28:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319:319 -> saveState
+ 29:32:void androidx.activity.result.ActivityResultRegistry.onSaveInstanceState(android.os.Bundle):304:304 -> saveState
+ 29:32:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319 -> saveState
+ 33:39:void androidx.activity.result.ActivityResultRegistry.onSaveInstanceState(android.os.Bundle):305:305 -> saveState
+ 33:39:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319 -> saveState
+ 40:44:void androidx.activity.result.ActivityResultRegistry.onSaveInstanceState(android.os.Bundle):304:304 -> saveState
+ 40:44:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319 -> saveState
+ 45:46:void androidx.activity.result.ActivityResultRegistry.onSaveInstanceState(android.os.Bundle):306:306 -> saveState
+ 45:46:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319 -> saveState
+ 47:53:void androidx.activity.result.ActivityResultRegistry.onSaveInstanceState(android.os.Bundle):307:307 -> saveState
+ 47:53:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319 -> saveState
+ 54:58:void androidx.activity.result.ActivityResultRegistry.onSaveInstanceState(android.os.Bundle):306:306 -> saveState
+ 54:58:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319 -> saveState
+ 59:70:void androidx.activity.result.ActivityResultRegistry.onSaveInstanceState(android.os.Bundle):308:308 -> saveState
+ 59:70:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319 -> saveState
+ 71:72:void androidx.activity.result.ActivityResultRegistry.onSaveInstanceState(android.os.Bundle):310:310 -> saveState
+ 71:72:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319 -> saveState
+ 73:78:void androidx.activity.result.ActivityResultRegistry.onSaveInstanceState(android.os.Bundle):311:311 -> saveState
+ 73:78:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319 -> saveState
+ 79:84:void androidx.activity.result.ActivityResultRegistry.onSaveInstanceState(android.os.Bundle):310:310 -> saveState
+ 79:84:android.os.Bundle androidx.activity.ComponentActivity.lambda$new$1():319 -> saveState
+androidx.activity.ComponentActivity$$ExternalSyntheticLambda4 -> androidx.activity.ComponentActivity$$ExternalSyntheticLambda4:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ androidx.activity.ComponentActivity androidx.activity.ComponentActivity$$InternalSyntheticLambda$1$5dadcb51e38206f711ac33b43be9f1d0a0b44942d6cdeb5df7bcc27f4845fc40$3.f$0 -> f$0
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/appcompat/app/AppCompatActivity;"}
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (androidx.appcompat.app.AppCompatActivity):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:8:androidx.savedstate.SavedStateRegistry androidx.savedstate.SavedStateRegistryController.getSavedStateRegistry():33:33 -> onContextAvailable
+ 1:8:androidx.savedstate.SavedStateRegistry androidx.activity.ComponentActivity.getSavedStateRegistry():737 -> onContextAvailable
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 1:8:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):323 -> onContextAvailable
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()V"}
+ 9:10:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):323:323 -> onContextAvailable
+ 11:16:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):324:324 -> onContextAvailable
+ 17:21:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326:326 -> onContextAvailable
+ 22:23:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):324:324 -> onContextAvailable
+ 22:23:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 24:27:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):325:325 -> onContextAvailable
+ 24:27:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 28:29:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):326:326 -> onContextAvailable
+ 28:29:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 30:38:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):327:327 -> onContextAvailable
+ 30:38:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 39:40:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):331:331 -> onContextAvailable
+ 39:40:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 41:46:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):332:332 -> onContextAvailable
+ 41:46:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 47:48:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):333:333 -> onContextAvailable
+ 47:48:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 49:52:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):334:334 -> onContextAvailable
+ 49:52:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 53:58:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):333:333 -> onContextAvailable
+ 53:58:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 59:64:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):335:335 -> onContextAvailable
+ 59:64:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 65:70:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):336:336 -> onContextAvailable
+ 65:70:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 71:80:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):341:341 -> onContextAvailable
+ 71:80:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 81:86:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):342:342 -> onContextAvailable
+ 81:86:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 87:92:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):346:346 -> onContextAvailable
+ 87:92:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 93:95:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):347:347 -> onContextAvailable
+ 93:95:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 96:110:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):350:350 -> onContextAvailable
+ 96:110:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 111:113:void androidx.activity.result.ActivityResultRegistry.bindRcKey(int,java.lang.String):451:451 -> onContextAvailable
+ 111:113:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):350 -> onContextAvailable
+ 111:113:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+ 114:120:void androidx.activity.result.ActivityResultRegistry.bindRcKey(int,java.lang.String):452:452 -> onContextAvailable
+ 114:120:void androidx.activity.result.ActivityResultRegistry.onRestoreInstanceState(android.os.Bundle):350 -> onContextAvailable
+ 114:120:void androidx.activity.ComponentActivity.lambda$new$2(android.content.Context):326 -> onContextAvailable
+androidx.activity.ComponentActivity$1 -> androidx.activity.ComponentActivity$1:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> this$0
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/appcompat/app/AppCompatActivity;"}
+ 1:6:void (androidx.activity.ComponentActivity):172:172 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/appcompat/app/AppCompatActivity;)V"}
+ 1:8:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):185:185 -> onLaunch
+ 1:8:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ # {"id":"com.android.tools.r8.synthesized"}
+ 9:27:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):187:187 -> onLaunch
+ 9:27:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 28:31:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):197:197 -> onLaunch
+ 28:31:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 32:47:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):200:200 -> onLaunch
+ 32:47:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 48:54:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):201:201 -> onLaunch
+ 48:54:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 55:62:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):203:203 -> onLaunch
+ 55:62:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 63:66:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):204:204 -> onLaunch
+ 63:66:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 67:73:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):205:205 -> onLaunch
+ 67:73:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 74:85:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):209:209 -> onLaunch
+ 74:85:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 86:94:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):212:212 -> onLaunch
+ 86:94:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 95:96:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):215:215 -> onLaunch
+ 95:96:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 97:102:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):512:512 -> onLaunch
+ 97:102:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 97:102:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 103:105:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):513:513 -> onLaunch
+ 103:105:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 103:105:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 106:113:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):514:514 -> onLaunch
+ 106:113:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 106:113:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 114:119:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):519:519 -> onLaunch
+ 114:119:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 114:119:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 120:129:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):520:520 -> onLaunch
+ 120:129:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 120:129:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 130:139:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):521:521 -> onLaunch
+ 130:139:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 130:139:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 140:148:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):515:515 -> onLaunch
+ 140:148:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 140:148:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 149:154:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):516:516 -> onLaunch
+ 149:154:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 149:154:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 155:158:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0:0 -> onLaunch
+ 159:162:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):516:516 -> onLaunch
+ 159:162:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 159:162:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 163:168:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):526:526 -> onLaunch
+ 163:168:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 163:168:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 169:176:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):528:528 -> onLaunch
+ 169:176:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 169:176:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 177:182:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):530:530 -> onLaunch
+ 177:182:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 177:182:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 183:185:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):533:533 -> onLaunch
+ 183:185:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 183:185:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 186:197:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):534:534 -> onLaunch
+ 186:197:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 186:197:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 198:205:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):535:535 -> onLaunch
+ 198:205:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 198:205:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 206:211:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):540:540 -> onLaunch
+ 206:211:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 206:211:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 212:215:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):545:545 -> onLaunch
+ 212:215:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 212:215:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 216:224:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):547:547 -> onLaunch
+ 216:224:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 216:224:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 225:234:void androidx.core.app.ActivityCompat.requestPermissions(android.app.Activity,java.lang.String[],int):548:548 -> onLaunch
+ 225:234:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218 -> onLaunch
+ 225:234:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 235:246:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):219:219 -> onLaunch
+ 235:246:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 247:248:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):220:220 -> onLaunch
+ 247:248:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 249:254:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):221:221 -> onLaunch
+ 249:254:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 255:256:android.content.IntentSender androidx.activity.result.IntentSenderRequest.getIntentSender():36:36 -> onLaunch
+ 255:256:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):224 -> onLaunch
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 255:256:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 257:258:android.content.Intent androidx.activity.result.IntentSenderRequest.getFillInIntent():41:41 -> onLaunch
+ 257:258:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):225 -> onLaunch
+ 257:258:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 259:260:int androidx.activity.result.IntentSenderRequest.getFlagsMask():45:45 -> onLaunch
+ 259:260:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):225 -> onLaunch
+ 259:260:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 261:264:int androidx.activity.result.IntentSenderRequest.getFlagsValues():49:49 -> onLaunch
+ 261:264:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):226 -> onLaunch
+ 261:264:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 265:269:void androidx.core.app.ActivityCompat.startIntentSenderForResult(android.app.Activity,android.content.IntentSender,int,android.content.Intent,int,int,int,android.os.Bundle):277:277 -> onLaunch
+ 265:269:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):224 -> onLaunch
+ 265:269:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 270:288:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):228:228 -> onLaunch
+ 270:288:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+ 289:292:void androidx.core.app.ActivityCompat.startActivityForResult(android.app.Activity,android.content.Intent,int,android.os.Bundle):244:244 -> onLaunch
+ 289:292:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):239 -> onLaunch
+ 289:292:void onLaunch(int,kotlin.io.CloseableKt,android.content.Intent):0 -> onLaunch
+androidx.activity.ComponentActivity$2 -> androidx.activity.ComponentActivity$2:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> this$0
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/appcompat/app/AppCompatActivity;"}
+ 1:6:void (androidx.activity.ComponentActivity):273:273 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/appcompat/app/AppCompatActivity;)V"}
+ 1:4:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):277:277 -> onStateChanged
+ 5:12:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):278:278 -> onStateChanged
+ 13:20:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):279:279 -> onStateChanged
+ 21:24:void androidx.activity.ComponentActivity$Api19Impl.cancelPendingInputEvents(android.view.View):1153:1153 -> onStateChanged
+ 21:24:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):281 -> onStateChanged
+androidx.activity.ComponentActivity$3 -> androidx.activity.ComponentActivity$3:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> this$0
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/appcompat/app/AppCompatActivity;"}
+ 1:6:void (androidx.activity.ComponentActivity):287:287 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/appcompat/app/AppCompatActivity;)V"}
+ 1:4:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):291:291 -> onStateChanged
+ 5:9:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):293:293 -> onStateChanged
+ 10:11:void androidx.activity.contextaware.ContextAwareHelper.clearAvailableContext():93:93 -> onStateChanged
+ 10:11:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):293 -> onStateChanged
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 12:19:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):295:295 -> onStateChanged
+ 20:28:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):296:296 -> onStateChanged
+ 29:32:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):298:298 -> onStateChanged
+ 33:34:void androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl.activityDestroyed():1218:1218 -> onStateChanged
+ 33:34:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):298 -> onStateChanged
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 35:45:void androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl.activityDestroyed():1218:1218 -> onStateChanged
+ 35:45:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):298 -> onStateChanged
+ 46:61:void androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl.activityDestroyed():1219:1219 -> onStateChanged
+ 46:61:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):298 -> onStateChanged
+androidx.activity.ComponentActivity$4 -> androidx.activity.ComponentActivity$4:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> this$0
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/appcompat/app/AppCompatActivity;"}
+ 1:6:void (androidx.activity.ComponentActivity):302:302 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/appcompat/app/AppCompatActivity;)V"}
+ 1:2:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):306:306 -> onStateChanged
+ 3:6:void androidx.activity.ComponentActivity.ensureViewModelStore():612:612 -> onStateChanged
+ 3:6:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):306 -> onStateChanged
+ 7:14:void androidx.activity.ComponentActivity.ensureViewModelStore():614:614 -> onStateChanged
+ 7:14:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):306 -> onStateChanged
+ 15:18:void androidx.activity.ComponentActivity.ensureViewModelStore():617:617 -> onStateChanged
+ 15:18:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):306 -> onStateChanged
+ 19:22:void androidx.activity.ComponentActivity.ensureViewModelStore():619:619 -> onStateChanged
+ 19:22:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):306 -> onStateChanged
+ 23:29:void androidx.activity.ComponentActivity.ensureViewModelStore():620:620 -> onStateChanged
+ 23:29:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):306 -> onStateChanged
+ 30:35:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):307:307 -> onStateChanged
+androidx.activity.ComponentActivity$6 -> androidx.activity.ComponentActivity$6:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ 1:6:void (androidx.activity.ComponentActivity):714:714 ->
+ 1:4:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):718:718 -> onStateChanged
+ 5:10:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):719:719 -> onStateChanged
+ 11:14:androidx.activity.OnBackPressedDispatcher androidx.activity.ComponentActivity.access$100(androidx.activity.ComponentActivity):119:119 -> onStateChanged
+ 11:14:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):720 -> onStateChanged
+ 15:16:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):720:720 -> onStateChanged
+ 17:20:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):721:721 -> onStateChanged
+ 21:23:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):720:720 -> onStateChanged
+ 24:28:void androidx.activity.OnBackPressedDispatcher.setOnBackInvokedDispatcher(android.window.OnBackInvokedDispatcher):0:0 -> onStateChanged
+ 24:28:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):720 -> onStateChanged
+ 29:30:void androidx.activity.OnBackPressedDispatcher.setOnBackInvokedDispatcher(android.window.OnBackInvokedDispatcher):86:86 -> onStateChanged
+ 29:30:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):720 -> onStateChanged
+ 31:36:void androidx.activity.OnBackPressedDispatcher.setOnBackInvokedDispatcher(android.window.OnBackInvokedDispatcher):87:87 -> onStateChanged
+ 31:36:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):720 -> onStateChanged
+androidx.activity.ComponentActivity$Api19Impl -> R8$$REMOVED$$CLASS$$3:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+androidx.activity.ComponentActivity$Api33Impl -> androidx.activity.ComponentActivity$Api33Impl:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ 1:5:android.window.OnBackInvokedDispatcher getOnBackInvokedDispatcher(android.app.Activity):1163:1163 -> getOnBackInvokedDispatcher
+androidx.activity.ComponentActivity$NonConfigurationInstances -> androidx.activity.ComponentActivity$NonConfigurationInstances:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl -> androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> this$0
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/appcompat/app/AppCompatActivity;"}
+ 1:5:void (androidx.activity.ComponentActivity):1202:1202 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/appcompat/app/AppCompatActivity;)V"}
+ 6:15:void (androidx.activity.ComponentActivity):1204:1204 ->
+ 16:18:void (androidx.activity.ComponentActivity):1206:1206 ->
+ 1:2:void execute(java.lang.Runnable):1229:1229 -> execute
+ 3:12:void execute(java.lang.Runnable):1230:1230 -> execute
+ 13:16:void execute(java.lang.Runnable):1231:1231 -> execute
+ 17:26:void execute(java.lang.Runnable):1232:1232 -> execute
+ 27:30:void execute(java.lang.Runnable):1233:1233 -> execute
+ 31:34:void execute(java.lang.Runnable):1235:1235 -> execute
+ 35:44:void execute(java.lang.Runnable):1240:1240 -> execute
+ 1:2:void onDraw():1251:1251 -> onDraw
+ 3:7:void onDraw():1252:1252 -> onDraw
+ 8:11:void onDraw():1253:1253 -> onDraw
+ 12:13:void onDraw():1254:1254 -> onDraw
+ 14:15:void onDraw():1255:1255 -> onDraw
+ 16:17:boolean androidx.activity.FullyDrawnReporter.isFullyDrawnReported():73:73 -> onDraw
+ 16:17:void onDraw():1255 -> onDraw
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 18:23:boolean androidx.activity.FullyDrawnReporter.isFullyDrawnReported():73:73 -> onDraw
+ 18:23:void onDraw():1255 -> onDraw
+ 24:25:void onDraw():1256:1256 -> onDraw
+ 26:38:void onDraw():1257:1257 -> onDraw
+ 39:40:boolean androidx.activity.FullyDrawnReporter.isFullyDrawnReported():73:73 -> onDraw
+ 39:40:void onDraw():1255 -> onDraw
+ 41:50:void onDraw():1259:1259 -> onDraw
+ 51:52:void onDraw():1262:1262 -> onDraw
+ 53:64:void onDraw():1263:1263 -> onDraw
+ 1:18:void run():1273:1273 -> run
+androidx.activity.ComponentDialog -> R8$$REMOVED$$CLASS$$4:
+# {"id":"sourceFile","fileName":"ComponentDialog.kt"}
+androidx.activity.ComponentDialog$$ExternalSyntheticApiModelOutline0 -> androidx.activity.ComponentDialog$$ExternalSyntheticApiModelOutline0:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ 1:1:android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction m():0:0 -> m
+ # {"id":"com.android.tools.r8.synthesized"}
+ 2:2:android.window.OnBackInvokedCallback m(java.lang.Object):0:0 -> m
+ # {"id":"com.android.tools.r8.synthesized"}
+ 3:3:android.window.OnBackInvokedDispatcher m(android.app.Activity):0:0 -> m
+ # {"id":"com.android.tools.r8.synthesized"}
+ 4:4:android.window.OnBackInvokedDispatcher m(android.view.View):0:0 -> m
+ # {"id":"com.android.tools.r8.synthesized"}
+ 5:5:android.window.OnBackInvokedDispatcher m(androidx.appcompat.app.AppCompatDialog):0:0 -> m
+ # {"id":"com.android.tools.r8.synthesized"}
+ 6:6:android.window.OnBackInvokedDispatcher m(java.lang.Object):0:0 -> m
+ # {"id":"com.android.tools.r8.synthesized"}
+ 7:7:void m(android.window.OnBackInvokedDispatcher,int,android.window.OnBackInvokedCallback):0:0 -> m
+ # {"id":"com.android.tools.r8.synthesized"}
+ 8:8:void m(android.window.OnBackInvokedDispatcher,android.window.OnBackInvokedCallback):0:0 -> m
+ # {"id":"com.android.tools.r8.synthesized"}
+ 9:9:void m(android.window.OnBackInvokedDispatcher,androidx.appcompat.widget.Toolbar$Api33Impl$$ExternalSyntheticLambda0):0:0 -> m
+ # {"id":"com.android.tools.r8.synthesized"}
+androidx.activity.FullyDrawnReporter -> androidx.activity.FullyDrawnReporter:
+# {"id":"sourceFile","fileName":"FullyDrawnReporter.kt"}
+ java.util.List onReportCallbacks -> onReportCallbacks
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Ljava/lang/Object;"}
+ kotlin.jvm.functions.Function0 reportFullyDrawn -> reportFullyDrawn
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Ljava/lang/Object;"}
+ 1:1:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):52:52 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;)V"}
+ 2:2:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):54:54 ->
+ 3:3:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):56:56 ->
+ 4:4:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):77:77 ->
+ 5:5:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):79:79 ->
+ 6:6:void com.bumptech.glide.manager.SingletonConnectivityReceiver$FrameworkConnectivityMonitorPostApi24.(com.bumptech.glide.util.GlideSuppliers$GlideSupplier,com.bumptech.glide.manager.ConnectivityMonitor$ConnectivityListener):180:180 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Lcom/bumptech/glide/util/GlideSuppliers$1;Lcom/bumptech/glide/manager/SingletonConnectivityReceiver$2;)V"}
+ 7:7:void com.bumptech.glide.manager.SingletonConnectivityReceiver$FrameworkConnectivityMonitorPostApi24.(com.bumptech.glide.util.GlideSuppliers$GlideSupplier,com.bumptech.glide.manager.ConnectivityMonitor$ConnectivityListener):139:139 ->
+ 8:9:void com.bumptech.glide.manager.SingletonConnectivityReceiver$FrameworkConnectivityMonitorPostApi24.(com.bumptech.glide.util.GlideSuppliers$GlideSupplier,com.bumptech.glide.manager.ConnectivityMonitor$ConnectivityListener):181:182 ->
+ 10:10:void androidx.room.InvalidationTracker$ObservedTableTracker.(int):692:692 ->
+ 11:11:void androidx.room.InvalidationTracker$ObservedTableTracker.(int):694:694 ->
+ 12:12:void androidx.room.InvalidationTracker$ObservedTableTracker.(int):698:698 ->
+ 13:13:void androidx.room.InvalidationTracker$ObservedTableTracker.(int):701:701 ->
+ 14:15:void com.bumptech.glide.disklrucache.DiskLruCache$Editor.(com.bumptech.glide.disklrucache.DiskLruCache,com.bumptech.glide.disklrucache.DiskLruCache$Entry):764:765 ->
+ 14:15:void com.bumptech.glide.disklrucache.DiskLruCache$Editor.(com.bumptech.glide.disklrucache.DiskLruCache,com.bumptech.glide.disklrucache.DiskLruCache$Entry,com.bumptech.glide.disklrucache.DiskLruCache$1):759 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Lcom/bumptech/glide/disklrucache/DiskLruCache;Lcom/bumptech/glide/disklrucache/DiskLruCache$Entry;)V"}
+ 16:16:boolean com.bumptech.glide.disklrucache.DiskLruCache$Entry.access$700(com.bumptech.glide.disklrucache.DiskLruCache$Entry):855:855 ->
+ 16:16:void com.bumptech.glide.disklrucache.DiskLruCache$Editor.(com.bumptech.glide.disklrucache.DiskLruCache,com.bumptech.glide.disklrucache.DiskLruCache$Entry):766 ->
+ 16:16:void com.bumptech.glide.disklrucache.DiskLruCache$Editor.(com.bumptech.glide.disklrucache.DiskLruCache,com.bumptech.glide.disklrucache.DiskLruCache$Entry,com.bumptech.glide.disklrucache.DiskLruCache$1):759 ->
+ 17:17:int com.bumptech.glide.disklrucache.DiskLruCache.access$1900(com.bumptech.glide.disklrucache.DiskLruCache):90:90 ->
+ 17:17:void com.bumptech.glide.disklrucache.DiskLruCache$Editor.(com.bumptech.glide.disklrucache.DiskLruCache,com.bumptech.glide.disklrucache.DiskLruCache$Entry):766 ->
+ 17:17:void com.bumptech.glide.disklrucache.DiskLruCache$Editor.(com.bumptech.glide.disklrucache.DiskLruCache,com.bumptech.glide.disklrucache.DiskLruCache$Entry,com.bumptech.glide.disklrucache.DiskLruCache$1):759 ->
+ 18:18:void com.bumptech.glide.disklrucache.DiskLruCache$Editor.(com.bumptech.glide.disklrucache.DiskLruCache,com.bumptech.glide.disklrucache.DiskLruCache$Entry):766:766 ->
+ 18:18:void com.bumptech.glide.disklrucache.DiskLruCache$Editor.(com.bumptech.glide.disklrucache.DiskLruCache,com.bumptech.glide.disklrucache.DiskLruCache$Entry,com.bumptech.glide.disklrucache.DiskLruCache$1):759 ->
+ 1:9:void com.bumptech.glide.disklrucache.DiskLruCache$Editor.abort():842:842 -> abort
+ 1:4:void fullyDrawnReported():152:152 -> fullyDrawnReported
+ 5:6:void fullyDrawnReported():153:153 -> fullyDrawnReported
+ 7:10:void fullyDrawnReported():154:154 -> fullyDrawnReported
+ 11:26:void kotlin.collections.CollectionsKt___CollectionsKt.forEach(java.lang.Iterable,kotlin.jvm.functions.Function1):1855:1855 -> fullyDrawnReported
+ 11:26:void fullyDrawnReported():154 -> fullyDrawnReported
+ 27:32:void fullyDrawnReported():154:154 -> fullyDrawnReported
+ 33:39:void fullyDrawnReported():155:155 -> fullyDrawnReported
+ 40:43:void fullyDrawnReported():152:152 -> fullyDrawnReported
+ 1:5:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):799:799 -> getFile
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Ljava/io/File;"}
+ 6:9:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):800:800 -> getFile
+ 10:13:com.bumptech.glide.disklrucache.DiskLruCache$Editor com.bumptech.glide.disklrucache.DiskLruCache$Entry.access$800(com.bumptech.glide.disklrucache.DiskLruCache$Entry):855:855 -> getFile
+ 10:13:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):800 -> getFile
+ 14:18:boolean com.bumptech.glide.disklrucache.DiskLruCache$Entry.access$700(com.bumptech.glide.disklrucache.DiskLruCache$Entry):855:855 -> getFile
+ 14:18:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):803 -> getFile
+ 19:28:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):804:804 -> getFile
+ 29:30:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Entry.getDirtyFile(int):924:924 -> getFile
+ 29:30:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):806 -> getFile
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 31:32:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Entry.getDirtyFile(int):924:924 -> getFile
+ 31:32:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):806 -> getFile
+ 33:36:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):807:807 -> getFile
+ 37:38:java.io.File com.bumptech.glide.disklrucache.DiskLruCache.access$2000(com.bumptech.glide.disklrucache.DiskLruCache):90:90 -> getFile
+ 37:38:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):807 -> getFile
+ 39:41:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):807:807 -> getFile
+ 42:43:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):808:808 -> getFile
+ 44:49:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):801:801 -> getFile
+ 50:51:java.io.File com.bumptech.glide.disklrucache.DiskLruCache$Editor.getFile(int):809:809 -> getFile
+ 1:2:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():761:762 -> getTablesToSync
+ 3:5:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():762:762 -> getTablesToSync
+ 6:8:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():763:763 -> getTablesToSync
+ 9:12:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():765:765 -> getTablesToSync
+ 13:32:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():846:846 -> getTablesToSync
+ 33:40:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():767:767 -> getTablesToSync
+ 41:53:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():768:768 -> getTablesToSync
+ 54:59:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():770:770 -> getTablesToSync
+ 60:65:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():772:772 -> getTablesToSync
+ 66:67:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():774:774 -> getTablesToSync
+ 68:81:int[] androidx.room.InvalidationTracker$ObservedTableTracker.getTablesToSync():775:775 -> getTablesToSync
+ 6:6:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onAdded(int[]):710:710 -> onAdded
+ 7:13:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onAdded(int[]):841:841 -> onAdded
+ 14:22:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onAdded(int[]):712:712 -> onAdded
+ 23:31:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onAdded(int[]):713:713 -> onAdded
+ 32:39:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onAdded(int[]):715:715 -> onAdded
+ 40:43:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onAdded(int[]):710:710 -> onAdded
+ 6:6:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onRemoved(int[]):728:728 -> onRemoved
+ 7:13:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onRemoved(int[]):843:843 -> onRemoved
+ 14:23:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onRemoved(int[]):730:730 -> onRemoved
+ 24:30:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onRemoved(int[]):731:731 -> onRemoved
+ 31:38:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onRemoved(int[]):733:733 -> onRemoved
+ 39:42:boolean androidx.room.InvalidationTracker$ObservedTableTracker.onRemoved(int[]):728:728 -> onRemoved
+ 1:23:boolean com.bumptech.glide.manager.SingletonConnectivityReceiver$FrameworkConnectivityMonitorPostApi24.register():189:189 -> register
+ 24:38:boolean com.bumptech.glide.manager.SingletonConnectivityReceiver$FrameworkConnectivityMonitorPostApi24.register():191:191 -> register
+ 39:47:boolean com.bumptech.glide.manager.SingletonConnectivityReceiver$FrameworkConnectivityMonitorPostApi24.register():196:196 -> register
+ 48:53:boolean com.bumptech.glide.manager.SingletonConnectivityReceiver$FrameworkConnectivityMonitorPostApi24.register():197:197 -> register
+ 1:18:void com.bumptech.glide.manager.SingletonConnectivityReceiver$FrameworkConnectivityMonitorPostApi24.unregister():205:205 -> unregister
+androidx.activity.FullyDrawnReporterKt -> R8$$REMOVED$$CLASS$$5:
+# {"id":"sourceFile","fileName":"FullyDrawnReporter.kt"}
+androidx.activity.FullyDrawnReporterKt$reportWhenComplete$1 -> androidx.activity.FullyDrawnReporterKt$reportWhenComplete$1:
+# {"id":"sourceFile","fileName":"FullyDrawnReporter.kt"}
+ 9:16:java.lang.Object androidx.activity.FullyDrawnReporterKt.reportWhenComplete(androidx.activity.FullyDrawnReporter,kotlin.jvm.functions.Function1,kotlin.coroutines.Continuation):0:0 -> invokeSuspend
+ 9:16:java.lang.Object invokeSuspend(java.lang.Object):0 -> invokeSuspend
+ 17:19:java.lang.Object androidx.activity.FullyDrawnReporterKt.reportWhenComplete(androidx.activity.FullyDrawnReporter,kotlin.jvm.functions.Function1,kotlin.coroutines.Continuation):176:176 -> invokeSuspend
+ 17:19:java.lang.Object invokeSuspend(java.lang.Object):0 -> invokeSuspend
+ 20:21:java.lang.Object androidx.activity.FullyDrawnReporterKt.reportWhenComplete(androidx.activity.FullyDrawnReporter,kotlin.jvm.functions.Function1,kotlin.coroutines.Continuation):187:187 -> invokeSuspend
+ 20:21:java.lang.Object invokeSuspend(java.lang.Object):0 -> invokeSuspend
+ 22:32:java.lang.Object androidx.activity.FullyDrawnReporterKt.reportWhenComplete(androidx.activity.FullyDrawnReporter,kotlin.jvm.functions.Function1,kotlin.coroutines.Continuation):176:176 -> invokeSuspend
+ 22:32:java.lang.Object invokeSuspend(java.lang.Object):0 -> invokeSuspend
+ 33:33:void androidx.activity.FullyDrawnReporter.addReporter():93:93 -> invokeSuspend
+ 33:33:java.lang.Object androidx.activity.FullyDrawnReporterKt.reportWhenComplete(androidx.activity.FullyDrawnReporter,kotlin.jvm.functions.Function1,kotlin.coroutines.Continuation):180 -> invokeSuspend
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 33:33:java.lang.Object invokeSuspend(java.lang.Object):0 -> invokeSuspend
+androidx.activity.FullyDrawnReporterOwner -> androidx.activity.FullyDrawnReporterOwner:
+# {"id":"sourceFile","fileName":"FullyDrawnReporterOwner.kt"}
+androidx.activity.ImmLeaksCleaner -> androidx.activity.ImmLeaksCleaner:
+# {"id":"sourceFile","fileName":"ImmLeaksCleaner.java"}
+ android.app.Activity mActivity -> mActivity
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/ComponentActivity;"}
+ 1:5:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):52:52 -> onStateChanged
+ 6:10:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):55:55 -> onStateChanged
+ 11:15:void initializeReflectiveFields():103:103 -> onStateChanged
+ 11:15:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):56 -> onStateChanged
+ 16:23:void initializeReflectiveFields():104:104 -> onStateChanged
+ 16:23:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):56 -> onStateChanged
+ 24:26:void initializeReflectiveFields():105:105 -> onStateChanged
+ 24:26:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):56 -> onStateChanged
+ 27:34:void initializeReflectiveFields():106:106 -> onStateChanged
+ 27:34:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):56 -> onStateChanged
+ 35:37:void initializeReflectiveFields():107:107 -> onStateChanged
+ 35:37:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):56 -> onStateChanged
+ 38:45:void initializeReflectiveFields():108:108 -> onStateChanged
+ 38:45:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):56 -> onStateChanged
+ 46:48:void initializeReflectiveFields():109:109 -> onStateChanged
+ 46:48:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):56 -> onStateChanged
+ 49:52:void initializeReflectiveFields():110:110 -> onStateChanged
+ 49:52:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):56 -> onStateChanged
+ 53:56:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):58:58 -> onStateChanged
+ 57:60:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):59:59 -> onStateChanged
+ 61:66:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):60:60 -> onStateChanged
+ 67:75:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):63:63 -> onStateChanged
+ 76:76:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):70:70 -> onStateChanged
+ 77:86:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):73:73 -> onStateChanged
+ 87:90:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):80:80 -> onStateChanged
+ 91:96:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):82:82 -> onStateChanged
+ 97:98:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):83:83 -> onStateChanged
+ 99:104:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):88:88 -> onStateChanged
+ 105:105:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):92:92 -> onStateChanged
+ 106:109:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):95:95 -> onStateChanged
+ 110:111:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):90:90 -> onStateChanged
+ 112:113:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):77:77 -> onStateChanged
+ 114:115:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):75:75 -> onStateChanged
+ 116:118:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):92:92 -> onStateChanged
+androidx.activity.OnBackPressedCallback -> androidx.activity.OnBackPressedCallback:
+# {"id":"sourceFile","fileName":"OnBackPressedCallback.kt"}
+ kotlin.jvm.functions.Function0 enabledChangedCallback -> enabledChangedCallback
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Lkotlin/jvm/internal/FunctionReferenceImpl;"}
+ 1:3:void (boolean):41:41 ->
+ 4:5:boolean isEnabled():53:53 ->
+ 4:5:void (boolean):53 ->
+ 6:13:void (boolean):59:59 ->
+androidx.activity.OnBackPressedDispatcher -> androidx.activity.OnBackPressedDispatcher:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ 1:3:void access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63:63 ->
+ 1:3:void (java.lang.Runnable,androidx.core.util.Consumer):63 ->
+ 1:3:void (java.lang.Runnable):77 ->
+ 4:5:void (java.lang.Runnable,androidx.core.util.Consumer):64:64 ->
+ 4:5:void (java.lang.Runnable):77 ->
+ 6:12:void (java.lang.Runnable,androidx.core.util.Consumer):67:67 ->
+ 6:12:void (java.lang.Runnable):77 ->
+ 13:22:void (java.lang.Runnable,androidx.core.util.Consumer):125:125 ->
+ 13:22:void (java.lang.Runnable):77 ->
+ 23:49:void (java.lang.Runnable,androidx.core.util.Consumer):127:127 ->
+ 23:49:void (java.lang.Runnable):77 ->
+ 50:60:void (java.lang.Runnable,androidx.core.util.Consumer):134:134 ->
+ 50:60:void (java.lang.Runnable):77 ->
+ 61:63:void (java.lang.Runnable,androidx.core.util.Consumer):126:126 ->
+ 61:63:void (java.lang.Runnable):77 ->
+ 11:14:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):205:205 -> addCallback
+ 15:16:void updateBackInvokedCallbackState(boolean):98:98 -> addCallback
+ 15:16:androidx.lifecycle.Lifecycle$State androidx.lifecycle.LifecycleRegistry.getCurrentState():98 -> addCallback
+ 15:16:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):206 -> addCallback
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(2)"]}
+ 17:21:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):206:206 -> addCallback
+ 22:26:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):210:210 -> addCallback
+ 27:31:void updateBackInvokedCallbackState(boolean):107:107 -> addCallback
+ 27:31:void androidx.activity.OnBackPressedCallback.addCancellable(androidx.activity.Cancellable):107 -> addCallback
+ 27:31:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):209 -> addCallback
+ 32:34:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):212:212 -> addCallback
+ 35:36:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):213:213 -> addCallback
+ 37:49:void kotlin.jvm.internal.FunctionReferenceImpl.(int,java.lang.Object,java.lang.Class,java.lang.String,java.lang.String,int):29:29 -> addCallback
+ 37:49:void androidx.activity.OnBackPressedDispatcher$addCallback$1.(java.lang.Object):0 -> addCallback
+ 37:49:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):213 -> addCallback
+ 50:52:void androidx.activity.OnBackPressedCallback.setEnabledChangedCallback$activity_release(kotlin.jvm.functions.Function0):60:60 -> addCallback
+ 50:52:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):213 -> addCallback
+ 6:10:boolean kotlin.collections.ArrayDeque.add(java.lang.Object):179:179 -> addCancellableCallback$activity_release
+ 6:10:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):170 -> addCancellableCallback$activity_release
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/OnBackPressedCallback;)Landroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;"}
+ 11:15:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):171:171 -> addCancellableCallback$activity_release
+ 16:20:void updateBackInvokedCallbackState(boolean):107:107 -> addCancellableCallback$activity_release
+ 16:20:void androidx.activity.OnBackPressedCallback.addCancellable(androidx.activity.Cancellable):107 -> addCancellableCallback$activity_release
+ 16:20:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):172 -> addCancellableCallback$activity_release
+ 21:23:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):173:173 -> addCancellableCallback$activity_release
+ 24:25:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):174:174 -> addCancellableCallback$activity_release
+ 26:38:void kotlin.jvm.internal.FunctionReferenceImpl.(int,java.lang.Object,java.lang.Class,java.lang.String,java.lang.String,int):29:29 -> addCancellableCallback$activity_release
+ 26:38:void androidx.activity.OnBackPressedDispatcher$addCancellableCallback$1.(java.lang.Object):0 -> addCancellableCallback$activity_release
+ 26:38:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):174 -> addCancellableCallback$activity_release
+ 39:41:void androidx.activity.OnBackPressedCallback.setEnabledChangedCallback$activity_release(kotlin.jvm.functions.Function0):60:60 -> addCancellableCallback$activity_release
+ 39:41:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):174 -> addCancellableCallback$activity_release
+ 1:6:int kotlin.collections.AbstractMutableList.size():15:15 -> onBackPressed
+ 1:6:void onBackPressed():446 -> onBackPressed
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 7:10:java.lang.Object kotlin.collections.CollectionsKt___CollectionsKt.lastOrNull(java.util.List,kotlin.jvm.functions.Function1):533:533 -> onBackPressed
+ 7:10:void onBackPressed():271 -> onBackPressed
+ 11:17:java.lang.Object kotlin.collections.CollectionsKt___CollectionsKt.lastOrNull(java.util.List,kotlin.jvm.functions.Function1):534:534 -> onBackPressed
+ 11:17:void onBackPressed():271 -> onBackPressed
+ 18:21:java.lang.Object kotlin.collections.CollectionsKt___CollectionsKt.lastOrNull(java.util.List,kotlin.jvm.functions.Function1):535:535 -> onBackPressed
+ 18:21:void onBackPressed():271 -> onBackPressed
+ 22:24:java.lang.Object kotlin.collections.CollectionsKt___CollectionsKt.lastOrNull(java.util.List,kotlin.jvm.functions.Function1):536:536 -> onBackPressed
+ 22:24:void onBackPressed():271 -> onBackPressed
+ 25:30:boolean androidx.activity.OnBackPressedCallback.isEnabled():53:53 -> onBackPressed
+ 25:30:void onBackPressed():272 -> onBackPressed
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 31:32:void onBackPressed():271:271 -> onBackPressed
+ 33:36:void onBackPressed():274:274 -> onBackPressed
+ 37:40:void onBackPressed():276:276 -> onBackPressed
+ 41:46:void onBackPressed():279:279 -> onBackPressed
+ 1:2:void updateBackInvokedCallbackState(boolean):92:92 -> updateBackInvokedCallbackState
+ 3:8:void updateBackInvokedCallbackState(boolean):93:93 -> updateBackInvokedCallbackState
+ 9:17:void updateBackInvokedCallbackState(boolean):95:95 -> updateBackInvokedCallbackState
+ 18:21:void updateBackInvokedCallbackState(boolean):96:96 -> updateBackInvokedCallbackState
+ 22:26:void updateBackInvokedCallbackState(boolean):101:101 -> updateBackInvokedCallbackState
+ 27:30:void updateBackInvokedCallbackState(boolean):102:102 -> updateBackInvokedCallbackState
+ 31:33:void updateBackInvokedCallbackState(boolean):103:103 -> updateBackInvokedCallbackState
+ 34:36:void updateBackInvokedCallbackState(boolean):107:107 -> updateBackInvokedCallbackState
+ 1:2:void updateEnabledCallbacks():113:113 -> updateEnabledCallbacks
+ 3:16:boolean kotlin.collections.CollectionsKt___CollectionsKt.any(java.lang.Iterable,kotlin.jvm.functions.Function1):1747:1747 -> updateEnabledCallbacks
+ 3:16:void updateEnabledCallbacks():114 -> updateEnabledCallbacks
+ 17:32:boolean kotlin.collections.CollectionsKt___CollectionsKt.any(java.lang.Iterable,kotlin.jvm.functions.Function1):1748:1748 -> updateEnabledCallbacks
+ 17:32:void updateEnabledCallbacks():114 -> updateEnabledCallbacks
+ 33:37:boolean androidx.activity.OnBackPressedCallback.isEnabled():53:53 -> updateEnabledCallbacks
+ 33:37:void updateEnabledCallbacks():114 -> updateEnabledCallbacks
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 38:41:void updateEnabledCallbacks():115:115 -> updateEnabledCallbacks
+ 42:47:void updateEnabledCallbacks():118:118 -> updateEnabledCallbacks
+ 48:51:void updateEnabledCallbacks():119:119 -> updateEnabledCallbacks
+androidx.activity.OnBackPressedDispatcher$1 -> androidx.activity.OnBackPressedDispatcher$1:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ 1:2:java.lang.Object invoke(java.lang.Object):127:127 -> invoke
+ 3:7:void invoke(androidx.activity.BackEventCompat):0:0 -> invoke
+ 3:7:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 8:11:void androidx.activity.OnBackPressedDispatcher.onBackStarted(androidx.activity.BackEventCompat):434:434 -> invoke
+ 8:11:void androidx.activity.OnBackPressedDispatcher.access$onBackStarted(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 8:11:void invoke(androidx.activity.BackEventCompat):128 -> invoke
+ 8:11:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 12:15:int kotlin.collections.AbstractMutableList.size():15:15 -> invoke
+ 12:15:void androidx.activity.OnBackPressedDispatcher.onBackStarted(androidx.activity.BackEventCompat):434 -> invoke
+ 12:15:void androidx.activity.OnBackPressedDispatcher.access$onBackStarted(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 12:15:void invoke(androidx.activity.BackEventCompat):128 -> invoke
+ 12:15:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(4)"]}
+ 16:19:void androidx.activity.OnBackPressedDispatcher.onBackStarted(androidx.activity.BackEventCompat):434:434 -> invoke
+ 16:19:void androidx.activity.OnBackPressedDispatcher.access$onBackStarted(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 16:19:void invoke(androidx.activity.BackEventCompat):128 -> invoke
+ 16:19:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 20:25:void androidx.activity.OnBackPressedDispatcher.onBackStarted(androidx.activity.BackEventCompat):435:435 -> invoke
+ 20:25:void androidx.activity.OnBackPressedDispatcher.access$onBackStarted(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 20:25:void invoke(androidx.activity.BackEventCompat):128 -> invoke
+ 20:25:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 26:29:void androidx.activity.OnBackPressedDispatcher.onBackStarted(androidx.activity.BackEventCompat):436:436 -> invoke
+ 26:29:void androidx.activity.OnBackPressedDispatcher.access$onBackStarted(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 26:29:void invoke(androidx.activity.BackEventCompat):128 -> invoke
+ 26:29:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 30:32:void androidx.activity.OnBackPressedDispatcher.onBackStarted(androidx.activity.BackEventCompat):437:437 -> invoke
+ 30:32:void androidx.activity.OnBackPressedDispatcher.access$onBackStarted(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 30:32:void invoke(androidx.activity.BackEventCompat):128 -> invoke
+ 30:32:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 33:38:boolean androidx.activity.OnBackPressedCallback.isEnabled():53:53 -> invoke
+ 33:38:void androidx.activity.OnBackPressedDispatcher.onBackStarted(androidx.activity.BackEventCompat):234 -> invoke
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 33:38:void androidx.activity.OnBackPressedDispatcher.access$onBackStarted(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 33:38:void invoke(androidx.activity.BackEventCompat):128 -> invoke
+ 33:38:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 39:40:void androidx.activity.OnBackPressedDispatcher.onBackStarted(androidx.activity.BackEventCompat):233:233 -> invoke
+ 39:40:void androidx.activity.OnBackPressedDispatcher.access$onBackStarted(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 39:40:void invoke(androidx.activity.BackEventCompat):128 -> invoke
+ 39:40:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 41:42:void androidx.activity.OnBackPressedDispatcher.onBackStarted(androidx.activity.BackEventCompat):236:236 -> invoke
+ 41:42:void androidx.activity.OnBackPressedDispatcher.access$onBackStarted(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 41:42:void invoke(androidx.activity.BackEventCompat):128 -> invoke
+ 41:42:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 43:45:java.lang.Object invoke(java.lang.Object):127:127 -> invoke
+androidx.activity.OnBackPressedDispatcher$2 -> androidx.activity.OnBackPressedDispatcher$2:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ 1:2:java.lang.Object invoke(java.lang.Object):127:127 -> invoke
+ 3:7:void invoke(androidx.activity.BackEventCompat):0:0 -> invoke
+ 3:7:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 8:11:void androidx.activity.OnBackPressedDispatcher.onBackProgressed(androidx.activity.BackEventCompat):440:440 -> invoke
+ 8:11:void androidx.activity.OnBackPressedDispatcher.access$onBackProgressed(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 8:11:void invoke(androidx.activity.BackEventCompat):129 -> invoke
+ 8:11:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 12:15:int kotlin.collections.AbstractMutableList.size():15:15 -> invoke
+ 12:15:void androidx.activity.OnBackPressedDispatcher.onBackProgressed(androidx.activity.BackEventCompat):440 -> invoke
+ 12:15:void androidx.activity.OnBackPressedDispatcher.access$onBackProgressed(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 12:15:void invoke(androidx.activity.BackEventCompat):129 -> invoke
+ 12:15:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(4)"]}
+ 16:19:void androidx.activity.OnBackPressedDispatcher.onBackProgressed(androidx.activity.BackEventCompat):440:440 -> invoke
+ 16:19:void androidx.activity.OnBackPressedDispatcher.access$onBackProgressed(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 16:19:void invoke(androidx.activity.BackEventCompat):129 -> invoke
+ 16:19:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 20:25:void androidx.activity.OnBackPressedDispatcher.onBackProgressed(androidx.activity.BackEventCompat):441:441 -> invoke
+ 20:25:void androidx.activity.OnBackPressedDispatcher.access$onBackProgressed(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 20:25:void invoke(androidx.activity.BackEventCompat):129 -> invoke
+ 20:25:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 26:29:void androidx.activity.OnBackPressedDispatcher.onBackProgressed(androidx.activity.BackEventCompat):442:442 -> invoke
+ 26:29:void androidx.activity.OnBackPressedDispatcher.access$onBackProgressed(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 26:29:void invoke(androidx.activity.BackEventCompat):129 -> invoke
+ 26:29:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 30:32:void androidx.activity.OnBackPressedDispatcher.onBackProgressed(androidx.activity.BackEventCompat):443:443 -> invoke
+ 30:32:void androidx.activity.OnBackPressedDispatcher.access$onBackProgressed(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 30:32:void invoke(androidx.activity.BackEventCompat):129 -> invoke
+ 30:32:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 33:38:boolean androidx.activity.OnBackPressedCallback.isEnabled():53:53 -> invoke
+ 33:38:void androidx.activity.OnBackPressedDispatcher.onBackProgressed(androidx.activity.BackEventCompat):252 -> invoke
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 33:38:void androidx.activity.OnBackPressedDispatcher.access$onBackProgressed(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 33:38:void invoke(androidx.activity.BackEventCompat):129 -> invoke
+ 33:38:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 39:40:void androidx.activity.OnBackPressedDispatcher.onBackProgressed(androidx.activity.BackEventCompat):251:251 -> invoke
+ 39:40:void androidx.activity.OnBackPressedDispatcher.access$onBackProgressed(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> invoke
+ 39:40:void invoke(androidx.activity.BackEventCompat):129 -> invoke
+ 39:40:java.lang.Object invoke(java.lang.Object):127 -> invoke
+ 41:43:java.lang.Object invoke(java.lang.Object):127:127 -> invoke
+androidx.activity.OnBackPressedDispatcher$3 -> androidx.activity.OnBackPressedDispatcher$3:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ 1:5:void invoke():130:130 -> invoke
+ 1:5:java.lang.Object invoke():127 -> invoke
+ 6:8:java.lang.Object invoke():127:127 -> invoke
+androidx.activity.OnBackPressedDispatcher$4 -> androidx.activity.OnBackPressedDispatcher$4:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ 1:4:void androidx.activity.OnBackPressedDispatcher.onBackCancelled():452:452 -> invoke
+ 1:4:void androidx.activity.OnBackPressedDispatcher.access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63 -> invoke
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 1:4:void invoke():131 -> invoke
+ 1:4:java.lang.Object invoke():127 -> invoke
+ 5:8:int kotlin.collections.AbstractMutableList.size():15:15 -> invoke
+ 5:8:void androidx.activity.OnBackPressedDispatcher.onBackCancelled():452 -> invoke
+ 5:8:void androidx.activity.OnBackPressedDispatcher.access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63 -> invoke
+ 5:8:void invoke():131 -> invoke
+ 5:8:java.lang.Object invoke():127 -> invoke
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(4)"]}
+ 9:12:void androidx.activity.OnBackPressedDispatcher.onBackCancelled():452:452 -> invoke
+ 9:12:void androidx.activity.OnBackPressedDispatcher.access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63 -> invoke
+ 9:12:void invoke():131 -> invoke
+ 9:12:java.lang.Object invoke():127 -> invoke
+ 13:19:void androidx.activity.OnBackPressedDispatcher.onBackCancelled():453:453 -> invoke
+ 13:19:void androidx.activity.OnBackPressedDispatcher.access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63 -> invoke
+ 13:19:void invoke():131 -> invoke
+ 13:19:java.lang.Object invoke():127 -> invoke
+ 20:23:void androidx.activity.OnBackPressedDispatcher.onBackCancelled():454:454 -> invoke
+ 20:23:void androidx.activity.OnBackPressedDispatcher.access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63 -> invoke
+ 20:23:void invoke():131 -> invoke
+ 20:23:java.lang.Object invoke():127 -> invoke
+ 24:26:void androidx.activity.OnBackPressedDispatcher.onBackCancelled():455:455 -> invoke
+ 24:26:void androidx.activity.OnBackPressedDispatcher.access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63 -> invoke
+ 24:26:void invoke():131 -> invoke
+ 24:26:java.lang.Object invoke():127 -> invoke
+ 27:32:boolean androidx.activity.OnBackPressedCallback.isEnabled():53:53 -> invoke
+ 27:32:void androidx.activity.OnBackPressedDispatcher.onBackCancelled():291 -> invoke
+ # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
+ 27:32:void androidx.activity.OnBackPressedDispatcher.access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63 -> invoke
+ 27:32:void invoke():131 -> invoke
+ 27:32:java.lang.Object invoke():127 -> invoke
+ 33:34:void androidx.activity.OnBackPressedDispatcher.onBackCancelled():290:290 -> invoke
+ 33:34:void androidx.activity.OnBackPressedDispatcher.access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63 -> invoke
+ 33:34:void invoke():131 -> invoke
+ 33:34:java.lang.Object invoke():127 -> invoke
+ 35:36:void androidx.activity.OnBackPressedDispatcher.onBackCancelled():293:293 -> invoke
+ 35:36:void androidx.activity.OnBackPressedDispatcher.access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63 -> invoke
+ 35:36:void invoke():131 -> invoke
+ 35:36:java.lang.Object invoke():127 -> invoke
+ 37:39:java.lang.Object invoke():127:127 -> invoke
+androidx.activity.OnBackPressedDispatcher$5 -> androidx.activity.OnBackPressedDispatcher$5:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ 1:5:void invoke():134:134 -> invoke
+ 1:5:java.lang.Object invoke():134 -> invoke
+ 6:8:java.lang.Object invoke():134:134 -> invoke
+androidx.activity.OnBackPressedDispatcher$Api33Impl -> androidx.activity.OnBackPressedDispatcher$Api33Impl:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ 3:5:void ():347:347 ->
+ 3:5:void ():0 ->
+ 6:8:void ():0:0 ->
+ 6:12:android.window.OnBackInvokedCallback createOnBackInvokedCallback(kotlin.jvm.functions.Function0):369:369 -> createOnBackInvokedCallback
+ 11:12:void registerOnBackInvokedCallback(java.lang.Object,int,java.lang.Object):355:355 -> registerOnBackInvokedCallback
+ 13:14:void registerOnBackInvokedCallback(java.lang.Object,int,java.lang.Object):356:356 -> registerOnBackInvokedCallback
+ 15:18:void registerOnBackInvokedCallback(java.lang.Object,int,java.lang.Object):357:357 -> registerOnBackInvokedCallback
+ 11:12:void unregisterOnBackInvokedCallback(java.lang.Object,java.lang.Object):362:362 -> unregisterOnBackInvokedCallback
+ 13:14:void unregisterOnBackInvokedCallback(java.lang.Object,java.lang.Object):363:363 -> unregisterOnBackInvokedCallback
+ 15:18:void unregisterOnBackInvokedCallback(java.lang.Object,java.lang.Object):364:364 -> unregisterOnBackInvokedCallback
+androidx.activity.OnBackPressedDispatcher$Api34Impl -> androidx.activity.OnBackPressedDispatcher$Api34Impl:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ 3:5:void ():373:373 ->
+ 3:5:void