CrackMe.apk
Download file
package androidx.core.text;
import java.nio.CharBuffer;
import java.util.Locale;
public final class TextDirectionHeuristicsCompat {
public static final TextDirectionHeuristicCompat ANYRTL_LTR = new TextDirectionHeuristicInternal(AnyStrong.INSTANCE_RTL, false);
public static final TextDirectionHeuristicCompat FIRSTSTRONG_LTR = new TextDirectionHeuristicInternal(FirstStrong.INSTANCE, false);
public static final TextDirectionHeuristicCompat FIRSTSTRONG_RTL = new TextDirectionHeuristicInternal(FirstStrong.INSTANCE, true);
public static final TextDirectionHeuristicCompat LOCALE = TextDirectionHeuristicLocale.INSTANCE;
public static final TextDirectionHeuristicCompat LTR = new TextDirectionHeuristicInternal((TextDirectionAlgorithm) null, false);
public static final TextDirectionHeuristicCompat RTL = new TextDirectionHeuristicInternal((TextDirectionAlgorithm) null, true);
private static final int STATE_FALSE = 1;
private static final int STATE_TRUE = 0;
private static final int STATE_UNKNOWN = 2;
private interface TextDirectionAlgorithm {
int checkRtl(CharSequence charSequence, int i, int i2);
}
static int isRtlText(int i) {
if (i != 0) {
return (i == 1 || i == 2) ? 0 : 2;
}
return 1;
}
static int isRtlTextOrFormat(int i) {
if (i != 0) {
if (i == 1 || i == 2) {
return 0;
}
switch (i) {
case 14:
case 15:
break;
case 16:
case 17:
return 0;
default:
return 2;
}
}
return 1;
}
private static abstract class TextDirectionHeuristicImpl implements TextDirectionHeuristicCompat {
private final TextDirectionAlgorithm mAlgorithm;
/* access modifiers changed from: protected */
public abstract boolean defaultIsRtl();
TextDirectionHeuristicImpl(TextDirectionAlgorithm textDirectionAlgorithm) {
this.mAlgorithm = textDirectionAlgorithm;
}
public boolean isRtl(char[] cArr, int i, int i2) {
return isRtl((CharSequence) CharBuffer.wrap(cArr), i, i2);
}
public boolean isRtl(CharSequence charSequence, int i, int i2) {
if (charSequence == null || i < 0 || i2 < 0 || charSequence.length() - i2 < i) {
throw new IllegalArgumentException();
} else if (this.mAlgorithm == null) {
return defaultIsRtl();
} else {
return doCheck(charSequence, i, i2);
}
}
private boolean doCheck(CharSequence charSequence, int i, int i2) {
int checkRtl = this.mAlgorithm.checkRtl(charSequence, i, i2);
if (checkRtl == 0) {
return true;
}
if (checkRtl != 1) {
return defaultIsRtl();
}
return false;
}
}
private static class TextDirectionHeuristicInternal extends TextDirectionHeuristicImpl {
private final boolean mDefaultIsRtl;
TextDirectionHeuristicInternal(TextDirectionAlgorithm textDirectionAlgorithm, boolean z) {
super(textDirectionAlgorithm);
this.mDefaultIsRtl = z;
}
/* access modifiers changed from: protected */
public boolean defaultIsRtl() {
return this.mDefaultIsRtl;
}
}
private static class FirstStrong implements TextDirectionAlgorithm {
static final FirstStrong INSTANCE = new FirstStrong();
public int checkRtl(CharSequence charSequence, int i, int i2) {
int i3 = i2 + i;
int i4 = 2;
while (i < i3 && i4 == 2) {
i4 = TextDirectionHeuristicsCompat.isRtlTextOrFormat(Character.getDirectionality(charSequence.charAt(i)));
i++;
}
return i4;
}
private FirstStrong() {
}
}
private static class AnyStrong implements TextDirectionAlgorithm {
static final AnyStrong INSTANCE_RTL = new AnyStrong(true);
private final boolean mLookForRtl;
public int checkRtl(CharSequence charSequence, int i, int i2) {
int i3 = i2 + i;
boolean z = false;
while (i < i3) {
int isRtlText = TextDirectionHeuristicsCompat.isRtlText(Character.getDirectionality(charSequence.charAt(i)));
if (isRtlText != 0) {
if (isRtlText != 1) {
continue;
i++;
} else if (!this.mLookForRtl) {
return 1;
}
} else if (this.mLookForRtl) {
return 0;
}
z = true;
i++;
}
if (z) {
return this.mLookForRtl ? 1 : 0;
}
return 2;
}
private AnyStrong(boolean z) {
this.mLookForRtl = z;
}
}
private static class TextDirectionHeuristicLocale extends TextDirectionHeuristicImpl {
static final TextDirectionHeuristicLocale INSTANCE = new TextDirectionHeuristicLocale();
TextDirectionHeuristicLocale() {
super((TextDirectionAlgorithm) null);
}
/* access modifiers changed from: protected */
public boolean defaultIsRtl() {
return TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == 1;
}
}
private TextDirectionHeuristicsCompat() {
}
}
Download file