* Decompile and recreate Soul Browser v1.4.85 with APK CI builds Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix CI build: include bundled google.jks and remove PR trigger The apktool build failed in CI because app/unknown/.../google.jks was excluded by the *.jks gitignore rule. Whitelist app-bundled JKS files and commit the missing resource. Also remove the redundant pull_request workflow trigger. Co-authored-by: KaKi87 <KaKi87@pm.me> * Change package ID to com.github.kaki87.soulbrowser Rename the application ID so the rebuilt APK can be installed alongside the original Soul Browser from Google Play. - Update AndroidManifest package, permissions, providers, and actions - Update R class references in smali (com/github/kaki87/soulbrowser/R) - Update shortcuts.xml targetPackage - Rename app label to "Soul Rebuild" for easy identification Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix install compatibility: remove split APK metadata and bundle native libs The rebuilt APK still declared requiredSplitTypes and Play Store split metadata, causing Android to reject standalone installs as incompatible. - Remove requiredSplitTypes and split-related manifest meta-data - Merge native libs from all ABI splits with uncompressed storage - Page-align before signing for extractNativeLibs=false - Add .so to apktool doNotCompress list Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix install failure: use apksigner v2/v3 and bundle arm64 native libs Target SDK 36 requires APK Signature Scheme v2+, but jarsigner only produces v1 signatures, causing Android to reject the install. - Sign with apksigner (v1+v2+v3) instead of jarsigner - Add arm64-v8a native libraries from universal Soul Browser 1.4.79 - Set extractNativeLibs=true for reliable sideload installs - Commit stable debug keystore for consistent signatures across builds Co-authored-by: KaKi87 <KaKi87@pm.me> * Add committed debug keystore for consistent APK signatures Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix startup crash: use original classes2.dex desugar libraries Apktool recompiles smali_classes2 into a broken classes2.dex, causing ClassNotFoundException for j$.com.android.tools.r8.a at ML Kit init. Inject the original classes2.dex (Java 8+ desugar libs) after apktool build instead of using the recompiled version. Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix missing drawable resources from density split APKs The base APK is an app bundle module; density-specific drawables like seek_thumb_nor_b live in config.xhdpi.apk and were missing after rebuild, causing Resources$NotFoundException at runtime. - Merge non-9-patch resources from split APKs before apktool build - Sync public.xml IDs from R smali only when backing files exist - Add 713 density-specific resource IDs to public.xml Co-authored-by: KaKi87 <KaKi87@pm.me> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
375 lines
16 KiB
Java
375 lines
16 KiB
Java
package j$.time.format;
|
|
|
|
import j$.time.Instant;
|
|
import j$.time.ZoneId;
|
|
import j$.time.ZoneOffset;
|
|
import j$.util.Objects;
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
import java.util.Map;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class d0 implements j$.time.temporal.n {
|
|
public ZoneId b;
|
|
|
|
/* renamed from: c, reason: collision with root package name */
|
|
public j$.time.chrono.m f21195c;
|
|
public boolean d;
|
|
public e0 e;
|
|
public j$.time.chrono.b f;
|
|
public j$.time.k g;
|
|
|
|
/* renamed from: a, reason: collision with root package name */
|
|
public final Map f21194a = new HashMap();
|
|
public j$.time.r h = j$.time.r.d;
|
|
|
|
@Override // j$.time.temporal.n
|
|
public final /* synthetic */ int g(j$.time.temporal.r rVar) {
|
|
return j$.time.temporal.s.a(this, rVar);
|
|
}
|
|
|
|
@Override // j$.time.temporal.n
|
|
public final /* synthetic */ j$.time.temporal.v i(j$.time.temporal.r rVar) {
|
|
return j$.time.temporal.s.d(this, rVar);
|
|
}
|
|
|
|
@Override // j$.time.temporal.n
|
|
public final boolean c(j$.time.temporal.r rVar) {
|
|
if (((HashMap) this.f21194a).containsKey(rVar)) {
|
|
return true;
|
|
}
|
|
j$.time.chrono.b bVar = this.f;
|
|
if (bVar != null && bVar.c(rVar)) {
|
|
return true;
|
|
}
|
|
j$.time.k kVar = this.g;
|
|
if (kVar == null || !kVar.c(rVar)) {
|
|
return (rVar == null || (rVar instanceof j$.time.temporal.a) || !rVar.d(this)) ? false : true;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
@Override // j$.time.temporal.n
|
|
public final long y(j$.time.temporal.r rVar) {
|
|
Objects.requireNonNull(rVar, "field");
|
|
Long l = (Long) ((HashMap) this.f21194a).get(rVar);
|
|
if (l != null) {
|
|
return l.longValue();
|
|
}
|
|
j$.time.chrono.b bVar = this.f;
|
|
if (bVar != null && bVar.c(rVar)) {
|
|
return this.f.y(rVar);
|
|
}
|
|
j$.time.k kVar = this.g;
|
|
if (kVar != null && kVar.c(rVar)) {
|
|
return this.g.y(rVar);
|
|
}
|
|
if (rVar instanceof j$.time.temporal.a) {
|
|
throw new RuntimeException(j$.time.c.a("Unsupported field: ", rVar));
|
|
}
|
|
return rVar.i(this);
|
|
}
|
|
|
|
@Override // j$.time.temporal.n
|
|
public final Object d(j$.time.h hVar) {
|
|
if (hVar == j$.time.temporal.s.f21256a) {
|
|
return this.b;
|
|
}
|
|
if (hVar == j$.time.temporal.s.b) {
|
|
return this.f21195c;
|
|
}
|
|
if (hVar == j$.time.temporal.s.f) {
|
|
j$.time.chrono.b bVar = this.f;
|
|
if (bVar != null) {
|
|
return j$.time.g.M(bVar);
|
|
}
|
|
return null;
|
|
}
|
|
if (hVar == j$.time.temporal.s.g) {
|
|
return this.g;
|
|
}
|
|
if (hVar == j$.time.temporal.s.d) {
|
|
Long l = (Long) ((HashMap) this.f21194a).get(j$.time.temporal.a.OFFSET_SECONDS);
|
|
if (l != null) {
|
|
return ZoneOffset.R(l.intValue());
|
|
}
|
|
ZoneId zoneId = this.b;
|
|
return zoneId instanceof ZoneOffset ? zoneId : hVar.d(this);
|
|
}
|
|
if (hVar == j$.time.temporal.s.e) {
|
|
return hVar.d(this);
|
|
}
|
|
if (hVar == j$.time.temporal.s.f21257c) {
|
|
return null;
|
|
}
|
|
return hVar.d(this);
|
|
}
|
|
|
|
public final void q(j$.time.temporal.r rVar, j$.time.temporal.a aVar, Long l) {
|
|
Long l2 = (Long) ((HashMap) this.f21194a).put(aVar, l);
|
|
if (l2 == null || l2.longValue() == l.longValue()) {
|
|
return;
|
|
}
|
|
throw new RuntimeException("Conflict found: " + aVar + " " + l2 + " differs from " + aVar + " " + l + " while resolving " + rVar);
|
|
}
|
|
|
|
public final void f() {
|
|
if (((HashMap) this.f21194a).containsKey(j$.time.temporal.a.INSTANT_SECONDS)) {
|
|
ZoneId zoneId = this.b;
|
|
if (zoneId != null) {
|
|
j(zoneId);
|
|
return;
|
|
}
|
|
Long l = (Long) ((HashMap) this.f21194a).get(j$.time.temporal.a.OFFSET_SECONDS);
|
|
if (l != null) {
|
|
j(ZoneOffset.R(l.intValue()));
|
|
}
|
|
}
|
|
}
|
|
|
|
public final void j(ZoneId zoneId) {
|
|
Map map = this.f21194a;
|
|
j$.time.temporal.a aVar = j$.time.temporal.a.INSTANT_SECONDS;
|
|
p(this.f21195c.G(Instant.K(((Long) ((HashMap) map).remove(aVar)).longValue(), 0), zoneId).toLocalDate());
|
|
q(aVar, j$.time.temporal.a.SECOND_OF_DAY, Long.valueOf(r5.toLocalTime().X()));
|
|
}
|
|
|
|
public final void p(j$.time.chrono.b bVar) {
|
|
j$.time.chrono.b bVar2 = this.f;
|
|
if (bVar2 != null) {
|
|
if (bVar == null || bVar2.equals(bVar)) {
|
|
return;
|
|
}
|
|
throw new RuntimeException("Conflict found: Fields resolved to two different dates: " + this.f + " " + bVar);
|
|
}
|
|
if (bVar != null) {
|
|
if (!this.f21195c.equals(bVar.getChronology())) {
|
|
throw new RuntimeException("ChronoLocalDate must use the effective parsed chronology: " + this.f21195c);
|
|
}
|
|
this.f = bVar;
|
|
}
|
|
}
|
|
|
|
public final void l() {
|
|
Map map = this.f21194a;
|
|
j$.time.temporal.a aVar = j$.time.temporal.a.CLOCK_HOUR_OF_DAY;
|
|
if (((HashMap) map).containsKey(aVar)) {
|
|
long longValue = ((Long) ((HashMap) this.f21194a).remove(aVar)).longValue();
|
|
e0 e0Var = this.e;
|
|
if (e0Var == e0.STRICT || (e0Var == e0.SMART && longValue != 0)) {
|
|
aVar.u(longValue);
|
|
}
|
|
j$.time.temporal.a aVar2 = j$.time.temporal.a.HOUR_OF_DAY;
|
|
if (longValue == 24) {
|
|
longValue = 0;
|
|
}
|
|
q(aVar, aVar2, Long.valueOf(longValue));
|
|
}
|
|
Map map2 = this.f21194a;
|
|
j$.time.temporal.a aVar3 = j$.time.temporal.a.CLOCK_HOUR_OF_AMPM;
|
|
if (((HashMap) map2).containsKey(aVar3)) {
|
|
long longValue2 = ((Long) ((HashMap) this.f21194a).remove(aVar3)).longValue();
|
|
e0 e0Var2 = this.e;
|
|
if (e0Var2 == e0.STRICT || (e0Var2 == e0.SMART && longValue2 != 0)) {
|
|
aVar3.u(longValue2);
|
|
}
|
|
q(aVar3, j$.time.temporal.a.HOUR_OF_AMPM, Long.valueOf(longValue2 != 12 ? longValue2 : 0L));
|
|
}
|
|
Map map3 = this.f21194a;
|
|
j$.time.temporal.a aVar4 = j$.time.temporal.a.AMPM_OF_DAY;
|
|
if (((HashMap) map3).containsKey(aVar4)) {
|
|
Map map4 = this.f21194a;
|
|
j$.time.temporal.a aVar5 = j$.time.temporal.a.HOUR_OF_AMPM;
|
|
if (((HashMap) map4).containsKey(aVar5)) {
|
|
long longValue3 = ((Long) ((HashMap) this.f21194a).remove(aVar4)).longValue();
|
|
long longValue4 = ((Long) ((HashMap) this.f21194a).remove(aVar5)).longValue();
|
|
if (this.e == e0.LENIENT) {
|
|
q(aVar4, j$.time.temporal.a.HOUR_OF_DAY, Long.valueOf(j$.com.android.tools.r8.a.I(j$.com.android.tools.r8.a.O(longValue3, 12), longValue4)));
|
|
} else {
|
|
aVar4.u(longValue3);
|
|
aVar5.u(longValue3);
|
|
q(aVar4, j$.time.temporal.a.HOUR_OF_DAY, Long.valueOf((longValue3 * 12) + longValue4));
|
|
}
|
|
}
|
|
}
|
|
Map map5 = this.f21194a;
|
|
j$.time.temporal.a aVar6 = j$.time.temporal.a.NANO_OF_DAY;
|
|
if (((HashMap) map5).containsKey(aVar6)) {
|
|
long longValue5 = ((Long) ((HashMap) this.f21194a).remove(aVar6)).longValue();
|
|
if (this.e != e0.LENIENT) {
|
|
aVar6.u(longValue5);
|
|
}
|
|
q(aVar6, j$.time.temporal.a.HOUR_OF_DAY, Long.valueOf(longValue5 / 3600000000000L));
|
|
q(aVar6, j$.time.temporal.a.MINUTE_OF_HOUR, Long.valueOf((longValue5 / 60000000000L) % 60));
|
|
q(aVar6, j$.time.temporal.a.SECOND_OF_MINUTE, Long.valueOf((longValue5 / 1000000000) % 60));
|
|
q(aVar6, j$.time.temporal.a.NANO_OF_SECOND, Long.valueOf(longValue5 % 1000000000));
|
|
}
|
|
Map map6 = this.f21194a;
|
|
j$.time.temporal.a aVar7 = j$.time.temporal.a.MICRO_OF_DAY;
|
|
if (((HashMap) map6).containsKey(aVar7)) {
|
|
long longValue6 = ((Long) ((HashMap) this.f21194a).remove(aVar7)).longValue();
|
|
if (this.e != e0.LENIENT) {
|
|
aVar7.u(longValue6);
|
|
}
|
|
q(aVar7, j$.time.temporal.a.SECOND_OF_DAY, Long.valueOf(longValue6 / 1000000));
|
|
q(aVar7, j$.time.temporal.a.MICRO_OF_SECOND, Long.valueOf(longValue6 % 1000000));
|
|
}
|
|
Map map7 = this.f21194a;
|
|
j$.time.temporal.a aVar8 = j$.time.temporal.a.MILLI_OF_DAY;
|
|
if (((HashMap) map7).containsKey(aVar8)) {
|
|
long longValue7 = ((Long) ((HashMap) this.f21194a).remove(aVar8)).longValue();
|
|
if (this.e != e0.LENIENT) {
|
|
aVar8.u(longValue7);
|
|
}
|
|
q(aVar8, j$.time.temporal.a.SECOND_OF_DAY, Long.valueOf(longValue7 / 1000));
|
|
q(aVar8, j$.time.temporal.a.MILLI_OF_SECOND, Long.valueOf(longValue7 % 1000));
|
|
}
|
|
Map map8 = this.f21194a;
|
|
j$.time.temporal.a aVar9 = j$.time.temporal.a.SECOND_OF_DAY;
|
|
if (((HashMap) map8).containsKey(aVar9)) {
|
|
long longValue8 = ((Long) ((HashMap) this.f21194a).remove(aVar9)).longValue();
|
|
if (this.e != e0.LENIENT) {
|
|
aVar9.u(longValue8);
|
|
}
|
|
q(aVar9, j$.time.temporal.a.HOUR_OF_DAY, Long.valueOf(longValue8 / 3600));
|
|
q(aVar9, j$.time.temporal.a.MINUTE_OF_HOUR, Long.valueOf((longValue8 / 60) % 60));
|
|
q(aVar9, j$.time.temporal.a.SECOND_OF_MINUTE, Long.valueOf(longValue8 % 60));
|
|
}
|
|
Map map9 = this.f21194a;
|
|
j$.time.temporal.a aVar10 = j$.time.temporal.a.MINUTE_OF_DAY;
|
|
if (((HashMap) map9).containsKey(aVar10)) {
|
|
long longValue9 = ((Long) ((HashMap) this.f21194a).remove(aVar10)).longValue();
|
|
if (this.e != e0.LENIENT) {
|
|
aVar10.u(longValue9);
|
|
}
|
|
q(aVar10, j$.time.temporal.a.HOUR_OF_DAY, Long.valueOf(longValue9 / 60));
|
|
q(aVar10, j$.time.temporal.a.MINUTE_OF_HOUR, Long.valueOf(longValue9 % 60));
|
|
}
|
|
Map map10 = this.f21194a;
|
|
j$.time.temporal.a aVar11 = j$.time.temporal.a.NANO_OF_SECOND;
|
|
if (((HashMap) map10).containsKey(aVar11)) {
|
|
long longValue10 = ((Long) ((HashMap) this.f21194a).get(aVar11)).longValue();
|
|
e0 e0Var3 = this.e;
|
|
e0 e0Var4 = e0.LENIENT;
|
|
if (e0Var3 != e0Var4) {
|
|
aVar11.u(longValue10);
|
|
}
|
|
Map map11 = this.f21194a;
|
|
j$.time.temporal.a aVar12 = j$.time.temporal.a.MICRO_OF_SECOND;
|
|
if (((HashMap) map11).containsKey(aVar12)) {
|
|
long longValue11 = ((Long) ((HashMap) this.f21194a).remove(aVar12)).longValue();
|
|
if (this.e != e0Var4) {
|
|
aVar12.u(longValue11);
|
|
}
|
|
longValue10 = (longValue10 % 1000) + (longValue11 * 1000);
|
|
q(aVar12, aVar11, Long.valueOf(longValue10));
|
|
}
|
|
Map map12 = this.f21194a;
|
|
j$.time.temporal.a aVar13 = j$.time.temporal.a.MILLI_OF_SECOND;
|
|
if (((HashMap) map12).containsKey(aVar13)) {
|
|
long longValue12 = ((Long) ((HashMap) this.f21194a).remove(aVar13)).longValue();
|
|
if (this.e != e0Var4) {
|
|
aVar13.u(longValue12);
|
|
}
|
|
q(aVar13, aVar11, Long.valueOf((longValue10 % 1000000) + (longValue12 * 1000000)));
|
|
}
|
|
}
|
|
Map map13 = this.f21194a;
|
|
j$.time.temporal.a aVar14 = j$.time.temporal.a.HOUR_OF_DAY;
|
|
if (((HashMap) map13).containsKey(aVar14)) {
|
|
Map map14 = this.f21194a;
|
|
j$.time.temporal.a aVar15 = j$.time.temporal.a.MINUTE_OF_HOUR;
|
|
if (((HashMap) map14).containsKey(aVar15)) {
|
|
Map map15 = this.f21194a;
|
|
j$.time.temporal.a aVar16 = j$.time.temporal.a.SECOND_OF_MINUTE;
|
|
if (((HashMap) map15).containsKey(aVar16) && ((HashMap) this.f21194a).containsKey(aVar11)) {
|
|
k(((Long) ((HashMap) this.f21194a).remove(aVar14)).longValue(), ((Long) ((HashMap) this.f21194a).remove(aVar15)).longValue(), ((Long) ((HashMap) this.f21194a).remove(aVar16)).longValue(), ((Long) ((HashMap) this.f21194a).remove(aVar11)).longValue());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public final void k(long j, long j2, long j3, long j4) {
|
|
if (this.e == e0.LENIENT) {
|
|
long I = j$.com.android.tools.r8.a.I(j$.com.android.tools.r8.a.I(j$.com.android.tools.r8.a.I(j$.com.android.tools.r8.a.O(j, 3600000000000L), j$.com.android.tools.r8.a.O(j2, 60000000000L)), j$.com.android.tools.r8.a.O(j3, 1000000000L)), j4);
|
|
n(j$.time.k.P(j$.com.android.tools.r8.a.M(I, 86400000000000L)), j$.time.r.a(0, 0, (int) j$.com.android.tools.r8.a.N(I, 86400000000000L)));
|
|
return;
|
|
}
|
|
j$.time.temporal.a aVar = j$.time.temporal.a.MINUTE_OF_HOUR;
|
|
int a2 = aVar.b.a(j2, aVar);
|
|
j$.time.temporal.a aVar2 = j$.time.temporal.a.NANO_OF_SECOND;
|
|
int a3 = aVar2.b.a(j4, aVar2);
|
|
if (this.e == e0.SMART && j == 24 && a2 == 0 && j3 == 0 && a3 == 0) {
|
|
n(j$.time.k.g, j$.time.r.a(0, 0, 1));
|
|
return;
|
|
}
|
|
j$.time.temporal.a aVar3 = j$.time.temporal.a.HOUR_OF_DAY;
|
|
int a4 = aVar3.b.a(j, aVar3);
|
|
j$.time.temporal.a aVar4 = j$.time.temporal.a.SECOND_OF_MINUTE;
|
|
n(j$.time.k.O(a4, a2, aVar4.b.a(j3, aVar4), a3), j$.time.r.d);
|
|
}
|
|
|
|
public final void n(j$.time.k kVar, j$.time.r rVar) {
|
|
j$.time.k kVar2 = this.g;
|
|
if (kVar2 != null) {
|
|
if (!kVar2.equals(kVar)) {
|
|
throw new RuntimeException("Conflict found: Fields resolved to different times: " + this.g + " " + kVar);
|
|
}
|
|
j$.time.r rVar2 = this.h;
|
|
rVar2.getClass();
|
|
j$.time.r rVar3 = j$.time.r.d;
|
|
if (rVar2 != rVar3 && rVar != rVar3 && !this.h.equals(rVar)) {
|
|
throw new RuntimeException("Conflict found: Fields resolved to different excess periods: " + this.h + " " + rVar);
|
|
}
|
|
this.h = rVar;
|
|
return;
|
|
}
|
|
this.g = kVar;
|
|
this.h = rVar;
|
|
}
|
|
|
|
public final void e(j$.time.temporal.n nVar) {
|
|
Iterator it = ((HashMap) this.f21194a).entrySet().iterator();
|
|
while (it.hasNext()) {
|
|
Map.Entry entry = (Map.Entry) it.next();
|
|
j$.time.temporal.r rVar = (j$.time.temporal.r) entry.getKey();
|
|
if (nVar.c(rVar)) {
|
|
try {
|
|
long y = nVar.y(rVar);
|
|
long longValue = ((Long) entry.getValue()).longValue();
|
|
if (y != longValue) {
|
|
throw new RuntimeException("Conflict found: Field " + rVar + " " + y + " differs from " + rVar + " " + longValue + " derived from " + nVar);
|
|
}
|
|
it.remove();
|
|
} catch (RuntimeException unused) {
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public final String toString() {
|
|
StringBuilder sb = new StringBuilder(64);
|
|
sb.append(this.f21194a);
|
|
sb.append(',');
|
|
sb.append(this.f21195c);
|
|
if (this.b != null) {
|
|
sb.append(',');
|
|
sb.append(this.b);
|
|
}
|
|
if (this.f != null || this.g != null) {
|
|
sb.append(" resolved to ");
|
|
j$.time.chrono.b bVar = this.f;
|
|
if (bVar != null) {
|
|
sb.append(bVar);
|
|
if (this.g != null) {
|
|
sb.append('T');
|
|
sb.append(this.g);
|
|
}
|
|
} else {
|
|
sb.append(this.g);
|
|
}
|
|
}
|
|
return sb.toString();
|
|
}
|
|
}
|