From 942742e86e928440eac2e8f76781e704385c6e97 Mon Sep 17 00:00:00 2001 From: meowarex Date: Mon, 25 May 2026 20:27:03 +1000 Subject: [PATCH] New Patch: Cover Everywhere - WIP --- Manager/META-INF/CERT.RSA | Bin 0 -> 1209 bytes Manager/META-INF/MANIFEST.MF | 1014 +++++++++++++++++ .../patcher/steps/patch/SmaliPatchStep.kt | 53 +- .../ui/screens/patchopts/KnownPatch.kt | 11 + Manager/app/src/main/res/values/strings.xml | 2 + patches/collection-backdrop.patch | 22 + patches/cover-capture.patch | 11 + patches/data.json | 2 +- patches/extension/radiant/HomeBackdrop.smali | 370 ++++++ .../extension/radiant/RLAPILyricsHook.smali | 2 + patches/home-backdrop.patch | 43 + 11 files changed, 1517 insertions(+), 13 deletions(-) create mode 100644 Manager/META-INF/CERT.RSA create mode 100644 Manager/META-INF/MANIFEST.MF create mode 100644 patches/collection-backdrop.patch create mode 100644 patches/cover-capture.patch create mode 100644 patches/extension/radiant/HomeBackdrop.smali create mode 100644 patches/home-backdrop.patch diff --git a/Manager/META-INF/CERT.RSA b/Manager/META-INF/CERT.RSA new file mode 100644 index 0000000000000000000000000000000000000000..d34f5a34ebad8392100bbb8383f2b76ff6db9756 GIT binary patch literal 1209 zcmXqLV%f^ZsnzDu_MMlJooPW6%QAx|mPJgAjE4LMylk8aZ61uN%q&cdtPBR+2!)Ib znwa?wnwYr_nixMXU}j=uV&d@Ou%8otzRv`t4Qe1GH&C0gA-4f18*?ZNn=n&ou%Vy< zKZwI6%;B4wU!GW$S^*PcMhF=wi1Qkm8JHRw7#bKE7#KxK@EaMJ8XFoIm_h}}Gq#CQ z3E6o-Uokf^@-qN^!Nt_X$jH!Nd`|yB`>L68Dt{Ze6?4NCAw zzUK7qf7iZFtvhf*{`SUHo<-6<2#D|jk|R4ve6s9ITYI#%rm;3#KqD@yHic}#7A~24Dfyl^Euz*Khxo;|mKKo+Vs12~aw=>cghq)gRv;ndp7&Xrq>e&r}xEJLyk7 zH=f;VwOc99^1I3Uqg$VbM&~pu$Dhzv;{ImmIq&t>d$CWNT^}i3GF|y{^{M_#-ETe! zp5k46&w+i7M#=v!KKIh*uWDa9rIskIIXOGr^pRNq1mT}7fzziiR#Ei7Q#_gV>xAUC z&v_9)nvXl)IdbCug?cuLMCYI8lfS4xj%|~cHs*ZrB=^NkHO5maEN276>KEKvuaI+; zdyYL*XZ&+(hq58uBCzHmP2?)@DXX6tKa)JIyq7gJ=KJXg!Gi7^Y9kkWv8$H1Pf zR2Uk>H4u7d$z@_j1UP`cL9i!{%=W8+b8oD3d${j-df-YQo29dY z)c0~-VZX@l>!Bme#(7R!_ub2hQQ>}Hj<35Rm2<7Pk4w?R_gr0Y?upNJ_1rGCXV@hK zrX_89(!QO+Ysc4X7p4Z(_}{-!bF<8mMc}~8OrI70YZm_dRBHX*pt_i`g12hb_VaO7 fN1~Kcj6-v`*~%;uz4_teoeQ_JeKJc_AFTxd$A{*@ literal 0 HcmV?d00001 diff --git a/Manager/META-INF/MANIFEST.MF b/Manager/META-INF/MANIFEST.MF new file mode 100644 index 0000000..0f749d3 --- /dev/null +++ b/Manager/META-INF/MANIFEST.MF @@ -0,0 +1,1014 @@ +Manifest-Version: 1.0 +Built-By: Signflinger +Created-By: Android Gradle 9.0.0 + +Name: AndroidManifest.xml +SHA-256-Digest: IiLvz2TM7pwLZBKZlNZFGTbYdaMt42gEUexjxqSO2fs= + +Name: META-INF/androidx/annotation/annotation/LICENSE.txt +SHA-256-Digest: gJ+h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA= + +Name: META-INF/androidx/collection/collection-ktx/LICENSE.txt +SHA-256-Digest: gJ+h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA= + +Name: META-INF/androidx/collection/collection/LICENSE.txt +SHA-256-Digest: gJ+h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA= + +Name: META-INF/androidx/lifecycle/lifecycle-common-java8/LICENSE.txt +SHA-256-Digest: gJ+h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA= + +Name: META-INF/androidx/lifecycle/lifecycle-common/LICENSE.txt +SHA-256-Digest: gJ+h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA= + +Name: META-INF/com/android/build/gradle/app-metadata.properties +SHA-256-Digest: 7kO0OrtT3GaVrMY9vcWm3KRuSyy4gkAR81Yj3dLt3Ls= + +Name: META-INF/native-image/okhttp/okhttp/native-image.properties +SHA-256-Digest: EotkddP73qmhoP5Es5JhP7GyamL9gWaIPTKxgJN0W2c= + +Name: META-INF/services/coil3.util.FetcherServiceLoaderTarget +SHA-256-Digest: 3YTR7nyfdzBk2UzhVv/iDmVwxbiHIoej2L9ESqmmQC4= + +Name: META-INF/services/io.ktor.serialization.kotlinx.KotlinxSerializa + tionExtensionProvider +SHA-256-Digest: IoyJ4jiDGnCRSsJzUCogfnrCtwP+yxSzPKoltPENM10= + +Name: META-INF/services/kotlinx.coroutines.CoroutineExceptionHandler +SHA-256-Digest: MSm47fbbB95vj/R2leIXfIu6Tu0pYtMIXHGeWsu1ijM= + +Name: META-INF/services/kotlinx.coroutines.internal.MainDispatcherFact + ory +SHA-256-Digest: oep36o+T9Bkla25m8pcT+VDY1ukEQrYI2ICkgAO163I= + +Name: META-INF/version-control-info.textproto +SHA-256-Digest: ONN3r6drY2Tlv1Uc9P/sGogaRhAqAEf1I/vxSODfaSg= + +Name: assets/PublicSuffixDatabase.list +SHA-256-Digest: x1q4J6/X//9ZpRsUcpwl2/w7RSN+tAzPAr7Ht9RDBKQ= + +Name: assets/dexopt/baseline.prof +SHA-256-Digest: BcEdrcpUqDGGgUfYTxuKgRHBd2LT3gHiz3cGcoPZl9A= + +Name: assets/dexopt/baseline.profm +SHA-256-Digest: lbyxhwgS9vy8el7CuosoW/3nEEC2jcGy6jKH9uo85jo= + +Name: classes.dex +SHA-256-Digest: MN2aXvy+/X6oLjkeJi59jZH8qHu0yVBPdrzwBadU+LI= + +Name: classes2.dex +SHA-256-Digest: NH7cGC5TslEeC2SO5aEn/vxrdJgoyxO3wohcRc2hLjg= + +Name: classes3.dex +SHA-256-Digest: VMqFwDOtZszes7M6LhOrr9oIQ2sTSpulq5eDJgwnX/A= + +Name: lib/arm64-v8a/libandroidx.graphics.path.so +SHA-256-Digest: Qemnk8Q6D0/dsZ4z80a6zkZPMPiIunuer5YpTqEVv7Y= + +Name: lib/arm64-v8a/libziprs.so +SHA-256-Digest: cUShKFZX1cutaB63LmpTVQuRl1P1ahODmySO/YwobVA= + +Name: lib/armeabi-v7a/libandroidx.graphics.path.so +SHA-256-Digest: QTmeum/Cpg9vFGQjdcGCTzzyXrj+xzl9dTcwo87aPis= + +Name: lib/armeabi-v7a/libziprs.so +SHA-256-Digest: IDRKRyCLNGVe11x9FU3d5daGEMYizJTLk/d2hbSh9us= + +Name: lib/x86_64/libandroidx.graphics.path.so +SHA-256-Digest: TlbJlvE2cOcAgmWN54gMQCDqv08l5DOH+I7XinE/yfA= + +Name: lib/x86_64/libziprs.so +SHA-256-Digest: 4yrLpNA0LV9Q0bgFvJ94O1Qvm7bj4svDnJY/voInLOs= + +Name: res/-B.png +SHA-256-Digest: Q8zx8KXp6e2abfM+Gz03jUnbyNxg2Dsc25heXkj1JJc= + +Name: res/-N.png +SHA-256-Digest: a0Wu+L9DdnwsHIPe4r2c65AXmU++9mE4kea8IV4qXuM= + +Name: res/0K.xml +SHA-256-Digest: i+S7MXjCCCdZdIQKFZ77J5jiFsv6DAgbsNjItJCmZTg= + +Name: res/0c.9.png +SHA-256-Digest: +U4hKRgMC6aSRDA3RAJFYDXc1rb/99BfbefiQZajrzU= + +Name: res/0k.xml +SHA-256-Digest: UqIjwA1CXY2LB9slierS1XQaES6w+Xh1S5GLmkIFgBE= + +Name: res/0x.9.png +SHA-256-Digest: Y21/JL5obpUV99aDDOk2uqClQWRoIg6U6OJXVHln4iw= + +Name: res/1I.9.png +SHA-256-Digest: 4aK4ZNARSoRxZi+OMP/Lsuuf/UFNNiOWEt74x3kqRQo= + +Name: res/1J.9.png +SHA-256-Digest: TS/kWoFp82gFLJISMKJoup9T6l/tvLCf81EHRzVR5Qw= + +Name: res/1e.9.png +SHA-256-Digest: SZAwc6sjq/wRpV4TM+spBcdD4bOCAGwnwVQ0/XbgIHw= + +Name: res/1e.xml +SHA-256-Digest: fGAgLvv3fLcv0PhsfNJxhpQsdvwzr9LgnJ7hTaTsbLI= + +Name: res/27.xml +SHA-256-Digest: HW14lQHwLJG8g5rkOXeJ+oiyVw1qMlCsSM49e2Zptes= + +Name: res/2D.xml +SHA-256-Digest: UhUuvVySFGRo1pNjjMhoaNf1u9DyC3GYEik7Z70Ux/E= + +Name: res/2P.png +SHA-256-Digest: ZGAhzHfn9L1oq1n7MtMG+BogQhJebNqhYYSgYqgYP3k= + +Name: res/2d.png +SHA-256-Digest: n4Vt0ApPKB0RmOZnmshhH8Z9MB8owHrql1BCRLoWy0Q= + +Name: res/2f.xml +SHA-256-Digest: kCx+m9pbDfYYpBVQ+0Y19ukhXkg5bf5OJqrmzEEu0es= + +Name: res/33.9.png +SHA-256-Digest: x5VOK/vQHlu8nXdN1NdD0/iiZhMSn6yAcbdBurMBirA= + +Name: res/42.9.png +SHA-256-Digest: cn14/sP5A6JxwEdqUOjAZNKLMveCmwFq4KB9pTuDsoE= + +Name: res/49.png +SHA-256-Digest: Ty+MKnsELlWqj0P0zoE0syF+6c2kMsX/jUwz0J2G32g= + +Name: res/4F.xml +SHA-256-Digest: nYto7CBUixllmj5zwaNFNewQnkRP4hV+gSM1Fcihq60= + +Name: res/4O.xml +SHA-256-Digest: VgTiYsbRCSBClsK3zVgbomZM6WolhCLdNTtcAVkBnsQ= + +Name: res/4Q.xml +SHA-256-Digest: pnAieIUsVVFCwF1to44ilHKfu1GJvALARY8lqpJzgM0= + +Name: res/4_.xml +SHA-256-Digest: tADo1/XVyJDuHv0Z/QVc3vkCMZOQqY5Dfv/7S71lvMw= + +Name: res/4k.png +SHA-256-Digest: DmMdv+JXXdFtP9bFlkHfpKu14WLWD1kEnkRZ8K8p+/Y= + +Name: res/4u.xml +SHA-256-Digest: j2U56tMMQdw78w4Zti9y0Gxn5ta0pOD1SUTiMZW9O+w= + +Name: res/5D.9.png +SHA-256-Digest: mR9zvmAK2IIaZ0PbVK9RP5sEcFjpUGbiL83R1yAyvFg= + +Name: res/5T.xml +SHA-256-Digest: 1jDoYRbPX1rmg473c2I4xJFocD2PNkmcFKtQXi1pQm8= + +Name: res/5U.png +SHA-256-Digest: pHVZSufHcQkqOicYmB4nEMc3hE9EpEAfctOVN1Nkmno= + +Name: res/5Z.xml +SHA-256-Digest: UQCHJvBgN0V3qpOI5f9nRClpFyl6dWtMisFvP75W1oc= + +Name: res/62.9.png +SHA-256-Digest: dlby8ZqEzvwr+fr8AHYCFnddMz/AsI64X/HgAGtG/CA= + +Name: res/6Q.xml +SHA-256-Digest: cu2/FVXpQhjl6mRrDl+szr/Penu4HeATtW0b8kV/cuo= + +Name: res/6S.xml +SHA-256-Digest: 7MBvD81TGXXH1IQTOxQR0trLt3b0+szgYUeEggXsjDU= + +Name: res/6t.png +SHA-256-Digest: XsoCgL04poh7bkF2XPXaVzEzh0YlAB65AVbq6zX74Ig= + +Name: res/7C.9.png +SHA-256-Digest: JVLNG83ZiC1sJYgz+3C8CBoxoqCT75wlb5JDE3Cm5d4= + +Name: res/7H.xml +SHA-256-Digest: 2//I7SpXqIy99zwELuybayUlC3x9UOhTf1ruLA5Z6Hw= + +Name: res/7I.9.png +SHA-256-Digest: sLLcLK54EcEkrlKNcUMYuxBDtZ2CpkDyLEes5kwoP+w= + +Name: res/7N.xml +SHA-256-Digest: SfTuAzo2i+YoZQGneGuxeDIBAJh/lZvDPJjn2h/IYfE= + +Name: res/7_.9.png +SHA-256-Digest: EAzGrjhw3XaaJS5EYIqBlWUi6GdnT4VGGbp8aNMUytc= + +Name: res/7i.png +SHA-256-Digest: UICwfrSGugXt5ze1Z+sruJ17eaPttcLKgUHG66ASt10= + +Name: res/7o.9.png +SHA-256-Digest: AH2/X6LcRmpJQLCmpz2rSMtyH2TTWPcf81qq25Ywtew= + +Name: res/80.xml +SHA-256-Digest: wtRYWzguzopUUUniZ38EHxEx5nOdx1RQiKoDByNpPq0= + +Name: res/8G.xml +SHA-256-Digest: d0bzL+Yf2X+eUGzWVd08/YHlMQDJUoGyEfWDNpJ3LhQ= + +Name: res/8O.der +SHA-256-Digest: jSXNlyKdv3A1a9pOs8xzQDHiTPAPr8/TLcdutYQcfqg= + +Name: res/8Q.xml +SHA-256-Digest: 9e6X9W83R45DZEIChFcaMxAEhXbwfv9peFZLFceY4+8= + +Name: res/8c.png +SHA-256-Digest: TfYA6Bjr9JR1wEHaDJeIZ7YvoeRGwqzUvwm431BTI24= + +Name: res/8h.png +SHA-256-Digest: UzQLCw9SmybbavYyoBEnCCM78xJEjFuJoTV7LNcLP0I= + +Name: res/8j.xml +SHA-256-Digest: yRC5r2g0u2HPaNY8W77zoVpBGbSnIA3tSbylDRdTkZI= + +Name: res/9N.9.png +SHA-256-Digest: DKrqAGCzdyukM8Dp46VFLybzQhulAjyFUVcnC8Z1swk= + +Name: res/9P.xml +SHA-256-Digest: BbW67c1Y/ZlfsBPyBnyH27X5SJ15NXI4KajfgD1Qdgk= + +Name: res/9T.xml +SHA-256-Digest: HQFRT6DQKIpHnffecz6XDg4N69yZfo1GcPz0dCGVU6A= + +Name: res/9T1.xml +SHA-256-Digest: Fv6veimFHbwZOoFO0wqS7Y7i0O1sv/Ooelv5Yn0HKno= + +Name: res/9T2.xml +SHA-256-Digest: BGP3qPMADBr4mqUips63/BiXYsih1LxvavgW7tz32dk= + +Name: res/9V.xml +SHA-256-Digest: XXmAxwYs+N1MeSy/Jo+UNOyNn23xYChAiwT1tY8CySI= + +Name: res/9X.9.png +SHA-256-Digest: lP6YJHFK2UwAL+YhnnI8DYDHy+OmEw16pJNzC2filNE= + +Name: res/9n.9.png +SHA-256-Digest: FBGuZdgWBXPBZtKlchBv0RA8EvJC9n/uxf6qVQGX5fU= + +Name: res/9w.png +SHA-256-Digest: Lfq07mqsiILS3i8qgg4xnmA//7Is0broD4a6rlddfi4= + +Name: res/9z.png +SHA-256-Digest: caK6Y6XU6R98FDJPocPrkpC3PLezx4KAGNBa2xz6q0U= + +Name: res/A4.xml +SHA-256-Digest: EXipiaQf1MGnnV+KiRBLagxgvpNQXmzOg1QM3s2IeBo= + +Name: res/A7.der +SHA-256-Digest: sIXXC5ZPGRpz5K8NVK56Dgeq/a+bcd0IYhOKtzJaJKI= + +Name: res/AA.xml +SHA-256-Digest: cWU+euyaktsllNA7lHDgG0bgeWj2bAe7b4OfMiXRPRE= + +Name: res/Av.xml +SHA-256-Digest: nM9fakHYr6XxlNYv8uuzQaEFIlK22VNVg5jCFCmyvdc= + +Name: res/B3.xml +SHA-256-Digest: tIhGC/jUUhtGuUxouZdyUN/+2Aiy5r82m3lu/lSDxBU= + +Name: res/BG.9.png +SHA-256-Digest: qmEinNcCOSeBCcXr5yXnJITQJS76SQKhcZI2aUJ0kok= + +Name: res/BJ.xml +SHA-256-Digest: 4Ootgip6kbY1FBl0F6TIRuj7WTOeTek51P5lSs9hbGo= + +Name: res/BL.9.png +SHA-256-Digest: 9lqH76L1PW/i2EjPyh9skK6l6fxn/0f1lJpt0qduvhs= + +Name: res/BM.png +SHA-256-Digest: Wmyh0NL+pTgT2ls8kDdAgIf591P1jdLhKKSkj3aJdp8= + +Name: res/BW.xml +SHA-256-Digest: ObPpFQcD/DznWpan3/jenmELzw0R+rIo4HnBhtuqJiI= + +Name: res/BW1.xml +SHA-256-Digest: i+S7MXjCCCdZdIQKFZ77J5jiFsv6DAgbsNjItJCmZTg= + +Name: res/BX.xml +SHA-256-Digest: 3aMeYTbnQRgr/4e+XO4S72CIR8VDDDDSDrsIe5PihYk= + +Name: res/Be.xml +SHA-256-Digest: tRrL7Slv1YhHh2EhAr3b2199QPhnhmjfCH1Nn9/VA7c= + +Name: res/CK.9.png +SHA-256-Digest: Zx0n5aS0IREXS4iNVxGOBQdaVW1wO9VPkzUgLSpBZ5E= + +Name: res/CN.xml +SHA-256-Digest: oG97vlfsk5rtLaj31B7h+Y5/1O6cHEuX8ILuoSS+HB4= + +Name: res/Cc.xml +SHA-256-Digest: dAhghVS07ZlY+KLAZBRFPKQxSKn/VRSoo8dhDhY5Bfk= + +Name: res/Cg.xml +SHA-256-Digest: Id91MW/AeaHgVqIVt8BaavIzkksk3qNiuvEQNY01mjg= + +Name: res/D5.xml +SHA-256-Digest: nWeZK0SjdtGNjpHhXKp5awvLdRooEBpZoe+7bt1DyEU= + +Name: res/D8.xml +SHA-256-Digest: MtMMa2LDzvUAgWY64NqJvuIZx20tkVxgmHyXiADy0Z4= + +Name: res/DL.9.png +SHA-256-Digest: JfJREsxGsoV2fee1sFjPwKnv1fIc/nJK8DFQXWap7Os= + +Name: res/DZ.xml +SHA-256-Digest: qNc0HCDQfJ/atgLnw5GHyau5yvX7+bKDLNbZ8YoshsI= + +Name: res/D_.9.png +SHA-256-Digest: n9N8gvh98ARkVUNE3d3qVeSA0JwztQWsEyUgNtTWJ24= + +Name: res/EA.9.png +SHA-256-Digest: oNY+x27CHUD+lqS2+09KrFthprY6Y0ctqwVeDZ6YkLE= + +Name: res/EP.png +SHA-256-Digest: U1hzfLaA6hzda6QA0zMW+r+HL9RPag4Se/yL3RYys3Q= + +Name: res/Ed.xml +SHA-256-Digest: e3sD+aJeaPkPLL6UizHEWgmawdj8Hrb5dVg6/yUIjRs= + +Name: res/Eg.xml +SHA-256-Digest: oQr2JTf4WalHEAqt8fVVEvdL9snPexcEj0ZD+USyejU= + +Name: res/FS.png +SHA-256-Digest: UxlV3DSNUM2K24W8uttOBguLfvEAQjX60nIGsgNZlgc= + +Name: res/FW.png +SHA-256-Digest: GGIMFRMwKJu6GWwcweJpn5gGGjW+NVGHYpaoxNWSuhc= + +Name: res/Fu.xml +SHA-256-Digest: x1yAeneK8pRZMHqRj22dcHQ4TOY/eMMaCYPrw4RS3nM= + +Name: res/G2.9.png +SHA-256-Digest: q5SvyyuzJVRMDBEDv1EJuCe/Bw9EH675CfhWrilaHPA= + +Name: res/GC.xml +SHA-256-Digest: FVuWavpodI0mh4eNftvsqljiAfKjlXOo3poUUh6kCS0= + +Name: res/GD.xml +SHA-256-Digest: MNVt6GZ+bN7vtI2aKgBLQFILzbxlp8DIQ2eQIuFxafs= + +Name: res/GK.xml +SHA-256-Digest: SlJ42w9+UNYqAOlU+v/+DMYlHTBc4C4MBUdg57XzK34= + +Name: res/GR.xml +SHA-256-Digest: KGFsdGznJDpnytndTWW5Qt712dupwq8YZBmVbeSn6BI= + +Name: res/Gc.png +SHA-256-Digest: FAiwUR3ptu4JXUdshsAesEdvO6cgn01K+7Z1nuMqCJQ= + +Name: res/Gf.png +SHA-256-Digest: Du2Z0KXjakaLVXYF5szqSVwCnzVphEpF9LXY2t131Kc= + +Name: res/Gt.9.png +SHA-256-Digest: 5+NsPLztyXvCiv+R7XLEMQsWwzFxOhaYppLGbUb2Mic= + +Name: res/H-.png +SHA-256-Digest: D9L1OUbrk7MVT0S9r8iJbqkxlaZM5fxkBJ6LcpPNaAE= + +Name: res/II.xml +SHA-256-Digest: ixpvFhe55YcIDKclXfM0bjVlhwmjmNcYaEeyeEP7CX8= + +Name: res/IR.xml +SHA-256-Digest: xGlfE3CCN4lwewgmITb0r5SF0xPVP88PpbVSjHDU330= + +Name: res/IX.9.png +SHA-256-Digest: H33Ys1ITU69HP0GFCIfpOFz2HDkMbjTk4r2ZGSHM/fg= + +Name: res/Ik.der +SHA-256-Digest: NNinPuII2bzbDZVlIJNLTkDmlIJZbotvc8hCawEKb0g= + +Name: res/In.xml +SHA-256-Digest: ckR9fh9Updg1oMU80cvrW4OSCwdoPIifHyDkPPLU5Ug= + +Name: res/It.xml +SHA-256-Digest: A4TMp6tyspvi1SY6PJWI+msc3GeCLOYn+3Hta1Scui4= + +Name: res/JJ.9.png +SHA-256-Digest: oEcINpq+CSDe0g2H1Yrr9pkuu2fv76JIqEIYle/FNT8= + +Name: res/Jl.xml +SHA-256-Digest: Pqck4RgyhkfW1Kg/7lFG2KLWgsmX49e3/ae8uNSQ2oA= + +Name: res/K5.xml +SHA-256-Digest: bAQhFXh+BZrSPDqUr6KkiiGRXJy8A4dm0YBYsBRzNl8= + +Name: res/KH.9.png +SHA-256-Digest: RoYHYBFAlVshxgkYl7/GX2CdOG+mjVbBmSAYleA7P7w= + +Name: res/KM.png +SHA-256-Digest: HjsC4k+kMbGr4Kl61nI/rUPfef2oF2wQYLb70xF4YZ8= + +Name: res/K_.9.png +SHA-256-Digest: +3HhHAkBM6l/6E+jt2omO0KckDLsRnhUsOMqMVel66U= + +Name: res/Ke.xml +SHA-256-Digest: juYVEA+/ui/QjNEcAB1GKgKv5scqY0EjKV+In3KH7q0= + +Name: res/L_.xml +SHA-256-Digest: e/ZkvpHpTwuaitF7yzHfBw2UwaHcYye5zIM9dQo095Q= + +Name: res/Lf.xml +SHA-256-Digest: GIQUuKY3c2d0Xdrce8IyazdtMxKprhjrJnnkxFbf9fY= + +Name: res/Li.9.png +SHA-256-Digest: qCUvUmOMgN8RnbAxYmGYpKjUsy7mGOlsOja5uUbiaJQ= + +Name: res/M7.xml +SHA-256-Digest: h2dbR54xcgotcnXxNXyHpdZrRbltrwI7ZL2eEnhTu7I= + +Name: res/MF.9.png +SHA-256-Digest: tK9z5SJmvlcMLBY9mH5kNIBm2zEbQeejggAFKcATbGs= + +Name: res/MQ.png +SHA-256-Digest: 2DVD8MgrYs9JnyYYrZlDH571DaYLQVmA7I4OULkOOJM= + +Name: res/NA.9.png +SHA-256-Digest: w2e3OjOpM0KeHVfTP8+/JD8CdOfNuiIaC5g+4VtbrKk= + +Name: res/NF.xml +SHA-256-Digest: CrO8grO5/YSZICyv49SUqfZvuiSNAekLkOkyyISZR8w= + +Name: res/NG.png +SHA-256-Digest: E20I+rD+QW/H4OypxJjmPGg1eyyqQkH0RLvD8m+adMk= + +Name: res/NM.xml +SHA-256-Digest: fW2rllLG0P4FeKGCuWEhXLiDCKnBxFxUqofSQTRpTUY= + +Name: res/NZ.9.png +SHA-256-Digest: d5omBqkxo5miydO9AfPFEMQS8pFkeKpofkMOYAOwpfM= + +Name: res/Nk.9.png +SHA-256-Digest: XHxoL/tk9LUx3g+VScDaEcM3V25CZhhSK/0dNaRRpBQ= + +Name: res/No.9.png +SHA-256-Digest: aCxGbT5POeMfEUq8FjLYXnNFV705gU47p9fGHq4tBps= + +Name: res/Nu.xml +SHA-256-Digest: KhKikZN5HTSbtRJFL1Tj1ndV3tZ5xHtLjhVA6IaV5y8= + +Name: res/Ny.ttf +SHA-256-Digest: slmG0Ycwlgx7JzhKsrxQCFauf+nnHJhQAZGV/5AZ8LI= + +Name: res/Ol.xml +SHA-256-Digest: 8sTN9lyqWYHFJRG8ofPlQTaV+CRFGD1qldDdgSDdahQ= + +Name: res/P4.xml +SHA-256-Digest: B6+1E8fAiH7viPXLh1ffLkklACb9zMm2TKuHSaQPYO0= + +Name: res/Pa.9.png +SHA-256-Digest: j89bnaA8aN/2Wt+ocT25zjteQjqfUEbxeFq2QMKmR/s= + +Name: res/Pb.png +SHA-256-Digest: aDaR157xHoY/5OyE3cYxaW5ZhLVYT8RUnWWG26yiIMc= + +Name: res/Pg.9.png +SHA-256-Digest: XUFhv5SCtdKiNGzT+ic57DID2ZW+usAuiacylDNou/w= + +Name: res/QJ.9.png +SHA-256-Digest: I0ObiJn0tj1orpOF6qSShqS5W5X3m4uNN947Dk/bx0c= + +Name: res/QZ.xml +SHA-256-Digest: mwrHkaP6lT4otSbgIP0uYptAgS7hvEaT/1/f7xUEQgI= + +Name: res/Qd.xml +SHA-256-Digest: o9v+TlywZ4j21Xvee5COwoVkMmG9IavxrnMY0qyhvDk= + +Name: res/Qr.xml +SHA-256-Digest: M08VbFNcdNTPoxnZ2MEK+7M/n1afL014VidfW0XmyvI= + +Name: res/Qt.xml +SHA-256-Digest: kJ9EaLc4I8tQBXCrRwZ6QbNzCqxzcpr9tz6jJdPdoEs= + +Name: res/Qv.xml +SHA-256-Digest: lYgT+DAOfOah0xUgfqbPsS8/2fJ/wigEuT0o9LON/P4= + +Name: res/Qz.xml +SHA-256-Digest: pxiEbpeAH0dbeIVVk7xPjk5YbC7u0aq8AsSvEN4+Sxw= + +Name: res/RJ.png +SHA-256-Digest: 9xbyPJeKF3+DEFcfAPBpjcn2RPuDFEiHArDH5H/Q+eU= + +Name: res/RV.png +SHA-256-Digest: dELNplOsus35rvJWqhkeXrtgcaF0cxKuxF4duCUqPPs= + +Name: res/SV.9.png +SHA-256-Digest: 28CvYfRAuz9TgrjqP6V4ZZ92x6au9iCmivxDqQny4OU= + +Name: res/SV.xml +SHA-256-Digest: +pg776eH5agsGVxlRF/yvmv/NJ6tGGSYQmTIwNL0rsY= + +Name: res/Sj.xml +SHA-256-Digest: UsdIVX2sTUjKnU6Kmh4nsKpzmndvHUsQFM7rgxN+TJw= + +Name: res/Su.9.png +SHA-256-Digest: S8j00T0qzMwTOPc/+QzZdpXZIQ4E3l2pJCFSQ8iVC/M= + +Name: res/TM.xml +SHA-256-Digest: gsjdJjIEeR1ATOGzNjpsAm7s94uLEiA9NQfn2U+gCWg= + +Name: res/Th.png +SHA-256-Digest: Aq0Opv9aVg6UdFLH1k9nmvogVrRPhuo7cHocsXXCzrA= + +Name: res/Tj.9.png +SHA-256-Digest: D6F9h1TW0WPMQz8IfK1sCDFzrIetcJfnaVCiXuxfPpA= + +Name: res/U8.xml +SHA-256-Digest: 5hjS/+llrkdfRiKBo0nAF3t2vJXB0LrCGTJYc6K1Gtc= + +Name: res/UE.9.png +SHA-256-Digest: hDZiQiD7okaugWo6qzed/X/ypIQoSrJMOvSYl3hwW7M= + +Name: res/UO.xml +SHA-256-Digest: aWXIcdxo4g/0FnIfZg831R2Ur0p6CnCoRw5Loh4xQGE= + +Name: res/UR.png +SHA-256-Digest: PP0FVIRIlrUAwzUTseie1iAo0MgN9z08WTVHn0lwSjw= + +Name: res/UX.xml +SHA-256-Digest: 12zIhfYyg+nw4dCDX8TvO8Odtag/XfaBEz9wHC02Cqc= + +Name: res/Uz.der +SHA-256-Digest: 2UdDKr3nt/qQ/C5rWRAbEoDg4cfk5A+jxoh//1en9M8= + +Name: res/V1.xml +SHA-256-Digest: swMzn7PPNVnp3dUjMWmOWCzrXzUJZj+rVTaPzCe9PPg= + +Name: res/V7.xml +SHA-256-Digest: 6rCxkzWElSwdxnN8uQlWdR5SSRkN1FCDez+x/NOyAxU= + +Name: res/VM.xml +SHA-256-Digest: CrO8grO5/YSZICyv49SUqfZvuiSNAekLkOkyyISZR8w= + +Name: res/VN.xml +SHA-256-Digest: n9ASsJakinjkapA+F4I+mkNoLEO671qdsYlRbA2FVVg= + +Name: res/VT.xml +SHA-256-Digest: 0ufnePUnX1KqNSg9VxuDfRODw0igdEDdPrVPafxQ47k= + +Name: res/Vy.xml +SHA-256-Digest: 4LvKZM9QJ51o/VVq+/k+KFtuGOefAu7zQpksb7Y4uUM= + +Name: res/Wh.png +SHA-256-Digest: I51gLJxl8Vb+AkYTIHlVrI+905WubsPvpRvpjjpEc/Q= + +Name: res/Wr.png +SHA-256-Digest: g6RieeL2XYUslFLIbjgybvnz3vb1vsLvFBbHKBWl+/o= + +Name: res/Wz.png +SHA-256-Digest: wTGrDi65h5vQY+c2q4ExPFpPR+qi9KDsnsqToaFQ7Xk= + +Name: res/X3.9.png +SHA-256-Digest: RMKXZrLYi3inE5Oz46dxyn7vX1UmMMYHTzPWKRJB0Lk= + +Name: res/X3.xml +SHA-256-Digest: DvYEo4npMW5VjuOYc8FE+xTA8QaGc7DezfZ4gJLkXQg= + +Name: res/X4.9.png +SHA-256-Digest: yNE+VoejTVuFAY/3qfDyKHCil7Jh/xQLPtBBzn5/S4E= + +Name: res/XK.xml +SHA-256-Digest: 5Jo9ZUn4/86e9nFqHc4Ab2R5fqrmC8CRsWxWDiDuWb0= + +Name: res/XW.xml +SHA-256-Digest: mwrHkaP6lT4otSbgIP0uYptAgS7hvEaT/1/f7xUEQgI= + +Name: res/XY.xml +SHA-256-Digest: XEBGynF7/4KlXT1NPl7oY1+63+ZKw1iqOW/UZkCF6mA= + +Name: res/Xx.xml +SHA-256-Digest: llq+VP1C2y7i6FS0KLC6F4DR1jQldDxk6n/Fz6YNfOA= + +Name: res/Y7.9.png +SHA-256-Digest: p3qqIH/VefZDgzI7k/BI7pQ040XKi7ZBdDp3kBtDg8I= + +Name: res/YG.9.png +SHA-256-Digest: Xj8T7oVPpBNUynN4NYuZ+OQfOxyZaMMTtjCwLehwTm4= + +Name: res/YW.xml +SHA-256-Digest: y0hkc7wPfWyQ3qVk/WG7YSSWNxtrC8q4K5WhDPcNtB4= + +Name: res/Yi.xml +SHA-256-Digest: wQ/6wiLY000PPeyHv+EJGIbORirWmMnVk24fJ2OcHmw= + +Name: res/Yw.9.png +SHA-256-Digest: qTOq676uSJ3qhOeOf7xAef39pXb73rM5QB/abNwD52Q= + +Name: res/Z8.png +SHA-256-Digest: r7yu3mapfdybVMTZiRwJQVy2lE15xMGuhEDNpVOWOVc= + +Name: res/ZC.der +SHA-256-Digest: aXKbjhWobvwXelevtxcd/GSt0owvyozxUH40RTzLFHA= + +Name: res/ZL.xml +SHA-256-Digest: hNvfeK2ZRyhm/X+fQER/yuN3wC4HgJNZh6lgvbbWnsw= + +Name: res/ZN.xml +SHA-256-Digest: 54+bSAPehrdceAFG/idIsYAzMo1kZlAuMSPtSBuwc4M= + +Name: res/Zg.xml +SHA-256-Digest: zv1O54HhRnz9EIGeVGOulAjZ8WFLbadgfXomPC3w/s8= + +Name: res/_o.xml +SHA-256-Digest: aLf8DoGcUmx+McFBOxghvAzPz0q1UMNWp/dAqdhJF9w= + +Name: res/_q.png +SHA-256-Digest: UlSajQtsNfryeV799rTF/iyzS36LEDnMp6onabbKs9A= + +Name: res/aF.xml +SHA-256-Digest: 0QMblRUxecAabbZYNj+bv8z4Kge/UVI4Vt8axwj3lNk= + +Name: res/aM.xml +SHA-256-Digest: zrkVeGTlzFYqIfHkZjE5JA1zKJ/FGjDJlqjC7o6J7F0= + +Name: res/aU.9.png +SHA-256-Digest: xjqU5xNs7u9DsK3otJ6OHvTRBg1YT2y5q1i31uqhYxI= + +Name: res/aW.xml +SHA-256-Digest: mwrHkaP6lT4otSbgIP0uYptAgS7hvEaT/1/f7xUEQgI= + +Name: res/ar.png +SHA-256-Digest: KZU72AGd2Wt3ATKbmiA8/2NGBRlUm5zKml63T5sbCTA= + +Name: res/bL.xml +SHA-256-Digest: fd5AWouHpFz+fbkf53+B4Tw09ucLvmpavBTzT3umw3Q= + +Name: res/bX.9.png +SHA-256-Digest: ovGjevjmmTIKL62+VO6qYRLVo1ItV9aC7fBP6XvjtH4= + +Name: res/bt.xml +SHA-256-Digest: rWBZncfx/Zh0/8w5Umf33n9kUsYE3K6FnYy/KAtcOWo= + +Name: res/c5.xml +SHA-256-Digest: aLf8DoGcUmx+McFBOxghvAzPz0q1UMNWp/dAqdhJF9w= + +Name: res/cL.xml +SHA-256-Digest: dPE5EMY0prRzDeT6mcWllc1JOd8CH755paT3P2CUVlo= + +Name: res/cm.xml +SHA-256-Digest: OBbIPULSPA3Ia5f4h7MVIAkYDEUs87vlGr1pkNRFKaU= + +Name: res/color-v23/abc_color_highlight_material.xml +SHA-256-Digest: kqsSAFdeh0l5iVoTs0glNBmj1NCavKScu/096LLYxSQ= + +Name: res/color-v23/abc_tint_btn_checkable.xml +SHA-256-Digest: eFCFh1Q5vKzt40EWDxMm52XRUxEWNlCI4El5VUhfi9Y= + +Name: res/color-v23/abc_tint_default.xml +SHA-256-Digest: bYKCHc0Bj6hy/jh5JL42xUvfn5kwL+gjDAl3xDoysco= + +Name: res/color-v23/abc_tint_edittext.xml +SHA-256-Digest: 2W5VsZZankAOxznCnBtq3ZXTw/f51FRsvFFfqIUv+QM= + +Name: res/color-v23/abc_tint_seek_thumb.xml +SHA-256-Digest: spWuEAM0DJAef/eKekIi+jdQ29mYn4oFrIkNxhdvx6U= + +Name: res/color-v23/abc_tint_spinner.xml +SHA-256-Digest: 2W5VsZZankAOxznCnBtq3ZXTw/f51FRsvFFfqIUv+QM= + +Name: res/color-v23/abc_tint_switch_track.xml +SHA-256-Digest: iJqC3luX8zIPQ421kVTgdw4AxeMdJ5As+LpMkkf9sBk= + +Name: res/color/abc_hint_foreground_material_dark.xml +SHA-256-Digest: lSqow+CLZmuLZF1YZZaEF/KhMjtyFDrknIaC1Bd66rg= + +Name: res/color/abc_hint_foreground_material_light.xml +SHA-256-Digest: WlIVmauU4tf5OJB2XM2LlV5IwQuX/JWCI0VlghSx99w= + +Name: res/color/abc_primary_text_material_dark.xml +SHA-256-Digest: OZf6TN8RLteJ4bOJdMnp2BmJzqJ14SA2P9F3o02yc1E= + +Name: res/color/abc_search_url_text.xml +SHA-256-Digest: HkFx7f4YdepIh/y7jQTHi3LeQhszZ9+PcV5JQbpfG5Q= + +Name: res/color/switch_thumb_material_dark.xml +SHA-256-Digest: nUNhCdo9WWBD0uiY34S2+X8PP1U69aHUMnevoxN8oRk= + +Name: res/d3.png +SHA-256-Digest: L6UkzaeNfr1mFkqJagQid7ela4ZY+zGPxwChFMsE97I= + +Name: res/d5.9.png +SHA-256-Digest: u0sJKuacQp6dT3/5fGC6EMLkQ6Kwyhmp9sd4VL8y4pM= + +Name: res/dO.xml +SHA-256-Digest: luyd9YDTuZ8WsxcYBf3NF/kvVT1MTlUuv5+JMhKgVt8= + +Name: res/dW.png +SHA-256-Digest: QTODD0P5uqCw7TzIDXmLIAcdqfUf4S72sL0Jq8jV0zo= + +Name: res/dY.png +SHA-256-Digest: XO0qt3SFMFAlXXMJ4Qt2IXgT1W8/irj7c6w/Y12QxnY= + +Name: res/eA.xml +SHA-256-Digest: dd8hfVSHwuhOEpOOmwrXGn+hGYNUJGFuh8FGeHDKkn8= + +Name: res/eR.png +SHA-256-Digest: yIJc1jflmgJQDYt1GFYvDJG+8u3Zcbo+WtD0FnlNYY4= + +Name: res/eT.9.png +SHA-256-Digest: gFApeTAt7nNT9HX1WMSXrmaX93GBpR98yAtA1ywuDEw= + +Name: res/ee.xml +SHA-256-Digest: ByJ8h2lOtRYjAFiw1SbjhMtcnf7XIPAzibItr74OyPI= + +Name: res/ej.9.png +SHA-256-Digest: N4aUcG+3JW3SJI4q+FTv1x7H6IhfYdouFqK9Mvzz0Kk= + +Name: res/es.xml +SHA-256-Digest: sPdLTtg5gUHT+8M9tP//Mn4lyH1HgTbBRJ+U53AWLz4= + +Name: res/ev.9.png +SHA-256-Digest: icKOiHsNYMAbNdzSvmVPQWv/tm6FZXFtyYPjsCBJZ+g= + +Name: res/fM.9.png +SHA-256-Digest: tSIoo1Ug4teG6WLoUBP+f3yX/7Qmd/O9q8Ay+7cJlSo= + +Name: res/fO.png +SHA-256-Digest: YZO0tUugP6Ju/9SAMIOSuH+FqkoPsWDZNY9ZtGLSmNc= + +Name: res/fp.xml +SHA-256-Digest: E2Sqp18hEMcchN/K68OwtwEjA/h/roIaYg/9sH6n2DE= + +Name: res/g-.png +SHA-256-Digest: Pbutkm1UBYbWvRIw8ykxCHdMlec/ZgTwu/iMOhFTAiM= + +Name: res/gZ.9.png +SHA-256-Digest: vYk3g8jSvrsWesBaJ82upd/WUf6NZLyzDBTnuSU4DHk= + +Name: res/gj.9.png +SHA-256-Digest: 1o0Dln+yIvfjV3Ki4GN/c7TdDWy7nuPytEMtL5DCV9s= + +Name: res/gt.9.png +SHA-256-Digest: mhpIA4qNHcBBA1tJzHMtsj4AjRJsiy5oB0ndKWFqN7M= + +Name: res/h4.xml +SHA-256-Digest: NWDFwJkHhZ5lcO6ie8vH9Ve9if+9Fq9F9pE8wEbGKNE= + +Name: res/h7.9.png +SHA-256-Digest: n4SbzXiK3Osy9MGlqoknSb0eJEo3h7+/vTDTtvXY6ds= + +Name: res/hP.xml +SHA-256-Digest: 1v9qzAwDdkeAT/nCU13BqtvpfPghc8smE2Vq4gJQ0bA= + +Name: res/hP1.xml +SHA-256-Digest: CXjkAuP48SM0F8A6sGmX7VcEqp5uVix+cCkFhxuCARs= + +Name: res/hZ.9.png +SHA-256-Digest: N4aUcG+3JW3SJI4q+FTv1x7H6IhfYdouFqK9Mvzz0Kk= + +Name: res/hh.9.png +SHA-256-Digest: 1cZEsA7nm9Tx/LeJ67+J55wMb+qHjfvEqMZMO+NLWwM= + +Name: res/hq.xml +SHA-256-Digest: srjqtXA1dhCnMyLnd5FJNqHrY5mt4wkGeD6uGg1jJWQ= + +Name: res/i6.9.png +SHA-256-Digest: 9i16ofkpcwKkMzKlmDR1XtvTo4ZwuMUjYUrhNmtflH8= + +Name: res/iH.xml +SHA-256-Digest: dmVh2MRkcLA5sG16lgGc/YTSoOewW3QCGstigQH0FVI= + +Name: res/iO.png +SHA-256-Digest: uEoneAf487tTeOY1PZnRNEruEL2aBfR8MK/jgy2cp/A= + +Name: res/iR.9.png +SHA-256-Digest: Lj1wIwl3rzfG13OYmac+Y5N+69/m2ALxqVfEPC8qsTE= + +Name: res/io.9.png +SHA-256-Digest: FBdXQTTF6TIcCxj+pxGghEjM9JlX9V4Qztr7EyN1EPc= + +Name: res/j3.xml +SHA-256-Digest: a+EedRNpXxCf67mq7B6aqrmb4yZHidiL6rgfZOl1GQQ= + +Name: res/j4.png +SHA-256-Digest: YALrVng7lWtfkebd/682zIZ0AqAaIl5ie0wlyNIaTiM= + +Name: res/jS.9.png +SHA-256-Digest: /XGeSXqvCRwxZstRv0QEykvDtlRd+++/qgzzHweQt9E= + +Name: res/jS1.9.png +SHA-256-Digest: N4aUcG+3JW3SJI4q+FTv1x7H6IhfYdouFqK9Mvzz0Kk= + +Name: res/jW.png +SHA-256-Digest: JPXbIm8c1W5ed1+Cw39l89HuyQkbJrdIYWKcrwAZw70= + +Name: res/ju.der +SHA-256-Digest: NJ36QFjF4mMSOzmK55VXPE4TE8g/5o+TVWzV6AMbPH0= + +Name: res/kJ.9.png +SHA-256-Digest: wPkwpyKhbfmGkjv0GQgdEJD5R2pyh8i2Vas2/8CAZMs= + +Name: res/k_.xml +SHA-256-Digest: mt7Zf3HH6jb4aeNyukR+qH6qYTenkyDStzn9tDHoPdE= + +Name: res/kj.xml +SHA-256-Digest: g2OTeGlCBs5Q5fxfrO9jxrZDIaEjGx8b0m2Odtc/bkM= + +Name: res/kn.xml +SHA-256-Digest: n/OcwpKr2DEvS2qgRbohP4ZXR4MLMdnQfpXYzmK4dPY= + +Name: res/kp.png +SHA-256-Digest: 9fNJwelJ8OZjdPg7Zn/A0PR3N5YU82kSreIqKZ8hlNU= + +Name: res/lN.xml +SHA-256-Digest: qNc0HCDQfJ/atgLnw5GHyau5yvX7+bKDLNbZ8YoshsI= + +Name: res/lP.9.png +SHA-256-Digest: uLJnCNcbTHpc9TEavN+nQf7jnJ9eE4PUnKDGd/zbA80= + +Name: res/ly.png +SHA-256-Digest: 3AivnRTmtnO/nzHCSCNvBFezIkZANmR0c+OjKiN3Pw4= + +Name: res/m0.png +SHA-256-Digest: d3oc9TggqkZyZ9H2Tl+SNlb5MEcDjqY3W8ziV7UXkw4= + +Name: res/mG.der +SHA-256-Digest: lrzsBiZJdvN0YHeazyjFp8/oo8Cq4RqP/O4FwL3fCMY= + +Name: res/mm.9.png +SHA-256-Digest: 1NKw27A58cY5UYOr6UWzlHCtmop7aApA+nkN9sZFu0M= + +Name: res/nI.9.png +SHA-256-Digest: xWq5N1sUm6HF7iaPIrPPZQe7R5hvYoORUA+6OBR9qyg= + +Name: res/nT.xml +SHA-256-Digest: nZjLDWOgYzR1e2eKHpvVdmURtptWMd5y8U0xr3TAOJE= + +Name: res/nf.png +SHA-256-Digest: XgeZoNC11D7Vrjo3iqoIR6gQzu/1jbmg94Nuv07xcUY= + +Name: res/o-.png +SHA-256-Digest: CEg9lidNJk4Zq3zOmyWWioHrYBsBvuud3g0DJevVDPg= + +Name: res/o9.9.png +SHA-256-Digest: lK4ic6M1ZywcZ5iOevWV1C6AUm7bf1ZU7hMNzgb9QNc= + +Name: res/oI.xml +SHA-256-Digest: wRd+g2VP6V/FQpjQUSvCKUM6KDeLNGxN1TBh1b9LYtk= + +Name: res/oP.xml +SHA-256-Digest: jWX63ADAgA4WCUCRuymouQilEMfVUTJDVuKIEeerIvI= + +Name: res/o_.png +SHA-256-Digest: 0ZCSJUqkEz+6i3eV+121YK1dzRbG95IBvsMbDx6bYIs= + +Name: res/op.9.png +SHA-256-Digest: +BQSxRMQRqg/XZ3h0Q4rSzH24mV8TAh0OCXNQPYF/dM= + +Name: res/pN.xml +SHA-256-Digest: 82XR8Y2s2J7MODAkJs3u4PIrnEtjGQZVXxxrWzioQKE= + +Name: res/pR.xml +SHA-256-Digest: KUcnMc8eGAGxJBv08C70dif9w39klFSLzDB8yI0ewTw= + +Name: res/pk.png +SHA-256-Digest: sKoBDnqIXkt6ZpwWx7oQ/NhioS3/PxQsc1R3hEKmP94= + +Name: res/ps.9.png +SHA-256-Digest: uAD6x9Lwp1sX+tcAlwfqSRNJGeSJhOiYFanSTA+nBNg= + +Name: res/py.9.png +SHA-256-Digest: oVFx6tSxzZuAxYuTwO+0U7DPiJtxTMhZ7iybk39LN9A= + +Name: res/q1.xml +SHA-256-Digest: YNmjt3TpF5kJjaHPK/V+8FomSGAojk7nI00eRiNuljk= + +Name: res/qD.9.png +SHA-256-Digest: H5U4dFz9MgnMCe1FHBmDAqrDocXaQehzlDd4FLG8xe4= + +Name: res/qh.xml +SHA-256-Digest: uhGGpRbgRBB6M3rVGzhyF8PcMn3T46V+EJ+un8kYJzA= + +Name: res/qp.png +SHA-256-Digest: YVFFDs46uWZyE8OYe22P/6Jbr5/0PVO82clP2Op2FtA= + +Name: res/qx.xml +SHA-256-Digest: c48go/g9WpD1pqSekWZX5ltbuFfXJgv+SppdDz5idYE= + +Name: res/qz.xml +SHA-256-Digest: k1Nb/mGQ84B0vsYZa3E05x4BRvwQFEZ9LgmJyfp0xns= + +Name: res/rW.xml +SHA-256-Digest: LIpQXng2h2qA528xPanRrKuNa3zxaM8cFeS1kp7RVTI= + +Name: res/rj.9.png +SHA-256-Digest: AKGsdNgWTLXEdJoLLnfixtpKkKvoc9hgTymEHBk1fGY= + +Name: res/rx.xml +SHA-256-Digest: M55JmB2yRwh1fE2K0z0fX6Rl6LMTZO/qqdomiLLOAtg= + +Name: res/s0.png +SHA-256-Digest: Y/rQoZy55BZYYEnUC2IWGwzEwlE9g5MdOFLi9acubRM= + +Name: res/s3.9.png +SHA-256-Digest: jGhG9BBe8cAhB+hCFC6c5gsIgZKW6VELLQwSz0VgxeE= + +Name: res/s9.xml +SHA-256-Digest: ey71eqYIoJDkrrNEGLHX1hNFMNQBKsDJAzHfHZ5jcOc= + +Name: res/sA.xml +SHA-256-Digest: l8YBYfjpOWpw6ZP/u75qnXCWtitjnQA5LpufPbzAcqI= + +Name: res/sg.9.png +SHA-256-Digest: Z+cBR2knB42Jqwu7Of/xLWlwJZKnpCgjeiEWiiHsEDg= + +Name: res/sn.xml +SHA-256-Digest: gjfUe6/DurkJi9k0SxLcbIf92Hmk4fAchWQAxZXymPA= + +Name: res/t8.xml +SHA-256-Digest: niPbSlyZ4UZx4Wq9B3IhCOckVYv6Z7C0LsVC/3k2hKo= + +Name: res/tG.png +SHA-256-Digest: UqA1jlRDk3PKOfmc2Dzzp75zwlfwf66D7dg8m0iRiV0= + +Name: res/tL.xml +SHA-256-Digest: tqXza20bZxrPXXjFTqfpSJqSmB+DXsKj+jO5jpFtzF0= + +Name: res/tS.png +SHA-256-Digest: yvHkc99nAsKmqV1zjx1vK3MZZ2a1BOX/Mzs8jnR+BHs= + +Name: res/tZ.9.png +SHA-256-Digest: ayNytBSrwc/P1xyY9RkBqExGxbcSBGquAZthEN4mUXU= + +Name: res/te.png +SHA-256-Digest: SYsMvQm2tP7tisqe130jX1uycsU9IbMyZJoA6ULZido= + +Name: res/u0.xml +SHA-256-Digest: jRsGSjjYb82oFdQ60MBuQkb4jFyvf7VYoTroVBzaSow= + +Name: res/u3.png +SHA-256-Digest: Vbwndy9tNb6TNPuAw3GzJ9sl+qmmCYw8FASekmVKwb8= + +Name: res/uL.9.png +SHA-256-Digest: AG8twlusw55za8cg4mplRd90J7bBA7Ldd8Hrhyw/MwY= + +Name: res/uj.9.png +SHA-256-Digest: yG2TSlgJ8yWZ5CFD4wbtbgZrIk/h+j8yreFgMHTlsTY= + +Name: res/ut.9.png +SHA-256-Digest: Viy6GtG5q9UC2pwD9MELsr1ygCLFRvGAWTGfKtKTKA4= + +Name: res/uu.9.png +SHA-256-Digest: NjPsmdZqrkMy+aay29NIBRNDMAGo7sDnltK8tp11tz8= + +Name: res/v4.9.png +SHA-256-Digest: p1I8zwN/fDHPh6GG/uy5E575LYfgcCyrsIoxkUsrUD4= + +Name: res/vY.xml +SHA-256-Digest: lVugqJ4vhXAzgKagEm/+X7YDMIZK5K7iXUWSTFK6juE= + +Name: res/vq.xml +SHA-256-Digest: zquYpznCufQs3Fvtd0n0JcfTVN+SypN25Xa2gXmaJB0= + +Name: res/vz.9.png +SHA-256-Digest: +lAWK9s1Aca1DPo2wU2rnJTkjVf1WGB+yYWBJNcEEvk= + +Name: res/wL.9.png +SHA-256-Digest: jD3lOJpP7fI7Hv3xx3N8p+tE84HCI2kVPfqXJhOkxEg= + +Name: res/w_.png +SHA-256-Digest: BV1fh7G7tmdwlrx+t+rOV+QCFsuX8rK5JtJsEmP5q84= + +Name: res/wb.png +SHA-256-Digest: as4/SBilq02Np2Sj4gxxUsOBJSQWrVVTF4ov6+YpOZs= + +Name: res/xH.png +SHA-256-Digest: fIRytyRBzCihrFOgi08MFPMQrzOBdbpsRv1jQqyM4v8= + +Name: res/xR.9.png +SHA-256-Digest: mpyUDqEz9+CsjbbwbhPoUlCGM8IfjHHyl0gxZaBtkus= + +Name: res/xj.xml +SHA-256-Digest: AIq5nsVZHPbjepgm7pRRVmui4+iCGQXwF1BsNMAtx6o= + +Name: res/xp.xml +SHA-256-Digest: L58q1Vb/eTg0+Wz5Ai8DRAmXYffkUeoy9lgjIfiWHaE= + +Name: res/yH.9.png +SHA-256-Digest: WulZQkCtpeU1AOJSQhWz4rPJHm3ZWwXgrN0n2djFfnI= + +Name: res/yY.9.png +SHA-256-Digest: 8jJxTMvsypetxjsIEdYmKQV8d9y9CwYsguJnVMt0SDE= + +Name: res/yg.9.png +SHA-256-Digest: Ykd63HTU5oNuPA5LUzfDfXSMs/lAM/QsYpk47xjTi0E= + +Name: res/yn.png +SHA-256-Digest: o3hOCekPpzt/F1vDbg28YnKMwE3PthukuNnwgKu8SPQ= + +Name: res/yw.xml +SHA-256-Digest: UxYjgwmJdAq3IB+lChHIiw7oiHsZrQxfMXB5/2wPqEs= + +Name: res/z9.9.png +SHA-256-Digest: d/DrqyQWQE6x1WI0LkMVQdiFaG3R5J1tyTvhqGwic8Q= + +Name: res/zE.png +SHA-256-Digest: pUdDH+vxCMz6lYiribEHjjh7s1HrVNdyOUMyGH93C3Q= + +Name: res/zR.png +SHA-256-Digest: Z2iw1gQNChHxjGPKBuj1ETaakZYEacCUTFF2zeAioCw= + +Name: res/zV.9.png +SHA-256-Digest: D422BdY78dbTX9ZH1ZKsTnDJpxL/XRwhFMjVioi4Ioo= + +Name: res/zz.xml +SHA-256-Digest: 6qHUsMyWOgI626ejo4dpjKQgLAUcpoWK9fSzxncYuqg= + +Name: resources.arsc +SHA-256-Digest: GxocxHQtFbXzrUh1d0SFWRag91R63jVAQCAyregksh0= + diff --git a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/patcher/steps/patch/SmaliPatchStep.kt b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/patcher/steps/patch/SmaliPatchStep.kt index 80a94fe..d78f9d3 100644 --- a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/patcher/steps/patch/SmaliPatchStep.kt +++ b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/patcher/steps/patch/SmaliPatchStep.kt @@ -92,18 +92,25 @@ class SmaliPatchStep( container.log("Recorded rl-locals bump: $smaliPath method≈\"$methodSubstring\" >= $newValue") } - val targetLine = lines.firstOrNull { it.startsWith("--- a/") } - ?: throw Error("Patch $patchFile is missing a '--- a/...' header") - val fullClassName = targetLine - .removePrefix("--- a/") - .removeSuffix(".smali") - .trim() - val patch = LoadedPatch( - fullClassName = fullClassName, - patch = UnifiedDiffUtils.parseUnifiedDiff(lines), - ) - patches.add(patch) - container.log("Loaded patch file $patchFile for class ${patch.fullClassName}") + // Split into per-target sections — a single .patch may contain multiple + // `--- a/...` blocks targeting different classes. + val sections = splitMultiTargetPatch(lines) + if (sections.isEmpty()) { + throw Error("Patch $patchFile is missing a '--- a/...' header") + } + for (section in sections) { + val targetLine = section.first { it.startsWith("--- a/") } + val fullClassName = targetLine + .removePrefix("--- a/") + .removeSuffix(".smali") + .trim() + val patch = LoadedPatch( + fullClassName = fullClassName, + patch = UnifiedDiffUtils.parseUnifiedDiff(section), + ) + patches.add(patch) + container.log("Loaded patch file $patchFile for class ${patch.fullClassName}") + } } catch (t: Throwable) { throw Error("Failed to parse patch file $patchFile", t) } @@ -314,6 +321,28 @@ class SmaliPatchStep( private companion object { val LOCALS_DIRECTIVE = Regex("""^#\s*rl-locals:\s+(\S+)\s+(\S+)\s+(\d+)\s*$""") } + + /** + * Splits a unified diff into per-target sections. A single `.patch` file may bundle + * multiple file diffs (each starting with `--- a/...`); each section becomes its own + * patch with its own target class. The header lines before the first `--- a/` (and + * any `# rl-locals:` directives) are preserved by being copied into every section so + * that `UnifiedDiffUtils.parseUnifiedDiff` can still parse the section in isolation. + */ + private fun splitMultiTargetPatch(lines: List): List> { + val headerEnd = lines.indexOfFirst { it.startsWith("--- a/") } + if (headerEnd < 0) return emptyList() + val header = lines.subList(0, headerEnd) + + val sectionStarts = lines.withIndex() + .filter { (_, line) -> line.startsWith("--- a/") } + .map { it.index } + + return sectionStarts.mapIndexed { i, start -> + val end = sectionStarts.getOrNull(i + 1) ?: lines.size + header + lines.subList(start, end) + } + } } private data class LoadedPatch( diff --git a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/KnownPatch.kt b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/KnownPatch.kt index 9dae2b3..3176276 100644 --- a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/KnownPatch.kt +++ b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/KnownPatch.kt @@ -63,6 +63,16 @@ enum class KnownPatch( titleRes = R.string.patch_player_backdrop_title, descRes = R.string.patch_player_backdrop_desc, ), + CoverEverywhere( + order = 35, + fileNames = listOf( + "home-backdrop.patch", + "collection-backdrop.patch", + "cover-capture.patch", + ), + titleRes = R.string.patch_cover_everywhere_title, + descRes = R.string.patch_cover_everywhere_desc, + ), DebugMenuUnlock( order = 100, fileNames = listOf("debug-menu-unlock.patch"), @@ -93,6 +103,7 @@ enum class KnownPatch( LyricsKeepControlsVisible, PlayerBackdrop, LyricsProgressPill, + CoverEverywhere, ), ); diff --git a/Manager/app/src/main/res/values/strings.xml b/Manager/app/src/main/res/values/strings.xml index 1a1befc..2a21323 100644 --- a/Manager/app/src/main/res/values/strings.xml +++ b/Manager/app/src/main/res/values/strings.xml @@ -269,6 +269,8 @@ >Inverts the auto-hide behavior on the lyrics screen, playback controls stay visible by default and only hide when you tap them off. Player Backdrop Restores the legacy translucent backdrop blur behind the player. + Cover Everywhere - WIP + Applies the blurred backdrop to every Compose based page (Home & Collection) Replace Share Button render(Landroidx/compose/runtime/Composer;I)V # render album-art backdrop ++ + new-instance v0, Lcom/tidal/wave2/foundation/WaveScaffoldKt$WaveScaffold$2; + + .line 388 +@@ -991,7 +995,7 @@ + + .line 436 + .line 437 +- move-wide v15, v10 ++ const-wide/16 v15, 0x0 # transparent containerColor + + .line 438 + const/4 v11, 0x0 diff --git a/patches/cover-capture.patch b/patches/cover-capture.patch new file mode 100644 index 0000000..8873981 --- /dev/null +++ b/patches/cover-capture.patch @@ -0,0 +1,11 @@ +--- a/com/tidal/android/feature/appscaffold/ui/p.smali ++++ b/com/tidal/android/feature/appscaffold/ui/p.smali +@@ -51,6 +51,8 @@ + .line 10 + iput-object p4, p0, Lcom/tidal/android/feature/appscaffold/ui/p;->d:Ljava/lang/String; + ++ invoke-static {p3, p4}, Lradiant/HomeBackdrop;->fromMiniPlayer(ILjava/lang/String;)V # capture cover state ++ + .line 11 + .line 12 + iput-boolean p5, p0, Lcom/tidal/android/feature/appscaffold/ui/p;->e:Z diff --git a/patches/data.json b/patches/data.json index 5cb2888..0c2c3ea 100644 --- a/patches/data.json +++ b/patches/data.json @@ -1,5 +1,5 @@ { "tidalVersionCode": 9090, "tidalApkUrl": "https://github.com/meowarex/rl-mobile/releases/download/latest/tidal-stock.apk", - "patchesVersion": "0.8.7" + "patchesVersion": "0.9.1" } diff --git a/patches/extension/radiant/HomeBackdrop.smali b/patches/extension/radiant/HomeBackdrop.smali new file mode 100644 index 0000000..036a0fd --- /dev/null +++ b/patches/extension/radiant/HomeBackdrop.smali @@ -0,0 +1,370 @@ +.class public final Lradiant/HomeBackdrop; +.super Ljava/lang/Object; + + +# static fields +.field public static volatile currentAlbumId:I + +.field public static coverUuidState:Landroidx/compose/runtime/MutableState; + .annotation system Ldalvik/annotation/Signature; + value = { + "Landroidx/compose/runtime/MutableState<", + "Ljava/lang/String;", + ">;" + } + .end annotation +.end field + + +# direct methods +.method static constructor ()V + .locals 4 + + const/4 v0, 0x0 + + sput v0, Lradiant/HomeBackdrop;->currentAlbumId:I + + const/4 v0, 0x0 + + const/4 v1, 0x0 + + const/4 v2, 0x2 + + const/4 v3, 0x0 + + invoke-static {v0, v1, v2, v3}, Landroidx/compose/runtime/SnapshotStateKt;->mutableStateOf$default(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;ILjava/lang/Object;)Landroidx/compose/runtime/MutableState; + + move-result-object v0 + + sput-object v0, Lradiant/HomeBackdrop;->coverUuidState:Landroidx/compose/runtime/MutableState; + + return-void +.end method + + +.method private constructor ()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + + +.method public static dlog(Ljava/lang/String;)V + .locals 1 + + const-string v0, "RLHomeBackdrop" + + invoke-static {v0, p0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I + + return-void +.end method + + +.method private static isDebugMenuStack()Z + .locals 6 + + new-instance v0, Ljava/lang/Throwable; + + invoke-direct {v0}, Ljava/lang/Throwable;->()V + + invoke-virtual {v0}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; + + move-result-object v0 + + array-length v1, v0 + + const/4 v2, 0x0 + + :loop_start + if-ge v2, v1, :loop_end + + aget-object v3, v0, v2 + + invoke-virtual {v3}, Ljava/lang/StackTraceElement;->getClassName()Ljava/lang/String; + + move-result-object v3 + + const-string v4, "debugmenu" + + invoke-virtual {v3, v4}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z + + move-result v5 + + if-eqz v5, :next + + const/4 v0, 0x1 + + return v0 + + :next + add-int/lit8 v2, v2, 0x1 + + goto :loop_start + + :loop_end + const/4 v0, 0x0 + + return v0 +.end method + + +.method public static fromMiniPlayer(ILjava/lang/String;)V + .locals 2 + + new-instance v0, Ljava/lang/StringBuilder; + + const-string v1, "fromMiniPlayer: id=" + + invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V + + invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + + const-string v1, " cover=" + + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + + move-result-object v0 + + invoke-static {v0}, Lradiant/HomeBackdrop;->dlog(Ljava/lang/String;)V + + sput p0, Lradiant/HomeBackdrop;->currentAlbumId:I + + sget-object v0, Lradiant/HomeBackdrop;->coverUuidState:Landroidx/compose/runtime/MutableState; + + invoke-interface {v0, p1}, Landroidx/compose/runtime/MutableState;->setValue(Ljava/lang/Object;)V + + return-void +.end method + + +.method public static onTrack(Lcom/aspiro/wamp/model/Track;)V + .locals 3 + + const-string v0, "onTrack: entered" + + invoke-static {v0}, Lradiant/HomeBackdrop;->dlog(Ljava/lang/String;)V + + if-eqz p0, :clear + + :try_start + invoke-virtual {p0}, Lcom/aspiro/wamp/model/MediaItem;->getAlbum()Lcom/aspiro/wamp/model/Album; + + move-result-object v0 + + if-eqz v0, :clear + + invoke-virtual {v0}, Lcom/aspiro/wamp/model/Album;->getId()I + + move-result v1 + + sput v1, Lradiant/HomeBackdrop;->currentAlbumId:I + + invoke-virtual {v0}, Lcom/aspiro/wamp/model/Album;->getCover()Ljava/lang/String; + + move-result-object v0 + + sget-object v1, Lradiant/HomeBackdrop;->coverUuidState:Landroidx/compose/runtime/MutableState; + + invoke-interface {v1, v0}, Landroidx/compose/runtime/MutableState;->setValue(Ljava/lang/Object;)V + + new-instance v1, Ljava/lang/StringBuilder; + + const-string v2, "onTrack: set uuid=" + + invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V + + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + + move-result-object v0 + + invoke-static {v0}, Lradiant/HomeBackdrop;->dlog(Ljava/lang/String;)V + :try_end + .catch Ljava/lang/Throwable; {:try_start .. :try_end} :swallow + + return-void + + :clear + const-string v0, "onTrack: clearing (null track/album)" + + invoke-static {v0}, Lradiant/HomeBackdrop;->dlog(Ljava/lang/String;)V + + const/4 v0, 0x0 + + sput v0, Lradiant/HomeBackdrop;->currentAlbumId:I + + sget-object v1, Lradiant/HomeBackdrop;->coverUuidState:Landroidx/compose/runtime/MutableState; + + const/4 v2, 0x0 + + invoke-interface {v1, v2}, Landroidx/compose/runtime/MutableState;->setValue(Ljava/lang/Object;)V + + return-void + + :swallow + const-string v0, "onTrack: caught throwable" + + invoke-static {v0}, Lradiant/HomeBackdrop;->dlog(Ljava/lang/String;)V + + return-void +.end method + + +.method public static render(Landroidx/compose/runtime/Composer;I)V + .locals 16 + .annotation build Landroidx/compose/runtime/Composable; + .end annotation + + invoke-static {}, Lradiant/HomeBackdrop;->isDebugMenuStack()Z + + move-result v0 + + if-eqz v0, :proceed + + return-void + + :proceed + move-object/from16 v0, p0 + + const-string v1, "render: entered" + + invoke-static {v1}, Lradiant/HomeBackdrop;->dlog(Ljava/lang/String;)V + + const v1, 0x52414449 + + invoke-interface {v0, v1}, Landroidx/compose/runtime/Composer;->startReplaceGroup(I)V + + sget-object v1, Lradiant/HomeBackdrop;->coverUuidState:Landroidx/compose/runtime/MutableState; + + invoke-interface {v1}, Landroidx/compose/runtime/State;->getValue()Ljava/lang/Object; + + move-result-object v1 + + check-cast v1, Ljava/lang/String; + + new-instance v2, Ljava/lang/StringBuilder; + + const-string v3, "render: uuid=" + + invoke-direct {v2, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V + + invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + + move-result-object v2 + + invoke-static {v2}, Lradiant/HomeBackdrop;->dlog(Ljava/lang/String;)V + + if-eqz v1, :skip + + invoke-virtual {v1}, Ljava/lang/String;->length()I + + move-result v2 + + if-eqz v2, :skip + + sget v2, Lradiant/HomeBackdrop;->currentAlbumId:I + + new-instance v3, Lcom/tidal/android/feature/playerscreen/ui/composables/n0; + + invoke-direct {v3, v2, v1}, Lcom/tidal/android/feature/playerscreen/ui/composables/n0;->(ILjava/lang/String;)V + + sget-object v4, Landroidx/compose/ui/Modifier;->Companion:Landroidx/compose/ui/Modifier$Companion; + + const/4 v5, 0x0 + + const/4 v6, 0x1 + + const/4 v7, 0x0 + + invoke-static {v4, v5, v6, v7}, Landroidx/compose/foundation/layout/SizeKt;->fillMaxSize$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; + + move-result-object v4 + + const/high16 v5, 0x42200000 + + invoke-static {v5}, Landroidx/compose/ui/unit/Dp;->constructor-impl(F)F + + move-result v5 + + sget-object v6, Landroidx/compose/ui/draw/BlurredEdgeTreatment;->Companion:Landroidx/compose/ui/draw/BlurredEdgeTreatment$Companion; + + invoke-virtual {v6}, Landroidx/compose/ui/draw/BlurredEdgeTreatment$Companion;->getRectangle---Goahg()Landroidx/compose/ui/graphics/Shape; + + move-result-object v6 + + invoke-static {v4, v5, v6}, Landroidx/compose/ui/draw/BlurKt;->blur-F8QBwvs(Landroidx/compose/ui/Modifier;FLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; + + move-result-object v4 + + sget-object v5, Landroidx/compose/ui/layout/ContentScale;->Companion:Landroidx/compose/ui/layout/ContentScale$Companion; + + invoke-virtual {v5}, Landroidx/compose/ui/layout/ContentScale$Companion;->getCrop()Landroidx/compose/ui/layout/ContentScale; + + move-result-object v5 + + move-object/from16 v6, v3 + + const/4 v7, 0x0 + + move-object/from16 v8, v4 + + const/4 v9, 0x0 + + move-object/from16 v10, v5 + + move-object/from16 v11, v1 # uuid as cache key + + const/4 v12, 0x0 + + move-object/from16 v13, v0 + + const/4 v14, 0x0 + + const/16 v15, 0x48 + + invoke-static/range {v6 .. v15}, Lxd0/f;->a(Lyl0/l;Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/ColorFilter;Landroidx/compose/ui/layout/ContentScale;Ljava/lang/Object;Lyl0/a;Landroidx/compose/runtime/Composer;II)V + + sget-object v3, Landroidx/compose/ui/Modifier;->Companion:Landroidx/compose/ui/Modifier$Companion; + + const/4 v4, 0x0 + + const/4 v5, 0x1 + + const/4 v6, 0x0 + + invoke-static {v3, v4, v5, v6}, Landroidx/compose/foundation/layout/SizeKt;->fillMaxSize$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; + + move-result-object v3 + + const v4, -0x80000000 + + invoke-static {v4}, Landroidx/compose/ui/graphics/ColorKt;->Color(I)J + + move-result-wide v4 + + invoke-static {}, Landroidx/compose/ui/graphics/RectangleShapeKt;->getRectangleShape()Landroidx/compose/ui/graphics/Shape; + + move-result-object v6 + + invoke-static {v3, v4, v5, v6}, Landroidx/compose/foundation/BackgroundKt;->background-bw27NRU(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; + + move-result-object v3 + + const/4 v4, 0x0 + + invoke-static {v3, v0, v4}, Landroidx/compose/foundation/layout/SpacerKt;->Spacer(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V + + :skip + invoke-interface {v0}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V + + return-void +.end method diff --git a/patches/extension/radiant/RLAPILyricsHook.smali b/patches/extension/radiant/RLAPILyricsHook.smali index abac4a2..ef3b63f 100644 --- a/patches/extension/radiant/RLAPILyricsHook.smali +++ b/patches/extension/radiant/RLAPILyricsHook.smali @@ -63,6 +63,8 @@ .method public static onWampTrack(Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;Lcom/aspiro/wamp/model/Track;)V .locals 11 + invoke-static {p1}, Lradiant/HomeBackdrop;->onTrack(Lcom/aspiro/wamp/model/Track;)V + const/4 v3, 0x0 sput-boolean v3, Lradiant/RLAPILyricsHook;->isRlState:Z diff --git a/patches/home-backdrop.patch b/patches/home-backdrop.patch new file mode 100644 index 0000000..00d2c30 --- /dev/null +++ b/patches/home-backdrop.patch @@ -0,0 +1,43 @@ +--- a/com/tidal/android/feature/home/ui/k.smali ++++ b/com/tidal/android/feature/home/ui/k.smali +@@ -424,7 +424,7 @@ + const/4 v6, 0x0 + + .line 181 +- move-wide v7, v8 ++ const-wide/16 v7, 0x0 # transparent containerColor + + .line 182 + const-wide/16 v9, 0x0 +--- a/com/tidal/android/feature/home/ui/p.smali ++++ b/com/tidal/android/feature/home/ui/p.smali +@@ -187,6 +187,10 @@ + .line 61 + .line 62 + :cond_3 ++ const/4 v0, 0x0 # render $changed flag ++ ++ invoke-static {v4, v0}, Lradiant/HomeBackdrop;->render(Landroidx/compose/runtime/Composer;I)V # render album-art backdrop ++ + invoke-interface {p1}, Landroidx/compose/foundation/layout/PaddingValues;->calculateTopPadding-D9Ej5fM()F + + .line 63 +--- a/com/tidal/android/feature/home/ui/composables/e.smali ++++ b/com/tidal/android/feature/home/ui/composables/e.smali +@@ -790,6 +790,8 @@ + .line 104 + move-result-wide v14 + ++ const-wide/16 v14, 0x0 # transparent topBar background ++ + .line 105 + const/16 v17, 0x2 + +@@ -850,6 +852,8 @@ + .line 134 + move-result-wide v14 + ++ const-wide/16 v14, 0x0 # transparent TopAppBar containerColor ++ + .line 135 + sget-object v3, Landroidx/compose/ui/graphics/Color;->Companion:Landroidx/compose/ui/graphics/Color$Companion;