Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion pkg/test/assembly_bench_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ func Test_AsmBench_Euc(t *testing.T) {
util.CheckWithFields(t, false, "asm/bench/euc", util.ASM_MAX_PADDING, field.BLS12_377)
}
func Test_AsmBench_Exp(t *testing.T) {
//#1226
util.CheckWithFields(t, false, "asm/bench/exp", util.ASM_MAX_PADDING, field.BLS12_377)
}

Expand All @@ -35,6 +36,7 @@ func Test_AsmBench_Gas(t *testing.T) {
}

func Test_AsmBench_Shf(t *testing.T) {
//#1226
util.CheckWithFields(t, false, "asm/bench/shf", util.ASM_MAX_PADDING, field.BLS12_377)
}

Expand All @@ -43,14 +45,14 @@ func Test_AsmBench_Stp(t *testing.T) {
}

func Test_AsmBench_Trm(t *testing.T) {
//#1319
util.CheckWithFields(t, false, "asm/bench/trm", util.ASM_MAX_PADDING, field.BLS12_377)
}

func Test_AsmBench_Bin(t *testing.T) {
util.CheckWithFields(t, false, "asm/bench/bin", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16)
}

// Field Element Out-Of-Bounds
func Test_AsmBench_Wcp(t *testing.T) {
util.CheckWithFields(t, false, "asm/bench/wcp", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16)
}
43 changes: 27 additions & 16 deletions pkg/test/assembly_unit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@ import (
)

func Test_AsmUnit_BitShift(t *testing.T) {
// no need for GF_8209
util.CheckWithFields(t, false, "asm/unit/bit_shift", util.ASM_MAX_PADDING, field.BLS12_377)
}

func Test_AsmUnit_ByteShift(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/byte_shift", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16)
util.CheckWithFields(t, false, "asm/unit/byte_shift", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16, field.GF_8209)
}

func Test_AsmUnit_Counter(t *testing.T) {
Expand All @@ -33,29 +35,33 @@ func Test_AsmUnit_Counter(t *testing.T) {
}

func Test_AsmUnit_Counter256(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/counter256", util.ASM_MAX_PADDING, field.BLS12_377)
util.CheckWithFields(t, false, "asm/unit/counter256", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16,
field.GF_8209, field.GF_251)
}

func Test_AsmUnit_Dec4(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/dec4", util.ASM_MAX_PADDING, field.BLS12_377)
util.CheckWithFields(t, false, "asm/unit/dec4", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16, field.GF_8209)
}

func Test_AsmUnit_Dec251(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/dec251", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16)
util.CheckWithFields(t, false, "asm/unit/dec251", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16, field.GF_8209)
}

func Test_AsmUnit_Diamond(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/diamond", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16)
util.CheckWithFields(t, false, "asm/unit/diamond", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16)
}

func Test_AsmUnit_ParseNonDecimal(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/parse_nondecimal", util.ASM_MAX_PADDING, field.BLS12_377, field.GF_8209,
field.GF_251)
util.CheckWithFields(t, false, "asm/unit/parse_nondecimal", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16, field.GF_8209)
}

func Test_AsmUnit_Diff(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/diff", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16,
field.GF_8209, field.GF_251)
util.CheckWithFields(t, false, "asm/unit/diff", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16, field.GF_8209)
}

func Test_AsmUnit_FastPow(t *testing.T) {
Expand All @@ -73,26 +79,31 @@ func Test_AsmUnit_FnCall_03(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/fncall_03", util.ASM_MAX_PADDING, field.BLS12_377)
}
func Test_AsmUnit_Gf251(t *testing.T) {
util.Check(t, false, "asm/unit/gf251")
util.CheckWithFields(t, false, "asm/unit/gf251", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16)
}

func Test_AsmUnit_Inc(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/inc", util.ASM_MAX_PADDING, field.BLS12_377, field.GF_8209, field.GF_251)
util.CheckWithFields(t, false, "asm/unit/inc", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16, field.GF_8209)
}

func Test_AsmUnit_Max(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/max", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16)
util.CheckWithFields(t, false, "asm/unit/max", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16, field.GF_8209)
}

func Test_AsmUnit_MixedSmall(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/mixed_small", util.ASM_MAX_PADDING, field.BLS12_377)
}
func Test_AsmUnit_MultiLine(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/multiline", util.ASM_MAX_PADDING, field.BLS12_377)
util.CheckWithFields(t, false, "asm/unit/multiline", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16, field.GF_8209)
}

func Test_AsmUnit_MixedLarge(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/mixed_large", util.ASM_MAX_PADDING, field.BLS12_377)
util.CheckWithFields(t, false, "asm/unit/mixed_large", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16)
}

func Test_AsmUnit_RecPow(t *testing.T) {
Expand All @@ -103,6 +114,6 @@ func Test_AsmUnit_SlowPow(t *testing.T) {
}

func Test_AsmUnit_Sub(t *testing.T) {
util.CheckWithFields(t, false, "asm/unit/sub", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16,
field.GF_8209, field.GF_251)
util.CheckWithFields(t, false, "asm/unit/sub", util.ASM_MAX_PADDING, field.BLS12_377,
field.KOALABEAR_16, field.GF_8209)
}
5 changes: 4 additions & 1 deletion pkg/test/assembly_util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,11 @@ func Test_AsmUtil_Byte(t *testing.T) {
util.CheckWithFields(t, false, "asm/util/byte", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16)
}

func Test_AsmUtil_BitSar(t *testing.T) {
util.CheckWithFields(t, false, "asm/util/bit_sar", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16)
}
func Test_AsmUtil_BitShr(t *testing.T) {
util.CheckWithFields(t, false, "asm/util/bit_shr", util.ASM_MAX_PADDING, field.BLS12_377)
util.CheckWithFields(t, false, "asm/util/bit_shr", util.ASM_MAX_PADDING, field.BLS12_377, field.KOALABEAR_16)
}

func Test_AsmUtil_BitShl(t *testing.T) {
Expand Down
29 changes: 13 additions & 16 deletions pkg/test/corset_agnostic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,25 +44,22 @@ func Test_Agnostic_Lookup_02(t *testing.T) {
// util.CheckCorsetNoPadding(t, false, "corset/agnostic/lookup_03", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
// }

//#1258
// func Test_Agnostic_Lookup_04(t *testing.T) {
// util.CheckCorsetNoPadding(t, false, "corset/agnostic/lookup_04", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
// }
func Test_Agnostic_Lookup_04(t *testing.T) {
util.CheckCorsetNoPadding(t, false, "corset/agnostic/lookup_04", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
}

//#1258
// func Test_Agnostic_Lookup_05(t *testing.T) {
// util.CheckCorsetNoPadding(t, false, "corset/agnostic/lookup_05", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
// }
func Test_Agnostic_Lookup_05(t *testing.T) {
util.CheckCorsetNoPadding(t, false, "corset/agnostic/lookup_05", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
}

//#1258
// func Test_Agnostic_Lookup_06(t *testing.T) {
// util.CheckCorsetNoPadding(t, false, "corset/agnostic/lookup_06", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
// }
func Test_Agnostic_Lookup_06(t *testing.T) {
util.CheckCorsetNoPadding(t, false, "corset/agnostic/lookup_06", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
}

//#1258
// func Test_Agnostic_Lookup_07(t *testing.T) {
// util.CheckCorsetNoPadding(t, false, "corset/agnostic/lookup_07", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
// }
// #1258
func Test_Agnostic_Lookup_07(t *testing.T) {
util.CheckCorsetNoPadding(t, false, "corset/agnostic/lookup_07", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
}

func Test_Agnostic_Lookup_08(t *testing.T) {
util.CheckCorsetNoPadding(t, false, "corset/agnostic/lookup_08", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
Expand Down
2 changes: 1 addition & 1 deletion pkg/test/corset_bench_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ func Test_Bench_Euc(t *testing.T) {

func Test_Bench_Oob(t *testing.T) {
// FIXME: KOALABEAR_16 [PERF]
util.CheckCorset(t, true, "corset/bench/oob", field.BLS12_377)
util.CheckCorset(t, true, "corset/bench/oob", field.BLS12_377, field.KOALABEAR_16)
}

func Test_Bench_Stp(t *testing.T) {
Expand Down
3 changes: 1 addition & 2 deletions pkg/test/corset_valid_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -727,8 +727,7 @@ func Test_Valid_Lookup_02(t *testing.T) {
}

func Test_Valid_Lookup_03(t *testing.T) {
// FIXME: GF_8209 [#1258]
util.CheckCorset(t, false, "corset/valid/lookup_03", field.BLS12_377, field.KOALABEAR_16)
util.CheckCorset(t, false, "corset/valid/lookup_03", field.BLS12_377, field.KOALABEAR_16, field.GF_8209)
}

func Test_Valid_Lookup_04(t *testing.T) {
Expand Down
13 changes: 7 additions & 6 deletions testdata/asm/util/bit_sar.zkasm
Original file line number Diff line number Diff line change
Expand Up @@ -132,12 +132,13 @@ fn bit_sar256_u1(word u256, n u1) -> (res u256) {
return
apply:
;; >>> START: workaround #1176
var hi u126
var lo u127
var mid, sign u1
sign, hi, mid, lo, lsw = word
;; determine sign extension
res = (sign*0b11*2^254) + (hi*2^128) + (mid*2^127) + lo
var hi u247
var lo u7
var sign, b u1
;;
sign, hi, lo, b = word
;;
res = (sign*0b11*2^254) + (hi * 2^7) + lo
;; <<< END
return
}
12 changes: 7 additions & 5 deletions testdata/asm/util/bit_shr.zkasm
Original file line number Diff line number Diff line change
Expand Up @@ -134,11 +134,13 @@ fn bit_shr256_u1(word u256, n u1) -> (res u256) {
return
apply:
;; >>> START: workaround #1176
var hi u127
var lo u127
var mid u1
hi, mid, lo, lsw = word
res = (hi * 2^128) + (mid * 2^127) + lo
var hi u248
var lo u7
var b u1
;;
hi, lo, b = word
;;
res = (hi * 2^7) + lo
;; <<< END
return
}
19 changes: 19 additions & 0 deletions testdata/corset/agnostic/lookup_04.bls12_377.rejects
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
;; 2^128=340282366920938463463374607431768211456
;; 2^160=1461501637330902918203684832716283019655932542976
;; 2^256=11579208923731619542357098500868790785326998466564056403945758400791312963993
;;
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
;;
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981] }
{"m1.X": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981] }
;;
{"m1.X": [1461501637330902918203684832716283019655932542970], "m2.Y": [1461501637330902918203684832716283019655932542970] }
{"m1.X": [1461501637330902918203684832716283019655932542971], "m2.Y": [1461501637330902918203684832716283019655932542971] }
{"m1.X": [1461501637330902918203684832716283019655932542972], "m2.Y": [1461501637330902918203684832716283019655932542972] }
{"m1.X": [1461501637330902918203684832716283019655932542973], "m2.Y": [1461501637330902918203684832716283019655932542973] }
{"m1.X": [1461501637330902918203684832716283019655932542974], "m2.Y": [1461501637330902918203684832716283019655932542974] }
{"m1.X": [1461501637330902918203684832716283019655932542975], "m2.Y": [1461501637330902918203684832716283019655932542975] }
16 changes: 0 additions & 16 deletions testdata/corset/agnostic/lookup_04.rejects
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,3 @@
{"m1.X": [340282366920938463463374607431768211451], "m2.Y": [340282366920938463463374607431768211450] }
{"m1.X": [340282366920938463463374607431768211452], "m2.Y": [340282366920938463463374607431768211450] }
{"m1.X": [340282366920938463463374607431768211453], "m2.Y": [340282366920938463463374607431768211452] }
;;
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
;;
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981] }
{"m1.X": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981] }
;;
{"m1.X": [1461501637330902918203684832716283019655932542970], "m2.Y": [1461501637330902918203684832716283019655932542970] }
{"m1.X": [1461501637330902918203684832716283019655932542971], "m2.Y": [1461501637330902918203684832716283019655932542971] }
{"m1.X": [1461501637330902918203684832716283019655932542972], "m2.Y": [1461501637330902918203684832716283019655932542972] }
{"m1.X": [1461501637330902918203684832716283019655932542973], "m2.Y": [1461501637330902918203684832716283019655932542973] }
{"m1.X": [1461501637330902918203684832716283019655932542974], "m2.Y": [1461501637330902918203684832716283019655932542974] }
{"m1.X": [1461501637330902918203684832716283019655932542975], "m2.Y": [1461501637330902918203684832716283019655932542975] }
16 changes: 16 additions & 0 deletions testdata/corset/agnostic/lookup_05.bls12_377.rejects
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
;;
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
;;
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981] }
{"m1.X": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981] }
;;
{"m1.X": [1461501637330902918203684832716283019655932542970], "m2.Y": [1461501637330902918203684832716283019655932542970] }
{"m1.X": [1461501637330902918203684832716283019655932542971], "m2.Y": [1461501637330902918203684832716283019655932542971] }
{"m1.X": [1461501637330902918203684832716283019655932542972], "m2.Y": [1461501637330902918203684832716283019655932542972] }
{"m1.X": [1461501637330902918203684832716283019655932542973], "m2.Y": [1461501637330902918203684832716283019655932542973] }
{"m1.X": [1461501637330902918203684832716283019655932542974], "m2.Y": [1461501637330902918203684832716283019655932542974] }
{"m1.X": [1461501637330902918203684832716283019655932542975], "m2.Y": [1461501637330902918203684832716283019655932542975] }
16 changes: 0 additions & 16 deletions testdata/corset/agnostic/lookup_05.rejects
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,3 @@
{"m1.X": [340282366920938463463374607431768211451], "m2.Y": [340282366920938463463374607431768211450] }
{"m1.X": [340282366920938463463374607431768211452], "m2.Y": [340282366920938463463374607431768211450] }
{"m1.X": [340282366920938463463374607431768211453], "m2.Y": [340282366920938463463374607431768211452] }
;;
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542980] }
;;
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981] }
{"m1.X": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542980] }
{"m1.X": [1461501637330902918203684832716283019655932542979,1461501637330902918203684832716283019655932542981], "m2.Y": [1461501637330902918203684832716283019655932542980,1461501637330902918203684832716283019655932542981] }
;;
{"m1.X": [1461501637330902918203684832716283019655932542970], "m2.Y": [1461501637330902918203684832716283019655932542970] }
{"m1.X": [1461501637330902918203684832716283019655932542971], "m2.Y": [1461501637330902918203684832716283019655932542971] }
{"m1.X": [1461501637330902918203684832716283019655932542972], "m2.Y": [1461501637330902918203684832716283019655932542972] }
{"m1.X": [1461501637330902918203684832716283019655932542973], "m2.Y": [1461501637330902918203684832716283019655932542973] }
{"m1.X": [1461501637330902918203684832716283019655932542974], "m2.Y": [1461501637330902918203684832716283019655932542974] }
{"m1.X": [1461501637330902918203684832716283019655932542975], "m2.Y": [1461501637330902918203684832716283019655932542975] }
Loading