BtcFormat.smali

.class public abstract Lorg/bitcoinj/utils/BtcFormat;
.super Ljava/text/Format;
.source "BtcFormat.java"


# static fields
.field private static final COIN_CODE:Ljava/lang/String; = "BTC"

.field public static final COIN_SCALE:I = 0x0

.field private static final COIN_SYMBOL:Ljava/lang/String; = "\u0e3f"

.field protected static final COIN_SYMBOL_ALT:Ljava/lang/String; = "\u0243"

.field public static final MICROCOIN_SCALE:I = 0x6

.field public static final MILLICOIN_SCALE:I = 0x3


# instance fields
.field private volatile ci:Ljava/lang/String;

.field private coinPattern:Ljava/util/regex/Pattern;

.field protected final decimalGroups:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List",
            "<",
            "Ljava/lang/Integer;",
            ">;"
        }
    .end annotation
.end field

.field private volatile denoms:[Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

.field protected final minimumFractionDigits:I

.field protected final numberFormat:Ljava/text/DecimalFormat;


# direct methods
.method protected constructor <init>(Ljava/text/DecimalFormat;ILjava/util/List;)V
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/text/DecimalFormat;",
            "I",
            "Ljava/util/List",
            "<",
            "Ljava/lang/Integer;",
            ">;)V"
        }
    .end annotation

    .prologue
    const/4 v1, 0x1

    .line 744
    invoke-direct {p0}, Ljava/text/Format;-><init>()V

    .line 1317
    const-string v0, "(\u0e3f|\u0243|B\u20e6|BTC|XBT)"

    iput-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

    .line 745
    if-ltz p2, :cond_50

    move v0, v1

    :goto_b
    const-string v2, "There can be no fewer than zero fractional decimal places"

    invoke-static {v0, v2}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V

    .line 746
    iput-object p1, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    .line 747
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v0, v1}, Ljava/text/DecimalFormat;->setParseBigDecimal(Z)V

    .line 748
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    sget-object v1, Ljava/math/RoundingMode;->HALF_UP:Ljava/math/RoundingMode;

    invoke-virtual {v0, v1}, Ljava/text/DecimalFormat;->setRoundingMode(Ljava/math/RoundingMode;)V

    .line 749
    iput p2, p0, Lorg/bitcoinj/utils/BtcFormat;->minimumFractionDigits:I

    .line 750
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    iget v1, p0, Lorg/bitcoinj/utils/BtcFormat;->minimumFractionDigits:I

    invoke-virtual {v0, v1}, Ljava/text/DecimalFormat;->setMinimumFractionDigits(I)V

    .line 751
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    iget v1, p0, Lorg/bitcoinj/utils/BtcFormat;->minimumFractionDigits:I

    invoke-virtual {v0, v1}, Ljava/text/DecimalFormat;->setMaximumFractionDigits(I)V

    .line 752
    iput-object p3, p0, Lorg/bitcoinj/utils/BtcFormat;->decimalGroups:Ljava/util/List;

    .line 753
    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    monitor-enter v1

    :try_start_33
    iget-object v2, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    .line 755
    invoke-virtual {v0}, Ljava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v0

    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getCurrencySymbol()Ljava/lang/String;

    move-result-object v0

    const-string v3, "\u0e3f"

    invoke-virtual {v0, v3}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v0

    if-eqz v0, :cond_52

    const-string v0, "\u0243"

    :goto_49
    const-string v3, "BTC"

    .line 753
    invoke-static {v2, v0, v3}, Lorg/bitcoinj/utils/BtcFormat;->setSymbolAndCode(Ljava/text/DecimalFormat;Ljava/lang/String;Ljava/lang/String;)Ljava/text/DecimalFormatSymbols;

    .line 759
    monitor-exit v1

    return-void

    .line 745
    :cond_50
    const/4 v0, 0x0

    goto :goto_b

    .line 755
    :cond_52
    const-string v0, "\u0e3f"

    goto :goto_49

    .line 759
    :catchall_55
    move-exception v0

    monitor-exit v1
    :try_end_57
    .catchall {:try_start_33 .. :try_end_57} :catchall_55

    throw v0
.end method

.method static synthetic access$600()Ljava/util/Locale;
    .registers 1

    .prologue
    .line 470
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    return-object v0
.end method

.method static synthetic access$700(Ljava/text/DecimalFormat;Ljava/lang/String;Ljava/lang/String;)Ljava/text/DecimalFormatSymbols;
    .registers 4

    .prologue
    .line 470
    invoke-static {p0, p1, p2}, Lorg/bitcoinj/utils/BtcFormat;->setSymbolAndCode(Ljava/text/DecimalFormat;Ljava/lang/String;Ljava/lang/String;)Ljava/text/DecimalFormatSymbols;

    move-result-object v0

    return-object v0
.end method

.method private static boxAsList([I)Ljava/util/List;
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "([I)",
            "Ljava/util/List",
            "<",
            "Ljava/lang/Integer;",
            ">;"
        }
    .end annotation

    .prologue
    const/4 v1, 0x0

    .line 926
    new-instance v3, Ljava/util/ArrayList;

    array-length v0, p0

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

    .line 927
    array-length v4, p0

    move v2, v1

    :goto_9
    if-ge v2, v4, :cond_22

    aget v5, p0, v2

    .line 928
    if-lez v5, :cond_20

    const/4 v0, 0x1

    :goto_10
    const-string v6, "Size of decimal group must be at least one."

    invoke-static {v0, v6}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V

    .line 929
    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v0

    invoke-interface {v3, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 927
    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_9

    :cond_20
    move v0, v1

    .line 928
    goto :goto_10

    .line 931
    :cond_22
    return-object v3
.end method

.method public static builder()Lorg/bitcoinj/utils/BtcFormat$Builder;
    .registers 2

    .prologue
    .line 741
    new-instance v0, Lorg/bitcoinj/utils/BtcFormat$Builder;

    const/4 v1, 0x0

    invoke-direct {v0, v1}, Lorg/bitcoinj/utils/BtcFormat$Builder;-><init>(Lorg/bitcoinj/utils/BtcFormat$1;)V

    return-object v0
.end method

.method private static calculateFractionPlaces(Ljava/math/BigDecimal;IILjava/util/List;)I
    .registers 10
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/math/BigDecimal;",
            "II",
            "Ljava/util/List",
            "<",
            "Ljava/lang/Integer;",
            ">;)I"
        }
    .end annotation

    .prologue
    .line 1260
    .line 1261
    invoke-interface {p3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    move v1, p2

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

    move-result v0

    if-eqz v0, :cond_18

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

    move-result-object v0

    check-cast v0, Ljava/lang/Integer;

    invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

    move-result v0

    add-int/2addr v0, v1

    move v1, v0

    goto :goto_5

    .line 1262
    :cond_18
    invoke-static {p1}, Lorg/bitcoinj/utils/BtcFormat;->offSatoshis(I)I

    move-result v0

    invoke-static {v1, v0}, Ljava/lang/Math;->min(II)I

    move-result v2

    .line 1264
    invoke-static {p2, v2}, Ljava/lang/Math;->min(II)I

    move-result v0

    .line 1265
    invoke-interface {p3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    move v1, v0

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

    move-result v0

    if-eqz v0, :cond_51

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

    move-result-object v0

    check-cast v0, Ljava/lang/Integer;

    invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

    move-result v0

    .line 1269
    sget-object v4, Ljava/math/RoundingMode;->HALF_UP:Ljava/math/RoundingMode;

    invoke-virtual {p0, v1, v4}, Ljava/math/BigDecimal;->setScale(ILjava/math/RoundingMode;)Ljava/math/BigDecimal;

    move-result-object v4

    sget-object v5, Ljava/math/RoundingMode;->HALF_UP:Ljava/math/RoundingMode;

    invoke-virtual {p0, v2, v5}, Ljava/math/BigDecimal;->setScale(ILjava/math/RoundingMode;)Ljava/math/BigDecimal;

    move-result-object v5

    invoke-virtual {v4, v5}, Ljava/math/BigDecimal;->compareTo(Ljava/math/BigDecimal;)I

    move-result v4

    if-eqz v4, :cond_51

    .line 1270
    add-int/2addr v0, v1

    .line 1271
    if-le v0, v2, :cond_4f

    move v0, v2

    :cond_4f
    move v1, v0

    .line 1272
    goto :goto_29

    .line 1273
    :cond_51
    return v1
.end method

.method private static defaultLocale()Ljava/util/Locale;
    .registers 1

    .prologue
    .line 524
    invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;

    move-result-object v0

    return-object v0
.end method

.method private denominateAndRound(Ljava/math/BigInteger;ILjava/util/List;)Ljava/math/BigDecimal;
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/math/BigInteger;",
            "I",
            "Ljava/util/List",
            "<",
            "Ljava/lang/Integer;",
            ">;)",
            "Ljava/math/BigDecimal;"
        }
    .end annotation

    .prologue
    .line 1225
    invoke-virtual {p0, p1, p2}, Lorg/bitcoinj/utils/BtcFormat;->scale(Ljava/math/BigInteger;I)I

    move-result v0

    .line 1226
    new-instance v1, Ljava/math/BigDecimal;

    invoke-direct {v1, p1}, Ljava/math/BigDecimal;-><init>(Ljava/math/BigInteger;)V

    invoke-static {v0}, Lorg/bitcoinj/utils/BtcFormat;->offSatoshis(I)I

    move-result v2

    invoke-virtual {v1, v2}, Ljava/math/BigDecimal;->movePointLeft(I)Ljava/math/BigDecimal;

    move-result-object v1

    .line 1227
    invoke-static {v1, v0, p2, p3}, Lorg/bitcoinj/utils/BtcFormat;->calculateFractionPlaces(Ljava/math/BigDecimal;IILjava/util/List;)I

    move-result v0

    .line 1228
    sget-object v2, Ljava/math/RoundingMode;->HALF_UP:Ljava/math/RoundingMode;

    invoke-virtual {v1, v0, v2}, Ljava/math/BigDecimal;->setScale(ILjava/math/RoundingMode;)Ljava/math/BigDecimal;

    move-result-object v0

    return-object v0
.end method

.method private format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ILjava/util/List;)Ljava/lang/StringBuffer;
    .registers 12
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Object;",
            "Ljava/lang/StringBuffer;",
            "Ljava/text/FieldPosition;",
            "I",
            "Ljava/util/List",
            "<",
            "Ljava/lang/Integer;",
            ">;)",
            "Ljava/lang/StringBuffer;"
        }
    .end annotation

    .prologue
    const/4 v0, 0x1

    const/4 v1, 0x0

    .line 1186
    if-ltz p4, :cond_50

    :goto_4
    const-string v1, "There can be no fewer than zero fractional decimal places"

    invoke-static {v0, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V

    .line 1187
    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    monitor-enter v1

    .line 1188
    :try_start_c
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v0}, Ljava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v0

    .line 1189
    invoke-static {p1}, Lorg/bitcoinj/utils/BtcFormat;->inSatoshis(Ljava/lang/Object;)Ljava/math/BigInteger;

    move-result-object v2

    invoke-direct {p0, v2, p4, p5}, Lorg/bitcoinj/utils/BtcFormat;->denominateAndRound(Ljava/math/BigInteger;ILjava/util/List;)Ljava/math/BigDecimal;

    move-result-object v2

    .line 1190
    iget-object v3, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    .line 1191
    invoke-virtual {v2}, Ljava/math/BigDecimal;->scale()I

    move-result v4

    invoke-virtual {v2}, Ljava/math/BigDecimal;->scale()I

    move-result v5

    invoke-static {v3, v4, v5}, Lorg/bitcoinj/utils/BtcFormat;->setFormatterDigits(Ljava/text/DecimalFormat;II)Lcom/google/common/collect/ImmutableList;

    move-result-object v3

    .line 1192
    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v4, v2, p2, p3}, Ljava/text/DecimalFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;

    move-result-object v2

    .line 1193
    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v4, v0}, Ljava/text/DecimalFormat;->setDecimalFormatSymbols(Ljava/text/DecimalFormatSymbols;)V

    .line 1194
    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    const/4 v0, 0x0

    invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Integer;

    invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

    move-result v5

    const/4 v0, 0x1

    invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Integer;

    invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

    move-result v0

    invoke-static {v4, v5, v0}, Lorg/bitcoinj/utils/BtcFormat;->setFormatterDigits(Ljava/text/DecimalFormat;II)Lcom/google/common/collect/ImmutableList;

    .line 1195
    monitor-exit v1

    return-object v2

    :cond_50
    move v0, v1

    .line 1186
    goto :goto_4

    .line 1196
    :catchall_52
    move-exception v0

    monitor-exit v1
    :try_end_54
    .catchall {:try_start_c .. :try_end_54} :catchall_52

    throw v0
.end method

.method public static getAvailableLocales()[Ljava/util/Locale;
    .registers 1

    .prologue
    .line 1527
    invoke-static {}, Ljava/text/NumberFormat;->getAvailableLocales()[Ljava/util/Locale;

    move-result-object v0

    return-object v0
.end method

.method public static getCodeInstance()Lorg/bitcoinj/utils/BtcFormat;
    .registers 1

    .prologue
    .line 783
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {v0}, Lorg/bitcoinj/utils/BtcFormat;->getCodeInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getCodeInstance(I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 2

    .prologue
    .line 806
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {v0, p0}, Lorg/bitcoinj/utils/BtcFormat;->getCodeInstance(Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getCodeInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;
    .registers 2

    .prologue
    .line 821
    sget-object v0, Lorg/bitcoinj/utils/BtcAutoFormat$Style;->CODE:Lorg/bitcoinj/utils/BtcAutoFormat$Style;

    invoke-static {v0, p0}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getCodeInstance(Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 3

    .prologue
    .line 844
    sget-object v0, Lorg/bitcoinj/utils/BtcAutoFormat$Style;->CODE:Lorg/bitcoinj/utils/BtcAutoFormat$Style;

    invoke-static {v0, p0, p1}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getCoinInstance()Lorg/bitcoinj/utils/BtcFormat;
    .registers 1

    .prologue
    .line 923
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {v0}, Lorg/bitcoinj/utils/BtcFormat;->getCoinInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static varargs getCoinInstance(I[I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 5

    .prologue
    .line 944
    const/4 v0, 0x0

    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v1

    invoke-static {p1}, Lorg/bitcoinj/utils/BtcFormat;->boxAsList([I)Ljava/util/List;

    move-result-object v2

    invoke-static {v0, v1, p0, v2}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;ILjava/util/List;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getCoinInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;
    .registers 4

    .prologue
    const/4 v2, 0x0

    .line 952
    const/4 v0, 0x2

    new-array v1, v2, [I

    invoke-static {v2, p0, v0, v1}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;I[I)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static varargs getCoinInstance(Ljava/util/Locale;I[I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 5

    .prologue
    .line 963
    const/4 v0, 0x0

    invoke-static {p2}, Lorg/bitcoinj/utils/BtcFormat;->boxAsList([I)Ljava/util/List;

    move-result-object v1

    invoke-static {v0, p0, p1, v1}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;ILjava/util/List;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getInstance()Lorg/bitcoinj/utils/BtcFormat;
    .registers 1

    .prologue
    .line 769
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {v0}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getInstance(I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 2

    .prologue
    .line 1068
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {p0, v0}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static varargs getInstance(II[I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 5

    .prologue
    .line 1057
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {p2}, Lorg/bitcoinj/utils/BtcFormat;->boxAsList([I)Ljava/util/List;

    move-result-object v1

    invoke-static {p0, v0, p1, v1}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;ILjava/util/List;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getInstance(ILjava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;
    .registers 4

    .prologue
    .line 1080
    const/4 v0, 0x2

    const/4 v1, 0x0

    new-array v1, v1, [I

    invoke-static {p0, p1, v0, v1}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;I[I)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getInstance(ILjava/util/Locale;ILjava/util/List;)Lorg/bitcoinj/utils/BtcFormat;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(I",
            "Ljava/util/Locale;",
            "I",
            "Ljava/util/List",
            "<",
            "Ljava/lang/Integer;",
            ">;)",
            "Lorg/bitcoinj/utils/BtcFormat;"
        }
    .end annotation

    .prologue
    .line 1107
    new-instance v0, Lorg/bitcoinj/utils/BtcFixedFormat;

    invoke-direct {v0, p1, p0, p2, p3}, Lorg/bitcoinj/utils/BtcFixedFormat;-><init>(Ljava/util/Locale;IILjava/util/List;)V

    return-object v0
.end method

.method public static varargs getInstance(ILjava/util/Locale;I[I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 5

    .prologue
    .line 1093
    invoke-static {p3}, Lorg/bitcoinj/utils/BtcFormat;->boxAsList([I)Ljava/util/List;

    move-result-object v0

    invoke-static {p0, p1, p2, v0}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;ILjava/util/List;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;
    .registers 2

    .prologue
    .line 814
    invoke-static {p0}, Lorg/bitcoinj/utils/BtcFormat;->getCodeInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getInstance(Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 3

    .prologue
    .line 832
    invoke-static {p0, p1}, Lorg/bitcoinj/utils/BtcFormat;->getCodeInstance(Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;)Lorg/bitcoinj/utils/BtcFormat;
    .registers 2

    .prologue
    .line 874
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {p0, v0}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 3

    .prologue
    .line 886
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {p0, v0, p1}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;
    .registers 3

    .prologue
    .line 899
    const/4 v0, 0x2

    invoke-static {p0, p1, v0}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 4

    .prologue
    .line 915
    new-instance v0, Lorg/bitcoinj/utils/BtcAutoFormat;

    invoke-direct {v0, p1, p0, p2}, Lorg/bitcoinj/utils/BtcAutoFormat;-><init>(Ljava/util/Locale;Lorg/bitcoinj/utils/BtcAutoFormat$Style;I)V

    return-object v0
.end method

.method public static getMicroInstance()Lorg/bitcoinj/utils/BtcFormat;
    .registers 1

    .prologue
    .line 1011
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {v0}, Lorg/bitcoinj/utils/BtcFormat;->getMicroInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static varargs getMicroInstance(I[I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 5

    .prologue
    .line 1031
    const/4 v0, 0x6

    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v1

    invoke-static {p1}, Lorg/bitcoinj/utils/BtcFormat;->boxAsList([I)Ljava/util/List;

    move-result-object v2

    invoke-static {v0, v1, p0, v2}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;ILjava/util/List;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getMicroInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;
    .registers 2

    .prologue
    .line 1019
    const/4 v0, 0x6

    invoke-static {v0, p0}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static varargs getMicroInstance(Ljava/util/Locale;I[I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 5

    .prologue
    .line 1043
    const/4 v0, 0x6

    invoke-static {p2}, Lorg/bitcoinj/utils/BtcFormat;->boxAsList([I)Ljava/util/List;

    move-result-object v1

    invoke-static {v0, p0, p1, v1}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;ILjava/util/List;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getMilliInstance()Lorg/bitcoinj/utils/BtcFormat;
    .registers 1

    .prologue
    .line 971
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {v0}, Lorg/bitcoinj/utils/BtcFormat;->getMilliInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static varargs getMilliInstance(I[I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 5

    .prologue
    .line 991
    const/4 v0, 0x3

    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v1

    invoke-static {p1}, Lorg/bitcoinj/utils/BtcFormat;->boxAsList([I)Ljava/util/List;

    move-result-object v2

    invoke-static {v0, v1, p0, v2}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;ILjava/util/List;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getMilliInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;
    .registers 4

    .prologue
    .line 979
    const/4 v0, 0x3

    const/4 v1, 0x2

    const/4 v2, 0x0

    new-array v2, v2, [I

    invoke-static {v0, p0, v1, v2}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;I[I)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static varargs getMilliInstance(Ljava/util/Locale;I[I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 5

    .prologue
    .line 1003
    const/4 v0, 0x3

    invoke-static {p2}, Lorg/bitcoinj/utils/BtcFormat;->boxAsList([I)Ljava/util/List;

    move-result-object v1

    invoke-static {v0, p0, p1, v1}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(ILjava/util/Locale;ILjava/util/List;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getSymbolInstance()Lorg/bitcoinj/utils/BtcFormat;
    .registers 1

    .prologue
    .line 776
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {v0}, Lorg/bitcoinj/utils/BtcFormat;->getSymbolInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getSymbolInstance(I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 2

    .prologue
    .line 794
    invoke-static {}, Lorg/bitcoinj/utils/BtcFormat;->defaultLocale()Ljava/util/Locale;

    move-result-object v0

    invoke-static {v0, p0}, Lorg/bitcoinj/utils/BtcFormat;->getSymbolInstance(Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getSymbolInstance(Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;
    .registers 2

    .prologue
    .line 853
    sget-object v0, Lorg/bitcoinj/utils/BtcAutoFormat$Style;->SYMBOL:Lorg/bitcoinj/utils/BtcAutoFormat$Style;

    invoke-static {v0, p0}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;Ljava/util/Locale;)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method public static getSymbolInstance(Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;
    .registers 3

    .prologue
    .line 865
    sget-object v0, Lorg/bitcoinj/utils/BtcAutoFormat$Style;->SYMBOL:Lorg/bitcoinj/utils/BtcAutoFormat$Style;

    invoke-static {v0, p0, p1}, Lorg/bitcoinj/utils/BtcFormat;->getInstance(Lorg/bitcoinj/utils/BtcAutoFormat$Style;Ljava/util/Locale;I)Lorg/bitcoinj/utils/BtcFormat;

    move-result-object v0

    return-object v0
.end method

.method private static inSatoshis(Ljava/lang/Object;)Ljava/math/BigInteger;
    .registers 4

    .prologue
    .line 1283
    instance-of v0, p0, Ljava/lang/Long;

    if-nez v0, :cond_8

    instance-of v0, p0, Ljava/lang/Integer;

    if-eqz v0, :cond_13

    .line 1284
    :cond_8
    check-cast p0, Ljava/lang/Number;

    invoke-virtual {p0}, Ljava/lang/Number;->longValue()J

    move-result-wide v0

    invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;

    move-result-object p0

    .line 1295
    :goto_12
    return-object p0

    .line 1285
    :cond_13
    instance-of v0, p0, Ljava/math/BigInteger;

    if-eqz v0, :cond_1a

    .line 1286
    check-cast p0, Ljava/math/BigInteger;

    goto :goto_12

    .line 1287
    :cond_1a
    instance-of v0, p0, Ljava/math/BigDecimal;

    if-eqz v0, :cond_31

    .line 1288
    check-cast p0, Ljava/math/BigDecimal;

    const/16 v0, 0x8

    invoke-virtual {p0, v0}, Ljava/math/BigDecimal;->movePointRight(I)Ljava/math/BigDecimal;

    move-result-object v0

    const/4 v1, 0x0

    const/4 v2, 0x4

    .line 1289
    invoke-virtual {v0, v1, v2}, Ljava/math/BigDecimal;->setScale(II)Ljava/math/BigDecimal;

    move-result-object v0

    invoke-virtual {v0}, Ljava/math/BigDecimal;->unscaledValue()Ljava/math/BigInteger;

    move-result-object p0

    goto :goto_12

    .line 1290
    :cond_31
    instance-of v0, p0, Lorg/bitcoinj/core/Coin;

    if-eqz v0, :cond_3e

    .line 1291
    check-cast p0, Lorg/bitcoinj/core/Coin;

    iget-wide v0, p0, Lorg/bitcoinj/core/Coin;->value:J

    invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;

    move-result-object p0

    goto :goto_12

    .line 1293
    :cond_3e
    new-instance v0, Ljava/lang/IllegalArgumentException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Cannot format a "

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

    invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;

    move-result-object v2

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

    move-result-object v1

    const-string v2, " as a Bicoin value"

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

    move-result-object v1

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

    move-result-object v1

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

    throw v0
.end method

.method protected static negify(Ljava/lang/String;)Ljava/lang/String;
    .registers 4

    .prologue
    .line 1514
    const-string v0, ";"

    invoke-virtual {p0, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v0

    if-eqz v0, :cond_9

    .line 1519
    :goto_8
    return-object p0

    .line 1516
    :cond_9
    const-string v0, "-"

    invoke-virtual {p0, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v0

    if-eqz v0, :cond_19

    .line 1517
    new-instance v0, Ljava/lang/IllegalStateException;

    const-string v1, "Positive pattern contains negative sign"

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

    throw v0

    .line 1519
    :cond_19
    new-instance v0, Ljava/lang/StringBuilder;

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

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

    move-result-object v0

    const-string v1, ";"

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

    move-result-object v0

    const-string v1, "^([^#0,.\']*(\'[^\']*\')?)*"

    const-string v2, "$0-"

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

    move-result-object v1

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

    goto :goto_8
.end method

.method private static offSatoshis(I)I
    .registers 2

    .prologue
    .line 522
    rsub-int/lit8 v0, p0, 0x8

    return v0
.end method

.method protected static prefixCode(Ljava/lang/String;I)Ljava/lang/String;
    .registers 5

    .prologue
    .line 1470
    packed-switch p1, :pswitch_data_9c

    .line 1480
    :pswitch_3
    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "No known prefix for scale "

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

    invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

    move-result-object v2

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

    move-result-object v1

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

    move-result-object v1

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

    throw v0

    .line 1472
    :pswitch_1c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "d"

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

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

    .line 1479
    :goto_2b
    :pswitch_2b
    return-object p0

    .line 1473
    :pswitch_2c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "c"

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

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

    goto :goto_2b

    .line 1474
    :pswitch_3c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "m"

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

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

    goto :goto_2b

    .line 1475
    :pswitch_4c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "\u00b5"

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

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

    goto :goto_2b

    .line 1476
    :pswitch_5c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "da"

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

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

    goto :goto_2b

    .line 1477
    :pswitch_6c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "h"

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

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

    goto :goto_2b

    .line 1478
    :pswitch_7c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "k"

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

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

    goto :goto_2b

    .line 1479
    :pswitch_8c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "M"

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

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

    goto :goto_2b

    .line 1470
    :pswitch_data_9c
    .packed-switch -0x6
        :pswitch_8c
        :pswitch_3
        :pswitch_3
        :pswitch_7c
        :pswitch_6c
        :pswitch_5c
        :pswitch_2b
        :pswitch_1c
        :pswitch_2c
        :pswitch_3c
        :pswitch_3
        :pswitch_3
        :pswitch_4c
    .end packed-switch
.end method

.method protected static prefixSymbol(Ljava/lang/String;I)Ljava/lang/String;
    .registers 5

    .prologue
    .line 1485
    packed-switch p1, :pswitch_data_9c

    .line 1495
    :pswitch_3
    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "No known prefix for scale "

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

    invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

    move-result-object v2

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

    move-result-object v1

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

    move-result-object v1

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

    throw v0

    .line 1487
    :pswitch_1c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "d"

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

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

    .line 1494
    :goto_2b
    :pswitch_2b
    return-object p0

    .line 1488
    :pswitch_2c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "\u00a2"

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

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

    goto :goto_2b

    .line 1489
    :pswitch_3c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "\u20a5"

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

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

    goto :goto_2b

    .line 1490
    :pswitch_4c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "\u00b5"

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

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

    goto :goto_2b

    .line 1491
    :pswitch_5c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "da"

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

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

    goto :goto_2b

    .line 1492
    :pswitch_6c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "h"

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

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

    goto :goto_2b

    .line 1493
    :pswitch_7c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "k"

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

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

    goto :goto_2b

    .line 1494
    :pswitch_8c
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "M"

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

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

    goto :goto_2b

    .line 1485
    :pswitch_data_9c
    .packed-switch -0x6
        :pswitch_8c
        :pswitch_3
        :pswitch_3
        :pswitch_7c
        :pswitch_6c
        :pswitch_5c
        :pswitch_2b
        :pswitch_1c
        :pswitch_2c
        :pswitch_3c
        :pswitch_3
        :pswitch_3
        :pswitch_4c
    .end packed-switch
.end method

.method protected static prefixUnitsIndicator(Ljava/text/DecimalFormat;I)V
    .registers 4

    .prologue
    .line 1384
    invoke-static {p0}, Ljava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 1385
    invoke-virtual {p0}, Ljava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v0

    .line 1387
    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getCurrencySymbol()Ljava/lang/String;

    move-result-object v1

    invoke-static {v1, p1}, Lorg/bitcoinj/utils/BtcFormat;->prefixSymbol(Ljava/lang/String;I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getInternationalCurrencySymbol()Ljava/lang/String;

    move-result-object v0

    invoke-static {v0, p1}, Lorg/bitcoinj/utils/BtcFormat;->prefixCode(Ljava/lang/String;I)Ljava/lang/String;

    move-result-object v0

    .line 1386
    invoke-static {p0, v1, v0}, Lorg/bitcoinj/utils/BtcFormat;->setSymbolAndCode(Ljava/text/DecimalFormat;Ljava/lang/String;Ljava/lang/String;)Ljava/text/DecimalFormatSymbols;

    .line 1389
    return-void
.end method

.method private static setFormatterDigits(Ljava/text/DecimalFormat;II)Lcom/google/common/collect/ImmutableList;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/text/DecimalFormat;",
            "II)",
            "Lcom/google/common/collect/ImmutableList",
            "<",
            "Ljava/lang/Integer;",
            ">;"
        }
    .end annotation

    .prologue
    .line 1236
    .line 1237
    invoke-virtual {p0}, Ljava/text/DecimalFormat;->getMinimumFractionDigits()I

    move-result v0

    invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v0

    .line 1238
    invoke-virtual {p0}, Ljava/text/DecimalFormat;->getMaximumFractionDigits()I

    move-result v1

    invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v1

    .line 1236
    invoke-static {v0, v1}, Lcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;

    move-result-object v0

    .line 1240
    invoke-virtual {p0, p1}, Ljava/text/DecimalFormat;->setMinimumFractionDigits(I)V

    .line 1241
    invoke-virtual {p0, p2}, Ljava/text/DecimalFormat;->setMaximumFractionDigits(I)V

    .line 1242
    return-object v0
.end method

.method private static setSymbolAndCode(Ljava/text/DecimalFormat;Ljava/lang/String;)Ljava/text/DecimalFormatSymbols;
    .registers 3

    .prologue
    .line 1352
    invoke-static {p0, p1, p1}, Lorg/bitcoinj/utils/BtcFormat;->setSymbolAndCode(Ljava/text/DecimalFormat;Ljava/lang/String;Ljava/lang/String;)Ljava/text/DecimalFormatSymbols;

    move-result-object v0

    return-object v0
.end method

.method private static setSymbolAndCode(Ljava/text/DecimalFormat;Ljava/lang/String;Ljava/lang/String;)Ljava/text/DecimalFormatSymbols;
    .registers 5

    .prologue
    .line 1363
    invoke-static {p0}, Ljava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 1364
    invoke-virtual {p0}, Ljava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v1

    .line 1365
    invoke-virtual {v1}, Ljava/text/DecimalFormatSymbols;->clone()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/text/DecimalFormatSymbols;

    .line 1366
    invoke-virtual {v1, p2}, Ljava/text/DecimalFormatSymbols;->setInternationalCurrencySymbol(Ljava/lang/String;)V

    .line 1367
    invoke-virtual {v1, p1}, Ljava/text/DecimalFormatSymbols;->setCurrencySymbol(Ljava/lang/String;)V

    .line 1368
    invoke-virtual {p0, v1}, Ljava/text/DecimalFormat;->setDecimalFormatSymbols(Ljava/text/DecimalFormatSymbols;)V

    .line 1369
    return-object v0
.end method


# virtual methods
.method public coinCode()Ljava/lang/String;
    .registers 3

    .prologue
    .line 1537
    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    monitor-enter v1

    .line 1538
    :try_start_3
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v0}, Ljava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v0

    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getInternationalCurrencySymbol()Ljava/lang/String;

    move-result-object v0

    monitor-exit v1

    return-object v0

    .line 1539
    :catchall_f
    move-exception v0

    monitor-exit v1
    :try_end_11
    .catchall {:try_start_3 .. :try_end_11} :catchall_f

    throw v0
.end method

.method public coinSymbol()Ljava/lang/String;
    .registers 3

    .prologue
    .line 1531
    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    monitor-enter v1

    .line 1532
    :try_start_3
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v0}, Ljava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v0

    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getCurrencySymbol()Ljava/lang/String;

    move-result-object v0

    monitor-exit v1

    return-object v0

    .line 1533
    :catchall_f
    move-exception v0

    monitor-exit v1
    :try_end_11
    .catchall {:try_start_3 .. :try_end_11} :catchall_f

    throw v0
.end method

.method denomMatchers()[Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;
    .registers 6

    .prologue
    .line 1321
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->denoms:[Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    .line 1322
    if-nez v0, :cond_190

    monitor-enter p0

    .line 1323
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->denoms:[Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    .line 1324
    if-nez v0, :cond_18f

    .line 1325
    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->coinSymbol()Ljava/lang/String;

    move-result-object v0

    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

    invoke-virtual {v0, v1}, Ljava/lang/String;->matches(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_38

    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

    const-string v1, "\\("

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "("

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

    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->coinSymbol()Ljava/lang/String;

    move-result-object v3

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

    move-result-object v2

    const-string v3, "|"

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

    move-result-object v2

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

    move-result-object v2

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

    move-result-object v0

    iput-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

    .line 1326
    :cond_38
    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->coinCode()Ljava/lang/String;

    move-result-object v0

    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

    invoke-virtual {v0, v1}, Ljava/lang/String;->matches(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_67

    .line 1327
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

    const-string v1, "\\)"

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "|"

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

    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->coinCode()Ljava/lang/String;

    move-result-object v3

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

    move-result-object v2

    const-string v3, ")"

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

    move-result-object v2

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

    move-result-object v2

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

    move-result-object v0

    iput-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

    .line 1329
    :cond_67
    new-instance v0, Ljava/lang/StringBuilder;

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

    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

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

    move-result-object v0

    const-string v1, "?"

    invoke-virtual {v0, v1}, 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 {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v0

    iput-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->coinPattern:Ljava/util/regex/Pattern;

    .line 1330
    const/4 v0, 0x7

    new-array v0, v0, [Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    const/4 v1, 0x0

    new-instance v2, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "\u00a2"

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

    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

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

    move-result-object v3

    const-string v4, "?|c"

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

    move-result-object v3

    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

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

    move-result-object v3

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

    move-result-object v3

    .line 1331
    invoke-static {v3}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v3

    const/4 v4, 0x2

    invoke-direct {v2, p0, v3, v4}, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;-><init>(Lorg/bitcoinj/utils/BtcFormat;Ljava/util/regex/Pattern;I)V

    aput-object v2, v0, v1

    const/4 v1, 0x1

    new-instance v2, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "\u20a5"

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

    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

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

    move-result-object v3

    const-string v4, "?|m"

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

    move-result-object v3

    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

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

    move-result-object v3

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

    move-result-object v3

    .line 1332
    invoke-static {v3}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v3

    const/4 v4, 0x3

    invoke-direct {v2, p0, v3, v4}, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;-><init>(Lorg/bitcoinj/utils/BtcFormat;Ljava/util/regex/Pattern;I)V

    aput-object v2, v0, v1

    const/4 v1, 0x2

    new-instance v2, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "([\u00b5u]"

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

    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

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

    move-result-object v3

    const-string v4, ")"

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

    move-result-object v3

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

    move-result-object v3

    .line 1333
    invoke-static {v3}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v3

    const/4 v4, 0x6

    invoke-direct {v2, p0, v3, v4}, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;-><init>(Lorg/bitcoinj/utils/BtcFormat;Ljava/util/regex/Pattern;I)V

    aput-object v2, v0, v1

    const/4 v1, 0x3

    new-instance v2, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "(da"

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

    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

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

    move-result-object v3

    const-string v4, ")"

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

    move-result-object v3

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

    move-result-object v3

    .line 1334
    invoke-static {v3}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v3

    const/4 v4, -0x1

    invoke-direct {v2, p0, v3, v4}, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;-><init>(Lorg/bitcoinj/utils/BtcFormat;Ljava/util/regex/Pattern;I)V

    aput-object v2, v0, v1

    const/4 v1, 0x4

    new-instance v2, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "(h"

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

    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

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

    move-result-object v3

    const-string v4, ")"

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

    move-result-object v3

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

    move-result-object v3

    .line 1335
    invoke-static {v3}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v3

    const/4 v4, -0x2

    invoke-direct {v2, p0, v3, v4}, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;-><init>(Lorg/bitcoinj/utils/BtcFormat;Ljava/util/regex/Pattern;I)V

    aput-object v2, v0, v1

    const/4 v1, 0x5

    new-instance v2, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "(k"

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

    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

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

    move-result-object v3

    const-string v4, ")"

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

    move-result-object v3

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

    move-result-object v3

    .line 1336
    invoke-static {v3}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v3

    const/4 v4, -0x3

    invoke-direct {v2, p0, v3, v4}, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;-><init>(Lorg/bitcoinj/utils/BtcFormat;Ljava/util/regex/Pattern;I)V

    aput-object v2, v0, v1

    const/4 v1, 0x6

    new-instance v2, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "(M"

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

    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->ci:Ljava/lang/String;

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

    move-result-object v3

    const-string v4, ")"

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

    move-result-object v3

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

    move-result-object v3

    .line 1337
    invoke-static {v3}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v3

    const/4 v4, -0x6

    invoke-direct {v2, p0, v3, v4}, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;-><init>(Lorg/bitcoinj/utils/BtcFormat;Ljava/util/regex/Pattern;I)V

    aput-object v2, v0, v1

    iput-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->denoms:[Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    .line 1340
    :cond_18f
    monitor-exit p0

    .line 1341
    :cond_190
    return-object v0

    .line 1340
    :catchall_191
    move-exception v0

    monitor-exit p0
    :try_end_193
    .catchall {:try_start_5 .. :try_end_193} :catchall_191

    throw v0
.end method

.method public equals(Ljava/lang/Object;)Z
    .registers 6

    .prologue
    const/4 v0, 0x1

    const/4 v1, 0x0

    .line 1580
    if-ne p1, p0, :cond_5

    .line 1584
    :cond_4
    :goto_4
    return v0

    .line 1581
    :cond_5
    instance-of v2, p1, Lorg/bitcoinj/utils/BtcFormat;

    if-nez v2, :cond_b

    move v0, v1

    goto :goto_4

    .line 1582
    :cond_b
    check-cast p1, Lorg/bitcoinj/utils/BtcFormat;

    .line 1583
    invoke-virtual {p1}, Lorg/bitcoinj/utils/BtcFormat;->pattern()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->pattern()Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_2f

    .line 1584
    invoke-virtual {p1}, Lorg/bitcoinj/utils/BtcFormat;->symbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v2

    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->symbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/text/DecimalFormatSymbols;->equals(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_2f

    iget v2, p1, Lorg/bitcoinj/utils/BtcFormat;->minimumFractionDigits:I

    iget v3, p0, Lorg/bitcoinj/utils/BtcFormat;->minimumFractionDigits:I

    if-eq v2, v3, :cond_4

    :cond_2f
    move v0, v1

    .line 1583
    goto :goto_4
.end method

.method public varargs format(Ljava/lang/Object;I[I)Ljava/lang/String;
    .registers 10

    .prologue
    .line 1163
    new-instance v2, Ljava/lang/StringBuffer;

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

    new-instance v3, Ljava/text/FieldPosition;

    const/4 v0, 0x0

    invoke-direct {v3, v0}, Ljava/text/FieldPosition;-><init>(I)V

    invoke-static {p3}, Lorg/bitcoinj/utils/BtcFormat;->boxAsList([I)Ljava/util/List;

    move-result-object v5

    move-object v0, p0

    move-object v1, p1

    move v4, p2

    invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/utils/BtcFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ILjava/util/List;)Ljava/lang/StringBuffer;

    move-result-object v0

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

    move-result-object v0

    return-object v0
.end method

.method public format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
    .registers 10

    .prologue
    .line 1146
    iget v4, p0, Lorg/bitcoinj/utils/BtcFormat;->minimumFractionDigits:I

    iget-object v5, p0, Lorg/bitcoinj/utils/BtcFormat;->decimalGroups:Ljava/util/List;

    move-object v0, p0

    move-object v1, p1

    move-object v2, p2

    move-object v3, p3

    invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/utils/BtcFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ILjava/util/List;)Ljava/lang/StringBuffer;

    move-result-object v0

    return-object v0
.end method

.method public varargs format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;I[I)Ljava/lang/StringBuffer;
    .registers 12

    .prologue
    .line 1181
    invoke-static {p5}, Lorg/bitcoinj/utils/BtcFormat;->boxAsList([I)Ljava/util/List;

    move-result-object v5

    move-object v0, p0

    move-object v1, p1

    move-object v2, p2

    move-object v3, p3

    move v4, p4

    invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/utils/BtcFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ILjava/util/List;)Ljava/lang/StringBuffer;

    move-result-object v0

    return-object v0
.end method

.method public formatToCharacterIterator(Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator;
    .registers 8

    .prologue
    .line 1123
    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    monitor-enter v1

    .line 1124
    :try_start_3
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v0}, Ljava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v0

    .line 1125
    invoke-static {p1}, Lorg/bitcoinj/utils/BtcFormat;->inSatoshis(Ljava/lang/Object;)Ljava/math/BigInteger;

    move-result-object v2

    iget v3, p0, Lorg/bitcoinj/utils/BtcFormat;->minimumFractionDigits:I

    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->decimalGroups:Ljava/util/List;

    invoke-direct {p0, v2, v3, v4}, Lorg/bitcoinj/utils/BtcFormat;->denominateAndRound(Ljava/math/BigInteger;ILjava/util/List;)Ljava/math/BigDecimal;

    move-result-object v2

    .line 1126
    iget-object v3, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v2}, Ljava/math/BigDecimal;->scale()I

    move-result v4

    invoke-virtual {v2}, Ljava/math/BigDecimal;->scale()I

    move-result v5

    invoke-static {v3, v4, v5}, Lorg/bitcoinj/utils/BtcFormat;->setFormatterDigits(Ljava/text/DecimalFormat;II)Lcom/google/common/collect/ImmutableList;

    move-result-object v3

    .line 1127
    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v4, v2}, Ljava/text/DecimalFormat;->formatToCharacterIterator(Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator;

    move-result-object v2

    .line 1128
    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v4, v0}, Ljava/text/DecimalFormat;->setDecimalFormatSymbols(Ljava/text/DecimalFormatSymbols;)V

    .line 1129
    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    const/4 v0, 0x0

    invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Integer;

    invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

    move-result v5

    const/4 v0, 0x1

    invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Integer;

    invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

    move-result v0

    invoke-static {v4, v5, v0}, Lorg/bitcoinj/utils/BtcFormat;->setFormatterDigits(Ljava/text/DecimalFormat;II)Lcom/google/common/collect/ImmutableList;

    .line 1130
    monitor-exit v1

    return-object v2

    .line 1131
    :catchall_4b
    move-exception v0

    monitor-exit v1
    :try_end_4d
    .catchall {:try_start_3 .. :try_end_4d} :catchall_4b

    throw v0
.end method

.method public hashCode()I
    .registers 4

    .prologue
    .line 1592
    const/4 v0, 0x4

    new-array v0, v0, [Ljava/lang/Object;

    const/4 v1, 0x0

    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->pattern()Ljava/lang/String;

    move-result-object v2

    aput-object v2, v0, v1

    const/4 v1, 0x1

    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->symbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v2

    aput-object v2, v0, v1

    const/4 v1, 0x2

    iget v2, p0, Lorg/bitcoinj/utils/BtcFormat;->minimumFractionDigits:I

    invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v2

    aput-object v2, v0, v1

    const/4 v1, 0x3

    iget-object v2, p0, Lorg/bitcoinj/utils/BtcFormat;->decimalGroups:Ljava/util/List;

    aput-object v2, v0, v1

    .line 2084
    invoke-static {v0}, Ljava/util/Arrays;->hashCode([Ljava/lang/Object;)I

    move-result v0

    .line 1592
    return v0
.end method

.method public parse(Ljava/lang/String;)Lorg/bitcoinj/core/Coin;
    .registers 3

    .prologue
    .line 1462
    invoke-virtual {p0, p1}, Lorg/bitcoinj/utils/BtcFormat;->parseObject(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Coin;

    return-object v0
.end method

.method public parse(Ljava/lang/String;Ljava/text/ParsePosition;)Lorg/bitcoinj/core/Coin;
    .registers 12

    .prologue
    const/4 v1, 0x0

    const/4 v0, 0x0

    .line 1412
    .line 1415
    iget-object v4, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    monitor-enter v4

    .line 1416
    :try_start_5
    iget-object v2, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v2}, Ljava/text/DecimalFormat;->toPattern()Ljava/lang/String;

    move-result-object v2

    const-string v3, "\u00a4"

    invoke-virtual {v2, v3}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v2

    if-eqz v2, :cond_79

    .line 1417
    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->denomMatchers()[Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;

    move-result-object v3

    array-length v5, v3

    move v2, v0

    :goto_19
    if-ge v2, v5, :cond_8d

    aget-object v6, v3, v2

    .line 1418
    iget-object v7, v6, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;->pattern:Ljava/util/regex/Pattern;

    invoke-virtual {v7, p1}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;

    move-result-object v7

    .line 1419
    invoke-virtual {v7}, Ljava/util/regex/Matcher;->find()Z

    move-result v8

    if-eqz v8, :cond_76

    .line 1420
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v7}, Ljava/util/regex/Matcher;->group()Ljava/lang/String;

    move-result-object v2

    invoke-static {v0, v2}, Lorg/bitcoinj/utils/BtcFormat;->setSymbolAndCode(Ljava/text/DecimalFormat;Ljava/lang/String;)Ljava/text/DecimalFormatSymbols;

    move-result-object v2

    .line 1421
    iget v0, v6, Lorg/bitcoinj/utils/BtcFormat$ScaleMatcher;->scale:I

    .line 1425
    :goto_35
    if-nez v0, :cond_8a

    .line 1426
    iget-object v2, p0, Lorg/bitcoinj/utils/BtcFormat;->coinPattern:Ljava/util/regex/Pattern;

    invoke-virtual {v2, p1}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;

    move-result-object v2

    .line 1427
    invoke-virtual {v2}, Ljava/util/regex/Matcher;->find()Z

    .line 1428
    iget-object v3, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v2}, Ljava/util/regex/Matcher;->group()Ljava/lang/String;

    move-result-object v2

    invoke-static {v3, v2}, Lorg/bitcoinj/utils/BtcFormat;->setSymbolAndCode(Ljava/text/DecimalFormat;Ljava/lang/String;)Ljava/text/DecimalFormatSymbols;

    move-result-object v2

    move-object v3, v2

    move v2, v0

    .line 1432
    :goto_4c
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v0, p1, p2}, Ljava/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;
    :try_end_51
    .catchall {:try_start_5 .. :try_end_51} :catchall_87

    move-result-object v0

    .line 1433
    if-eqz v0, :cond_85

    .line 1434
    :try_start_54
    check-cast v0, Ljava/math/BigDecimal;

    .line 1435
    invoke-static {v2}, Lorg/bitcoinj/utils/BtcFormat;->offSatoshis(I)I

    move-result v2

    invoke-virtual {v0, v2}, Ljava/math/BigDecimal;->movePointRight(I)Ljava/math/BigDecimal;

    move-result-object v0

    const/4 v2, 0x0

    sget-object v5, Ljava/math/RoundingMode;->HALF_UP:Ljava/math/RoundingMode;

    invoke-virtual {v0, v2, v5}, Ljava/math/BigDecimal;->setScale(ILjava/math/RoundingMode;)Ljava/math/BigDecimal;

    move-result-object v0

    invoke-virtual {v0}, Ljava/math/BigDecimal;->longValue()J

    move-result-wide v6

    .line 1434
    invoke-static {v6, v7}, Lorg/bitcoinj/core/Coin;->valueOf(J)Lorg/bitcoinj/core/Coin;
    :try_end_6c
    .catch Ljava/lang/IllegalArgumentException; {:try_start_54 .. :try_end_6c} :catch_80
    .catchall {:try_start_54 .. :try_end_6c} :catchall_87

    move-result-object v0

    .line 1440
    :goto_6d
    if-eqz v3, :cond_74

    :try_start_6f
    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v1, v3}, Ljava/text/DecimalFormat;->setDecimalFormatSymbols(Ljava/text/DecimalFormatSymbols;)V

    .line 1441
    :cond_74
    monitor-exit v4

    .line 1442
    return-object v0

    .line 1417
    :cond_76
    add-int/lit8 v2, v2, 0x1

    goto :goto_19

    .line 1430
    :cond_79
    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->scale()I

    move-result v0

    move v2, v0

    move-object v3, v1

    goto :goto_4c

    .line 1438
    :catch_80
    move-exception v0

    const/4 v0, 0x0

    invoke-virtual {p2, v0}, Ljava/text/ParsePosition;->setIndex(I)V

    :cond_85
    move-object v0, v1

    goto :goto_6d

    .line 1441
    :catchall_87
    move-exception v0

    monitor-exit v4
    :try_end_89
    .catchall {:try_start_6f .. :try_end_89} :catchall_87

    throw v0

    :cond_8a
    move-object v3, v2

    move v2, v0

    goto :goto_4c

    :cond_8d
    move-object v2, v1

    goto :goto_35
.end method

.method public final parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Object;
    .registers 4

    .prologue
    .line 1307
    invoke-virtual {p0, p1, p2}, Lorg/bitcoinj/utils/BtcFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    return-object v0
.end method

.method public pattern()Ljava/lang/String;
    .registers 12

    .prologue
    .line 1546
    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    monitor-enter v1

    .line 1547
    :try_start_3
    new-instance v2, Ljava/lang/StringBuilder;

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

    .line 1548
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->decimalGroups:Ljava/util/List;

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

    move-result-object v3

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

    move-result v0

    if-eqz v0, :cond_37

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

    move-result-object v0

    check-cast v0, Ljava/lang/Integer;

    invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

    move-result v0

    .line 1549
    const-string v4, "("

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

    move-result-object v4

    const-string v5, "#"

    invoke-static {v5, v0}, Lcom/google/common/base/t;->repeat(Ljava/lang/String;I)Ljava/lang/String;

    move-result-object v0

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

    move-result-object v0

    const-string v4, ")"

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

    goto :goto_e

    .line 1569
    :catchall_34
    move-exception v0

    monitor-exit v1
    :try_end_36
    .catchall {:try_start_3 .. :try_end_36} :catchall_34

    throw v0

    .line 1551
    :cond_37
    :try_start_37
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v0}, Ljava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v0

    .line 1552
    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getDigit()C

    move-result v3

    invoke-static {v3}, Ljava/lang/String;->valueOf(C)Ljava/lang/String;

    move-result-object v3

    .line 1553
    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getExponentSeparator()Ljava/lang/String;

    move-result-object v4

    .line 1554
    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getGroupingSeparator()C

    move-result v5

    invoke-static {v5}, Ljava/lang/String;->valueOf(C)Ljava/lang/String;

    move-result-object v5

    .line 1555
    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getMonetaryDecimalSeparator()C

    move-result v6

    invoke-static {v6}, Ljava/lang/String;->valueOf(C)Ljava/lang/String;

    move-result-object v6

    .line 1556
    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getZeroDigit()C

    move-result v7

    invoke-static {v7}, Ljava/lang/String;->valueOf(C)Ljava/lang/String;

    move-result-object v7

    .line 1557
    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getPatternSeparator()C

    move-result v8

    invoke-static {v8}, Ljava/lang/String;->valueOf(C)Ljava/lang/String;

    move-result-object v8

    .line 1558
    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getMinusSign()C

    move-result v9

    invoke-static {v9}, Ljava/lang/String;->valueOf(C)Ljava/lang/String;

    .line 1559
    invoke-virtual {v0}, Ljava/text/DecimalFormatSymbols;->getDecimalSeparator()C

    move-result v0

    invoke-static {v0}, Ljava/lang/String;->valueOf(C)Ljava/lang/String;

    move-result-object v0

    .line 1561
    new-instance v9, Ljava/lang/StringBuilder;

    const-string v10, "(^|"

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

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

    move-result-object v8

    const-string v9, ")([^"

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

    move-result-object v8

    new-instance v9, Ljava/lang/StringBuilder;

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

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

    move-result-object v9

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

    move-result-object v9

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

    move-result-object v9

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

    move-result-object v9

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

    move-result-object v9

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

    move-result-object v9

    .line 1562
    invoke-static {v9}, Ljava/util/regex/Matcher;->quoteReplacement(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v9

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

    move-result-object v8

    const-string v9, "\']*(\'[^\']*\')?)*["

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

    move-result-object v8

    new-instance v9, Ljava/lang/StringBuilder;

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

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

    move-result-object v3

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

    move-result-object v3

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

    move-result-object v3

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

    move-result-object v0

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

    move-result-object v0

    invoke-virtual {v0, v4}, 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 1563
    invoke-static {v0}, Ljava/util/regex/Matcher;->quoteReplacement(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

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

    move-result-object v0

    const-string v3, "]+"

    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 1565
    iget-object v3, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v3}, Ljava/text/DecimalFormat;->toLocalizedPattern()Ljava/lang/String;

    move-result-object v3

    new-instance v4, Ljava/lang/StringBuilder;

    const-string v5, "$0"

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

    .line 1566
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

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

    move-result-object v2

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

    move-result-object v2

    invoke-virtual {v3, v0, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string v2, "\u00a4\u00a4"

    .line 1567
    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->coinCode()Ljava/lang/String;

    move-result-object v3

    invoke-static {v3}, Ljava/util/regex/Matcher;->quoteReplacement(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v0, v2, v3}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string v2, "\u00a4"

    .line 1568
    invoke-virtual {p0}, Lorg/bitcoinj/utils/BtcFormat;->coinSymbol()Ljava/lang/String;

    move-result-object v3

    invoke-static {v3}, Ljava/util/regex/Matcher;->quoteReplacement(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v0, v2, v3}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    monitor-exit v1
    :try_end_121
    .catchall {:try_start_37 .. :try_end_121} :catchall_34

    .line 1565
    return-object v0
.end method

.method protected abstract scale()I
.end method

.method protected abstract scale(Ljava/math/BigInteger;I)I
.end method

.method public symbols()Ljava/text/DecimalFormatSymbols;
    .registers 3

    .prologue
    .line 1572
    iget-object v1, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    monitor-enter v1

    .line 1573
    :try_start_3
    iget-object v0, p0, Lorg/bitcoinj/utils/BtcFormat;->numberFormat:Ljava/text/DecimalFormat;

    invoke-virtual {v0}, Ljava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;

    move-result-object v0

    monitor-exit v1

    return-object v0

    .line 1574
    :catchall_b
    move-exception v0

    monitor-exit v1
    :try_end_d
    .catchall {:try_start_3 .. :try_end_d} :catchall_b

    throw v0
.end method