PiiElider.smali 
.class public Lcom/tencent/liteav/base/PiiElider;
.super Ljava/lang/Object;
.source "SourceFile"
# static fields
.field private static final APP_NAMESPACE:[Ljava/lang/String;
.field private static final CONSOLE_ELISION:Ljava/lang/String; = "[ELIDED:CONSOLE(0)] ELIDED CONSOLE MESSAGE"
.field private static final CONSOLE_MSG:Ljava/util/regex/Pattern;
.field private static final DOMAIN_NAME:Ljava/util/regex/Pattern;
.field private static final EMAIL_ELISION:Ljava/lang/String; = "XXX@EMAIL.ELIDED"
.field private static final GOOD_GTLD_CHAR:Ljava/lang/String; = "a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef"
.field private static final GOOD_IRI_CHAR:Ljava/lang/String; = "a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef"
.field private static final GTLD:Ljava/lang/String; = "[a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]{2,63}"
.field private static final HOST_NAME:Ljava/lang/String; = "([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\-]{0,61}[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]){0,1}\\.)+[a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]{2,63}"
.field private static final IP_ADDRESS:Ljava/util/regex/Pattern;
.field private static final IRI:Ljava/lang/String; = "[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\-]{0,61}[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]){0,1}"
.field private static final LIKELY_EXCEPTION_LOG:Ljava/util/regex/Pattern;
.field private static final MAC_ADDRESS:Ljava/util/regex/Pattern;
.field private static final MAC_ELISION:Ljava/lang/String; = "01:23:45:67:89:AB"
.field private static final SYSTEM_NAMESPACE:[Ljava/lang/String;
.field private static final URL_ELISION:Ljava/lang/String; = "HTTP://WEBADDRESS.ELIDED"
.field private static final WEB_URL:Ljava/util/regex/Pattern;
# direct methods
.method static constructor <clinit>()V
    .registers 52
    const-string v0, "((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9]))"
    .line 25
    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
    move-result-object v0
    sput-object v0, Lcom/tencent/liteav/base/PiiElider;->IP_ADDRESS:Ljava/util/regex/Pattern;
    .line 38
    new-instance v1, Ljava/lang/StringBuilder;
    const-string v2, "(([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\-]{0,61}[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]){0,1}\\.)+[a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]{2,63}|"
    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
    const-string v0, ")"
    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v0
    .line 39
    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
    move-result-object v0
    sput-object v0, Lcom/tencent/liteav/base/PiiElider;->DOMAIN_NAME:Ljava/util/regex/Pattern;
    const-string v1, "\\sat\\sorg\\.chromium\\.[^ ]+."
    .line 42
    invoke-static {v1}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
    move-result-object v1
    sput-object v1, Lcom/tencent/liteav/base/PiiElider;->LIKELY_EXCEPTION_LOG:Ljava/util/regex/Pattern;
    .line 44
    new-instance v1, Ljava/lang/StringBuilder;
    const-string v2, "(?:\\b|^)((?:(http|https|Http|Https|rtsp|Rtsp):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?(?:"
    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
    const-string v0, ")(?:\\:\\d{1,5})?)(\\/(?:(?:[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\;\\/\\?\\:\\@\\&\\=\\#\\~\\-\\.\\+\\!\\*\\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?(?:\\b|$)"
    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v0
    .line 45
    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
    move-result-object v0
    sput-object v0, Lcom/tencent/liteav/base/PiiElider;->WEB_URL:Ljava/util/regex/Pattern;
    const-string v0, "([0-9a-fA-F]{2}[-:]+){5}[0-9a-fA-F]{2}"
    .line 59
    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
    move-result-object v0
    sput-object v0, Lcom/tencent/liteav/base/PiiElider;->MAC_ADDRESS:Ljava/util/regex/Pattern;
    const-string v0, "\\[\\w*:CONSOLE.*\\].*"
    .line 61
    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
    move-result-object v0
    sput-object v0, Lcom/tencent/liteav/base/PiiElider;->CONSOLE_MSG:Ljava/util/regex/Pattern;
    const-string v0, "org.chromium."
    const-string v1, "com.google."
    .line 63
    filled-new-array {v0, v1}, [Ljava/lang/String;
    move-result-object v0
    sput-object v0, Lcom/tencent/liteav/base/PiiElider;->APP_NAMESPACE:[Ljava/lang/String;
    const-string v1, "android.accessibilityservice"
    const-string v2, "android.accounts"
    const-string v3, "android.animation"
    const-string v4, "android.annotation"
    const-string v5, "android.app"
    const-string v6, "android.appwidget"
    const-string v7, "android.bluetooth"
    const-string v8, "android.content"
    const-string v9, "android.database"
    const-string v10, "android.databinding"
    const-string v11, "android.drm"
    const-string v12, "android.gesture"
    const-string v13, "android.graphics"
    const-string v14, "android.hardware"
    const-string v15, "android.inputmethodservice"
    const-string v16, "android.location"
    const-string v17, "android.media"
    const-string v18, "android.mtp"
    const-string v19, "android.net"
    const-string v20, "android.nfc"
    const-string v21, "android.opengl"
    const-string v22, "android.os"
    const-string v23, "android.preference"
    const-string v24, "android.print"
    const-string v25, "android.printservice"
    const-string v26, "android.provider"
    const-string v27, "android.renderscript"
    const-string v28, "android.sax"
    const-string v29, "android.security"
    const-string v30, "android.service"
    const-string v31, "android.speech"
    const-string v32, "android.support"
    const-string v33, "android.system"
    const-string v34, "android.telecom"
    const-string v35, "android.telephony"
    const-string v36, "android.test"
    const-string v37, "android.text"
    const-string v38, "android.transition"
    const-string v39, "android.util"
    const-string v40, "android.view"
    const-string v41, "android.webkit"
    const-string v42, "android.widget"
    const-string v43, "com.android."
    const-string v44, "dalvik."
    const-string v45, "java."
    const-string v46, "javax."
    const-string v47, "org.apache."
    const-string v48, "org.json."
    const-string v49, "org.w3c.dom."
    const-string v50, "org.xml."
    const-string v51, "org.xmlpull."
    .line 65
    filled-new-array/range {v1 .. v51}, [Ljava/lang/String;
    move-result-object v0
    sput-object v0, Lcom/tencent/liteav/base/PiiElider;->SYSTEM_NAMESPACE:[Ljava/lang/String;
    return-void
.end method
.method public constructor <init>()V
    .registers 1
    .line 18
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
    return-void
.end method
.method public static elideConsole(Ljava/lang/String;)Ljava/lang/String;
    .registers 2
    .line 154
    sget-object v0, Lcom/tencent/liteav/base/PiiElider;->CONSOLE_MSG:Ljava/util/regex/Pattern;
    invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
    move-result-object p0
    const-string v0, "[ELIDED:CONSOLE(0)] ELIDED CONSOLE MESSAGE"
    invoke-virtual {p0, v0}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;
    move-result-object p0
    return-object p0
.end method
.method public static elideEmail(Ljava/lang/String;)Ljava/lang/String;
    .registers 2
    .line 87
    sget-object v0, Landroid/util/Patterns;->EMAIL_ADDRESS:Ljava/util/regex/Pattern;
    invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
    move-result-object p0
    const-string v0, "XXX@EMAIL.ELIDED"
    invoke-virtual {p0, v0}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;
    move-result-object p0
    return-object p0
.end method
.method public static elideMac(Ljava/lang/String;)Ljava/lang/String;
    .registers 2
    .line 143
    sget-object v0, Lcom/tencent/liteav/base/PiiElider;->MAC_ADDRESS:Ljava/util/regex/Pattern;
    invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
    move-result-object p0
    const-string v0, "01:23:45:67:89:AB"
    invoke-virtual {p0, v0}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;
    move-result-object p0
    return-object p0
.end method
.method public static elideUrl(Ljava/lang/String;)Ljava/lang/String;
    .registers 6
    .line 99
    sget-object v0, Lcom/tencent/liteav/base/PiiElider;->LIKELY_EXCEPTION_LOG:Ljava/util/regex/Pattern;
    invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
    move-result-object v0
    invoke-virtual {v0}, Ljava/util/regex/Matcher;->find()Z
    move-result v0
    if-eqz v0, :cond_d
    return-object p0
    .line 100
    :cond_d
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0, p0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
    .line 101
    sget-object p0, Lcom/tencent/liteav/base/PiiElider;->WEB_URL:Ljava/util/regex/Pattern;
    invoke-virtual {p0, v0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
    move-result-object p0
    const/4 v1, 0x0
    .line 103
    :goto_19
    invoke-virtual {p0, v1}, Ljava/util/regex/Matcher;->find(I)Z
    move-result v1
    if-eqz v1, :cond_47
    .line 104
    invoke-virtual {p0}, Ljava/util/regex/Matcher;->start()I
    move-result v1
    .line 105
    invoke-virtual {p0}, Ljava/util/regex/Matcher;->end()I
    move-result v2
    .line 106
    invoke-virtual {v0, v1, v2}, Ljava/lang/StringBuilder;->substring(II)Ljava/lang/String;
    move-result-object v3
    .line 107
    invoke-static {v3}, Lcom/tencent/liteav/base/PiiElider;->likelyToBeAppNamespace(Ljava/lang/String;)Z
    move-result v4
    if-nez v4, :cond_45
    invoke-static {v3}, Lcom/tencent/liteav/base/PiiElider;->likelyToBeSystemNamespace(Ljava/lang/String;)Z
    move-result v3
    if-nez v3, :cond_45
    const-string p0, "HTTP://WEBADDRESS.ELIDED"
    .line 108
    invoke-virtual {v0, v1, v2, p0}, Ljava/lang/StringBuilder;->replace(IILjava/lang/String;)Ljava/lang/StringBuilder;
    add-int/lit8 v1, v1, 0x18
    .line 110
    sget-object p0, Lcom/tencent/liteav/base/PiiElider;->WEB_URL:Ljava/util/regex/Pattern;
    invoke-virtual {p0, v0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
    move-result-object p0
    goto :goto_19
    :cond_45
    move v1, v2
    goto :goto_19
    .line 114
    :cond_47
    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object p0
    return-object p0
.end method
.method private static likelyToBeAppNamespace(Ljava/lang/String;)Z
    .registers 6
    .line 118
    sget-object v0, Lcom/tencent/liteav/base/PiiElider;->APP_NAMESPACE:[Ljava/lang/String;
    array-length v1, v0
    const/4 v2, 0x0
    move v3, v2
    :goto_5
    if-ge v3, v1, :cond_14
    aget-object v4, v0, v3
    .line 119
    invoke-virtual {p0, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
    move-result v4
    if-eqz v4, :cond_11
    const/4 p0, 0x1
    return p0
    :cond_11
    add-int/lit8 v3, v3, 0x1
    goto :goto_5
    :cond_14
    return v2
.end method
.method private static likelyToBeSystemNamespace(Ljava/lang/String;)Z
    .registers 6
    .line 127
    sget-object v0, Lcom/tencent/liteav/base/PiiElider;->SYSTEM_NAMESPACE:[Ljava/lang/String;
    array-length v1, v0
    const/4 v2, 0x0
    move v3, v2
    :goto_5
    if-ge v3, v1, :cond_14
    aget-object v4, v0, v3
    .line 128
    invoke-virtual {p0, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
    move-result v4
    if-eqz v4, :cond_11
    const/4 p0, 0x1
    return p0
    :cond_11
    add-int/lit8 v3, v3, 0x1
    goto :goto_5
    :cond_14
    return v2
.end method
.method public static sanitizeStacktrace(Ljava/lang/String;)Ljava/lang/String;
    .registers 4
    const-string v0, "\\n"
    .line 166
    invoke-virtual {p0, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
    move-result-object p0
    const/4 v0, 0x0
    .line 168
    aget-object v1, p0, v0
    invoke-static {v1}, Lcom/tencent/liteav/base/PiiElider;->elideUrl(Ljava/lang/String;)Ljava/lang/String;
    move-result-object v1
    aput-object v1, p0, v0
    const/4 v0, 0x1
    .line 169
    :goto_10
    array-length v1, p0
    if-ge v0, v1, :cond_28
    .line 171
    aget-object v1, p0, v0
    const-string v2, "Caused by:"
    invoke-virtual {v1, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
    move-result v1
    if-eqz v1, :cond_25
    .line 172
    aget-object v1, p0, v0
    invoke-static {v1}, Lcom/tencent/liteav/base/PiiElider;->elideUrl(Ljava/lang/String;)Ljava/lang/String;
    move-result-object v1
    aput-object v1, p0, v0
    :cond_25
    add-int/lit8 v0, v0, 0x1
    goto :goto_10
    :cond_28
    const-string v0, "\n"
    .line 175
    invoke-static {v0, p0}, Landroid/text/TextUtils;->join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String;
    move-result-object p0
    return-object p0
.end method