Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / java / text / DecimalFormat.js
index 75783a3..5b23839 100644 (file)
-Clazz.declarePackage ("java.text");\r
-Clazz.load (["java.text.NumberFormat", "java.util.Hashtable", "java.text.DigitList"], "java.text.DecimalFormat", ["java.lang.Byte", "$.Character", "$.Double", "$.Float", "$.IllegalArgumentException", "$.InternalError", "$.Long", "$.NullPointerException", "$.Number", "$.Short", "$.StringBuffer", "java.util.ArrayList", "java.text.CharacterIteratorFieldDelegate", "$.DecimalFormatSymbols", "$.FieldPosition", "$.ParsePosition", "java.util.Locale", "jssun.util.resources.LocaleData"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.digitList = null;\r
-this.positivePrefix = "";\r
-this.positiveSuffix = "";\r
-this.negativePrefix = "-";\r
-this.negativeSuffix = "";\r
-this.posPrefixPattern = null;\r
-this.posSuffixPattern = null;\r
-this.negPrefixPattern = null;\r
-this.negSuffixPattern = null;\r
-this.multiplier = 1;\r
-this.groupingSize = 3;\r
-this.decimalSeparatorAlwaysShown = false;\r
-this.parseBigDecimal = false;\r
-this.isCurrencyFormat = false;\r
-this.symbols = null;\r
-this.useExponentialNotation = false;\r
-this.positivePrefixFieldPositions = null;\r
-this.positiveSuffixFieldPositions = null;\r
-this.negativePrefixFieldPositions = null;\r
-this.negativeSuffixFieldPositions = null;\r
-this.minExponentDigits = 0;\r
-this.$maximumIntegerDigits = 0;\r
-this.$minimumIntegerDigits = 0;\r
-this.$maximumFractionDigits = 0;\r
-this.$minimumFractionDigits = 0;\r
-this.roundingMode = null;\r
-Clazz.instantialize (this, arguments);\r
-}, java.text, "DecimalFormat", java.text.NumberFormat);\r
-Clazz.prepareFields (c$, function () {\r
-this.digitList =  new java.text.DigitList ();\r
-this.$maximumIntegerDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumIntegerDigits", []);\r
-this.$minimumIntegerDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumIntegerDigits", []);\r
-this.$maximumFractionDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumFractionDigits", []);\r
-this.$minimumFractionDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumFractionDigits", []);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, java.text.DecimalFormat, []);\r
-var def = java.util.Locale.getDefault ();\r
-var pattern = java.text.DecimalFormat.$cachedLocaleData.get (def);\r
-if (pattern == null) {\r
-var rb = jssun.util.resources.LocaleData.getNumberFormatData (def);\r
-var all = rb.getStringArray ("NumberPatterns");\r
-pattern = all[0];\r
-java.text.DecimalFormat.$cachedLocaleData.put (def, pattern);\r
-}this.symbols =  new java.text.DecimalFormatSymbols (def);\r
-this.applyPattern (pattern, false);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (pattern) {\r
-Clazz.superConstructor (this, java.text.DecimalFormat, []);\r
-this.symbols =  new java.text.DecimalFormatSymbols (java.util.Locale.getDefault ());\r
-this.applyPattern (pattern, false);\r
-}, "~S");\r
-Clazz.makeConstructor (c$, \r
-function (pattern, symbols) {\r
-Clazz.superConstructor (this, java.text.DecimalFormat, []);\r
-this.symbols = symbols.clone ();\r
-this.applyPattern (pattern, false);\r
-}, "~S,java.text.DecimalFormatSymbols");\r
-Clazz.defineMethod (c$, "format", \r
-function (number, toAppendTo, pos) {\r
-if (Clazz.instanceOf (number, Long) || Clazz.instanceOf (number, Integer) || Clazz.instanceOf (number, Short) || Clazz.instanceOf (number, Byte)) {\r
-return this.format ((number).longValue (), toAppendTo, pos);\r
-} else if (Clazz.instanceOf (number, Number)) {\r
-return this.format ((number).doubleValue (), toAppendTo, pos);\r
-} else {\r
-throw  new IllegalArgumentException ("Cannot format given Object as a Number");\r
-}}, "~O,StringBuffer,java.text.FieldPosition");\r
-Clazz.defineMethod (c$, "format", \r
-function (number, result, fieldPosition) {\r
-fieldPosition.setBeginIndex (0);\r
-fieldPosition.setEndIndex (0);\r
-var isInt = (number == Clazz.doubleToInt (number) && Math.abs (number) < 2147483647);\r
-if (isInt) return this.formatLong (Clazz.doubleToInt (number), result, fieldPosition.getFieldDelegate ());\r
- else return this.formatDouble (number, result, fieldPosition.getFieldDelegate ());\r
-}, "~N,StringBuffer,java.text.FieldPosition");\r
-Clazz.defineMethod (c$, "formatDouble", \r
- function (number, result, delegate) {\r
-if (Double.isNaN (number) || (Double.isInfinite (number) && this.multiplier == 0)) {\r
-var iFieldStart = result.length ();\r
-result.append (this.symbols.getNaN ());\r
-delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, result.length (), result);\r
-return result;\r
-}var isNegative =  new Boolean (((number < 0.0) || (number == 0.0 && 1 / number < 0.0)) ^ (this.multiplier < 0)).valueOf ();\r
-if (this.multiplier != 1) {\r
-number *= this.multiplier;\r
-}if (Double.isInfinite (number)) {\r
-if (isNegative) {\r
-this.append (result, this.negativePrefix, delegate, this.getNegativePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);\r
-} else {\r
-this.append (result, this.positivePrefix, delegate, this.getPositivePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);\r
-}var iFieldStart = result.length ();\r
-result.append (this.symbols.getInfinity ());\r
-delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, result.length (), result);\r
-if (isNegative) {\r
-this.append (result, this.negativeSuffix, delegate, this.getNegativeSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);\r
-} else {\r
-this.append (result, this.positiveSuffix, delegate, this.getPositiveSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);\r
-}return result;\r
-}if (isNegative) {\r
-number = -number;\r
-}{\r
-var maxIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumIntegerDigits", []);\r
-var minIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumIntegerDigits", []);\r
-var maxFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumFractionDigits", []);\r
-var minFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumFractionDigits", []);\r
-this.digitList.set (isNegative, number, this.useExponentialNotation ? maxIntDigits + maxFraDigits : maxFraDigits, !this.useExponentialNotation);\r
-return this.subformat (result, delegate, isNegative, false, maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);\r
-}}, "~N,StringBuffer,java.text.Format.FieldDelegate");\r
-Clazz.defineMethod (c$, "formatLong", \r
- function (number, result, delegate) {\r
-var isNegative = (number < 0);\r
-if (isNegative) {\r
-number = -number;\r
-}if (number < 0) {\r
-} else if (this.multiplier != 1 && this.multiplier != 0) {\r
-var cutoff = Clazz.doubleToInt (9223372036854775807 / this.multiplier);\r
-if (cutoff < 0) {\r
-cutoff = -cutoff;\r
-}}number *= this.multiplier;\r
-if (number == 0) {\r
-isNegative = false;\r
-} else {\r
-if (this.multiplier < 0) {\r
-number = -number;\r
-isNegative = !isNegative;\r
-}}{\r
-var maxIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumIntegerDigits", []);\r
-var minIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumIntegerDigits", []);\r
-var maxFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumFractionDigits", []);\r
-var minFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumFractionDigits", []);\r
-this.digitList.setLong (isNegative, number, this.useExponentialNotation ? maxIntDigits + maxFraDigits : 0);\r
-return this.subformat (result, delegate, isNegative, true, maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);\r
-}}, "~N,StringBuffer,java.text.Format.FieldDelegate");\r
-Clazz.overrideMethod (c$, "formatToCharacterIterator", \r
-function (obj) {\r
-var delegate =  new java.text.CharacterIteratorFieldDelegate ();\r
-var sb =  new StringBuffer ();\r
-if (Clazz.instanceOf (obj, Double) || Clazz.instanceOf (obj, Float)) {\r
-this.formatDouble ((obj).doubleValue (), sb, delegate);\r
-} else if (Clazz.instanceOf (obj, Long) || Clazz.instanceOf (obj, Integer) || Clazz.instanceOf (obj, Short) || Clazz.instanceOf (obj, Byte)) {\r
-this.formatLong ((obj).longValue (), sb, delegate);\r
-} else if (obj == null) {\r
-throw  new NullPointerException ("formatToCharacterIterator must be passed non-null object");\r
-} else {\r
-throw  new IllegalArgumentException ("Cannot format given Object as a Number");\r
-}return delegate.getIterator (sb.toString ());\r
-}, "~O");\r
-Clazz.defineMethod (c$, "subformat", \r
- function (result, delegate, isNegative, isInteger, maxIntDigits, minIntDigits, maxFraDigits, minFraDigits) {\r
-var zero = this.symbols.getZeroDigit ();\r
-var zeroDelta = zero.charCodeAt (0) - 48;\r
-var grouping = this.symbols.getGroupingSeparator ();\r
-var decimal = this.isCurrencyFormat ? this.symbols.getMonetaryDecimalSeparator () : this.symbols.getDecimalSeparator ();\r
-if (this.digitList.isZero ()) {\r
-this.digitList.decimalAt = 0;\r
-}if (isNegative) {\r
-this.append (result, this.negativePrefix, delegate, this.getNegativePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);\r
-} else {\r
-this.append (result, this.positivePrefix, delegate, this.getPositivePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);\r
-}if (this.useExponentialNotation) {\r
-var iFieldStart = result.length ();\r
-var iFieldEnd = -1;\r
-var fFieldStart = -1;\r
-var exponent = this.digitList.decimalAt;\r
-var repeat = maxIntDigits;\r
-var minimumIntegerDigits = minIntDigits;\r
-if (repeat > 1 && repeat > minIntDigits) {\r
-if (exponent >= 1) {\r
-exponent = (Clazz.doubleToInt ((exponent - 1) / repeat)) * repeat;\r
-} else {\r
-exponent = (Clazz.doubleToInt ((exponent - repeat) / repeat)) * repeat;\r
-}minimumIntegerDigits = 1;\r
-} else {\r
-exponent -= minimumIntegerDigits;\r
-}var minimumDigits = minIntDigits + minFraDigits;\r
-if (minimumDigits < 0) {\r
-minimumDigits = 2147483647;\r
-}var integerDigits = this.digitList.isZero () ? minimumIntegerDigits : this.digitList.decimalAt - exponent;\r
-if (minimumDigits < integerDigits) {\r
-minimumDigits = integerDigits;\r
-}var totalDigits = this.digitList.count;\r
-if (minimumDigits > totalDigits) {\r
-totalDigits = minimumDigits;\r
-}var addedDecimalSeparator = false;\r
-for (var i = 0; i < totalDigits; ++i) {\r
-if (i == integerDigits) {\r
-iFieldEnd = result.length ();\r
-result.append (decimal);\r
-addedDecimalSeparator = true;\r
-fFieldStart = result.length ();\r
-}result.append ((i < this.digitList.count) ? String.fromCharCode ((this.digitList.digits[i]).charCodeAt (0) + zeroDelta) : zero);\r
-}\r
-if (this.decimalSeparatorAlwaysShown && totalDigits == integerDigits) {\r
-iFieldEnd = result.length ();\r
-result.append (decimal);\r
-addedDecimalSeparator = true;\r
-fFieldStart = result.length ();\r
-}if (iFieldEnd == -1) {\r
-iFieldEnd = result.length ();\r
-}delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, iFieldEnd, result);\r
-if (addedDecimalSeparator) {\r
-delegate.formatted (java.text.NumberFormat.Field.DECIMAL_SEPARATOR, java.text.NumberFormat.Field.DECIMAL_SEPARATOR, iFieldEnd, fFieldStart, result);\r
-}if (fFieldStart == -1) {\r
-fFieldStart = result.length ();\r
-}delegate.formatted (1, java.text.NumberFormat.Field.FRACTION, java.text.NumberFormat.Field.FRACTION, fFieldStart, result.length (), result);\r
-var fieldStart = result.length ();\r
-result.append (this.symbols.getExponentSeparator ());\r
-delegate.formatted (java.text.NumberFormat.Field.EXPONENT_SYMBOL, java.text.NumberFormat.Field.EXPONENT_SYMBOL, fieldStart, result.length (), result);\r
-if (this.digitList.isZero ()) {\r
-exponent = 0;\r
-}var negativeExponent = exponent < 0;\r
-if (negativeExponent) {\r
-exponent = -exponent;\r
-fieldStart = result.length ();\r
-result.append (this.symbols.getMinusSign ());\r
-delegate.formatted (java.text.NumberFormat.Field.EXPONENT_SIGN, java.text.NumberFormat.Field.EXPONENT_SIGN, fieldStart, result.length (), result);\r
-}this.digitList.setExp (negativeExponent, exponent);\r
-var eFieldStart = result.length ();\r
-for (var i = this.digitList.decimalAt; i < this.minExponentDigits; ++i) {\r
-result.append (zero);\r
-}\r
-for (var i = 0; i < this.digitList.decimalAt; ++i) {\r
-result.append ((i < this.digitList.count) ? String.fromCharCode ((this.digitList.digits[i]).charCodeAt (0) + zeroDelta) : zero);\r
-}\r
-delegate.formatted (java.text.NumberFormat.Field.EXPONENT, java.text.NumberFormat.Field.EXPONENT, eFieldStart, result.length (), result);\r
-} else {\r
-var iFieldStart = result.length ();\r
-var count = minIntDigits;\r
-var digitIndex = 0;\r
-if (this.digitList.decimalAt > 0 && count < this.digitList.decimalAt) {\r
-count = this.digitList.decimalAt;\r
-}if (count > maxIntDigits) {\r
-count = maxIntDigits;\r
-digitIndex = this.digitList.decimalAt - count;\r
-}var sizeBeforeIntegerPart = result.length ();\r
-for (var i = count - 1; i >= 0; --i) {\r
-if (i < this.digitList.decimalAt && digitIndex < this.digitList.count) {\r
-result.append (String.fromCharCode ((this.digitList.digits[digitIndex++]).charCodeAt (0) + zeroDelta));\r
-} else {\r
-result.append (zero);\r
-}if (this.isGroupingUsed () && i > 0 && (this.groupingSize != 0) && (i % this.groupingSize == 0)) {\r
-var gStart = result.length ();\r
-result.append (grouping);\r
-delegate.formatted (java.text.NumberFormat.Field.GROUPING_SEPARATOR, java.text.NumberFormat.Field.GROUPING_SEPARATOR, gStart, result.length (), result);\r
-}}\r
-var fractionPresent = (minFraDigits > 0) || (!isInteger && digitIndex < this.digitList.count);\r
-if (!fractionPresent && result.length () == sizeBeforeIntegerPart) {\r
-result.append (zero);\r
-}delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, result.length (), result);\r
-var sStart = result.length ();\r
-if (this.decimalSeparatorAlwaysShown || fractionPresent) {\r
-result.append (decimal);\r
-}if (sStart != result.length ()) {\r
-delegate.formatted (java.text.NumberFormat.Field.DECIMAL_SEPARATOR, java.text.NumberFormat.Field.DECIMAL_SEPARATOR, sStart, result.length (), result);\r
-}var fFieldStart = result.length ();\r
-for (var i = 0; i < maxFraDigits; ++i) {\r
-if (i >= minFraDigits && (isInteger || digitIndex >= this.digitList.count)) {\r
-break;\r
-}if (-1 - i > (this.digitList.decimalAt - 1)) {\r
-result.append (zero);\r
-continue;\r
-}if (!isInteger && digitIndex < this.digitList.count) {\r
-result.append (String.fromCharCode ((this.digitList.digits[digitIndex++]).charCodeAt (0) + zeroDelta));\r
-} else {\r
-result.append (zero);\r
-}}\r
-delegate.formatted (1, java.text.NumberFormat.Field.FRACTION, java.text.NumberFormat.Field.FRACTION, fFieldStart, result.length (), result);\r
-}if (isNegative) {\r
-this.append (result, this.negativeSuffix, delegate, this.getNegativeSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);\r
-} else {\r
-this.append (result, this.positiveSuffix, delegate, this.getPositiveSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);\r
-}return result;\r
-}, "StringBuffer,java.text.Format.FieldDelegate,~B,~B,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "append", \r
- function (result, string, delegate, positions, signAttribute) {\r
-var start = result.length ();\r
-if (string.length > 0) {\r
-result.append (string);\r
-for (var counter = 0, max = positions.length; counter < max; counter++) {\r
-var fp = positions[counter];\r
-var attribute = fp.getFieldAttribute ();\r
-if (attribute === java.text.NumberFormat.Field.SIGN) {\r
-attribute = signAttribute;\r
-}delegate.formatted (attribute, attribute, start + fp.getBeginIndex (), start + fp.getEndIndex (), result);\r
-}\r
-}}, "StringBuffer,~S,java.text.Format.FieldDelegate,~A,java.text.Format.Field");\r
-Clazz.defineMethod (c$, "parse", \r
-function (text, pos) {\r
-if (text.regionMatches (pos.index, this.symbols.getNaN (), 0, this.symbols.getNaN ().length)) {\r
-pos.index = pos.index + this.symbols.getNaN ().length;\r
-return  new Double (NaN);\r
-}var status =  Clazz.newBooleanArray (2, false);\r
-if (!this.subparse (text, pos, this.positivePrefix, this.negativePrefix, this.digitList, false, status)) {\r
-return null;\r
-}if (status[0]) {\r
-if (status[1] == (this.multiplier >= 0)) {\r
-return  new Double (Infinity);\r
-} else {\r
-return  new Double (-Infinity);\r
-}}if (this.multiplier == 0) {\r
-if (this.digitList.isZero ()) {\r
-return  new Double (NaN);\r
-} else if (status[1]) {\r
-return  new Double (Infinity);\r
-} else {\r
-return  new Double (-Infinity);\r
-}}var gotDouble = true;\r
-var gotLongMinimum = false;\r
-var doubleResult = 0.0;\r
-var longResult = 0;\r
-if (this.digitList.fitsIntoLong (status[1], this.isParseIntegerOnly ())) {\r
-gotDouble = false;\r
-longResult = this.digitList.getLong ();\r
-if (longResult < 0) {\r
-gotLongMinimum = true;\r
-}} else {\r
-doubleResult = this.digitList.getDouble ();\r
-}if (this.multiplier != 1) {\r
-if (gotDouble) {\r
-doubleResult /= this.multiplier;\r
-} else {\r
-if (longResult % this.multiplier == 0) {\r
-longResult = Clazz.doubleToInt (longResult / this.multiplier);\r
-} else {\r
-doubleResult = (longResult) / this.multiplier;\r
-gotDouble = true;\r
-}}}if (!status[1] && !gotLongMinimum) {\r
-doubleResult = -doubleResult;\r
-longResult = -longResult;\r
-}if (this.multiplier != 1 && gotDouble) {\r
-longResult = Clazz.doubleToLong (doubleResult);\r
-gotDouble = ((doubleResult != longResult) || (doubleResult == 0.0 && 1 / doubleResult < 0.0)) && !this.isParseIntegerOnly ();\r
-}return gotDouble ?  new Double (doubleResult) :  new Long (longResult);\r
-}, "~S,java.text.ParsePosition");\r
-Clazz.defineMethod (c$, "subparse", \r
- function (text, parsePosition, positivePrefix, negativePrefix, digits, isExponent, status) {\r
-var position = parsePosition.index;\r
-var oldStart = parsePosition.index;\r
-var backup;\r
-var gotPositive;\r
-var gotNegative;\r
-gotPositive = text.regionMatches (position, positivePrefix, 0, positivePrefix.length);\r
-gotNegative = text.regionMatches (position, negativePrefix, 0, negativePrefix.length);\r
-if (gotPositive && gotNegative) {\r
-if (positivePrefix.length > negativePrefix.length) {\r
-gotNegative = false;\r
-} else if (positivePrefix.length < negativePrefix.length) {\r
-gotPositive = false;\r
-}}if (gotPositive) {\r
-position += positivePrefix.length;\r
-} else if (gotNegative) {\r
-position += negativePrefix.length;\r
-} else {\r
-parsePosition.errorIndex = position;\r
-return false;\r
-}status[0] = false;\r
-if (!isExponent && text.regionMatches (position, this.symbols.getInfinity (), 0, this.symbols.getInfinity ().length)) {\r
-position += this.symbols.getInfinity ().length;\r
-status[0] = true;\r
-} else {\r
-digits.decimalAt = digits.count = 0;\r
-var zero = this.symbols.getZeroDigit ();\r
-var decimal = this.isCurrencyFormat ? this.symbols.getMonetaryDecimalSeparator () : this.symbols.getDecimalSeparator ();\r
-var grouping = this.symbols.getGroupingSeparator ();\r
-var exponentString = this.symbols.getExponentSeparator ();\r
-var sawDecimal = false;\r
-var sawExponent = false;\r
-var sawDigit = false;\r
-var exponent = 0;\r
-var digitCount = 0;\r
-backup = -1;\r
-for (; position < text.length; ++position) {\r
-var ch = text.charAt (position);\r
-var digit = ch.charCodeAt (0) - zero.charCodeAt (0);\r
-if (digit < 0 || digit > 9) {\r
-digit = Character.digit (ch, 10);\r
-}if (digit == 0) {\r
-backup = -1;\r
-sawDigit = true;\r
-if (digits.count == 0) {\r
-if (!sawDecimal) {\r
-continue;\r
-}--digits.decimalAt;\r
-} else {\r
-++digitCount;\r
-digits.append (String.fromCharCode (digit + 48));\r
-}} else if (digit > 0 && digit <= 9) {\r
-sawDigit = true;\r
-++digitCount;\r
-digits.append (String.fromCharCode (digit + 48));\r
-backup = -1;\r
-} else if (!isExponent && ch == decimal) {\r
-if (this.isParseIntegerOnly () || sawDecimal) {\r
-break;\r
-}digits.decimalAt = digitCount;\r
-sawDecimal = true;\r
-} else if (!isExponent && ch == grouping && this.isGroupingUsed ()) {\r
-if (sawDecimal) {\r
-break;\r
-}backup = position;\r
-} else if (!isExponent && text.regionMatches (position, exponentString, 0, exponentString.length) && !sawExponent) {\r
-var pos =  new java.text.ParsePosition (position + exponentString.length);\r
-var stat =  Clazz.newBooleanArray (2, false);\r
-var exponentDigits =  new java.text.DigitList ();\r
-if (this.subparse (text, pos, "", Character.toString (this.symbols.getMinusSign ()), exponentDigits, true, stat) && exponentDigits.fitsIntoLong (stat[1], true)) {\r
-position = pos.index;\r
-exponent = exponentDigits.getLong ();\r
-if (!stat[1]) {\r
-exponent = -exponent;\r
-}sawExponent = true;\r
-}break;\r
-} else {\r
-break;\r
-}}\r
-if (backup != -1) {\r
-position = backup;\r
-}if (!sawDecimal) {\r
-digits.decimalAt = digitCount;\r
-}digits.decimalAt += exponent;\r
-if (!sawDigit && digitCount == 0) {\r
-parsePosition.index = oldStart;\r
-parsePosition.errorIndex = oldStart;\r
-return false;\r
-}}if (!isExponent) {\r
-if (gotPositive) {\r
-gotPositive = text.regionMatches (position, this.positiveSuffix, 0, this.positiveSuffix.length);\r
-}if (gotNegative) {\r
-gotNegative = text.regionMatches (position, this.negativeSuffix, 0, this.negativeSuffix.length);\r
-}if (gotPositive && gotNegative) {\r
-if (this.positiveSuffix.length > this.negativeSuffix.length) {\r
-gotNegative = false;\r
-} else if (this.positiveSuffix.length < this.negativeSuffix.length) {\r
-gotPositive = false;\r
-}}if (gotPositive == gotNegative) {\r
-parsePosition.errorIndex = position;\r
-return false;\r
-}parsePosition.index = position + (gotPositive ? this.positiveSuffix.length : this.negativeSuffix.length);\r
-} else {\r
-parsePosition.index = position;\r
-}status[1] = gotPositive;\r
-if (parsePosition.index == oldStart) {\r
-parsePosition.errorIndex = position;\r
-return false;\r
-}return true;\r
-}, "~S,java.text.ParsePosition,~S,~S,java.text.DigitList,~B,~A");\r
-Clazz.defineMethod (c$, "getDecimalFormatSymbols", \r
-function () {\r
-try {\r
-return this.symbols.clone ();\r
-} catch (foo) {\r
-if (Clazz.exceptionOf (foo, Exception)) {\r
-return null;\r
-} else {\r
-throw foo;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "setDecimalFormatSymbols", \r
-function (newSymbols) {\r
-try {\r
-this.symbols = newSymbols.clone ();\r
-this.expandAffixes ();\r
-} catch (foo) {\r
-if (Clazz.exceptionOf (foo, Exception)) {\r
-} else {\r
-throw foo;\r
-}\r
-}\r
-}, "java.text.DecimalFormatSymbols");\r
-Clazz.defineMethod (c$, "getPositivePrefix", \r
-function () {\r
-return this.positivePrefix;\r
-});\r
-Clazz.defineMethod (c$, "setPositivePrefix", \r
-function (newValue) {\r
-this.positivePrefix = newValue;\r
-this.posPrefixPattern = null;\r
-this.positivePrefixFieldPositions = null;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getPositivePrefixFieldPositions", \r
- function () {\r
-if (this.positivePrefixFieldPositions == null) {\r
-if (this.posPrefixPattern != null) {\r
-this.positivePrefixFieldPositions = this.expandAffix (this.posPrefixPattern);\r
-} else {\r
-this.positivePrefixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;\r
-}}return this.positivePrefixFieldPositions;\r
-});\r
-Clazz.defineMethod (c$, "getNegativePrefix", \r
-function () {\r
-return this.negativePrefix;\r
-});\r
-Clazz.defineMethod (c$, "setNegativePrefix", \r
-function (newValue) {\r
-this.negativePrefix = newValue;\r
-this.negPrefixPattern = null;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getNegativePrefixFieldPositions", \r
- function () {\r
-if (this.negativePrefixFieldPositions == null) {\r
-if (this.negPrefixPattern != null) {\r
-this.negativePrefixFieldPositions = this.expandAffix (this.negPrefixPattern);\r
-} else {\r
-this.negativePrefixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;\r
-}}return this.negativePrefixFieldPositions;\r
-});\r
-Clazz.defineMethod (c$, "getPositiveSuffix", \r
-function () {\r
-return this.positiveSuffix;\r
-});\r
-Clazz.defineMethod (c$, "setPositiveSuffix", \r
-function (newValue) {\r
-this.positiveSuffix = newValue;\r
-this.posSuffixPattern = null;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getPositiveSuffixFieldPositions", \r
- function () {\r
-if (this.positiveSuffixFieldPositions == null) {\r
-if (this.posSuffixPattern != null) {\r
-this.positiveSuffixFieldPositions = this.expandAffix (this.posSuffixPattern);\r
-} else {\r
-this.positiveSuffixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;\r
-}}return this.positiveSuffixFieldPositions;\r
-});\r
-Clazz.defineMethod (c$, "getNegativeSuffix", \r
-function () {\r
-return this.negativeSuffix;\r
-});\r
-Clazz.defineMethod (c$, "setNegativeSuffix", \r
-function (newValue) {\r
-this.negativeSuffix = newValue;\r
-this.negSuffixPattern = null;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getNegativeSuffixFieldPositions", \r
- function () {\r
-if (this.negativeSuffixFieldPositions == null) {\r
-if (this.negSuffixPattern != null) {\r
-this.negativeSuffixFieldPositions = this.expandAffix (this.negSuffixPattern);\r
-} else {\r
-this.negativeSuffixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;\r
-}}return this.negativeSuffixFieldPositions;\r
-});\r
-Clazz.defineMethod (c$, "getMultiplier", \r
-function () {\r
-return this.multiplier;\r
-});\r
-Clazz.defineMethod (c$, "setMultiplier", \r
-function (newValue) {\r
-this.multiplier = newValue;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getGroupingSize", \r
-function () {\r
-return this.groupingSize;\r
-});\r
-Clazz.defineMethod (c$, "setGroupingSize", \r
-function (newValue) {\r
-this.groupingSize = newValue;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "isDecimalSeparatorAlwaysShown", \r
-function () {\r
-return this.decimalSeparatorAlwaysShown;\r
-});\r
-Clazz.defineMethod (c$, "setDecimalSeparatorAlwaysShown", \r
-function (newValue) {\r
-this.decimalSeparatorAlwaysShown = newValue;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isParseBigDecimal", \r
-function () {\r
-return this.parseBigDecimal;\r
-});\r
-Clazz.defineMethod (c$, "setParseBigDecimal", \r
-function (newValue) {\r
-this.parseBigDecimal = newValue;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "clone", \r
-function () {\r
-try {\r
-var other = Clazz.superCall (this, java.text.DecimalFormat, "clone", []);\r
-other.symbols = this.symbols.clone ();\r
-other.digitList = this.digitList.clone ();\r
-return other;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-throw  new InternalError ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "equals", \r
-function (obj) {\r
-if (obj == null) return false;\r
-if (!Clazz.superCall (this, java.text.DecimalFormat, "equals", [obj])) return false;\r
-var other = obj;\r
-return ((this.posPrefixPattern === other.posPrefixPattern && this.positivePrefix.equals (other.positivePrefix)) || (this.posPrefixPattern != null && this.posPrefixPattern.equals (other.posPrefixPattern))) && ((this.posSuffixPattern === other.posSuffixPattern && this.positiveSuffix.equals (other.positiveSuffix)) || (this.posSuffixPattern != null && this.posSuffixPattern.equals (other.posSuffixPattern))) && ((this.negPrefixPattern === other.negPrefixPattern && this.negativePrefix.equals (other.negativePrefix)) || (this.negPrefixPattern != null && this.negPrefixPattern.equals (other.negPrefixPattern))) && ((this.negSuffixPattern === other.negSuffixPattern && this.negativeSuffix.equals (other.negativeSuffix)) || (this.negSuffixPattern != null && this.negSuffixPattern.equals (other.negSuffixPattern))) && this.multiplier == other.multiplier && this.groupingSize == other.groupingSize && this.decimalSeparatorAlwaysShown == other.decimalSeparatorAlwaysShown && this.parseBigDecimal == other.parseBigDecimal && this.useExponentialNotation == other.useExponentialNotation && (!this.useExponentialNotation || this.minExponentDigits == other.minExponentDigits) && this.$maximumIntegerDigits == other.$maximumIntegerDigits && this.$minimumIntegerDigits == other.$minimumIntegerDigits && this.$maximumFractionDigits == other.$maximumFractionDigits && this.$minimumFractionDigits == other.$minimumFractionDigits && this.roundingMode === other.roundingMode && this.symbols.equals (other.symbols);\r
-}, "~O");\r
-Clazz.defineMethod (c$, "hashCode", \r
-function () {\r
-return Clazz.superCall (this, java.text.DecimalFormat, "hashCode", []) * 37 + this.positivePrefix.hashCode ();\r
-});\r
-Clazz.defineMethod (c$, "toPattern", \r
-function () {\r
-return this.toPattern (false);\r
-});\r
-Clazz.defineMethod (c$, "toLocalizedPattern", \r
-function () {\r
-return this.toPattern (true);\r
-});\r
-Clazz.defineMethod (c$, "expandAffixes", \r
- function () {\r
-var buffer =  new StringBuffer ();\r
-if (this.posPrefixPattern != null) {\r
-this.positivePrefix = this.expandAffix (this.posPrefixPattern, buffer);\r
-this.positivePrefixFieldPositions = null;\r
-}if (this.posSuffixPattern != null) {\r
-this.positiveSuffix = this.expandAffix (this.posSuffixPattern, buffer);\r
-this.positiveSuffixFieldPositions = null;\r
-}if (this.negPrefixPattern != null) {\r
-this.negativePrefix = this.expandAffix (this.negPrefixPattern, buffer);\r
-this.negativePrefixFieldPositions = null;\r
-}if (this.negSuffixPattern != null) {\r
-this.negativeSuffix = this.expandAffix (this.negSuffixPattern, buffer);\r
-this.negativeSuffixFieldPositions = null;\r
-}});\r
-Clazz.defineMethod (c$, "expandAffix", \r
- function (pattern, buffer) {\r
-buffer.setLength (0);\r
-for (var i = 0; i < pattern.length; ) {\r
-var c = pattern.charAt (i++);\r
-if (c == '\'') {\r
-c = pattern.charAt (i++);\r
-switch (c) {\r
-case '\u00a4':\r
-if (i < pattern.length && pattern.charAt (i) == '\u00a4') {\r
-++i;\r
-buffer.append (this.symbols.getInternationalCurrencySymbol ());\r
-} else {\r
-buffer.append (this.symbols.getCurrencySymbol ());\r
-}continue;\r
-case '%':\r
-c = this.symbols.getPercent ();\r
-break;\r
-case '\u2030':\r
-c = this.symbols.getPerMill ();\r
-break;\r
-case '-':\r
-c = this.symbols.getMinusSign ();\r
-break;\r
-}\r
-}buffer.append (c);\r
-}\r
-return buffer.toString ();\r
-}, "~S,StringBuffer");\r
-Clazz.defineMethod (c$, "expandAffix", \r
- function (pattern) {\r
-var positions = null;\r
-var stringIndex = 0;\r
-for (var i = 0; i < pattern.length; ) {\r
-var c = pattern.charAt (i++);\r
-if (c == '\'') {\r
-var field = -1;\r
-var fieldID = null;\r
-c = pattern.charAt (i++);\r
-switch (c) {\r
-case '\u00a4':\r
-var string;\r
-if (i < pattern.length && pattern.charAt (i) == '\u00a4') {\r
-++i;\r
-string = this.symbols.getInternationalCurrencySymbol ();\r
-} else {\r
-string = this.symbols.getCurrencySymbol ();\r
-}if (string.length > 0) {\r
-if (positions == null) {\r
-positions =  new java.util.ArrayList (2);\r
-}var fp =  new java.text.FieldPosition (java.text.NumberFormat.Field.CURRENCY);\r
-fp.setBeginIndex (stringIndex);\r
-fp.setEndIndex (stringIndex + string.length);\r
-positions.add (fp);\r
-stringIndex += string.length;\r
-}continue;\r
-case '%':\r
-c = this.symbols.getPercent ();\r
-field = -1;\r
-fieldID = java.text.NumberFormat.Field.PERCENT;\r
-break;\r
-case '\u2030':\r
-c = this.symbols.getPerMill ();\r
-field = -1;\r
-fieldID = java.text.NumberFormat.Field.PERMILLE;\r
-break;\r
-case '-':\r
-c = this.symbols.getMinusSign ();\r
-field = -1;\r
-fieldID = java.text.NumberFormat.Field.SIGN;\r
-break;\r
-}\r
-if (fieldID != null) {\r
-if (positions == null) {\r
-positions =  new java.util.ArrayList (2);\r
-}var fp =  new java.text.FieldPosition (fieldID, field);\r
-fp.setBeginIndex (stringIndex);\r
-fp.setEndIndex (stringIndex + 1);\r
-positions.add (fp);\r
-}}stringIndex++;\r
-}\r
-if (positions != null) {\r
-return positions.toArray (java.text.DecimalFormat.EmptyFieldPositionArray);\r
-}return java.text.DecimalFormat.EmptyFieldPositionArray;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "appendAffix", \r
- function (buffer, affixPattern, expAffix, localized) {\r
-if (affixPattern == null) {\r
-this.appendAffix (buffer, expAffix, localized);\r
-} else {\r
-var i;\r
-for (var pos = 0; pos < affixPattern.length; pos = i) {\r
-i = affixPattern.indexOf ('\'', pos);\r
-if (i < 0) {\r
-this.appendAffix (buffer, affixPattern.substring (pos), localized);\r
-break;\r
-}if (i > pos) {\r
-this.appendAffix (buffer, affixPattern.substring (pos, i), localized);\r
-}var c = affixPattern.charAt (++i);\r
-++i;\r
-if (c == '\'') {\r
-buffer.append (c);\r
-} else if (c == '\u00a4' && i < affixPattern.length && affixPattern.charAt (i) == '\u00a4') {\r
-++i;\r
-buffer.append (c);\r
-} else if (localized) {\r
-switch (c) {\r
-case '%':\r
-c = this.symbols.getPercent ();\r
-break;\r
-case '\u2030':\r
-c = this.symbols.getPerMill ();\r
-break;\r
-case '-':\r
-c = this.symbols.getMinusSign ();\r
-break;\r
-}\r
-}buffer.append (c);\r
-}\r
-}}, "StringBuffer,~S,~S,~B");\r
-Clazz.defineMethod (c$, "appendAffix", \r
- function (buffer, affix, localized) {\r
-var needQuote;\r
-if (localized) {\r
-needQuote = affix.indexOf (this.symbols.getZeroDigit ()) >= 0 || affix.indexOf (this.symbols.getGroupingSeparator ()) >= 0 || affix.indexOf (this.symbols.getDecimalSeparator ()) >= 0 || affix.indexOf (this.symbols.getPercent ()) >= 0 || affix.indexOf (this.symbols.getPerMill ()) >= 0 || affix.indexOf (this.symbols.getDigit ()) >= 0 || affix.indexOf (this.symbols.getPatternSeparator ()) >= 0 || affix.indexOf (this.symbols.getMinusSign ()) >= 0 || affix.indexOf ('\u00a4') >= 0;\r
-} else {\r
-needQuote = affix.indexOf ('0') >= 0 || affix.indexOf (',') >= 0 || affix.indexOf ('.') >= 0 || affix.indexOf ('%') >= 0 || affix.indexOf ('\u2030') >= 0 || affix.indexOf ('#') >= 0 || affix.indexOf (';') >= 0 || affix.indexOf ('-') >= 0 || affix.indexOf ('\u00a4') >= 0;\r
-}if (needQuote) buffer.append ('\'');\r
-if (affix.indexOf ('\'') < 0) buffer.append (affix);\r
- else {\r
-for (var j = 0; j < affix.length; ++j) {\r
-var c = affix.charAt (j);\r
-buffer.append (c);\r
-if (c == '\'') buffer.append (c);\r
-}\r
-}if (needQuote) buffer.append ('\'');\r
-}, "StringBuffer,~S,~B");\r
-Clazz.defineMethod (c$, "toPattern", \r
- function (localized) {\r
-var result =  new StringBuffer ();\r
-for (var j = 1; j >= 0; --j) {\r
-if (j == 1) this.appendAffix (result, this.posPrefixPattern, this.positivePrefix, localized);\r
- else this.appendAffix (result, this.negPrefixPattern, this.negativePrefix, localized);\r
-var i;\r
-var digitCount = this.useExponentialNotation ? this.getMaximumIntegerDigits () : Math.max (this.groupingSize, this.getMinimumIntegerDigits ()) + 1;\r
-for (i = digitCount; i > 0; --i) {\r
-if (i != digitCount && this.isGroupingUsed () && this.groupingSize != 0 && i % this.groupingSize == 0) {\r
-result.append (localized ? this.symbols.getGroupingSeparator () : ',');\r
-}result.append (i <= this.getMinimumIntegerDigits () ? (localized ? this.symbols.getZeroDigit () : '0') : (localized ? this.symbols.getDigit () : '#'));\r
-}\r
-if (this.getMaximumFractionDigits () > 0 || this.decimalSeparatorAlwaysShown) result.append (localized ? this.symbols.getDecimalSeparator () : '.');\r
-for (i = 0; i < this.getMaximumFractionDigits (); ++i) {\r
-if (i < this.getMinimumFractionDigits ()) {\r
-result.append (localized ? this.symbols.getZeroDigit () : '0');\r
-} else {\r
-result.append (localized ? this.symbols.getDigit () : '#');\r
-}}\r
-if (this.useExponentialNotation) {\r
-result.append (localized ? this.symbols.getExponentSeparator () : "E");\r
-for (i = 0; i < this.minExponentDigits; ++i) result.append (localized ? this.symbols.getZeroDigit () : '0');\r
-\r
-}if (j == 1) {\r
-this.appendAffix (result, this.posSuffixPattern, this.positiveSuffix, localized);\r
-if ((this.negSuffixPattern === this.posSuffixPattern && this.negativeSuffix.equals (this.positiveSuffix)) || (this.negSuffixPattern != null && this.negSuffixPattern.equals (this.posSuffixPattern))) {\r
-if ((this.negPrefixPattern != null && this.posPrefixPattern != null && this.negPrefixPattern.equals ("'-" + this.posPrefixPattern)) || (this.negPrefixPattern === this.posPrefixPattern && this.negativePrefix.equals (this.symbols.getMinusSign () + this.positivePrefix))) break;\r
-}result.append (localized ? this.symbols.getPatternSeparator () : ';');\r
-} else this.appendAffix (result, this.negSuffixPattern, this.negativeSuffix, localized);\r
-}\r
-return result.toString ();\r
-}, "~B");\r
-Clazz.defineMethod (c$, "applyPattern", \r
-function (pattern) {\r
-this.applyPattern (pattern, false);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "applyLocalizedPattern", \r
-function (pattern) {\r
-this.applyPattern (pattern, true);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "applyPattern", \r
- function (pattern, localized) {\r
-var zeroDigit = '0';\r
-var groupingSeparator = ',';\r
-var decimalSeparator = '.';\r
-var percent = '%';\r
-var perMill = '\u2030';\r
-var digit = '#';\r
-var separator = ';';\r
-var exponent = "E";\r
-var minus = '-';\r
-if (localized) {\r
-zeroDigit = this.symbols.getZeroDigit ();\r
-groupingSeparator = this.symbols.getGroupingSeparator ();\r
-decimalSeparator = this.symbols.getDecimalSeparator ();\r
-percent = this.symbols.getPercent ();\r
-perMill = this.symbols.getPerMill ();\r
-digit = this.symbols.getDigit ();\r
-separator = this.symbols.getPatternSeparator ();\r
-exponent = this.symbols.getExponentSeparator ();\r
-minus = this.symbols.getMinusSign ();\r
-}var gotNegative = false;\r
-this.decimalSeparatorAlwaysShown = false;\r
-this.isCurrencyFormat = false;\r
-this.useExponentialNotation = false;\r
-var phaseOneLength = 0;\r
-var start = 0;\r
-for (var j = 1; j >= 0 && start < pattern.length; --j) {\r
-var inQuote = false;\r
-var prefix =  new StringBuffer ();\r
-var suffix =  new StringBuffer ();\r
-var decimalPos = -1;\r
-var multiplier = 1;\r
-var digitLeftCount = 0;\r
-var zeroDigitCount = 0;\r
-var digitRightCount = 0;\r
-var groupingCount = -1;\r
-var phase = 0;\r
-var affix = prefix;\r
-for (var pos = start; pos < pattern.length; ++pos) {\r
-var ch = pattern.charAt (pos);\r
-switch (phase) {\r
-case 0:\r
-case 2:\r
-if (inQuote) {\r
-if (ch == '\'') {\r
-if ((pos + 1) < pattern.length && pattern.charAt (pos + 1) == '\'') {\r
-++pos;\r
-affix.append ("''");\r
-} else {\r
-inQuote = false;\r
-}continue;\r
-}} else {\r
-if (ch == digit || ch == zeroDigit || ch == groupingSeparator || ch == decimalSeparator) {\r
-phase = 1;\r
---pos;\r
-continue;\r
-} else if (ch == '\u00a4') {\r
-var doubled = (pos + 1) < pattern.length && pattern.charAt (pos + 1) == '\u00a4';\r
-if (doubled) {\r
-++pos;\r
-}this.isCurrencyFormat = true;\r
-affix.append (doubled ? "'\u00A4\u00A4" : "'\u00A4");\r
-continue;\r
-} else if (ch == '\'') {\r
-if (ch == '\'') {\r
-if ((pos + 1) < pattern.length && pattern.charAt (pos + 1) == '\'') {\r
-++pos;\r
-affix.append ("''");\r
-} else {\r
-inQuote = true;\r
-}continue;\r
-}} else if (ch == separator) {\r
-if (phase == 0 || j == 0) {\r
-throw  new IllegalArgumentException ("Unquoted special character '" + ch + "' in pattern \"" + pattern + '"');\r
-}start = pos + 1;\r
-pos = pattern.length;\r
-continue;\r
-} else if (ch == percent) {\r
-if (multiplier != 1) {\r
-throw  new IllegalArgumentException ("Too many percent/per mille characters in pattern \"" + pattern + '"');\r
-}multiplier = 100;\r
-affix.append ("'%");\r
-continue;\r
-} else if (ch == perMill) {\r
-if (multiplier != 1) {\r
-throw  new IllegalArgumentException ("Too many percent/per mille characters in pattern \"" + pattern + '"');\r
-}multiplier = 1000;\r
-affix.append ("'\u2030");\r
-continue;\r
-} else if (ch == minus) {\r
-affix.append ("'-");\r
-continue;\r
-}}affix.append (ch);\r
-break;\r
-case 1:\r
-if (j == 1) {\r
-++phaseOneLength;\r
-} else {\r
-if (--phaseOneLength == 0) {\r
-phase = 2;\r
-affix = suffix;\r
-}continue;\r
-}if (ch == digit) {\r
-if (zeroDigitCount > 0) {\r
-++digitRightCount;\r
-} else {\r
-++digitLeftCount;\r
-}if (groupingCount >= 0 && decimalPos < 0) {\r
-++groupingCount;\r
-}} else if (ch == zeroDigit) {\r
-if (digitRightCount > 0) {\r
-throw  new IllegalArgumentException ("Unexpected '0' in pattern \"" + pattern + '"');\r
-}++zeroDigitCount;\r
-if (groupingCount >= 0 && decimalPos < 0) {\r
-++groupingCount;\r
-}} else if (ch == groupingSeparator) {\r
-groupingCount = 0;\r
-} else if (ch == decimalSeparator) {\r
-if (decimalPos >= 0) {\r
-throw  new IllegalArgumentException ("Multiple decimal separators in pattern \"" + pattern + '"');\r
-}decimalPos = digitLeftCount + zeroDigitCount + digitRightCount;\r
-} else if (pattern.regionMatches (pos, exponent, 0, exponent.length)) {\r
-if (this.useExponentialNotation) {\r
-throw  new IllegalArgumentException ("Multiple exponential symbols in pattern \"" + pattern + '"');\r
-}this.useExponentialNotation = true;\r
-this.minExponentDigits = 0;\r
-pos = pos + exponent.length;\r
-while (pos < pattern.length && pattern.charAt (pos) == zeroDigit) {\r
-++this.minExponentDigits;\r
-++phaseOneLength;\r
-++pos;\r
-}\r
-if ((digitLeftCount + zeroDigitCount) < 1 || this.minExponentDigits < 1) {\r
-throw  new IllegalArgumentException ("Malformed exponential pattern \"" + pattern + '"');\r
-}phase = 2;\r
-affix = suffix;\r
---pos;\r
-continue;\r
-} else {\r
-phase = 2;\r
-affix = suffix;\r
---pos;\r
---phaseOneLength;\r
-continue;\r
-}break;\r
-}\r
-}\r
-if (zeroDigitCount == 0 && digitLeftCount > 0 && decimalPos >= 0) {\r
-var n = decimalPos;\r
-if (n == 0) {\r
-++n;\r
-}digitRightCount = digitLeftCount - n;\r
-digitLeftCount = n - 1;\r
-zeroDigitCount = 1;\r
-}if ((decimalPos < 0 && digitRightCount > 0) || (decimalPos >= 0 && (decimalPos < digitLeftCount || decimalPos > (digitLeftCount + zeroDigitCount))) || groupingCount == 0 || inQuote) {\r
-throw  new IllegalArgumentException ("Malformed pattern \"" + pattern + '"');\r
-}if (j == 1) {\r
-this.posPrefixPattern = prefix.toString ();\r
-this.posSuffixPattern = suffix.toString ();\r
-this.negPrefixPattern = this.posPrefixPattern;\r
-this.negSuffixPattern = this.posSuffixPattern;\r
-var digitTotalCount = digitLeftCount + zeroDigitCount + digitRightCount;\r
-var effectiveDecimalPos = decimalPos >= 0 ? decimalPos : digitTotalCount;\r
-this.setMinimumIntegerDigits (effectiveDecimalPos - digitLeftCount);\r
-this.setMaximumIntegerDigits (this.useExponentialNotation ? digitLeftCount + this.getMinimumIntegerDigits () : 2147483647);\r
-this.setMaximumFractionDigits (decimalPos >= 0 ? (digitTotalCount - decimalPos) : 0);\r
-this.setMinimumFractionDigits (decimalPos >= 0 ? (digitLeftCount + zeroDigitCount - decimalPos) : 0);\r
-this.setGroupingUsed (groupingCount > 0);\r
-this.groupingSize = (groupingCount > 0) ? groupingCount : 0;\r
-this.multiplier = multiplier;\r
-this.setDecimalSeparatorAlwaysShown (decimalPos == 0 || decimalPos == digitTotalCount);\r
-} else {\r
-this.negPrefixPattern = prefix.toString ();\r
-this.negSuffixPattern = suffix.toString ();\r
-gotNegative = true;\r
-}}\r
-if (pattern.length == 0) {\r
-this.posPrefixPattern = this.posSuffixPattern = "";\r
-this.setMinimumIntegerDigits (0);\r
-this.setMaximumIntegerDigits (2147483647);\r
-this.setMinimumFractionDigits (0);\r
-this.setMaximumFractionDigits (2147483647);\r
-}if (!gotNegative || (this.negPrefixPattern.equals (this.posPrefixPattern) && this.negSuffixPattern.equals (this.posSuffixPattern))) {\r
-this.negSuffixPattern = this.posSuffixPattern;\r
-this.negPrefixPattern = "'-" + this.posPrefixPattern;\r
-}this.expandAffixes ();\r
-}, "~S,~B");\r
-Clazz.defineMethod (c$, "setMaximumIntegerDigits", \r
-function (newValue) {\r
-this.$maximumIntegerDigits = Math.min (Math.max (0, newValue), 2147483647);\r
-Clazz.superCall (this, java.text.DecimalFormat, "setMaximumIntegerDigits", [(this.$maximumIntegerDigits > 309) ? 309 : this.$maximumIntegerDigits]);\r
-if (this.$minimumIntegerDigits > this.$maximumIntegerDigits) {\r
-this.$minimumIntegerDigits = this.$maximumIntegerDigits;\r
-Clazz.superCall (this, java.text.DecimalFormat, "setMinimumIntegerDigits", [(this.$minimumIntegerDigits > 309) ? 309 : this.$minimumIntegerDigits]);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "setMinimumIntegerDigits", \r
-function (newValue) {\r
-this.$minimumIntegerDigits = Math.min (Math.max (0, newValue), 2147483647);\r
-Clazz.superCall (this, java.text.DecimalFormat, "setMinimumIntegerDigits", [(this.$minimumIntegerDigits > 309) ? 309 : this.$minimumIntegerDigits]);\r
-if (this.$minimumIntegerDigits > this.$maximumIntegerDigits) {\r
-this.$maximumIntegerDigits = this.$minimumIntegerDigits;\r
-Clazz.superCall (this, java.text.DecimalFormat, "setMaximumIntegerDigits", [(this.$maximumIntegerDigits > 309) ? 309 : this.$maximumIntegerDigits]);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "setMaximumFractionDigits", \r
-function (newValue) {\r
-this.$maximumFractionDigits = Math.min (Math.max (0, newValue), 2147483647);\r
-Clazz.superCall (this, java.text.DecimalFormat, "setMaximumFractionDigits", [(this.$maximumFractionDigits > 340) ? 340 : this.$maximumFractionDigits]);\r
-if (this.$minimumFractionDigits > this.$maximumFractionDigits) {\r
-this.$minimumFractionDigits = this.$maximumFractionDigits;\r
-Clazz.superCall (this, java.text.DecimalFormat, "setMinimumFractionDigits", [(this.$minimumFractionDigits > 340) ? 340 : this.$minimumFractionDigits]);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "setMinimumFractionDigits", \r
-function (newValue) {\r
-this.$minimumFractionDigits = Math.min (Math.max (0, newValue), 2147483647);\r
-Clazz.superCall (this, java.text.DecimalFormat, "setMinimumFractionDigits", [(this.$minimumFractionDigits > 340) ? 340 : this.$minimumFractionDigits]);\r
-if (this.$minimumFractionDigits > this.$maximumFractionDigits) {\r
-this.$maximumFractionDigits = this.$minimumFractionDigits;\r
-Clazz.superCall (this, java.text.DecimalFormat, "setMaximumFractionDigits", [(this.$maximumFractionDigits > 340) ? 340 : this.$maximumFractionDigits]);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "getMaximumIntegerDigits", \r
-function () {\r
-return this.$maximumIntegerDigits;\r
-});\r
-Clazz.defineMethod (c$, "getMinimumIntegerDigits", \r
-function () {\r
-return this.$minimumIntegerDigits;\r
-});\r
-Clazz.defineMethod (c$, "getMaximumFractionDigits", \r
-function () {\r
-return this.$maximumFractionDigits;\r
-});\r
-Clazz.defineMethod (c$, "getMinimumFractionDigits", \r
-function () {\r
-return this.$minimumFractionDigits;\r
-});\r
-Clazz.overrideMethod (c$, "getRoundingMode", \r
-function () {\r
-return this.roundingMode;\r
-});\r
-Clazz.overrideMethod (c$, "setRoundingMode", \r
-function (roundingMode) {\r
-if (roundingMode == null) {\r
-throw  new NullPointerException ();\r
-}this.roundingMode = roundingMode;\r
-this.digitList.setRoundingMode (roundingMode);\r
-}, "java.math.RoundingMode");\r
-Clazz.defineMethod (c$, "adjustForCurrencyDefaultFractionDigits", \r
-function () {\r
-var digits = 2;\r
-var oldMinDigits = this.getMinimumFractionDigits ();\r
-if (oldMinDigits == this.getMaximumFractionDigits ()) {\r
-this.setMinimumFractionDigits (digits);\r
-this.setMaximumFractionDigits (digits);\r
-} else {\r
-this.setMinimumFractionDigits (Math.min (digits, oldMinDigits));\r
-this.setMaximumFractionDigits (digits);\r
-}});\r
-Clazz.defineStatics (c$,\r
-"STATUS_INFINITE", 0,\r
-"STATUS_POSITIVE", 1,\r
-"STATUS_LENGTH", 2,\r
-"PATTERN_ZERO_DIGIT", '0',\r
-"PATTERN_GROUPING_SEPARATOR", ',',\r
-"PATTERN_DECIMAL_SEPARATOR", '.',\r
-"PATTERN_PER_MILLE", '\u2030',\r
-"PATTERN_PERCENT", '%',\r
-"PATTERN_DIGIT", '#',\r
-"PATTERN_SEPARATOR", ';',\r
-"PATTERN_EXPONENT", "E",\r
-"PATTERN_MINUS", '-',\r
-"CURRENCY_SIGN", '\u00A4',\r
-"QUOTE", '\'');\r
-c$.EmptyFieldPositionArray = c$.prototype.EmptyFieldPositionArray =  new Array (0);\r
-Clazz.defineStatics (c$,\r
-"DOUBLE_INTEGER_DIGITS", 309,\r
-"DOUBLE_FRACTION_DIGITS", 340,\r
-"MAXIMUM_INTEGER_DIGITS", 2147483647,\r
-"MAXIMUM_FRACTION_DIGITS", 2147483647);\r
-c$.$cachedLocaleData = c$.prototype.$cachedLocaleData =  new java.util.Hashtable (3);\r
-});\r
+Clazz.declarePackage ("java.text");
+Clazz.load (["java.text.NumberFormat", "java.util.Hashtable", "java.text.DigitList"], "java.text.DecimalFormat", ["java.lang.Byte", "$.Character", "$.Double", "$.Float", "$.IllegalArgumentException", "$.InternalError", "$.Long", "$.NullPointerException", "$.Number", "$.Short", "$.StringBuffer", "java.util.ArrayList", "java.text.CharacterIteratorFieldDelegate", "$.DecimalFormatSymbols", "$.FieldPosition", "$.ParsePosition", "java.util.Locale", "jssun.util.resources.LocaleData"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.digitList = null;
+this.positivePrefix = "";
+this.positiveSuffix = "";
+this.negativePrefix = "-";
+this.negativeSuffix = "";
+this.posPrefixPattern = null;
+this.posSuffixPattern = null;
+this.negPrefixPattern = null;
+this.negSuffixPattern = null;
+this.multiplier = 1;
+this.groupingSize = 3;
+this.decimalSeparatorAlwaysShown = false;
+this.parseBigDecimal = false;
+this.isCurrencyFormat = false;
+this.symbols = null;
+this.useExponentialNotation = false;
+this.positivePrefixFieldPositions = null;
+this.positiveSuffixFieldPositions = null;
+this.negativePrefixFieldPositions = null;
+this.negativeSuffixFieldPositions = null;
+this.minExponentDigits = 0;
+this.$maximumIntegerDigits = 0;
+this.$minimumIntegerDigits = 0;
+this.$maximumFractionDigits = 0;
+this.$minimumFractionDigits = 0;
+this.roundingMode = null;
+Clazz.instantialize (this, arguments);
+}, java.text, "DecimalFormat", java.text.NumberFormat);
+Clazz.prepareFields (c$, function () {
+this.digitList =  new java.text.DigitList ();
+this.$maximumIntegerDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumIntegerDigits", []);
+this.$minimumIntegerDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumIntegerDigits", []);
+this.$maximumFractionDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumFractionDigits", []);
+this.$minimumFractionDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumFractionDigits", []);
+});
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, java.text.DecimalFormat, []);
+var def = java.util.Locale.getDefault ();
+var pattern = java.text.DecimalFormat.$cachedLocaleData.get (def);
+if (pattern == null) {
+var rb = jssun.util.resources.LocaleData.getNumberFormatData (def);
+var all = rb.getStringArray ("NumberPatterns");
+pattern = all[0];
+java.text.DecimalFormat.$cachedLocaleData.put (def, pattern);
+}this.symbols =  new java.text.DecimalFormatSymbols (def);
+this.applyPattern (pattern, false);
+});
+Clazz.makeConstructor (c$, 
+function (pattern) {
+Clazz.superConstructor (this, java.text.DecimalFormat, []);
+this.symbols =  new java.text.DecimalFormatSymbols (java.util.Locale.getDefault ());
+this.applyPattern (pattern, false);
+}, "~S");
+Clazz.makeConstructor (c$, 
+function (pattern, symbols) {
+Clazz.superConstructor (this, java.text.DecimalFormat, []);
+this.symbols = symbols.clone ();
+this.applyPattern (pattern, false);
+}, "~S,java.text.DecimalFormatSymbols");
+Clazz.defineMethod (c$, "format", 
+function (number, toAppendTo, pos) {
+if (Clazz.instanceOf (number, Long) || Clazz.instanceOf (number, Integer) || Clazz.instanceOf (number, Short) || Clazz.instanceOf (number, Byte)) {
+return this.format ((number).longValue (), toAppendTo, pos);
+} else if (Clazz.instanceOf (number, Number)) {
+return this.format ((number).doubleValue (), toAppendTo, pos);
+} else {
+throw  new IllegalArgumentException ("Cannot format given Object as a Number");
+}}, "~O,StringBuffer,java.text.FieldPosition");
+Clazz.defineMethod (c$, "format", 
+function (number, result, fieldPosition) {
+fieldPosition.setBeginIndex (0);
+fieldPosition.setEndIndex (0);
+var isInt = (number == Clazz.doubleToInt (number) && Math.abs (number) < 2147483647);
+if (isInt) return this.formatLong (Clazz.doubleToInt (number), result, fieldPosition.getFieldDelegate ());
+ else return this.formatDouble (number, result, fieldPosition.getFieldDelegate ());
+}, "~N,StringBuffer,java.text.FieldPosition");
+Clazz.defineMethod (c$, "formatDouble", 
+ function (number, result, delegate) {
+if (Double.isNaN (number) || (Double.isInfinite (number) && this.multiplier == 0)) {
+var iFieldStart = result.length ();
+result.append (this.symbols.getNaN ());
+delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, result.length (), result);
+return result;
+}var isNegative =  new Boolean (((number < 0.0) || (number == 0.0 && 1 / number < 0.0)) ^ (this.multiplier < 0)).valueOf ();
+if (this.multiplier != 1) {
+number *= this.multiplier;
+}if (Double.isInfinite (number)) {
+if (isNegative) {
+this.append (result, this.negativePrefix, delegate, this.getNegativePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);
+} else {
+this.append (result, this.positivePrefix, delegate, this.getPositivePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);
+}var iFieldStart = result.length ();
+result.append (this.symbols.getInfinity ());
+delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, result.length (), result);
+if (isNegative) {
+this.append (result, this.negativeSuffix, delegate, this.getNegativeSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);
+} else {
+this.append (result, this.positiveSuffix, delegate, this.getPositiveSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);
+}return result;
+}if (isNegative) {
+number = -number;
+}{
+var maxIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumIntegerDigits", []);
+var minIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumIntegerDigits", []);
+var maxFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumFractionDigits", []);
+var minFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumFractionDigits", []);
+this.digitList.set (isNegative, number, this.useExponentialNotation ? maxIntDigits + maxFraDigits : maxFraDigits, !this.useExponentialNotation);
+return this.subformat (result, delegate, isNegative, false, maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);
+}}, "~N,StringBuffer,java.text.Format.FieldDelegate");
+Clazz.defineMethod (c$, "formatLong", 
+ function (number, result, delegate) {
+var isNegative = (number < 0);
+if (isNegative) {
+number = -number;
+}if (number < 0) {
+} else if (this.multiplier != 1 && this.multiplier != 0) {
+var cutoff = Clazz.doubleToInt (9223372036854775807 / this.multiplier);
+if (cutoff < 0) {
+cutoff = -cutoff;
+}}number *= this.multiplier;
+if (number == 0) {
+isNegative = false;
+} else {
+if (this.multiplier < 0) {
+number = -number;
+isNegative = !isNegative;
+}}{
+var maxIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumIntegerDigits", []);
+var minIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumIntegerDigits", []);
+var maxFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumFractionDigits", []);
+var minFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumFractionDigits", []);
+this.digitList.setLong (isNegative, number, this.useExponentialNotation ? maxIntDigits + maxFraDigits : 0);
+return this.subformat (result, delegate, isNegative, true, maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);
+}}, "~N,StringBuffer,java.text.Format.FieldDelegate");
+Clazz.overrideMethod (c$, "formatToCharacterIterator", 
+function (obj) {
+var delegate =  new java.text.CharacterIteratorFieldDelegate ();
+var sb =  new StringBuffer ();
+if (Clazz.instanceOf (obj, Double) || Clazz.instanceOf (obj, Float)) {
+this.formatDouble ((obj).doubleValue (), sb, delegate);
+} else if (Clazz.instanceOf (obj, Long) || Clazz.instanceOf (obj, Integer) || Clazz.instanceOf (obj, Short) || Clazz.instanceOf (obj, Byte)) {
+this.formatLong ((obj).longValue (), sb, delegate);
+} else if (obj == null) {
+throw  new NullPointerException ("formatToCharacterIterator must be passed non-null object");
+} else {
+throw  new IllegalArgumentException ("Cannot format given Object as a Number");
+}return delegate.getIterator (sb.toString ());
+}, "~O");
+Clazz.defineMethod (c$, "subformat", 
+ function (result, delegate, isNegative, isInteger, maxIntDigits, minIntDigits, maxFraDigits, minFraDigits) {
+var zero = this.symbols.getZeroDigit ();
+var zeroDelta = zero.charCodeAt (0) - 48;
+var grouping = this.symbols.getGroupingSeparator ();
+var decimal = this.isCurrencyFormat ? this.symbols.getMonetaryDecimalSeparator () : this.symbols.getDecimalSeparator ();
+if (this.digitList.isZero ()) {
+this.digitList.decimalAt = 0;
+}if (isNegative) {
+this.append (result, this.negativePrefix, delegate, this.getNegativePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);
+} else {
+this.append (result, this.positivePrefix, delegate, this.getPositivePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);
+}if (this.useExponentialNotation) {
+var iFieldStart = result.length ();
+var iFieldEnd = -1;
+var fFieldStart = -1;
+var exponent = this.digitList.decimalAt;
+var repeat = maxIntDigits;
+var minimumIntegerDigits = minIntDigits;
+if (repeat > 1 && repeat > minIntDigits) {
+if (exponent >= 1) {
+exponent = (Clazz.doubleToInt ((exponent - 1) / repeat)) * repeat;
+} else {
+exponent = (Clazz.doubleToInt ((exponent - repeat) / repeat)) * repeat;
+}minimumIntegerDigits = 1;
+} else {
+exponent -= minimumIntegerDigits;
+}var minimumDigits = minIntDigits + minFraDigits;
+if (minimumDigits < 0) {
+minimumDigits = 2147483647;
+}var integerDigits = this.digitList.isZero () ? minimumIntegerDigits : this.digitList.decimalAt - exponent;
+if (minimumDigits < integerDigits) {
+minimumDigits = integerDigits;
+}var totalDigits = this.digitList.count;
+if (minimumDigits > totalDigits) {
+totalDigits = minimumDigits;
+}var addedDecimalSeparator = false;
+for (var i = 0; i < totalDigits; ++i) {
+if (i == integerDigits) {
+iFieldEnd = result.length ();
+result.append (decimal);
+addedDecimalSeparator = true;
+fFieldStart = result.length ();
+}result.append ((i < this.digitList.count) ? String.fromCharCode ((this.digitList.digits[i]).charCodeAt (0) + zeroDelta) : zero);
+}
+if (this.decimalSeparatorAlwaysShown && totalDigits == integerDigits) {
+iFieldEnd = result.length ();
+result.append (decimal);
+addedDecimalSeparator = true;
+fFieldStart = result.length ();
+}if (iFieldEnd == -1) {
+iFieldEnd = result.length ();
+}delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, iFieldEnd, result);
+if (addedDecimalSeparator) {
+delegate.formatted (java.text.NumberFormat.Field.DECIMAL_SEPARATOR, java.text.NumberFormat.Field.DECIMAL_SEPARATOR, iFieldEnd, fFieldStart, result);
+}if (fFieldStart == -1) {
+fFieldStart = result.length ();
+}delegate.formatted (1, java.text.NumberFormat.Field.FRACTION, java.text.NumberFormat.Field.FRACTION, fFieldStart, result.length (), result);
+var fieldStart = result.length ();
+result.append (this.symbols.getExponentSeparator ());
+delegate.formatted (java.text.NumberFormat.Field.EXPONENT_SYMBOL, java.text.NumberFormat.Field.EXPONENT_SYMBOL, fieldStart, result.length (), result);
+if (this.digitList.isZero ()) {
+exponent = 0;
+}var negativeExponent = exponent < 0;
+if (negativeExponent) {
+exponent = -exponent;
+fieldStart = result.length ();
+result.append (this.symbols.getMinusSign ());
+delegate.formatted (java.text.NumberFormat.Field.EXPONENT_SIGN, java.text.NumberFormat.Field.EXPONENT_SIGN, fieldStart, result.length (), result);
+}this.digitList.setExp (negativeExponent, exponent);
+var eFieldStart = result.length ();
+for (var i = this.digitList.decimalAt; i < this.minExponentDigits; ++i) {
+result.append (zero);
+}
+for (var i = 0; i < this.digitList.decimalAt; ++i) {
+result.append ((i < this.digitList.count) ? String.fromCharCode ((this.digitList.digits[i]).charCodeAt (0) + zeroDelta) : zero);
+}
+delegate.formatted (java.text.NumberFormat.Field.EXPONENT, java.text.NumberFormat.Field.EXPONENT, eFieldStart, result.length (), result);
+} else {
+var iFieldStart = result.length ();
+var count = minIntDigits;
+var digitIndex = 0;
+if (this.digitList.decimalAt > 0 && count < this.digitList.decimalAt) {
+count = this.digitList.decimalAt;
+}if (count > maxIntDigits) {
+count = maxIntDigits;
+digitIndex = this.digitList.decimalAt - count;
+}var sizeBeforeIntegerPart = result.length ();
+for (var i = count - 1; i >= 0; --i) {
+if (i < this.digitList.decimalAt && digitIndex < this.digitList.count) {
+result.append (String.fromCharCode ((this.digitList.digits[digitIndex++]).charCodeAt (0) + zeroDelta));
+} else {
+result.append (zero);
+}if (this.isGroupingUsed () && i > 0 && (this.groupingSize != 0) && (i % this.groupingSize == 0)) {
+var gStart = result.length ();
+result.append (grouping);
+delegate.formatted (java.text.NumberFormat.Field.GROUPING_SEPARATOR, java.text.NumberFormat.Field.GROUPING_SEPARATOR, gStart, result.length (), result);
+}}
+var fractionPresent = (minFraDigits > 0) || (!isInteger && digitIndex < this.digitList.count);
+if (!fractionPresent && result.length () == sizeBeforeIntegerPart) {
+result.append (zero);
+}delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, result.length (), result);
+var sStart = result.length ();
+if (this.decimalSeparatorAlwaysShown || fractionPresent) {
+result.append (decimal);
+}if (sStart != result.length ()) {
+delegate.formatted (java.text.NumberFormat.Field.DECIMAL_SEPARATOR, java.text.NumberFormat.Field.DECIMAL_SEPARATOR, sStart, result.length (), result);
+}var fFieldStart = result.length ();
+for (var i = 0; i < maxFraDigits; ++i) {
+if (i >= minFraDigits && (isInteger || digitIndex >= this.digitList.count)) {
+break;
+}if (-1 - i > (this.digitList.decimalAt - 1)) {
+result.append (zero);
+continue;
+}if (!isInteger && digitIndex < this.digitList.count) {
+result.append (String.fromCharCode ((this.digitList.digits[digitIndex++]).charCodeAt (0) + zeroDelta));
+} else {
+result.append (zero);
+}}
+delegate.formatted (1, java.text.NumberFormat.Field.FRACTION, java.text.NumberFormat.Field.FRACTION, fFieldStart, result.length (), result);
+}if (isNegative) {
+this.append (result, this.negativeSuffix, delegate, this.getNegativeSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);
+} else {
+this.append (result, this.positiveSuffix, delegate, this.getPositiveSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);
+}return result;
+}, "StringBuffer,java.text.Format.FieldDelegate,~B,~B,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "append", 
+ function (result, string, delegate, positions, signAttribute) {
+var start = result.length ();
+if (string.length > 0) {
+result.append (string);
+for (var counter = 0, max = positions.length; counter < max; counter++) {
+var fp = positions[counter];
+var attribute = fp.getFieldAttribute ();
+if (attribute === java.text.NumberFormat.Field.SIGN) {
+attribute = signAttribute;
+}delegate.formatted (attribute, attribute, start + fp.getBeginIndex (), start + fp.getEndIndex (), result);
+}
+}}, "StringBuffer,~S,java.text.Format.FieldDelegate,~A,java.text.Format.Field");
+Clazz.defineMethod (c$, "parse", 
+function (text, pos) {
+if (text.regionMatches (pos.index, this.symbols.getNaN (), 0, this.symbols.getNaN ().length)) {
+pos.index = pos.index + this.symbols.getNaN ().length;
+return  new Double (NaN);
+}var status =  Clazz.newBooleanArray (2, false);
+if (!this.subparse (text, pos, this.positivePrefix, this.negativePrefix, this.digitList, false, status)) {
+return null;
+}if (status[0]) {
+if (status[1] == (this.multiplier >= 0)) {
+return  new Double (Infinity);
+} else {
+return  new Double (-Infinity);
+}}if (this.multiplier == 0) {
+if (this.digitList.isZero ()) {
+return  new Double (NaN);
+} else if (status[1]) {
+return  new Double (Infinity);
+} else {
+return  new Double (-Infinity);
+}}var gotDouble = true;
+var gotLongMinimum = false;
+var doubleResult = 0.0;
+var longResult = 0;
+if (this.digitList.fitsIntoLong (status[1], this.isParseIntegerOnly ())) {
+gotDouble = false;
+longResult = this.digitList.getLong ();
+if (longResult < 0) {
+gotLongMinimum = true;
+}} else {
+doubleResult = this.digitList.getDouble ();
+}if (this.multiplier != 1) {
+if (gotDouble) {
+doubleResult /= this.multiplier;
+} else {
+if (longResult % this.multiplier == 0) {
+longResult = Clazz.doubleToInt (longResult / this.multiplier);
+} else {
+doubleResult = (longResult) / this.multiplier;
+gotDouble = true;
+}}}if (!status[1] && !gotLongMinimum) {
+doubleResult = -doubleResult;
+longResult = -longResult;
+}if (this.multiplier != 1 && gotDouble) {
+longResult = Clazz.doubleToLong (doubleResult);
+gotDouble = ((doubleResult != longResult) || (doubleResult == 0.0 && 1 / doubleResult < 0.0)) && !this.isParseIntegerOnly ();
+}return gotDouble ?  new Double (doubleResult) :  new Long (longResult);
+}, "~S,java.text.ParsePosition");
+Clazz.defineMethod (c$, "subparse", 
+ function (text, parsePosition, positivePrefix, negativePrefix, digits, isExponent, status) {
+var position = parsePosition.index;
+var oldStart = parsePosition.index;
+var backup;
+var gotPositive;
+var gotNegative;
+gotPositive = text.regionMatches (position, positivePrefix, 0, positivePrefix.length);
+gotNegative = text.regionMatches (position, negativePrefix, 0, negativePrefix.length);
+if (gotPositive && gotNegative) {
+if (positivePrefix.length > negativePrefix.length) {
+gotNegative = false;
+} else if (positivePrefix.length < negativePrefix.length) {
+gotPositive = false;
+}}if (gotPositive) {
+position += positivePrefix.length;
+} else if (gotNegative) {
+position += negativePrefix.length;
+} else {
+parsePosition.errorIndex = position;
+return false;
+}status[0] = false;
+if (!isExponent && text.regionMatches (position, this.symbols.getInfinity (), 0, this.symbols.getInfinity ().length)) {
+position += this.symbols.getInfinity ().length;
+status[0] = true;
+} else {
+digits.decimalAt = digits.count = 0;
+var zero = this.symbols.getZeroDigit ();
+var decimal = this.isCurrencyFormat ? this.symbols.getMonetaryDecimalSeparator () : this.symbols.getDecimalSeparator ();
+var grouping = this.symbols.getGroupingSeparator ();
+var exponentString = this.symbols.getExponentSeparator ();
+var sawDecimal = false;
+var sawExponent = false;
+var sawDigit = false;
+var exponent = 0;
+var digitCount = 0;
+backup = -1;
+for (; position < text.length; ++position) {
+var ch = text.charAt (position);
+var digit = ch.charCodeAt (0) - zero.charCodeAt (0);
+if (digit < 0 || digit > 9) {
+digit = Character.digit (ch, 10);
+}if (digit == 0) {
+backup = -1;
+sawDigit = true;
+if (digits.count == 0) {
+if (!sawDecimal) {
+continue;
+}--digits.decimalAt;
+} else {
+++digitCount;
+digits.append (String.fromCharCode (digit + 48));
+}} else if (digit > 0 && digit <= 9) {
+sawDigit = true;
+++digitCount;
+digits.append (String.fromCharCode (digit + 48));
+backup = -1;
+} else if (!isExponent && ch == decimal) {
+if (this.isParseIntegerOnly () || sawDecimal) {
+break;
+}digits.decimalAt = digitCount;
+sawDecimal = true;
+} else if (!isExponent && ch == grouping && this.isGroupingUsed ()) {
+if (sawDecimal) {
+break;
+}backup = position;
+} else if (!isExponent && text.regionMatches (position, exponentString, 0, exponentString.length) && !sawExponent) {
+var pos =  new java.text.ParsePosition (position + exponentString.length);
+var stat =  Clazz.newBooleanArray (2, false);
+var exponentDigits =  new java.text.DigitList ();
+if (this.subparse (text, pos, "", Character.toString (this.symbols.getMinusSign ()), exponentDigits, true, stat) && exponentDigits.fitsIntoLong (stat[1], true)) {
+position = pos.index;
+exponent = exponentDigits.getLong ();
+if (!stat[1]) {
+exponent = -exponent;
+}sawExponent = true;
+}break;
+} else {
+break;
+}}
+if (backup != -1) {
+position = backup;
+}if (!sawDecimal) {
+digits.decimalAt = digitCount;
+}digits.decimalAt += exponent;
+if (!sawDigit && digitCount == 0) {
+parsePosition.index = oldStart;
+parsePosition.errorIndex = oldStart;
+return false;
+}}if (!isExponent) {
+if (gotPositive) {
+gotPositive = text.regionMatches (position, this.positiveSuffix, 0, this.positiveSuffix.length);
+}if (gotNegative) {
+gotNegative = text.regionMatches (position, this.negativeSuffix, 0, this.negativeSuffix.length);
+}if (gotPositive && gotNegative) {
+if (this.positiveSuffix.length > this.negativeSuffix.length) {
+gotNegative = false;
+} else if (this.positiveSuffix.length < this.negativeSuffix.length) {
+gotPositive = false;
+}}if (gotPositive == gotNegative) {
+parsePosition.errorIndex = position;
+return false;
+}parsePosition.index = position + (gotPositive ? this.positiveSuffix.length : this.negativeSuffix.length);
+} else {
+parsePosition.index = position;
+}status[1] = gotPositive;
+if (parsePosition.index == oldStart) {
+parsePosition.errorIndex = position;
+return false;
+}return true;
+}, "~S,java.text.ParsePosition,~S,~S,java.text.DigitList,~B,~A");
+Clazz.defineMethod (c$, "getDecimalFormatSymbols", 
+function () {
+try {
+return this.symbols.clone ();
+} catch (foo) {
+if (Clazz.exceptionOf (foo, Exception)) {
+return null;
+} else {
+throw foo;
+}
+}
+});
+Clazz.defineMethod (c$, "setDecimalFormatSymbols", 
+function (newSymbols) {
+try {
+this.symbols = newSymbols.clone ();
+this.expandAffixes ();
+} catch (foo) {
+if (Clazz.exceptionOf (foo, Exception)) {
+} else {
+throw foo;
+}
+}
+}, "java.text.DecimalFormatSymbols");
+Clazz.defineMethod (c$, "getPositivePrefix", 
+function () {
+return this.positivePrefix;
+});
+Clazz.defineMethod (c$, "setPositivePrefix", 
+function (newValue) {
+this.positivePrefix = newValue;
+this.posPrefixPattern = null;
+this.positivePrefixFieldPositions = null;
+}, "~S");
+Clazz.defineMethod (c$, "getPositivePrefixFieldPositions", 
+ function () {
+if (this.positivePrefixFieldPositions == null) {
+if (this.posPrefixPattern != null) {
+this.positivePrefixFieldPositions = this.expandAffix (this.posPrefixPattern);
+} else {
+this.positivePrefixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;
+}}return this.positivePrefixFieldPositions;
+});
+Clazz.defineMethod (c$, "getNegativePrefix", 
+function () {
+return this.negativePrefix;
+});
+Clazz.defineMethod (c$, "setNegativePrefix", 
+function (newValue) {
+this.negativePrefix = newValue;
+this.negPrefixPattern = null;
+}, "~S");
+Clazz.defineMethod (c$, "getNegativePrefixFieldPositions", 
+ function () {
+if (this.negativePrefixFieldPositions == null) {
+if (this.negPrefixPattern != null) {
+this.negativePrefixFieldPositions = this.expandAffix (this.negPrefixPattern);
+} else {
+this.negativePrefixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;
+}}return this.negativePrefixFieldPositions;
+});
+Clazz.defineMethod (c$, "getPositiveSuffix", 
+function () {
+return this.positiveSuffix;
+});
+Clazz.defineMethod (c$, "setPositiveSuffix", 
+function (newValue) {
+this.positiveSuffix = newValue;
+this.posSuffixPattern = null;
+}, "~S");
+Clazz.defineMethod (c$, "getPositiveSuffixFieldPositions", 
+ function () {
+if (this.positiveSuffixFieldPositions == null) {
+if (this.posSuffixPattern != null) {
+this.positiveSuffixFieldPositions = this.expandAffix (this.posSuffixPattern);
+} else {
+this.positiveSuffixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;
+}}return this.positiveSuffixFieldPositions;
+});
+Clazz.defineMethod (c$, "getNegativeSuffix", 
+function () {
+return this.negativeSuffix;
+});
+Clazz.defineMethod (c$, "setNegativeSuffix", 
+function (newValue) {
+this.negativeSuffix = newValue;
+this.negSuffixPattern = null;
+}, "~S");
+Clazz.defineMethod (c$, "getNegativeSuffixFieldPositions", 
+ function () {
+if (this.negativeSuffixFieldPositions == null) {
+if (this.negSuffixPattern != null) {
+this.negativeSuffixFieldPositions = this.expandAffix (this.negSuffixPattern);
+} else {
+this.negativeSuffixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;
+}}return this.negativeSuffixFieldPositions;
+});
+Clazz.defineMethod (c$, "getMultiplier", 
+function () {
+return this.multiplier;
+});
+Clazz.defineMethod (c$, "setMultiplier", 
+function (newValue) {
+this.multiplier = newValue;
+}, "~N");
+Clazz.defineMethod (c$, "getGroupingSize", 
+function () {
+return this.groupingSize;
+});
+Clazz.defineMethod (c$, "setGroupingSize", 
+function (newValue) {
+this.groupingSize = newValue;
+}, "~N");
+Clazz.defineMethod (c$, "isDecimalSeparatorAlwaysShown", 
+function () {
+return this.decimalSeparatorAlwaysShown;
+});
+Clazz.defineMethod (c$, "setDecimalSeparatorAlwaysShown", 
+function (newValue) {
+this.decimalSeparatorAlwaysShown = newValue;
+}, "~B");
+Clazz.defineMethod (c$, "isParseBigDecimal", 
+function () {
+return this.parseBigDecimal;
+});
+Clazz.defineMethod (c$, "setParseBigDecimal", 
+function (newValue) {
+this.parseBigDecimal = newValue;
+}, "~B");
+Clazz.defineMethod (c$, "clone", 
+function () {
+try {
+var other = Clazz.superCall (this, java.text.DecimalFormat, "clone", []);
+other.symbols = this.symbols.clone ();
+other.digitList = this.digitList.clone ();
+return other;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+throw  new InternalError ();
+} else {
+throw e;
+}
+}
+});
+Clazz.defineMethod (c$, "equals", 
+function (obj) {
+if (obj == null) return false;
+if (!Clazz.superCall (this, java.text.DecimalFormat, "equals", [obj])) return false;
+var other = obj;
+return ((this.posPrefixPattern === other.posPrefixPattern && this.positivePrefix.equals (other.positivePrefix)) || (this.posPrefixPattern != null && this.posPrefixPattern.equals (other.posPrefixPattern))) && ((this.posSuffixPattern === other.posSuffixPattern && this.positiveSuffix.equals (other.positiveSuffix)) || (this.posSuffixPattern != null && this.posSuffixPattern.equals (other.posSuffixPattern))) && ((this.negPrefixPattern === other.negPrefixPattern && this.negativePrefix.equals (other.negativePrefix)) || (this.negPrefixPattern != null && this.negPrefixPattern.equals (other.negPrefixPattern))) && ((this.negSuffixPattern === other.negSuffixPattern && this.negativeSuffix.equals (other.negativeSuffix)) || (this.negSuffixPattern != null && this.negSuffixPattern.equals (other.negSuffixPattern))) && this.multiplier == other.multiplier && this.groupingSize == other.groupingSize && this.decimalSeparatorAlwaysShown == other.decimalSeparatorAlwaysShown && this.parseBigDecimal == other.parseBigDecimal && this.useExponentialNotation == other.useExponentialNotation && (!this.useExponentialNotation || this.minExponentDigits == other.minExponentDigits) && this.$maximumIntegerDigits == other.$maximumIntegerDigits && this.$minimumIntegerDigits == other.$minimumIntegerDigits && this.$maximumFractionDigits == other.$maximumFractionDigits && this.$minimumFractionDigits == other.$minimumFractionDigits && this.roundingMode === other.roundingMode && this.symbols.equals (other.symbols);
+}, "~O");
+Clazz.defineMethod (c$, "hashCode", 
+function () {
+return Clazz.superCall (this, java.text.DecimalFormat, "hashCode", []) * 37 + this.positivePrefix.hashCode ();
+});
+Clazz.defineMethod (c$, "toPattern", 
+function () {
+return this.toPattern (false);
+});
+Clazz.defineMethod (c$, "toLocalizedPattern", 
+function () {
+return this.toPattern (true);
+});
+Clazz.defineMethod (c$, "expandAffixes", 
+ function () {
+var buffer =  new StringBuffer ();
+if (this.posPrefixPattern != null) {
+this.positivePrefix = this.expandAffix (this.posPrefixPattern, buffer);
+this.positivePrefixFieldPositions = null;
+}if (this.posSuffixPattern != null) {
+this.positiveSuffix = this.expandAffix (this.posSuffixPattern, buffer);
+this.positiveSuffixFieldPositions = null;
+}if (this.negPrefixPattern != null) {
+this.negativePrefix = this.expandAffix (this.negPrefixPattern, buffer);
+this.negativePrefixFieldPositions = null;
+}if (this.negSuffixPattern != null) {
+this.negativeSuffix = this.expandAffix (this.negSuffixPattern, buffer);
+this.negativeSuffixFieldPositions = null;
+}});
+Clazz.defineMethod (c$, "expandAffix", 
+ function (pattern, buffer) {
+buffer.setLength (0);
+for (var i = 0; i < pattern.length; ) {
+var c = pattern.charAt (i++);
+if (c == '\'') {
+c = pattern.charAt (i++);
+switch (c) {
+case '\u00a4':
+if (i < pattern.length && pattern.charAt (i) == '\u00a4') {
+++i;
+buffer.append (this.symbols.getInternationalCurrencySymbol ());
+} else {
+buffer.append (this.symbols.getCurrencySymbol ());
+}continue;
+case '%':
+c = this.symbols.getPercent ();
+break;
+case '\u2030':
+c = this.symbols.getPerMill ();
+break;
+case '-':
+c = this.symbols.getMinusSign ();
+break;
+}
+}buffer.append (c);
+}
+return buffer.toString ();
+}, "~S,StringBuffer");
+Clazz.defineMethod (c$, "expandAffix", 
+ function (pattern) {
+var positions = null;
+var stringIndex = 0;
+for (var i = 0; i < pattern.length; ) {
+var c = pattern.charAt (i++);
+if (c == '\'') {
+var field = -1;
+var fieldID = null;
+c = pattern.charAt (i++);
+switch (c) {
+case '\u00a4':
+var string;
+if (i < pattern.length && pattern.charAt (i) == '\u00a4') {
+++i;
+string = this.symbols.getInternationalCurrencySymbol ();
+} else {
+string = this.symbols.getCurrencySymbol ();
+}if (string.length > 0) {
+if (positions == null) {
+positions =  new java.util.ArrayList (2);
+}var fp =  new java.text.FieldPosition (java.text.NumberFormat.Field.CURRENCY);
+fp.setBeginIndex (stringIndex);
+fp.setEndIndex (stringIndex + string.length);
+positions.add (fp);
+stringIndex += string.length;
+}continue;
+case '%':
+c = this.symbols.getPercent ();
+field = -1;
+fieldID = java.text.NumberFormat.Field.PERCENT;
+break;
+case '\u2030':
+c = this.symbols.getPerMill ();
+field = -1;
+fieldID = java.text.NumberFormat.Field.PERMILLE;
+break;
+case '-':
+c = this.symbols.getMinusSign ();
+field = -1;
+fieldID = java.text.NumberFormat.Field.SIGN;
+break;
+}
+if (fieldID != null) {
+if (positions == null) {
+positions =  new java.util.ArrayList (2);
+}var fp =  new java.text.FieldPosition (fieldID, field);
+fp.setBeginIndex (stringIndex);
+fp.setEndIndex (stringIndex + 1);
+positions.add (fp);
+}}stringIndex++;
+}
+if (positions != null) {
+return positions.toArray (java.text.DecimalFormat.EmptyFieldPositionArray);
+}return java.text.DecimalFormat.EmptyFieldPositionArray;
+}, "~S");
+Clazz.defineMethod (c$, "appendAffix", 
+ function (buffer, affixPattern, expAffix, localized) {
+if (affixPattern == null) {
+this.appendAffix (buffer, expAffix, localized);
+} else {
+var i;
+for (var pos = 0; pos < affixPattern.length; pos = i) {
+i = affixPattern.indexOf ('\'', pos);
+if (i < 0) {
+this.appendAffix (buffer, affixPattern.substring (pos), localized);
+break;
+}if (i > pos) {
+this.appendAffix (buffer, affixPattern.substring (pos, i), localized);
+}var c = affixPattern.charAt (++i);
+++i;
+if (c == '\'') {
+buffer.append (c);
+} else if (c == '\u00a4' && i < affixPattern.length && affixPattern.charAt (i) == '\u00a4') {
+++i;
+buffer.append (c);
+} else if (localized) {
+switch (c) {
+case '%':
+c = this.symbols.getPercent ();
+break;
+case '\u2030':
+c = this.symbols.getPerMill ();
+break;
+case '-':
+c = this.symbols.getMinusSign ();
+break;
+}
+}buffer.append (c);
+}
+}}, "StringBuffer,~S,~S,~B");
+Clazz.defineMethod (c$, "appendAffix", 
+ function (buffer, affix, localized) {
+var needQuote;
+if (localized) {
+needQuote = affix.indexOf (this.symbols.getZeroDigit ()) >= 0 || affix.indexOf (this.symbols.getGroupingSeparator ()) >= 0 || affix.indexOf (this.symbols.getDecimalSeparator ()) >= 0 || affix.indexOf (this.symbols.getPercent ()) >= 0 || affix.indexOf (this.symbols.getPerMill ()) >= 0 || affix.indexOf (this.symbols.getDigit ()) >= 0 || affix.indexOf (this.symbols.getPatternSeparator ()) >= 0 || affix.indexOf (this.symbols.getMinusSign ()) >= 0 || affix.indexOf ('\u00a4') >= 0;
+} else {
+needQuote = affix.indexOf ('0') >= 0 || affix.indexOf (',') >= 0 || affix.indexOf ('.') >= 0 || affix.indexOf ('%') >= 0 || affix.indexOf ('\u2030') >= 0 || affix.indexOf ('#') >= 0 || affix.indexOf (';') >= 0 || affix.indexOf ('-') >= 0 || affix.indexOf ('\u00a4') >= 0;
+}if (needQuote) buffer.append ('\'');
+if (affix.indexOf ('\'') < 0) buffer.append (affix);
+ else {
+for (var j = 0; j < affix.length; ++j) {
+var c = affix.charAt (j);
+buffer.append (c);
+if (c == '\'') buffer.append (c);
+}
+}if (needQuote) buffer.append ('\'');
+}, "StringBuffer,~S,~B");
+Clazz.defineMethod (c$, "toPattern", 
+ function (localized) {
+var result =  new StringBuffer ();
+for (var j = 1; j >= 0; --j) {
+if (j == 1) this.appendAffix (result, this.posPrefixPattern, this.positivePrefix, localized);
+ else this.appendAffix (result, this.negPrefixPattern, this.negativePrefix, localized);
+var i;
+var digitCount = this.useExponentialNotation ? this.getMaximumIntegerDigits () : Math.max (this.groupingSize, this.getMinimumIntegerDigits ()) + 1;
+for (i = digitCount; i > 0; --i) {
+if (i != digitCount && this.isGroupingUsed () && this.groupingSize != 0 && i % this.groupingSize == 0) {
+result.append (localized ? this.symbols.getGroupingSeparator () : ',');
+}result.append (i <= this.getMinimumIntegerDigits () ? (localized ? this.symbols.getZeroDigit () : '0') : (localized ? this.symbols.getDigit () : '#'));
+}
+if (this.getMaximumFractionDigits () > 0 || this.decimalSeparatorAlwaysShown) result.append (localized ? this.symbols.getDecimalSeparator () : '.');
+for (i = 0; i < this.getMaximumFractionDigits (); ++i) {
+if (i < this.getMinimumFractionDigits ()) {
+result.append (localized ? this.symbols.getZeroDigit () : '0');
+} else {
+result.append (localized ? this.symbols.getDigit () : '#');
+}}
+if (this.useExponentialNotation) {
+result.append (localized ? this.symbols.getExponentSeparator () : "E");
+for (i = 0; i < this.minExponentDigits; ++i) result.append (localized ? this.symbols.getZeroDigit () : '0');
+
+}if (j == 1) {
+this.appendAffix (result, this.posSuffixPattern, this.positiveSuffix, localized);
+if ((this.negSuffixPattern === this.posSuffixPattern && this.negativeSuffix.equals (this.positiveSuffix)) || (this.negSuffixPattern != null && this.negSuffixPattern.equals (this.posSuffixPattern))) {
+if ((this.negPrefixPattern != null && this.posPrefixPattern != null && this.negPrefixPattern.equals ("'-" + this.posPrefixPattern)) || (this.negPrefixPattern === this.posPrefixPattern && this.negativePrefix.equals (this.symbols.getMinusSign () + this.positivePrefix))) break;
+}result.append (localized ? this.symbols.getPatternSeparator () : ';');
+} else this.appendAffix (result, this.negSuffixPattern, this.negativeSuffix, localized);
+}
+return result.toString ();
+}, "~B");
+Clazz.defineMethod (c$, "applyPattern", 
+function (pattern) {
+this.applyPattern (pattern, false);
+}, "~S");
+Clazz.defineMethod (c$, "applyLocalizedPattern", 
+function (pattern) {
+this.applyPattern (pattern, true);
+}, "~S");
+Clazz.defineMethod (c$, "applyPattern", 
+ function (pattern, localized) {
+var zeroDigit = '0';
+var groupingSeparator = ',';
+var decimalSeparator = '.';
+var percent = '%';
+var perMill = '\u2030';
+var digit = '#';
+var separator = ';';
+var exponent = "E";
+var minus = '-';
+if (localized) {
+zeroDigit = this.symbols.getZeroDigit ();
+groupingSeparator = this.symbols.getGroupingSeparator ();
+decimalSeparator = this.symbols.getDecimalSeparator ();
+percent = this.symbols.getPercent ();
+perMill = this.symbols.getPerMill ();
+digit = this.symbols.getDigit ();
+separator = this.symbols.getPatternSeparator ();
+exponent = this.symbols.getExponentSeparator ();
+minus = this.symbols.getMinusSign ();
+}var gotNegative = false;
+this.decimalSeparatorAlwaysShown = false;
+this.isCurrencyFormat = false;
+this.useExponentialNotation = false;
+var phaseOneLength = 0;
+var start = 0;
+for (var j = 1; j >= 0 && start < pattern.length; --j) {
+var inQuote = false;
+var prefix =  new StringBuffer ();
+var suffix =  new StringBuffer ();
+var decimalPos = -1;
+var multiplier = 1;
+var digitLeftCount = 0;
+var zeroDigitCount = 0;
+var digitRightCount = 0;
+var groupingCount = -1;
+var phase = 0;
+var affix = prefix;
+for (var pos = start; pos < pattern.length; ++pos) {
+var ch = pattern.charAt (pos);
+switch (phase) {
+case 0:
+case 2:
+if (inQuote) {
+if (ch == '\'') {
+if ((pos + 1) < pattern.length && pattern.charAt (pos + 1) == '\'') {
+++pos;
+affix.append ("''");
+} else {
+inQuote = false;
+}continue;
+}} else {
+if (ch == digit || ch == zeroDigit || ch == groupingSeparator || ch == decimalSeparator) {
+phase = 1;
+--pos;
+continue;
+} else if (ch == '\u00a4') {
+var doubled = (pos + 1) < pattern.length && pattern.charAt (pos + 1) == '\u00a4';
+if (doubled) {
+++pos;
+}this.isCurrencyFormat = true;
+affix.append (doubled ? "'\u00A4\u00A4" : "'\u00A4");
+continue;
+} else if (ch == '\'') {
+if (ch == '\'') {
+if ((pos + 1) < pattern.length && pattern.charAt (pos + 1) == '\'') {
+++pos;
+affix.append ("''");
+} else {
+inQuote = true;
+}continue;
+}} else if (ch == separator) {
+if (phase == 0 || j == 0) {
+throw  new IllegalArgumentException ("Unquoted special character '" + ch + "' in pattern \"" + pattern + '"');
+}start = pos + 1;
+pos = pattern.length;
+continue;
+} else if (ch == percent) {
+if (multiplier != 1) {
+throw  new IllegalArgumentException ("Too many percent/per mille characters in pattern \"" + pattern + '"');
+}multiplier = 100;
+affix.append ("'%");
+continue;
+} else if (ch == perMill) {
+if (multiplier != 1) {
+throw  new IllegalArgumentException ("Too many percent/per mille characters in pattern \"" + pattern + '"');
+}multiplier = 1000;
+affix.append ("'\u2030");
+continue;
+} else if (ch == minus) {
+affix.append ("'-");
+continue;
+}}affix.append (ch);
+break;
+case 1:
+if (j == 1) {
+++phaseOneLength;
+} else {
+if (--phaseOneLength == 0) {
+phase = 2;
+affix = suffix;
+}continue;
+}if (ch == digit) {
+if (zeroDigitCount > 0) {
+++digitRightCount;
+} else {
+++digitLeftCount;
+}if (groupingCount >= 0 && decimalPos < 0) {
+++groupingCount;
+}} else if (ch == zeroDigit) {
+if (digitRightCount > 0) {
+throw  new IllegalArgumentException ("Unexpected '0' in pattern \"" + pattern + '"');
+}++zeroDigitCount;
+if (groupingCount >= 0 && decimalPos < 0) {
+++groupingCount;
+}} else if (ch == groupingSeparator) {
+groupingCount = 0;
+} else if (ch == decimalSeparator) {
+if (decimalPos >= 0) {
+throw  new IllegalArgumentException ("Multiple decimal separators in pattern \"" + pattern + '"');
+}decimalPos = digitLeftCount + zeroDigitCount + digitRightCount;
+} else if (pattern.regionMatches (pos, exponent, 0, exponent.length)) {
+if (this.useExponentialNotation) {
+throw  new IllegalArgumentException ("Multiple exponential symbols in pattern \"" + pattern + '"');
+}this.useExponentialNotation = true;
+this.minExponentDigits = 0;
+pos = pos + exponent.length;
+while (pos < pattern.length && pattern.charAt (pos) == zeroDigit) {
+++this.minExponentDigits;
+++phaseOneLength;
+++pos;
+}
+if ((digitLeftCount + zeroDigitCount) < 1 || this.minExponentDigits < 1) {
+throw  new IllegalArgumentException ("Malformed exponential pattern \"" + pattern + '"');
+}phase = 2;
+affix = suffix;
+--pos;
+continue;
+} else {
+phase = 2;
+affix = suffix;
+--pos;
+--phaseOneLength;
+continue;
+}break;
+}
+}
+if (zeroDigitCount == 0 && digitLeftCount > 0 && decimalPos >= 0) {
+var n = decimalPos;
+if (n == 0) {
+++n;
+}digitRightCount = digitLeftCount - n;
+digitLeftCount = n - 1;
+zeroDigitCount = 1;
+}if ((decimalPos < 0 && digitRightCount > 0) || (decimalPos >= 0 && (decimalPos < digitLeftCount || decimalPos > (digitLeftCount + zeroDigitCount))) || groupingCount == 0 || inQuote) {
+throw  new IllegalArgumentException ("Malformed pattern \"" + pattern + '"');
+}if (j == 1) {
+this.posPrefixPattern = prefix.toString ();
+this.posSuffixPattern = suffix.toString ();
+this.negPrefixPattern = this.posPrefixPattern;
+this.negSuffixPattern = this.posSuffixPattern;
+var digitTotalCount = digitLeftCount + zeroDigitCount + digitRightCount;
+var effectiveDecimalPos = decimalPos >= 0 ? decimalPos : digitTotalCount;
+this.setMinimumIntegerDigits (effectiveDecimalPos - digitLeftCount);
+this.setMaximumIntegerDigits (this.useExponentialNotation ? digitLeftCount + this.getMinimumIntegerDigits () : 2147483647);
+this.setMaximumFractionDigits (decimalPos >= 0 ? (digitTotalCount - decimalPos) : 0);
+this.setMinimumFractionDigits (decimalPos >= 0 ? (digitLeftCount + zeroDigitCount - decimalPos) : 0);
+this.setGroupingUsed (groupingCount > 0);
+this.groupingSize = (groupingCount > 0) ? groupingCount : 0;
+this.multiplier = multiplier;
+this.setDecimalSeparatorAlwaysShown (decimalPos == 0 || decimalPos == digitTotalCount);
+} else {
+this.negPrefixPattern = prefix.toString ();
+this.negSuffixPattern = suffix.toString ();
+gotNegative = true;
+}}
+if (pattern.length == 0) {
+this.posPrefixPattern = this.posSuffixPattern = "";
+this.setMinimumIntegerDigits (0);
+this.setMaximumIntegerDigits (2147483647);
+this.setMinimumFractionDigits (0);
+this.setMaximumFractionDigits (2147483647);
+}if (!gotNegative || (this.negPrefixPattern.equals (this.posPrefixPattern) && this.negSuffixPattern.equals (this.posSuffixPattern))) {
+this.negSuffixPattern = this.posSuffixPattern;
+this.negPrefixPattern = "'-" + this.posPrefixPattern;
+}this.expandAffixes ();
+}, "~S,~B");
+Clazz.defineMethod (c$, "setMaximumIntegerDigits", 
+function (newValue) {
+this.$maximumIntegerDigits = Math.min (Math.max (0, newValue), 2147483647);
+Clazz.superCall (this, java.text.DecimalFormat, "setMaximumIntegerDigits", [(this.$maximumIntegerDigits > 309) ? 309 : this.$maximumIntegerDigits]);
+if (this.$minimumIntegerDigits > this.$maximumIntegerDigits) {
+this.$minimumIntegerDigits = this.$maximumIntegerDigits;
+Clazz.superCall (this, java.text.DecimalFormat, "setMinimumIntegerDigits", [(this.$minimumIntegerDigits > 309) ? 309 : this.$minimumIntegerDigits]);
+}}, "~N");
+Clazz.defineMethod (c$, "setMinimumIntegerDigits", 
+function (newValue) {
+this.$minimumIntegerDigits = Math.min (Math.max (0, newValue), 2147483647);
+Clazz.superCall (this, java.text.DecimalFormat, "setMinimumIntegerDigits", [(this.$minimumIntegerDigits > 309) ? 309 : this.$minimumIntegerDigits]);
+if (this.$minimumIntegerDigits > this.$maximumIntegerDigits) {
+this.$maximumIntegerDigits = this.$minimumIntegerDigits;
+Clazz.superCall (this, java.text.DecimalFormat, "setMaximumIntegerDigits", [(this.$maximumIntegerDigits > 309) ? 309 : this.$maximumIntegerDigits]);
+}}, "~N");
+Clazz.defineMethod (c$, "setMaximumFractionDigits", 
+function (newValue) {
+this.$maximumFractionDigits = Math.min (Math.max (0, newValue), 2147483647);
+Clazz.superCall (this, java.text.DecimalFormat, "setMaximumFractionDigits", [(this.$maximumFractionDigits > 340) ? 340 : this.$maximumFractionDigits]);
+if (this.$minimumFractionDigits > this.$maximumFractionDigits) {
+this.$minimumFractionDigits = this.$maximumFractionDigits;
+Clazz.superCall (this, java.text.DecimalFormat, "setMinimumFractionDigits", [(this.$minimumFractionDigits > 340) ? 340 : this.$minimumFractionDigits]);
+}}, "~N");
+Clazz.defineMethod (c$, "setMinimumFractionDigits", 
+function (newValue) {
+this.$minimumFractionDigits = Math.min (Math.max (0, newValue), 2147483647);
+Clazz.superCall (this, java.text.DecimalFormat, "setMinimumFractionDigits", [(this.$minimumFractionDigits > 340) ? 340 : this.$minimumFractionDigits]);
+if (this.$minimumFractionDigits > this.$maximumFractionDigits) {
+this.$maximumFractionDigits = this.$minimumFractionDigits;
+Clazz.superCall (this, java.text.DecimalFormat, "setMaximumFractionDigits", [(this.$maximumFractionDigits > 340) ? 340 : this.$maximumFractionDigits]);
+}}, "~N");
+Clazz.defineMethod (c$, "getMaximumIntegerDigits", 
+function () {
+return this.$maximumIntegerDigits;
+});
+Clazz.defineMethod (c$, "getMinimumIntegerDigits", 
+function () {
+return this.$minimumIntegerDigits;
+});
+Clazz.defineMethod (c$, "getMaximumFractionDigits", 
+function () {
+return this.$maximumFractionDigits;
+});
+Clazz.defineMethod (c$, "getMinimumFractionDigits", 
+function () {
+return this.$minimumFractionDigits;
+});
+Clazz.overrideMethod (c$, "getRoundingMode", 
+function () {
+return this.roundingMode;
+});
+Clazz.overrideMethod (c$, "setRoundingMode", 
+function (roundingMode) {
+if (roundingMode == null) {
+throw  new NullPointerException ();
+}this.roundingMode = roundingMode;
+this.digitList.setRoundingMode (roundingMode);
+}, "java.math.RoundingMode");
+Clazz.defineMethod (c$, "adjustForCurrencyDefaultFractionDigits", 
+function () {
+var digits = 2;
+var oldMinDigits = this.getMinimumFractionDigits ();
+if (oldMinDigits == this.getMaximumFractionDigits ()) {
+this.setMinimumFractionDigits (digits);
+this.setMaximumFractionDigits (digits);
+} else {
+this.setMinimumFractionDigits (Math.min (digits, oldMinDigits));
+this.setMaximumFractionDigits (digits);
+}});
+Clazz.defineStatics (c$,
+"STATUS_INFINITE", 0,
+"STATUS_POSITIVE", 1,
+"STATUS_LENGTH", 2,
+"PATTERN_ZERO_DIGIT", '0',
+"PATTERN_GROUPING_SEPARATOR", ',',
+"PATTERN_DECIMAL_SEPARATOR", '.',
+"PATTERN_PER_MILLE", '\u2030',
+"PATTERN_PERCENT", '%',
+"PATTERN_DIGIT", '#',
+"PATTERN_SEPARATOR", ';',
+"PATTERN_EXPONENT", "E",
+"PATTERN_MINUS", '-',
+"CURRENCY_SIGN", '\u00A4',
+"QUOTE", '\'');
+c$.EmptyFieldPositionArray = c$.prototype.EmptyFieldPositionArray =  new Array (0);
+Clazz.defineStatics (c$,
+"DOUBLE_INTEGER_DIGITS", 309,
+"DOUBLE_FRACTION_DIGITS", 340,
+"MAXIMUM_INTEGER_DIGITS", 2147483647,
+"MAXIMUM_FRACTION_DIGITS", 2147483647);
+c$.$cachedLocaleData = c$.prototype.$cachedLocaleData =  new java.util.Hashtable (3);
+});