diff --git a/conjure_oxide/tests/integration/basic/abs/01-simple/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/abs/01-simple/input-expected-rule-trace-human.txt index 703aa4bd90..4c5b3cc570 100644 --- a/conjure_oxide/tests/integration/basic/abs/01-simple/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/abs/01-simple/input-expected-rule-trace-human.txt @@ -9,6 +9,12 @@ such that -- +(Sum([|x|, |y|]) = 10), + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) +And([(Sum([|x|, |y|]) <= 10), (Sum([|x|, |y|]) >= 10)]) + +-- + Sum([|x|, |y|]), ~~> flatten_vecop ([("Minion", 4200)]) Sum([__0, __1]) @@ -20,6 +26,12 @@ new constraints: __1 =aux |y| -- +(Sum([__0, __1]) <= 10), + ~~> introduce_sumleq ([("Minion", 4400)]) +SumLeq([__0, __1], 10) + +-- + __0 =aux |x|, ~~> introduce_abseq ([("Minion", 4400)]) AbsEq(__0,x) @@ -32,21 +44,32 @@ AbsEq(__1,y) -- -(Sum([__0, __1]) = 10), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) -And([(Sum([__0, __1]) <= 10), (Sum([__0, __1]) >= 10)]) +Sum([|x|, |y|]), + ~~> flatten_vecop ([("Minion", 4200)]) +Sum([__2, __3]) +new variables: + __2: int(0..5) + __3: int(0..5) +new constraints: + __2 =aux |x| + __3 =aux |y| +-- + +(Sum([__2, __3]) >= 10), + ~~> introduce_sumgeq ([("Minion", 4400)]) +SumGeq([__2, __3], 10) -- -(Sum([__0, __1]) <= 10), - ~~> introduce_sumleq ([("Minion", 4400)]) -SumLeq([__0, __1], 10) +__2 =aux |x|, + ~~> introduce_abseq ([("Minion", 4400)]) +AbsEq(__2,x) -- -(Sum([__0, __1]) >= 10), - ~~> introduce_sumgeq ([("Minion", 4400)]) -SumGeq([__0, __1], 10) +__3 =aux |y|, + ~~> introduce_abseq ([("Minion", 4400)]) +AbsEq(__3,y) -- @@ -56,10 +79,14 @@ find x: int(-5..5) find y: int(-5..5) find __0: int(0..5) find __1: int(0..5) +find __2: int(0..5) +find __3: int(0..5) such that -And([SumLeq([__0, __1], 10), SumGeq([__0, __1], 10)]), +And([SumLeq([__0, __1], 10), SumGeq([__2, __3], 10)]), AbsEq(__0,x), -AbsEq(__1,y) +AbsEq(__1,y), +AbsEq(__2,x), +AbsEq(__3,y) diff --git a/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-minion.solutions.json b/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-minion.solutions.json index db4650a1d0..b47753782d 100644 --- a/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-minion.solutions.json +++ b/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-minion.solutions.json @@ -2,24 +2,32 @@ { "__0": 5, "__1": 5, + "__2": 5, + "__3": 5, "x": -5, "y": -5 }, { "__0": 5, "__1": 5, + "__2": 5, + "__3": 5, "x": -5, "y": 5 }, { "__0": 5, "__1": 5, + "__2": 5, + "__3": 5, "x": 5, "y": -5 }, { "__0": 5, "__1": 5, + "__2": 5, + "__3": 5, "x": 5, "y": 5 } diff --git a/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-rewrite.serialised.json index c4278959b2..6eb63f87d6 100644 --- a/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-rewrite.serialised.json @@ -41,12 +41,12 @@ [ { "Reference": { - "MachineName": 0 + "MachineName": 2 } }, { "Reference": { - "MachineName": 1 + "MachineName": 3 } } ], @@ -95,9 +95,45 @@ } } ] + }, + { + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 2 + } + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 3 + } + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ], - "next_var": 2, + "next_var": 4, "variables": [ [ { @@ -133,6 +169,40 @@ } } ], + [ + { + "MachineName": 2 + }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + 0, + 5 + ] + } + ] + } + } + ], + [ + { + "MachineName": 3 + }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + 0, + 5 + ] + } + ] + } + } + ], [ { "UserName": "x" diff --git a/conjure_oxide/tests/integration/basic/abs/02-neg/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/abs/02-neg/input-expected-rule-trace-human.txt index e94addf01e..a28d72b6c7 100644 --- a/conjure_oxide/tests/integration/basic/abs/02-neg/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/abs/02-neg/input-expected-rule-trace-human.txt @@ -21,6 +21,12 @@ such that -- +(Sum([|x|, |y|]) = 10), + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) +And([(Sum([|x|, |y|]) <= 10), (Sum([|x|, |y|]) >= 10)]) + +-- + Sum([|x|, |y|]), ~~> flatten_vecop ([("Minion", 4200)]) Sum([__0, __1]) @@ -32,6 +38,12 @@ new constraints: __1 =aux |y| -- +(Sum([__0, __1]) <= 10), + ~~> introduce_sumleq ([("Minion", 4400)]) +SumLeq([__0, __1], 10) + +-- + __0 =aux |x|, ~~> introduce_abseq ([("Minion", 4400)]) AbsEq(__0,x) @@ -44,21 +56,32 @@ AbsEq(__1,y) -- -(Sum([__0, __1]) = 10), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) -And([(Sum([__0, __1]) <= 10), (Sum([__0, __1]) >= 10)]) +Sum([|x|, |y|]), + ~~> flatten_vecop ([("Minion", 4200)]) +Sum([__2, __3]) +new variables: + __2: int(0..5) + __3: int(0..5) +new constraints: + __2 =aux |x| + __3 =aux |y| +-- + +(Sum([__2, __3]) >= 10), + ~~> introduce_sumgeq ([("Minion", 4400)]) +SumGeq([__2, __3], 10) -- -(Sum([__0, __1]) <= 10), - ~~> introduce_sumleq ([("Minion", 4400)]) -SumLeq([__0, __1], 10) +__2 =aux |x|, + ~~> introduce_abseq ([("Minion", 4400)]) +AbsEq(__2,x) -- -(Sum([__0, __1]) >= 10), - ~~> introduce_sumgeq ([("Minion", 4400)]) -SumGeq([__0, __1], 10) +__3 =aux |y|, + ~~> introduce_abseq ([("Minion", 4400)]) +AbsEq(__3,y) -- @@ -68,10 +91,14 @@ find x: int(-5..5) find y: int(-5..5) find __0: int(0..5) find __1: int(0..5) +find __2: int(0..5) +find __3: int(0..5) such that -And([SumLeq([__0, __1], 10), SumGeq([__0, __1], 10)]), +And([SumLeq([__0, __1], 10), SumGeq([__2, __3], 10)]), AbsEq(__0,x), -AbsEq(__1,y) +AbsEq(__1,y), +AbsEq(__2,x), +AbsEq(__3,y) diff --git a/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-minion.solutions.json b/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-minion.solutions.json index db4650a1d0..b47753782d 100644 --- a/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-minion.solutions.json +++ b/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-minion.solutions.json @@ -2,24 +2,32 @@ { "__0": 5, "__1": 5, + "__2": 5, + "__3": 5, "x": -5, "y": -5 }, { "__0": 5, "__1": 5, + "__2": 5, + "__3": 5, "x": -5, "y": 5 }, { "__0": 5, "__1": 5, + "__2": 5, + "__3": 5, "x": 5, "y": -5 }, { "__0": 5, "__1": 5, + "__2": 5, + "__3": 5, "x": 5, "y": 5 } diff --git a/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-rewrite.serialised.json index c4278959b2..6eb63f87d6 100644 --- a/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-rewrite.serialised.json @@ -41,12 +41,12 @@ [ { "Reference": { - "MachineName": 0 + "MachineName": 2 } }, { "Reference": { - "MachineName": 1 + "MachineName": 3 } } ], @@ -95,9 +95,45 @@ } } ] + }, + { + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 2 + } + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 3 + } + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ], - "next_var": 2, + "next_var": 4, "variables": [ [ { @@ -133,6 +169,40 @@ } } ], + [ + { + "MachineName": 2 + }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + 0, + 5 + ] + } + ] + } + } + ], + [ + { + "MachineName": 3 + }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + 0, + 5 + ] + } + ] + } + } + ], [ { "UserName": "x" diff --git a/conjure_oxide/tests/integration/basic/abs/03-nested/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/abs/03-nested/input-expected-rule-trace-human.txt index 65309324be..f896b58eb7 100644 --- a/conjure_oxide/tests/integration/basic/abs/03-nested/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/abs/03-nested/input-expected-rule-trace-human.txt @@ -154,6 +154,12 @@ And([(Sum([|Sum([SafeDiv(x, 2), y, -(z)])|, SafeDiv(|y|, 2)]) = 10)]), -- +(Sum([|Sum([SafeDiv(x, 2), y, -(z)])|, SafeDiv(|y|, 2)]) = 10), + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) +And([(Sum([|Sum([SafeDiv(x, 2), y, -(z)])|, SafeDiv(|y|, 2)]) <= 10), (Sum([|Sum([SafeDiv(x, 2), y, -(z)])|, SafeDiv(|y|, 2)]) >= 10)]) + +-- + Sum([|Sum([SafeDiv(x, 2), y, -(z)])|, SafeDiv(|y|, 2)]), ~~> flatten_vecop ([("Minion", 4200)]) Sum([__0, __1]) @@ -165,98 +171,170 @@ new constraints: __1 =aux SafeDiv(|y|, 2) -- +(Sum([__0, __1]) <= 10), + ~~> introduce_sumleq ([("Minion", 4400)]) +SumLeq([__0, __1], 10) + +-- + +Sum([|Sum([SafeDiv(x, 2), y, -(z)])|, SafeDiv(|y|, 2)]), + ~~> flatten_vecop ([("Minion", 4200)]) +Sum([__2, __3]) +new variables: + __2: int(0..10) + __3: int(0..2) +new constraints: + __2 =aux |Sum([SafeDiv(x, 2), y, -(z)])| + __3 =aux SafeDiv(|y|, 2) +-- + +(Sum([__2, __3]) >= 10), + ~~> introduce_sumgeq ([("Minion", 4400)]) +SumGeq([__2, __3], 10) + +-- + |Sum([SafeDiv(x, 2), y, -(z)])|, ~~> flatten_unop ([("Minion", 4200)]) -|__2| +|__4| new variables: - __2: int(-10..8) + __4: int(-10..8) new constraints: - __2 =aux Sum([SafeDiv(x, 2), y, -(z)]) + __4 =aux Sum([SafeDiv(x, 2), y, -(z)]) +-- + +__4 =aux Sum([SafeDiv(x, 2), y, -(z)]), + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) +And([(Sum([SafeDiv(x, 2), y, -(z)]) <= __4), (Sum([SafeDiv(x, 2), y, -(z)]) >= __4)]) + -- -__0 =aux |__2|, +(Sum([SafeDiv(x, 2), y, -(z)]) <= __4), + ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) +FlatWeightedSumLeq([1, 1, -1],[__5, y, z],__4) +new variables: + __5: int(-3..1) +new constraints: + __5 =aux SafeDiv(x, 2) +-- + +(Sum([SafeDiv(x, 2), y, -(z)]) >= __4), + ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) +FlatWeightedSumGeq([1, 1, -1],[__6, y, z],__4) +new variables: + __6: int(-3..1) +new constraints: + __6 =aux SafeDiv(x, 2) +-- + +__0 =aux |__4|, ~~> introduce_abseq ([("Minion", 4400)]) -AbsEq(__0,__2) +AbsEq(__0,__4) -- SafeDiv(|y|, 2), ~~> flatten_binop ([("Minion", 4200)]) -SafeDiv(__3, 2) +SafeDiv(__7, 2) new variables: - __3: int(0..5) + __7: int(0..5) new constraints: - __3 =aux |y| + __7 =aux |y| -- -__3 =aux |y|, +__7 =aux |y|, ~~> introduce_abseq ([("Minion", 4400)]) -AbsEq(__3,y) +AbsEq(__7,y) -- -__1 =aux SafeDiv(__3, 2), +__1 =aux SafeDiv(__7, 2), ~~> introduce_diveq ([("Minion", 4200)]) -DivEq(__3, 2, __1) +DivEq(__7, 2, __1) -- -Sum([SafeDiv(x, 2), y, -(z)]), - ~~> flatten_vecop ([("Minion", 4200)]) -Sum([__4, y, __5]) +|Sum([SafeDiv(x, 2), y, -(z)])|, + ~~> flatten_unop ([("Minion", 4200)]) +|__8| new variables: - __4: int(-3..1) - __5: int(-2..5) + __8: int(-10..8) new constraints: - __4 =aux SafeDiv(x, 2) - __5 =aux -(z) + __8 =aux Sum([SafeDiv(x, 2), y, -(z)]) -- -__5 =aux -(z), - ~~> introduce_minuseq_from_aux_decl ([("Minion", 4400)]) -MinusEq(__5,z) +__8 =aux Sum([SafeDiv(x, 2), y, -(z)]), + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) +And([(Sum([SafeDiv(x, 2), y, -(z)]) <= __8), (Sum([SafeDiv(x, 2), y, -(z)]) >= __8)]) -- -__4 =aux SafeDiv(x, 2), - ~~> introduce_diveq ([("Minion", 4200)]) -DivEq(x, 2, __4) +(Sum([SafeDiv(x, 2), y, -(z)]) <= __8), + ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) +FlatWeightedSumLeq([1, 1, -1],[__9, y, z],__8) +new variables: + __9: int(-3..1) +new constraints: + __9 =aux SafeDiv(x, 2) +-- +(Sum([SafeDiv(x, 2), y, -(z)]) >= __8), + ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) +FlatWeightedSumGeq([1, 1, -1],[__10, y, z],__8) +new variables: + __10: int(-3..1) +new constraints: + __10 =aux SafeDiv(x, 2) -- -(Sum([__0, __1]) = 10), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) -And([(Sum([__0, __1]) <= 10), (Sum([__0, __1]) >= 10)]) +__2 =aux |__8|, + ~~> introduce_abseq ([("Minion", 4400)]) +AbsEq(__2,__8) -- -(Sum([__0, __1]) <= 10), - ~~> introduce_sumleq ([("Minion", 4400)]) -SumLeq([__0, __1], 10) +SafeDiv(|y|, 2), + ~~> flatten_binop ([("Minion", 4200)]) +SafeDiv(__11, 2) +new variables: + __11: int(0..5) +new constraints: + __11 =aux |y| +-- + +__11 =aux |y|, + ~~> introduce_abseq ([("Minion", 4400)]) +AbsEq(__11,y) -- -(Sum([__0, __1]) >= 10), - ~~> introduce_sumgeq ([("Minion", 4400)]) -SumGeq([__0, __1], 10) +__3 =aux SafeDiv(__11, 2), + ~~> introduce_diveq ([("Minion", 4200)]) +DivEq(__11, 2, __3) -- -__2 =aux Sum([__4, y, __5]), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) -And([(Sum([__4, y, __5]) <= __2), (Sum([__4, y, __5]) >= __2)]) +__5 =aux SafeDiv(x, 2), + ~~> introduce_diveq ([("Minion", 4200)]) +DivEq(x, 2, __5) -- -(Sum([__4, y, __5]) <= __2), - ~~> introduce_sumleq ([("Minion", 4400)]) -SumLeq([__4, y, __5], __2) +__6 =aux SafeDiv(x, 2), + ~~> introduce_diveq ([("Minion", 4200)]) +DivEq(x, 2, __6) -- -(Sum([__4, y, __5]) >= __2), - ~~> introduce_sumgeq ([("Minion", 4400)]) -SumGeq([__4, y, __5], __2) +__9 =aux SafeDiv(x, 2), + ~~> introduce_diveq ([("Minion", 4200)]) +DivEq(x, 2, __9) + +-- + +__10 =aux SafeDiv(x, 2), + ~~> introduce_diveq ([("Minion", 4200)]) +DivEq(x, 2, __10) -- @@ -267,18 +345,30 @@ find y: int(-5..2) find z: int(-5..2) find __0: int(0..10) find __1: int(0..2) -find __2: int(-10..8) -find __3: int(0..5) -find __4: int(-3..1) -find __5: int(-2..5) +find __2: int(0..10) +find __3: int(0..2) +find __4: int(-10..8) +find __5: int(-3..1) +find __6: int(-3..1) +find __7: int(0..5) +find __8: int(-10..8) +find __9: int(-3..1) +find __10: int(-3..1) +find __11: int(0..5) such that -And([SumLeq([__0, __1], 10), SumGeq([__0, __1], 10)]), -AbsEq(__0,__2), -DivEq(__3, 2, __1), -And([SumLeq([__4, y, __5], __2), SumGeq([__4, y, __5], __2)]), -AbsEq(__3,y), -DivEq(x, 2, __4), -MinusEq(__5,z) +And([SumLeq([__0, __1], 10), SumGeq([__2, __3], 10)]), +AbsEq(__0,__4), +DivEq(__7, 2, __1), +AbsEq(__2,__8), +DivEq(__11, 2, __3), +And([FlatWeightedSumLeq([1, 1, -1],[__5, y, z],__4), FlatWeightedSumGeq([1, 1, -1],[__6, y, z],__4)]), +DivEq(x, 2, __5), +DivEq(x, 2, __6), +AbsEq(__7,y), +And([FlatWeightedSumLeq([1, 1, -1],[__9, y, z],__8), FlatWeightedSumGeq([1, 1, -1],[__10, y, z],__8)]), +DivEq(x, 2, __9), +DivEq(x, 2, __10), +AbsEq(__11,y) diff --git a/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-minion.solutions.json b/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-minion.solutions.json index 1824f6cb51..0df024822f 100644 --- a/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-minion.solutions.json +++ b/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-minion.solutions.json @@ -2,87 +2,135 @@ { "__0": 8, "__1": 2, - "__2": -8, - "__3": 4, - "__4": -2, - "__5": -2, - "x": -3, - "y": -4, + "__10": -1, + "__11": 5, + "__2": 8, + "__3": 2, + "__4": -8, + "__5": -1, + "__6": -1, + "__7": 5, + "__8": -8, + "__9": -1, + "x": -1, + "y": -5, "z": 2 }, { "__0": 8, "__1": 2, - "__2": -8, - "__3": 4, - "__4": -2, - "__5": -2, - "x": -4, - "y": -4, + "__10": -1, + "__11": 5, + "__2": 8, + "__3": 2, + "__4": -8, + "__5": -1, + "__6": -1, + "__7": 5, + "__8": -8, + "__9": -1, + "x": -2, + "y": -5, "z": 2 }, { "__0": 8, "__1": 2, - "__2": -8, - "__3": 4, - "__4": -3, - "__5": -1, - "x": -5, + "__10": -2, + "__11": 4, + "__2": 8, + "__3": 2, + "__4": -8, + "__5": -2, + "__6": -2, + "__7": 4, + "__8": -8, + "__9": -2, + "x": -3, "y": -4, - "z": 1 + "z": 2 }, { "__0": 8, "__1": 2, - "__2": -8, - "__3": 5, - "__4": -1, + "__10": -2, + "__11": 4, + "__2": 8, + "__3": 2, + "__4": -8, "__5": -2, - "x": -1, - "y": -5, + "__6": -2, + "__7": 4, + "__8": -8, + "__9": -2, + "x": -4, + "y": -4, "z": 2 }, { "__0": 8, "__1": 2, - "__2": -8, - "__3": 5, - "__4": -1, + "__10": -2, + "__11": 5, + "__2": 8, + "__3": 2, + "__4": -8, "__5": -2, - "x": -2, + "__6": -2, + "__7": 5, + "__8": -8, + "__9": -2, + "x": -3, "y": -5, - "z": 2 + "z": 1 }, { "__0": 8, "__1": 2, - "__2": -8, - "__3": 5, - "__4": -2, - "__5": -1, - "x": -3, + "__10": -2, + "__11": 5, + "__2": 8, + "__3": 2, + "__4": -8, + "__5": -2, + "__6": -2, + "__7": 5, + "__8": -8, + "__9": -2, + "x": -4, "y": -5, "z": 1 }, { "__0": 8, "__1": 2, - "__2": -8, - "__3": 5, - "__4": -2, - "__5": -1, - "x": -4, - "y": -5, + "__10": -3, + "__11": 4, + "__2": 8, + "__3": 2, + "__4": -8, + "__5": -3, + "__6": -3, + "__7": 4, + "__8": -8, + "__9": -3, + "x": -5, + "y": -4, "z": 1 }, { "__0": 8, "__1": 2, - "__2": -8, - "__3": 5, - "__4": -3, - "__5": 0, + "__10": -3, + "__11": 5, + "__2": 8, + "__3": 2, + "__4": -8, + "__5": -3, + "__6": -3, + "__7": 5, + "__8": -8, + "__9": -3, "x": -5, "y": -5, "z": 0 diff --git a/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-rewrite.serialised.json index 9c274979cc..0ef8d35135 100644 --- a/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-rewrite.serialised.json @@ -41,12 +41,12 @@ [ { "Reference": { - "MachineName": 0 + "MachineName": 2 } }, { "Reference": { - "MachineName": 1 + "MachineName": 3 } } ], @@ -73,7 +73,7 @@ }, { "Reference": { - "MachineName": 2 + "MachineName": 4 } } ] @@ -86,7 +86,7 @@ }, { "Reference": { - "MachineName": 3 + "MachineName": 7 } }, { @@ -101,6 +101,47 @@ } ] }, + { + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 2 + } + }, + { + "Reference": { + "MachineName": 8 + } + } + ] + }, + { + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 11 + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "MachineName": 3 + } + } + ] + }, { "And": [ { @@ -109,15 +150,26 @@ }, [ { - "FlatSumLeq": [ + "FlatWeightedSumLeq": [ { "clean": false, "etype": null }, + [ + { + "Int": 1 + }, + { + "Int": 1 + }, + { + "Int": -1 + } + ], [ { "Reference": { - "MachineName": 4 + "MachineName": 5 } }, { @@ -127,27 +179,38 @@ }, { "Reference": { - "MachineName": 5 + "UserName": "z" } } ], { "Reference": { - "MachineName": 2 + "MachineName": 4 } } ] }, { - "FlatSumGeq": [ + "FlatWeightedSumGeq": [ { "clean": false, "etype": null }, + [ + { + "Int": 1 + }, + { + "Int": 1 + }, + { + "Int": -1 + } + ], [ { "Reference": { - "MachineName": 4 + "MachineName": 6 } }, { @@ -157,13 +220,13 @@ }, { "Reference": { - "MachineName": 5 + "UserName": "z" } } ], { "Reference": { - "MachineName": 2 + "MachineName": 4 } } ] @@ -171,6 +234,52 @@ ] ] }, + { + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "MachineName": 5 + } + } + ] + }, + { + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "MachineName": 6 + } + } + ] + }, { "FlatAbsEq": [ { @@ -179,7 +288,7 @@ }, { "Reference": { - "MachineName": 3 + "MachineName": 7 } }, { @@ -189,6 +298,121 @@ } ] }, + { + "And": [ + { + "clean": false, + "etype": null + }, + [ + { + "FlatWeightedSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": 1 + }, + { + "Int": 1 + }, + { + "Int": -1 + } + ], + [ + { + "Reference": { + "MachineName": 9 + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Reference": { + "MachineName": 8 + } + } + ] + }, + { + "FlatWeightedSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": 1 + }, + { + "Int": 1 + }, + { + "Int": -1 + } + ], + [ + { + "Reference": { + "MachineName": 10 + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Reference": { + "MachineName": 8 + } + } + ] + } + ] + ] + }, + { + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "MachineName": 9 + } + } + ] + }, { "MinionDivEqUndefZero": [ { @@ -207,31 +431,31 @@ }, { "Reference": { - "MachineName": 4 + "MachineName": 10 } } ] }, { - "FlatMinusEq": [ + "FlatAbsEq": [ { "clean": false, "etype": null }, { "Reference": { - "MachineName": 5 + "MachineName": 11 } }, { "Reference": { - "UserName": "z" + "UserName": "y" } } ] } ], - "next_var": 6, + "next_var": 12, "variables": [ [ { @@ -250,6 +474,40 @@ } } ], + [ + { + "MachineName": 10 + }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + -3, + 1 + ] + } + ] + } + } + ], + [ + { + "MachineName": 11 + }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + 0, + 5 + ] + } + ] + } + } + ], [ { "MachineName": 1 @@ -276,8 +534,8 @@ "IntDomain": [ { "Bounded": [ - -10, - 8 + 0, + 10 ] } ] @@ -294,7 +552,7 @@ { "Bounded": [ 0, - 5 + 2 ] } ] @@ -305,6 +563,23 @@ { "MachineName": 4 }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + -10, + 8 + ] + } + ] + } + } + ], + [ + { + "MachineName": 5 + }, { "domain": { "IntDomain": [ @@ -320,14 +595,31 @@ ], [ { - "MachineName": 5 + "MachineName": 6 + }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + -3, + 1 + ] + } + ] + } + } + ], + [ + { + "MachineName": 7 }, { "domain": { "IntDomain": [ { "Bounded": [ - -2, + 0, 5 ] } @@ -335,6 +627,40 @@ } } ], + [ + { + "MachineName": 8 + }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + -10, + 8 + ] + } + ] + } + } + ], + [ + { + "MachineName": 9 + }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + -3, + 1 + ] + } + ] + } + } + ], [ { "UserName": "x" diff --git a/conjure_oxide/tests/integration/basic/neg/05-sum/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/neg/05-sum/input-expected-rule-trace-human.txt index 538170342c..4df88b9a2d 100644 --- a/conjure_oxide/tests/integration/basic/neg/05-sum/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/neg/05-sum/input-expected-rule-trace-human.txt @@ -10,36 +10,21 @@ such that -- -Sum([-(y), z]), - ~~> flatten_vecop ([("Minion", 4200)]) -Sum([__0, z]) -new variables: - __0: int(-1..1) -new constraints: - __0 =aux -(y) --- - -__0 =aux -(y), - ~~> introduce_minuseq_from_aux_decl ([("Minion", 4400)]) -MinusEq(__0,y) - --- - -(x = Sum([__0, z])), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) -And([(Sum([__0, z]) <= x), (Sum([__0, z]) >= x)]) +(x = Sum([-(y), z])), + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) +And([(Sum([-(y), z]) <= x), (Sum([-(y), z]) >= x)]) -- -(Sum([__0, z]) <= x), - ~~> introduce_sumleq ([("Minion", 4400)]) -SumLeq([__0, z], x) +(Sum([-(y), z]) <= x), + ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) +FlatWeightedSumLeq([-1, 1],[y, z],x) -- -(Sum([__0, z]) >= x), - ~~> introduce_sumgeq ([("Minion", 4400)]) -SumGeq([__0, z], x) +(Sum([-(y), z]) >= x), + ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) +FlatWeightedSumGeq([-1, 1],[y, z],x) -- @@ -48,10 +33,8 @@ Final model: find x: int(1..3) find y: int(-1..1) find z: int(-1..1) -find __0: int(-1..1) such that -And([SumLeq([__0, z], x), SumGeq([__0, z], x)]), -MinusEq(__0,y) +And([FlatWeightedSumLeq([-1, 1],[y, z],x), FlatWeightedSumGeq([-1, 1],[y, z],x)]) diff --git a/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-minion.solutions.json b/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-minion.solutions.json index af9e005879..ced02a4dac 100644 --- a/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-minion.solutions.json +++ b/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-minion.solutions.json @@ -1,18 +1,15 @@ [ { - "__0": 0, "x": 1, - "y": 0, - "z": 1 + "y": -1, + "z": 0 }, { - "__0": 1, "x": 1, - "y": -1, - "z": 0 + "y": 0, + "z": 1 }, { - "__0": 1, "x": 2, "y": -1, "z": 1 diff --git a/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-rewrite.serialised.json index f485e10d58..6972d55349 100644 --- a/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-rewrite.serialised.json @@ -8,15 +8,23 @@ }, [ { - "FlatSumLeq": [ + "FlatWeightedSumLeq": [ { "clean": false, "etype": null }, + [ + { + "Int": -1 + }, + { + "Int": 1 + } + ], [ { "Reference": { - "MachineName": 0 + "UserName": "y" } }, { @@ -33,15 +41,23 @@ ] }, { - "FlatSumGeq": [ + "FlatWeightedSumGeq": [ { "clean": false, "etype": null }, + [ + { + "Int": -1 + }, + { + "Int": 1 + } + ], [ { "Reference": { - "MachineName": 0 + "UserName": "y" } }, { @@ -59,45 +75,10 @@ } ] ] - }, - { - "FlatMinusEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "y" - } - } - ] } ], - "next_var": 1, + "next_var": 0, "variables": [ - [ - { - "MachineName": 0 - }, - { - "domain": { - "IntDomain": [ - { - "Bounded": [ - -1, - 1 - ] - } - ] - } - } - ], [ { "UserName": "x" diff --git a/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input-expected-rule-trace-human.txt index 19fb2450aa..3d31c858eb 100644 --- a/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input-expected-rule-trace-human.txt @@ -54,44 +54,21 @@ a -- -Sum([-(y), -(z), -1, a, b]), - ~~> flatten_vecop ([("Minion", 4200)]) -Sum([__0, __1, -1, a, b]) -new variables: - __0: int(-1..1) - __1: int(-1..1) -new constraints: - __0 =aux -(y) - __1 =aux -(z) --- - -__0 =aux -(y), - ~~> introduce_minuseq_from_aux_decl ([("Minion", 4400)]) -MinusEq(__0,y) - --- - -__1 =aux -(z), - ~~> introduce_minuseq_from_aux_decl ([("Minion", 4400)]) -MinusEq(__1,z) - --- - -(x = Sum([__0, __1, -1, a, b])), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) -And([(Sum([__0, __1, -1, a, b]) <= x), (Sum([__0, __1, -1, a, b]) >= x)]) +(x = Sum([-(y), -(z), -1, a, b])), + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) +And([(Sum([-(y), -(z), -1, a, b]) <= x), (Sum([-(y), -(z), -1, a, b]) >= x)]) -- -(Sum([__0, __1, -1, a, b]) <= x), - ~~> introduce_sumleq ([("Minion", 4400)]) -SumLeq([__0, __1, -1, a, b], x) +(Sum([-(y), -(z), -1, a, b]) <= x), + ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) +FlatWeightedSumLeq([-1, -1, 1, 1, 1],[y, z, -1, a, b],x) -- -(Sum([__0, __1, -1, a, b]) >= x), - ~~> introduce_sumgeq ([("Minion", 4400)]) -SumGeq([__0, __1, -1, a, b], x) +(Sum([-(y), -(z), -1, a, b]) >= x), + ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) +FlatWeightedSumGeq([-1, -1, 1, 1, 1],[y, z, -1, a, b],x) -- @@ -102,12 +79,8 @@ find b: int(-1..1) find x: int(1..3) find y: int(-1..1) find z: int(-1..1) -find __0: int(-1..1) -find __1: int(-1..1) such that -And([SumLeq([__0, __1, -1, a, b], x), SumGeq([__0, __1, -1, a, b], x)]), -MinusEq(__0,y), -MinusEq(__1,z) +And([FlatWeightedSumLeq([-1, -1, 1, 1, 1],[y, z, -1, a, b],x), FlatWeightedSumGeq([-1, -1, 1, 1, 1],[y, z, -1, a, b],x)]) diff --git a/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-minion.solutions.json b/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-minion.solutions.json index 28e94dffc5..72c62c6bd6 100644 --- a/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-minion.solutions.json +++ b/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-minion.solutions.json @@ -1,133 +1,103 @@ [ { - "__0": -1, - "__1": 1, - "a": 1, + "a": -1, "b": 1, "x": 1, - "y": 1, + "y": -1, "z": -1 }, { - "__0": 0, - "__1": 0, - "a": 1, - "b": 1, + "a": 0, + "b": 0, "x": 1, - "y": 0, - "z": 0 + "y": -1, + "z": -1 }, { - "__0": 0, - "__1": 1, "a": 0, "b": 1, "x": 1, - "y": 0, - "z": -1 + "y": -1, + "z": 0 }, { - "__0": 0, - "__1": 1, - "a": 1, - "b": 0, + "a": 0, + "b": 1, "x": 1, "y": 0, "z": -1 }, { - "__0": 0, - "__1": 1, - "a": 1, + "a": 0, "b": 1, "x": 2, - "y": 0, + "y": -1, "z": -1 }, { - "__0": 1, - "__1": -1, "a": 1, - "b": 1, + "b": -1, "x": 1, "y": -1, - "z": 1 + "z": -1 }, { - "__0": 1, - "__1": 0, - "a": 0, - "b": 1, + "a": 1, + "b": 0, "x": 1, "y": -1, "z": 0 }, { - "__0": 1, - "__1": 0, "a": 1, "b": 0, "x": 1, - "y": -1, - "z": 0 + "y": 0, + "z": -1 }, { - "__0": 1, - "__1": 0, "a": 1, - "b": 1, + "b": 0, "x": 2, "y": -1, - "z": 0 + "z": -1 }, { - "__0": 1, - "__1": 1, - "a": -1, + "a": 1, "b": 1, "x": 1, "y": -1, - "z": -1 + "z": 1 }, { - "__0": 1, - "__1": 1, - "a": 0, - "b": 0, + "a": 1, + "b": 1, "x": 1, - "y": -1, - "z": -1 + "y": 0, + "z": 0 }, { - "__0": 1, - "__1": 1, - "a": 0, + "a": 1, "b": 1, - "x": 2, - "y": -1, + "x": 1, + "y": 1, "z": -1 }, { - "__0": 1, - "__1": 1, "a": 1, - "b": -1, - "x": 1, + "b": 1, + "x": 2, "y": -1, - "z": -1 + "z": 0 }, { - "__0": 1, - "__1": 1, "a": 1, - "b": 0, + "b": 1, "x": 2, - "y": -1, + "y": 0, "z": -1 }, { - "__0": 1, - "__1": 1, "a": 1, "b": 1, "x": 3, diff --git a/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-rewrite.serialised.json index 92a464ff14..f809b85124 100644 --- a/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-rewrite.serialised.json @@ -8,20 +8,37 @@ }, [ { - "FlatSumLeq": [ + "FlatWeightedSumLeq": [ { "clean": false, "etype": null }, + [ + { + "Int": -1 + }, + { + "Int": -1 + }, + { + "Int": 1 + }, + { + "Int": 1 + }, + { + "Int": 1 + } + ], [ { "Reference": { - "MachineName": 0 + "UserName": "y" } }, { "Reference": { - "MachineName": 1 + "UserName": "z" } }, { @@ -48,20 +65,37 @@ ] }, { - "FlatSumGeq": [ + "FlatWeightedSumGeq": [ { "clean": false, "etype": null }, + [ + { + "Int": -1 + }, + { + "Int": -1 + }, + { + "Int": 1 + }, + { + "Int": 1 + }, + { + "Int": 1 + } + ], [ { "Reference": { - "MachineName": 0 + "UserName": "y" } }, { "Reference": { - "MachineName": 1 + "UserName": "z" } }, { @@ -89,80 +123,10 @@ } ] ] - }, - { - "FlatMinusEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "FlatMinusEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 1 - } - }, - { - "Reference": { - "UserName": "z" - } - } - ] } ], - "next_var": 2, + "next_var": 0, "variables": [ - [ - { - "MachineName": 0 - }, - { - "domain": { - "IntDomain": [ - { - "Bounded": [ - -1, - 1 - ] - } - ] - } - } - ], - [ - { - "MachineName": 1 - }, - { - "domain": { - "IntDomain": [ - { - "Bounded": [ - -1, - 1 - ] - } - ] - } - } - ], [ { "UserName": "a" diff --git a/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input-expected-rule-trace-human.txt index 5d6e45afd0..a41f1f76d3 100644 --- a/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input-expected-rule-trace-human.txt @@ -19,7 +19,7 @@ Sum([a, b, c, d, e]) -- (Sum([a, b, c, d, e]) = 5), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) And([(Sum([a, b, c, d, e]) <= 5), (Sum([a, b, c, d, e]) >= 5)]) -- diff --git a/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input-expected-rule-trace-human.txt index 3b136688d1..1386298005 100644 --- a/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input-expected-rule-trace-human.txt @@ -50,14 +50,8 @@ new constraints: __0 =aux Sum([x, y, z]) -- -(SafeDiv(__0, a) = 3), - ~~> introduce_diveq ([("Minion", 4200)]) -DivEq(__0, a, 3) - --- - __0 =aux Sum([x, y, z]), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) And([(Sum([x, y, z]) <= __0), (Sum([x, y, z]) >= __0)]) -- @@ -74,6 +68,12 @@ SumGeq([x, y, z], __0) -- +(SafeDiv(__0, a) = 3), + ~~> introduce_diveq ([("Minion", 4200)]) +DivEq(__0, a, 3) + +-- + Final model: find a: int(3..5) diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input-expected-rule-trace-human.txt index 3784b7b1fa..b809d580ba 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input-expected-rule-trace-human.txt @@ -9,44 +9,21 @@ such that -- -Sum([Product([2, x]), Product([3, y])]), - ~~> flatten_vecop ([("Minion", 4200)]) -Sum([__0, __1]) -new variables: - __0: int(4..8) - __1: int(6..12) -new constraints: - __0 =aux Product([2, x]) - __1 =aux Product([3, y]) --- - -__0 =aux Product([2, x]), - ~~> introduce_producteq ([("Minion", 4200)]) -FlatProductEq(x,2,__0) - --- - -__1 =aux Product([3, y]), - ~~> introduce_producteq ([("Minion", 4200)]) -FlatProductEq(y,3,__1) - --- - -(Sum([__0, __1]) = 12), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) -And([(Sum([__0, __1]) <= 12), (Sum([__0, __1]) >= 12)]) +(Sum([Product([2, x]), Product([3, y])]) = 12), + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) +And([(Sum([Product([2, x]), Product([3, y])]) <= 12), (Sum([Product([2, x]), Product([3, y])]) >= 12)]) -- -(Sum([__0, __1]) <= 12), - ~~> introduce_sumleq ([("Minion", 4400)]) -SumLeq([__0, __1], 12) +(Sum([Product([2, x]), Product([3, y])]) <= 12), + ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) +FlatWeightedSumLeq([2, 3],[x, y],12) -- -(Sum([__0, __1]) >= 12), - ~~> introduce_sumgeq ([("Minion", 4400)]) -SumGeq([__0, __1], 12) +(Sum([Product([2, x]), Product([3, y])]) >= 12), + ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) +FlatWeightedSumGeq([2, 3],[x, y],12) -- @@ -54,12 +31,8 @@ Final model: find x: int(2..4) find y: int(2..4) -find __0: int(4..8) -find __1: int(6..12) such that -And([SumLeq([__0, __1], 12), SumGeq([__0, __1], 12)]), -FlatProductEq(x,2,__0), -FlatProductEq(y,3,__1) +And([FlatWeightedSumLeq([2, 3],[x, y],12), FlatWeightedSumGeq([2, 3],[x, y],12)]) diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-minion.solutions.json b/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-minion.solutions.json index beb6ca9f54..66ae46904e 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-minion.solutions.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-minion.solutions.json @@ -1,7 +1,5 @@ [ { - "__0": 6, - "__1": 6, "x": 3, "y": 2 } diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-rewrite.serialised.json index b38d49f747..88144c1def 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-rewrite.serialised.json @@ -8,20 +8,28 @@ }, [ { - "FlatSumLeq": [ + "FlatWeightedSumLeq": [ { "clean": false, "etype": null }, + [ + { + "Int": 2 + }, + { + "Int": 3 + } + ], [ { "Reference": { - "MachineName": 0 + "UserName": "x" } }, { "Reference": { - "MachineName": 1 + "UserName": "y" } } ], @@ -33,20 +41,28 @@ ] }, { - "FlatSumGeq": [ + "FlatWeightedSumGeq": [ { "clean": false, "etype": null }, + [ + { + "Int": 2 + }, + { + "Int": 3 + } + ], [ { "Reference": { - "MachineName": 0 + "UserName": "x" } }, { "Reference": { - "MachineName": 1 + "UserName": "y" } } ], @@ -59,90 +75,10 @@ } ] ] - }, - { - "FlatProductEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "FlatProductEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 3 - } - }, - { - "Reference": { - "MachineName": 1 - } - } - ] } ], - "next_var": 2, + "next_var": 0, "variables": [ - [ - { - "MachineName": 0 - }, - { - "domain": { - "IntDomain": [ - { - "Bounded": [ - 4, - 8 - ] - } - ] - } - } - ], - [ - { - "MachineName": 1 - }, - { - "domain": { - "IntDomain": [ - { - "Bounded": [ - 6, - 12 - ] - } - ] - } - } - ], [ { "UserName": "x" diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input-expected-rule-trace-human.txt index 524fc5087b..c6358d2e03 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input-expected-rule-trace-human.txt @@ -11,13 +11,13 @@ find h: int(2..10) such that -(Sum([Sum([Sum([Sum([a, Product([2, b])]), Product([Product([3, c]), d])]), UnsafeDiv(e, f)]), Product([5, UnsafeDiv(g, h)])]) <= 18) +(Sum([Sum([Sum([Sum([Sum([Sum([Product([2, a]), Product([2, b])]), Product([Product([3, c]), d])]), UnsafeDiv(e, f)]), Product([6, UnsafeDiv(g, h)])]), -(a)]), -(UnsafeDiv(g, h))]) <= 18) -- -Sum([Sum([Sum([Sum([a, Product([2, b])]), Product([Product([3, c]), d])]), UnsafeDiv(e, f)]), Product([5, UnsafeDiv(g, h)])]), +Sum([Sum([Sum([Sum([Sum([Sum([Product([2, a]), Product([2, b])]), Product([Product([3, c]), d])]), UnsafeDiv(e, f)]), Product([6, UnsafeDiv(g, h)])]), -(a)]), -(UnsafeDiv(g, h))]), ~~> normalise_associative_commutative ([("Base", 8900)]) -Sum([a, Product([2, b]), Product([Product([3, c]), d]), UnsafeDiv(e, f), Product([5, UnsafeDiv(g, h)])]) +Sum([Product([2, a]), Product([2, b]), Product([Product([3, c]), d]), UnsafeDiv(e, f), Product([6, UnsafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) -- @@ -33,21 +33,21 @@ UnsafeDiv(e, f), -- -Sum([a, Product([2, b]), Product([3, c, d]), {SafeDiv(e, f) @ (f != 0)}, Product([5, UnsafeDiv(g, h)])]), +Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), {SafeDiv(e, f) @ (f != 0)}, Product([6, UnsafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]), ~~> bubble_up ([("Bubble", 8900)]) -{Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, UnsafeDiv(g, h)])]) @ And([(f != 0)])} +{Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, UnsafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) @ And([(f != 0)])} -- -({Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, UnsafeDiv(g, h)])]) @ And([(f != 0)])} <= 18), +({Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, UnsafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) @ And([(f != 0)])} <= 18), ~~> bubble_up ([("Bubble", 8900)]) -{(Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, UnsafeDiv(g, h)])]) <= 18) @ And([And([(f != 0)])])} +{(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, UnsafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) <= 18) @ And([And([(f != 0)])])} -- -{(Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, UnsafeDiv(g, h)])]) <= 18) @ And([And([(f != 0)])])}, +{(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, UnsafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) <= 18) @ And([And([(f != 0)])])}, ~~> expand_bubble ([("Bubble", 8900)]) -And([(Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, UnsafeDiv(g, h)])]) <= 18), And([And([(f != 0)])])]) +And([(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, UnsafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) <= 18), And([And([(f != 0)])])]) -- @@ -69,47 +69,85 @@ UnsafeDiv(g, h), -- -Product([5, {SafeDiv(g, h) @ (h != 0)}]), +Product([6, {SafeDiv(g, h) @ (h != 0)}]), ~~> bubble_up ([("Bubble", 8900)]) -{Product([5, SafeDiv(g, h)]) @ And([(h != 0)])} +{Product([6, SafeDiv(g, h)]) @ And([(h != 0)])} -- -Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), {Product([5, SafeDiv(g, h)]) @ And([(h != 0)])}]), +Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), {Product([6, SafeDiv(g, h)]) @ And([(h != 0)])}, -(a), -(UnsafeDiv(g, h))]), ~~> bubble_up ([("Bubble", 8900)]) -{Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, SafeDiv(g, h)])]) @ And([And([(h != 0)])])} +{Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) @ And([And([(h != 0)])])} -- -({Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, SafeDiv(g, h)])]) @ And([And([(h != 0)])])} <= 18), +({Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) @ And([And([(h != 0)])])} <= 18), ~~> bubble_up ([("Bubble", 8900)]) -{(Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, SafeDiv(g, h)])]) <= 18) @ And([And([And([(h != 0)])])])} +{(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) <= 18) @ And([And([And([(h != 0)])])])} -- -{(Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, SafeDiv(g, h)])]) <= 18) @ And([And([And([(h != 0)])])])}, +{(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) <= 18) @ And([And([And([(h != 0)])])])}, ~~> expand_bubble ([("Bubble", 8900)]) -And([(Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, SafeDiv(g, h)])]) <= 18), And([And([And([(h != 0)])])])]) +And([(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) <= 18), And([And([And([(h != 0)])])])]) -- -And([And([(Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, SafeDiv(g, h)])]) <= 18), And([And([And([(h != 0)])])])]), (f != 0)]), +And([And([(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) <= 18), And([And([And([(h != 0)])])])]), (f != 0)]), ~~> normalise_associative_commutative ([("Base", 8900)]) -And([(Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, SafeDiv(g, h)])]) <= 18), (h != 0), (f != 0)]) +And([(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(UnsafeDiv(g, h))]) <= 18), (h != 0), (f != 0)]) -- -(Sum([a, Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([5, SafeDiv(g, h)])]) <= 18), +UnsafeDiv(g, h), + ~~> div_to_bubble ([("Bubble", 6000)]) +{SafeDiv(g, h) @ (h != 0)} + +-- + +-({SafeDiv(g, h) @ (h != 0)}), + ~~> bubble_up ([("Bubble", 8900)]) +{-(SafeDiv(g, h)) @ And([(h != 0)])} + +-- + +Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), {-(SafeDiv(g, h)) @ And([(h != 0)])}]), + ~~> bubble_up ([("Bubble", 8900)]) +{Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(SafeDiv(g, h))]) @ And([And([(h != 0)])])} + +-- + +({Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(SafeDiv(g, h))]) @ And([And([(h != 0)])])} <= 18), + ~~> bubble_up ([("Bubble", 8900)]) +{(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(SafeDiv(g, h))]) <= 18) @ And([And([And([(h != 0)])])])} + +-- + +{(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(SafeDiv(g, h))]) <= 18) @ And([And([And([(h != 0)])])])}, + ~~> expand_bubble ([("Bubble", 8900)]) +And([(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(SafeDiv(g, h))]) <= 18), And([And([And([(h != 0)])])])]) + +-- + +And([And([(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(SafeDiv(g, h))]) <= 18), And([And([And([(h != 0)])])])]), (h != 0), (f != 0)]), + ~~> normalise_associative_commutative ([("Base", 8900)]) +And([(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(SafeDiv(g, h))]) <= 18), (h != 0), (h != 0), (f != 0)]) + +-- + +(Sum([Product([2, a]), Product([2, b]), Product([3, c, d]), SafeDiv(e, f), Product([6, SafeDiv(g, h)]), -(a), -(SafeDiv(g, h))]) <= 18), ~~> introduce_weighted_sumleq_sumgeq ([("Minion", 4500)]) -FlatWeightedSumLeq([1, 2, 3, 1, 5],[a, b, __0, __1, __2],18) +FlatWeightedSumLeq([2, 2, 3, 1, 6, -1, -1],[a, b, __0, __1, __2, a, __3],18) new variables: __0: int(4..100) __1: int(0..5) __2: int(0..5) + __3: int(0..5) new constraints: __0 =aux Product([c, d]) __1 =aux SafeDiv(e, f) __2 =aux SafeDiv(g, h) + __3 =aux SafeDiv(g, h) -- __0 =aux Product([c, d]), @@ -130,6 +168,12 @@ DivEq(g, h, __2) -- +__3 =aux SafeDiv(g, h), + ~~> introduce_diveq ([("Minion", 4200)]) +DivEq(g, h, __3) + +-- + Final model: find a: int(2..10) @@ -143,11 +187,13 @@ find h: int(2..10) find __0: int(4..100) find __1: int(0..5) find __2: int(0..5) +find __3: int(0..5) such that -And([FlatWeightedSumLeq([1, 2, 3, 1, 5],[a, b, __0, __1, __2],18), (h != 0), (f != 0)]), +And([FlatWeightedSumLeq([2, 2, 3, 1, 6, -1, -1],[a, b, __0, __1, __2, a, __3],18), (h != 0), (h != 0), (f != 0)]), FlatProductEq(d,c,__0), DivEq(e, f, __1), -DivEq(g, h, __2) +DivEq(g, h, __2), +DivEq(g, h, __3) diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.eprime b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.eprime index 510f512fe1..cab4b1d00d 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.eprime +++ b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.eprime @@ -5,4 +5,4 @@ find a,b,c,d,e,f,g,h: int(2..10) $ all the terms below should go into a single weighted sum such that -a + 2*b + 3*c*d + (e/f) + 5 * (g/h) <= 18 +2 * a + 2*b + 3*c*d + (e/f) + 6 * (g/h) + (-a) + -(g/h) <= 18 diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-minion.solutions.json b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-minion.solutions.json index 3857fa88e3..05318f9b60 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-minion.solutions.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-minion.solutions.json @@ -3,6 +3,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16,6 +17,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -29,6 +31,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -42,6 +45,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -55,6 +59,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -68,6 +73,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -81,6 +87,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -94,6 +101,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -107,6 +115,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -120,6 +129,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -133,6 +143,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -146,6 +157,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -159,6 +171,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -172,6 +185,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -185,6 +199,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -198,6 +213,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -211,6 +227,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -224,6 +241,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -237,6 +255,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -250,6 +269,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -263,6 +283,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -276,6 +297,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -289,6 +311,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -302,6 +325,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -315,6 +339,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -328,6 +353,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -341,6 +367,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -354,6 +381,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -367,6 +395,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -380,6 +409,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -393,6 +423,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -406,6 +437,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -419,6 +451,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -432,6 +465,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -445,6 +479,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -458,6 +493,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -471,6 +507,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -484,6 +521,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -497,6 +535,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -510,6 +549,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -523,6 +563,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -536,6 +577,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -549,6 +591,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -562,6 +605,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -575,6 +619,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -588,6 +633,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -601,6 +647,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -614,6 +661,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -627,6 +675,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -640,6 +689,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -653,6 +703,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -666,6 +717,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -679,6 +731,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -692,6 +745,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -705,6 +759,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -718,6 +773,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -731,6 +787,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -744,6 +801,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -757,6 +815,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -770,6 +829,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -783,6 +843,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -796,6 +857,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -809,6 +871,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -822,6 +885,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -835,6 +899,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -848,6 +913,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -861,6 +927,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -874,6 +941,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -887,6 +955,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -900,6 +969,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -913,6 +983,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -926,6 +997,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -939,6 +1011,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -952,6 +1025,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -965,6 +1039,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -978,6 +1053,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -991,6 +1067,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1004,6 +1081,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1017,6 +1095,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1030,6 +1109,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1043,6 +1123,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1056,6 +1137,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1069,6 +1151,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1082,6 +1165,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1095,6 +1179,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1108,6 +1193,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1121,6 +1207,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1134,6 +1221,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1147,6 +1235,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1160,6 +1249,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1173,6 +1263,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1186,6 +1277,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1199,6 +1291,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1212,6 +1305,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1225,6 +1319,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1238,6 +1333,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1251,6 +1347,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1264,6 +1361,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1277,6 +1375,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1290,6 +1389,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1303,6 +1403,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1316,6 +1417,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1329,6 +1431,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1342,6 +1445,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1355,6 +1459,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1368,6 +1473,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1381,6 +1487,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1394,6 +1501,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1407,6 +1515,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1420,6 +1529,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1433,6 +1543,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1446,6 +1557,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1459,6 +1571,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1472,6 +1585,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1485,6 +1599,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1498,6 +1613,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1511,6 +1627,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1524,6 +1641,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1537,6 +1655,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1550,6 +1669,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1563,6 +1683,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1576,6 +1697,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1589,6 +1711,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1602,6 +1725,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1615,6 +1739,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1628,6 +1753,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1641,6 +1767,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1654,6 +1781,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1667,6 +1795,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1680,6 +1809,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1693,6 +1823,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1706,6 +1837,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1719,6 +1851,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1732,6 +1865,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1745,6 +1879,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1758,6 +1893,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1771,6 +1907,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1784,6 +1921,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1797,6 +1935,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1810,6 +1949,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1823,6 +1963,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1836,6 +1977,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1849,6 +1991,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1862,6 +2005,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1875,6 +2019,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1888,6 +2033,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1901,6 +2047,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1914,6 +2061,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1927,6 +2075,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1940,6 +2089,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1953,6 +2103,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1966,6 +2117,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1979,6 +2131,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -1992,6 +2145,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2005,6 +2159,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2018,6 +2173,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2031,6 +2187,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2044,6 +2201,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2057,6 +2215,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2070,6 +2229,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2083,6 +2243,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2096,6 +2257,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2109,6 +2271,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2122,6 +2285,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2135,6 +2299,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2148,6 +2313,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2161,6 +2327,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2174,6 +2341,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2187,6 +2355,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2200,6 +2369,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2213,6 +2383,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2226,6 +2397,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2239,6 +2411,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2252,6 +2425,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2265,6 +2439,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2278,6 +2453,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2291,6 +2467,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2304,6 +2481,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2317,6 +2495,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2330,6 +2509,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2343,6 +2523,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2356,6 +2537,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2369,6 +2551,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2382,6 +2565,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2395,6 +2579,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2408,6 +2593,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2421,6 +2607,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2434,6 +2621,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2447,6 +2635,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2460,6 +2649,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2473,6 +2663,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2486,6 +2677,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2499,6 +2691,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2512,6 +2705,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2525,6 +2719,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2538,6 +2733,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2551,6 +2747,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2564,6 +2761,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2577,6 +2775,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2590,6 +2789,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2603,6 +2803,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2616,6 +2817,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2629,6 +2831,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2642,6 +2845,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2655,6 +2859,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2668,6 +2873,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2681,6 +2887,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2694,6 +2901,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2707,6 +2915,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2720,6 +2929,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2733,6 +2943,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2746,6 +2957,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2759,6 +2971,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2772,6 +2985,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2785,6 +2999,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2798,6 +3013,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2811,6 +3027,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2824,6 +3041,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2837,6 +3055,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2850,6 +3069,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2863,6 +3083,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2876,6 +3097,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2889,6 +3111,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2902,6 +3125,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2915,6 +3139,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2928,6 +3153,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2941,6 +3167,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2954,6 +3181,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2967,6 +3195,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2980,6 +3209,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -2993,6 +3223,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3006,6 +3237,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3019,6 +3251,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3032,6 +3265,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3045,6 +3279,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3058,6 +3293,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3071,6 +3307,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3084,6 +3321,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3097,6 +3335,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3110,6 +3349,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3123,6 +3363,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3136,6 +3377,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3149,6 +3391,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3162,6 +3405,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3175,6 +3419,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3188,6 +3433,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3201,6 +3447,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3214,6 +3461,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3227,6 +3475,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3240,6 +3489,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3253,6 +3503,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3266,6 +3517,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3279,6 +3531,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3292,6 +3545,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3305,6 +3559,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3318,6 +3573,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3331,6 +3587,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3344,6 +3601,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3357,6 +3615,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3370,6 +3629,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3383,6 +3643,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3396,6 +3657,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3409,6 +3671,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3422,6 +3685,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3435,6 +3699,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3448,6 +3713,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3461,6 +3727,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3474,6 +3741,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3487,6 +3755,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3500,6 +3769,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3513,6 +3783,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3526,6 +3797,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3539,6 +3811,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3552,6 +3825,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3565,6 +3839,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3578,6 +3853,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3591,6 +3867,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3604,6 +3881,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3617,6 +3895,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3630,6 +3909,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3643,6 +3923,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3656,6 +3937,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3669,6 +3951,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3682,6 +3965,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3695,6 +3979,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3708,6 +3993,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3721,6 +4007,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3734,6 +4021,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3747,6 +4035,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3760,6 +4049,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3773,6 +4063,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3786,6 +4077,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3799,6 +4091,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3812,6 +4105,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3825,6 +4119,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3838,6 +4133,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3851,6 +4147,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3864,6 +4161,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3877,6 +4175,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3890,6 +4189,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3903,6 +4203,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3916,6 +4217,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3929,6 +4231,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3942,6 +4245,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3955,6 +4259,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3968,6 +4273,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3981,6 +4287,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -3994,6 +4301,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4007,6 +4315,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4020,6 +4329,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4033,6 +4343,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4046,6 +4357,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4059,6 +4371,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4072,6 +4385,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4085,6 +4399,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4098,6 +4413,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4111,6 +4427,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4124,6 +4441,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4137,6 +4455,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4150,6 +4469,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4163,6 +4483,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4176,6 +4497,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4189,6 +4511,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4202,6 +4525,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4215,6 +4539,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4228,6 +4553,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4241,6 +4567,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4254,6 +4581,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4267,6 +4595,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4280,6 +4609,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4293,6 +4623,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4306,6 +4637,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4319,6 +4651,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4332,6 +4665,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4345,6 +4679,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4358,6 +4693,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4371,6 +4707,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4384,6 +4721,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4397,6 +4735,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4410,6 +4749,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4423,6 +4763,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4436,6 +4777,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4449,6 +4791,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4462,6 +4805,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4475,6 +4819,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4488,6 +4833,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4501,6 +4847,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4514,6 +4861,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4527,6 +4875,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4540,6 +4889,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4553,6 +4903,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4566,6 +4917,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4579,6 +4931,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4592,6 +4945,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4605,6 +4959,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4618,6 +4973,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4631,6 +4987,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4644,6 +5001,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4657,6 +5015,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4670,6 +5029,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4683,6 +5043,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4696,6 +5057,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4709,6 +5071,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4722,6 +5085,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4735,6 +5099,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4748,6 +5113,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4761,6 +5127,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4774,6 +5141,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4787,6 +5155,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4800,6 +5169,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4813,6 +5183,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4826,6 +5197,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4839,6 +5211,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4852,6 +5225,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4865,6 +5239,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4878,6 +5253,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4891,6 +5267,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4904,6 +5281,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4917,6 +5295,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4930,6 +5309,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4943,6 +5323,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4956,6 +5337,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4969,6 +5351,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4982,6 +5365,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -4995,6 +5379,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5008,6 +5393,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5021,6 +5407,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5034,6 +5421,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5047,6 +5435,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5060,6 +5449,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5073,6 +5463,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5086,6 +5477,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5099,6 +5491,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5112,6 +5505,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5125,6 +5519,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5138,6 +5533,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5151,6 +5547,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5164,6 +5561,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5177,6 +5575,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5190,6 +5589,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5203,6 +5603,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5216,6 +5617,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5229,6 +5631,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5242,6 +5645,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5255,6 +5659,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5268,6 +5673,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5281,6 +5687,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5294,6 +5701,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5307,6 +5715,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5320,6 +5729,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5333,6 +5743,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5346,6 +5757,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5359,6 +5771,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5372,6 +5785,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5385,6 +5799,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5398,6 +5813,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5411,6 +5827,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5424,6 +5841,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5437,6 +5855,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5450,6 +5869,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5463,6 +5883,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5476,6 +5897,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5489,6 +5911,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5502,6 +5925,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5515,6 +5939,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5528,6 +5953,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5541,6 +5967,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5554,6 +5981,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5567,6 +5995,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5580,6 +6009,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5593,6 +6023,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5606,6 +6037,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5619,6 +6051,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5632,6 +6065,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5645,6 +6079,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5658,6 +6093,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5671,6 +6107,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5684,6 +6121,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5697,6 +6135,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5710,6 +6149,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5723,6 +6163,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5736,6 +6177,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5749,6 +6191,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5762,6 +6205,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5775,6 +6219,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5788,6 +6233,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5801,6 +6247,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5814,6 +6261,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5827,6 +6275,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5840,6 +6289,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5853,6 +6303,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5866,6 +6317,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5879,6 +6331,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5892,6 +6345,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5905,6 +6359,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5918,6 +6373,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5931,6 +6387,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5944,6 +6401,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5957,6 +6415,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5970,6 +6429,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5983,6 +6443,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -5996,6 +6457,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6009,6 +6471,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6022,6 +6485,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6035,6 +6499,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6048,6 +6513,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6061,6 +6527,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6074,6 +6541,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6087,6 +6555,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6100,6 +6569,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6113,6 +6583,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6126,6 +6597,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6139,6 +6611,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6152,6 +6625,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6165,6 +6639,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6178,6 +6653,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6191,6 +6667,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6204,6 +6681,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6217,6 +6695,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6230,6 +6709,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6243,6 +6723,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6256,6 +6737,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6269,6 +6751,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6282,6 +6765,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6295,6 +6779,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6308,6 +6793,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6321,6 +6807,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6334,6 +6821,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6347,6 +6835,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6360,6 +6849,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6373,6 +6863,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6386,6 +6877,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6399,6 +6891,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6412,6 +6905,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6425,6 +6919,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6438,6 +6933,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6451,6 +6947,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6464,6 +6961,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6477,6 +6975,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6490,6 +6989,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6503,6 +7003,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6516,6 +7017,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6529,6 +7031,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6542,6 +7045,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6555,6 +7059,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6568,6 +7073,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6581,6 +7087,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6594,6 +7101,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6607,6 +7115,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6620,6 +7129,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6633,6 +7143,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6646,6 +7157,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6659,6 +7171,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6672,6 +7185,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6685,6 +7199,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6698,6 +7213,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6711,6 +7227,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6724,6 +7241,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6737,6 +7255,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6750,6 +7269,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6763,6 +7283,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6776,6 +7297,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6789,6 +7311,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6802,6 +7325,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6815,6 +7339,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6828,6 +7353,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6841,6 +7367,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6854,6 +7381,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6867,6 +7395,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6880,6 +7409,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6893,6 +7423,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6906,6 +7437,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6919,6 +7451,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6932,6 +7465,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6945,6 +7479,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6958,6 +7493,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6971,6 +7507,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6984,6 +7521,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -6997,6 +7535,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7010,6 +7549,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7023,6 +7563,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7036,6 +7577,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7049,6 +7591,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7062,6 +7605,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7075,6 +7619,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7088,6 +7633,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7101,6 +7647,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7114,6 +7661,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7127,6 +7675,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7140,6 +7689,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7153,6 +7703,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7166,6 +7717,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7179,6 +7731,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7192,6 +7745,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7205,6 +7759,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7218,6 +7773,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7231,6 +7787,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7244,6 +7801,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7257,6 +7815,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7270,6 +7829,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7283,6 +7843,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7296,6 +7857,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7309,6 +7871,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7322,6 +7885,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7335,6 +7899,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7348,6 +7913,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7361,6 +7927,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7374,6 +7941,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7387,6 +7955,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7400,6 +7969,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7413,6 +7983,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7426,6 +7997,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7439,6 +8011,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7452,6 +8025,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7465,6 +8039,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7478,6 +8053,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7491,6 +8067,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7504,6 +8081,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7517,6 +8095,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7530,6 +8109,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7543,6 +8123,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7556,6 +8137,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7569,6 +8151,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7582,6 +8165,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7595,6 +8179,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7608,6 +8193,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7621,6 +8207,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7634,6 +8221,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7647,6 +8235,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7660,6 +8249,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7673,6 +8263,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7686,6 +8277,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7699,6 +8291,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7712,6 +8305,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7725,6 +8319,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7738,6 +8333,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7751,6 +8347,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7764,6 +8361,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7777,6 +8375,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7790,6 +8389,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7803,6 +8403,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7816,6 +8417,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7829,6 +8431,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7842,6 +8445,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7855,6 +8459,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7868,6 +8473,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7881,6 +8487,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7894,6 +8501,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7907,6 +8515,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7920,6 +8529,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7933,6 +8543,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7946,6 +8557,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7959,6 +8571,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7972,6 +8585,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7985,6 +8599,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -7998,6 +8613,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8011,6 +8627,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8024,6 +8641,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8037,6 +8655,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8050,6 +8669,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8063,6 +8683,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8076,6 +8697,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8089,6 +8711,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8102,6 +8725,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8115,6 +8739,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8128,6 +8753,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8141,6 +8767,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8154,6 +8781,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8167,6 +8795,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8180,6 +8809,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8193,6 +8823,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8206,6 +8837,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8219,6 +8851,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8232,6 +8865,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8245,6 +8879,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8258,6 +8893,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8271,6 +8907,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8284,6 +8921,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8297,6 +8935,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8310,6 +8949,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8323,6 +8963,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8336,6 +8977,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8349,6 +8991,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8362,6 +9005,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8375,6 +9019,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8388,6 +9033,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8401,6 +9047,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8414,6 +9061,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8427,6 +9075,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8440,6 +9089,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8453,6 +9103,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8466,6 +9117,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8479,6 +9131,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8492,6 +9145,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8505,6 +9159,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8518,6 +9173,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8531,6 +9187,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8544,6 +9201,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8557,6 +9215,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8570,6 +9229,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8583,6 +9243,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8596,6 +9257,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8609,6 +9271,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8622,6 +9285,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8635,6 +9299,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8648,6 +9313,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8661,6 +9327,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8674,6 +9341,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8687,6 +9355,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8700,6 +9369,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8713,6 +9383,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8726,6 +9397,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8739,6 +9411,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8752,6 +9425,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8765,6 +9439,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8778,6 +9453,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8791,6 +9467,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8804,6 +9481,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8817,6 +9495,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8830,6 +9509,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8843,6 +9523,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8856,6 +9537,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8869,6 +9551,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8882,6 +9565,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8895,6 +9579,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8908,6 +9593,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8921,6 +9607,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8934,6 +9621,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8947,6 +9635,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8960,6 +9649,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8973,6 +9663,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8986,6 +9677,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -8999,6 +9691,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9012,6 +9705,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9025,6 +9719,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9038,6 +9733,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9051,6 +9747,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9064,6 +9761,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9077,6 +9775,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9090,6 +9789,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9103,6 +9803,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9116,6 +9817,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9129,6 +9831,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9142,6 +9845,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9155,6 +9859,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9168,6 +9873,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9181,6 +9887,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9194,6 +9901,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9207,6 +9915,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9220,6 +9929,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9233,6 +9943,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9246,6 +9957,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9259,6 +9971,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9272,6 +9985,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9285,6 +9999,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9298,6 +10013,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9311,6 +10027,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9324,6 +10041,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9337,6 +10055,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9350,6 +10069,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9363,6 +10083,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9376,6 +10097,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9389,6 +10111,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9402,6 +10125,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9415,6 +10139,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9428,6 +10153,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9441,6 +10167,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9454,6 +10181,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9467,6 +10195,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9480,6 +10209,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9493,6 +10223,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9506,6 +10237,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9519,6 +10251,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9532,6 +10265,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9545,6 +10279,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9558,6 +10293,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9571,6 +10307,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9584,6 +10321,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9597,6 +10335,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9610,6 +10349,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9623,6 +10363,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9636,6 +10377,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9649,6 +10391,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9662,6 +10405,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9675,6 +10419,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9688,6 +10433,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9701,6 +10447,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9714,6 +10461,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9727,6 +10475,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9740,6 +10489,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9753,6 +10503,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9766,6 +10517,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9779,6 +10531,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9792,6 +10545,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9805,6 +10559,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9818,6 +10573,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9831,6 +10587,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9844,6 +10601,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9857,6 +10615,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9870,6 +10629,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9883,6 +10643,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9896,6 +10657,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9909,6 +10671,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9922,6 +10685,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9935,6 +10699,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9948,6 +10713,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9961,6 +10727,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9974,6 +10741,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -9987,6 +10755,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10000,6 +10769,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10013,6 +10783,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10026,6 +10797,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10039,6 +10811,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10052,6 +10825,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10065,6 +10839,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10078,6 +10853,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10091,6 +10867,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10104,6 +10881,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10117,6 +10895,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10130,6 +10909,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10143,6 +10923,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10156,6 +10937,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10169,6 +10951,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10182,6 +10965,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10195,6 +10979,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10208,6 +10993,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10221,6 +11007,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10234,6 +11021,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10247,6 +11035,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10260,6 +11049,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10273,6 +11063,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10286,6 +11077,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10299,6 +11091,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10312,6 +11105,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10325,6 +11119,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10338,6 +11133,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10351,6 +11147,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10364,6 +11161,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10377,6 +11175,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10390,6 +11189,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10403,6 +11203,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10416,6 +11217,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10429,6 +11231,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10442,6 +11245,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10455,6 +11259,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10468,6 +11273,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10481,6 +11287,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10494,6 +11301,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10507,6 +11315,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10520,6 +11329,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10533,6 +11343,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10546,6 +11357,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10559,6 +11371,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10572,6 +11385,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10585,6 +11399,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10598,6 +11413,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10611,6 +11427,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10624,6 +11441,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10637,6 +11455,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10650,6 +11469,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10663,6 +11483,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10676,6 +11497,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10689,6 +11511,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10702,6 +11525,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10715,6 +11539,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10728,6 +11553,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10741,6 +11567,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10754,6 +11581,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10767,6 +11595,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10780,6 +11609,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10793,6 +11623,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10806,6 +11637,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10819,6 +11651,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10832,6 +11665,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10845,6 +11679,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10858,6 +11693,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10871,6 +11707,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10884,6 +11721,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10897,6 +11735,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10910,6 +11749,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10923,6 +11763,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10936,6 +11777,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10949,6 +11791,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10962,6 +11805,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10975,6 +11819,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -10988,6 +11833,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11001,6 +11847,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11014,6 +11861,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11027,6 +11875,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11040,6 +11889,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11053,6 +11903,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11066,6 +11917,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11079,6 +11931,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11092,6 +11945,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11105,6 +11959,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11118,6 +11973,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11131,6 +11987,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11144,6 +12001,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11157,6 +12015,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11170,6 +12029,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11183,6 +12043,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11196,6 +12057,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11209,6 +12071,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11222,6 +12085,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11235,6 +12099,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11248,6 +12113,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11261,6 +12127,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11274,6 +12141,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11287,6 +12155,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11300,6 +12169,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11313,6 +12183,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11326,6 +12197,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11339,6 +12211,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11352,6 +12225,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11365,6 +12239,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11378,6 +12253,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11391,6 +12267,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11404,6 +12281,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11417,6 +12295,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11430,6 +12309,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11443,6 +12323,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11456,6 +12337,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11469,6 +12351,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11482,6 +12365,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11495,6 +12379,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11508,6 +12393,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11521,6 +12407,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11534,6 +12421,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11547,6 +12435,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11560,6 +12449,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11573,6 +12463,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11586,6 +12477,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11599,6 +12491,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11612,6 +12505,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11625,6 +12519,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11638,6 +12533,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11651,6 +12547,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11664,6 +12561,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11677,6 +12575,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11690,6 +12589,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11703,6 +12603,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11716,6 +12617,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11729,6 +12631,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11742,6 +12645,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11755,6 +12659,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11768,6 +12673,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11781,6 +12687,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11794,6 +12701,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11807,6 +12715,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11820,6 +12729,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11833,6 +12743,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11846,6 +12757,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11859,6 +12771,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11872,6 +12785,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11885,6 +12799,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11898,6 +12813,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11911,6 +12827,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11924,6 +12841,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11937,6 +12855,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11950,6 +12869,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11963,6 +12883,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11976,6 +12897,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -11989,6 +12911,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12002,6 +12925,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12015,6 +12939,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12028,6 +12953,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12041,6 +12967,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12054,6 +12981,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12067,6 +12995,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12080,6 +13009,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12093,6 +13023,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12106,6 +13037,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12119,6 +13051,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12132,6 +13065,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12145,6 +13079,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12158,6 +13093,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12171,6 +13107,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12184,6 +13121,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12197,6 +13135,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12210,6 +13149,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12223,6 +13163,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12236,6 +13177,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12249,6 +13191,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12262,6 +13205,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12275,6 +13219,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12288,6 +13233,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12301,6 +13247,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12314,6 +13261,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12327,6 +13275,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12340,6 +13289,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12353,6 +13303,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12366,6 +13317,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12379,6 +13331,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12392,6 +13345,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12405,6 +13359,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12418,6 +13373,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12431,6 +13387,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12444,6 +13401,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12457,6 +13415,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12470,6 +13429,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12483,6 +13443,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12496,6 +13457,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12509,6 +13471,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12522,6 +13485,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12535,6 +13499,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12548,6 +13513,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12561,6 +13527,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12574,6 +13541,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12587,6 +13555,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12600,6 +13569,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12613,6 +13583,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12626,6 +13597,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12639,6 +13611,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12652,6 +13625,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12665,6 +13639,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12678,6 +13653,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12691,6 +13667,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12704,6 +13681,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12717,6 +13695,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12730,6 +13709,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12743,6 +13723,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12756,6 +13737,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12769,6 +13751,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12782,6 +13765,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12795,6 +13779,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12808,6 +13793,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12821,6 +13807,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12834,6 +13821,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12847,6 +13835,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12860,6 +13849,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12873,6 +13863,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12886,6 +13877,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12899,6 +13891,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12912,6 +13905,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12925,6 +13919,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12938,6 +13933,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12951,6 +13947,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12964,6 +13961,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12977,6 +13975,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -12990,6 +13989,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13003,6 +14003,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13016,6 +14017,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13029,6 +14031,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13042,6 +14045,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13055,6 +14059,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13068,6 +14073,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13081,6 +14087,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13094,6 +14101,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13107,6 +14115,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13120,6 +14129,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13133,6 +14143,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13146,6 +14157,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13159,6 +14171,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13172,6 +14185,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13185,6 +14199,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13198,6 +14213,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13211,6 +14227,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13224,6 +14241,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13237,6 +14255,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13250,6 +14269,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13263,6 +14283,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13276,6 +14297,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13289,6 +14311,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13302,6 +14325,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13315,6 +14339,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13328,6 +14353,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13341,6 +14367,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13354,6 +14381,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13367,6 +14395,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13380,6 +14409,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13393,6 +14423,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13406,6 +14437,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13419,6 +14451,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13432,6 +14465,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13445,6 +14479,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13458,6 +14493,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13471,6 +14507,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13484,6 +14521,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13497,6 +14535,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13510,6 +14549,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13523,6 +14563,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13536,6 +14577,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13549,6 +14591,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13562,6 +14605,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13575,6 +14619,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13588,6 +14633,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13601,6 +14647,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13614,6 +14661,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13627,6 +14675,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13640,6 +14689,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13653,6 +14703,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13666,6 +14717,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13679,6 +14731,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13692,6 +14745,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13705,6 +14759,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13718,6 +14773,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13731,6 +14787,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13744,6 +14801,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13757,6 +14815,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13770,6 +14829,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13783,6 +14843,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13796,6 +14857,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13809,6 +14871,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13822,6 +14885,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13835,6 +14899,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13848,6 +14913,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13861,6 +14927,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13874,6 +14941,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13887,6 +14955,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13900,6 +14969,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13913,6 +14983,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13926,6 +14997,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13939,6 +15011,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13952,6 +15025,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13965,6 +15039,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13978,6 +15053,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -13991,6 +15067,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14004,6 +15081,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14017,6 +15095,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14030,6 +15109,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14043,6 +15123,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14056,6 +15137,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14069,6 +15151,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14082,6 +15165,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14095,6 +15179,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14108,6 +15193,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14121,6 +15207,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14134,6 +15221,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14147,6 +15235,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14160,6 +15249,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14173,6 +15263,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14186,6 +15277,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14199,6 +15291,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14212,6 +15305,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14225,6 +15319,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14238,6 +15333,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14251,6 +15347,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14264,6 +15361,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14277,6 +15375,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14290,6 +15389,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14303,6 +15403,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14316,6 +15417,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14329,6 +15431,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14342,6 +15445,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14355,6 +15459,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14368,6 +15473,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14381,6 +15487,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14394,6 +15501,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14407,6 +15515,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14420,6 +15529,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14433,6 +15543,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14446,6 +15557,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14459,6 +15571,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14472,6 +15585,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14485,6 +15599,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14498,6 +15613,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14511,6 +15627,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14524,6 +15641,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14537,6 +15655,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14550,6 +15669,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14563,6 +15683,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14576,6 +15697,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14589,6 +15711,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14602,6 +15725,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14615,6 +15739,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14628,6 +15753,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14641,6 +15767,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14654,6 +15781,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14667,6 +15795,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14680,6 +15809,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14693,6 +15823,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14706,6 +15837,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14719,6 +15851,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14732,6 +15865,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14745,6 +15879,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14758,6 +15893,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14771,6 +15907,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14784,6 +15921,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14797,6 +15935,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14810,6 +15949,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14823,6 +15963,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14836,6 +15977,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14849,6 +15991,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14862,6 +16005,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14875,6 +16019,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14888,6 +16033,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14901,6 +16047,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14914,6 +16061,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14927,6 +16075,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14940,6 +16089,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14953,6 +16103,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14966,6 +16117,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14979,6 +16131,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -14992,6 +16145,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15005,6 +16159,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15018,6 +16173,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15031,6 +16187,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15044,6 +16201,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15057,6 +16215,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15070,6 +16229,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15083,6 +16243,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15096,6 +16257,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15109,6 +16271,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15122,6 +16285,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15135,6 +16299,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15148,6 +16313,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15161,6 +16327,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15174,6 +16341,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15187,6 +16355,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15200,6 +16369,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15213,6 +16383,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15226,6 +16397,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15239,6 +16411,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15252,6 +16425,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15265,6 +16439,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15278,6 +16453,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15291,6 +16467,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15304,6 +16481,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15317,6 +16495,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15330,6 +16509,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15343,6 +16523,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15356,6 +16537,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15369,6 +16551,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15382,6 +16565,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15395,6 +16579,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15408,6 +16593,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15421,6 +16607,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15434,6 +16621,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15447,6 +16635,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15460,6 +16649,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15473,6 +16663,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15486,6 +16677,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15499,6 +16691,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15512,6 +16705,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15525,6 +16719,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15538,6 +16733,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15551,6 +16747,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15564,6 +16761,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15577,6 +16775,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15590,6 +16789,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15603,6 +16803,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15616,6 +16817,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15629,6 +16831,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15642,6 +16845,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15655,6 +16859,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15668,6 +16873,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15681,6 +16887,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15694,6 +16901,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15707,6 +16915,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15720,6 +16929,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15733,6 +16943,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15746,6 +16957,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15759,6 +16971,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15772,6 +16985,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15785,6 +16999,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15798,6 +17013,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15811,6 +17027,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15824,6 +17041,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15837,6 +17055,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15850,6 +17069,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15863,6 +17083,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15876,6 +17097,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15889,6 +17111,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15902,6 +17125,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15915,6 +17139,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15928,6 +17153,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15941,6 +17167,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15954,6 +17181,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15967,6 +17195,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15980,6 +17209,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -15993,6 +17223,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16006,6 +17237,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16019,6 +17251,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16032,6 +17265,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16045,6 +17279,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16058,6 +17293,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16071,6 +17307,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16084,6 +17321,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16097,6 +17335,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16110,6 +17349,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16123,6 +17363,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16136,6 +17377,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16149,6 +17391,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16162,6 +17405,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16175,6 +17419,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16188,6 +17433,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16201,6 +17447,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16214,6 +17461,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16227,6 +17475,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16240,6 +17489,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16253,6 +17503,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16266,6 +17517,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16279,6 +17531,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16292,6 +17545,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16305,6 +17559,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16318,6 +17573,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16331,6 +17587,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16344,6 +17601,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16357,6 +17615,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16370,6 +17629,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16383,6 +17643,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16396,6 +17657,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16409,6 +17671,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16422,6 +17685,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16435,6 +17699,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16448,6 +17713,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16461,6 +17727,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16474,6 +17741,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16487,6 +17755,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16500,6 +17769,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16513,6 +17783,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16526,6 +17797,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16539,6 +17811,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16552,6 +17825,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16565,6 +17839,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16578,6 +17853,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16591,6 +17867,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16604,6 +17881,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16617,6 +17895,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16630,6 +17909,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16643,6 +17923,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16656,6 +17937,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16669,6 +17951,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16682,6 +17965,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16695,6 +17979,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16708,6 +17993,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16721,6 +18007,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16734,6 +18021,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16747,6 +18035,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16760,6 +18049,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16773,6 +18063,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16786,6 +18077,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16799,6 +18091,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16812,6 +18105,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16825,6 +18119,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, @@ -16838,6 +18133,7 @@ "__0": 4, "__1": 0, "__2": 0, + "__3": 0, "a": 2, "b": 2, "c": 2, diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-parse.serialised.json index 35a4561a89..1a0490499b 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-parse.serialised.json @@ -35,53 +35,189 @@ }, [ { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Product": [ + "Sum": [ { "clean": false, "etype": null }, [ { - "Atomic": [ + "Sum": [ { "clean": false, "etype": null }, - { - "Literal": { - "Int": 2 + [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] + } + ] + ] + }, + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + } + ] + ] } - } + ] ] }, { - "Atomic": [ + "Product": [ { "clean": false, "etype": null }, - { - "Reference": { - "UserName": "b" + [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] + } + ] + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + } + ] } - } + ] ] } ] ] + }, + { + "UnsafeDiv": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "e" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "f" + } + } + ] + } + ] } ] ] @@ -94,51 +230,49 @@ }, [ { - "Product": [ + "Atomic": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "c" - } - } - ] + { + "Literal": { + "Int": 6 } - ] + } ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "d" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "g" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "h" + } + } + ] } ] } @@ -149,7 +283,7 @@ ] }, { - "UnsafeDiv": [ + "Neg": [ { "clean": false, "etype": null @@ -162,20 +296,7 @@ }, { "Reference": { - "UserName": "e" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "f" + "UserName": "a" } } ] @@ -186,60 +307,45 @@ ] }, { - "Product": [ + "Neg": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 5 - } - } - ] - }, - { - "UnsafeDiv": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "g" - } + { + "UnsafeDiv": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "g" } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "h" - } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "h" } - ] - } - ] - } - ] + } + ] + } + ] + } ] } ] diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-rewrite.serialised.json index d4d3fee852..c74b3afc1d 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-rewrite.serialised.json @@ -15,7 +15,7 @@ }, [ { - "Int": 1 + "Int": 2 }, { "Int": 2 @@ -27,7 +27,13 @@ "Int": 1 }, { - "Int": 5 + "Int": 6 + }, + { + "Int": -1 + }, + { + "Int": -1 } ], [ @@ -55,6 +61,16 @@ "Reference": { "MachineName": 2 } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "MachineName": 3 + } } ], { @@ -98,6 +114,40 @@ } ] }, + { + "Neq": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "h" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] + } + ] + }, { "Neq": [ { @@ -203,9 +253,32 @@ } } ] + }, + { + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "g" + } + }, + { + "Reference": { + "UserName": "h" + } + }, + { + "Reference": { + "MachineName": 3 + } + } + ] } ], - "next_var": 3, + "next_var": 4, "variables": [ [ { @@ -258,6 +331,23 @@ } } ], + [ + { + "MachineName": 3 + }, + { + "domain": { + "IntDomain": [ + { + "Bounded": [ + 0, + 5 + ] + } + ] + } + } + ], [ { "UserName": "a" diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input-expected-rule-trace-human.txt index b0b95e587b..207eb7eca9 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input-expected-rule-trace-human.txt @@ -22,7 +22,7 @@ Sum([x, y, 35]) -- (Sum([x, y, 35]) = 100), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) And([(Sum([x, y, 35]) <= 100), (Sum([x, y, 35]) >= 100)]) -- diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input-expected-rule-trace-human.txt index b0b95e587b..207eb7eca9 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input-expected-rule-trace-human.txt @@ -22,7 +22,7 @@ Sum([x, y, 35]) -- (Sum([x, y, 35]) = 100), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) And([(Sum([x, y, 35]) <= 100), (Sum([x, y, 35]) >= 100)]) -- diff --git a/conjure_oxide/tests/integration/eprime-minion/xyz/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/eprime-minion/xyz/input-expected-rule-trace-human.txt index 05ddb447dd..d076fee451 100644 --- a/conjure_oxide/tests/integration/eprime-minion/xyz/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/eprime-minion/xyz/input-expected-rule-trace-human.txt @@ -18,7 +18,7 @@ Sum([a, b, c]) -- (Sum([a, b, c]) = 4), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) And([(Sum([a, b, c]) <= 4), (Sum([a, b, c]) >= 4)]) -- diff --git a/conjure_oxide/tests/integration/experiment/works/max2/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/experiment/works/max2/input-expected-rule-trace-human.txt index d2c0605c72..0bc6e6b951 100644 --- a/conjure_oxide/tests/integration/experiment/works/max2/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/experiment/works/max2/input-expected-rule-trace-human.txt @@ -33,14 +33,8 @@ new constraints: Or([(__1 = a), (__1 = b)]) -- -(__0 >= 2), - ~~> geq_to_ineq ([("Minion", 4100)]) -Ineq(2, __0, 0) - --- - (x = Sum([__1, 1])), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) And([(Sum([__1, 1]) <= x), (Sum([__1, 1]) >= x)]) -- @@ -57,6 +51,12 @@ SumLeq([__1, 1], x) -- +(__0 >= 2), + ~~> geq_to_ineq ([("Minion", 4100)]) +Ineq(2, __0, 0) + +-- + (__0 >= a), ~~> geq_to_ineq ([("Minion", 4100)]) Ineq(a, __0, 0) diff --git a/conjure_oxide/tests/integration/xyz/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/xyz/input-expected-rule-trace-human.txt index 05ddb447dd..d076fee451 100644 --- a/conjure_oxide/tests/integration/xyz/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/xyz/input-expected-rule-trace-human.txt @@ -18,7 +18,7 @@ Sum([a, b, c]) -- (Sum([a, b, c]) = 4), - ~~> sum_eq_to_inequalities ([("Minion", 4100)]) + ~~> sum_eq_to_inequalities ([("Minion", 4500)]) And([(Sum([a, b, c]) <= 4), (Sum([a, b, c]) >= 4)]) -- diff --git a/crates/conjure_core/src/rules/minion.rs b/crates/conjure_core/src/rules/minion.rs index 43f18fdea7..84616651ff 100644 --- a/crates/conjure_core/src/rules/minion.rs +++ b/crates/conjure_core/src/rules/minion.rs @@ -194,6 +194,11 @@ fn introduce_producteq(expr: &Expr, model: &Model) -> ApplicationResult { /// 3. Weighted atom: `c*a ~> (c,a)` /// 4. Weighted non-atom: `c*e ~> (c,__0)` with new constraint` __0 =aux e` /// 5. Weighted product: `c*e*f ~> (c,__0)` with new constraint `__0 =aux (e*f)` +/// 6. Negated atom: `-x ~> (-1,x)` +/// 7. Negated expression: `-e ~> (-1,__0)` with new constraint `__0 = e` +/// +/// Cases 6 and 7 could potentially be a normalising rule `-e ~> -1*e`. However, I think that we +/// should only turn negations into a product when they are inside a sum, not all the time. #[register_rule(("Minion", 4500))] fn introduce_weighted_sumleq_sumgeq(expr: &Expr, model: &Model) -> ApplicationResult { // assume sum on lhs of leq/geq, as in introduce_sumleq @@ -268,6 +273,24 @@ fn introduce_weighted_sumleq_sumgeq(expr: &Expr, model: &Model) -> ApplicationRe } } + // negated terms: `-e ~> -1*e` + // + // flatten e if non-atomic + Expr::Neg(_, e) => { + // needs flattening + let v: Atom = if let Some(aux_var_info) = to_aux_var(&e, &model) { + model = aux_var_info.model(); + new_top_exprs.push(aux_var_info.top_level_expr()); + aux_var_info.as_atom() + } else { + // if we can't flatten it, it must be an atom! + #[allow(clippy::unwrap_used)] + e.try_into().unwrap() + }; + + (Lit::Int(-1), v) + } + // flatten non-flat terms without coefficients: e1 ~> (1,__0) // // includes products without coefficients. @@ -519,6 +542,43 @@ fn flatten_binop(expr: &Expr, model: &Model) -> ApplicationResult { let mut new_tops: Vec = vec![]; for child in children.iter_mut() { + // do not flatten sums in <= and >= + // special case to avoid a loop. + // + // ``` + // sum([|a|, |b|]) = c + // + // ~~> sum_eq_to_inequalities + // + // (sum([|a|, |b|]) <= c /\ sum([|a|, |b|]) <= c) + // + // -- + // + // sum([|a|, |b|]) <= c + // + // ~~> flatten_binop + // + // __1 <= c + // + // with new top level constraints: + // + // __1 =aux sum([|a| , |b|]) + // + // -- + // + // sum([|a|, |b|]) =aux __1 + // + // ~~> sum_eq_to_inequalities + // + // (sum([|a|, |b|]) <= __1 /\ sum([|a|, |b|]) <= __1) + // ``` + // and so on + if matches!(expr, Expr::Leq(_, _, _) | Expr::Geq(_, _, _)) + && matches!(child, Expr::Sum(_, _)) + { + continue; + } + if let Some(aux_var_info) = to_aux_var(child, &model) { model = aux_var_info.model(); new_tops.push(aux_var_info.top_level_expr()); @@ -934,7 +994,18 @@ fn not_constraint_to_reify(expr: &Expr, _: &Model) -> ApplicationResult { /// /// # Rationale /// Minion only has `SumLeq` and `SumGeq` constraints. -#[register_rule(("Minion", 4100))] +/// +/// # Priority +/// +/// This should run before any flattening rules. +/// +/// This is because of weighted sums. introduce_weighted_sumleq_sumgeq only works on inequalities. +/// Expressions in the form ` = t` should be turned into inequalities before they can +/// flattened, otherwise, the weighted sum terms will be flattened away, turning the sum into a +/// normal sum. +/// +/// For more details, see the docstring for introduce_weighted_sumleq_sumgeq. +#[register_rule(("Minion", 4500))] fn sum_eq_to_inequalities(expr: &Expr, _: &Model) -> ApplicationResult { // let (sum, e1): (Box, Box) = match expr.clone() {