@keplr-wallet/unit 0.9.9-rc.0 → 0.9.11-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/coin-pretty.d.ts +13 -3
- package/build/coin-pretty.js +36 -25
- package/build/coin-pretty.js.map +1 -1
- package/build/coin-pretty.spec.js +194 -9
- package/build/coin-pretty.spec.js.map +1 -1
- package/build/coin-utils.js +8 -4
- package/build/coin-utils.js.map +1 -1
- package/build/coin-utils.spec.js +16 -0
- package/build/coin-utils.spec.js.map +1 -1
- package/build/coin.js +1 -1
- package/build/coin.js.map +1 -1
- package/build/coin.spec.js +15 -0
- package/build/coin.spec.js.map +1 -1
- package/build/dec-utils.d.ts +8 -1
- package/build/dec-utils.js +22 -20
- package/build/dec-utils.js.map +1 -1
- package/build/dec-utils.spec.js +19 -0
- package/build/dec-utils.spec.js.map +1 -1
- package/build/decimal.d.ts +18 -9
- package/build/decimal.js +63 -27
- package/build/decimal.js.map +1 -1
- package/build/decimal.spec.js +218 -2
- package/build/decimal.spec.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/int-pretty.d.ts +16 -4
- package/build/int-pretty.js +74 -36
- package/build/int-pretty.js.map +1 -1
- package/build/int-pretty.spec.js +261 -94
- package/build/int-pretty.spec.js.map +1 -1
- package/build/int.d.ts +14 -2
- package/build/int.js +48 -0
- package/build/int.js.map +1 -1
- package/build/int.spec.d.ts +1 -0
- package/build/int.spec.js +133 -0
- package/build/int.spec.js.map +1 -0
- package/build/price-pretty.d.ts +13 -3
- package/build/price-pretty.js +37 -26
- package/build/price-pretty.js.map +1 -1
- package/build/price-pretty.spec.js +59 -2
- package/build/price-pretty.spec.js.map +1 -1
- package/build/rate-pretty.d.ts +57 -0
- package/build/rate-pretty.js +128 -0
- package/build/rate-pretty.js.map +1 -0
- package/build/rate-pretty.spec.d.ts +1 -0
- package/build/rate-pretty.spec.js +38 -0
- package/build/rate-pretty.spec.js.map +1 -0
- package/package.json +3 -3
- package/src/coin-pretty.spec.ts +304 -11
- package/src/coin-pretty.ts +56 -29
- package/src/coin-utils.spec.ts +32 -0
- package/src/coin-utils.ts +12 -4
- package/src/coin.spec.ts +20 -0
- package/src/coin.ts +1 -1
- package/src/dec-utils.spec.ts +39 -0
- package/src/dec-utils.ts +25 -20
- package/src/decimal.spec.ts +269 -2
- package/src/decimal.ts +84 -54
- package/src/index.ts +1 -0
- package/src/int-pretty.spec.ts +296 -101
- package/src/int-pretty.ts +87 -34
- package/src/int.spec.ts +178 -0
- package/src/int.ts +66 -2
- package/src/price-pretty.spec.ts +106 -2
- package/src/price-pretty.ts +50 -30
- package/src/rate-pretty.spec.ts +52 -0
- package/src/rate-pretty.ts +165 -0
package/build/dec-utils.d.ts
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
import { Dec } from "./decimal";
|
2
2
|
export declare class DecUtils {
|
3
3
|
static trim(dec: Dec | string): string;
|
4
|
-
|
4
|
+
protected static tenExponentNs: {
|
5
|
+
[n: string]: Dec;
|
6
|
+
};
|
7
|
+
static getTenExponentN(n: number): Dec;
|
8
|
+
static getTenExponentNInPrecisionRange(n: number): Dec;
|
9
|
+
/**
|
10
|
+
* @deprecated Use`getTenExponentNInPrecisionRange`
|
11
|
+
*/
|
5
12
|
static getPrecisionDec(precision: number): Dec;
|
6
13
|
}
|
package/build/dec-utils.js
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.DecUtils = void 0;
|
4
4
|
const decimal_1 = require("./decimal");
|
5
|
+
const int_1 = require("./int");
|
5
6
|
class DecUtils {
|
6
7
|
static trim(dec) {
|
7
8
|
let decStr = typeof dec === "string" ? dec : dec.toString();
|
@@ -23,31 +24,32 @@ class DecUtils {
|
|
23
24
|
}
|
24
25
|
return decStr;
|
25
26
|
}
|
26
|
-
static
|
27
|
-
if (
|
27
|
+
static getTenExponentN(n) {
|
28
|
+
if (n < -decimal_1.Dec.precision) {
|
29
|
+
// Dec can only handle up to precision 18.
|
30
|
+
// Anything less than 18 precision is 0, so there is a high probability of an error.
|
28
31
|
throw new Error("Too little precision");
|
29
32
|
}
|
30
|
-
if (
|
31
|
-
|
32
|
-
}
|
33
|
-
if (DecUtils.precisions[precision.toString()]) {
|
34
|
-
return DecUtils.precisions[precision.toString()];
|
35
|
-
}
|
36
|
-
let dec = new decimal_1.Dec(1);
|
37
|
-
if (precision > 0) {
|
38
|
-
for (let i = 0; i < precision; i++) {
|
39
|
-
dec = dec.mul(new decimal_1.Dec(10));
|
40
|
-
}
|
41
|
-
}
|
42
|
-
else if (precision < 0) {
|
43
|
-
for (let i = 0; i < -precision; i++) {
|
44
|
-
dec = dec.quo(new decimal_1.Dec(10));
|
45
|
-
}
|
33
|
+
if (DecUtils.tenExponentNs[n.toString()]) {
|
34
|
+
return DecUtils.tenExponentNs[n.toString()];
|
46
35
|
}
|
47
|
-
|
36
|
+
const dec = new decimal_1.Dec(10).pow(new int_1.Int(n));
|
37
|
+
DecUtils.tenExponentNs[n.toString()] = dec;
|
48
38
|
return dec;
|
49
39
|
}
|
40
|
+
static getTenExponentNInPrecisionRange(n) {
|
41
|
+
if (n > decimal_1.Dec.precision) {
|
42
|
+
throw new Error("Too much precision");
|
43
|
+
}
|
44
|
+
return DecUtils.getTenExponentN(n);
|
45
|
+
}
|
46
|
+
/**
|
47
|
+
* @deprecated Use`getTenExponentNInPrecisionRange`
|
48
|
+
*/
|
49
|
+
static getPrecisionDec(precision) {
|
50
|
+
return DecUtils.getTenExponentNInPrecisionRange(precision);
|
51
|
+
}
|
50
52
|
}
|
51
53
|
exports.DecUtils = DecUtils;
|
52
|
-
DecUtils.
|
54
|
+
DecUtils.tenExponentNs = {};
|
53
55
|
//# sourceMappingURL=dec-utils.js.map
|
package/build/dec-utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dec-utils.js","sourceRoot":"","sources":["../src/dec-utils.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;
|
1
|
+
{"version":3,"file":"dec-utils.js","sourceRoot":"","sources":["../src/dec-utils.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;AAChC,+BAA4B;AAE5B,MAAa,QAAQ;IACZ,MAAM,CAAC,IAAI,CAAC,GAAiB;QAClC,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE5D,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC;SACf;QAED,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACrB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7B;iBAAM;gBACL,MAAM;aACP;SACF;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;gBACrC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC7C;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAIM,MAAM,CAAC,eAAe,CAAC,CAAS;QACrC,IAAI,CAAC,GAAG,CAAC,aAAG,CAAC,SAAS,EAAE;YACtB,0CAA0C;YAC1C,oFAAoF;YACpF,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QAED,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE;YACxC,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC7C;QAED,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,SAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC;QAE3C,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,+BAA+B,CAAC,CAAS;QACrD,IAAI,CAAC,GAAG,aAAG,CAAC,SAAS,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;QAED,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,eAAe,CAAC,SAAiB;QAC7C,OAAO,QAAQ,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;;AAzDH,4BA0DC;AAjCkB,sBAAa,GAAyB,EAAE,CAAC"}
|
package/build/dec-utils.spec.js
CHANGED
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const dec_utils_1 = require("./dec-utils");
|
4
4
|
const decimal_1 = require("./decimal");
|
5
5
|
describe("Test DecUtils", () => {
|
6
|
+
it("Test trim in DecUtils", () => {
|
7
|
+
expect(dec_utils_1.DecUtils.trim("0.00100")).toBe("0.001");
|
8
|
+
expect(dec_utils_1.DecUtils.trim("0.00")).toBe("0");
|
9
|
+
expect(dec_utils_1.DecUtils.trim("-0.00100")).toBe("-0.001");
|
10
|
+
expect(dec_utils_1.DecUtils.trim("-0.00")).toBe("-0");
|
11
|
+
});
|
6
12
|
it("getPrecisionDec should return the (10^precision)", () => {
|
7
13
|
expect(dec_utils_1.DecUtils.getPrecisionDec(-1).toString()).toBe(new decimal_1.Dec("0.1").toString());
|
8
14
|
expect(dec_utils_1.DecUtils.getPrecisionDec(-5).toString()).toBe(new decimal_1.Dec("0.00001").toString());
|
@@ -24,5 +30,18 @@ describe("Test DecUtils", () => {
|
|
24
30
|
dec_utils_1.DecUtils.getPrecisionDec(-19);
|
25
31
|
}).toThrow();
|
26
32
|
});
|
33
|
+
it("getTenExponentN should return same cached result", () => {
|
34
|
+
for (let i = 0; i < 3; i++) {
|
35
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(5).toString()).toBe(new decimal_1.Dec(100000).toString());
|
36
|
+
}
|
37
|
+
});
|
38
|
+
it("Test getTenExponentN", () => {
|
39
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(0).toString()).toBe(new decimal_1.Dec("1").toString());
|
40
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(1).toString()).toBe(new decimal_1.Dec("10").toString());
|
41
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(10).toString()).toBe(new decimal_1.Dec("10000000000").toString());
|
42
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(20).toString()).toBe(new decimal_1.Dec("100000000000000000000").toString());
|
43
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(-18).toString()).toBe(new decimal_1.Dec("0.000000000000000001").toString());
|
44
|
+
expect(() => dec_utils_1.DecUtils.getTenExponentN(-19)).toThrow();
|
45
|
+
});
|
27
46
|
});
|
28
47
|
//# sourceMappingURL=dec-utils.spec.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dec-utils.spec.js","sourceRoot":"","sources":["../src/dec-utils.spec.ts"],"names":[],"mappings":";;AAAA,2CAAuC;AACvC,uCAAgC;AAEhC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAClD,IAAI,aAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAC1B,CAAC;QACF,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAClD,IAAI,aAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAC9B,CAAC;QAEF,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,aAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,aAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CACjD,IAAI,aAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAC3B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEjB,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEjB,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
1
|
+
{"version":3,"file":"dec-utils.spec.js","sourceRoot":"","sources":["../src/dec-utils.spec.ts"],"names":[],"mappings":"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"}
|
package/build/decimal.d.ts
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
import bigInteger from "big-integer";
|
2
2
|
import { Int } from "./int";
|
3
3
|
export declare class Dec {
|
4
|
-
static readonly precision
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
static readonly precision = 18;
|
5
|
+
protected static readonly decimalPrecisionBits = 60;
|
6
|
+
protected static readonly maxDecBitLen: number;
|
7
|
+
protected static readonly precisionMultipliers: {
|
8
|
+
[key: string]: bigInteger.BigInteger | undefined;
|
9
|
+
};
|
10
|
+
protected static calcPrecisionMultiplier(prec: number): bigInteger.BigInteger;
|
11
|
+
protected int: bigInteger.BigInteger;
|
8
12
|
/**
|
9
13
|
* Create a new Dec from integer with decimal place at prec
|
10
14
|
* @param int - Parse a number | bigInteger | string into a Dec.
|
@@ -12,6 +16,7 @@ export declare class Dec {
|
|
12
16
|
* @param prec - Precision
|
13
17
|
*/
|
14
18
|
constructor(int: bigInteger.BigNumber | Int, prec?: number);
|
19
|
+
protected checkBitLen(): void;
|
15
20
|
isZero(): boolean;
|
16
21
|
isNegative(): boolean;
|
17
22
|
isPositive(): boolean;
|
@@ -42,26 +47,30 @@ export declare class Dec {
|
|
42
47
|
abs(): Dec;
|
43
48
|
add(d2: Dec): Dec;
|
44
49
|
sub(d2: Dec): Dec;
|
50
|
+
pow(n: Int): Dec;
|
45
51
|
mul(d2: Dec): Dec;
|
46
52
|
mulTruncate(d2: Dec): Dec;
|
47
|
-
|
53
|
+
protected mulRaw(d2: Dec): Dec;
|
48
54
|
quo(d2: Dec): Dec;
|
49
55
|
quoTruncate(d2: Dec): Dec;
|
50
56
|
quoRoundUp(d2: Dec): Dec;
|
51
|
-
|
57
|
+
protected quoRaw(d2: Dec): Dec;
|
52
58
|
isInteger(): boolean;
|
53
59
|
/**
|
54
60
|
* Remove a Precision amount of rightmost digits and perform bankers rounding
|
55
61
|
* on the remainder (gaussian rounding) on the digits which have been removed.
|
56
62
|
*/
|
57
|
-
|
58
|
-
|
63
|
+
protected chopPrecisionAndRound(): bigInteger.BigInteger;
|
64
|
+
protected chopPrecisionAndRoundUp(): bigInteger.BigInteger;
|
59
65
|
/**
|
60
66
|
* Similar to chopPrecisionAndRound, but always rounds down
|
61
67
|
*/
|
62
|
-
|
68
|
+
protected chopPrecisionAndTruncate(): bigInteger.BigInteger;
|
63
69
|
toString(prec?: number, locale?: boolean): string;
|
64
70
|
round(): Int;
|
65
71
|
roundUp(): Int;
|
66
72
|
truncate(): Int;
|
73
|
+
roundDec(): Dec;
|
74
|
+
roundUpDec(): Dec;
|
75
|
+
truncateDec(): Dec;
|
67
76
|
}
|
package/build/decimal.js
CHANGED
@@ -15,6 +15,9 @@ class Dec {
|
|
15
15
|
* @param prec - Precision
|
16
16
|
*/
|
17
17
|
constructor(int, prec = 0) {
|
18
|
+
if (typeof int === "number") {
|
19
|
+
int = int.toString();
|
20
|
+
}
|
18
21
|
if (typeof int === "string") {
|
19
22
|
if (int.length === 0) {
|
20
23
|
throw new Error("empty string");
|
@@ -28,9 +31,6 @@ class Dec {
|
|
28
31
|
}
|
29
32
|
this.int = big_integer_1.default(int);
|
30
33
|
}
|
31
|
-
else if (typeof int === "number") {
|
32
|
-
this.int = big_integer_1.default(int);
|
33
|
-
}
|
34
34
|
else if (int instanceof int_1.Int) {
|
35
35
|
this.int = big_integer_1.default(int.toString());
|
36
36
|
}
|
@@ -40,24 +40,30 @@ class Dec {
|
|
40
40
|
else {
|
41
41
|
this.int = big_integer_1.default(int);
|
42
42
|
}
|
43
|
-
this.int = this.int.multiply(Dec.calcPrecisionMultiplier(
|
43
|
+
this.int = this.int.multiply(Dec.calcPrecisionMultiplier(prec));
|
44
|
+
this.checkBitLen();
|
44
45
|
}
|
45
46
|
static calcPrecisionMultiplier(prec) {
|
46
|
-
if (prec
|
47
|
+
if (prec < 0) {
|
47
48
|
throw new Error("Invalid prec");
|
48
49
|
}
|
49
|
-
if (prec
|
50
|
+
if (prec > Dec.precision) {
|
50
51
|
throw new Error("Too much precision");
|
51
52
|
}
|
52
53
|
if (Dec.precisionMultipliers[prec.toString()]) {
|
53
54
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
54
55
|
return Dec.precisionMultipliers[prec.toString()];
|
55
56
|
}
|
56
|
-
const zerosToAdd = Dec.precision
|
57
|
+
const zerosToAdd = Dec.precision - prec;
|
57
58
|
const multiplier = big_integer_1.default(10).pow(zerosToAdd);
|
58
59
|
Dec.precisionMultipliers[prec.toString()] = multiplier;
|
59
60
|
return multiplier;
|
60
61
|
}
|
62
|
+
checkBitLen() {
|
63
|
+
if (this.int.abs().bitLength().gt(Dec.maxDecBitLen)) {
|
64
|
+
throw new Error(`Integer out of range ${this.int.toString()}`);
|
65
|
+
}
|
66
|
+
}
|
61
67
|
isZero() {
|
62
68
|
return this.int.eq(big_integer_1.default(0));
|
63
69
|
}
|
@@ -98,46 +104,63 @@ class Dec {
|
|
98
104
|
* reverse the decimal sign.
|
99
105
|
*/
|
100
106
|
neg() {
|
101
|
-
return new Dec(this.int.negate(), Dec.precision
|
107
|
+
return new Dec(this.int.negate(), Dec.precision);
|
102
108
|
}
|
103
109
|
/**
|
104
110
|
* Returns the absolute value of a decimals.
|
105
111
|
*/
|
106
112
|
abs() {
|
107
|
-
return new Dec(this.int.abs(), Dec.precision
|
113
|
+
return new Dec(this.int.abs(), Dec.precision);
|
108
114
|
}
|
109
115
|
add(d2) {
|
110
|
-
return new Dec(this.int.add(d2.int), Dec.precision
|
116
|
+
return new Dec(this.int.add(d2.int), Dec.precision);
|
111
117
|
}
|
112
118
|
sub(d2) {
|
113
|
-
return new Dec(this.int.subtract(d2.int), Dec.precision
|
119
|
+
return new Dec(this.int.subtract(d2.int), Dec.precision);
|
120
|
+
}
|
121
|
+
pow(n) {
|
122
|
+
if (n.isZero()) {
|
123
|
+
return new Dec(1);
|
124
|
+
}
|
125
|
+
if (n.isNegative()) {
|
126
|
+
return new Dec(1).quo(this.pow(n.abs()));
|
127
|
+
}
|
128
|
+
let base = new Dec(this.int, Dec.precision);
|
129
|
+
let tmp = new Dec(1);
|
130
|
+
for (let i = n; i.gt(new int_1.Int(1)); i = i.div(new int_1.Int(2))) {
|
131
|
+
if (!i.mod(new int_1.Int(2)).isZero()) {
|
132
|
+
tmp = tmp.mul(base);
|
133
|
+
}
|
134
|
+
base = base.mul(base);
|
135
|
+
}
|
136
|
+
return base.mul(tmp);
|
114
137
|
}
|
115
138
|
mul(d2) {
|
116
|
-
return new Dec(this.mulRaw(d2).chopPrecisionAndRound(), Dec.precision
|
139
|
+
return new Dec(this.mulRaw(d2).chopPrecisionAndRound(), Dec.precision);
|
117
140
|
}
|
118
141
|
mulTruncate(d2) {
|
119
|
-
return new Dec(this.mulRaw(d2).chopPrecisionAndTruncate(), Dec.precision
|
142
|
+
return new Dec(this.mulRaw(d2).chopPrecisionAndTruncate(), Dec.precision);
|
120
143
|
}
|
121
144
|
mulRaw(d2) {
|
122
|
-
return new Dec(this.int.multiply(d2.int), Dec.precision
|
145
|
+
return new Dec(this.int.multiply(d2.int), Dec.precision);
|
123
146
|
}
|
124
147
|
quo(d2) {
|
125
|
-
return new Dec(this.quoRaw(d2).chopPrecisionAndRound(), Dec.precision
|
148
|
+
return new Dec(this.quoRaw(d2).chopPrecisionAndRound(), Dec.precision);
|
126
149
|
}
|
127
150
|
quoTruncate(d2) {
|
128
|
-
return new Dec(this.quoRaw(d2).chopPrecisionAndTruncate(), Dec.precision
|
151
|
+
return new Dec(this.quoRaw(d2).chopPrecisionAndTruncate(), Dec.precision);
|
129
152
|
}
|
130
153
|
quoRoundUp(d2) {
|
131
|
-
return new Dec(this.quoRaw(d2).chopPrecisionAndRoundUp(), Dec.precision
|
154
|
+
return new Dec(this.quoRaw(d2).chopPrecisionAndRoundUp(), Dec.precision);
|
132
155
|
}
|
133
156
|
quoRaw(d2) {
|
134
|
-
const precision = Dec.calcPrecisionMultiplier(
|
157
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
135
158
|
// multiply precision twice
|
136
159
|
const mul = this.int.multiply(precision).multiply(precision);
|
137
|
-
return new Dec(mul.divide(d2.int), Dec.precision
|
160
|
+
return new Dec(mul.divide(d2.int), Dec.precision);
|
138
161
|
}
|
139
162
|
isInteger() {
|
140
|
-
const precision = Dec.calcPrecisionMultiplier(
|
163
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
141
164
|
return this.int.remainder(precision).equals(big_integer_1.default(0));
|
142
165
|
}
|
143
166
|
/**
|
@@ -151,7 +174,7 @@ class Dec {
|
|
151
174
|
const choped = absoulteDec.chopPrecisionAndRound();
|
152
175
|
return choped.negate();
|
153
176
|
}
|
154
|
-
const precision = Dec.calcPrecisionMultiplier(
|
177
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
155
178
|
const fivePrecision = precision.divide(big_integer_1.default(2));
|
156
179
|
// Get the truncated quotient and remainder
|
157
180
|
const { quotient, remainder } = this.int.divmod(precision);
|
@@ -183,7 +206,7 @@ class Dec {
|
|
183
206
|
const choped = absoulteDec.chopPrecisionAndTruncate();
|
184
207
|
return choped.negate();
|
185
208
|
}
|
186
|
-
const precision = Dec.calcPrecisionMultiplier(
|
209
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
187
210
|
// Get the truncated quotient and remainder
|
188
211
|
const { quotient, remainder } = this.int.divmod(precision);
|
189
212
|
// If remainder is zero
|
@@ -196,15 +219,15 @@ class Dec {
|
|
196
219
|
* Similar to chopPrecisionAndRound, but always rounds down
|
197
220
|
*/
|
198
221
|
chopPrecisionAndTruncate() {
|
199
|
-
const precision = Dec.calcPrecisionMultiplier(
|
222
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
200
223
|
return this.int.divide(precision);
|
201
224
|
}
|
202
|
-
toString(prec = Dec.precision
|
203
|
-
const precision = Dec.calcPrecisionMultiplier(
|
225
|
+
toString(prec = Dec.precision, locale = false) {
|
226
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
204
227
|
const int = this.int.abs();
|
205
228
|
const { quotient: integer, remainder: fraction } = int.divmod(precision);
|
206
229
|
let fractionStr = fraction.toString(10);
|
207
|
-
for (let i = 0, l = fractionStr.length; i < Dec.precision
|
230
|
+
for (let i = 0, l = fractionStr.length; i < Dec.precision - l; i++) {
|
208
231
|
fractionStr = "0" + fractionStr;
|
209
232
|
}
|
210
233
|
fractionStr = fractionStr.substring(0, prec);
|
@@ -226,8 +249,21 @@ class Dec {
|
|
226
249
|
truncate() {
|
227
250
|
return new int_1.Int(this.chopPrecisionAndTruncate());
|
228
251
|
}
|
252
|
+
roundDec() {
|
253
|
+
return new Dec(this.chopPrecisionAndRound(), 0);
|
254
|
+
}
|
255
|
+
roundUpDec() {
|
256
|
+
return new Dec(this.chopPrecisionAndRoundUp(), 0);
|
257
|
+
}
|
258
|
+
truncateDec() {
|
259
|
+
return new Dec(this.chopPrecisionAndTruncate(), 0);
|
260
|
+
}
|
229
261
|
}
|
230
262
|
exports.Dec = Dec;
|
231
|
-
Dec.precision =
|
263
|
+
Dec.precision = 18;
|
264
|
+
// bytes required to represent the above precision
|
265
|
+
// Ceiling[Log2[999 999 999 999 999 999]]
|
266
|
+
Dec.decimalPrecisionBits = 60;
|
267
|
+
Dec.maxDecBitLen = 256 + Dec.decimalPrecisionBits;
|
232
268
|
Dec.precisionMultipliers = {};
|
233
269
|
//# sourceMappingURL=decimal.js.map
|
package/build/decimal.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decimal.js","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAqC;AACrC,+BAA4B;AAC5B,6CAAyC;AAEzC,MAAa,GAAG;
|
1
|
+
{"version":3,"file":"decimal.js","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAqC;AACrC,+BAA4B;AAC5B,6CAAyC;AAEzC,MAAa,GAAG;IAgCd;;;;;OAKG;IACH,YAAY,GAA+B,EAAE,OAAe,CAAC;QAC3D,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;SACtB;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;aACjC;YACD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACzC,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;aAC5C;YACD,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,GAAG,GAAG,qBAAU,CAAC,GAAG,CAAC,CAAC;SAC5B;aAAM,IAAI,GAAG,YAAY,SAAG,EAAE;YAC7B,IAAI,CAAC,GAAG,GAAG,qBAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvC;aAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAClC,IAAI,CAAC,GAAG,GAAG,qBAAU,CAAC,GAAG,CAAC,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,GAAG,GAAG,qBAAU,CAAC,GAAG,CAAC,CAAC;SAC5B;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAxDS,MAAM,CAAC,uBAAuB,CACtC,IAAY;QAEZ,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;SACjC;QACD,IAAI,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;QACD,IAAI,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;YAC7C,oEAAoE;YACpE,OAAO,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAE,CAAC;SACnD;QAED,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;QACxC,MAAM,UAAU,GAAG,qBAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QACvD,OAAO,UAAU,CAAC;IACpB,CAAC;IAwCS,WAAW;QACnB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACnD,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAChE;IACH,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,EAAO;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,EAAE,CAAC,EAAO;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,EAAO;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,EAAE,CAAC,EAAO;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,EAAO;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,GAAG;QACR,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACI,GAAG;QACR,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAEM,GAAG,CAAC,EAAO;QAChB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAEM,GAAG,CAAC,EAAO;QAChB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAEM,GAAG,CAAC,CAAM;QACf,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;SACnB;QAED,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;YAClB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAC1C;QAED,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,SAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,SAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YACvD,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACrB;YACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACvB;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAEM,GAAG,CAAC,EAAO;QAChB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC;IAEM,WAAW,CAAC,EAAO;QACxB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,wBAAwB,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IAES,MAAM,CAAC,EAAO;QACtB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAEM,GAAG,CAAC,EAAO;QAChB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC;IAEM,WAAW,CAAC,EAAO;QACxB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,wBAAwB,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IAEM,UAAU,CAAC,EAAO;QACvB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,uBAAuB,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3E,CAAC;IAES,MAAM,CAAC,EAAO;QACtB,MAAM,SAAS,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QAEjD,2BAA2B;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7D,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAEM,SAAS;QACd,MAAM,SAAS,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACO,qBAAqB;QAC7B,qDAAqD;QACrD,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;YACnD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;SACxB;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtD,2CAA2C;QAC3C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE3D,uBAAuB;QACvB,IAAI,SAAS,CAAC,MAAM,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,EAAE;YACnC,OAAO,QAAQ,CAAC;SACjB;QAED,IAAI,SAAS,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE;YAC/B,OAAO,QAAQ,CAAC;SACjB;aAAM,IAAI,SAAS,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE;YACtC,OAAO,QAAQ,CAAC,GAAG,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SACpC;aAAM;YACL,iCAAiC;YACjC,IAAI,QAAQ,CAAC,MAAM,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,EAAE;gBACxD,OAAO,QAAQ,CAAC;aACjB;iBAAM;gBACL,OAAO,QAAQ,CAAC,GAAG,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aACpC;SACF;IACH,CAAC;IAES,uBAAuB;QAC/B,qDAAqD;QACrD,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,kCAAkC;YAClC,MAAM,MAAM,GAAG,WAAW,CAAC,wBAAwB,EAAE,CAAC;YACtD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;SACxB;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QAEjD,2CAA2C;QAC3C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE3D,uBAAuB;QACvB,IAAI,SAAS,CAAC,MAAM,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,EAAE;YACnC,OAAO,QAAQ,CAAC;SACjB;QAED,OAAO,QAAQ,CAAC,GAAG,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACO,wBAAwB;QAChC,MAAM,SAAS,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAEM,QAAQ,CACb,OAAe,GAAG,CAAC,SAAS,EAC5B,SAAkB,KAAK;QAEvB,MAAM,SAAS,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEzE,IAAI,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAClE,WAAW,GAAG,GAAG,GAAG,WAAW,CAAC;SACjC;QACD,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAE7C,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,EAAE;YACjB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAU,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QAE3D,MAAM,UAAU,GAAG,MAAM;YACvB,CAAC,CAAC,6DAA6D;gBAC7D,aAAa;gBACb,sBAAS,CAAC,6BAA6B,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC7D,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAEvB,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,GAC1C,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,EAC/C,EAAE,CAAC;IACL,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,SAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,SAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACjD,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAClD,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;;AA7TH,kBA8TC;AA7TwB,aAAS,GAAG,EAAE,CAAC;AACtC,kDAAkD;AAClD,yCAAyC;AACf,wBAAoB,GAAG,EAAE,CAAC;AAC1B,gBAAY,GAAG,GAAG,GAAG,GAAG,CAAC,oBAAoB,CAAC;AAE9C,wBAAoB,GAE1C,EAAE,CAAC"}
|