HttpProxyRules.smali

.class public Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;
.super Ljava/lang/Object;
.source "HttpProxyRules.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$1;,
        Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;
    }
.end annotation


# static fields
.field private static final BLACK_RULE_FILENAME:Ljava/lang/String; = "QB_BR2.v"

.field private static final CONDITION_INDEX_ALWAYS:I = 0x0

.field private static final CONDITION_INDEX_ALWAYS_EXPIREDTIME:I = 0x3

.field private static final CONDITION_INDEX_MOBILE:I = 0x2

.field private static final CONDITION_INDEX_MOBILE_EXPIREDTIME:I = 0x5

.field private static final CONDITION_INDEX_WIFI:I = 0x1

.field private static final CONDITION_INDEX_WIFI_EXPIREDTIME:I = 0x4

.field private static DEBUG:Z = false

.field private static final FILENAME:Ljava/lang/String; = "ProxyRules2.json"

.field private static final GRAY_RULE_FILENAME:Ljava/lang/String; = "QB_GR2.v"

.field private static final RULES_VERSION:I = 0x2

.field public static final RULE_CONDITION_ALWAYS:I = 0x1

.field public static final RULE_CONDITION_MOBILE:I = 0x3

.field public static final RULE_CONDITION_UNKNOWN:I = 0x4

.field public static final RULE_CONDITION_WIFI:I = 0x2

.field private static final RULE_FILE_FORMAT_VERSION:I = 0x2

.field public static final RULE_TYPE_BLACK:I = 0x0

.field public static final RULE_TYPE_GRAY:I = 0x2

.field public static final RULE_TYPE_WHITE:I = 0x1

.field private static TAG:Ljava/lang/String; = null

.field private static final WHITE_RULE_FILENAME:Ljava/lang/String; = "QB_WR2.v"

.field private static volatile sInstance:Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;


# instance fields
.field private mBlackRulesMap:Ljava/util/HashMap;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;",
            ">;"
        }
    .end annotation
.end field

.field private mContext:Landroid/content/Context;

.field private mGrayRulesMap:Ljava/util/HashMap;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;",
            ">;"
        }
    .end annotation
.end field

.field private mLock:Ljava/lang/Object;

.field private mRulesLoaded:Z

.field private mWhiteRulesMap:Ljava/util/HashMap;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;",
            ">;"
        }
    .end annotation
.end field


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 40
    const-string v0, "QbSdk"

    sput-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    .line 41
    sget-boolean v0, Lcom/quickbird/sdk/QuickBird;->SDK_DEBUG:Z

    sput-boolean v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->DEBUG:Z

    return-void
.end method

.method private constructor <init>(Landroid/content/Context;)V
    .registers 3

    .prologue
    .line 120
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 99
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mBlackRulesMap:Ljava/util/HashMap;

    .line 100
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mWhiteRulesMap:Ljava/util/HashMap;

    .line 101
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mGrayRulesMap:Ljava/util/HashMap;

    .line 104
    new-instance v0, Ljava/lang/Object;

    invoke-direct {v0}, Ljava/lang/Object;-><init>()V

    iput-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mLock:Ljava/lang/Object;

    .line 106
    const/4 v0, 0x0

    iput-boolean v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mRulesLoaded:Z

    .line 121
    invoke-virtual {p1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    iput-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mContext:Landroid/content/Context;

    .line 122
    return-void
.end method

.method private getCurrentCondition()I
    .registers 2

    .prologue
    .line 503
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mContext:Landroid/content/Context;

    invoke-static {v0}, Lcom/quickbird/sdk/utils/QBNetworkUtils;->getSimpleNetworkType(Landroid/content/Context;)I

    move-result v0

    .line 504
    packed-switch v0, :pswitch_data_10

    .line 510
    :pswitch_9
    const/4 v0, 0x4

    :goto_a
    return v0

    .line 506
    :pswitch_b
    const/4 v0, 0x3

    goto :goto_a

    .line 508
    :pswitch_d
    const/4 v0, 0x2

    goto :goto_a

    .line 504
    nop

    :pswitch_data_10
    .packed-switch 0x1
        :pswitch_d
        :pswitch_9
        :pswitch_9
        :pswitch_b
    .end packed-switch
.end method

.method public static getInstance(Landroid/content/Context;)Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;
    .registers 3

    .prologue
    .line 110
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->sInstance:Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;

    if-nez v0, :cond_13

    .line 111
    const-class v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;

    monitor-enter v1

    .line 112
    :try_start_7
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->sInstance:Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;

    if-nez v0, :cond_12

    .line 113
    new-instance v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;

    invoke-direct {v0, p0}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;-><init>(Landroid/content/Context;)V

    sput-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->sInstance:Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;

    .line 115
    :cond_12
    monitor-exit v1
    :try_end_13
    .catchall {:try_start_7 .. :try_end_13} :catchall_16

    .line 117
    :cond_13
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->sInstance:Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;

    return-object v0

    .line 115
    :catchall_16
    move-exception v0

    :try_start_17
    monitor-exit v1
    :try_end_18
    .catchall {:try_start_17 .. :try_end_18} :catchall_16

    throw v0
.end method

.method private loadRuleData(Ljava/util/HashMap;I)V
    .registers 11
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;",
            ">;I)V"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;,
            Lorg/json/JSONException;
        }
    .end annotation

    .prologue
    .line 607
    .line 608
    packed-switch p2, :pswitch_data_6c

    .line 619
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    const-string v1, "Load rule data failed! Unknown rule type."

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 640
    :cond_a
    return-void

    .line 610
    :pswitch_b
    const-string v0, "QB_BR2.v"

    .line 622
    :goto_d
    iget-object v1, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mContext:Landroid/content/Context;

    invoke-virtual {v1, v0}, Landroid/content/Context;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File;

    move-result-object v0

    invoke-virtual {v0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;

    move-result-object v0

    .line 623
    invoke-static {v0}, Lcom/quickbird/mini/utils/SecureJsonFile;->load(Ljava/lang/String;)Lorg/json/JSONObject;

    move-result-object v1

    .line 624
    if-eqz v1, :cond_a

    .line 625
    invoke-virtual {v1}, Lorg/json/JSONObject;->keys()Ljava/util/Iterator;

    move-result-object v2

    .line 627
    :goto_21
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_a

    .line 628
    new-instance v3, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    const/4 v0, 0x0

    invoke-direct {v3, v0}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;-><init>(Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$1;)V

    .line 629
    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 630
    invoke-virtual {v1, v0}, Lorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;

    move-result-object v4

    .line 631
    const/4 v5, 0x0

    invoke-virtual {v4, v5}, Lorg/json/JSONArray;->getBoolean(I)Z

    move-result v5

    iput-boolean v5, v3, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysMatch:Z

    .line 632
    const/4 v5, 0x1

    invoke-virtual {v4, v5}, Lorg/json/JSONArray;->getBoolean(I)Z

    move-result v5

    iput-boolean v5, v3, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiMatch:Z

    .line 633
    const/4 v5, 0x2

    invoke-virtual {v4, v5}, Lorg/json/JSONArray;->getBoolean(I)Z

    move-result v5

    iput-boolean v5, v3, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileMatch:Z

    .line 634
    const/4 v5, 0x3

    invoke-virtual {v4, v5}, Lorg/json/JSONArray;->getLong(I)J

    move-result-wide v6

    iput-wide v6, v3, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysExpiredTime:J

    .line 635
    const/4 v5, 0x4

    invoke-virtual {v4, v5}, Lorg/json/JSONArray;->getLong(I)J

    move-result-wide v6

    iput-wide v6, v3, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiExpiredTime:J

    .line 636
    const/4 v5, 0x5

    invoke-virtual {v4, v5}, Lorg/json/JSONArray;->getLong(I)J

    move-result-wide v4

    iput-wide v4, v3, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileExpiredTime:J

    .line 637
    invoke-virtual {p1, v0, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_21

    .line 613
    :pswitch_65
    const-string v0, "QB_WR2.v"

    goto :goto_d

    .line 616
    :pswitch_68
    const-string v0, "QB_GR2.v"

    goto :goto_d

    .line 608
    nop

    :pswitch_data_6c
    .packed-switch 0x0
        :pswitch_b
        :pswitch_65
        :pswitch_68
    .end packed-switch
.end method

.method private loadRules()V
    .registers 7
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;,
            Lorg/json/JSONException;
        }
    .end annotation

    .prologue
    const/4 v5, 0x0

    const/4 v4, 0x2

    const/4 v3, 0x1

    .line 574
    iget-boolean v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mRulesLoaded:Z

    if-eqz v0, :cond_8

    .line 604
    :goto_7
    return-void

    .line 575
    :cond_8
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mContext:Landroid/content/Context;

    invoke-static {v0}, Lcom/quickbird/sdk/internal/QBConfigsMgr;->getRuleFileFormatVersion(Landroid/content/Context;)I

    move-result v0

    .line 577
    if-ne v0, v3, :cond_63

    .line 578
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mContext:Landroid/content/Context;

    const-string v1, "ProxyRules2.json"

    invoke-virtual {v0, v1}, Landroid/content/Context;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File;

    move-result-object v0

    invoke-virtual {v0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;

    move-result-object v0

    .line 579
    invoke-static {v0}, Lcom/quickbird/mini/utils/SecureJsonFile;->load(Ljava/lang/String;)Lorg/json/JSONObject;

    move-result-object v0

    .line 580
    if-eqz v0, :cond_5b

    .line 582
    const-string v1, "black_list"

    invoke-virtual {v0, v1}, Lorg/json/JSONObject;->isNull(Ljava/lang/String;)Z

    move-result v1

    if-nez v1, :cond_35

    .line 583
    const-string v1, "black_list"

    invoke-virtual {v0, v1}, Lorg/json/JSONObject;->getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;

    move-result-object v1

    .line 584
    iget-object v2, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mBlackRulesMap:Ljava/util/HashMap;

    invoke-direct {p0, v1, v2, v5}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->parseOldFormatVersionData(Lorg/json/JSONObject;Ljava/util/HashMap;I)V

    .line 587
    :cond_35
    const-string v1, "white_list"

    invoke-virtual {v0, v1}, Lorg/json/JSONObject;->isNull(Ljava/lang/String;)Z

    move-result v1

    if-nez v1, :cond_48

    .line 588
    const-string v1, "white_list"

    invoke-virtual {v0, v1}, Lorg/json/JSONObject;->getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;

    move-result-object v1

    .line 589
    iget-object v2, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mWhiteRulesMap:Ljava/util/HashMap;

    invoke-direct {p0, v1, v2, v3}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->parseOldFormatVersionData(Lorg/json/JSONObject;Ljava/util/HashMap;I)V

    .line 592
    :cond_48
    const-string v1, "gray_list"

    invoke-virtual {v0, v1}, Lorg/json/JSONObject;->isNull(Ljava/lang/String;)Z

    move-result v1

    if-nez v1, :cond_5b

    .line 593
    const-string v1, "gray_list"

    invoke-virtual {v0, v1}, Lorg/json/JSONObject;->getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;

    move-result-object v0

    .line 594
    iget-object v1, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mGrayRulesMap:Ljava/util/HashMap;

    invoke-direct {p0, v0, v1, v4}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->parseOldFormatVersionData(Lorg/json/JSONObject;Ljava/util/HashMap;I)V

    .line 597
    :cond_5b
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mContext:Landroid/content/Context;

    invoke-static {v0, v4}, Lcom/quickbird/sdk/internal/QBConfigsMgr;->updateRuleFileFormatVersion(Landroid/content/Context;I)V

    .line 603
    :cond_60
    :goto_60
    iput-boolean v3, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mRulesLoaded:Z

    goto :goto_7

    .line 598
    :cond_63
    if-ne v0, v4, :cond_60

    .line 599
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mBlackRulesMap:Ljava/util/HashMap;

    invoke-direct {p0, v0, v5}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->loadRuleData(Ljava/util/HashMap;I)V

    .line 600
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mWhiteRulesMap:Ljava/util/HashMap;

    invoke-direct {p0, v0, v3}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->loadRuleData(Ljava/util/HashMap;I)V

    .line 601
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mGrayRulesMap:Ljava/util/HashMap;

    invoke-direct {p0, v0, v4}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->loadRuleData(Ljava/util/HashMap;I)V

    goto :goto_60
.end method

.method private matchCondition(Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;)Z
    .registers 8

    .prologue
    const-wide/16 v4, 0x0

    const/4 v0, 0x1

    const/4 v1, 0x0

    .line 446
    invoke-direct {p0}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->getCurrentCondition()I

    move-result v2

    .line 447
    packed-switch v2, :pswitch_data_3a

    move v0, v1

    .line 460
    :cond_c
    :goto_c
    return v0

    .line 449
    :pswitch_d
    iget-boolean v2, p1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileMatch:Z

    if-eqz v2, :cond_21

    iget-wide v2, p1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileExpiredTime:J

    cmp-long v2, v2, v4

    if-eqz v2, :cond_c

    iget-wide v2, p1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileExpiredTime:J

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    cmp-long v2, v2, v4

    if-gez v2, :cond_c

    :cond_21
    move v0, v1

    .line 452
    goto :goto_c

    .line 455
    :pswitch_23
    iget-boolean v2, p1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiMatch:Z

    if-eqz v2, :cond_37

    iget-wide v2, p1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiExpiredTime:J

    cmp-long v2, v2, v4

    if-eqz v2, :cond_c

    iget-wide v2, p1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiExpiredTime:J

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    cmp-long v2, v2, v4

    if-gez v2, :cond_c

    :cond_37
    move v0, v1

    .line 458
    goto :goto_c

    .line 447
    nop

    :pswitch_data_3a
    .packed-switch 0x2
        :pswitch_23
        :pswitch_d
    .end packed-switch
.end method

.method private parseOldFormatVersionData(Lorg/json/JSONObject;Ljava/util/HashMap;I)V
    .registers 12
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/json/JSONObject;",
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;",
            ">;I)V"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lorg/json/JSONException;
        }
    .end annotation

    .prologue
    const/4 v7, 0x0

    const/4 v6, 0x1

    .line 650
    if-nez p1, :cond_5

    .line 695
    :goto_4
    return-void

    .line 653
    :cond_5
    const-string v0, "always"

    invoke-virtual {p1, v0}, Lorg/json/JSONObject;->isNull(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_34

    .line 654
    const-string v0, "always"

    invoke-virtual {p1, v0}, Lorg/json/JSONObject;->getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;

    move-result-object v1

    .line 655
    invoke-virtual {v1}, Lorg/json/JSONObject;->keys()Ljava/util/Iterator;

    move-result-object v2

    .line 656
    :goto_17
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_34

    .line 657
    new-instance v3, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    invoke-direct {v3, v7}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;-><init>(Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$1;)V

    .line 658
    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 659
    invoke-virtual {v1, v0}, Lorg/json/JSONObject;->getLong(Ljava/lang/String;)J

    move-result-wide v4

    iput-wide v4, v3, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysExpiredTime:J

    .line 660
    iput-boolean v6, v3, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysMatch:Z

    .line 661
    invoke-virtual {p2, v0, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_17

    .line 665
    :cond_34
    const-string v0, "wifi"

    invoke-virtual {p1, v0}, Lorg/json/JSONObject;->isNull(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_6b

    .line 666
    const-string v0, "wifi"

    invoke-virtual {p1, v0}, Lorg/json/JSONObject;->getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;

    move-result-object v2

    .line 667
    invoke-virtual {v2}, Lorg/json/JSONObject;->keys()Ljava/util/Iterator;

    move-result-object v3

    .line 668
    :goto_46
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_6b

    .line 669
    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 670
    invoke-virtual {p2, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    .line 671
    if-nez v1, :cond_5f

    .line 672
    new-instance v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    invoke-direct {v1, v7}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;-><init>(Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$1;)V

    .line 674
    :cond_5f
    invoke-virtual {v2, v0}, Lorg/json/JSONObject;->getLong(Ljava/lang/String;)J

    move-result-wide v4

    iput-wide v4, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiExpiredTime:J

    .line 675
    iput-boolean v6, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiMatch:Z

    .line 676
    invoke-virtual {p2, v0, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_46

    .line 680
    :cond_6b
    const-string v0, "mobile"

    invoke-virtual {p1, v0}, Lorg/json/JSONObject;->isNull(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_a2

    .line 681
    const-string v0, "mobile"

    invoke-virtual {p1, v0}, Lorg/json/JSONObject;->getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;

    move-result-object v2

    .line 682
    invoke-virtual {v2}, Lorg/json/JSONObject;->keys()Ljava/util/Iterator;

    move-result-object v3

    .line 683
    :goto_7d
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_a2

    .line 684
    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 685
    invoke-virtual {p2, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    .line 686
    if-nez v1, :cond_96

    .line 687
    new-instance v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    invoke-direct {v1, v7}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;-><init>(Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$1;)V

    .line 689
    :cond_96
    invoke-virtual {v2, v0}, Lorg/json/JSONObject;->getLong(Ljava/lang/String;)J

    move-result-wide v4

    iput-wide v4, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileExpiredTime:J

    .line 690
    iput-boolean v6, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileMatch:Z

    .line 691
    invoke-virtual {p2, v0, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_7d

    .line 694
    :cond_a2
    invoke-direct {p0, p2, p3}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->saveRules(Ljava/util/HashMap;I)Z

    goto/16 :goto_4
.end method

.method private saveRules(Ljava/util/HashMap;I)Z
    .registers 15
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;",
            ">;I)Z"
        }
    .end annotation

    .prologue
    const/4 v4, 0x1

    const/4 v3, 0x0

    .line 521
    .line 522
    packed-switch p2, :pswitch_data_96

    .line 533
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    const-string v1, "Save rule failed! Unknown rule type."

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->e(Ljava/lang/String;Ljava/lang/String;)V

    move v0, v3

    .line 563
    :goto_d
    return v0

    .line 524
    :pswitch_e
    const-string v0, "QB_BR2.v"

    move-object v2, v0

    .line 537
    :goto_11
    new-instance v5, Lorg/json/JSONObject;

    invoke-direct {v5}, Lorg/json/JSONObject;-><init>()V

    .line 538
    invoke-virtual {p1}, Ljava/util/HashMap;->keySet()Ljava/util/Set;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v6

    :goto_1e
    invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_67

    invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 539
    invoke-virtual {p1, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    .line 540
    new-instance v7, Lorg/json/JSONArray;

    invoke-direct {v7}, Lorg/json/JSONArray;-><init>()V

    .line 542
    const/4 v8, 0x0

    :try_start_36
    iget-boolean v9, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysMatch:Z

    invoke-virtual {v7, v8, v9}, Lorg/json/JSONArray;->put(IZ)Lorg/json/JSONArray;

    .line 543
    const/4 v8, 0x1

    iget-boolean v9, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiMatch:Z

    invoke-virtual {v7, v8, v9}, Lorg/json/JSONArray;->put(IZ)Lorg/json/JSONArray;

    .line 544
    const/4 v8, 0x2

    iget-boolean v9, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileMatch:Z

    invoke-virtual {v7, v8, v9}, Lorg/json/JSONArray;->put(IZ)Lorg/json/JSONArray;

    .line 545
    const/4 v8, 0x3

    iget-wide v10, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysExpiredTime:J

    invoke-virtual {v7, v8, v10, v11}, Lorg/json/JSONArray;->put(IJ)Lorg/json/JSONArray;

    .line 546
    const/4 v8, 0x4

    iget-wide v10, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiExpiredTime:J

    invoke-virtual {v7, v8, v10, v11}, Lorg/json/JSONArray;->put(IJ)Lorg/json/JSONArray;

    .line 547
    const/4 v8, 0x5

    iget-wide v10, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileExpiredTime:J

    invoke-virtual {v7, v8, v10, v11}, Lorg/json/JSONArray;->put(IJ)Lorg/json/JSONArray;

    .line 548
    invoke-virtual {v5, v0, v7}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
    :try_end_5c
    .catch Lorg/json/JSONException; {:try_start_36 .. :try_end_5c} :catch_5d

    goto :goto_1e

    .line 549
    :catch_5d
    move-exception v0

    goto :goto_1e

    .line 527
    :pswitch_5f
    const-string v0, "QB_WR2.v"

    move-object v2, v0

    .line 528
    goto :goto_11

    .line 530
    :pswitch_63
    const-string v0, "QB_GR2.v"

    move-object v2, v0

    .line 531
    goto :goto_11

    .line 554
    :cond_67
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mContext:Landroid/content/Context;

    invoke-virtual {v0, v2}, Landroid/content/Context;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File;

    move-result-object v0

    invoke-virtual {v0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;

    move-result-object v0

    .line 556
    :try_start_71
    invoke-static {v0, v5}, Lcom/quickbird/mini/utils/SecureJsonFile;->save(Ljava/lang/String;Lorg/json/JSONObject;)V
    :try_end_74
    .catch Ljava/io/IOException; {:try_start_71 .. :try_end_74} :catch_76

    move v0, v4

    .line 563
    goto :goto_d

    .line 557
    :catch_76
    move-exception v0

    .line 558
    sget-boolean v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->DEBUG:Z

    if-eqz v1, :cond_93

    .line 559
    sget-object v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v4, "Save rules error! "

    invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v1, v0}, Lcom/quickbird/sdk/utils/QBLogger;->e(Ljava/lang/String;Ljava/lang/String;)V

    :cond_93
    move v0, v3

    .line 561
    goto/16 :goto_d

    .line 522
    :pswitch_data_96
    .packed-switch 0x0
        :pswitch_e
        :pswitch_5f
        :pswitch_63
    .end packed-switch
.end method


# virtual methods
.method public addRules(ILjava/util/ArrayList;IJ)V
    .registers 16
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(I",
            "Ljava/util/ArrayList",
            "<",
            "Ljava/lang/String;",
            ">;IJ)V"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;,
            Lorg/json/JSONException;
        }
    .end annotation

    .prologue
    .line 134
    if-eqz p2, :cond_8

    invoke-virtual {p2}, Ljava/util/ArrayList;->size()I

    move-result v0

    if-nez v0, :cond_9

    .line 190
    :cond_8
    :goto_8
    return-void

    .line 138
    :cond_9
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    .line 140
    iget-object v3, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mLock:Ljava/lang/Object;

    monitor-enter v3

    .line 141
    :try_start_10
    invoke-direct {p0}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->loadRules()V

    .line 143
    packed-switch p1, :pswitch_data_aa

    .line 156
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    const-string v1, "Add rule failed! Rule type error!"

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 157
    monitor-exit v3

    goto :goto_8

    .line 185
    :catchall_1f
    move-exception v0

    monitor-exit v3
    :try_end_21
    .catchall {:try_start_10 .. :try_end_21} :catchall_1f

    throw v0

    .line 145
    :pswitch_22
    :try_start_22
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mBlackRulesMap:Ljava/util/HashMap;

    move-object v2, v0

    .line 159
    :goto_25
    invoke-virtual {p2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v6

    :cond_29
    :goto_29
    invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_82

    invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 160
    invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v1

    if-nez v1, :cond_29

    .line 161
    invoke-virtual {v2, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    .line 162
    if-nez v1, :cond_49

    .line 163
    new-instance v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    const/4 v7, 0x0

    invoke-direct {v1, v7}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;-><init>(Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$1;)V

    .line 165
    :cond_49
    packed-switch p3, :pswitch_data_b4

    .line 179
    sget-object v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    new-instance v7, Ljava/lang/StringBuilder;

    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

    const-string v8, "Add rule failed! Unknown rule condition! : "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7, v0}, 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

    invoke-static {v1, v0}, Lcom/quickbird/sdk/utils/QBLogger;->e(Ljava/lang/String;Ljava/lang/String;)V

    goto :goto_29

    .line 149
    :pswitch_65
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mWhiteRulesMap:Ljava/util/HashMap;

    move-object v2, v0

    .line 150
    goto :goto_25

    .line 153
    :pswitch_69
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mGrayRulesMap:Ljava/util/HashMap;

    move-object v2, v0

    .line 154
    goto :goto_25

    .line 167
    :pswitch_6d
    const/4 v7, 0x1

    iput-boolean v7, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysMatch:Z

    .line 168
    iput-wide p4, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysExpiredTime:J

    .line 182
    :goto_72
    invoke-virtual {v2, v0, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_29

    .line 171
    :pswitch_76
    const/4 v7, 0x1

    iput-boolean v7, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileMatch:Z

    .line 172
    iput-wide p4, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileExpiredTime:J

    goto :goto_72

    .line 175
    :pswitch_7c
    const/4 v7, 0x1

    iput-boolean v7, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiMatch:Z

    .line 176
    iput-wide p4, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiExpiredTime:J

    goto :goto_72

    .line 184
    :cond_82
    invoke-direct {p0, v2, p1}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->saveRules(Ljava/util/HashMap;I)Z

    .line 185
    monitor-exit v3
    :try_end_86
    .catchall {:try_start_22 .. :try_end_86} :catchall_1f

    .line 187
    sget-boolean v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->DEBUG:Z

    if-eqz v0, :cond_8

    .line 188
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "Add rules using time : "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v2

    sub-long/2addr v2, v4

    invoke-virtual {v1, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->d(Ljava/lang/String;Ljava/lang/String;)V

    goto/16 :goto_8

    .line 143
    nop

    :pswitch_data_aa
    .packed-switch 0x0
        :pswitch_22
        :pswitch_65
        :pswitch_69
    .end packed-switch

    .line 165
    :pswitch_data_b4
    .packed-switch 0x1
        :pswitch_6d
        :pswitch_7c
        :pswitch_76
    .end packed-switch
.end method

.method public clearRules(II)V
    .registers 13
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;,
            Lorg/json/JSONException;
        }
    .end annotation

    .prologue
    .line 340
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    .line 341
    iget-object v3, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mLock:Ljava/lang/Object;

    monitor-enter v3

    .line 342
    :try_start_7
    invoke-direct {p0}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->loadRules()V

    .line 344
    packed-switch p1, :pswitch_data_b6

    .line 357
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    const-string v1, "Clear rule failed! Unknown rule type."

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 358
    monitor-exit v3

    .line 397
    :cond_15
    :goto_15
    return-void

    .line 346
    :pswitch_16
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mBlackRulesMap:Ljava/util/HashMap;

    move-object v2, v0

    .line 360
    :goto_19
    new-instance v6, Ljava/util/HashSet;

    invoke-direct {v6}, Ljava/util/HashSet;-><init>()V

    .line 361
    invoke-virtual {v2}, Ljava/util/HashMap;->keySet()Ljava/util/Set;

    move-result-object v0

    .line 362
    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v7

    :cond_26
    :goto_26
    invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_7b

    invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 363
    invoke-virtual {v2, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    .line 364
    if-nez v1, :cond_49

    .line 365
    invoke-virtual {v6, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    goto :goto_26

    .line 393
    :catchall_3e
    move-exception v0

    monitor-exit v3
    :try_end_40
    .catchall {:try_start_7 .. :try_end_40} :catchall_3e

    throw v0

    .line 350
    :pswitch_41
    :try_start_41
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mWhiteRulesMap:Ljava/util/HashMap;

    move-object v2, v0

    .line 351
    goto :goto_19

    .line 354
    :pswitch_45
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mGrayRulesMap:Ljava/util/HashMap;

    move-object v2, v0

    .line 355
    goto :goto_19

    .line 368
    :cond_49
    packed-switch p2, :pswitch_data_c0

    .line 382
    sget-object v8, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    const-string v9, "Clear rule failed! Unknown condtion."

    invoke-static {v8, v9}, Lcom/quickbird/sdk/utils/QBLogger;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 385
    :goto_53
    iget-boolean v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysMatch:Z

    if-nez v8, :cond_26

    iget-boolean v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileMatch:Z

    if-nez v8, :cond_26

    iget-boolean v1, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiMatch:Z

    if-nez v1, :cond_26

    .line 386
    invoke-virtual {v6, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    goto :goto_26

    .line 370
    :pswitch_63
    const/4 v8, 0x0

    iput-boolean v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysMatch:Z

    .line 371
    const-wide/16 v8, 0x0

    iput-wide v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysExpiredTime:J

    goto :goto_53

    .line 374
    :pswitch_6b
    const/4 v8, 0x0

    iput-boolean v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileMatch:Z

    .line 375
    const-wide/16 v8, 0x0

    iput-wide v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileExpiredTime:J

    goto :goto_53

    .line 378
    :pswitch_73
    const/4 v8, 0x0

    iput-boolean v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiMatch:Z

    .line 379
    const-wide/16 v8, 0x0

    iput-wide v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiExpiredTime:J

    goto :goto_53

    .line 389
    :cond_7b
    invoke-virtual {v6}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_7f
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_8f

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 390
    invoke-virtual {v2, v0}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_7f

    .line 392
    :cond_8f
    invoke-direct {p0, v2, p1}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->saveRules(Ljava/util/HashMap;I)Z

    .line 393
    monitor-exit v3
    :try_end_93
    .catchall {:try_start_41 .. :try_end_93} :catchall_3e

    .line 394
    sget-boolean v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->DEBUG:Z

    if-eqz v0, :cond_15

    .line 395
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "Clear rules using time : "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v2

    sub-long/2addr v2, v4

    invoke-virtual {v1, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->d(Ljava/lang/String;Ljava/lang/String;)V

    goto/16 :goto_15

    .line 344
    :pswitch_data_b6
    .packed-switch 0x0
        :pswitch_16
        :pswitch_41
        :pswitch_45
    .end packed-switch

    .line 368
    :pswitch_data_c0
    .packed-switch 0x1
        :pswitch_63
        :pswitch_73
        :pswitch_6b
    .end packed-switch
.end method

.method public delRules(ILjava/util/ArrayList;I)V
    .registers 14
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(I",
            "Ljava/util/ArrayList",
            "<",
            "Ljava/lang/String;",
            ">;I)V"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lorg/json/JSONException;,
            Ljava/io/IOException;
        }
    .end annotation

    .prologue
    .line 201
    if-eqz p2, :cond_8

    invoke-virtual {p2}, Ljava/util/ArrayList;->size()I

    move-result v0

    if-nez v0, :cond_9

    .line 263
    :cond_8
    :goto_8
    return-void

    .line 205
    :cond_9
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    .line 207
    iget-object v3, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mLock:Ljava/lang/Object;

    monitor-enter v3

    .line 208
    :try_start_10
    invoke-direct {p0}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->loadRules()V

    .line 210
    packed-switch p1, :pswitch_data_b0

    .line 223
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    const-string v1, "Delete rule failed! Rule type error!"

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 224
    monitor-exit v3

    goto :goto_8

    .line 258
    :catchall_1f
    move-exception v0

    monitor-exit v3
    :try_end_21
    .catchall {:try_start_10 .. :try_end_21} :catchall_1f

    throw v0

    .line 212
    :pswitch_22
    :try_start_22
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mBlackRulesMap:Ljava/util/HashMap;

    move-object v2, v0

    .line 226
    :goto_25
    new-instance v6, Ljava/util/HashSet;

    invoke-direct {v6}, Ljava/util/HashSet;-><init>()V

    .line 227
    invoke-virtual {p2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v7

    :cond_2e
    :goto_2e
    invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_75

    invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 228
    invoke-virtual {v2, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    .line 229
    if-eqz v1, :cond_2e

    .line 232
    packed-switch p3, :pswitch_data_ba

    .line 247
    :goto_45
    iget-boolean v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysMatch:Z

    if-nez v8, :cond_2e

    iget-boolean v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileMatch:Z

    if-nez v8, :cond_2e

    iget-boolean v1, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiMatch:Z

    if-nez v1, :cond_2e

    .line 248
    invoke-virtual {v6, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    goto :goto_2e

    .line 216
    :pswitch_55
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mWhiteRulesMap:Ljava/util/HashMap;

    move-object v2, v0

    .line 217
    goto :goto_25

    .line 220
    :pswitch_59
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mGrayRulesMap:Ljava/util/HashMap;

    move-object v2, v0

    .line 221
    goto :goto_25

    .line 234
    :pswitch_5d
    const/4 v8, 0x0

    iput-boolean v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysMatch:Z

    .line 235
    const-wide/16 v8, 0x0

    iput-wide v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysExpiredTime:J

    goto :goto_45

    .line 238
    :pswitch_65
    const/4 v8, 0x0

    iput-boolean v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileMatch:Z

    .line 239
    const-wide/16 v8, 0x0

    iput-wide v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileExpiredTime:J

    goto :goto_45

    .line 242
    :pswitch_6d
    const/4 v8, 0x0

    iput-boolean v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiMatch:Z

    .line 243
    const-wide/16 v8, 0x0

    iput-wide v8, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiExpiredTime:J

    goto :goto_45

    .line 253
    :cond_75
    invoke-virtual {v6}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_79
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_89

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 254
    invoke-virtual {v2, v0}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_79

    .line 257
    :cond_89
    invoke-direct {p0, v2, p1}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->saveRules(Ljava/util/HashMap;I)Z

    .line 258
    monitor-exit v3
    :try_end_8d
    .catchall {:try_start_22 .. :try_end_8d} :catchall_1f

    .line 260
    sget-boolean v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->DEBUG:Z

    if-eqz v0, :cond_8

    .line 261
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "Delete rules using time : "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v2

    sub-long/2addr v2, v4

    invoke-virtual {v1, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->d(Ljava/lang/String;Ljava/lang/String;)V

    goto/16 :goto_8

    .line 210
    :pswitch_data_b0
    .packed-switch 0x0
        :pswitch_22
        :pswitch_55
        :pswitch_59
    .end packed-switch

    .line 232
    :pswitch_data_ba
    .packed-switch 0x1
        :pswitch_5d
        :pswitch_6d
        :pswitch_65
    .end packed-switch
.end method

.method public matchRule(ILjava/lang/String;)Z
    .registers 9

    .prologue
    const/4 v1, 0x0

    .line 406
    .line 407
    iget-object v2, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mLock:Ljava/lang/Object;

    monitor-enter v2

    .line 408
    packed-switch p1, :pswitch_data_4a

    .line 419
    :try_start_7
    monitor-exit v2

    move v0, v1

    .line 427
    :goto_9
    return v0

    .line 410
    :pswitch_a
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mBlackRulesMap:Ljava/util/HashMap;

    invoke-virtual {v0, p2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    .line 421
    :goto_12
    monitor-exit v2

    .line 422
    if-nez v0, :cond_2c

    move v0, v1

    goto :goto_9

    .line 413
    :pswitch_17
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mWhiteRulesMap:Ljava/util/HashMap;

    invoke-virtual {v0, p2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    goto :goto_12

    .line 416
    :pswitch_20
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mGrayRulesMap:Ljava/util/HashMap;

    invoke-virtual {v0, p2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    goto :goto_12

    .line 421
    :catchall_29
    move-exception v0

    monitor-exit v2
    :try_end_2b
    .catchall {:try_start_7 .. :try_end_2b} :catchall_29

    throw v0

    .line 424
    :cond_2c
    iget-boolean v1, v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysMatch:Z

    if-eqz v1, :cond_44

    iget-wide v2, v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysExpiredTime:J

    const-wide/16 v4, 0x0

    cmp-long v1, v2, v4

    if-eqz v1, :cond_42

    iget-wide v2, v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysExpiredTime:J

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    cmp-long v1, v2, v4

    if-ltz v1, :cond_44

    .line 425
    :cond_42
    const/4 v0, 0x1

    goto :goto_9

    .line 427
    :cond_44
    invoke-direct {p0, v0}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->matchCondition(Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;)Z

    move-result v0

    goto :goto_9

    .line 408
    nop

    :pswitch_data_4a
    .packed-switch 0x0
        :pswitch_a
        :pswitch_17
        :pswitch_20
    .end packed-switch
.end method

.method public queryRules(II)Ljava/util/ArrayList;
    .registers 11
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(II)",
            "Ljava/util/ArrayList",
            "<",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lorg/json/JSONException;,
            Ljava/io/IOException;
        }
    .end annotation

    .prologue
    .line 274
    new-instance v2, Ljava/util/ArrayList;

    invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V

    .line 276
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    .line 278
    iget-object v6, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mLock:Ljava/lang/Object;

    monitor-enter v6

    .line 279
    :try_start_c
    invoke-direct {p0}, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->loadRules()V

    .line 281
    packed-switch p1, :pswitch_data_8e

    .line 294
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    const-string v1, "Query rule failed! Unknown rule type."

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 295
    monitor-exit v6

    move-object v0, v2

    .line 329
    :goto_1b
    return-object v0

    .line 283
    :pswitch_1c
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mBlackRulesMap:Ljava/util/HashMap;

    move-object v3, v0

    .line 297
    :goto_1f
    invoke-virtual {v3}, Ljava/util/HashMap;->keySet()Ljava/util/Set;

    move-result-object v0

    .line 298
    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v7

    :cond_27
    :goto_27
    invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_69

    invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 299
    invoke-virtual {v3, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;

    .line 300
    if-eqz v1, :cond_27

    .line 303
    packed-switch p2, :pswitch_data_98

    .line 320
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    const-string v1, "Query rule failed! Unknown condtion."

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->e(Ljava/lang/String;Ljava/lang/String;)V

    goto :goto_27

    .line 324
    :catchall_46
    move-exception v0

    monitor-exit v6
    :try_end_48
    .catchall {:try_start_c .. :try_end_48} :catchall_46

    throw v0

    .line 287
    :pswitch_49
    :try_start_49
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mWhiteRulesMap:Ljava/util/HashMap;

    move-object v3, v0

    .line 288
    goto :goto_1f

    .line 291
    :pswitch_4d
    iget-object v0, p0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->mGrayRulesMap:Ljava/util/HashMap;

    move-object v3, v0

    .line 292
    goto :goto_1f

    .line 305
    :pswitch_51
    iget-boolean v1, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->alwaysMatch:Z

    if-eqz v1, :cond_27

    .line 306
    invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    goto :goto_27

    .line 310
    :pswitch_59
    iget-boolean v1, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->mobileMatch:Z

    if-eqz v1, :cond_27

    .line 311
    invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    goto :goto_27

    .line 315
    :pswitch_61
    iget-boolean v1, v1, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules$RuleInfo;->wifiMatch:Z

    if-eqz v1, :cond_27

    .line 316
    invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    goto :goto_27

    .line 324
    :cond_69
    monitor-exit v6
    :try_end_6a
    .catchall {:try_start_49 .. :try_end_6a} :catchall_46

    .line 325
    sget-boolean v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->DEBUG:Z

    if-eqz v0, :cond_8c

    .line 326
    sget-object v0, Lcom/quickbird/mini/vpn/proxy/HttpProxyRules;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "Query rules using time : "

    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v6

    sub-long v4, v6, v4

    invoke-virtual {v1, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, v1}, Lcom/quickbird/sdk/utils/QBLogger;->d(Ljava/lang/String;Ljava/lang/String;)V

    :cond_8c
    move-object v0, v2

    .line 329
    goto :goto_1b

    .line 281
    :pswitch_data_8e
    .packed-switch 0x0
        :pswitch_1c
        :pswitch_49
        :pswitch_4d
    .end packed-switch

    .line 303
    :pswitch_data_98
    .packed-switch 0x1
        :pswitch_51
        :pswitch_61
        :pswitch_59
    .end packed-switch
.end method