diff --git a/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin.mps b/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin.mps
index c3749dca..11b78353 100644
--- a/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin.mps
+++ b/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin.mps
@@ -14,8 +14,9 @@
-
+
+
@@ -660,7 +661,7 @@
-
+
@@ -681,7 +682,7 @@
-
+
@@ -702,7 +703,7 @@
-
+
@@ -723,7 +724,7 @@
-
+
diff --git a/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin/unification.mps b/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin/unification.mps
index cfe48df8..ac44b373 100644
--- a/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin/unification.mps
+++ b/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin/unification.mps
@@ -15,8 +15,9 @@
-
+
+
@@ -1154,11 +1155,11 @@
-
+
-
+
@@ -1186,7 +1187,7 @@
-
+
@@ -1201,7 +1202,7 @@
-
+
@@ -1213,44 +1214,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1955,11 +1920,11 @@
-
+
-
+
@@ -1987,7 +1952,7 @@
-
+
@@ -2002,7 +1967,7 @@
-
+
@@ -2014,45 +1979,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -2073,11 +2002,11 @@
-
+
-
+
@@ -2099,7 +2028,7 @@
-
+
@@ -2111,7 +2040,7 @@
-
+
@@ -2122,45 +2051,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
diff --git a/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin/var.mps b/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin/var.mps
index c668a9dd..26e505f1 100644
--- a/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin/var.mps
+++ b/logic/languages/jetbrains.mps.logic/runtime/models/jetbrains/mps/logic/builtin/var.mps
@@ -8,9 +8,10 @@
-
+
+
@@ -19,12 +20,6 @@
-
-
-
-
-
-
@@ -45,9 +40,6 @@
-
-
-
@@ -92,21 +84,12 @@
-
-
-
-
-
-
-
-
-
@@ -125,11 +108,11 @@
-
+
-
+
@@ -145,11 +128,11 @@
-
+
-
+
@@ -232,7 +215,7 @@
-
+
@@ -251,7 +234,7 @@
-
+
@@ -276,7 +259,7 @@
-
+
@@ -288,52 +271,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
diff --git a/logic/solutions/jetbrains.mps.logic.jchr/jetbrains.mps.logic.jchr.msd b/logic/solutions/jetbrains.mps.logic.jchr/jetbrains.mps.logic.jchr.msd
index d0e8e6d5..eeb2c911 100644
--- a/logic/solutions/jetbrains.mps.logic.jchr/jetbrains.mps.logic.jchr.msd
+++ b/logic/solutions/jetbrains.mps.logic.jchr/jetbrains.mps.logic.jchr.msd
@@ -10,6 +10,7 @@
a5478664-6b44-4c62-a9f7-434f8aa57eee(jetbrains.mps.logic.runtime)
b984ee52-f34d-4b6d-8812-866c1d3eae31(jetbrains.mps.jchr.runtime)
bbf5c548-7111-4a53-a117-cdefc664cf34(jetbrains.mps.logic.reactor)
+ 0d017abe-6cd7-4206-86d5-bfa557885b07(jetbrains.mps.typechecking.handling)
@@ -27,6 +28,7 @@
+
diff --git a/logic/solutions/jetbrains.mps.logic.jchr/models/jetbrains/mps/logic/jchr/predicate.mps b/logic/solutions/jetbrains.mps.logic.jchr/models/jetbrains/mps/logic/jchr/predicate.mps
index 9ef7662b..7cacf618 100644
--- a/logic/solutions/jetbrains.mps.logic.jchr/models/jetbrains/mps/logic/jchr/predicate.mps
+++ b/logic/solutions/jetbrains.mps.logic.jchr/models/jetbrains/mps/logic/jchr/predicate.mps
@@ -10,7 +10,7 @@
-
+
@@ -19,6 +19,7 @@
+
@@ -447,7 +448,7 @@
-
+
@@ -584,7 +585,7 @@
-
+
@@ -1190,7 +1191,7 @@
-
+
@@ -1486,7 +1487,7 @@
-
+
@@ -5395,7 +5396,7 @@
-
+
@@ -5688,7 +5689,7 @@
-
+
@@ -7516,7 +7517,7 @@
-
+
@@ -7621,7 +7622,7 @@
-
+
@@ -7964,35 +7965,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -8652,7 +8624,7 @@
-
+
@@ -8674,7 +8646,7 @@
-
+
@@ -8700,7 +8672,7 @@
-
+
@@ -8713,7 +8685,7 @@
-
+
@@ -8727,7 +8699,7 @@
-
+
@@ -8752,7 +8724,7 @@
-
+
@@ -8766,7 +8738,7 @@
-
+
@@ -8790,7 +8762,7 @@
-
+
@@ -8804,7 +8776,7 @@
-
+
@@ -8828,7 +8800,7 @@
-
+
@@ -8842,7 +8814,7 @@
-
+
@@ -8889,7 +8861,7 @@
-
+
@@ -8946,7 +8918,7 @@
-
+
@@ -8975,7 +8947,7 @@
-
+
@@ -8988,7 +8960,7 @@
-
+
@@ -9010,7 +8982,7 @@
-
+
@@ -9032,7 +9004,7 @@
-
+
@@ -9054,7 +9026,7 @@
-
+
@@ -9570,7 +9542,7 @@
-
+
@@ -9609,7 +9581,7 @@
-
+
diff --git a/logic/solutions/jetbrains.mps.logic.jchr/models/jetbrains/mps/logic/jchr/program.mps b/logic/solutions/jetbrains.mps.logic.jchr/models/jetbrains/mps/logic/jchr/program.mps
index c803e78a..7b97ea0f 100644
--- a/logic/solutions/jetbrains.mps.logic.jchr/models/jetbrains/mps/logic/jchr/program.mps
+++ b/logic/solutions/jetbrains.mps.logic.jchr/models/jetbrains/mps/logic/jchr/program.mps
@@ -11,11 +11,12 @@
-
+
+
@@ -264,8 +265,8 @@
-
-
+
+
@@ -281,8 +282,8 @@
-
-
+
+
@@ -304,22 +305,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -327,11 +312,16 @@
-
-
+
+
+
+
+
+
+
-
+
@@ -504,7 +494,7 @@
-
+
@@ -515,14 +505,14 @@
-
+
-
+
@@ -539,7 +529,7 @@
-
+
@@ -660,7 +650,7 @@
-
+
@@ -718,7 +708,7 @@
-
+
@@ -772,8 +762,15 @@
-
-
+
+
+
+
+
+
+
+
+
@@ -781,7 +778,7 @@
-
+
@@ -789,7 +786,7 @@
-
+
@@ -797,7 +794,7 @@
-
+
@@ -900,12 +897,12 @@
-
+
-
+
@@ -940,7 +937,7 @@
-
+
@@ -979,7 +976,7 @@
-
+
@@ -1097,7 +1094,7 @@
-
+
@@ -1134,13 +1131,13 @@
-
-
+
+
-
+
@@ -1149,7 +1146,7 @@
-
+
@@ -1158,14 +1155,14 @@
-
+
-
+
@@ -1175,7 +1172,7 @@
-
+
@@ -1183,7 +1180,7 @@
-
+
@@ -1229,11 +1226,11 @@
-
+
-
+
@@ -1256,7 +1253,7 @@
-
+
@@ -1309,7 +1306,7 @@
-
+
@@ -1360,7 +1357,7 @@
-
+
@@ -2114,11 +2111,11 @@
-
+
-
+
@@ -2164,7 +2161,7 @@
-
+
@@ -2179,7 +2176,7 @@
-
+
@@ -2192,7 +2189,7 @@
-
+
@@ -2201,7 +2198,7 @@
-
+
@@ -2232,10 +2229,10 @@
-
+
-
+
@@ -2309,7 +2306,7 @@
-
+
diff --git a/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/constraint.mps b/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/evaluation.mps
similarity index 51%
rename from logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/constraint.mps
rename to logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/evaluation.mps
index ddfbda69..d03ee216 100644
--- a/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/constraint.mps
+++ b/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/evaluation.mps
@@ -1,5 +1,5 @@
-
+
@@ -9,16 +9,13 @@
+
-
-
-
-
@@ -31,9 +28,6 @@
-
-
-
@@ -57,25 +51,15 @@
-
-
-
-
-
-
-
-
-
-
@@ -93,7 +77,6 @@
-
@@ -117,18 +100,13 @@
-
-
-
-
-
@@ -142,9 +120,6 @@
-
-
-
@@ -188,18 +163,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -237,7 +200,7 @@
-
+
@@ -264,7 +227,7 @@
-
+
@@ -305,7 +268,7 @@
-
+
@@ -339,7 +302,7 @@
-
+
@@ -375,7 +338,7 @@
-
+
@@ -474,7 +437,7 @@
-
+
@@ -550,7 +513,7 @@
-
+
@@ -591,7 +554,7 @@
-
+
@@ -608,7 +571,7 @@
-
+
@@ -644,7 +607,7 @@
-
+
@@ -661,7 +624,7 @@
-
+
@@ -673,7 +636,7 @@
-
+
@@ -690,7 +653,7 @@
-
+
@@ -714,7 +677,7 @@
-
+
@@ -730,7 +693,7 @@
-
+
@@ -791,7 +754,7 @@
-
+
@@ -801,7 +764,7 @@
-
+
@@ -832,448 +795,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1284,7 +805,7 @@
-
+
@@ -1306,7 +827,7 @@
-
+
@@ -1328,7 +849,7 @@
-
+
@@ -1350,7 +871,7 @@
-
+
@@ -1395,7 +916,7 @@
-
+
@@ -1416,7 +937,7 @@
-
+
@@ -1437,7 +958,7 @@
-
+
@@ -1458,7 +979,7 @@
-
+
@@ -1493,523 +1014,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2100,7 +1104,7 @@
-
+
@@ -2113,7 +1117,7 @@
-
+
@@ -2123,7 +1127,7 @@
-
+
@@ -2143,270 +1147,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2444,7 +1184,7 @@
-
+
@@ -2501,7 +1241,7 @@
-
+
@@ -2514,45 +1254,9 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2561,6 +1265,365 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2571,7 +1634,7 @@
-
+
diff --git a/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/logical.mps b/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/logical.mps
index 96350d69..59d956ab 100644
--- a/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/logical.mps
+++ b/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/logical.mps
@@ -132,20 +132,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/program.mps b/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/program.mps
index dc7ee58b..0de46d68 100644
--- a/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/program.mps
+++ b/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/program.mps
@@ -6,41 +6,100 @@
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -65,19 +124,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
@@ -89,6 +179,7 @@
+
@@ -97,14 +188,34 @@
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -128,67 +239,9 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -197,18 +250,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -216,7 +257,7 @@
-
+
@@ -229,7 +270,7 @@
-
+
@@ -249,33 +290,12 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -283,7 +303,7 @@
-
+
@@ -296,14 +316,14 @@
-
+
-
+
@@ -316,7 +336,7 @@
-
+
@@ -325,491 +345,2504 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/rule.mps b/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/rule.mps
index 25345bb8..3368ee2a 100644
--- a/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/rule.mps
+++ b/logic/solutions/jetbrains.mps.logic.reactor/models/jetbrains/mps/logic/reactor/rule.mps
@@ -8,1516 +8,9 @@
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/logic/solutions/jetbrains.mps.logic.test/models/jetbrains/mps/logic/test/unification.mps b/logic/solutions/jetbrains.mps.logic.test/models/jetbrains/mps/logic/test/unification.mps
index a74e96be..329822f4 100644
--- a/logic/solutions/jetbrains.mps.logic.test/models/jetbrains/mps/logic/test/unification.mps
+++ b/logic/solutions/jetbrains.mps.logic.test/models/jetbrains/mps/logic/test/unification.mps
@@ -8,19 +8,16 @@
-
-
-
+
-
@@ -1824,7 +1821,7 @@
-
+
@@ -1847,7 +1844,7 @@
-
+
@@ -1950,11 +1947,11 @@
-
-
+
+
-
+
@@ -2087,11 +2084,11 @@
-
-
+
+
-
+
@@ -2268,11 +2265,11 @@
-
-
+
+
-
+
@@ -2295,11 +2292,11 @@
-
-
+
+
-
+
@@ -2348,11 +2345,11 @@
-
-
+
+
-
+
@@ -2496,11 +2493,11 @@
-
-
+
+
-
+
@@ -2522,11 +2519,11 @@
-
-
+
+
-
+
@@ -2630,11 +2627,11 @@
-
-
+
+
-
+
@@ -2779,11 +2776,11 @@
-
-
+
+
-
+
@@ -2805,11 +2802,11 @@
-
-
+
+
-
+
@@ -2913,11 +2910,11 @@
-
-
+
+
-
+
@@ -3039,11 +3036,11 @@
-
-
+
+
-
+
@@ -3107,11 +3104,11 @@
-
-
+
+
-
+
@@ -3262,11 +3259,11 @@
-
-
+
+
-
+
@@ -3294,11 +3291,11 @@
-
-
+
+
-
+
@@ -3334,11 +3331,11 @@
-
-
+
+
-
+
@@ -3497,11 +3494,11 @@
-
-
+
+
-
+
@@ -3529,11 +3526,11 @@
-
-
+
+
-
+
@@ -3683,11 +3680,11 @@
-
-
+
+
-
+
@@ -3715,11 +3712,11 @@
-
-
+
+
-
+
@@ -3819,11 +3816,11 @@
-
-
+
+
-
+
@@ -3851,11 +3848,11 @@
-
-
+
+
-
+
@@ -3895,12 +3892,12 @@
-
-
+
+
-
+
@@ -3912,7 +3909,7 @@
-
+
@@ -4820,8 +4817,8 @@
-
-
+
+
@@ -4837,8 +4834,8 @@
-
-
+
+
@@ -4903,7 +4900,7 @@
-
+
@@ -4935,7 +4932,7 @@
-
+
@@ -4957,13 +4954,13 @@
-
+
-
+
@@ -4991,12 +4988,12 @@
-
+
-
+
@@ -5028,7 +5025,7 @@
-
+
@@ -5051,7 +5048,7 @@
-
+
@@ -5064,7 +5061,7 @@
-
+
@@ -5119,7 +5116,7 @@
-
+
@@ -5127,7 +5124,7 @@
-
+
@@ -5137,14 +5134,14 @@
-
+
-
+
@@ -5162,11 +5159,11 @@
-
+
-
+
@@ -5185,7 +5182,7 @@
-
+
diff --git a/solutions/jetbrains.mps.typechecking.handling/jetbrains.mps.typechecking.handling.msd b/solutions/jetbrains.mps.typechecking.handling/jetbrains.mps.typechecking.handling.msd
index d7015231..ba854da8 100644
--- a/solutions/jetbrains.mps.typechecking.handling/jetbrains.mps.typechecking.handling.msd
+++ b/solutions/jetbrains.mps.typechecking.handling/jetbrains.mps.typechecking.handling.msd
@@ -18,7 +18,6 @@
df345b11-b8c7-4213-ac66-48d2a9b75d88(jetbrains.mps.baseLanguageInternal)
6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)
bbf5c548-7111-4a53-a117-cdefc664cf34(jetbrains.mps.logic.reactor)
- 121937e8-9efc-4551-81fc-50dc0319618e(jetbrains.mps.lang.typesystem2.samplechecker)
2677cb18-f558-4e33-bc38-a5139cee06dc(jetbrains.mps.devkit.language-design)
@@ -74,7 +73,6 @@
-
diff --git a/solutions/jetbrains.mps.typechecking.handling/models/jetbrains/mps/typechecking/handler/producer.mps b/solutions/jetbrains.mps.typechecking.handling/models/jetbrains/mps/typechecking/handler/producer.mps
index e2129fa6..130669f6 100644
--- a/solutions/jetbrains.mps.typechecking.handling/models/jetbrains/mps/typechecking/handler/producer.mps
+++ b/solutions/jetbrains.mps.typechecking.handling/models/jetbrains/mps/typechecking/handler/producer.mps
@@ -6,6 +6,7 @@
+
@@ -29,7 +30,7 @@
-
+
@@ -87,7 +88,6 @@
-
@@ -413,9 +413,9 @@
-
+
-
+
@@ -426,11 +426,18 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
@@ -473,10 +480,10 @@
-
+
-
+
@@ -587,10 +594,10 @@
-
+
-
+
@@ -720,7 +727,7 @@
-
+
@@ -856,10 +863,10 @@
-
+
-
+
@@ -886,15 +893,15 @@
-
+
-
+
-
+
@@ -959,11 +966,16 @@
-
-
+
+
+
+
+
+
+
-
+
@@ -1172,15 +1184,15 @@
-
+
-
+
-
+
@@ -1217,10 +1229,10 @@
-
+
-
+
@@ -1230,14 +1242,14 @@
-
+
-
+
-
+
@@ -1597,7 +1609,7 @@
-
+
@@ -1605,7 +1617,7 @@
-
+
@@ -1615,7 +1627,7 @@
-
+
@@ -1623,7 +1635,7 @@
-
+
@@ -1833,7 +1845,7 @@
-
+
@@ -1841,7 +1853,7 @@
-
+
@@ -1853,7 +1865,7 @@
-
+
@@ -1908,7 +1920,7 @@
-
+
@@ -1933,7 +1945,7 @@
-
+
@@ -1942,7 +1954,7 @@
-
+
@@ -1967,7 +1979,7 @@
-
+
@@ -2015,7 +2027,7 @@
-
+
@@ -2023,7 +2035,7 @@
-
+
@@ -2031,15 +2043,15 @@
-
+
-
+
-
+
@@ -2061,7 +2073,7 @@
-
+
@@ -2103,7 +2115,7 @@
-
+
@@ -2186,7 +2198,7 @@
-
+
@@ -2194,7 +2206,7 @@
-
+
@@ -2230,7 +2242,7 @@
-
+
@@ -2238,7 +2250,7 @@
-
+
@@ -2266,7 +2278,7 @@
-
+
@@ -2308,7 +2320,7 @@
-
+
@@ -2372,7 +2384,7 @@
-
+
@@ -2380,7 +2392,7 @@
-
+
@@ -2408,7 +2420,7 @@
-
+
@@ -2450,7 +2462,7 @@
-
+
@@ -2514,7 +2526,7 @@
-
+
@@ -2522,7 +2534,7 @@
-
+
@@ -2552,7 +2564,7 @@
-
+
@@ -2598,7 +2610,7 @@
-
+
@@ -2640,7 +2652,7 @@
-
+
@@ -2656,7 +2668,7 @@
-
+
@@ -2715,7 +2727,7 @@
-
+
@@ -2760,7 +2772,7 @@
-
+
@@ -2782,7 +2794,7 @@
-
+
@@ -2865,7 +2877,7 @@
-
+
@@ -2975,11 +2987,11 @@
-
+
-
+
@@ -3064,7 +3076,7 @@
-
+
@@ -3074,7 +3086,7 @@
-
+
@@ -3151,7 +3163,7 @@
-
+
@@ -3189,17 +3201,22 @@
-
-
+
+
+
+
+
+
+
-
+
-
+
@@ -3250,7 +3267,7 @@
-
+
@@ -3661,7 +3678,7 @@
-
+
@@ -3725,14 +3742,14 @@
-
+
-
+
@@ -3749,7 +3766,7 @@
-
+
@@ -3758,7 +3775,7 @@
-
+
@@ -3799,11 +3816,12 @@
+
-
+
-
-
+
+
@@ -5700,102 +5718,13 @@
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -5869,9 +5798,6 @@
-
-
-
@@ -5880,7 +5806,7 @@
-
+
@@ -5914,7 +5840,7 @@
-
+
@@ -5935,51 +5861,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -6006,7 +5894,7 @@
-
+
@@ -6028,7 +5916,7 @@
-
+
@@ -6052,7 +5940,7 @@
-
+
@@ -6073,7 +5961,7 @@
-
+
@@ -6086,7 +5974,7 @@
-
+
@@ -6094,7 +5982,7 @@
-
+
@@ -6111,7 +5999,7 @@
-
+
@@ -6145,7 +6033,7 @@
-
+
@@ -6194,7 +6082,7 @@
-
+
@@ -6326,7 +6214,7 @@
-
+
@@ -6356,7 +6244,7 @@
-
+
@@ -6364,7 +6252,7 @@
-
+
@@ -6388,7 +6276,7 @@
-
+
@@ -6396,7 +6284,7 @@
-
+
@@ -6453,7 +6341,7 @@
-
+
@@ -6461,7 +6349,7 @@
-
+
@@ -6469,7 +6357,7 @@
-
+
@@ -6525,7 +6413,7 @@
-
+
@@ -6533,7 +6421,7 @@
-
+
@@ -6541,7 +6429,7 @@
-
+
@@ -6557,7 +6445,7 @@
-
+
@@ -6565,7 +6453,7 @@
-
+
@@ -6879,7 +6767,7 @@
-
+
@@ -6887,7 +6775,7 @@
-
+
@@ -6895,13 +6783,13 @@
-
+
-
+
@@ -6914,7 +6802,7 @@
-
+
@@ -6924,7 +6812,7 @@
-
+
@@ -6939,7 +6827,7 @@
-
+
@@ -6949,7 +6837,7 @@
-
+
@@ -6961,14 +6849,14 @@
-
+
-
+
@@ -6991,6 +6879,7 @@
+
@@ -7008,7 +6897,7 @@
-
+
@@ -7062,7 +6951,7 @@
-
+
@@ -7072,7 +6961,7 @@
-
+
@@ -7100,14 +6989,14 @@
-
+
-
+
@@ -7123,7 +7012,7 @@
-
+
@@ -7136,11 +7025,11 @@
-
+
-
+
@@ -7153,7 +7042,7 @@
-
+
@@ -7163,7 +7052,7 @@
-
+
@@ -7190,7 +7079,7 @@
-
+
@@ -7200,7 +7089,7 @@
-
+
@@ -7219,7 +7108,7 @@
-
+
@@ -7235,7 +7124,7 @@
-
+
@@ -7256,7 +7145,7 @@
-
+
@@ -7266,7 +7155,7 @@
-
+
@@ -7275,7 +7164,7 @@
-
+
@@ -7286,14 +7175,14 @@
-
+
-
+
@@ -7305,7 +7194,7 @@
-
+
@@ -7315,7 +7204,7 @@
-
+
@@ -7334,7 +7223,7 @@
-
+
@@ -7347,11 +7236,11 @@
-
+
-
+
@@ -7367,7 +7256,7 @@
-
+
@@ -7377,7 +7266,7 @@
-
+
@@ -7409,7 +7298,7 @@
-
+
@@ -7417,11 +7306,11 @@
-
+
-
+
@@ -7444,14 +7333,14 @@
-
+
-
+
@@ -7468,7 +7357,7 @@
-
+
@@ -7476,7 +7365,7 @@
-
+
@@ -7486,7 +7375,7 @@
-
+
@@ -7495,7 +7384,7 @@
-
+
@@ -7506,14 +7395,14 @@
-
+
-
+
@@ -7530,7 +7419,7 @@
-
+
@@ -7568,11 +7457,11 @@
-
+
-
+
@@ -7584,14 +7473,14 @@
-
+
-
+
@@ -7603,7 +7492,7 @@
-
+
@@ -7617,7 +7506,7 @@
-
+
diff --git a/solutions/jetbrains.mps.typechecking.solving/models/jetbrains/mps/typechecking/solving/plugin.mps b/solutions/jetbrains.mps.typechecking.solving/models/jetbrains/mps/typechecking/solving/plugin.mps
index a399a1dd..70df1a1a 100644
--- a/solutions/jetbrains.mps.typechecking.solving/models/jetbrains/mps/typechecking/solving/plugin.mps
+++ b/solutions/jetbrains.mps.typechecking.solving/models/jetbrains/mps/typechecking/solving/plugin.mps
@@ -32,7 +32,7 @@
-
+
@@ -812,7 +812,7 @@
-
+
@@ -1012,7 +1012,7 @@
-
+
@@ -1041,14 +1041,14 @@
-
+
-
+
@@ -1069,7 +1069,7 @@
-
+
@@ -1175,7 +1175,7 @@
-
+
@@ -1273,7 +1273,7 @@
-
+
@@ -1284,11 +1284,11 @@
-
+
-
+
@@ -1298,7 +1298,7 @@
-
+
@@ -1338,7 +1338,7 @@
-
+
@@ -1438,11 +1438,11 @@
-
+
-
+
@@ -1570,11 +1570,11 @@
-
+
-
+
@@ -1584,7 +1584,7 @@
-
+
diff --git a/solutions/jetbrains.mps.typechecking.solving/models/jetbrains/mps/typechecking/solving/solver.mps b/solutions/jetbrains.mps.typechecking.solving/models/jetbrains/mps/typechecking/solving/solver.mps
index c987f25c..a10c4e5d 100644
--- a/solutions/jetbrains.mps.typechecking.solving/models/jetbrains/mps/typechecking/solving/solver.mps
+++ b/solutions/jetbrains.mps.typechecking.solving/models/jetbrains/mps/typechecking/solving/solver.mps
@@ -14,7 +14,7 @@
-
+
@@ -1701,7 +1701,7 @@
-
+
@@ -1801,7 +1801,7 @@
-
+
@@ -1900,14 +1900,14 @@
-
+
-
+
@@ -1931,7 +1931,7 @@
-
+
@@ -1969,7 +1969,7 @@
-
+
@@ -2041,7 +2041,7 @@
-
+
@@ -2445,7 +2445,7 @@
-
+
@@ -2699,7 +2699,7 @@
-
+
@@ -2734,7 +2734,7 @@
-
+
@@ -2849,10 +2849,10 @@
-
+
-
-
+
+
@@ -2906,12 +2906,12 @@
-
+
-
+
@@ -2926,12 +2926,12 @@
-
+
-
+
@@ -2988,12 +2988,12 @@
-
+
-
+
@@ -3062,12 +3062,12 @@
-
+
-
+
@@ -3135,12 +3135,12 @@
-
+
-
+
@@ -3207,19 +3207,19 @@
-
+
-
+
-
+
@@ -3285,19 +3285,19 @@
-
+
-
+
-
+
@@ -3832,7 +3832,7 @@
-
+
@@ -4131,7 +4131,7 @@
-
+
@@ -4323,7 +4323,7 @@
-
+
diff --git a/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler.test/models/jetbrains/mps/lang/typesystem2/samplechecker/handle/test/util.mps b/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler.test/models/jetbrains/mps/lang/typesystem2/samplechecker/handle/test/util.mps
index 561d91d2..15bad916 100644
--- a/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler.test/models/jetbrains/mps/lang/typesystem2/samplechecker/handle/test/util.mps
+++ b/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler.test/models/jetbrains/mps/lang/typesystem2/samplechecker/handle/test/util.mps
@@ -10,7 +10,7 @@
-
+
@@ -344,11 +344,11 @@
-
-
+
+
-
+
@@ -593,11 +593,11 @@
-
-
+
+
-
+
@@ -828,11 +828,11 @@
-
-
+
+
-
+
@@ -1091,11 +1091,11 @@
-
-
+
+
-
+
@@ -1509,11 +1509,11 @@
-
-
+
+
-
+
@@ -1986,11 +1986,11 @@
-
-
+
+
-
+
@@ -2520,11 +2520,11 @@
-
-
+
+
-
+
@@ -2975,11 +2975,11 @@
-
-
+
+
-
+
@@ -3454,11 +3454,11 @@
-
-
+
+
-
+
@@ -3795,11 +3795,11 @@
-
-
+
+
-
+
@@ -3833,12 +3833,12 @@
-
-
+
+
-
+
@@ -3850,7 +3850,7 @@
-
+
@@ -4200,11 +4200,11 @@
-
-
+
+
-
+
@@ -4238,12 +4238,12 @@
-
-
+
+
-
+
@@ -4255,7 +4255,7 @@
-
+
diff --git a/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler.util/models/jetbrains/mps/lang/typesystem2/samplechecker/handle/util.mps b/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler.util/models/jetbrains/mps/lang/typesystem2/samplechecker/handle/util.mps
index ec8c11a3..29662279 100644
--- a/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler.util/models/jetbrains/mps/lang/typesystem2/samplechecker/handle/util.mps
+++ b/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler.util/models/jetbrains/mps/lang/typesystem2/samplechecker/handle/util.mps
@@ -12,7 +12,7 @@
-
+
@@ -357,11 +357,11 @@
-
-
+
+
-
+
@@ -1760,11 +1760,11 @@
-
-
+
+
-
+
diff --git a/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler/models/jetbrains/mps/lang/typesystem2/samplechecker/chr.mps b/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler/models/jetbrains/mps/lang/typesystem2/samplechecker/chr.mps
index 4c1fbeb4..f483c065 100644
--- a/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler/models/jetbrains/mps/lang/typesystem2/samplechecker/chr.mps
+++ b/typechecking/solutions/jetbrains.mps.lang.typesystem2.samplechecker.handler/models/jetbrains/mps/lang/typesystem2/samplechecker/chr.mps
@@ -125,1587 +125,1587 @@
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
-
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
@@ -1713,17 +1713,17 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
@@ -1732,31 +1732,31 @@
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
@@ -1764,17 +1764,17 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
@@ -1783,31 +1783,31 @@
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
@@ -1815,23 +1815,23 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
@@ -1840,31 +1840,31 @@
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
@@ -1872,89 +1872,89 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
+
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+