a.smali
.class public final Lokhttp3/internal/e/a;
.super Ljava/lang/Object;
.source "PublicSuffixDatabase.java"
# static fields
.field private static final bYJ:[B
.field private static final bYK:[Ljava/lang/String;
.field private static final bYL:[Ljava/lang/String;
.field private static final bYM:Lokhttp3/internal/e/a;
# instance fields
.field private final bYN:Ljava/util/concurrent/atomic/AtomicBoolean;
.field private final bYO:Ljava/util/concurrent/CountDownLatch;
.field private bYP:[B
.field private bYQ:[B
# direct methods
.method static constructor <clinit>()V
.registers 4
.prologue
const/4 v3, 0x1
const/4 v2, 0x0
.line 39
new-array v0, v3, [B
const/16 v1, 0x2a
aput-byte v1, v0, v2
sput-object v0, Lokhttp3/internal/e/a;->bYJ:[B
.line 40
new-array v0, v2, [Ljava/lang/String;
sput-object v0, Lokhttp3/internal/e/a;->bYK:[Ljava/lang/String;
.line 41
new-array v0, v3, [Ljava/lang/String;
const-string v1, "*"
aput-object v1, v0, v2
sput-object v0, Lokhttp3/internal/e/a;->bYL:[Ljava/lang/String;
.line 45
new-instance v0, Lokhttp3/internal/e/a;
invoke-direct {v0}, Lokhttp3/internal/e/a;-><init>()V
sput-object v0, Lokhttp3/internal/e/a;->bYM:Lokhttp3/internal/e/a;
return-void
.end method
.method public constructor <init>()V
.registers 3
.prologue
.line 36
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 48
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v1, 0x0
invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V
iput-object v0, p0, Lokhttp3/internal/e/a;->bYN:Ljava/util/concurrent/atomic/AtomicBoolean;
.line 51
new-instance v0, Ljava/util/concurrent/CountDownLatch;
const/4 v1, 0x1
invoke-direct {v0, v1}, Ljava/util/concurrent/CountDownLatch;-><init>(I)V
iput-object v0, p0, Lokhttp3/internal/e/a;->bYO:Ljava/util/concurrent/CountDownLatch;
return-void
.end method
.method public static Sd()Lokhttp3/internal/e/a;
.registers 1
.prologue
.line 61
sget-object v0, Lokhttp3/internal/e/a;->bYM:Lokhttp3/internal/e/a;
return-object v0
.end method
.method private static a([B[[BI)Ljava/lang/String;
.registers 15
.prologue
.line 195
const/4 v1, 0x0
.line 196
array-length v0, p0
.line 197
const/4 v4, 0x0
move v7, v0
move v8, v1
.line 198
:goto_5
if-ge v8, v7, :cond_90
.line 199
add-int v0, v8, v7
div-int/lit8 v0, v0, 0x2
.line 202
:goto_b
if-ltz v0, :cond_16
aget-byte v1, p0, v0
const/16 v2, 0xa
if-eq v1, v2, :cond_16
.line 203
add-int/lit8 v0, v0, -0x1
goto :goto_b
.line 205
:cond_16
add-int/lit8 v9, v0, 0x1
.line 208
const/4 v0, 0x1
.line 209
:goto_19
add-int v1, v9, v0
aget-byte v1, p0, v1
const/16 v2, 0xa
if-eq v1, v2, :cond_24
.line 210
add-int/lit8 v0, v0, 0x1
goto :goto_19
.line 212
:cond_24
add-int v1, v9, v0
sub-int v10, v1, v9
.line 218
const/4 v6, 0x0
.line 219
const/4 v5, 0x0
.line 221
const/4 v1, 0x0
move v3, p2
.line 224
:goto_2c
if-eqz v1, :cond_51
.line 225
const/16 v2, 0x2e
.line 226
const/4 v1, 0x0
.line 231
:goto_31
add-int v11, v9, v5
aget-byte v11, p0, v11
and-int/lit16 v11, v11, 0xff
.line 233
sub-int v11, v2, v11
.line 234
if-nez v11, :cond_8d
.line 236
add-int/lit8 v5, v5, 0x1
.line 237
add-int/lit8 v2, v6, 0x1
.line 238
if-eq v5, v10, :cond_58
.line 240
aget-object v6, p1, v3
array-length v6, v6
if-ne v6, v2, :cond_4f
.line 243
array-length v1, p1
add-int/lit8 v1, v1, -0x1
if-eq v3, v1, :cond_58
.line 246
add-int/lit8 v3, v3, 0x1
.line 247
const/4 v2, -0x1
.line 248
const/4 v1, 0x1
:cond_4f
move v6, v2
.line 251
goto :goto_2c
.line 228
:cond_51
aget-object v2, p1, v3
aget-byte v2, v2, v6
and-int/lit16 v2, v2, 0xff
goto :goto_31
:cond_58
move v1, v5
.line 253
:goto_59
if-gez v11, :cond_5f
.line 254
add-int/lit8 v0, v9, -0x1
move v7, v0
goto :goto_5
.line 255
:cond_5f
if-lez v11, :cond_66
.line 256
add-int/2addr v0, v9
add-int/lit8 v0, v0, 0x1
move v8, v0
goto :goto_5
.line 259
:cond_66
sub-int v5, v10, v1
.line 260
aget-object v1, p1, v3
array-length v1, v1
sub-int/2addr v1, v2
.line 261
add-int/lit8 v2, v3, 0x1
:goto_6e
array-length v3, p1
if-ge v2, v3, :cond_78
.line 262
aget-object v3, p1, v2
array-length v3, v3
add-int/2addr v1, v3
.line 261
add-int/lit8 v2, v2, 0x1
goto :goto_6e
.line 265
:cond_78
if-ge v1, v5, :cond_7e
.line 266
add-int/lit8 v0, v9, -0x1
move v7, v0
goto :goto_5
.line 267
:cond_7e
if-le v1, v5, :cond_85
.line 268
add-int/2addr v0, v9
add-int/lit8 v0, v0, 0x1
move v8, v0
goto :goto_5
.line 271
:cond_85
new-instance v0, Ljava/lang/String;
sget-object v1, Lokhttp3/internal/c;->UTF_8:Ljava/nio/charset/Charset;
invoke-direct {v0, p0, v9, v10, v1}, Ljava/lang/String;-><init>([BIILjava/nio/charset/Charset;)V
.line 276
:goto_8c
return-object v0
:cond_8d
move v1, v5
move v2, v6
goto :goto_59
:cond_90
move-object v0, v4
goto :goto_8c
.end method
.method private k([Ljava/lang/String;)[Ljava/lang/String;
.registers 10
.prologue
const/4 v3, 0x0
const/4 v4, 0x1
const/4 v1, 0x0
.line 109
iget-object v0, p0, Lokhttp3/internal/e/a;->bYN:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
if-nez v0, :cond_8f
iget-object v0, p0, Lokhttp3/internal/e/a;->bYN:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0, v1, v4}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z
move-result v0
if-eqz v0, :cond_8f
move v2, v1
.line 1309
:goto_14
:try_start_14
const-class v0, Lokhttp3/internal/e/a;
const-string v5, "publicsuffixes.gz"
invoke-virtual {v0, v5}, Ljava/lang/Class;->getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;
move-result-object v0
.line 1310
if-eqz v0, :cond_4b
.line 1312
new-instance v5, Lokio/k;
invoke-static {v0}, Lokio/m;->k(Ljava/io/InputStream;)Lokio/s;
move-result-object v0
invoke-direct {v5, v0}, Lokio/k;-><init>(Lokio/s;)V
invoke-static {v5}, Lokio/m;->b(Lokio/s;)Lokio/f;
:try_end_2a
.catch Ljava/io/InterruptedIOException; {:try_start_14 .. :try_end_2a} :catch_69
.catch Ljava/io/IOException; {:try_start_14 .. :try_end_2a} :catch_6f
.catchall {:try_start_14 .. :try_end_2a} :catchall_84
move-result-object v5
.line 1314
:try_start_2b
invoke-interface {v5}, Lokio/f;->readInt()I
move-result v0
.line 1315
new-array v0, v0, [B
.line 1316
invoke-interface {v5, v0}, Lokio/f;->readFully([B)V
.line 1318
invoke-interface {v5}, Lokio/f;->readInt()I
move-result v6
.line 1319
new-array v6, v6, [B
.line 1320
invoke-interface {v5, v6}, Lokio/f;->readFully([B)V
:try_end_3d
.catchall {:try_start_2b .. :try_end_3d} :catchall_64
.line 1322
:try_start_3d
invoke-static {v5}, Lokhttp3/internal/c;->closeQuietly(Ljava/io/Closeable;)V
.line 1325
monitor-enter p0
:try_end_41
.catch Ljava/io/InterruptedIOException; {:try_start_3d .. :try_end_41} :catch_69
.catch Ljava/io/IOException; {:try_start_3d .. :try_end_41} :catch_6f
.catchall {:try_start_3d .. :try_end_41} :catchall_84
.line 1326
:try_start_41
iput-object v0, p0, Lokhttp3/internal/e/a;->bYP:[B
.line 1327
iput-object v6, p0, Lokhttp3/internal/e/a;->bYQ:[B
.line 1328
monitor-exit p0
:try_end_46
.catchall {:try_start_41 .. :try_end_46} :catchall_6c
.line 1330
:try_start_46
iget-object v0, p0, Lokhttp3/internal/e/a;->bYO:Ljava/util/concurrent/CountDownLatch;
invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V
:try_end_4b
.catch Ljava/io/InterruptedIOException; {:try_start_46 .. :try_end_4b} :catch_69
.catch Ljava/io/IOException; {:try_start_46 .. :try_end_4b} :catch_6f
.catchall {:try_start_46 .. :try_end_4b} :catchall_84
.line 1299
:cond_4b
if-eqz v2, :cond_54
.line 1300
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V
.line 118
:cond_54
:goto_54
monitor-enter p0
.line 119
:try_start_55
iget-object v0, p0, Lokhttp3/internal/e/a;->bYP:[B
if-nez v0, :cond_97
.line 120
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "Unable to load publicsuffixes.gz resource from the classpath."
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 123
:catchall_61
move-exception v0
monitor-exit p0
:try_end_63
.catchall {:try_start_55 .. :try_end_63} :catchall_61
throw v0
.line 1322
:catchall_64
move-exception v0
:try_start_65
invoke-static {v5}, Lokhttp3/internal/c;->closeQuietly(Ljava/io/Closeable;)V
throw v0
:try_end_69
.catch Ljava/io/InterruptedIOException; {:try_start_65 .. :try_end_69} :catch_69
.catch Ljava/io/IOException; {:try_start_65 .. :try_end_69} :catch_6f
.catchall {:try_start_65 .. :try_end_69} :catchall_84
.line 1292
:catch_69
move-exception v0
move v2, v4
.line 1296
goto :goto_14
.line 1328
:catchall_6c
move-exception v0
:try_start_6d
monitor-exit p0
:try_end_6e
.catchall {:try_start_6d .. :try_end_6e} :catchall_6c
:try_start_6e
throw v0
:try_end_6f
.catch Ljava/io/InterruptedIOException; {:try_start_6e .. :try_end_6f} :catch_69
.catch Ljava/io/IOException; {:try_start_6e .. :try_end_6f} :catch_6f
.catchall {:try_start_6e .. :try_end_6f} :catchall_84
.line 1293
:catch_6f
move-exception v0
.line 1294
:try_start_70
invoke-static {}, Lokhttp3/internal/d/j;->Sc()Lokhttp3/internal/d/j;
move-result-object v5
const/4 v6, 0x5
const-string v7, "Failed to read public suffix list"
invoke-virtual {v5, v6, v7, v0}, Lokhttp3/internal/d/j;->a(ILjava/lang/String;Ljava/lang/Throwable;)V
:try_end_7a
.catchall {:try_start_70 .. :try_end_7a} :catchall_84
.line 1299
if-eqz v2, :cond_54
.line 1300
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V
goto :goto_54
.line 1299
:catchall_84
move-exception v0
if-eqz v2, :cond_8e
.line 1300
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Thread;->interrupt()V
:cond_8e
throw v0
.line 113
:cond_8f
:try_start_8f
iget-object v0, p0, Lokhttp3/internal/e/a;->bYO:Ljava/util/concurrent/CountDownLatch;
invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->await()V
:try_end_94
.catch Ljava/lang/InterruptedException; {:try_start_8f .. :try_end_94} :catch_95
goto :goto_54
:catch_95
move-exception v0
goto :goto_54
.line 123
:cond_97
:try_start_97
monitor-exit p0
:try_end_98
.catchall {:try_start_97 .. :try_end_98} :catchall_61
.line 126
array-length v0, p1
new-array v6, v0, [[B
move v0, v1
.line 127
:goto_9c
array-length v2, p1
if-ge v0, v2, :cond_ac
.line 128
aget-object v2, p1, v0
sget-object v5, Lokhttp3/internal/c;->UTF_8:Ljava/nio/charset/Charset;
invoke-virtual {v2, v5}, Ljava/lang/String;->getBytes(Ljava/nio/charset/Charset;)[B
move-result-object v2
aput-object v2, v6, v0
.line 127
add-int/lit8 v0, v0, 0x1
goto :goto_9c
:cond_ac
move v0, v1
.line 134
:goto_ad
array-length v2, v6
if-ge v0, v2, :cond_12a
.line 135
iget-object v2, p0, Lokhttp3/internal/e/a;->bYP:[B
invoke-static {v2, v6, v0}, Lokhttp3/internal/e/a;->a([B[[BI)Ljava/lang/String;
move-result-object v2
.line 136
if-eqz v2, :cond_fc
.line 148
:goto_b8
array-length v0, v6
if-le v0, v4, :cond_128
.line 149
invoke-virtual {v6}, [[B->clone()Ljava/lang/Object;
move-result-object v0
check-cast v0, [[B
move v4, v1
.line 150
:goto_c2
array-length v5, v0
add-int/lit8 v5, v5, -0x1
if-ge v4, v5, :cond_128
.line 151
sget-object v5, Lokhttp3/internal/e/a;->bYJ:[B
aput-object v5, v0, v4
.line 152
iget-object v5, p0, Lokhttp3/internal/e/a;->bYP:[B
invoke-static {v5, v0, v4}, Lokhttp3/internal/e/a;->a([B[[BI)Ljava/lang/String;
move-result-object v5
.line 153
if-eqz v5, :cond_ff
move-object v4, v5
.line 162
:goto_d4
if-eqz v4, :cond_e4
.line 163
:goto_d6
array-length v0, v6
add-int/lit8 v0, v0, -0x1
if-ge v1, v0, :cond_e4
.line 164
iget-object v0, p0, Lokhttp3/internal/e/a;->bYQ:[B
invoke-static {v0, v6, v1}, Lokhttp3/internal/e/a;->a([B[[BI)Ljava/lang/String;
move-result-object v0
.line 166
if-eqz v0, :cond_102
move-object v3, v0
.line 173
:cond_e4
if-eqz v3, :cond_105
.line 175
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "!"
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 176
const-string v1, "\\."
invoke-virtual {v0, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
.line 190
:cond_fb
:goto_fb
return-object v0
.line 134
:cond_fc
add-int/lit8 v0, v0, 0x1
goto :goto_ad
.line 150
:cond_ff
add-int/lit8 v4, v4, 0x1
goto :goto_c2
.line 163
:cond_102
add-int/lit8 v1, v1, 0x1
goto :goto_d6
.line 177
:cond_105
if-nez v2, :cond_10c
if-nez v4, :cond_10c
.line 178
sget-object v0, Lokhttp3/internal/e/a;->bYL:[Ljava/lang/String;
goto :goto_fb
.line 181
:cond_10c
if-eqz v2, :cond_122
.line 182
const-string v0, "\\."
invoke-virtual {v2, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v1
.line 185
:goto_114
if-eqz v4, :cond_125
.line 186
const-string v0, "\\."
invoke-virtual {v4, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
.line 189
:goto_11c
array-length v2, v1
array-length v3, v0
if-le v2, v3, :cond_fb
move-object v0, v1
.line 190
goto :goto_fb
.line 183
:cond_122
sget-object v1, Lokhttp3/internal/e/a;->bYK:[Ljava/lang/String;
goto :goto_114
.line 187
:cond_125
sget-object v0, Lokhttp3/internal/e/a;->bYK:[Ljava/lang/String;
goto :goto_11c
:cond_128
move-object v4, v3
goto :goto_d4
:cond_12a
move-object v2, v3
goto :goto_b8
.end method
# virtual methods
.method public final hT(Ljava/lang/String;)Ljava/lang/String;
.registers 8
.prologue
const/16 v5, 0x21
const/4 v4, 0x0
.line 78
if-nez p1, :cond_d
new-instance v0, Ljava/lang/NullPointerException;
const-string v1, "domain == null"
invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
throw v0
.line 81
:cond_d
invoke-static {p1}, Ljava/net/IDN;->toUnicode(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 82
const-string v1, "\\."
invoke-virtual {v0, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
.line 83
invoke-direct {p0, v0}, Lokhttp3/internal/e/a;->k([Ljava/lang/String;)[Ljava/lang/String;
move-result-object v1
.line 84
array-length v2, v0
array-length v3, v1
if-ne v2, v3, :cond_29
aget-object v2, v1, v4
invoke-virtual {v2, v4}, Ljava/lang/String;->charAt(I)C
move-result v2
if-eq v2, v5, :cond_29
.line 86
const/4 v0, 0x0
.line 105
:goto_28
return-object v0
.line 90
:cond_29
aget-object v2, v1, v4
invoke-virtual {v2, v4}, Ljava/lang/String;->charAt(I)C
move-result v2
if-ne v2, v5, :cond_50
.line 92
array-length v0, v0
array-length v1, v1
sub-int/2addr v0, v1
.line 98
:goto_34
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
.line 99
const-string v2, "\\."
invoke-virtual {p1, v2}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v2
.line 100
:goto_3f
array-length v3, v2
if-ge v0, v3, :cond_56
.line 101
aget-object v3, v2, v0
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const/16 v4, 0x2e
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 100
add-int/lit8 v0, v0, 0x1
goto :goto_3f
.line 95
:cond_50
array-length v0, v0
array-length v1, v1
add-int/lit8 v1, v1, 0x1
sub-int/2addr v0, v1
goto :goto_34
.line 103
:cond_56
invoke-virtual {v1}, Ljava/lang/StringBuilder;->length()I
move-result v0
add-int/lit8 v0, v0, -0x1
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->deleteCharAt(I)Ljava/lang/StringBuilder;
.line 105
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
goto :goto_28
.end method