[Scummvm-git-logs] scummvm master -> 9846b546bf3b4e48db069963651774aa6dca85d9

djsrv dservilla at gmail.com
Fri Jun 19 02:33:36 UTC 2020


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
459636a71e DIRECTOR: LINGO: Fix c_after and c_before
2f1a96a6cf DIRECTOR: LINGO: Add tEQ versions of assignments
2d5d3d6606 DIRECTOR: LINGO: Fix proplist parsing
9846b546bf DIRECTOR: LINGO: Treat proplists as objs w/ props


Commit: 459636a71e9361b38894848e2ac3b469872afdcb
    https://github.com/scummvm/scummvm/commit/459636a71e9361b38894848e2ac3b469872afdcb
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-18T22:27:59-04:00

Commit Message:
DIRECTOR: LINGO: Fix c_after and c_before

Changed paths:
    engines/director/lingo/lingo-code.cpp
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y
    engines/director/lingo/lingo-preprocessor.cpp


diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index d461ee193a..e4b785ae7d 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -735,15 +735,21 @@ void LC::c_ampersand() {
 }
 
 void LC::c_before() {
-	LC::c_ampersand();
+	Datum var = g_lingo->pop();
+	Datum b = g_lingo->varFetch(var);
+	Datum a = g_lingo->pop();
+
+	Datum res(a.asString() + b.asString());
+	g_lingo->varAssign(var, res);
 }
 
 void LC::c_after() {
-	Datum d2 = g_lingo->pop();
-	Datum d1 = g_lingo->pop();
+	Datum var = g_lingo->pop();
+	Datum b = g_lingo->varFetch(var);
+	Datum a = g_lingo->pop();
 
-	Datum res(d2.asString() + d1.asString());
-	g_lingo->push(res);
+	Datum res(b.asString() + a.asString());
+	g_lingo->varAssign(var, res);
 }
 
 void LC::c_concat() {
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 9e20210563..8f9353b9b2 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -885,23 +885,23 @@ static const yytype_int8 yytranslate[] =
 static const yytype_int16 yyrline[] =
 {
        0,   218,   218,   219,   221,   222,   223,   225,   232,   236,
-     247,   248,   249,   256,   263,   270,   277,   283,   290,   301,
-     309,   310,   311,   313,   314,   319,   332,   336,   339,   331,
-     366,   370,   373,   365,   400,   407,   413,   399,   443,   451,
-     454,   455,   457,   459,   461,   468,   476,   477,   479,   485,
-     489,   493,   497,   500,   502,   503,   504,   506,   509,   512,
-     516,   520,   524,   532,   538,   539,   540,   551,   552,   553,
-     556,   559,   565,   565,   570,   573,   576,   582,   583,   584,
-     585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
-     595,   596,   597,   598,   599,   600,   601,   602,   603,   604,
-     606,   607,   608,   609,   610,   611,   612,   613,   615,   618,
-     620,   621,   622,   623,   631,   632,   632,   633,   633,   634,
-     634,   635,   638,   641,   642,   644,   647,   651,   654,   658,
-     661,   672,   673,   674,   675,   679,   683,   688,   689,   691,
-     695,   699,   703,   703,   733,   733,   733,   739,   740,   740,
-     746,   754,   760,   760,   763,   764,   765,   767,   768,   769,
-     771,   773,   781,   782,   783,   785,   786,   788,   790,   791,
-     792,   793,   795,   796,   798,   799,   801,   805
+     247,   254,   261,   268,   275,   282,   289,   295,   302,   313,
+     321,   322,   323,   325,   326,   331,   344,   348,   351,   343,
+     378,   382,   385,   377,   412,   419,   425,   411,   455,   463,
+     466,   467,   469,   471,   473,   480,   488,   489,   491,   497,
+     501,   505,   509,   512,   514,   515,   516,   518,   521,   524,
+     528,   532,   536,   544,   550,   551,   552,   563,   564,   565,
+     568,   571,   577,   577,   582,   585,   588,   594,   595,   596,
+     597,   598,   599,   600,   601,   602,   603,   604,   605,   606,
+     607,   608,   609,   610,   611,   612,   613,   614,   615,   616,
+     618,   619,   620,   621,   622,   623,   624,   625,   627,   630,
+     632,   633,   634,   635,   643,   644,   644,   645,   645,   646,
+     646,   647,   650,   653,   654,   656,   659,   663,   666,   670,
+     673,   684,   685,   686,   687,   691,   695,   700,   701,   703,
+     707,   711,   715,   715,   745,   745,   745,   751,   752,   752,
+     758,   766,   772,   772,   775,   776,   777,   779,   780,   781,
+     783,   785,   793,   794,   795,   797,   798,   800,   802,   803,
+     804,   805,   807,   808,   810,   811,   813,   817
 };
 #endif
 
@@ -995,15 +995,15 @@ static const yytype_int16 yypact[] =
       53,    57,    58,  -316,  -316,   776,  2537,  2046,  2046,  2046,
     2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,
     2046,  2046,  2046,  2046,   132,  1924,   390,  2467,   -40,  2046,
-       4,  -316,    -4,     7,  2046,    19,   132,  -316,    67,  2537,
-    2046,  -316,  -316,    89,   -21,  2046,  2046,   -22,  2046,  2046,
-    2046,    24,   114,  2046,  2046,  2046,  2046,  2046,  -316,  -316,
-      76,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,
-    2046,  -316,  -316,  -316,    93,  -316,  -316,    89,    89,  -316,
-    2046,    55,  -316,   134,   119,   119,   119,   119,  2550,  2550,
+       4,  -316,    -4,     7,  2046,    19,   132,  -316,    61,  2537,
+    2046,  -316,  -316,    89,   -21,   134,   135,   -22,  2046,  2046,
+    2046,    24,   126,  2046,  2046,  2046,  2046,  2046,  -316,  -316,
+      67,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,
+    2046,  -316,  -316,  -316,    76,  -316,  -316,    89,    89,  -316,
+    2046,    55,  -316,   139,   119,   119,   119,   119,  2550,  2550,
     -316,   -44,   119,   119,   119,   119,   -44,   -54,   -54,  -316,
     -316,  -316,   -55,  -316,  2537,  -316,  -316,  -316,  -316,  2537,
-     -12,   147,  2537,  -316,   149,  -316,  -316,  2537,  2537,  2046,
+     -12,   160,  2537,  -316,   149,  -316,  -316,  -316,  -316,  2046,
     2046,  2537,  2537,   119,  2046,  2046,   167,  2537,   119,  2537,
     2537,  2537,   169,  2537,  2283,  2537,  2316,  2537,  2349,  2537,
     2382,  2537,  2537,  1692,  -316,   170,  -316,  -316,  2537,    50,
@@ -1015,7 +1015,7 @@ static const yytype_int16 yypact[] =
     -316,  -316,  1276,  2046,  -316,    64,   176,  -316,  -316,   151,
      173,   128,  2537,  -316,  2046,  -316,   130,  -316,   122,  1026,
     -316,  2046,   164,  -316,  1359,  2537,  -316,   192,  -316,  2537,
-    2046,   135,   172,  -316,  -316,  -316,  2537,  -316,  -316,  1443,
+    2046,   137,   172,  -316,  -316,  -316,  2537,  -316,  -316,  1443,
     -316,  -316,  1109,  -316,  -316,  -316,  -316,  1526,  -316,  -316,
     1609,  -316
 };
@@ -1068,12 +1068,12 @@ static const yytype_uint8 yydefact[] =
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -316,    96,  -316,  -316,   -41,    13,  -316,  -316,  -316,  -316,
-    -316,  -316,  -316,  -316,  -316,  -315,    31,  -316,  -316,  -316,
+    -316,    97,  -316,  -316,   -36,    13,  -316,  -316,  -316,  -316,
+    -316,  -316,  -316,  -316,  -316,  -315,    27,  -316,  -316,  -316,
     -156,  -303,   -75,  -316,   -76,   -69,     3,    -6,  -316,  -316,
-      66,  -316,  -316,  -316,  -316,  -316,  -316,  -316,  -316,   -23,
+      59,  -316,  -316,  -316,  -316,  -316,  -316,  -316,  -316,   -23,
     -316,  -316,  -316,  -316,  -316,  -316,  -316,  -316,  -138,  -316,
-    -266,  -316,     2,   -48,  -316,  -316,  -316,  -316,    30
+    -266,  -316,     2,   -45,  -316,  -316,  -316,  -316,    30
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -1107,15 +1107,15 @@ static const yytype_int16 yytable[] =
      160,   204,   205,   206,   207,   208,   209,   210,   211,   212,
      213,   214,   215,   216,   217,   218,   219,   220,    48,    68,
      299,   162,   163,   224,   167,   175,   176,   179,   229,   193,
-     195,   197,   198,   199,   232,   200,   201,   278,   221,   237,
-     238,   246,   241,   242,   243,   231,   234,   247,   248,   249,
-     250,   251,   340,   277,   252,   253,   254,   255,   256,   257,
-     258,   259,   260,   261,   262,    42,   272,   133,    43,   352,
-     134,   265,   279,   285,   268,   286,   293,   296,   323,   360,
+     195,   197,   198,   199,   232,   200,   201,   278,   221,   231,
+     237,   238,   241,   242,   243,   252,   234,   247,   248,   249,
+     250,   251,   340,   246,   265,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,    42,   277,   133,    43,   352,
+     134,   272,   279,   285,   268,   286,   293,   296,   323,   360,
      266,   267,   337,   294,   341,   365,   324,   342,   139,   140,
-     141,   142,   143,   343,   346,   310,   313,   350,   353,   357,
-     347,   202,   291,   264,   358,   319,   315,   297,   321,   317,
-     236,   271,     0,   280,   281,   322,     0,     0,   283,   284,
+     141,   142,   143,   343,   346,   310,   313,   350,   353,   264,
+     347,   357,   202,   236,   358,   319,   315,   291,   321,   317,
+     297,   271,     0,   280,   281,   322,     0,     0,   283,   284,
        0,     0,     0,     0,     0,     0,     0,     0,     0,   336,
        0,     0,     0,     0,     0,     0,     0,     0,   339,     0,
        0,     0,     0,     0,   344,     0,     0,     0,   351,    75,
@@ -1376,15 +1376,15 @@ static const yytype_int16 yycheck[] =
       45,   127,   128,   129,   130,   131,   132,   133,   134,   135,
      136,   137,   138,   139,   140,   141,   142,   143,   125,   145,
      278,    26,    26,   149,    26,    53,    52,    26,   154,    26,
-      26,   101,   101,   100,   160,    98,    98,   233,    26,   165,
-     166,    47,   168,   169,   170,    98,   163,   173,   174,   175,
-     176,   177,   328,    26,    98,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,    96,    52,    68,    99,   345,
-      71,    98,    43,    26,   200,    26,    26,    26,    53,   355,
+      26,   101,   101,   100,   160,    98,    98,   233,    26,    98,
+      26,    26,   168,   169,   170,    98,   163,   173,   174,   175,
+     176,   177,   328,    47,    98,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,    96,    26,    68,    99,   345,
+      71,    52,    43,    26,   200,    26,    26,    26,    53,   355,
      197,   198,    26,   272,    53,   361,    86,    34,    89,    90,
-      91,    92,    93,    85,    84,   291,   292,    53,    26,    84,
-      98,   125,   263,   192,    52,   301,   295,   275,   303,   298,
-     164,   201,    -1,   239,   240,   304,    -1,    -1,   244,   245,
+      91,    92,    93,    85,    84,   291,   292,    53,    26,   192,
+      98,    84,   125,   164,    52,   301,   295,   263,   303,   298,
+     275,   201,    -1,   239,   240,   304,    -1,    -1,   244,   245,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   325,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   327,    -1,
       -1,    -1,    -1,    -1,   333,    -1,    -1,    -1,   344,   275,
@@ -1655,7 +1655,7 @@ static const yytype_uint8 yystos[] =
       98,    98,   103,   122,   129,   129,   129,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
      129,    26,   150,    97,   129,    97,    97,    98,    97,   129,
-     150,    98,   129,   146,   128,    26,   132,   129,   129,    42,
+     150,    98,   129,   146,   128,    26,   132,    26,    26,    42,
       63,   129,   129,   129,    53,    63,    47,   129,   129,   129,
      129,   129,    98,   129,   129,   129,   129,   129,   129,   129,
      129,   129,   129,   118,   118,    98,   128,   128,   129,    27,
@@ -2371,18 +2371,30 @@ yyreduce:
 
   case 10:
 #line 247 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2376 "engines/director/lingo/lingo-gr.cpp"
+                                        {
+		g_lingo->code1(LC::c_varpush);
+		g_lingo->codeString((yyvsp[0].s)->c_str());
+		mVar((yyvsp[0].s), globalCheck());
+		g_lingo->code1(LC::c_after);
+		(yyval.code) = (yyvsp[-2].code);
+		delete (yyvsp[0].s); }
+#line 2382 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
-#line 248 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2382 "engines/director/lingo/lingo-gr.cpp"
+#line 254 "engines/director/lingo/lingo-gr.y"
+                                        {
+		g_lingo->code1(LC::c_varpush);
+		g_lingo->codeString((yyvsp[0].s)->c_str());
+		mVar((yyvsp[0].s), globalCheck());
+		g_lingo->code1(LC::c_before);
+		(yyval.code) = (yyvsp[-2].code);
+		delete (yyvsp[0].s); }
+#line 2394 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
-#line 249 "engines/director/lingo/lingo-gr.y"
+#line 261 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -2390,11 +2402,11 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2394 "engines/director/lingo/lingo-gr.cpp"
+#line 2406 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
-#line 256 "engines/director/lingo/lingo-gr.y"
+#line 268 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2402,11 +2414,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2406 "engines/director/lingo/lingo-gr.cpp"
+#line 2418 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
-#line 263 "engines/director/lingo/lingo-gr.y"
+#line 275 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -2414,11 +2426,11 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2418 "engines/director/lingo/lingo-gr.cpp"
+#line 2430 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
-#line 270 "engines/director/lingo/lingo-gr.y"
+#line 282 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2426,33 +2438,33 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2430 "engines/director/lingo/lingo-gr.cpp"
+#line 2442 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
-#line 277 "engines/director/lingo/lingo-gr.y"
+#line 289 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2441 "engines/director/lingo/lingo-gr.cpp"
+#line 2453 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
-#line 283 "engines/director/lingo/lingo-gr.y"
+#line 295 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2452 "engines/director/lingo/lingo-gr.cpp"
+#line 2464 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
-#line 290 "engines/director/lingo/lingo-gr.y"
+#line 302 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2464,11 +2476,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2468 "engines/director/lingo/lingo-gr.cpp"
+#line 2480 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
-#line 301 "engines/director/lingo/lingo-gr.y"
+#line 313 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectpropassign);
 		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
@@ -2476,11 +2488,11 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2480 "engines/director/lingo/lingo-gr.cpp"
+#line 2492 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 25:
-#line 319 "engines/director/lingo/lingo-gr.y"
+#line 331 "engines/director/lingo/lingo-gr.y"
                                                                                                 {
 		inst start = 0, end = 0;
 		WRITE_UINT32(&start, (yyvsp[-6].code) - (yyvsp[-1].code) + 1);
@@ -2488,32 +2500,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2492 "engines/director/lingo/lingo-gr.cpp"
+#line 2504 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 26:
-#line 332 "engines/director/lingo/lingo-gr.y"
+#line 344 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2500 "engines/director/lingo/lingo-gr.cpp"
+#line 2512 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 27:
-#line 336 "engines/director/lingo/lingo-gr.y"
+#line 348 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2507 "engines/director/lingo/lingo-gr.cpp"
+#line 2519 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28:
-#line 339 "engines/director/lingo/lingo-gr.y"
+#line 351 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2513 "engines/director/lingo/lingo-gr.cpp"
+#line 2525 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
-#line 339 "engines/director/lingo/lingo-gr.y"
+#line 351 "engines/director/lingo/lingo-gr.y"
                                                                                                       {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2534,32 +2546,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2538 "engines/director/lingo/lingo-gr.cpp"
+#line 2550 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
-#line 366 "engines/director/lingo/lingo-gr.y"
+#line 378 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2546 "engines/director/lingo/lingo-gr.cpp"
+#line 2558 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
-#line 370 "engines/director/lingo/lingo-gr.y"
+#line 382 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2553 "engines/director/lingo/lingo-gr.cpp"
+#line 2565 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
-#line 373 "engines/director/lingo/lingo-gr.y"
+#line 385 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2559 "engines/director/lingo/lingo-gr.cpp"
+#line 2571 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
-#line 374 "engines/director/lingo/lingo-gr.y"
+#line 386 "engines/director/lingo/lingo-gr.y"
                                                                 {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2580,32 +2592,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2584 "engines/director/lingo/lingo-gr.cpp"
+#line 2596 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
-#line 400 "engines/director/lingo/lingo-gr.y"
+#line 412 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);
 				  g_lingo->codeInt(0);
 				  Common::String count("count");
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2595 "engines/director/lingo/lingo-gr.cpp"
+#line 2607 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
-#line 407 "engines/director/lingo/lingo-gr.y"
+#line 419 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get counter
 				  g_lingo->codeInt(0);
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2605 "engines/director/lingo/lingo-gr.cpp"
+#line 2617 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
-#line 413 "engines/director/lingo/lingo-gr.y"
+#line 425 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get list
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_stackpeek);	// get counter
@@ -2616,11 +2628,11 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2620 "engines/director/lingo/lingo-gr.cpp"
+#line 2632 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
-#line 423 "engines/director/lingo/lingo-gr.y"
+#line 435 "engines/director/lingo/lingo-gr.y"
                                                         {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2640,11 +2652,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2644 "engines/director/lingo/lingo-gr.cpp"
+#line 2656 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
-#line 443 "engines/director/lingo/lingo-gr.y"
+#line 455 "engines/director/lingo/lingo-gr.y"
                         {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -2653,43 +2665,43 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2657 "engines/director/lingo/lingo-gr.cpp"
+#line 2669 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
-#line 451 "engines/director/lingo/lingo-gr.y"
+#line 463 "engines/director/lingo/lingo-gr.y"
                               {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2665 "engines/director/lingo/lingo-gr.cpp"
+#line 2677 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
-#line 454 "engines/director/lingo/lingo-gr.y"
+#line 466 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2671 "engines/director/lingo/lingo-gr.cpp"
+#line 2683 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
-#line 455 "engines/director/lingo/lingo-gr.y"
+#line 467 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2677 "engines/director/lingo/lingo-gr.cpp"
+#line 2689 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
-#line 457 "engines/director/lingo/lingo-gr.y"
+#line 469 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2683 "engines/director/lingo/lingo-gr.cpp"
+#line 2695 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
-#line 459 "engines/director/lingo/lingo-gr.y"
+#line 471 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2689 "engines/director/lingo/lingo-gr.cpp"
+#line 2701 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
-#line 461 "engines/director/lingo/lingo-gr.y"
+#line 473 "engines/director/lingo/lingo-gr.y"
                                                                                          {
 		inst else1 = 0, end3 = 0;
 		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
@@ -2697,11 +2709,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2701 "engines/director/lingo/lingo-gr.cpp"
+#line 2713 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
-#line 468 "engines/director/lingo/lingo-gr.y"
+#line 480 "engines/director/lingo/lingo-gr.y"
                                                                                                           {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-5].code) + 1 - (yyvsp[-8].code) + 1);
@@ -2709,107 +2721,107 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2713 "engines/director/lingo/lingo-gr.cpp"
+#line 2725 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
-#line 479 "engines/director/lingo/lingo-gr.y"
+#line 491 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2723 "engines/director/lingo/lingo-gr.cpp"
+#line 2735 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
-#line 485 "engines/director/lingo/lingo-gr.y"
+#line 497 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2731 "engines/director/lingo/lingo-gr.cpp"
+#line 2743 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
-#line 489 "engines/director/lingo/lingo-gr.y"
+#line 501 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2739 "engines/director/lingo/lingo-gr.cpp"
+#line 2751 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
-#line 493 "engines/director/lingo/lingo-gr.y"
+#line 505 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2747 "engines/director/lingo/lingo-gr.cpp"
+#line 2759 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
-#line 497 "engines/director/lingo/lingo-gr.y"
+#line 509 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2754 "engines/director/lingo/lingo-gr.cpp"
+#line 2766 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
-#line 500 "engines/director/lingo/lingo-gr.y"
+#line 512 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2760 "engines/director/lingo/lingo-gr.cpp"
+#line 2772 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54:
-#line 502 "engines/director/lingo/lingo-gr.y"
+#line 514 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2766 "engines/director/lingo/lingo-gr.cpp"
+#line 2778 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
-#line 506 "engines/director/lingo/lingo-gr.y"
+#line 518 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2774 "engines/director/lingo/lingo-gr.cpp"
+#line 2786 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
-#line 509 "engines/director/lingo/lingo-gr.y"
+#line 521 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2782 "engines/director/lingo/lingo-gr.cpp"
+#line 2794 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
-#line 512 "engines/director/lingo/lingo-gr.y"
+#line 524 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2791 "engines/director/lingo/lingo-gr.cpp"
+#line 2803 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
-#line 516 "engines/director/lingo/lingo-gr.y"
+#line 528 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2800 "engines/director/lingo/lingo-gr.cpp"
+#line 2812 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
-#line 520 "engines/director/lingo/lingo-gr.y"
+#line 532 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2809 "engines/director/lingo/lingo-gr.cpp"
+#line 2821 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62:
-#line 524 "engines/director/lingo/lingo-gr.y"
+#line 536 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2818,28 +2830,28 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2822 "engines/director/lingo/lingo-gr.cpp"
+#line 2834 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63:
-#line 532 "engines/director/lingo/lingo-gr.y"
+#line 544 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2833 "engines/director/lingo/lingo-gr.cpp"
+#line 2845 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64:
-#line 538 "engines/director/lingo/lingo-gr.y"
+#line 550 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2839 "engines/director/lingo/lingo-gr.cpp"
+#line 2851 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
-#line 540 "engines/director/lingo/lingo-gr.y"
+#line 552 "engines/director/lingo/lingo-gr.y"
                                 {
 		// Director parser till D3 was forgiving for any hanging parentheses
 		if (g_lingo->_ignoreError) {
@@ -2850,280 +2862,280 @@ yyreduce:
 			yyerrok;
 		}
 	}
-#line 2854 "engines/director/lingo/lingo-gr.cpp"
+#line 2866 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67:
-#line 551 "engines/director/lingo/lingo-gr.y"
+#line 563 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2860 "engines/director/lingo/lingo-gr.cpp"
+#line 2872 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
-#line 553 "engines/director/lingo/lingo-gr.y"
+#line 565 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2868 "engines/director/lingo/lingo-gr.cpp"
+#line 2880 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70:
-#line 556 "engines/director/lingo/lingo-gr.y"
+#line 568 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2876 "engines/director/lingo/lingo-gr.cpp"
+#line 2888 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
-#line 559 "engines/director/lingo/lingo-gr.y"
+#line 571 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2887 "engines/director/lingo/lingo-gr.cpp"
+#line 2899 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
-#line 565 "engines/director/lingo/lingo-gr.y"
+#line 577 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2893 "engines/director/lingo/lingo-gr.cpp"
+#line 2905 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73:
-#line 566 "engines/director/lingo/lingo-gr.y"
+#line 578 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2902 "engines/director/lingo/lingo-gr.cpp"
+#line 2914 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
-#line 570 "engines/director/lingo/lingo-gr.y"
+#line 582 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2910 "engines/director/lingo/lingo-gr.cpp"
+#line 2922 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
-#line 573 "engines/director/lingo/lingo-gr.y"
+#line 585 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2918 "engines/director/lingo/lingo-gr.cpp"
+#line 2930 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
-#line 576 "engines/director/lingo/lingo-gr.y"
+#line 588 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_objectproppush);
 		g_lingo->codeString((yyvsp[0].objectprop).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2929 "engines/director/lingo/lingo-gr.cpp"
+#line 2941 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
-#line 583 "engines/director/lingo/lingo-gr.y"
+#line 595 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2935 "engines/director/lingo/lingo-gr.cpp"
+#line 2947 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
-#line 584 "engines/director/lingo/lingo-gr.y"
+#line 596 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2941 "engines/director/lingo/lingo-gr.cpp"
+#line 2953 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
-#line 585 "engines/director/lingo/lingo-gr.y"
+#line 597 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2947 "engines/director/lingo/lingo-gr.cpp"
+#line 2959 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
-#line 586 "engines/director/lingo/lingo-gr.y"
+#line 598 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2953 "engines/director/lingo/lingo-gr.cpp"
+#line 2965 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
-#line 587 "engines/director/lingo/lingo-gr.y"
+#line 599 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2959 "engines/director/lingo/lingo-gr.cpp"
+#line 2971 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
-#line 588 "engines/director/lingo/lingo-gr.y"
+#line 600 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2965 "engines/director/lingo/lingo-gr.cpp"
+#line 2977 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
-#line 589 "engines/director/lingo/lingo-gr.y"
+#line 601 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2971 "engines/director/lingo/lingo-gr.cpp"
+#line 2983 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
-#line 590 "engines/director/lingo/lingo-gr.y"
+#line 602 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2977 "engines/director/lingo/lingo-gr.cpp"
+#line 2989 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
-#line 591 "engines/director/lingo/lingo-gr.y"
+#line 603 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2983 "engines/director/lingo/lingo-gr.cpp"
+#line 2995 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
-#line 592 "engines/director/lingo/lingo-gr.y"
+#line 604 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2989 "engines/director/lingo/lingo-gr.cpp"
+#line 3001 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
-#line 593 "engines/director/lingo/lingo-gr.y"
+#line 605 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2995 "engines/director/lingo/lingo-gr.cpp"
+#line 3007 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
-#line 594 "engines/director/lingo/lingo-gr.y"
+#line 606 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 3001 "engines/director/lingo/lingo-gr.cpp"
+#line 3013 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
-#line 595 "engines/director/lingo/lingo-gr.y"
+#line 607 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 3007 "engines/director/lingo/lingo-gr.cpp"
+#line 3019 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
-#line 596 "engines/director/lingo/lingo-gr.y"
+#line 608 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 3013 "engines/director/lingo/lingo-gr.cpp"
+#line 3025 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
-#line 597 "engines/director/lingo/lingo-gr.y"
+#line 609 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 3019 "engines/director/lingo/lingo-gr.cpp"
+#line 3031 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
-#line 598 "engines/director/lingo/lingo-gr.y"
+#line 610 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 3025 "engines/director/lingo/lingo-gr.cpp"
+#line 3037 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
-#line 599 "engines/director/lingo/lingo-gr.y"
+#line 611 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 3031 "engines/director/lingo/lingo-gr.cpp"
+#line 3043 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
-#line 600 "engines/director/lingo/lingo-gr.y"
+#line 612 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 3037 "engines/director/lingo/lingo-gr.cpp"
+#line 3049 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
-#line 601 "engines/director/lingo/lingo-gr.y"
+#line 613 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
-#line 3043 "engines/director/lingo/lingo-gr.cpp"
+#line 3055 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
-#line 602 "engines/director/lingo/lingo-gr.y"
+#line 614 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 3049 "engines/director/lingo/lingo-gr.cpp"
+#line 3061 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
-#line 603 "engines/director/lingo/lingo-gr.y"
+#line 615 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 3067 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
-#line 604 "engines/director/lingo/lingo-gr.y"
+#line 616 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 3061 "engines/director/lingo/lingo-gr.cpp"
+#line 3073 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
-#line 606 "engines/director/lingo/lingo-gr.y"
+#line 618 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
-#line 3067 "engines/director/lingo/lingo-gr.cpp"
+#line 3079 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
-#line 607 "engines/director/lingo/lingo-gr.y"
+#line 619 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 3073 "engines/director/lingo/lingo-gr.cpp"
+#line 3085 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
-#line 608 "engines/director/lingo/lingo-gr.y"
+#line 620 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3079 "engines/director/lingo/lingo-gr.cpp"
+#line 3091 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
-#line 609 "engines/director/lingo/lingo-gr.y"
+#line 621 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 3085 "engines/director/lingo/lingo-gr.cpp"
+#line 3097 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104:
-#line 610 "engines/director/lingo/lingo-gr.y"
+#line 622 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3091 "engines/director/lingo/lingo-gr.cpp"
+#line 3103 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
-#line 611 "engines/director/lingo/lingo-gr.y"
+#line 623 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 3097 "engines/director/lingo/lingo-gr.cpp"
+#line 3109 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
-#line 612 "engines/director/lingo/lingo-gr.y"
+#line 624 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3103 "engines/director/lingo/lingo-gr.cpp"
+#line 3115 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
-#line 613 "engines/director/lingo/lingo-gr.y"
+#line 625 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 3109 "engines/director/lingo/lingo-gr.cpp"
+#line 3121 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
-#line 615 "engines/director/lingo/lingo-gr.y"
+#line 627 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 3117 "engines/director/lingo/lingo-gr.cpp"
+#line 3129 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
-#line 620 "engines/director/lingo/lingo-gr.y"
+#line 632 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3123 "engines/director/lingo/lingo-gr.cpp"
+#line 3135 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
-#line 623 "engines/director/lingo/lingo-gr.y"
+#line 635 "engines/director/lingo/lingo-gr.y"
                                                 {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -3132,260 +3144,260 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 3136 "engines/director/lingo/lingo-gr.cpp"
+#line 3148 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114:
-#line 631 "engines/director/lingo/lingo-gr.y"
+#line 643 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3142 "engines/director/lingo/lingo-gr.cpp"
+#line 3154 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
-#line 632 "engines/director/lingo/lingo-gr.y"
+#line 644 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3148 "engines/director/lingo/lingo-gr.cpp"
+#line 3160 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
-#line 632 "engines/director/lingo/lingo-gr.y"
+#line 644 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 3154 "engines/director/lingo/lingo-gr.cpp"
+#line 3166 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117:
-#line 633 "engines/director/lingo/lingo-gr.y"
+#line 645 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3160 "engines/director/lingo/lingo-gr.cpp"
+#line 3172 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
-#line 633 "engines/director/lingo/lingo-gr.y"
+#line 645 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3166 "engines/director/lingo/lingo-gr.cpp"
+#line 3178 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
-#line 634 "engines/director/lingo/lingo-gr.y"
+#line 646 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3172 "engines/director/lingo/lingo-gr.cpp"
+#line 3184 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
-#line 634 "engines/director/lingo/lingo-gr.y"
+#line 646 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3178 "engines/director/lingo/lingo-gr.cpp"
+#line 3190 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
-#line 635 "engines/director/lingo/lingo-gr.y"
+#line 647 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3186 "engines/director/lingo/lingo-gr.cpp"
+#line 3198 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122:
-#line 638 "engines/director/lingo/lingo-gr.y"
+#line 650 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3194 "engines/director/lingo/lingo-gr.cpp"
+#line 3206 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123:
-#line 641 "engines/director/lingo/lingo-gr.y"
+#line 653 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
-#line 3200 "engines/director/lingo/lingo-gr.cpp"
+#line 3212 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
-#line 642 "engines/director/lingo/lingo-gr.y"
+#line 654 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3206 "engines/director/lingo/lingo-gr.cpp"
+#line 3218 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
-#line 644 "engines/director/lingo/lingo-gr.y"
+#line 656 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3214 "engines/director/lingo/lingo-gr.cpp"
+#line 3226 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
-#line 647 "engines/director/lingo/lingo-gr.y"
+#line 659 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3222 "engines/director/lingo/lingo-gr.cpp"
+#line 3234 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
-#line 651 "engines/director/lingo/lingo-gr.y"
+#line 663 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3230 "engines/director/lingo/lingo-gr.cpp"
+#line 3242 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128:
-#line 654 "engines/director/lingo/lingo-gr.y"
+#line 666 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3238 "engines/director/lingo/lingo-gr.cpp"
+#line 3250 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129:
-#line 658 "engines/director/lingo/lingo-gr.y"
+#line 670 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3246 "engines/director/lingo/lingo-gr.cpp"
+#line 3258 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
-#line 661 "engines/director/lingo/lingo-gr.y"
+#line 673 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3254 "engines/director/lingo/lingo-gr.cpp"
+#line 3266 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
-#line 672 "engines/director/lingo/lingo-gr.y"
+#line 684 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3260 "engines/director/lingo/lingo-gr.cpp"
+#line 3272 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
-#line 673 "engines/director/lingo/lingo-gr.y"
+#line 685 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3266 "engines/director/lingo/lingo-gr.cpp"
+#line 3278 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133:
-#line 674 "engines/director/lingo/lingo-gr.y"
+#line 686 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3272 "engines/director/lingo/lingo-gr.cpp"
+#line 3284 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
-#line 675 "engines/director/lingo/lingo-gr.y"
+#line 687 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3281 "engines/director/lingo/lingo-gr.cpp"
+#line 3293 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
-#line 679 "engines/director/lingo/lingo-gr.y"
+#line 691 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3290 "engines/director/lingo/lingo-gr.cpp"
+#line 3302 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
-#line 683 "engines/director/lingo/lingo-gr.y"
+#line 695 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3299 "engines/director/lingo/lingo-gr.cpp"
+#line 3311 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
-#line 691 "engines/director/lingo/lingo-gr.y"
+#line 703 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3308 "engines/director/lingo/lingo-gr.cpp"
+#line 3320 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140:
-#line 695 "engines/director/lingo/lingo-gr.y"
+#line 707 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3317 "engines/director/lingo/lingo-gr.cpp"
+#line 3329 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
-#line 699 "engines/director/lingo/lingo-gr.y"
+#line 711 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3326 "engines/director/lingo/lingo-gr.cpp"
+#line 3338 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
-#line 703 "engines/director/lingo/lingo-gr.y"
+#line 715 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3332 "engines/director/lingo/lingo-gr.cpp"
+#line 3344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
-#line 703 "engines/director/lingo/lingo-gr.y"
+#line 715 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3341 "engines/director/lingo/lingo-gr.cpp"
+#line 3353 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
-#line 733 "engines/director/lingo/lingo-gr.y"
+#line 745 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3347 "engines/director/lingo/lingo-gr.cpp"
+#line 3359 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
-#line 733 "engines/director/lingo/lingo-gr.y"
+#line 745 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory = NULL; }
-#line 3353 "engines/director/lingo/lingo-gr.cpp"
+#line 3365 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
-#line 734 "engines/director/lingo/lingo-gr.y"
+#line 746 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3363 "engines/director/lingo/lingo-gr.cpp"
+#line 3375 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
-#line 739 "engines/director/lingo/lingo-gr.y"
+#line 751 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3369 "engines/director/lingo/lingo-gr.cpp"
+#line 3381 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
-#line 740 "engines/director/lingo/lingo-gr.y"
+#line 752 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
-#line 3375 "engines/director/lingo/lingo-gr.cpp"
+#line 3387 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
-#line 741 "engines/director/lingo/lingo-gr.y"
+#line 753 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg), g_lingo->_currentFactory);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3385 "engines/director/lingo/lingo-gr.cpp"
+#line 3397 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
-#line 746 "engines/director/lingo/lingo-gr.y"
+#line 758 "engines/director/lingo/lingo-gr.y"
                                                                    {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3394,70 +3406,70 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3398 "engines/director/lingo/lingo-gr.cpp"
+#line 3410 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151:
-#line 754 "engines/director/lingo/lingo-gr.y"
+#line 766 "engines/director/lingo/lingo-gr.y"
                                                {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3408 "engines/director/lingo/lingo-gr.cpp"
+#line 3420 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 152:
-#line 760 "engines/director/lingo/lingo-gr.y"
+#line 772 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3414 "engines/director/lingo/lingo-gr.cpp"
+#line 3426 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
-#line 760 "engines/director/lingo/lingo-gr.y"
+#line 772 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory = NULL; }
-#line 3421 "engines/director/lingo/lingo-gr.cpp"
+#line 3433 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
-#line 763 "engines/director/lingo/lingo-gr.y"
+#line 775 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3427 "engines/director/lingo/lingo-gr.cpp"
+#line 3439 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
-#line 764 "engines/director/lingo/lingo-gr.y"
+#line 776 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3433 "engines/director/lingo/lingo-gr.cpp"
+#line 3445 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
-#line 765 "engines/director/lingo/lingo-gr.y"
+#line 777 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3439 "engines/director/lingo/lingo-gr.cpp"
+#line 3451 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
-#line 768 "engines/director/lingo/lingo-gr.y"
+#line 780 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3445 "engines/director/lingo/lingo-gr.cpp"
+#line 3457 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
-#line 769 "engines/director/lingo/lingo-gr.y"
+#line 781 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3451 "engines/director/lingo/lingo-gr.cpp"
+#line 3463 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
-#line 771 "engines/director/lingo/lingo-gr.y"
+#line 783 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3457 "engines/director/lingo/lingo-gr.cpp"
+#line 3469 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
-#line 773 "engines/director/lingo/lingo-gr.y"
+#line 785 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3465,113 +3477,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3469 "engines/director/lingo/lingo-gr.cpp"
+#line 3481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
-#line 781 "engines/director/lingo/lingo-gr.y"
+#line 793 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3475 "engines/director/lingo/lingo-gr.cpp"
+#line 3487 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
-#line 782 "engines/director/lingo/lingo-gr.y"
+#line 794 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3481 "engines/director/lingo/lingo-gr.cpp"
+#line 3493 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
-#line 783 "engines/director/lingo/lingo-gr.y"
+#line 795 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3487 "engines/director/lingo/lingo-gr.cpp"
+#line 3499 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
-#line 785 "engines/director/lingo/lingo-gr.y"
+#line 797 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3493 "engines/director/lingo/lingo-gr.cpp"
+#line 3505 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
-#line 786 "engines/director/lingo/lingo-gr.y"
+#line 798 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3499 "engines/director/lingo/lingo-gr.cpp"
+#line 3511 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
-#line 788 "engines/director/lingo/lingo-gr.y"
+#line 800 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3505 "engines/director/lingo/lingo-gr.cpp"
+#line 3517 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
-#line 790 "engines/director/lingo/lingo-gr.y"
+#line 802 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3511 "engines/director/lingo/lingo-gr.cpp"
+#line 3523 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
-#line 791 "engines/director/lingo/lingo-gr.y"
+#line 803 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3517 "engines/director/lingo/lingo-gr.cpp"
+#line 3529 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170:
-#line 792 "engines/director/lingo/lingo-gr.y"
+#line 804 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3523 "engines/director/lingo/lingo-gr.cpp"
+#line 3535 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
-#line 793 "engines/director/lingo/lingo-gr.y"
+#line 805 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3529 "engines/director/lingo/lingo-gr.cpp"
+#line 3541 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172:
-#line 795 "engines/director/lingo/lingo-gr.y"
+#line 807 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3535 "engines/director/lingo/lingo-gr.cpp"
+#line 3547 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 173:
-#line 796 "engines/director/lingo/lingo-gr.y"
+#line 808 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3541 "engines/director/lingo/lingo-gr.cpp"
+#line 3553 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 174:
-#line 798 "engines/director/lingo/lingo-gr.y"
+#line 810 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3547 "engines/director/lingo/lingo-gr.cpp"
+#line 3559 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 175:
-#line 799 "engines/director/lingo/lingo-gr.y"
+#line 811 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3553 "engines/director/lingo/lingo-gr.cpp"
+#line 3565 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 176:
-#line 801 "engines/director/lingo/lingo-gr.y"
+#line 813 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3562 "engines/director/lingo/lingo-gr.cpp"
+#line 3574 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 177:
-#line 805 "engines/director/lingo/lingo-gr.y"
+#line 817 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3571 "engines/director/lingo/lingo-gr.cpp"
+#line 3583 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3575 "engines/director/lingo/lingo-gr.cpp"
+#line 3587 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3770,7 +3782,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 811 "engines/director/lingo/lingo-gr.y"
+#line 823 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index e6410e4bb3..4dc015b36c 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -244,8 +244,20 @@ asgn: tPUT expr tINTO ID 		{
 		g_lingo->codeInt($THEMENUITEMSENTITY[1]);
 		g_lingo->code1(LC::c_assign);
 		$$ = $expr; }
-	| tPUT expr tAFTER expr 		{ $$ = g_lingo->code1(LC::c_after); }		// D3
-	| tPUT expr tBEFORE expr 		{ $$ = g_lingo->code1(LC::c_before); }		// D3
+	| tPUT expr tAFTER ID 		{
+		g_lingo->code1(LC::c_varpush);
+		g_lingo->codeString($ID->c_str());
+		mVar($ID, globalCheck());
+		g_lingo->code1(LC::c_after);
+		$$ = $expr;
+		delete $ID; }		// D3
+	| tPUT expr tBEFORE ID 		{
+		g_lingo->code1(LC::c_varpush);
+		g_lingo->codeString($ID->c_str());
+		mVar($ID, globalCheck());
+		g_lingo->code1(LC::c_before);
+		$$ = $expr;
+		delete $ID; }		// D3
 	| tSET ID tEQ expr			{
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString($ID->c_str());
diff --git a/engines/director/lingo/lingo-preprocessor.cpp b/engines/director/lingo/lingo-preprocessor.cpp
index 0765b9298c..a8e6bd4a2a 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -521,7 +521,7 @@ Common::String preprocessReturn(Common::String in) {
 
 		if (prev.hasSuffix("&") || prev.hasSuffix("&&") || prev.hasSuffix("=") ||
 				next.hasPrefix("&") || next.hasPrefix("&&") || prev.hasSuffix(",") ||
-				next.hasPrefix(")")) {
+				next.hasPrefix(")") || prev.equalsIgnoreCase("put")) {
 			res += "scummvm_"; // Turn it into scummvm_return
 		}
 


Commit: 2f1a96a6cf9be0dd4f2e031a8fe6999115552188
    https://github.com/scummvm/scummvm/commit/2f1a96a6cf9be0dd4f2e031a8fe6999115552188
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-18T22:27:59-04:00

Commit Message:
DIRECTOR: LINGO: Add tEQ versions of assignments

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 8f9353b9b2..6f9a97da5a 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -818,16 +818,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  124
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2643
+#define YYLAST   2596
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  102
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  59
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  177
+#define YYNRULES  179
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  372
+#define YYNSTATES  376
 
 #define YYMAXUTOK   341
 
@@ -886,22 +886,22 @@ static const yytype_int16 yyrline[] =
 {
        0,   218,   218,   219,   221,   222,   223,   225,   232,   236,
      247,   254,   261,   268,   275,   282,   289,   295,   302,   313,
-     321,   322,   323,   325,   326,   331,   344,   348,   351,   343,
-     378,   382,   385,   377,   412,   419,   425,   411,   455,   463,
-     466,   467,   469,   471,   473,   480,   488,   489,   491,   497,
-     501,   505,   509,   512,   514,   515,   516,   518,   521,   524,
-     528,   532,   536,   544,   550,   551,   552,   563,   564,   565,
-     568,   571,   577,   577,   582,   585,   588,   594,   595,   596,
-     597,   598,   599,   600,   601,   602,   603,   604,   605,   606,
-     607,   608,   609,   610,   611,   612,   613,   614,   615,   616,
-     618,   619,   620,   621,   622,   623,   624,   625,   627,   630,
-     632,   633,   634,   635,   643,   644,   644,   645,   645,   646,
-     646,   647,   650,   653,   654,   656,   659,   663,   666,   670,
-     673,   684,   685,   686,   687,   691,   695,   700,   701,   703,
-     707,   711,   715,   715,   745,   745,   745,   751,   752,   752,
-     758,   766,   772,   772,   775,   776,   777,   779,   780,   781,
-     783,   785,   793,   794,   795,   797,   798,   800,   802,   803,
-     804,   805,   807,   808,   810,   811,   813,   817
+     324,   331,   339,   340,   341,   343,   344,   349,   362,   366,
+     369,   361,   396,   400,   403,   395,   430,   437,   443,   429,
+     473,   481,   484,   485,   487,   489,   491,   498,   506,   507,
+     509,   515,   519,   523,   527,   530,   532,   533,   534,   536,
+     539,   542,   546,   550,   554,   562,   568,   569,   570,   581,
+     582,   583,   586,   589,   595,   595,   600,   603,   606,   612,
+     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
+     623,   624,   625,   626,   627,   628,   629,   630,   631,   632,
+     633,   634,   636,   637,   638,   639,   640,   641,   642,   643,
+     645,   648,   650,   651,   652,   653,   661,   662,   662,   663,
+     663,   664,   664,   665,   668,   671,   672,   674,   677,   681,
+     684,   688,   691,   702,   703,   704,   705,   709,   713,   718,
+     719,   721,   725,   729,   733,   733,   763,   763,   763,   769,
+     770,   770,   776,   784,   790,   790,   793,   794,   795,   797,
+     798,   799,   801,   803,   811,   812,   813,   815,   816,   818,
+     820,   821,   822,   823,   825,   826,   828,   829,   831,   835
 };
 #endif
 
@@ -966,12 +966,12 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-316)
+#define YYPACT_NINF (-320)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-169)
+#define YYTABLE_NINF (-171)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -980,44 +980,44 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     776,   -80,  -316,  -316,    89,  -316,   602,   324,    89,   -26,
-     505,  -316,  -316,  -316,  -316,  -316,   -18,  -316,  1772,  -316,
-    -316,  -316,    -8,  2010,    40,    48,    25,    63,  2046,  1808,
-    -316,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  -316,  -316,
-    2046,  2046,  2046,   417,   111,    18,  -316,  -316,  -316,  -316,
-    2046,  -316,  2537,  -316,  -316,  -316,  -316,  -316,  -316,  -316,
-    -316,  -316,  -316,  -316,  -316,    16,  2010,  1888,  2537,    19,
-    1888,    19,  -316,    89,  1924,  2537,    21,   689,  -316,  -316,
-      88,  2046,  -316,    75,  -316,  2118,  -316,   115,  -316,   116,
-     390,   118,  -316,    10,    89,    89,    17,    92,    94,  -316,
-    2454,  2118,  -316,   121,  -316,  2151,  2184,  2217,  2250,  2504,
-    2415,   123,   124,  -316,  -316,  2467,    50,    51,  -316,  2537,
-      53,    57,    58,  -316,  -316,   776,  2537,  2046,  2046,  2046,
-    2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,
-    2046,  2046,  2046,  2046,   132,  1924,   390,  2467,   -40,  2046,
-       4,  -316,    -4,     7,  2046,    19,   132,  -316,    61,  2537,
-    2046,  -316,  -316,    89,   -21,   134,   135,   -22,  2046,  2046,
-    2046,    24,   126,  2046,  2046,  2046,  2046,  2046,  -316,  -316,
-      67,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,  2046,
-    2046,  -316,  -316,  -316,    76,  -316,  -316,    89,    89,  -316,
-    2046,    55,  -316,   139,   119,   119,   119,   119,  2550,  2550,
-    -316,   -44,   119,   119,   119,   119,   -44,   -54,   -54,  -316,
-    -316,  -316,   -55,  -316,  2537,  -316,  -316,  -316,  -316,  2537,
-     -12,   160,  2537,  -316,   149,  -316,  -316,  -316,  -316,  2046,
-    2046,  2537,  2537,   119,  2046,  2046,   167,  2537,   119,  2537,
-    2537,  2537,   169,  2537,  2283,  2537,  2316,  2537,  2349,  2537,
-    2382,  2537,  2537,  1692,  -316,   170,  -316,  -316,  2537,    50,
-      51,  -316,  -316,  -316,   171,  2046,  -316,  -316,   132,  2046,
-    2537,  2085,  -316,  2537,   119,    89,  -316,  2046,  2046,  2046,
-    2046,  -316,  1193,  -316,  1109,  -316,  -316,    11,  -316,    -7,
-    2537,  -316,  -316,  -316,  -316,   145,  2537,  2537,  2537,  2537,
-    -316,  -316,  -316,   120,  -316,   860,  -316,   943,  -316,  -316,
-    -316,  -316,  1276,  2046,  -316,    64,   176,  -316,  -316,   151,
-     173,   128,  2537,  -316,  2046,  -316,   130,  -316,   122,  1026,
-    -316,  2046,   164,  -316,  1359,  2537,  -316,   192,  -316,  2537,
-    2046,   137,   172,  -316,  -316,  -316,  2537,  -316,  -316,  1443,
-    -316,  -316,  1109,  -316,  -316,  -316,  -316,  1526,  -316,  -316,
-    1609,  -316
+     780,   -80,  -320,  -320,    56,  -320,   606,   328,    56,   -28,
+     509,  -320,  -320,  -320,  -320,  -320,   -18,  -320,  1776,  -320,
+    -320,  -320,    -8,  2014,    85,    77,    25,    62,  2050,  1812,
+    -320,  2050,  2050,  2050,  2050,  2050,  2050,  2050,  -320,  -320,
+    2050,  2050,  2050,   421,    93,     5,  -320,  -320,  -320,  -320,
+    2050,  -320,  2490,  -320,  -320,  -320,  -320,  -320,  -320,  -320,
+    -320,  -320,  -320,  -320,  -320,     8,  2014,  1892,  2490,    20,
+    1892,    20,  -320,    56,  1928,  2490,    22,   693,  -320,  -320,
+      88,  2050,  -320,   106,  -320,  2071,  -320,   127,  -320,   133,
+     394,   134,  -320,    27,    56,    56,    28,    36,   109,  -320,
+    2407,  2071,  -320,   147,  -320,  2104,  2137,  2170,  2203,  2457,
+    2368,   148,   160,  -320,  -320,  2420,    86,    89,  -320,  2490,
+      92,    91,    96,  -320,  -320,   780,  2490,  2050,  2050,  2050,
+    2050,  2050,  2050,  2050,  2050,  2050,  2050,  2050,  2050,  2050,
+    2050,  2050,  2050,  2050,   170,  1928,   394,  2420,   -39,  2050,
+      47,  -320,   -31,    49,  2050,    20,   170,  -320,   100,  2490,
+    2050,  -320,  -320,    56,   -21,   173,   174,   -22,  2050,  2050,
+    2050,    39,   157,  2050,  2050,  2050,  2050,  2050,  2050,  -320,
+    -320,   107,  2050,  2050,  2050,  2050,  2050,  2050,  2050,  2050,
+    2050,  2050,  -320,  -320,  -320,   108,  -320,  -320,    56,    56,
+    -320,  2050,    90,  -320,   155,    16,    16,    16,    16,  2503,
+    2503,  -320,   -44,    16,    16,    16,    16,   -44,   -54,   -54,
+    -320,  -320,  -320,   -55,  -320,  2490,  -320,  -320,  -320,  -320,
+    2490,    17,   182,  2490,  -320,   167,  -320,  -320,  -320,  -320,
+    2050,  2050,  2490,  2490,    16,  2050,  2050,   185,  2490,    16,
+    2490,    16,  2490,  2490,   186,  2490,  2236,  2490,  2269,  2490,
+    2302,  2490,  2335,  2490,  2490,  1696,  -320,   187,  -320,  -320,
+    2490,    86,    89,  -320,  -320,  -320,   188,  2050,  -320,  -320,
+     170,  2050,  2490,   234,  -320,  2490,    16,    56,  -320,  2050,
+    2050,  2050,  2050,  -320,  1197,  -320,  1113,  -320,  -320,    52,
+    -320,    18,  2490,  -320,  -320,  -320,  -320,    48,  2490,  2490,
+    2490,  2490,  -320,  -320,  -320,   129,  -320,   864,  -320,   947,
+    -320,  -320,  -320,  -320,  1280,  2050,  2050,  -320,   121,   190,
+    -320,  -320,   166,   189,   135,  2490,    16,  -320,  2050,  -320,
+     138,  -320,   126,  1030,  -320,  2050,   172,  -320,  1363,  2490,
+    -320,   200,  -320,  2490,  2050,   145,   178,  -320,  -320,  -320,
+    2490,  -320,  -320,  1447,  -320,  -320,  1113,  -320,  -320,  -320,
+    -320,  1530,  -320,  -320,  1613,  -320
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1025,66 +1025,66 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    57,    62,     0,    58,     0,     0,     0,     0,
-       0,    60,    59,   142,   148,    76,   114,   115,     0,   131,
-      52,   144,     0,     0,     0,     0,     0,     0,     0,     0,
-     119,     0,     0,     0,     0,     0,     0,     0,   117,   152,
-       0,     0,     0,     0,     0,     2,    77,    23,     6,    24,
-       0,    67,    21,   109,    68,    22,   111,   112,     5,    53,
-      20,    65,    66,    61,    63,    61,     0,     0,   163,   122,
-       0,    70,   108,     0,     0,   165,   161,     0,    53,   113,
-       0,     0,   132,     0,   133,   134,   136,     0,    38,     0,
-     110,     0,    53,     0,     0,     0,     0,     0,     0,   147,
-     124,   139,   141,     0,    91,     0,     0,     0,     0,     0,
-       0,     0,     0,    96,    97,     0,    60,    59,   169,   172,
-       0,   170,   171,   174,     1,     0,    49,     0,     0,     0,
+       0,     0,    59,    64,     0,    60,     0,     0,     0,     0,
+       0,    62,    61,   144,   150,    78,   116,   117,     0,   133,
+      54,   146,     0,     0,     0,     0,     0,     0,     0,     0,
+     121,     0,     0,     0,     0,     0,     0,     0,   119,   154,
+       0,     0,     0,     0,     0,     2,    79,    25,     6,    26,
+       0,    69,    23,   111,    70,    24,   113,   114,     5,    55,
+      22,    67,    68,    63,    65,    63,     0,     0,   165,   124,
+       0,    72,   110,     0,     0,   167,   163,     0,    55,   115,
+       0,     0,   134,     0,   135,   136,   138,     0,    40,     0,
+     112,     0,    55,     0,     0,     0,     0,     0,     0,   149,
+     126,   141,   143,     0,    93,     0,     0,     0,     0,     0,
+       0,     0,     0,    98,    99,     0,    62,    61,   171,   174,
+       0,   172,   173,   176,     1,     0,    51,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   154,     0,     0,   163,     0,     0,
-       0,    75,    61,     0,     0,   143,   154,   125,   116,   138,
-       0,   135,   145,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   140,   129,
-     120,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    43,    43,   127,   118,   153,    64,     0,     0,   167,
-       0,     0,     3,     0,    87,    88,    85,    86,    89,    90,
-      82,    93,    94,    95,    84,    83,    92,    78,    79,    80,
-      81,   155,     0,   121,   164,    69,    71,    72,    74,   166,
-       0,     0,   137,    53,     0,     7,     8,    10,    11,     0,
-       0,    49,    15,    13,     0,     0,     0,    14,    12,    19,
-      39,   123,     0,   100,     0,   102,     0,   104,     0,   106,
-       0,    98,    99,     0,    54,     0,   177,   176,   173,     0,
-       0,   175,    54,   160,     0,     0,   160,   126,   154,     0,
-      34,    26,    42,    16,    17,     0,   130,     0,     0,     0,
-       0,    53,     0,   128,     0,    54,   156,     0,    54,     0,
-       9,    53,    51,    51,    54,     0,   101,   103,   105,   107,
-      41,    55,    56,     0,    46,     0,    73,     0,   160,    35,
-      27,    31,     0,     0,    40,    53,   157,    54,    49,     0,
-       0,     0,    18,    54,     0,    47,     0,   158,   150,     0,
-      36,     0,     0,    25,     0,    49,    44,     0,    42,    28,
-       0,     0,     0,   159,    54,    49,    32,    45,    54,     0,
-      42,    49,     0,    37,    54,    42,    48,     0,    54,    29,
-       0,    33
+       0,     0,     0,     0,   156,     0,     0,   165,     0,     0,
+       0,    77,    63,     0,     0,   145,   156,   127,   118,   140,
+       0,   137,   147,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   142,
+     131,   122,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    45,    45,   129,   120,   155,    66,     0,     0,
+     169,     0,     0,     3,     0,    89,    90,    87,    88,    91,
+      92,    84,    95,    96,    97,    86,    85,    94,    80,    81,
+      82,    83,   157,     0,   123,   166,    71,    73,    74,    76,
+     168,     0,     0,   139,    55,     0,     7,     8,    10,    11,
+       0,     0,    51,    15,    13,     0,     0,     0,    14,    12,
+      20,    21,    41,   125,     0,   102,     0,   104,     0,   106,
+       0,   108,     0,   100,   101,     0,    56,     0,   179,   178,
+     175,     0,     0,   177,    56,   162,     0,     0,   162,   128,
+     156,     0,    36,    28,    44,    16,    17,     0,   132,     0,
+       0,     0,     0,    55,     0,   130,     0,    56,   158,     0,
+      56,     0,     9,    55,    53,    53,    56,     0,   103,   105,
+     107,   109,    43,    57,    58,     0,    48,     0,    75,     0,
+     162,    37,    29,    33,     0,     0,     0,    42,    55,   159,
+      56,    51,     0,     0,     0,    18,    19,    56,     0,    49,
+       0,   160,   152,     0,    38,     0,     0,    27,     0,    51,
+      46,     0,    44,    30,     0,     0,     0,   161,    56,    51,
+      34,    47,    56,     0,    44,    51,     0,    39,    56,    44,
+      50,     0,    56,    31,     0,    35
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -316,    97,  -316,  -316,   -36,    13,  -316,  -316,  -316,  -316,
-    -316,  -316,  -316,  -316,  -316,  -315,    27,  -316,  -316,  -316,
-    -156,  -303,   -75,  -316,   -76,   -69,     3,    -6,  -316,  -316,
-      59,  -316,  -316,  -316,  -316,  -316,  -316,  -316,  -316,   -23,
-    -316,  -316,  -316,  -316,  -316,  -316,  -316,  -316,  -138,  -316,
-    -266,  -316,     2,   -45,  -316,  -316,  -316,  -316,    30
+    -320,   111,  -320,  -320,   -34,    13,  -320,  -320,  -320,  -320,
+    -320,  -320,  -320,  -320,  -320,  -319,    40,  -320,  -320,  -320,
+    -156,  -314,   -73,  -320,   -76,  -109,     3,    -6,  -320,  -320,
+      73,  -320,  -320,  -320,  -320,  -320,  -320,  -320,  -320,   -23,
+    -320,  -320,  -320,  -320,  -320,  -320,  -320,  -320,  -138,  -320,
+    -257,  -320,     2,   -36,  -320,  -320,  -320,  -320,    41
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    44,    45,    46,    47,   312,   302,   329,   355,   303,
-     330,   361,   301,   328,   348,   304,   263,    49,   325,   335,
-     203,   314,   320,    50,   144,   292,    51,    52,   275,    53,
-      54,    55,    80,   111,   103,   158,   194,   180,    56,    86,
-      57,    77,    58,    87,   233,    78,    59,   112,   222,   338,
-     295,    60,   153,    76,    61,   120,   121,   122,   123
+      -1,    44,    45,    46,    47,   314,   304,   332,   359,   305,
+     333,   365,   303,   331,   352,   306,   265,    49,   328,   339,
+     204,   316,   322,    50,   144,   294,    51,    52,   277,    53,
+      54,    55,    80,   111,   103,   158,   195,   181,    56,    86,
+      57,    77,    58,    87,   234,    78,    59,   112,   223,   342,
+     297,    60,   153,    76,    61,   120,   121,   122,   123
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1092,421 +1092,433 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      68,    68,   156,     8,    75,   235,   102,    64,    69,    71,
-     298,    72,    85,    48,   133,    62,   168,    90,   230,   331,
-     239,    73,   100,   101,   133,   104,   105,   106,   107,   108,
-     109,   110,    79,   354,   113,   114,   115,   119,   142,   143,
-     273,   240,    88,   274,   126,   364,   140,   141,   142,   143,
-     368,    98,   327,    32,    33,    34,    35,   223,   149,   366,
-     146,   147,   161,   169,   147,    93,    94,    95,   147,   148,
-     173,    68,   150,   170,    96,   159,   151,   244,   178,   155,
-     174,    97,   269,   276,   270,   282,   274,   245,   318,    99,
-       1,   274,   145,   226,   227,    91,    92,   171,   172,   333,
-     334,   225,   149,     2,   228,   149,     3,     4,   316,   154,
-       5,   124,   145,   125,   157,    63,    11,   149,    12,   154,
-     160,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,    48,    68,
-     299,   162,   163,   224,   167,   175,   176,   179,   229,   193,
-     195,   197,   198,   199,   232,   200,   201,   278,   221,   231,
-     237,   238,   241,   242,   243,   252,   234,   247,   248,   249,
-     250,   251,   340,   246,   265,   253,   254,   255,   256,   257,
-     258,   259,   260,   261,   262,    42,   277,   133,    43,   352,
-     134,   272,   279,   285,   268,   286,   293,   296,   323,   360,
-     266,   267,   337,   294,   341,   365,   324,   342,   139,   140,
-     141,   142,   143,   343,   346,   310,   313,   350,   353,   264,
-     347,   357,   202,   236,   358,   319,   315,   291,   321,   317,
-     297,   271,     0,   280,   281,   322,     0,     0,   283,   284,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   336,
-       0,     0,     0,     0,     0,     0,     0,     0,   339,     0,
-       0,     0,     0,     0,   344,     0,     0,     0,   351,    75,
-       0,     0,     0,   300,     0,     0,     0,     0,     0,     0,
-       0,   306,   307,   308,   309,   359,     0,     0,   305,   362,
-       0,     0,     0,     0,     0,   367,     0,     0,     0,   370,
+      68,    68,   156,     8,    75,   236,   102,    64,    69,    71,
+     334,    72,    85,    48,   133,    62,   168,    90,   231,    73,
+     240,   300,   100,   101,   133,   104,   105,   106,   107,   108,
+     109,   110,    79,   358,   113,   114,   115,   119,   142,   143,
+     275,   241,    88,   276,   126,   368,   140,   141,   142,   143,
+     372,    98,   370,    32,    33,    34,    35,     1,   224,   149,
+     146,   147,   161,   330,   147,   145,   227,   228,   147,   148,
+       2,    68,   150,     3,     4,   159,   151,     5,   179,   155,
+     169,   173,    63,    11,   133,    12,   284,   134,    99,   175,
+     170,   174,   245,   124,    93,    94,    95,   171,   172,   176,
+     125,   325,   246,    96,   145,   139,   140,   141,   142,   143,
+      97,   326,   278,   320,   157,   276,   276,   271,   149,   272,
+     154,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,    48,    68,
+      91,    92,   301,   225,   226,   149,   229,   149,   230,   318,
+     154,   160,    42,   162,   233,    43,   337,   338,   280,   163,
+     167,   177,   242,   243,   244,   296,   235,   248,   249,   250,
+     251,   252,   253,   180,   194,   344,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   196,   198,   317,   201,
+     199,   319,   200,   356,   202,   270,   222,   324,   232,   238,
+     239,   268,   269,   364,   247,   254,   267,   274,   279,   369,
+     281,   287,   288,   295,   298,   327,   341,   312,   315,   345,
+     347,   343,   350,   346,   351,   354,   357,   321,   348,   361,
+     362,   293,   323,   266,   282,   283,   203,   237,     0,   285,
+     286,   299,     0,   273,     0,     0,     0,     0,     0,   363,
+       0,     0,   340,   366,     0,     0,     0,     0,     0,   371,
+       0,     0,     0,   374,     0,     0,     0,     0,   -32,     0,
+       0,    75,   355,     0,     0,   302,     0,     0,     0,     0,
+       0,     0,     0,   308,   309,   310,   311,     0,     0,     0,
+     307,     0,     0,     0,     0,   127,   128,   129,   130,   131,
+     132,     0,   133,     0,     0,   134,   135,   136,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   335,
+     336,   137,   138,   139,   140,   141,   142,   143,  -164,     1,
+       0,     0,   349,     0,     0,     0,     0,     0,     0,   353,
+       0,     0,     2,     0,     0,     3,     4,     0,   360,     5,
+    -164,     7,     8,     9,    65,    11,     0,    12,  -164,  -164,
+       0,    15,  -164,  -164,  -164,  -164,  -164,  -164,  -164,  -164,
+       0,  -164,     0,  -164,  -164,  -164,     0,    66,  -164,    25,
+    -164,  -164,  -164,  -164,     0,     0,  -164,  -164,  -164,  -164,
+    -164,  -164,  -164,  -164,  -164,    31,  -164,  -164,  -164,  -164,
+    -164,  -164,    32,    33,    34,    35,    36,  -164,  -164,  -164,
+    -164,     0,  -164,  -164,  -164,  -164,  -164,  -164,    40,    41,
+    -164,  -164,     1,  -164,    70,  -164,  -164,    43,  -164,     0,
+       0,     0,     0,     0,     0,     2,     0,   164,     3,     4,
+       0,     0,     5,     0,     7,     8,     9,    65,   116,     0,
+     117,     0,     0,     0,    15,   127,   128,   129,   130,   131,
+     132,     0,   133,   165,   166,   134,   135,   136,     0,     0,
+      66,     0,    25,     0,     0,     0,     0,     0,     0,     0,
+       0,   137,   138,   139,   140,   141,   142,   143,    31,     0,
+       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   -63,
+       1,    40,    41,     0,     0,     0,     0,    42,     0,     0,
+      43,  -170,   118,     2,     0,     0,     3,     4,     0,     0,
+       5,   -63,     7,     8,     9,    65,    11,     0,    12,   -63,
+     -63,     0,    15,     0,   -63,   -63,   -63,   -63,   -63,   -63,
+     -63,     0,     0,     0,     0,   -63,     0,     0,    66,   -63,
+      25,     0,     0,   -63,     0,     0,     0,   -63,   -63,   -63,
+     -63,   -63,   -63,   -63,   -63,   -63,    31,   -63,     0,     0,
+     -63,   -63,   -63,    32,    33,    34,    35,    36,     0,     0,
+     -63,   -63,     0,   -63,   -63,   -63,   -63,   -63,   -63,    40,
+      41,   -63,   -63,     0,   -63,    74,  -164,     1,    43,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   332,     0,     0,
-       0,     0,     0,     0,  -162,     1,     0,     0,   345,     0,
-       0,     0,     0,     0,     0,   349,     0,     0,     2,     0,
-       0,     3,     4,     0,   356,     5,  -162,     7,     8,     9,
-      65,    11,     0,    12,  -162,  -162,     0,    15,  -162,  -162,
-    -162,  -162,  -162,  -162,  -162,  -162,     0,  -162,     0,  -162,
-    -162,  -162,     0,    66,  -162,    25,  -162,  -162,  -162,  -162,
-       0,     0,  -162,  -162,  -162,  -162,  -162,  -162,  -162,  -162,
-    -162,    31,  -162,  -162,  -162,  -162,  -162,  -162,    32,    33,
-      34,    35,    36,  -162,  -162,  -162,  -162,     0,  -162,  -162,
-    -162,  -162,  -162,  -162,    40,    41,  -162,  -162,     1,  -162,
-      70,  -162,  -162,    43,  -162,     0,     0,     0,     0,     0,
-       0,     2,     0,   164,     3,     4,     0,     0,     5,     0,
-       7,     8,     9,    65,   116,     0,   117,     0,     0,     0,
-      15,   127,   128,   129,   130,   131,   132,     0,   133,   165,
-     166,   134,   135,   136,     0,     0,    66,     0,    25,     0,
-       0,     0,     0,     0,     0,     0,     0,   137,   138,   139,
-     140,   141,   142,   143,    31,     0,     0,     0,     0,     0,
-       0,    32,    33,    34,    35,    36,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   -61,     1,    40,    41,     0,
-       0,     0,     0,    42,     0,     0,    43,  -168,   118,     2,
-       0,     0,     3,     4,     0,     0,     5,   -61,     7,     8,
-       9,    65,    11,     0,    12,   -61,   -61,     0,    15,     0,
-     -61,   -61,   -61,   -61,   -61,   -61,   -61,     0,     0,     0,
-       0,   -61,     0,     0,    66,   -61,    25,     0,     0,   -61,
-       0,     0,     0,   -61,   -61,   -61,   -61,   -61,   -61,   -61,
-     -61,   -61,    31,   -61,     0,     0,   -61,   -61,   -61,    32,
-      33,    34,    35,    36,     0,     0,   -61,   -61,     0,   -61,
-     -61,   -61,   -61,   -61,   -61,    40,    41,   -61,   -61,     0,
-     -61,    74,  -162,     1,    43,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     2,     0,     0,     3,
-       4,     0,     0,     5,  -162,     7,     8,     9,    65,    11,
-       0,    12,  -162,  -162,     0,    15,     0,  -162,  -162,  -162,
-    -162,  -162,  -162,  -162,     0,     0,     0,     0,  -162,     0,
-       0,    66,  -162,    25,     0,     0,  -162,     0,     0,     0,
-    -162,  -162,  -162,     0,     0,     0,     0,     0,     0,    31,
-       0,     0,     0,     0,     0,     0,    32,    33,    34,    35,
-      36,     0,     0,  -162,  -162,     0,  -162,  -162,  -162,  -162,
-       1,     0,    40,    41,     0,     0,     0,  -162,    67,     0,
-    -162,    43,     0,     2,     0,     0,     3,     4,     0,     0,
-       5,  -162,     7,     8,     9,    65,    11,     0,    12,  -162,
-    -162,     0,    15,     0,  -162,  -162,  -162,  -162,  -162,  -162,
-    -162,     0,     0,     0,     0,  -162,     0,     0,    66,  -162,
-      25,     0,     0,  -162,     0,     0,     0,  -162,  -162,  -162,
-       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
-       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
-    -162,  -162,     0,  -162,  -162,  -162,    -4,     1,     0,    40,
-      41,     0,     0,     0,  -162,    42,     0,  -162,    43,     0,
-       2,     0,     0,     3,     4,     0,     0,     5,     6,     7,
-       8,     9,    10,    11,     0,    12,     0,    13,    14,    15,
-       0,     0,     0,    16,    17,    18,    19,    20,     0,     0,
-      21,     0,    22,     0,     0,    23,    24,    25,     0,     0,
-      26,     0,     0,    27,    28,    29,    30,     0,     0,     0,
+       2,     0,     0,     3,     4,     0,     0,     5,  -164,     7,
+       8,     9,    65,    11,     0,    12,  -164,  -164,     0,    15,
+       0,  -164,  -164,  -164,  -164,  -164,  -164,  -164,     0,     0,
+       0,     0,  -164,     0,     0,    66,  -164,    25,     0,     0,
+    -164,     0,     0,     0,  -164,  -164,  -164,     0,     0,     0,
        0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,    37,    38,    39,
-    -151,     1,     0,     0,     0,     0,    40,    41,     0,     0,
-       0,    -4,    42,     0,     2,    43,     0,     3,     4,     0,
+      32,    33,    34,    35,    36,     0,     0,  -164,  -164,     0,
+    -164,  -164,  -164,  -164,     1,     0,    40,    41,     0,     0,
+       0,  -164,    67,     0,  -164,    43,     0,     2,     0,     0,
+       3,     4,     0,     0,     5,  -164,     7,     8,     9,    65,
+      11,     0,    12,  -164,  -164,     0,    15,     0,  -164,  -164,
+    -164,  -164,  -164,  -164,  -164,     0,     0,     0,     0,  -164,
+       0,     0,    66,  -164,    25,     0,     0,  -164,     0,     0,
+       0,  -164,  -164,  -164,     0,     0,     0,     0,     0,     0,
+      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
+      35,    36,     0,     0,  -164,  -164,     0,  -164,  -164,  -164,
+      -4,     1,     0,    40,    41,     0,     0,     0,  -164,    42,
+       0,  -164,    43,     0,     2,     0,     0,     3,     4,     0,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
+       0,    13,    14,    15,     0,     0,     0,    16,    17,    18,
+      19,    20,     0,     0,    21,     0,    22,     0,     0,    23,
+      24,    25,     0,     0,    26,     0,     0,    27,    28,    29,
+      30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
+       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
+       0,    37,    38,    39,  -153,     1,     0,     0,     0,     0,
+      40,    41,     0,     0,     0,    -4,    42,     0,     2,    43,
+       0,     3,     4,     0,     0,     5,     6,     7,     8,     9,
+      10,    11,     0,    12,   329,    13,     0,    15,     0,     0,
+       0,    16,    17,    18,    19,    20,     0,     0,     0,     0,
+      22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
+       0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
+       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
+      34,    35,    36,     0,     0,    37,    38,  -151,     1,     0,
+       0,     0,     0,     0,    40,    41,     0,     0,     0,   313,
+      42,     2,     0,    43,     3,     4,     0,     0,     5,     6,
+       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
+      15,     0,     0,     0,    16,    17,    18,    19,    20,     0,
+       0,     0,     0,    22,     0,     0,    23,    24,    25,     0,
+       0,    26,     0,     0,     0,    28,    29,    30,     0,     0,
+       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
+    -148,     1,     0,     0,     0,     0,     0,    40,    41,     0,
+       0,     0,   313,    42,     2,     0,    43,     3,     4,     0,
        0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
-     326,    13,     0,    15,     0,     0,     0,    16,    17,    18,
+       0,    13,     0,    15,     0,     0,     0,    16,    17,    18,
       19,    20,     0,     0,     0,     0,    22,     0,     0,    23,
       24,    25,     0,     0,    26,     0,     0,     0,    28,    29,
       30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
        0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,    37,    38,  -149,     1,     0,     0,     0,     0,     0,
-      40,    41,     0,     0,     0,   311,    42,     2,     0,    43,
+       0,    37,    38,     0,     1,     0,     0,     0,     0,     0,
+      40,    41,     0,     0,     0,   313,    42,     2,     0,    43,
        3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,    12,     0,    13,     0,    15,     0,     0,     0,
+      11,     0,    12,     0,    13,     0,    15,     0,   -52,   -52,
       16,    17,    18,    19,    20,     0,     0,     0,     0,    22,
        0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
        0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
       31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
-      35,    36,     0,     0,    37,    38,  -146,     1,     0,     0,
-       0,     0,     0,    40,    41,     0,     0,     0,   311,    42,
-       2,     0,    43,     3,     4,     0,     0,     5,     6,     7,
-       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
-       0,     0,     0,    16,    17,    18,    19,    20,     0,     0,
-       0,     0,    22,     0,     0,    23,    24,    25,     0,     0,
-      26,     0,     0,     0,    28,    29,    30,     0,     0,     0,
-       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,    37,    38,     0,
-       1,     0,     0,     0,     0,     0,    40,    41,     0,     0,
-       0,   311,    42,     2,     0,    43,     3,     4,     0,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
-      13,     0,    15,     0,   -50,   -50,    16,    17,    18,    19,
-      20,     0,     0,     0,     0,    22,     0,     0,    23,    24,
-      25,     0,     0,    26,     0,     0,     0,    28,    29,    30,
-       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
-       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
-      37,    38,     0,   -50,     1,     0,     0,     0,     0,    40,
-      41,     0,     0,     0,   311,    42,     0,     2,    43,     0,
+      35,    36,     0,     0,    37,    38,     0,   -52,     1,     0,
+       0,     0,     0,    40,    41,     0,     0,     0,   313,    42,
+       0,     2,    43,     0,     3,     4,     0,     0,     5,     6,
+       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
+      15,     0,     0,     0,    16,    17,    18,    19,    20,     0,
+       0,     0,     0,    22,     0,     0,    23,    24,    25,     0,
+       0,    26,     0,     0,     0,    28,    29,    30,     0,     0,
+       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
+       0,     1,     0,   -55,     0,     0,     0,    40,    41,     0,
+       0,     0,   313,    42,     2,     0,    43,     3,     4,     0,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
+       0,    13,     0,    15,     0,     0,     0,    16,    17,    18,
+      19,    20,     0,     0,     0,     0,    22,     0,     0,    23,
+      24,    25,     0,     0,    26,     0,     0,     0,    28,    29,
+      30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
+       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
+       0,    37,    38,     0,     1,   -52,     0,     0,     0,     0,
+      40,    41,     0,     0,     0,   313,    42,     2,     0,    43,
        3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
       11,     0,    12,     0,    13,     0,    15,     0,     0,     0,
       16,    17,    18,    19,    20,     0,     0,     0,     0,    22,
        0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
        0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
       31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
-      35,    36,     0,     0,    37,    38,     0,     1,     0,   -53,
-       0,     0,     0,    40,    41,     0,     0,     0,   311,    42,
-       2,     0,    43,     3,     4,     0,     0,     5,     6,     7,
-       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
-       0,     0,     0,    16,    17,    18,    19,    20,     0,     0,
-       0,     0,    22,     0,     0,    23,    24,    25,     0,     0,
-      26,     0,     0,     0,    28,    29,    30,     0,     0,     0,
-       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,    37,    38,     0,
-       1,   -50,     0,     0,     0,     0,    40,    41,     0,     0,
-       0,   311,    42,     2,     0,    43,     3,     4,     0,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
-      13,     0,    15,     0,     0,     0,    16,    17,    18,    19,
-      20,     0,     0,     0,     0,    22,     0,     0,    23,    24,
-      25,     0,     0,    26,     0,     0,     0,    28,    29,    30,
-       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
-       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
-      37,    38,     0,   -53,     1,     0,     0,     0,     0,    40,
-      41,     0,     0,     0,   311,    42,     0,     2,    43,     0,
+      35,    36,     0,     0,    37,    38,     0,   -55,     1,     0,
+       0,     0,     0,    40,    41,     0,     0,     0,   313,    42,
+       0,     2,    43,     0,     3,     4,     0,     0,     5,     6,
+       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
+      15,     0,     0,     0,    16,    17,    18,    19,    20,     0,
+       0,     0,     0,    22,     0,     0,    23,    24,    25,     0,
+       0,    26,     0,     0,     0,    28,    29,    30,     0,     0,
+       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
+       0,     1,   367,     0,     0,     0,     0,    40,    41,     0,
+       0,     0,   313,    42,     2,     0,    43,     3,     4,     0,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
+       0,    13,     0,    15,     0,     0,     0,    16,    17,    18,
+      19,    20,     0,     0,     0,     0,    22,     0,     0,    23,
+      24,    25,     0,     0,    26,     0,     0,     0,    28,    29,
+      30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
+       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
+       0,    37,    38,     0,     1,   373,     0,     0,     0,     0,
+      40,    41,     0,     0,     0,   313,    42,     2,     0,    43,
        3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
       11,     0,    12,     0,    13,     0,    15,     0,     0,     0,
       16,    17,    18,    19,    20,     0,     0,     0,     0,    22,
        0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
        0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
       31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
-      35,    36,     0,     0,    37,    38,     0,     1,   363,     0,
-       0,     0,     0,    40,    41,     0,     0,     0,   311,    42,
+      35,    36,     0,     0,    37,    38,     0,     1,   375,     0,
+       0,     0,     0,    40,    41,     0,     0,     0,   313,    42,
        2,     0,    43,     3,     4,     0,     0,     5,     6,     7,
        8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
-       0,     0,     0,    16,    17,    18,    19,    20,     0,     0,
-       0,     0,    22,     0,     0,    23,    24,    25,     0,     0,
-      26,     0,     0,     0,    28,    29,    30,     0,     0,     0,
+       0,     0,     0,    16,    17,    18,    19,     0,     0,     0,
+       0,     0,     0,     0,     0,    23,     0,    25,     0,     0,
+       0,     0,     0,     0,    28,    29,    30,     0,     0,     0,
        0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,    37,    38,     0,
-       1,   369,     0,     0,     0,     0,    40,    41,     0,     0,
-       0,   311,    42,     2,     0,    43,     3,     4,     0,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
-      13,     0,    15,     0,     0,     0,    16,    17,    18,    19,
-      20,     0,     0,     0,     0,    22,     0,     0,    23,    24,
-      25,     0,     0,    26,     0,     0,     0,    28,    29,    30,
-       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
-       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
-      37,    38,     0,     1,   371,     0,     0,     0,     0,    40,
-      41,     0,     0,     0,   311,    42,     2,     0,    43,     3,
-       4,     0,     0,     5,     6,     7,     8,     9,    10,    11,
-       0,    12,     0,    13,     0,    15,     0,     0,     0,    16,
-      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
-       0,    23,     0,    25,     0,     0,     0,     0,     0,     0,
-      28,    29,    30,     0,     0,     0,     0,     0,     0,    31,
+      32,    33,    34,    35,    36,     0,     0,     1,    38,     0,
+       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
+       2,     0,    42,     3,     4,    43,     0,     5,     0,     7,
+       8,     9,    65,    11,     0,    12,     0,     0,     0,    15,
+       0,     0,     0,     1,     0,     0,     0,     0,     0,     0,
+       0,    81,    82,    83,    84,    66,     2,    25,     0,     3,
+       4,     0,     0,     5,     0,     7,     8,     9,    65,    11,
+       0,    12,     0,    31,     0,    15,     0,     0,     0,     0,
+      32,    33,    34,    35,    36,     0,     0,    81,     0,    83,
+       0,    66,     0,    25,     0,     0,    40,    41,     0,     0,
+       0,     0,    42,     0,     0,    43,     0,     0,     0,    31,
        0,     0,     0,     0,     0,     0,    32,    33,    34,    35,
-      36,     0,     0,     1,    38,     0,     0,     0,     0,     0,
+      36,     0,     0,     1,     0,     0,     0,     0,     0,     0,
        0,     0,    40,    41,     0,     0,     2,     0,    42,     3,
        4,    43,     0,     5,     0,     7,     8,     9,    65,    11,
        0,    12,     0,     0,     0,    15,     0,     0,     0,     1,
-       0,     0,     0,     0,     0,     0,     0,    81,    82,    83,
-      84,    66,     2,    25,     0,     3,     4,     0,     0,     5,
-       0,     7,     8,     9,    65,    11,     0,    12,     0,    31,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    66,     2,    25,     0,     3,     4,     0,     0,     5,
+       0,     7,     8,     9,   152,    11,     0,    12,     0,    31,
        0,    15,     0,     0,     0,     0,    32,    33,    34,    35,
-      36,     0,     0,    81,     0,    83,     0,    66,     0,    25,
-       0,     0,    40,    41,     0,     0,     0,     0,    42,     0,
-       0,    43,     0,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,    32,    33,    34,    35,    36,     0,     0,     1,
-       0,     0,     0,     0,     0,     0,     0,     0,    40,    41,
-       0,     0,     2,     0,    42,     3,     4,    43,     0,     5,
-       0,     7,     8,     9,    65,    11,     0,    12,     0,     0,
-       0,    15,     0,     0,     0,     1,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    66,     2,    25,
-       0,     3,     4,     0,     0,     5,     0,     7,     8,     9,
-     152,    11,     0,    12,     0,    31,     0,    15,     0,     0,
+      36,     0,     0,     0,     0,     0,     0,    66,     0,    25,
+       0,     0,    40,    41,     0,     0,     0,     0,    42,  -164,
+    -164,    43,     0,     0,     0,    31,     0,     0,     0,     0,
        0,     0,    32,    33,    34,    35,    36,     0,     0,     0,
-       0,     0,     0,    66,     0,    25,     0,     0,    40,    41,
-       0,     0,     0,     0,    42,  -162,  -162,    43,     0,     0,
-       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
-      34,    35,    36,     0,     0,     0,     0,     0,     0,     0,
-       0,     1,     0,     0,    40,    41,     0,     0,     0,     0,
-      42,  -162,  -162,    43,     2,     0,     0,     3,     4,     0,
-      89,     5,     0,     7,     8,     9,    65,    11,     0,    12,
-       0,     0,     0,    15,     0,     0,     0,     1,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    66,
-       2,    25,     0,     3,     4,     0,     0,     5,     0,     7,
-       8,     9,    65,    11,     0,    12,     0,    31,     0,    15,
+       0,     0,     0,     0,     0,     1,     0,     0,    40,    41,
+       0,     0,     0,     0,    42,  -164,  -164,    43,     2,     0,
+       0,     3,     4,     0,    89,     5,     0,     7,     8,     9,
+      65,    11,     0,    12,     0,     0,     0,    15,     0,     0,
+       0,     1,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    66,     2,    25,     0,     3,     4,     0,
+       0,     5,     0,     7,     8,     9,    65,    11,     0,    12,
+       0,    31,     0,    15,     0,     0,     0,     0,    32,    33,
+      34,    35,    36,     0,     0,     0,     0,     0,     0,    66,
+       0,    25,     0,     0,    40,    41,     0,     0,     0,     0,
+      42,     0,     0,    43,     0,     0,    81,    31,    83,     0,
        0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,     0,     0,     0,     0,    66,     0,    25,     0,     0,
-      40,    41,     0,     0,     0,     0,    42,     0,     0,    43,
-       0,     0,     0,    31,     0,     0,     0,     0,     0,   -30,
-      32,    33,    34,    35,    36,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
-       0,     0,    42,     0,     0,    43,   127,   128,   129,   130,
-     131,   132,     0,   133,     0,     0,   134,   135,   136,     0,
-       0,     0,     0,    81,     0,    83,     0,     0,     0,     0,
-       0,     0,   137,   138,   139,   140,   141,   142,   143,   127,
-     128,   129,   130,   131,   132,     0,   133,     0,     0,   134,
-     135,   136,     0,     0,     0,     0,     0,     0,   181,     0,
-       0,     0,     0,     0,   182,   137,   138,   139,   140,   141,
-     142,   143,   127,   128,   129,   130,   131,   132,     0,   133,
-       0,     0,   134,   135,   136,     0,     0,     0,     0,     0,
-       0,   183,     0,     0,     0,     0,     0,   184,   137,   138,
+       0,     0,   127,   128,   129,   130,   131,   132,     0,   133,
+      40,    41,   134,   135,   136,     0,    42,     0,     0,    43,
+       0,   182,     0,     0,     0,     0,     0,   183,   137,   138,
      139,   140,   141,   142,   143,   127,   128,   129,   130,   131,
      132,     0,   133,     0,     0,   134,   135,   136,     0,     0,
-       0,     0,     0,     0,   185,     0,     0,     0,     0,     0,
-     186,   137,   138,   139,   140,   141,   142,   143,   127,   128,
+       0,     0,     0,     0,   184,     0,     0,     0,     0,     0,
+     185,   137,   138,   139,   140,   141,   142,   143,   127,   128,
      129,   130,   131,   132,     0,   133,     0,     0,   134,   135,
-     136,     0,     0,     0,     0,     0,     0,   187,     0,     0,
-       0,     0,     0,   188,   137,   138,   139,   140,   141,   142,
+     136,     0,     0,     0,     0,     0,     0,   186,     0,     0,
+       0,     0,     0,   187,   137,   138,   139,   140,   141,   142,
      143,   127,   128,   129,   130,   131,   132,     0,   133,     0,
        0,   134,   135,   136,     0,     0,     0,     0,     0,     0,
-     287,     0,     0,     0,     0,     0,     0,   137,   138,   139,
+     188,     0,     0,     0,     0,     0,   189,   137,   138,   139,
      140,   141,   142,   143,   127,   128,   129,   130,   131,   132,
        0,   133,     0,     0,   134,   135,   136,     0,     0,     0,
-       0,     0,     0,   288,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
      137,   138,   139,   140,   141,   142,   143,   127,   128,   129,
      130,   131,   132,     0,   133,     0,     0,   134,   135,   136,
-       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   290,     0,     0,     0,
        0,     0,     0,   137,   138,   139,   140,   141,   142,   143,
      127,   128,   129,   130,   131,   132,     0,   133,     0,     0,
-     134,   135,   136,     0,     0,     0,     0,     0,     0,   290,
+     134,   135,   136,     0,     0,     0,     0,     0,     0,   291,
        0,     0,     0,     0,     0,     0,   137,   138,   139,   140,
      141,   142,   143,   127,   128,   129,   130,   131,   132,     0,
      133,     0,     0,   134,   135,   136,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   191,   137,
+       0,     0,   292,     0,     0,     0,     0,     0,     0,   137,
      138,   139,   140,   141,   142,   143,   127,   128,   129,   130,
      131,   132,     0,   133,     0,     0,   134,   135,   136,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   137,   138,   139,   140,   141,   142,   143,   177,
-     192,     0,     0,     0,     0,   127,   128,   129,   130,   131,
-     132,     0,   133,     0,     0,   134,   135,   136,   127,   128,
-     129,   130,   131,   132,     0,   133,     0,     0,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,     0,     0,
-       0,     0,     0,     0,   137,   138,   139,   140,   141,   142,
-     143,     0,     0,     0,   196,   127,   128,   129,   130,   131,
-     132,     0,   133,     0,     0,   134,   135,   136,     0,     0,
-       0,     0,     0,   189,   190,     0,     0,     0,     0,     0,
-       0,   137,   138,   139,   140,   141,   142,   143,   127,   128,
+       0,   192,   137,   138,   139,   140,   141,   142,   143,   127,
+     128,   129,   130,   131,   132,     0,   133,     0,     0,   134,
+     135,   136,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   137,   138,   139,   140,   141,
+     142,   143,   178,   193,     0,     0,     0,     0,   127,   128,
      129,   130,   131,   132,     0,   133,     0,     0,   134,   135,
-     136,   127,   128,   129,   130,     0,     0,     0,   133,     0,
+     136,   127,   128,   129,   130,   131,   132,     0,   133,     0,
        0,   134,   135,   136,   137,   138,   139,   140,   141,   142,
      143,     0,     0,     0,     0,     0,     0,   137,   138,   139,
-     140,   141,   142,   143
+     140,   141,   142,   143,     0,     0,     0,   197,   127,   128,
+     129,   130,   131,   132,     0,   133,     0,     0,   134,   135,
+     136,     0,     0,     0,     0,     0,   190,   191,     0,     0,
+       0,     0,     0,     0,   137,   138,   139,   140,   141,   142,
+     143,   127,   128,   129,   130,   131,   132,     0,   133,     0,
+       0,   134,   135,   136,   127,   128,   129,   130,     0,     0,
+       0,   133,     0,     0,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,     0,     0,     0,     0,     0,     0,
+     137,   138,   139,   140,   141,   142,   143
 };
 
 static const yytype_int16 yycheck[] =
 {
        6,     7,    78,    24,    10,    26,    29,     4,     6,     7,
-     276,     8,    18,     0,    68,    95,    92,    23,   156,   322,
-      42,    47,    28,    29,    68,    31,    32,    33,    34,    35,
-      36,    37,    50,   348,    40,    41,    42,    43,    92,    93,
-      95,    63,    50,    98,    50,   360,    90,    91,    92,    93,
-     365,    26,   318,    74,    75,    76,    77,    97,    98,   362,
-      66,    67,    85,    53,    70,    17,    18,    19,    74,    67,
-      53,    77,    70,    63,    26,    81,    73,    53,   101,    77,
-      63,    33,    27,    95,    29,   241,    98,    63,    95,    26,
-       1,    98,    96,    97,    98,    55,    56,    94,    95,    35,
-      36,    97,    98,    14,    97,    98,    17,    18,    97,    98,
-      21,     0,    96,    95,    26,    26,    27,    98,    29,    98,
-      45,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     324,     8,    18,     0,    68,    95,    92,    23,   156,    47,
+      42,   278,    28,    29,    68,    31,    32,    33,    34,    35,
+      36,    37,    50,   352,    40,    41,    42,    43,    92,    93,
+      95,    63,    50,    98,    50,   364,    90,    91,    92,    93,
+     369,    26,   366,    74,    75,    76,    77,     1,    97,    98,
+      66,    67,    85,   320,    70,    96,    97,    98,    74,    67,
+      14,    77,    70,    17,    18,    81,    73,    21,   101,    77,
+      53,    53,    26,    27,    68,    29,   242,    71,    26,    53,
+      63,    63,    53,     0,    17,    18,    19,    94,    95,    63,
+      95,    53,    63,    26,    96,    89,    90,    91,    92,    93,
+      33,    63,    95,    95,    26,    98,    98,    27,    98,    29,
+      98,   127,   128,   129,   130,   131,   132,   133,   134,   135,
      136,   137,   138,   139,   140,   141,   142,   143,   125,   145,
-     278,    26,    26,   149,    26,    53,    52,    26,   154,    26,
-      26,   101,   101,   100,   160,    98,    98,   233,    26,    98,
-      26,    26,   168,   169,   170,    98,   163,   173,   174,   175,
-     176,   177,   328,    47,    98,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,    96,    26,    68,    99,   345,
-      71,    52,    43,    26,   200,    26,    26,    26,    53,   355,
-     197,   198,    26,   272,    53,   361,    86,    34,    89,    90,
-      91,    92,    93,    85,    84,   291,   292,    53,    26,   192,
-      98,    84,   125,   164,    52,   301,   295,   263,   303,   298,
-     275,   201,    -1,   239,   240,   304,    -1,    -1,   244,   245,
+      55,    56,   280,   149,    97,    98,    97,    98,   154,    97,
+      98,    45,    96,    26,   160,    99,    35,    36,   234,    26,
+      26,    52,   168,   169,   170,   274,   163,   173,   174,   175,
+     176,   177,   178,    26,    26,   331,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,    26,   101,   297,    98,
+     101,   300,   100,   349,    98,   201,    26,   306,    98,    26,
+      26,   198,   199,   359,    47,    98,    98,    52,    26,   365,
+      43,    26,    26,    26,    26,    86,    26,   293,   294,    53,
+      85,   330,    84,    34,    98,    53,    26,   303,   337,    84,
+      52,   265,   305,   193,   240,   241,   125,   164,    -1,   245,
+     246,   277,    -1,   202,    -1,    -1,    -1,    -1,    -1,   358,
+      -1,    -1,   328,   362,    -1,    -1,    -1,    -1,    -1,   368,
+      -1,    -1,    -1,   372,    -1,    -1,    -1,    -1,    34,    -1,
+      -1,   277,   348,    -1,    -1,   281,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   289,   290,   291,   292,    -1,    -1,    -1,
+     287,    -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,
+      66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   325,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   327,    -1,
-      -1,    -1,    -1,    -1,   333,    -1,    -1,    -1,   344,   275,
-      -1,    -1,    -1,   279,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   287,   288,   289,   290,   354,    -1,    -1,   285,   358,
-      -1,    -1,    -1,    -1,    -1,   364,    -1,    -1,    -1,   368,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   323,    -1,    -1,
-      -1,    -1,    -1,    -1,     0,     1,    -1,    -1,   334,    -1,
-      -1,    -1,    -1,    -1,    -1,   341,    -1,    -1,    14,    -1,
-      -1,    17,    18,    -1,   350,    21,    22,    23,    24,    25,
-      26,    27,    -1,    29,    30,    31,    -1,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    -1,    43,    -1,    45,
-      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
-      -1,    -1,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    -1,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,     1,    95,
-      96,    97,    98,    99,   100,    -1,    -1,    -1,    -1,    -1,
-      -1,    14,    -1,    43,    17,    18,    -1,    -1,    21,    -1,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,
-      33,    61,    62,    63,    64,    65,    66,    -1,    68,    69,
-      70,    71,    72,    73,    -1,    -1,    49,    -1,    51,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-      90,    91,    92,    93,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    74,    75,    76,    77,    78,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     0,     1,    90,    91,    -1,
-      -1,    -1,    -1,    96,    -1,    -1,    99,   100,   101,    14,
-      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    27,    -1,    29,    30,    31,    -1,    33,    -1,
-      35,    36,    37,    38,    39,    40,    41,    -1,    -1,    -1,
-      -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,
-      -1,    -1,    -1,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    -1,    -1,    71,    72,    73,    74,
-      75,    76,    77,    78,    -1,    -1,    81,    82,    -1,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    -1,
-      95,    96,     0,     1,    99,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
-      -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    37,
-      38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    -1,
-      -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,
-      58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
-      -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,
-      78,    -1,    -1,    81,    82,    -1,    84,    85,    86,     0,
-       1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,    -1,
-      98,    99,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,
+     326,    87,    88,    89,    90,    91,    92,    93,     0,     1,
+      -1,    -1,   338,    -1,    -1,    -1,    -1,    -1,    -1,   345,
+      -1,    -1,    14,    -1,    -1,    17,    18,    -1,   354,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
+      -1,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      -1,    43,    -1,    45,    46,    47,    -1,    49,    50,    51,
+      52,    53,    54,    55,    -1,    -1,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+      82,    -1,    84,    85,    86,    87,    88,    89,    90,    91,
+      92,    93,     1,    95,    96,    97,    98,    99,   100,    -1,
+      -1,    -1,    -1,    -1,    -1,    14,    -1,    43,    17,    18,
+      -1,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    -1,    -1,    33,    61,    62,    63,    64,    65,
+      66,    -1,    68,    69,    70,    71,    72,    73,    -1,    -1,
+      49,    -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    87,    88,    89,    90,    91,    92,    93,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,
+       1,    90,    91,    -1,    -1,    -1,    -1,    96,    -1,    -1,
+      99,   100,   101,    14,    -1,    -1,    17,    18,    -1,    -1,
       21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
       31,    -1,    33,    -1,    35,    36,    37,    38,    39,    40,
       41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
       51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
-      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
-      -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,
-      81,    82,    -1,    84,    85,    86,     0,     1,    -1,    90,
-      91,    -1,    -1,    -1,    95,    96,    -1,    98,    99,    -1,
+      61,    62,    63,    64,    65,    66,    67,    68,    -1,    -1,
+      71,    72,    73,    74,    75,    76,    77,    78,    -1,    -1,
+      81,    82,    -1,    84,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    -1,    95,    96,     0,     1,    99,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    31,    32,    33,
-      -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,    -1,
-      44,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
-      54,    -1,    -1,    57,    58,    59,    60,    -1,    -1,    -1,
+      24,    25,    26,    27,    -1,    29,    30,    31,    -1,    33,
+      -1,    35,    36,    37,    38,    39,    40,    41,    -1,    -1,
+      -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
+      54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
       -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    83,
-       0,     1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
-      -1,    95,    96,    -1,    14,    99,    -1,    17,    18,    -1,
+      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    -1,
+      84,    85,    86,     0,     1,    -1,    90,    91,    -1,    -1,
+      -1,    95,    96,    -1,    98,    99,    -1,    14,    -1,    -1,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
+      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
+      -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
+      77,    78,    -1,    -1,    81,    82,    -1,    84,    85,    86,
+       0,     1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
+      -1,    98,    99,    -1,    14,    -1,    -1,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    31,    32,    33,    -1,    -1,    -1,    37,    38,    39,
+      40,    41,    -1,    -1,    44,    -1,    46,    -1,    -1,    49,
+      50,    51,    -1,    -1,    54,    -1,    -1,    57,    58,    59,
+      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
+      -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
+      -1,    81,    82,    83,     0,     1,    -1,    -1,    -1,    -1,
+      90,    91,    -1,    -1,    -1,    95,    96,    -1,    14,    99,
+      -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
+      26,    27,    -1,    29,    30,    31,    -1,    33,    -1,    -1,
+      -1,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
+      46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
+      -1,    -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
+      76,    77,    78,    -1,    -1,    81,    82,     0,     1,    -1,
+      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,
+      96,    14,    -1,    99,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
+      33,    -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,
+      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
+      -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
+      -1,    74,    75,    76,    77,    78,    -1,    -1,    81,    82,
+       0,     1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,
+      -1,    -1,    95,    96,    14,    -1,    99,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-      30,    31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,
+      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,
       40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
       50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
       60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
       -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
-      -1,    81,    82,     0,     1,    -1,    -1,    -1,    -1,    -1,
+      -1,    81,    82,    -1,     1,    -1,    -1,    -1,    -1,    -1,
       90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,    99,
       17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
+      27,    -1,    29,    -1,    31,    -1,    33,    -1,    35,    36,
       37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
       -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
       -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
-      77,    78,    -1,    -1,    81,    82,     0,     1,    -1,    -1,
+      77,    78,    -1,    -1,    81,    82,    -1,    84,     1,    -1,
       -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
-      14,    -1,    99,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-      -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
-      54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
-      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    -1,
-       1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
-      -1,    95,    96,    14,    -1,    99,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      31,    -1,    33,    -1,    35,    36,    37,    38,    39,    40,
-      41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
-      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
-      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
-      -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,
-      81,    82,    -1,    84,     1,    -1,    -1,    -1,    -1,    90,
-      91,    -1,    -1,    -1,    95,    96,    -1,    14,    99,    -1,
+      -1,    14,    99,    -1,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
+      33,    -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,
+      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
+      -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
+      -1,    74,    75,    76,    77,    78,    -1,    -1,    81,    82,
+      -1,     1,    -1,    86,    -1,    -1,    -1,    90,    91,    -1,
+      -1,    -1,    95,    96,    14,    -1,    99,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,
+      40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
+      50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
+      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
+      -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
+      -1,    81,    82,    -1,     1,    85,    -1,    -1,    -1,    -1,
+      90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,    99,
       17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
       27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
       37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
       -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
       -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
-      77,    78,    -1,    -1,    81,    82,    -1,     1,    -1,    86,
+      77,    78,    -1,    -1,    81,    82,    -1,    84,     1,    -1,
       -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
-      14,    -1,    99,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-      -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
-      54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
-      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    -1,
-       1,    85,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
-      -1,    95,    96,    14,    -1,    99,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,    40,
-      41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
-      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
-      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
-      -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,
-      81,    82,    -1,    84,     1,    -1,    -1,    -1,    -1,    90,
-      91,    -1,    -1,    -1,    95,    96,    -1,    14,    99,    -1,
+      -1,    14,    99,    -1,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
+      33,    -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,
+      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
+      -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
+      -1,    74,    75,    76,    77,    78,    -1,    -1,    81,    82,
+      -1,     1,    85,    -1,    -1,    -1,    -1,    90,    91,    -1,
+      -1,    -1,    95,    96,    14,    -1,    99,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,
+      40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
+      50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
+      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
+      -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
+      -1,    81,    82,    -1,     1,    85,    -1,    -1,    -1,    -1,
+      90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,    99,
       17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
       27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
       37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
@@ -1517,73 +1529,48 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
       14,    -1,    99,    17,    18,    -1,    -1,    21,    22,    23,
       24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-      -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
-      54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
+      -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    -1,
+      -1,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
       -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    -1,
-       1,    85,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
-      -1,    95,    96,    14,    -1,    99,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,    40,
-      41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
-      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
-      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
-      -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,
-      81,    82,    -1,     1,    85,    -1,    -1,    -1,    -1,    90,
-      91,    -1,    -1,    -1,    95,    96,    14,    -1,    99,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
-      -1,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
-      38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,
-      58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+      74,    75,    76,    77,    78,    -1,    -1,     1,    82,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
+      14,    -1,    96,    17,    18,    99,    -1,    21,    -1,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,
+      -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    45,    46,    47,    48,    49,    14,    51,    -1,    17,
+      18,    -1,    -1,    21,    -1,    23,    24,    25,    26,    27,
+      -1,    29,    -1,    67,    -1,    33,    -1,    -1,    -1,    -1,
+      74,    75,    76,    77,    78,    -1,    -1,    45,    -1,    47,
+      -1,    49,    -1,    51,    -1,    -1,    90,    91,    -1,    -1,
+      -1,    -1,    96,    -1,    -1,    99,    -1,    -1,    -1,    67,
       -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,
-      78,    -1,    -1,     1,    82,    -1,    -1,    -1,    -1,    -1,
+      78,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    90,    91,    -1,    -1,    14,    -1,    96,    17,
       18,    99,    -1,    21,    -1,    23,    24,    25,    26,    27,
       -1,    29,    -1,    -1,    -1,    33,    -1,    -1,    -1,     1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,
-      48,    49,    14,    51,    -1,    17,    18,    -1,    -1,    21,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    49,    14,    51,    -1,    17,    18,    -1,    -1,    21,
       -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    67,
       -1,    33,    -1,    -1,    -1,    -1,    74,    75,    76,    77,
-      78,    -1,    -1,    45,    -1,    47,    -1,    49,    -1,    51,
-      -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    96,    -1,
-      -1,    99,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
-      -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,     1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,
-      -1,    -1,    14,    -1,    96,    17,    18,    99,    -1,    21,
-      -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
-      -1,    33,    -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    14,    51,
-      -1,    17,    18,    -1,    -1,    21,    -1,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    67,    -1,    33,    -1,    -1,
+      78,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    51,
+      -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    96,    97,
+      98,    99,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
       -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,    -1,
-      -1,    -1,    -1,    49,    -1,    51,    -1,    -1,    90,    91,
-      -1,    -1,    -1,    -1,    96,    97,    98,    99,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
-      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,     1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,
-      96,    97,    98,    99,    14,    -1,    -1,    17,    18,    -1,
-      20,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    -1,    -1,    33,    -1,    -1,    -1,     1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
-      14,    51,    -1,    17,    18,    -1,    -1,    21,    -1,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    67,    -1,    33,
+      -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    90,    91,
+      -1,    -1,    -1,    -1,    96,    97,    98,    99,    14,    -1,
+      -1,    17,    18,    -1,    20,    21,    -1,    23,    24,    25,
+      26,    27,    -1,    29,    -1,    -1,    -1,    33,    -1,    -1,
+      -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    49,    14,    51,    -1,    17,    18,    -1,
+      -1,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    67,    -1,    33,    -1,    -1,    -1,    -1,    74,    75,
+      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    49,
+      -1,    51,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,
+      96,    -1,    -1,    99,    -1,    -1,    45,    67,    47,    -1,
       -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
-      -1,    -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    -1,
-      90,    91,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,
-      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    34,
-      74,    75,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
-      -1,    -1,    96,    -1,    -1,    99,    61,    62,    63,    64,
-      65,    66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,
-      -1,    -1,    -1,    45,    -1,    47,    -1,    -1,    -1,    -1,
-      -1,    -1,    87,    88,    89,    90,    91,    92,    93,    61,
-      62,    63,    64,    65,    66,    -1,    68,    -1,    -1,    71,
-      72,    73,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    53,    87,    88,    89,    90,    91,
-      92,    93,    61,    62,    63,    64,    65,    66,    -1,    68,
-      -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    61,    62,    63,    64,    65,    66,    -1,    68,
+      90,    91,    71,    72,    73,    -1,    96,    -1,    -1,    99,
       -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    87,    88,
       89,    90,    91,    92,    93,    61,    62,    63,    64,    65,
       66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,
@@ -1594,7 +1581,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    53,    87,    88,    89,    90,    91,    92,
       93,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
       -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
+      47,    -1,    -1,    -1,    -1,    -1,    53,    87,    88,    89,
       90,    91,    92,    93,    61,    62,    63,    64,    65,    66,
       -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,
       -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -1607,25 +1594,28 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,
       91,    92,    93,    61,    62,    63,    64,    65,    66,    -1,
       68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,    87,
+      -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    87,
       88,    89,    90,    91,    92,    93,    61,    62,    63,    64,
       65,    66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    87,    88,    89,    90,    91,    92,    93,    55,
-      95,    -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,
-      66,    -1,    68,    -1,    -1,    71,    72,    73,    61,    62,
-      63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    72,
-      73,    87,    88,    89,    90,    91,    92,    93,    -1,    -1,
-      -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,    92,
-      93,    -1,    -1,    -1,    97,    61,    62,    63,    64,    65,
-      66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,
-      -1,    -1,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
-      -1,    87,    88,    89,    90,    91,    92,    93,    61,    62,
+      -1,    53,    87,    88,    89,    90,    91,    92,    93,    61,
+      62,    63,    64,    65,    66,    -1,    68,    -1,    -1,    71,
+      72,    73,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,
+      92,    93,    55,    95,    -1,    -1,    -1,    -1,    61,    62,
       63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    72,
-      73,    61,    62,    63,    64,    -1,    -1,    -1,    68,    -1,
+      73,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
       -1,    71,    72,    73,    87,    88,    89,    90,    91,    92,
       93,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-      90,    91,    92,    93
+      90,    91,    92,    93,    -1,    -1,    -1,    97,    61,    62,
+      63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    72,
+      73,    -1,    -1,    -1,    -1,    -1,    79,    80,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,    92,
+      93,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
+      -1,    71,    72,    73,    61,    62,    63,    64,    -1,    -1,
+      -1,    68,    -1,    -1,    71,    72,    73,    87,    88,    89,
+      90,    91,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
+      87,    88,    89,    90,    91,    92,    93
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1649,27 +1639,27 @@ static const yytype_uint8 yystos[] =
       90,    91,    92,    93,   126,    96,   129,   129,   154,    98,
      154,   128,    26,   154,    98,   154,   126,    26,   137,   129,
       45,   141,    26,    26,    43,    69,    70,    26,   126,    53,
-      63,   128,   128,    53,    63,    53,    52,    55,   141,    26,
-     139,    47,    53,    47,    53,    47,    53,    47,    53,    79,
-      80,    53,    95,    26,   138,    26,    97,   101,   101,   100,
-      98,    98,   103,   122,   129,   129,   129,   129,   129,   129,
+      63,   128,   128,    53,    63,    53,    63,    52,    55,   141,
+      26,   139,    47,    53,    47,    53,    47,    53,    47,    53,
+      79,    80,    53,    95,    26,   138,    26,    97,   101,   101,
+     100,    98,    98,   103,   122,   129,   129,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,    26,   150,    97,   129,    97,    97,    98,    97,   129,
-     150,    98,   129,   146,   128,    26,   132,    26,    26,    42,
-      63,   129,   129,   129,    53,    63,    47,   129,   129,   129,
-     129,   129,    98,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,   129,   118,   118,    98,   128,   128,   129,    27,
-      29,   160,    52,    95,    98,   130,    95,    26,   126,    43,
-     129,   129,   122,   129,   129,    26,    26,    47,    47,    47,
-      47,   106,   127,    26,   127,   152,    26,   155,   152,   150,
-     129,   114,   108,   111,   117,   128,   129,   129,   129,   129,
-     126,    95,   107,   126,   123,   127,    97,   127,    95,   126,
-     124,   124,   127,    53,    86,   120,    30,   152,   115,   109,
-     112,   123,   129,    35,    36,   121,   126,    26,   151,   127,
-     122,    53,    34,    85,   127,   129,    84,    98,   116,   129,
-      53,   126,   122,    26,   117,   110,   129,    84,    52,   127,
-     122,   113,   127,    85,   117,   122,   123,   127,   117,    85,
-     127,    85
+     129,   129,    26,   150,    97,   129,    97,    97,    98,    97,
+     129,   150,    98,   129,   146,   128,    26,   132,    26,    26,
+      42,    63,   129,   129,   129,    53,    63,    47,   129,   129,
+     129,   129,   129,   129,    98,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   118,   118,    98,   128,   128,
+     129,    27,    29,   160,    52,    95,    98,   130,    95,    26,
+     126,    43,   129,   129,   122,   129,   129,    26,    26,    47,
+      47,    47,    47,   106,   127,    26,   127,   152,    26,   155,
+     152,   150,   129,   114,   108,   111,   117,   128,   129,   129,
+     129,   129,   126,    95,   107,   126,   123,   127,    97,   127,
+      95,   126,   124,   124,   127,    53,    63,    86,   120,    30,
+     152,   115,   109,   112,   123,   129,   129,    35,    36,   121,
+     126,    26,   151,   127,   122,    53,    34,    85,   127,   129,
+      84,    98,   116,   129,    53,   126,   122,    26,   117,   110,
+     129,    84,    52,   127,   122,   113,   127,    85,   117,   122,
+     123,   127,   117,    85,   127,    85
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1677,45 +1667,45 @@ static const yytype_uint8 yyr1[] =
 {
        0,   102,   103,   103,   104,   104,   104,   105,   105,   105,
      105,   105,   105,   105,   105,   105,   105,   105,   105,   105,
-     106,   106,   106,   107,   107,   107,   108,   109,   110,   107,
-     111,   112,   113,   107,   114,   115,   116,   107,   107,   107,
-     107,   107,   117,   118,   119,   119,   120,   120,   121,   122,
-     123,   124,   125,   126,   127,   127,   127,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   129,   129,   129,
-     129,   129,   130,   129,   129,   129,   129,   129,   129,   129,
+     105,   105,   106,   106,   106,   107,   107,   107,   108,   109,
+     110,   107,   111,   112,   113,   107,   114,   115,   116,   107,
+     107,   107,   107,   107,   117,   118,   119,   119,   120,   120,
+     121,   122,   123,   124,   125,   126,   127,   127,   127,   128,
+     128,   128,   128,   128,   128,   128,   128,   128,   128,   129,
+     129,   129,   129,   129,   130,   129,   129,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     131,   131,   131,   131,   131,   131,   131,   131,   132,   132,
-     133,   133,   133,   133,   133,   134,   133,   135,   133,   136,
-     133,   133,   133,   133,   133,   137,   137,   138,   138,   139,
-     139,   140,   140,   140,   140,   140,   140,   141,   141,   142,
-     142,   142,   143,   142,   145,   146,   144,   144,   147,   144,
-     144,   144,   149,   148,   150,   150,   150,   151,   151,   151,
-     152,   153,   154,   154,   154,   155,   155,   156,   157,   157,
-     157,   157,   158,   158,   159,   159,   160,   160
+     129,   129,   131,   131,   131,   131,   131,   131,   131,   131,
+     132,   132,   133,   133,   133,   133,   133,   134,   133,   135,
+     133,   136,   133,   133,   133,   133,   133,   137,   137,   138,
+     138,   139,   139,   140,   140,   140,   140,   140,   140,   141,
+     141,   142,   142,   142,   143,   142,   145,   146,   144,   144,
+     147,   144,   144,   144,   149,   148,   150,   150,   150,   151,
+     151,   151,   152,   153,   154,   154,   154,   155,   155,   156,
+     157,   157,   157,   157,   158,   158,   159,   159,   160,   160
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_int8 yyr2[] =
 {
        0,     2,     1,     3,     0,     1,     1,     4,     4,     6,
-       4,     4,     4,     4,     4,     4,     5,     5,     8,     4,
-       1,     1,     1,     1,     1,     9,     0,     0,     0,    15,
-       0,     0,     0,    16,     0,     0,     0,    13,     2,     4,
-       7,     6,     0,     0,     9,    11,     0,     2,     6,     0,
-       0,     0,     1,     0,     0,     2,     2,     1,     1,     1,
-       1,     1,     1,     2,     3,     1,     2,     1,     1,     4,
-       2,     4,     0,     7,     4,     3,     1,     1,     3,     3,
+       4,     4,     4,     4,     4,     4,     5,     5,     8,     8,
+       4,     4,     1,     1,     1,     1,     1,     9,     0,     0,
+       0,    15,     0,     0,     0,    16,     0,     0,     0,    13,
+       2,     4,     7,     6,     0,     0,     9,    11,     0,     2,
+       6,     0,     0,     0,     1,     0,     0,     2,     2,     1,
+       1,     1,     1,     1,     1,     2,     3,     1,     2,     1,
+       1,     4,     2,     4,     0,     7,     4,     3,     1,     1,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     2,     3,     3,     3,     3,     2,     2,     4,     4,
-       4,     6,     4,     6,     4,     6,     4,     6,     2,     1,
-       2,     1,     1,     2,     1,     0,     3,     0,     3,     0,
-       3,     4,     2,     4,     2,     1,     3,     1,     3,     1,
-       3,     1,     2,     2,     2,     3,     2,     3,     2,     2,
-       3,     2,     0,     3,     0,     0,     9,     2,     0,     7,
-       8,     6,     0,     3,     0,     1,     3,     0,     1,     3,
-       0,     2,     0,     1,     3,     1,     3,     3,     0,     1,
-       1,     1,     1,     3,     1,     3,     3,     3
+       3,     3,     3,     2,     3,     3,     3,     3,     2,     2,
+       4,     4,     4,     6,     4,     6,     4,     6,     4,     6,
+       2,     1,     2,     1,     1,     2,     1,     0,     3,     0,
+       3,     0,     3,     4,     2,     4,     2,     1,     3,     1,
+       3,     1,     3,     1,     2,     2,     2,     3,     2,     3,
+       2,     2,     3,     2,     0,     3,     0,     0,     9,     2,
+       0,     7,     8,     6,     0,     3,     0,     1,     3,     0,
+       1,     3,     0,     2,     0,     1,     3,     1,     3,     3,
+       0,     1,     1,     1,     1,     3,     1,     3,     3,     3
 };
 
 
@@ -1989,73 +1979,73 @@ yydestruct (const char *yymsg,
     case 22: /* BLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1993 "engines/director/lingo/lingo-gr.cpp"
+#line 1983 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1999 "engines/director/lingo/lingo-gr.cpp"
+#line 1989 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2005 "engines/director/lingo/lingo-gr.cpp"
+#line 1995 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* THEFBLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2011 "engines/director/lingo/lingo-gr.cpp"
+#line 2001 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ID  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2017 "engines/director/lingo/lingo-gr.cpp"
+#line 2007 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* STRING  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2023 "engines/director/lingo/lingo-gr.cpp"
+#line 2013 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* HANDLER  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2029 "engines/director/lingo/lingo-gr.cpp"
+#line 2019 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* SYMBOL  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2035 "engines/director/lingo/lingo-gr.cpp"
+#line 2025 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 30: /* ENDCLAUSE  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2041 "engines/director/lingo/lingo-gr.cpp"
+#line 2031 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 31: /* tPLAYACCEL  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2047 "engines/director/lingo/lingo-gr.cpp"
+#line 2037 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 32: /* tMETHOD  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2053 "engines/director/lingo/lingo-gr.cpp"
+#line 2043 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 148: /* on  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2059 "engines/director/lingo/lingo-gr.cpp"
+#line 2049 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2342,7 +2332,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2346 "engines/director/lingo/lingo-gr.cpp"
+#line 2336 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2350,7 +2340,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2354 "engines/director/lingo/lingo-gr.cpp"
+#line 2344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2366,7 +2356,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2370 "engines/director/lingo/lingo-gr.cpp"
+#line 2360 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
@@ -2378,7 +2368,7 @@ yyreduce:
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2382 "engines/director/lingo/lingo-gr.cpp"
+#line 2372 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
@@ -2390,7 +2380,7 @@ yyreduce:
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2394 "engines/director/lingo/lingo-gr.cpp"
+#line 2384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2402,7 +2392,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2406 "engines/director/lingo/lingo-gr.cpp"
+#line 2396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2414,7 +2404,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2418 "engines/director/lingo/lingo-gr.cpp"
+#line 2408 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2426,7 +2416,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2430 "engines/director/lingo/lingo-gr.cpp"
+#line 2420 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2438,7 +2428,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2442 "engines/director/lingo/lingo-gr.cpp"
+#line 2432 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2449,7 +2439,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2453 "engines/director/lingo/lingo-gr.cpp"
+#line 2443 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2460,7 +2450,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2464 "engines/director/lingo/lingo-gr.cpp"
+#line 2454 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2476,11 +2466,27 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2480 "engines/director/lingo/lingo-gr.cpp"
+#line 2470 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
 #line 313 "engines/director/lingo/lingo-gr.y"
+                                                                        {
+		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
+			warning("LEXER: keyword 'menu' expected");
+			YYERROR;
+		}
+
+		warning("STUB: menuItem entity");
+		g_lingo->code1(LC::c_themenuitementityassign);
+		g_lingo->codeInt((yyvsp[-6].e)[0]);
+		g_lingo->codeInt((yyvsp[-6].e)[1]);
+		(yyval.code) = (yyvsp[0].code); }
+#line 2486 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 20:
+#line 324 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectpropassign);
 		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
@@ -2488,11 +2494,23 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2492 "engines/director/lingo/lingo-gr.cpp"
+#line 2498 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 25:
+  case 21:
 #line 331 "engines/director/lingo/lingo-gr.y"
+                                        {
+		g_lingo->code1(LC::c_objectpropassign);
+		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
+		g_lingo->codeString((yyvsp[-2].objectprop).prop->c_str());
+		delete (yyvsp[-2].objectprop).obj;
+		delete (yyvsp[-2].objectprop).prop;
+		(yyval.code) = (yyvsp[0].code); }
+#line 2510 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 27:
+#line 349 "engines/director/lingo/lingo-gr.y"
                                                                                                 {
 		inst start = 0, end = 0;
 		WRITE_UINT32(&start, (yyvsp[-6].code) - (yyvsp[-1].code) + 1);
@@ -2500,32 +2518,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2504 "engines/director/lingo/lingo-gr.cpp"
+#line 2522 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 26:
-#line 344 "engines/director/lingo/lingo-gr.y"
+  case 28:
+#line 362 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2512 "engines/director/lingo/lingo-gr.cpp"
+#line 2530 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 27:
-#line 348 "engines/director/lingo/lingo-gr.y"
+  case 29:
+#line 366 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2519 "engines/director/lingo/lingo-gr.cpp"
+#line 2537 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 28:
-#line 351 "engines/director/lingo/lingo-gr.y"
+  case 30:
+#line 369 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2525 "engines/director/lingo/lingo-gr.cpp"
+#line 2543 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 29:
-#line 351 "engines/director/lingo/lingo-gr.y"
+  case 31:
+#line 369 "engines/director/lingo/lingo-gr.y"
                                                                                                       {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2546,32 +2564,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2550 "engines/director/lingo/lingo-gr.cpp"
+#line 2568 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 30:
-#line 378 "engines/director/lingo/lingo-gr.y"
+  case 32:
+#line 396 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2558 "engines/director/lingo/lingo-gr.cpp"
+#line 2576 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 31:
-#line 382 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 400 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2565 "engines/director/lingo/lingo-gr.cpp"
+#line 2583 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 32:
-#line 385 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 403 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2571 "engines/director/lingo/lingo-gr.cpp"
+#line 2589 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 33:
-#line 386 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 404 "engines/director/lingo/lingo-gr.y"
                                                                 {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2592,32 +2610,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2596 "engines/director/lingo/lingo-gr.cpp"
+#line 2614 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 34:
-#line 412 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 430 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);
 				  g_lingo->codeInt(0);
 				  Common::String count("count");
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2607 "engines/director/lingo/lingo-gr.cpp"
+#line 2625 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 35:
-#line 419 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 437 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get counter
 				  g_lingo->codeInt(0);
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2617 "engines/director/lingo/lingo-gr.cpp"
+#line 2635 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 36:
-#line 425 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 443 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get list
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_stackpeek);	// get counter
@@ -2628,11 +2646,11 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2632 "engines/director/lingo/lingo-gr.cpp"
+#line 2650 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 37:
-#line 435 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 453 "engines/director/lingo/lingo-gr.y"
                                                         {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2652,11 +2670,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2656 "engines/director/lingo/lingo-gr.cpp"
+#line 2674 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 38:
-#line 455 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 473 "engines/director/lingo/lingo-gr.y"
                         {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -2665,43 +2683,43 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2669 "engines/director/lingo/lingo-gr.cpp"
+#line 2687 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 39:
-#line 463 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 481 "engines/director/lingo/lingo-gr.y"
                               {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2677 "engines/director/lingo/lingo-gr.cpp"
+#line 2695 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 40:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 484 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2683 "engines/director/lingo/lingo-gr.cpp"
+#line 2701 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 41:
-#line 467 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 485 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2689 "engines/director/lingo/lingo-gr.cpp"
+#line 2707 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 42:
-#line 469 "engines/director/lingo/lingo-gr.y"
+  case 44:
+#line 487 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2695 "engines/director/lingo/lingo-gr.cpp"
+#line 2713 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 43:
-#line 471 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 489 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2701 "engines/director/lingo/lingo-gr.cpp"
+#line 2719 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 44:
-#line 473 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 491 "engines/director/lingo/lingo-gr.y"
                                                                                          {
 		inst else1 = 0, end3 = 0;
 		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
@@ -2709,11 +2727,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2713 "engines/director/lingo/lingo-gr.cpp"
+#line 2731 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 45:
-#line 480 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 498 "engines/director/lingo/lingo-gr.y"
                                                                                                           {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-5].code) + 1 - (yyvsp[-8].code) + 1);
@@ -2721,107 +2739,107 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2725 "engines/director/lingo/lingo-gr.cpp"
+#line 2743 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 48:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 509 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2735 "engines/director/lingo/lingo-gr.cpp"
+#line 2753 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 49:
-#line 497 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 515 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2743 "engines/director/lingo/lingo-gr.cpp"
+#line 2761 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 50:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 519 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2751 "engines/director/lingo/lingo-gr.cpp"
+#line 2769 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 51:
-#line 505 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 523 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2759 "engines/director/lingo/lingo-gr.cpp"
+#line 2777 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 52:
-#line 509 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 527 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2766 "engines/director/lingo/lingo-gr.cpp"
+#line 2784 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 53:
-#line 512 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 530 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2772 "engines/director/lingo/lingo-gr.cpp"
+#line 2790 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 54:
-#line 514 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 532 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2778 "engines/director/lingo/lingo-gr.cpp"
+#line 2796 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 57:
-#line 518 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 536 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2786 "engines/director/lingo/lingo-gr.cpp"
+#line 2804 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 58:
-#line 521 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 539 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2794 "engines/director/lingo/lingo-gr.cpp"
+#line 2812 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 59:
-#line 524 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 542 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2803 "engines/director/lingo/lingo-gr.cpp"
+#line 2821 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 60:
-#line 528 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 546 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2812 "engines/director/lingo/lingo-gr.cpp"
+#line 2830 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 61:
-#line 532 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 550 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2821 "engines/director/lingo/lingo-gr.cpp"
+#line 2839 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 536 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 554 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2830,28 +2848,28 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2834 "engines/director/lingo/lingo-gr.cpp"
+#line 2852 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 544 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 562 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2845 "engines/director/lingo/lingo-gr.cpp"
+#line 2863 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
-#line 550 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 568 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2851 "engines/director/lingo/lingo-gr.cpp"
+#line 2869 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 552 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 570 "engines/director/lingo/lingo-gr.y"
                                 {
 		// Director parser till D3 was forgiving for any hanging parentheses
 		if (g_lingo->_ignoreError) {
@@ -2862,280 +2880,280 @@ yyreduce:
 			yyerrok;
 		}
 	}
-#line 2866 "engines/director/lingo/lingo-gr.cpp"
+#line 2884 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 563 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 581 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2872 "engines/director/lingo/lingo-gr.cpp"
+#line 2890 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 565 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 583 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2880 "engines/director/lingo/lingo-gr.cpp"
+#line 2898 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 568 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 586 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2888 "engines/director/lingo/lingo-gr.cpp"
+#line 2906 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 571 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 589 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2899 "engines/director/lingo/lingo-gr.cpp"
+#line 2917 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 577 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 595 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2905 "engines/director/lingo/lingo-gr.cpp"
+#line 2923 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 578 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 596 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2914 "engines/director/lingo/lingo-gr.cpp"
+#line 2932 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 582 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 600 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2922 "engines/director/lingo/lingo-gr.cpp"
+#line 2940 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 585 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 603 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2930 "engines/director/lingo/lingo-gr.cpp"
+#line 2948 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 588 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 606 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_objectproppush);
 		g_lingo->codeString((yyvsp[0].objectprop).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2941 "engines/director/lingo/lingo-gr.cpp"
+#line 2959 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 595 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 613 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2947 "engines/director/lingo/lingo-gr.cpp"
+#line 2965 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 614 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2953 "engines/director/lingo/lingo-gr.cpp"
+#line 2971 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 597 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 615 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2959 "engines/director/lingo/lingo-gr.cpp"
+#line 2977 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 598 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 616 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2965 "engines/director/lingo/lingo-gr.cpp"
+#line 2983 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 599 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 617 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2971 "engines/director/lingo/lingo-gr.cpp"
+#line 2989 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 600 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 618 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2977 "engines/director/lingo/lingo-gr.cpp"
+#line 2995 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 601 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 619 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2983 "engines/director/lingo/lingo-gr.cpp"
+#line 3001 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 602 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 620 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2989 "engines/director/lingo/lingo-gr.cpp"
+#line 3007 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 603 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 621 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2995 "engines/director/lingo/lingo-gr.cpp"
+#line 3013 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 604 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 622 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 3001 "engines/director/lingo/lingo-gr.cpp"
+#line 3019 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 605 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 623 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 3007 "engines/director/lingo/lingo-gr.cpp"
+#line 3025 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 606 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 624 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 3013 "engines/director/lingo/lingo-gr.cpp"
+#line 3031 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 607 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 625 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 3019 "engines/director/lingo/lingo-gr.cpp"
+#line 3037 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 608 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 626 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 3025 "engines/director/lingo/lingo-gr.cpp"
+#line 3043 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 609 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 627 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 3031 "engines/director/lingo/lingo-gr.cpp"
+#line 3049 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 610 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 628 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 3037 "engines/director/lingo/lingo-gr.cpp"
+#line 3055 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 611 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 629 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 3043 "engines/director/lingo/lingo-gr.cpp"
+#line 3061 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 612 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 630 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 3049 "engines/director/lingo/lingo-gr.cpp"
+#line 3067 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 613 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 631 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 3073 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 614 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 632 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 3061 "engines/director/lingo/lingo-gr.cpp"
+#line 3079 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 615 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 633 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 3067 "engines/director/lingo/lingo-gr.cpp"
+#line 3085 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
-#line 616 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 634 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 3073 "engines/director/lingo/lingo-gr.cpp"
+#line 3091 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 636 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
-#line 3079 "engines/director/lingo/lingo-gr.cpp"
+#line 3097 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 101:
-#line 619 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 637 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 3085 "engines/director/lingo/lingo-gr.cpp"
+#line 3103 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 620 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 638 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3091 "engines/director/lingo/lingo-gr.cpp"
+#line 3109 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 621 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 639 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 3097 "engines/director/lingo/lingo-gr.cpp"
+#line 3115 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 622 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 640 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3103 "engines/director/lingo/lingo-gr.cpp"
+#line 3121 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 623 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 641 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 3109 "engines/director/lingo/lingo-gr.cpp"
+#line 3127 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 624 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 642 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3115 "engines/director/lingo/lingo-gr.cpp"
+#line 3133 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 625 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 643 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 3121 "engines/director/lingo/lingo-gr.cpp"
+#line 3139 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 627 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 645 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 3129 "engines/director/lingo/lingo-gr.cpp"
+#line 3147 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 632 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 650 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3135 "engines/director/lingo/lingo-gr.cpp"
+#line 3153 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 635 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 653 "engines/director/lingo/lingo-gr.y"
                                                 {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -3144,260 +3162,260 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 3148 "engines/director/lingo/lingo-gr.cpp"
+#line 3166 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 643 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 661 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3154 "engines/director/lingo/lingo-gr.cpp"
+#line 3172 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 644 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 662 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3160 "engines/director/lingo/lingo-gr.cpp"
+#line 3178 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
-#line 644 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 662 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 3166 "engines/director/lingo/lingo-gr.cpp"
+#line 3184 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 663 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3172 "engines/director/lingo/lingo-gr.cpp"
+#line 3190 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 663 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3178 "engines/director/lingo/lingo-gr.cpp"
+#line 3196 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 646 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 664 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3184 "engines/director/lingo/lingo-gr.cpp"
+#line 3202 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 646 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 664 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3190 "engines/director/lingo/lingo-gr.cpp"
+#line 3208 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 647 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 665 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3198 "engines/director/lingo/lingo-gr.cpp"
+#line 3216 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 650 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 668 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3206 "engines/director/lingo/lingo-gr.cpp"
+#line 3224 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 653 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 671 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
-#line 3212 "engines/director/lingo/lingo-gr.cpp"
+#line 3230 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 654 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 672 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3218 "engines/director/lingo/lingo-gr.cpp"
+#line 3236 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 656 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 674 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3226 "engines/director/lingo/lingo-gr.cpp"
+#line 3244 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 659 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 677 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3234 "engines/director/lingo/lingo-gr.cpp"
+#line 3252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 681 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3242 "engines/director/lingo/lingo-gr.cpp"
+#line 3260 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 666 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 684 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3250 "engines/director/lingo/lingo-gr.cpp"
+#line 3268 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 670 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 688 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3258 "engines/director/lingo/lingo-gr.cpp"
+#line 3276 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 673 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 691 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3266 "engines/director/lingo/lingo-gr.cpp"
+#line 3284 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 684 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 702 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3272 "engines/director/lingo/lingo-gr.cpp"
+#line 3290 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 685 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 703 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3278 "engines/director/lingo/lingo-gr.cpp"
+#line 3296 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 686 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 704 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3284 "engines/director/lingo/lingo-gr.cpp"
+#line 3302 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 687 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 705 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3293 "engines/director/lingo/lingo-gr.cpp"
+#line 3311 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 691 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 709 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3302 "engines/director/lingo/lingo-gr.cpp"
+#line 3320 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 695 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 713 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3311 "engines/director/lingo/lingo-gr.cpp"
+#line 3329 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 703 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 721 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3320 "engines/director/lingo/lingo-gr.cpp"
+#line 3338 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 707 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 725 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3329 "engines/director/lingo/lingo-gr.cpp"
+#line 3347 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 711 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 729 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3338 "engines/director/lingo/lingo-gr.cpp"
+#line 3356 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 715 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 733 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3344 "engines/director/lingo/lingo-gr.cpp"
+#line 3362 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 715 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 733 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3353 "engines/director/lingo/lingo-gr.cpp"
+#line 3371 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 745 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 763 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3359 "engines/director/lingo/lingo-gr.cpp"
+#line 3377 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 745 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 763 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory = NULL; }
-#line 3365 "engines/director/lingo/lingo-gr.cpp"
+#line 3383 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 746 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 764 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3375 "engines/director/lingo/lingo-gr.cpp"
+#line 3393 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 751 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 769 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3381 "engines/director/lingo/lingo-gr.cpp"
+#line 3399 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 752 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 770 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
-#line 3387 "engines/director/lingo/lingo-gr.cpp"
+#line 3405 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 753 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 771 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg), g_lingo->_currentFactory);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3397 "engines/director/lingo/lingo-gr.cpp"
+#line 3415 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 758 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 776 "engines/director/lingo/lingo-gr.y"
                                                                    {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3406,70 +3424,70 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3410 "engines/director/lingo/lingo-gr.cpp"
+#line 3428 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 766 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 784 "engines/director/lingo/lingo-gr.y"
                                                {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3420 "engines/director/lingo/lingo-gr.cpp"
+#line 3438 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 772 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 790 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3426 "engines/director/lingo/lingo-gr.cpp"
+#line 3444 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 772 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 790 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory = NULL; }
-#line 3433 "engines/director/lingo/lingo-gr.cpp"
+#line 3451 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 775 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 793 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3439 "engines/director/lingo/lingo-gr.cpp"
+#line 3457 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 776 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 794 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3445 "engines/director/lingo/lingo-gr.cpp"
+#line 3463 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 777 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 795 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3451 "engines/director/lingo/lingo-gr.cpp"
+#line 3469 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 780 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 798 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3457 "engines/director/lingo/lingo-gr.cpp"
+#line 3475 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 781 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 799 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3463 "engines/director/lingo/lingo-gr.cpp"
+#line 3481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 783 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 801 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3469 "engines/director/lingo/lingo-gr.cpp"
+#line 3487 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 785 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 803 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3477,113 +3495,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3481 "engines/director/lingo/lingo-gr.cpp"
+#line 3499 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 793 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 811 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3487 "engines/director/lingo/lingo-gr.cpp"
+#line 3505 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 794 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 812 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3493 "engines/director/lingo/lingo-gr.cpp"
+#line 3511 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 795 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 813 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3499 "engines/director/lingo/lingo-gr.cpp"
+#line 3517 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 797 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 815 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3505 "engines/director/lingo/lingo-gr.cpp"
+#line 3523 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 798 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 816 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3511 "engines/director/lingo/lingo-gr.cpp"
+#line 3529 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 800 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 818 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3517 "engines/director/lingo/lingo-gr.cpp"
+#line 3535 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
-#line 802 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 820 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3523 "engines/director/lingo/lingo-gr.cpp"
+#line 3541 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 803 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 821 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3529 "engines/director/lingo/lingo-gr.cpp"
+#line 3547 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 804 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 822 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3535 "engines/director/lingo/lingo-gr.cpp"
+#line 3553 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171:
-#line 805 "engines/director/lingo/lingo-gr.y"
+  case 173:
+#line 823 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3541 "engines/director/lingo/lingo-gr.cpp"
+#line 3559 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172:
-#line 807 "engines/director/lingo/lingo-gr.y"
+  case 174:
+#line 825 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3547 "engines/director/lingo/lingo-gr.cpp"
+#line 3565 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173:
-#line 808 "engines/director/lingo/lingo-gr.y"
+  case 175:
+#line 826 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3553 "engines/director/lingo/lingo-gr.cpp"
+#line 3571 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 174:
-#line 810 "engines/director/lingo/lingo-gr.y"
+  case 176:
+#line 828 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3559 "engines/director/lingo/lingo-gr.cpp"
+#line 3577 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 175:
-#line 811 "engines/director/lingo/lingo-gr.y"
+  case 177:
+#line 829 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3565 "engines/director/lingo/lingo-gr.cpp"
+#line 3583 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 176:
-#line 813 "engines/director/lingo/lingo-gr.y"
+  case 178:
+#line 831 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3574 "engines/director/lingo/lingo-gr.cpp"
+#line 3592 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 177:
-#line 817 "engines/director/lingo/lingo-gr.y"
+  case 179:
+#line 835 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3583 "engines/director/lingo/lingo-gr.cpp"
+#line 3601 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3587 "engines/director/lingo/lingo-gr.cpp"
+#line 3605 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3782,7 +3800,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 823 "engines/director/lingo/lingo-gr.y"
+#line 841 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 4dc015b36c..131804b4f5 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -305,6 +305,17 @@ asgn: tPUT expr tINTO ID 		{
 			YYERROR;
 		}
 
+		warning("STUB: menuItem entity");
+		g_lingo->code1(LC::c_themenuitementityassign);
+		g_lingo->codeInt($THEMENUITEMENTITY[0]);
+		g_lingo->codeInt($THEMENUITEMENTITY[1]);
+		$$ = $expr; }
+	| tSET THEMENUITEMENTITY simpleexpr tOF ID simpleexpr tEQ expr	{
+		if (!$ID->equalsIgnoreCase("menu")) {
+			warning("LEXER: keyword 'menu' expected");
+			YYERROR;
+		}
+
 		warning("STUB: menuItem entity");
 		g_lingo->code1(LC::c_themenuitementityassign);
 		g_lingo->codeInt($THEMENUITEMENTITY[0]);
@@ -317,6 +328,13 @@ asgn: tPUT expr tINTO ID 		{
 		delete $THEOBJECTPROP.obj;
 		delete $THEOBJECTPROP.prop;
 		$$ = $expr; }
+	| tSET THEOBJECTPROP tEQ expr	{
+		g_lingo->code1(LC::c_objectpropassign);
+		g_lingo->codeString($THEOBJECTPROP.obj->c_str());
+		g_lingo->codeString($THEOBJECTPROP.prop->c_str());
+		delete $THEOBJECTPROP.obj;
+		delete $THEOBJECTPROP.prop;
+		$$ = $expr; }
 
 stmtoneliner: macro
 	| expr


Commit: 2d5d3d66066fe1462ad20fef0f4ec98e644f73ad
    https://github.com/scummvm/scummvm/commit/2d5d3d66066fe1462ad20fef0f4ec98e644f73ad
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-18T22:27:59-04:00

Commit Message:
DIRECTOR: LINGO: Fix proplist parsing

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 6f9a97da5a..ac5e16f9b3 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -816,18 +816,18 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  124
+#define YYFINAL  125
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2596
+#define YYLAST   2638
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  102
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  59
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  179
+#define YYNRULES  180
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  376
+#define YYNSTATES  380
 
 #define YYMAXUTOK   341
 
@@ -901,7 +901,8 @@ static const yytype_int16 yyrline[] =
      719,   721,   725,   729,   733,   733,   763,   763,   763,   769,
      770,   770,   776,   784,   790,   790,   793,   794,   795,   797,
      798,   799,   801,   803,   811,   812,   813,   815,   816,   818,
-     820,   821,   822,   823,   825,   826,   828,   829,   831,   835
+     820,   821,   822,   823,   825,   826,   828,   829,   831,   835,
+     839
 };
 #endif
 
@@ -966,7 +967,7 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-320)
+#define YYPACT_NINF (-326)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -980,44 +981,44 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     780,   -80,  -320,  -320,    56,  -320,   606,   328,    56,   -28,
-     509,  -320,  -320,  -320,  -320,  -320,   -18,  -320,  1776,  -320,
-    -320,  -320,    -8,  2014,    85,    77,    25,    62,  2050,  1812,
-    -320,  2050,  2050,  2050,  2050,  2050,  2050,  2050,  -320,  -320,
-    2050,  2050,  2050,   421,    93,     5,  -320,  -320,  -320,  -320,
-    2050,  -320,  2490,  -320,  -320,  -320,  -320,  -320,  -320,  -320,
-    -320,  -320,  -320,  -320,  -320,     8,  2014,  1892,  2490,    20,
-    1892,    20,  -320,    56,  1928,  2490,    22,   693,  -320,  -320,
-      88,  2050,  -320,   106,  -320,  2071,  -320,   127,  -320,   133,
-     394,   134,  -320,    27,    56,    56,    28,    36,   109,  -320,
-    2407,  2071,  -320,   147,  -320,  2104,  2137,  2170,  2203,  2457,
-    2368,   148,   160,  -320,  -320,  2420,    86,    89,  -320,  2490,
-      92,    91,    96,  -320,  -320,   780,  2490,  2050,  2050,  2050,
-    2050,  2050,  2050,  2050,  2050,  2050,  2050,  2050,  2050,  2050,
-    2050,  2050,  2050,  2050,   170,  1928,   394,  2420,   -39,  2050,
-      47,  -320,   -31,    49,  2050,    20,   170,  -320,   100,  2490,
-    2050,  -320,  -320,    56,   -21,   173,   174,   -22,  2050,  2050,
-    2050,    39,   157,  2050,  2050,  2050,  2050,  2050,  2050,  -320,
-    -320,   107,  2050,  2050,  2050,  2050,  2050,  2050,  2050,  2050,
-    2050,  2050,  -320,  -320,  -320,   108,  -320,  -320,    56,    56,
-    -320,  2050,    90,  -320,   155,    16,    16,    16,    16,  2503,
-    2503,  -320,   -44,    16,    16,    16,    16,   -44,   -54,   -54,
-    -320,  -320,  -320,   -55,  -320,  2490,  -320,  -320,  -320,  -320,
-    2490,    17,   182,  2490,  -320,   167,  -320,  -320,  -320,  -320,
-    2050,  2050,  2490,  2490,    16,  2050,  2050,   185,  2490,    16,
-    2490,    16,  2490,  2490,   186,  2490,  2236,  2490,  2269,  2490,
-    2302,  2490,  2335,  2490,  2490,  1696,  -320,   187,  -320,  -320,
-    2490,    86,    89,  -320,  -320,  -320,   188,  2050,  -320,  -320,
-     170,  2050,  2490,   234,  -320,  2490,    16,    56,  -320,  2050,
-    2050,  2050,  2050,  -320,  1197,  -320,  1113,  -320,  -320,    52,
-    -320,    18,  2490,  -320,  -320,  -320,  -320,    48,  2490,  2490,
-    2490,  2490,  -320,  -320,  -320,   129,  -320,   864,  -320,   947,
-    -320,  -320,  -320,  -320,  1280,  2050,  2050,  -320,   121,   190,
-    -320,  -320,   166,   189,   135,  2490,    16,  -320,  2050,  -320,
-     138,  -320,   126,  1030,  -320,  2050,   172,  -320,  1363,  2490,
-    -320,   200,  -320,  2490,  2050,   145,   178,  -320,  -320,  -320,
-    2490,  -320,  -320,  1447,  -320,  -320,  1113,  -320,  -320,  -320,
-    -320,  1530,  -320,  -320,  1613,  -320
+     784,   -85,  -326,  -326,    52,  -326,   610,   332,    52,     7,
+     513,  -326,  -326,  -326,  -326,  -326,    30,  -326,  1780,  -326,
+    -326,  -326,    36,  2018,   -13,   128,    37,    39,  2054,  1816,
+    -326,  2054,  2054,  2054,  2054,  2054,  2054,  2054,  -326,  -326,
+    2054,  2054,  2054,   425,    67,    -3,  -326,  -326,  -326,  -326,
+    2054,  -326,  2545,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
+    -326,  -326,  -326,  -326,  -326,    18,  2018,  1896,  2545,    23,
+    1896,    23,  -326,    52,  1932,  2545,    60,   697,  -326,  -326,
+      85,  2054,  -326,   105,  -326,  2126,  -326,   133,  -326,   136,
+     398,   140,  -326,   -44,    52,    52,    -1,    19,   123,  -326,
+    2462,  2126,  -326,   150,  -326,  2159,  2192,  2225,  2258,  2512,
+    2423,   161,   162,  -326,  -326,  2475,   -50,    88,    89,  -326,
+    2545,    91,    98,   100,  -326,  -326,   784,  2545,  2054,  2054,
+    2054,  2054,  2054,  2054,  2054,  2054,  2054,  2054,  2054,  2054,
+    2054,  2054,  2054,  2054,  2054,   173,  1932,   398,  2475,   -49,
+    2054,    22,  -326,    20,    45,  2054,    23,   173,  -326,   102,
+    2545,  2054,  -326,  -326,    52,   -18,   175,   177,   -22,  2054,
+    2054,  2054,    32,   157,  2054,  2054,  2054,  2054,  2054,  2054,
+    -326,  -326,   107,  2054,  2054,  2054,  2054,  2054,  2054,  2054,
+    2054,  2054,  2054,  -326,  -326,  -326,   108,  -326,  -326,  2054,
+    2054,  2054,  -326,  2054,    62,  -326,   158,    16,    16,    16,
+      16,   156,   156,  -326,     9,    16,    16,    16,    16,     9,
+     -53,   -53,  -326,  -326,  -326,   -74,  -326,  2545,  -326,  -326,
+    -326,  -326,  2545,    15,   183,  2545,  -326,   168,  -326,  -326,
+    -326,  -326,  2054,  2054,  2545,  2545,    16,  2054,  2054,   186,
+    2545,    16,  2545,    16,  2545,  2545,   187,  2545,  2291,  2545,
+    2324,  2545,  2357,  2545,  2390,  2545,  2545,  1700,  -326,   188,
+    2545,  2545,  2545,  2545,   114,    88,    89,  -326,  -326,  -326,
+     190,  2054,  -326,  -326,   173,  2054,  2545,  2093,  -326,  2545,
+      16,    52,  -326,  2054,  2054,  2054,  2054,  -326,  1201,  -326,
+    1117,  -326,  -326,    55,  -326,    17,  2545,  -326,  -326,  -326,
+    -326,    41,  2545,  2545,  2545,  2545,  -326,  -326,  -326,   137,
+    -326,   868,  -326,   951,  -326,  -326,  -326,  -326,  1284,  2054,
+    2054,  -326,   121,   199,  -326,  -326,   179,   192,   149,  2545,
+      16,  -326,  2054,  -326,   151,  -326,   142,  1034,  -326,  2054,
+     185,  -326,  1367,  2545,  -326,   224,  -326,  2545,  2054,   167,
+     200,  -326,  -326,  -326,  2545,  -326,  -326,  1451,  -326,  -326,
+    1117,  -326,  -326,  -326,  -326,  1534,  -326,  -326,  1617,  -326
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1036,55 +1037,55 @@ static const yytype_uint8 yydefact[] =
        0,     0,   134,     0,   135,   136,   138,     0,    40,     0,
      112,     0,    55,     0,     0,     0,     0,     0,     0,   149,
      126,   141,   143,     0,    93,     0,     0,     0,     0,     0,
-       0,     0,     0,    98,    99,     0,    62,    61,   171,   174,
-       0,   172,   173,   176,     1,     0,    51,     0,     0,     0,
+       0,     0,     0,    98,    99,     0,    63,    62,    61,   171,
+     174,     0,   173,   172,   176,     1,     0,    51,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   156,     0,     0,   165,     0,     0,
-       0,    77,    63,     0,     0,   145,   156,   127,   118,   140,
-       0,   137,   147,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   142,
-     131,   122,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    45,    45,   129,   120,   155,    66,     0,     0,
-     169,     0,     0,     3,     0,    89,    90,    87,    88,    91,
-      92,    84,    95,    96,    97,    86,    85,    94,    80,    81,
-      82,    83,   157,     0,   123,   166,    71,    73,    74,    76,
-     168,     0,     0,   139,    55,     0,     7,     8,    10,    11,
-       0,     0,    51,    15,    13,     0,     0,     0,    14,    12,
-      20,    21,    41,   125,     0,   102,     0,   104,     0,   106,
-       0,   108,     0,   100,   101,     0,    56,     0,   179,   178,
-     175,     0,     0,   177,    56,   162,     0,     0,   162,   128,
-     156,     0,    36,    28,    44,    16,    17,     0,   132,     0,
-       0,     0,     0,    55,     0,   130,     0,    56,   158,     0,
-      56,     0,     9,    55,    53,    53,    56,     0,   103,   105,
-     107,   109,    43,    57,    58,     0,    48,     0,    75,     0,
-     162,    37,    29,    33,     0,     0,     0,    42,    55,   159,
-      56,    51,     0,     0,     0,    18,    19,    56,     0,    49,
-       0,   160,   152,     0,    38,     0,     0,    27,     0,    51,
-      46,     0,    44,    30,     0,     0,     0,   161,    56,    51,
-      34,    47,    56,     0,    44,    51,     0,    39,    56,    44,
-      50,     0,    56,    31,     0,    35
+       0,     0,     0,     0,     0,   156,     0,     0,   165,     0,
+       0,     0,    77,    63,     0,     0,   145,   156,   127,   118,
+     140,     0,   137,   147,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     142,   131,   122,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    45,    45,   129,   120,   155,    66,     0,
+       0,     0,   169,     0,     0,     3,     0,    89,    90,    87,
+      88,    91,    92,    84,    95,    96,    97,    86,    85,    94,
+      80,    81,    82,    83,   157,     0,   123,   166,    71,    73,
+      74,    76,   168,     0,     0,   139,    55,     0,     7,     8,
+      10,    11,     0,     0,    51,    15,    13,     0,     0,     0,
+      14,    12,    20,    21,    41,   125,     0,   102,     0,   104,
+       0,   106,     0,   108,     0,   100,   101,     0,    56,     0,
+     180,   179,   178,   175,     0,     0,     0,   177,    56,   162,
+       0,     0,   162,   128,   156,     0,    36,    28,    44,    16,
+      17,     0,   132,     0,     0,     0,     0,    55,     0,   130,
+       0,    56,   158,     0,    56,     0,     9,    55,    53,    53,
+      56,     0,   103,   105,   107,   109,    43,    57,    58,     0,
+      48,     0,    75,     0,   162,    37,    29,    33,     0,     0,
+       0,    42,    55,   159,    56,    51,     0,     0,     0,    18,
+      19,    56,     0,    49,     0,   160,   152,     0,    38,     0,
+       0,    27,     0,    51,    46,     0,    44,    30,     0,     0,
+       0,   161,    56,    51,    34,    47,    56,     0,    44,    51,
+       0,    39,    56,    44,    50,     0,    56,    31,     0,    35
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -320,   111,  -320,  -320,   -34,    13,  -320,  -320,  -320,  -320,
-    -320,  -320,  -320,  -320,  -320,  -319,    40,  -320,  -320,  -320,
-    -156,  -314,   -73,  -320,   -76,  -109,     3,    -6,  -320,  -320,
-      73,  -320,  -320,  -320,  -320,  -320,  -320,  -320,  -320,   -23,
-    -320,  -320,  -320,  -320,  -320,  -320,  -320,  -320,  -138,  -320,
-    -257,  -320,     2,   -36,  -320,  -320,  -320,  -320,    41
+    -326,   127,  -326,  -326,   -12,    13,  -326,  -326,  -326,  -326,
+    -326,  -326,  -326,  -326,  -326,  -318,    63,  -326,  -326,  -326,
+    -161,  -325,   -55,  -326,   -76,   -71,     3,    -6,  -326,  -326,
+      93,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,   -11,
+    -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -143,  -326,
+    -277,  -326,    26,   -21,  -326,  -326,  -326,  -326,    57
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    44,    45,    46,    47,   314,   304,   332,   359,   305,
-     333,   365,   303,   331,   352,   306,   265,    49,   328,   339,
-     204,   316,   322,    50,   144,   294,    51,    52,   277,    53,
-      54,    55,    80,   111,   103,   158,   195,   181,    56,    86,
-      57,    77,    58,    87,   234,    78,    59,   112,   223,   342,
-     297,    60,   153,    76,    61,   120,   121,   122,   123
+      -1,    44,    45,    46,    47,   318,   308,   336,   363,   309,
+     337,   369,   307,   335,   356,   310,   267,    49,   332,   343,
+     206,   320,   326,    50,   145,   298,    51,    52,   281,    53,
+      54,    55,    80,   111,   103,   159,   196,   182,    56,    86,
+      57,    77,    58,    87,   236,    78,    59,   112,   225,   346,
+     301,    60,   154,    76,    61,   121,   122,   123,   124
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1092,417 +1093,438 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      68,    68,   156,     8,    75,   236,   102,    64,    69,    71,
-     334,    72,    85,    48,   133,    62,   168,    90,   231,    73,
-     240,   300,   100,   101,   133,   104,   105,   106,   107,   108,
-     109,   110,    79,   358,   113,   114,   115,   119,   142,   143,
-     275,   241,    88,   276,   126,   368,   140,   141,   142,   143,
-     372,    98,   370,    32,    33,    34,    35,     1,   224,   149,
-     146,   147,   161,   330,   147,   145,   227,   228,   147,   148,
-       2,    68,   150,     3,     4,   159,   151,     5,   179,   155,
-     169,   173,    63,    11,   133,    12,   284,   134,    99,   175,
-     170,   174,   245,   124,    93,    94,    95,   171,   172,   176,
-     125,   325,   246,    96,   145,   139,   140,   141,   142,   143,
-      97,   326,   278,   320,   157,   276,   276,   271,   149,   272,
-     154,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,    48,    68,
-      91,    92,   301,   225,   226,   149,   229,   149,   230,   318,
-     154,   160,    42,   162,   233,    43,   337,   338,   280,   163,
-     167,   177,   242,   243,   244,   296,   235,   248,   249,   250,
-     251,   252,   253,   180,   194,   344,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   196,   198,   317,   201,
-     199,   319,   200,   356,   202,   270,   222,   324,   232,   238,
-     239,   268,   269,   364,   247,   254,   267,   274,   279,   369,
-     281,   287,   288,   295,   298,   327,   341,   312,   315,   345,
-     347,   343,   350,   346,   351,   354,   357,   321,   348,   361,
-     362,   293,   323,   266,   282,   283,   203,   237,     0,   285,
-     286,   299,     0,   273,     0,     0,     0,     0,     0,   363,
-       0,     0,   340,   366,     0,     0,     0,     0,     0,   371,
-       0,     0,     0,   374,     0,     0,     0,     0,   -32,     0,
-       0,    75,   355,     0,     0,   302,     0,     0,     0,     0,
-       0,     0,     0,   308,   309,   310,   311,     0,     0,     0,
-     307,     0,     0,     0,     0,   127,   128,   129,   130,   131,
-     132,     0,   133,     0,     0,   134,   135,   136,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   335,
-     336,   137,   138,   139,   140,   141,   142,   143,  -164,     1,
-       0,     0,   349,     0,     0,     0,     0,     0,     0,   353,
-       0,     0,     2,     0,     0,     3,     4,     0,   360,     5,
-    -164,     7,     8,     9,    65,    11,     0,    12,  -164,  -164,
-       0,    15,  -164,  -164,  -164,  -164,  -164,  -164,  -164,  -164,
-       0,  -164,     0,  -164,  -164,  -164,     0,    66,  -164,    25,
-    -164,  -164,  -164,  -164,     0,     0,  -164,  -164,  -164,  -164,
-    -164,  -164,  -164,  -164,  -164,    31,  -164,  -164,  -164,  -164,
-    -164,  -164,    32,    33,    34,    35,    36,  -164,  -164,  -164,
-    -164,     0,  -164,  -164,  -164,  -164,  -164,  -164,    40,    41,
-    -164,  -164,     1,  -164,    70,  -164,  -164,    43,  -164,     0,
-       0,     0,     0,     0,     0,     2,     0,   164,     3,     4,
-       0,     0,     5,     0,     7,     8,     9,    65,   116,     0,
-     117,     0,     0,     0,    15,   127,   128,   129,   130,   131,
-     132,     0,   133,   165,   166,   134,   135,   136,     0,     0,
-      66,     0,    25,     0,     0,     0,     0,     0,     0,     0,
-       0,   137,   138,   139,   140,   141,   142,   143,    31,     0,
-       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   -63,
-       1,    40,    41,     0,     0,     0,     0,    42,     0,     0,
-      43,  -170,   118,     2,     0,     0,     3,     4,     0,     0,
-       5,   -63,     7,     8,     9,    65,    11,     0,    12,   -63,
-     -63,     0,    15,     0,   -63,   -63,   -63,   -63,   -63,   -63,
-     -63,     0,     0,     0,     0,   -63,     0,     0,    66,   -63,
-      25,     0,     0,   -63,     0,     0,     0,   -63,   -63,   -63,
-     -63,   -63,   -63,   -63,   -63,   -63,    31,   -63,     0,     0,
-     -63,   -63,   -63,    32,    33,    34,    35,    36,     0,     0,
-     -63,   -63,     0,   -63,   -63,   -63,   -63,   -63,   -63,    40,
-      41,   -63,   -63,     0,   -63,    74,  -164,     1,    43,     0,
+      68,    68,   157,   338,    75,   304,     8,    64,   238,   170,
+      62,    72,    85,    48,   233,   134,   169,    90,   102,   171,
+     242,   279,   100,   101,   280,   104,   105,   106,   107,   108,
+     109,   110,    69,    71,   113,   114,   115,   120,   362,   143,
+     144,   243,    91,    92,   127,   374,   146,   334,   226,   150,
+     372,   199,   174,     1,    73,   376,    32,    33,    34,    35,
+     147,   148,   175,    98,   148,    99,     2,   125,   148,     3,
+       4,    68,   176,     5,   162,   160,   152,   134,    63,    11,
+      79,    12,   177,   288,   134,   247,    88,   135,   274,   275,
+     180,   276,   126,   149,   329,   248,   151,   172,   173,   141,
+     142,   143,   144,   156,   330,   140,   141,   142,   143,   144,
+     282,   158,   324,   280,   146,   280,   146,   229,   230,   228,
+     150,   150,   207,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,    48,
+      68,   305,   231,   150,   227,    93,    94,    95,    42,   232,
+     161,    43,   322,   155,    96,   235,   341,   342,   155,   163,
+     284,    97,   164,   244,   245,   246,   168,   237,   250,   251,
+     252,   253,   254,   255,   348,   178,   181,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   195,   197,   200,
+     201,   202,   360,   270,   271,   272,   203,   273,   204,   224,
+     234,   240,   368,   241,   249,   256,   269,   300,   373,   283,
+     278,   285,   291,   292,   299,   199,   302,   128,   129,   130,
+     131,   316,   319,   331,   134,   345,   350,   135,   136,   137,
+     321,   325,   349,   323,   351,   354,   286,   287,   358,   328,
+     355,   289,   290,   138,   139,   140,   141,   142,   143,   144,
+     361,   365,   366,   205,   327,   297,   344,   268,   239,     0,
+     303,   277,     0,   347,     0,     0,     0,     0,     0,     0,
+     352,     0,     0,     0,     0,    75,   359,     0,     0,   306,
+       0,     0,     0,     0,     0,     0,     0,   312,   313,   314,
+     315,   367,     0,     0,   311,   370,     0,     0,     0,     0,
+       0,   375,     0,     0,     0,   378,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       2,     0,     0,     3,     4,     0,     0,     5,  -164,     7,
-       8,     9,    65,    11,     0,    12,  -164,  -164,     0,    15,
-       0,  -164,  -164,  -164,  -164,  -164,  -164,  -164,     0,     0,
-       0,     0,  -164,     0,     0,    66,  -164,    25,     0,     0,
-    -164,     0,     0,     0,  -164,  -164,  -164,     0,     0,     0,
-       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,  -164,  -164,     0,
-    -164,  -164,  -164,  -164,     1,     0,    40,    41,     0,     0,
-       0,  -164,    67,     0,  -164,    43,     0,     2,     0,     0,
-       3,     4,     0,     0,     5,  -164,     7,     8,     9,    65,
-      11,     0,    12,  -164,  -164,     0,    15,     0,  -164,  -164,
-    -164,  -164,  -164,  -164,  -164,     0,     0,     0,     0,  -164,
-       0,     0,    66,  -164,    25,     0,     0,  -164,     0,     0,
-       0,  -164,  -164,  -164,     0,     0,     0,     0,     0,     0,
-      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
-      35,    36,     0,     0,  -164,  -164,     0,  -164,  -164,  -164,
-      -4,     1,     0,    40,    41,     0,     0,     0,  -164,    42,
-       0,  -164,    43,     0,     2,     0,     0,     3,     4,     0,
-       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
-       0,    13,    14,    15,     0,     0,     0,    16,    17,    18,
-      19,    20,     0,     0,    21,     0,    22,     0,     0,    23,
-      24,    25,     0,     0,    26,     0,     0,    27,    28,    29,
-      30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
+       0,     0,     0,   339,   340,     0,     0,     0,     0,     0,
+       0,     0,  -164,     1,     0,     0,   353,     0,     0,     0,
+       0,     0,     0,   357,     0,     0,     2,     0,     0,     3,
+       4,     0,   364,     5,  -164,     7,     8,     9,    65,    11,
+       0,    12,  -164,  -164,     0,    15,  -164,  -164,  -164,  -164,
+    -164,  -164,  -164,  -164,     0,  -164,     0,  -164,  -164,  -164,
+       0,    66,  -164,    25,  -164,  -164,  -164,  -164,     0,     0,
+    -164,  -164,  -164,  -164,  -164,  -164,  -164,  -164,  -164,    31,
+    -164,  -164,  -164,  -164,  -164,  -164,    32,    33,    34,    35,
+      36,  -164,  -164,  -164,  -164,     0,  -164,  -164,  -164,  -164,
+    -164,  -164,    40,    41,  -164,  -164,     1,  -164,    70,  -164,
+    -164,    43,  -164,     0,     0,     0,     0,     0,     0,     2,
+       0,   165,     3,     4,     0,     0,     5,     0,     7,     8,
+       9,   116,   117,     0,   118,     0,     0,     0,    15,   128,
+     129,   130,   131,   132,   133,     0,   134,   166,   167,   135,
+     136,   137,     0,     0,    66,     0,    25,     0,     0,     0,
+       0,     0,     0,     0,     0,   138,   139,   140,   141,   142,
+     143,   144,    31,     0,     0,     0,     0,     0,     0,    32,
+      33,    34,    35,    36,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   -63,     1,    40,    41,     0,     0,     0,
+       0,    42,     0,     0,    43,  -170,   119,     2,     0,     0,
+       3,     4,     0,     0,     5,   -63,     7,     8,     9,    65,
+      11,     0,    12,   -63,   -63,     0,    15,     0,   -63,   -63,
+     -63,   -63,   -63,   -63,   -63,     0,     0,     0,     0,   -63,
+       0,     0,    66,   -63,    25,     0,     0,   -63,     0,     0,
+       0,   -63,   -63,   -63,   -63,   -63,   -63,   -63,   -63,   -63,
+      31,   -63,     0,     0,   -63,   -63,   -63,    32,    33,    34,
+      35,    36,     0,     0,   -63,   -63,     0,   -63,   -63,   -63,
+     -63,   -63,   -63,    40,    41,   -63,   -63,     0,   -63,    74,
+    -164,     1,    43,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     2,     0,     0,     3,     4,     0,
+       0,     5,  -164,     7,     8,     9,    65,    11,     0,    12,
+    -164,  -164,     0,    15,     0,  -164,  -164,  -164,  -164,  -164,
+    -164,  -164,     0,     0,     0,     0,  -164,     0,     0,    66,
+    -164,    25,     0,     0,  -164,     0,     0,     0,  -164,  -164,
+    -164,     0,     0,     0,     0,     0,     0,    31,     0,     0,
        0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,    37,    38,    39,  -153,     1,     0,     0,     0,     0,
-      40,    41,     0,     0,     0,    -4,    42,     0,     2,    43,
+       0,  -164,  -164,     0,  -164,  -164,  -164,  -164,     1,     0,
+      40,    41,     0,     0,     0,  -164,    67,     0,  -164,    43,
+       0,     2,     0,     0,     3,     4,     0,     0,     5,  -164,
+       7,     8,     9,    65,    11,     0,    12,  -164,  -164,     0,
+      15,     0,  -164,  -164,  -164,  -164,  -164,  -164,  -164,     0,
+       0,     0,     0,  -164,     0,     0,    66,  -164,    25,     0,
+       0,  -164,     0,     0,     0,  -164,  -164,  -164,     0,     0,
+       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,    32,    33,    34,    35,    36,     0,     0,  -164,  -164,
+       0,  -164,  -164,  -164,    -4,     1,     0,    40,    41,     0,
+       0,     0,  -164,    42,     0,  -164,    43,     0,     2,     0,
        0,     3,     4,     0,     0,     5,     6,     7,     8,     9,
-      10,    11,     0,    12,   329,    13,     0,    15,     0,     0,
+      10,    11,     0,    12,     0,    13,    14,    15,     0,     0,
+       0,    16,    17,    18,    19,    20,     0,     0,    21,     0,
+      22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
+       0,    27,    28,    29,    30,     0,     0,     0,     0,     0,
+       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
+      34,    35,    36,     0,     0,    37,    38,    39,  -153,     1,
+       0,     0,     0,     0,    40,    41,     0,     0,     0,    -4,
+      42,     0,     2,    43,     0,     3,     4,     0,     0,     5,
+       6,     7,     8,     9,    10,    11,     0,    12,   333,    13,
+       0,    15,     0,     0,     0,    16,    17,    18,    19,    20,
+       0,     0,     0,     0,    22,     0,     0,    23,    24,    25,
+       0,     0,    26,     0,     0,     0,    28,    29,    30,     0,
+       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
+       0,     0,    32,    33,    34,    35,    36,     0,     0,    37,
+      38,  -151,     1,     0,     0,     0,     0,     0,    40,    41,
+       0,     0,     0,   317,    42,     2,     0,    43,     3,     4,
+       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
+      12,     0,    13,     0,    15,     0,     0,     0,    16,    17,
+      18,    19,    20,     0,     0,     0,     0,    22,     0,     0,
+      23,    24,    25,     0,     0,    26,     0,     0,     0,    28,
+      29,    30,     0,     0,     0,     0,     0,     0,    31,     0,
+       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
+       0,     0,    37,    38,  -148,     1,     0,     0,     0,     0,
+       0,    40,    41,     0,     0,     0,   317,    42,     2,     0,
+      43,     3,     4,     0,     0,     5,     6,     7,     8,     9,
+      10,    11,     0,    12,     0,    13,     0,    15,     0,     0,
        0,    16,    17,    18,    19,    20,     0,     0,     0,     0,
       22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
        0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
        0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
-      34,    35,    36,     0,     0,    37,    38,  -151,     1,     0,
-       0,     0,     0,     0,    40,    41,     0,     0,     0,   313,
+      34,    35,    36,     0,     0,    37,    38,     0,     1,     0,
+       0,     0,     0,     0,    40,    41,     0,     0,     0,   317,
       42,     2,     0,    43,     3,     4,     0,     0,     5,     6,
        7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
-      15,     0,     0,     0,    16,    17,    18,    19,    20,     0,
+      15,     0,   -52,   -52,    16,    17,    18,    19,    20,     0,
        0,     0,     0,    22,     0,     0,    23,    24,    25,     0,
        0,    26,     0,     0,     0,    28,    29,    30,     0,     0,
        0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
        0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
-    -148,     1,     0,     0,     0,     0,     0,    40,    41,     0,
-       0,     0,   313,    42,     2,     0,    43,     3,     4,     0,
-       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
-       0,    13,     0,    15,     0,     0,     0,    16,    17,    18,
-      19,    20,     0,     0,     0,     0,    22,     0,     0,    23,
-      24,    25,     0,     0,    26,     0,     0,     0,    28,    29,
-      30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
-       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,    37,    38,     0,     1,     0,     0,     0,     0,     0,
-      40,    41,     0,     0,     0,   313,    42,     2,     0,    43,
-       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,    12,     0,    13,     0,    15,     0,   -52,   -52,
-      16,    17,    18,    19,    20,     0,     0,     0,     0,    22,
-       0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
-       0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
-      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
-      35,    36,     0,     0,    37,    38,     0,   -52,     1,     0,
-       0,     0,     0,    40,    41,     0,     0,     0,   313,    42,
-       0,     2,    43,     0,     3,     4,     0,     0,     5,     6,
+       0,   -52,     1,     0,     0,     0,     0,    40,    41,     0,
+       0,     0,   317,    42,     0,     2,    43,     0,     3,     4,
+       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
+      12,     0,    13,     0,    15,     0,     0,     0,    16,    17,
+      18,    19,    20,     0,     0,     0,     0,    22,     0,     0,
+      23,    24,    25,     0,     0,    26,     0,     0,     0,    28,
+      29,    30,     0,     0,     0,     0,     0,     0,    31,     0,
+       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
+       0,     0,    37,    38,     0,     1,     0,   -55,     0,     0,
+       0,    40,    41,     0,     0,     0,   317,    42,     2,     0,
+      43,     3,     4,     0,     0,     5,     6,     7,     8,     9,
+      10,    11,     0,    12,     0,    13,     0,    15,     0,     0,
+       0,    16,    17,    18,    19,    20,     0,     0,     0,     0,
+      22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
+       0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
+       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
+      34,    35,    36,     0,     0,    37,    38,     0,     1,   -52,
+       0,     0,     0,     0,    40,    41,     0,     0,     0,   317,
+      42,     2,     0,    43,     3,     4,     0,     0,     5,     6,
        7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
       15,     0,     0,     0,    16,    17,    18,    19,    20,     0,
        0,     0,     0,    22,     0,     0,    23,    24,    25,     0,
        0,    26,     0,     0,     0,    28,    29,    30,     0,     0,
        0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
        0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
-       0,     1,     0,   -55,     0,     0,     0,    40,    41,     0,
-       0,     0,   313,    42,     2,     0,    43,     3,     4,     0,
-       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
-       0,    13,     0,    15,     0,     0,     0,    16,    17,    18,
-      19,    20,     0,     0,     0,     0,    22,     0,     0,    23,
-      24,    25,     0,     0,    26,     0,     0,     0,    28,    29,
-      30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
-       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,    37,    38,     0,     1,   -52,     0,     0,     0,     0,
-      40,    41,     0,     0,     0,   313,    42,     2,     0,    43,
-       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,    12,     0,    13,     0,    15,     0,     0,     0,
-      16,    17,    18,    19,    20,     0,     0,     0,     0,    22,
-       0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
-       0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
-      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
-      35,    36,     0,     0,    37,    38,     0,   -55,     1,     0,
-       0,     0,     0,    40,    41,     0,     0,     0,   313,    42,
-       0,     2,    43,     0,     3,     4,     0,     0,     5,     6,
+       0,   -55,     1,     0,     0,     0,     0,    40,    41,     0,
+       0,     0,   317,    42,     0,     2,    43,     0,     3,     4,
+       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
+      12,     0,    13,     0,    15,     0,     0,     0,    16,    17,
+      18,    19,    20,     0,     0,     0,     0,    22,     0,     0,
+      23,    24,    25,     0,     0,    26,     0,     0,     0,    28,
+      29,    30,     0,     0,     0,     0,     0,     0,    31,     0,
+       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
+       0,     0,    37,    38,     0,     1,   371,     0,     0,     0,
+       0,    40,    41,     0,     0,     0,   317,    42,     2,     0,
+      43,     3,     4,     0,     0,     5,     6,     7,     8,     9,
+      10,    11,     0,    12,     0,    13,     0,    15,     0,     0,
+       0,    16,    17,    18,    19,    20,     0,     0,     0,     0,
+      22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
+       0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
+       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
+      34,    35,    36,     0,     0,    37,    38,     0,     1,   377,
+       0,     0,     0,     0,    40,    41,     0,     0,     0,   317,
+      42,     2,     0,    43,     3,     4,     0,     0,     5,     6,
        7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
       15,     0,     0,     0,    16,    17,    18,    19,    20,     0,
        0,     0,     0,    22,     0,     0,    23,    24,    25,     0,
        0,    26,     0,     0,     0,    28,    29,    30,     0,     0,
        0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
        0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
-       0,     1,   367,     0,     0,     0,     0,    40,    41,     0,
-       0,     0,   313,    42,     2,     0,    43,     3,     4,     0,
+       0,     1,   379,     0,     0,     0,     0,    40,    41,     0,
+       0,     0,   317,    42,     2,     0,    43,     3,     4,     0,
        0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
        0,    13,     0,    15,     0,     0,     0,    16,    17,    18,
-      19,    20,     0,     0,     0,     0,    22,     0,     0,    23,
-      24,    25,     0,     0,    26,     0,     0,     0,    28,    29,
+      19,     0,     0,     0,     0,     0,     0,     0,     0,    23,
+       0,    25,     0,     0,     0,     0,     0,     0,    28,    29,
       30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
        0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,    37,    38,     0,     1,   373,     0,     0,     0,     0,
-      40,    41,     0,     0,     0,   313,    42,     2,     0,    43,
-       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,    12,     0,    13,     0,    15,     0,     0,     0,
-      16,    17,    18,    19,    20,     0,     0,     0,     0,    22,
-       0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
-       0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
-      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
-      35,    36,     0,     0,    37,    38,     0,     1,   375,     0,
-       0,     0,     0,    40,    41,     0,     0,     0,   313,    42,
-       2,     0,    43,     3,     4,     0,     0,     5,     6,     7,
-       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
-       0,     0,     0,    16,    17,    18,    19,     0,     0,     0,
-       0,     0,     0,     0,     0,    23,     0,    25,     0,     0,
-       0,     0,     0,     0,    28,    29,    30,     0,     0,     0,
+       0,     1,    38,     0,     0,     0,     0,     0,     0,     0,
+      40,    41,     0,     0,     2,     0,    42,     3,     4,    43,
+       0,     5,     0,     7,     8,     9,    65,    11,     0,    12,
+       0,     0,     0,    15,     0,     0,     0,     1,     0,     0,
+       0,     0,     0,     0,     0,    81,    82,    83,    84,    66,
+       2,    25,     0,     3,     4,     0,     0,     5,     0,     7,
+       8,     9,    65,    11,     0,    12,     0,    31,     0,    15,
+       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
+       0,    81,     0,    83,     0,    66,     0,    25,     0,     0,
+      40,    41,     0,     0,     0,     0,    42,     0,     0,    43,
        0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,     1,    38,     0,
+      32,    33,    34,    35,    36,     0,     0,     1,     0,     0,
        0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
        2,     0,    42,     3,     4,    43,     0,     5,     0,     7,
        8,     9,    65,    11,     0,    12,     0,     0,     0,    15,
        0,     0,     0,     1,     0,     0,     0,     0,     0,     0,
-       0,    81,    82,    83,    84,    66,     2,    25,     0,     3,
-       4,     0,     0,     5,     0,     7,     8,     9,    65,    11,
+       0,     0,     0,     0,     0,    66,     2,    25,     0,     3,
+       4,     0,     0,     5,     0,     7,     8,     9,   153,    11,
        0,    12,     0,    31,     0,    15,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,    81,     0,    83,
+      32,    33,    34,    35,    36,     0,     0,     0,     0,     0,
        0,    66,     0,    25,     0,     0,    40,    41,     0,     0,
-       0,     0,    42,     0,     0,    43,     0,     0,     0,    31,
+       0,     0,    42,  -164,  -164,    43,     0,     0,     0,    31,
        0,     0,     0,     0,     0,     0,    32,    33,    34,    35,
-      36,     0,     0,     1,     0,     0,     0,     0,     0,     0,
-       0,     0,    40,    41,     0,     0,     2,     0,    42,     3,
-       4,    43,     0,     5,     0,     7,     8,     9,    65,    11,
-       0,    12,     0,     0,     0,    15,     0,     0,     0,     1,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    66,     2,    25,     0,     3,     4,     0,     0,     5,
-       0,     7,     8,     9,   152,    11,     0,    12,     0,    31,
-       0,    15,     0,     0,     0,     0,    32,    33,    34,    35,
-      36,     0,     0,     0,     0,     0,     0,    66,     0,    25,
+      36,     0,     0,     0,     0,     0,     0,     0,     0,     1,
        0,     0,    40,    41,     0,     0,     0,     0,    42,  -164,
-    -164,    43,     0,     0,     0,    31,     0,     0,     0,     0,
+    -164,    43,     2,     0,     0,     3,     4,     0,    89,     5,
+       0,     7,     8,     9,    65,    11,     0,    12,     0,     0,
+       0,    15,     0,     0,     0,     1,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    66,     2,    25,
+       0,     3,     4,     0,     0,     5,     0,     7,     8,     9,
+      65,    11,     0,    12,     0,    31,     0,    15,     0,     0,
        0,     0,    32,    33,    34,    35,    36,     0,     0,     0,
-       0,     0,     0,     0,     0,     1,     0,     0,    40,    41,
-       0,     0,     0,     0,    42,  -164,  -164,    43,     2,     0,
-       0,     3,     4,     0,    89,     5,     0,     7,     8,     9,
-      65,    11,     0,    12,     0,     0,     0,    15,     0,     0,
-       0,     1,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    66,     2,    25,     0,     3,     4,     0,
-       0,     5,     0,     7,     8,     9,    65,    11,     0,    12,
-       0,    31,     0,    15,     0,     0,     0,     0,    32,    33,
-      34,    35,    36,     0,     0,     0,     0,     0,     0,    66,
-       0,    25,     0,     0,    40,    41,     0,     0,     0,     0,
-      42,     0,     0,    43,     0,     0,    81,    31,    83,     0,
-       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,     0,   127,   128,   129,   130,   131,   132,     0,   133,
-      40,    41,   134,   135,   136,     0,    42,     0,     0,    43,
-       0,   182,     0,     0,     0,     0,     0,   183,   137,   138,
-     139,   140,   141,   142,   143,   127,   128,   129,   130,   131,
-     132,     0,   133,     0,     0,   134,   135,   136,     0,     0,
-       0,     0,     0,     0,   184,     0,     0,     0,     0,     0,
-     185,   137,   138,   139,   140,   141,   142,   143,   127,   128,
-     129,   130,   131,   132,     0,   133,     0,     0,   134,   135,
-     136,     0,     0,     0,     0,     0,     0,   186,     0,     0,
-       0,     0,     0,   187,   137,   138,   139,   140,   141,   142,
-     143,   127,   128,   129,   130,   131,   132,     0,   133,     0,
-       0,   134,   135,   136,     0,     0,     0,     0,     0,     0,
-     188,     0,     0,     0,     0,     0,   189,   137,   138,   139,
-     140,   141,   142,   143,   127,   128,   129,   130,   131,   132,
-       0,   133,     0,     0,   134,   135,   136,     0,     0,     0,
-       0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
-     137,   138,   139,   140,   141,   142,   143,   127,   128,   129,
-     130,   131,   132,     0,   133,     0,     0,   134,   135,   136,
-       0,     0,     0,     0,     0,     0,   290,     0,     0,     0,
-       0,     0,     0,   137,   138,   139,   140,   141,   142,   143,
-     127,   128,   129,   130,   131,   132,     0,   133,     0,     0,
-     134,   135,   136,     0,     0,     0,     0,     0,     0,   291,
-       0,     0,     0,     0,     0,     0,   137,   138,   139,   140,
-     141,   142,   143,   127,   128,   129,   130,   131,   132,     0,
-     133,     0,     0,   134,   135,   136,     0,     0,     0,     0,
-       0,     0,   292,     0,     0,     0,     0,     0,     0,   137,
-     138,   139,   140,   141,   142,   143,   127,   128,   129,   130,
-     131,   132,     0,   133,     0,     0,   134,   135,   136,     0,
+       0,     0,     0,    66,     0,    25,     0,     0,    40,    41,
+       0,     0,     0,     0,    42,     0,     0,    43,     0,     0,
+       0,    31,     0,     0,     0,     0,     0,   -32,    32,    33,
+      34,    35,    36,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
+      42,     0,     0,    43,   128,   129,   130,   131,   132,   133,
+       0,   134,     0,     0,   135,   136,   137,     0,     0,     0,
+       0,    81,     0,    83,     0,     0,     0,     0,     0,     0,
+     138,   139,   140,   141,   142,   143,   144,   128,   129,   130,
+     131,   132,   133,     0,   134,     0,     0,   135,   136,   137,
+       0,     0,     0,     0,     0,     0,   183,     0,     0,     0,
+       0,     0,   184,   138,   139,   140,   141,   142,   143,   144,
+     128,   129,   130,   131,   132,   133,     0,   134,     0,     0,
+     135,   136,   137,     0,     0,     0,     0,     0,     0,   185,
+       0,     0,     0,     0,     0,   186,   138,   139,   140,   141,
+     142,   143,   144,   128,   129,   130,   131,   132,   133,     0,
+     134,     0,     0,   135,   136,   137,     0,     0,     0,     0,
+       0,     0,   187,     0,     0,     0,     0,     0,   188,   138,
+     139,   140,   141,   142,   143,   144,   128,   129,   130,   131,
+     132,   133,     0,   134,     0,     0,   135,   136,   137,     0,
+       0,     0,     0,     0,     0,   189,     0,     0,     0,     0,
+       0,   190,   138,   139,   140,   141,   142,   143,   144,   128,
+     129,   130,   131,   132,   133,     0,   134,     0,     0,   135,
+     136,   137,     0,     0,     0,     0,     0,     0,   293,     0,
+       0,     0,     0,     0,     0,   138,   139,   140,   141,   142,
+     143,   144,   128,   129,   130,   131,   132,   133,     0,   134,
+       0,     0,   135,   136,   137,     0,     0,     0,     0,     0,
+       0,   294,     0,     0,     0,     0,     0,     0,   138,   139,
+     140,   141,   142,   143,   144,   128,   129,   130,   131,   132,
+     133,     0,   134,     0,     0,   135,   136,   137,     0,     0,
+       0,     0,     0,     0,   295,     0,     0,     0,     0,     0,
+       0,   138,   139,   140,   141,   142,   143,   144,   128,   129,
+     130,   131,   132,   133,     0,   134,     0,     0,   135,   136,
+     137,     0,     0,     0,     0,     0,     0,   296,     0,     0,
+       0,     0,     0,     0,   138,   139,   140,   141,   142,   143,
+     144,   128,   129,   130,   131,   132,   133,     0,   134,     0,
+       0,   135,   136,   137,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   193,   138,   139,   140,
+     141,   142,   143,   144,   128,   129,   130,   131,   132,   133,
+       0,   134,     0,     0,   135,   136,   137,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     138,   139,   140,   141,   142,   143,   144,   179,   194,     0,
+       0,     0,     0,   128,   129,   130,   131,   132,   133,     0,
+     134,     0,     0,   135,   136,   137,   128,   129,   130,   131,
+     132,   133,     0,   134,     0,     0,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,     0,     0,     0,     0,
+       0,     0,   138,   139,   140,   141,   142,   143,   144,     0,
+       0,     0,   198,   128,   129,   130,   131,   132,   133,     0,
+     134,     0,     0,   135,   136,   137,     0,     0,     0,     0,
+       0,   191,   192,     0,     0,     0,     0,     0,     0,   138,
+     139,   140,   141,   142,   143,   144,   128,   129,   130,   131,
+     132,   133,     0,   134,     0,     0,   135,   136,   137,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   192,   137,   138,   139,   140,   141,   142,   143,   127,
-     128,   129,   130,   131,   132,     0,   133,     0,     0,   134,
-     135,   136,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   137,   138,   139,   140,   141,
-     142,   143,   178,   193,     0,     0,     0,     0,   127,   128,
-     129,   130,   131,   132,     0,   133,     0,     0,   134,   135,
-     136,   127,   128,   129,   130,   131,   132,     0,   133,     0,
-       0,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-     143,     0,     0,     0,     0,     0,     0,   137,   138,   139,
-     140,   141,   142,   143,     0,     0,     0,   197,   127,   128,
-     129,   130,   131,   132,     0,   133,     0,     0,   134,   135,
-     136,     0,     0,     0,     0,     0,   190,   191,     0,     0,
-       0,     0,     0,     0,   137,   138,   139,   140,   141,   142,
-     143,   127,   128,   129,   130,   131,   132,     0,   133,     0,
-       0,   134,   135,   136,   127,   128,   129,   130,     0,     0,
-       0,   133,     0,     0,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,     0,     0,     0,     0,     0,     0,
-     137,   138,   139,   140,   141,   142,   143
+       0,     0,   138,   139,   140,   141,   142,   143,   144
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,    78,    24,    10,    26,    29,     4,     6,     7,
-     324,     8,    18,     0,    68,    95,    92,    23,   156,    47,
-      42,   278,    28,    29,    68,    31,    32,    33,    34,    35,
-      36,    37,    50,   352,    40,    41,    42,    43,    92,    93,
-      95,    63,    50,    98,    50,   364,    90,    91,    92,    93,
-     369,    26,   366,    74,    75,    76,    77,     1,    97,    98,
-      66,    67,    85,   320,    70,    96,    97,    98,    74,    67,
-      14,    77,    70,    17,    18,    81,    73,    21,   101,    77,
-      53,    53,    26,    27,    68,    29,   242,    71,    26,    53,
-      63,    63,    53,     0,    17,    18,    19,    94,    95,    63,
-      95,    53,    63,    26,    96,    89,    90,    91,    92,    93,
-      33,    63,    95,    95,    26,    98,    98,    27,    98,    29,
-      98,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   125,   145,
-      55,    56,   280,   149,    97,    98,    97,    98,   154,    97,
-      98,    45,    96,    26,   160,    99,    35,    36,   234,    26,
-      26,    52,   168,   169,   170,   274,   163,   173,   174,   175,
-     176,   177,   178,    26,    26,   331,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,    26,   101,   297,    98,
-     101,   300,   100,   349,    98,   201,    26,   306,    98,    26,
-      26,   198,   199,   359,    47,    98,    98,    52,    26,   365,
-      43,    26,    26,    26,    26,    86,    26,   293,   294,    53,
-      85,   330,    84,    34,    98,    53,    26,   303,   337,    84,
-      52,   265,   305,   193,   240,   241,   125,   164,    -1,   245,
-     246,   277,    -1,   202,    -1,    -1,    -1,    -1,    -1,   358,
-      -1,    -1,   328,   362,    -1,    -1,    -1,    -1,    -1,   368,
-      -1,    -1,    -1,   372,    -1,    -1,    -1,    -1,    34,    -1,
-      -1,   277,   348,    -1,    -1,   281,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   289,   290,   291,   292,    -1,    -1,    -1,
-     287,    -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,
-      66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   325,
-     326,    87,    88,    89,    90,    91,    92,    93,     0,     1,
-      -1,    -1,   338,    -1,    -1,    -1,    -1,    -1,    -1,   345,
-      -1,    -1,    14,    -1,    -1,    17,    18,    -1,   354,    21,
-      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
-      -1,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      -1,    43,    -1,    45,    46,    47,    -1,    49,    50,    51,
-      52,    53,    54,    55,    -1,    -1,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    -1,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,     1,    95,    96,    97,    98,    99,   100,    -1,
-      -1,    -1,    -1,    -1,    -1,    14,    -1,    43,    17,    18,
-      -1,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    -1,    -1,    33,    61,    62,    63,    64,    65,
-      66,    -1,    68,    69,    70,    71,    72,    73,    -1,    -1,
-      49,    -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    87,    88,    89,    90,    91,    92,    93,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,
-       1,    90,    91,    -1,    -1,    -1,    -1,    96,    -1,    -1,
-      99,   100,   101,    14,    -1,    -1,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
-      31,    -1,    33,    -1,    35,    36,    37,    38,    39,    40,
-      41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
-      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    -1,    -1,
-      71,    72,    73,    74,    75,    76,    77,    78,    -1,    -1,
-      81,    82,    -1,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    -1,    95,    96,     0,     1,    99,    -1,
+       6,     7,    78,   328,    10,   282,    24,     4,    26,    53,
+      95,     8,    18,     0,   157,    68,    92,    23,    29,    63,
+      42,    95,    28,    29,    98,    31,    32,    33,    34,    35,
+      36,    37,     6,     7,    40,    41,    42,    43,   356,    92,
+      93,    63,    55,    56,    50,   370,    96,   324,    97,    98,
+     368,   101,    53,     1,    47,   373,    74,    75,    76,    77,
+      66,    67,    63,    26,    70,    26,    14,     0,    74,    17,
+      18,    77,    53,    21,    85,    81,    73,    68,    26,    27,
+      50,    29,    63,   244,    68,    53,    50,    71,    26,    27,
+     101,    29,    95,    67,    53,    63,    70,    94,    95,    90,
+      91,    92,    93,    77,    63,    89,    90,    91,    92,    93,
+      95,    26,    95,    98,    96,    98,    96,    97,    98,    97,
+      98,    98,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   126,
+     146,   284,    97,    98,   150,    17,    18,    19,    96,   155,
+      45,    99,    97,    98,    26,   161,    35,    36,    98,    26,
+     236,    33,    26,   169,   170,   171,    26,   164,   174,   175,
+     176,   177,   178,   179,   335,    52,    26,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    26,    26,   101,
+     101,   100,   353,   199,   200,   201,    98,   203,    98,    26,
+      98,    26,   363,    26,    47,    98,    98,   278,   369,    26,
+      52,    43,    26,    26,    26,   101,    26,    61,    62,    63,
+      64,   297,   298,    86,    68,    26,    34,    71,    72,    73,
+     301,   307,    53,   304,    85,    84,   242,   243,    53,   310,
+      98,   247,   248,    87,    88,    89,    90,    91,    92,    93,
+      26,    84,    52,   126,   309,   267,   332,   194,   165,    -1,
+     281,   204,    -1,   334,    -1,    -1,    -1,    -1,    -1,    -1,
+     341,    -1,    -1,    -1,    -1,   281,   352,    -1,    -1,   285,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   293,   294,   295,
+     296,   362,    -1,    -1,   291,   366,    -1,    -1,    -1,    -1,
+      -1,   372,    -1,    -1,    -1,   376,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    30,    31,    -1,    33,
-      -1,    35,    36,    37,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
-      54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
-      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    -1,
-      84,    85,    86,     0,     1,    -1,    90,    91,    -1,    -1,
-      -1,    95,    96,    -1,    98,    99,    -1,    14,    -1,    -1,
+      -1,    -1,    -1,   329,   330,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     0,     1,    -1,    -1,   342,    -1,    -1,    -1,
+      -1,    -1,    -1,   349,    -1,    -1,    14,    -1,    -1,    17,
+      18,    -1,   358,    21,    22,    23,    24,    25,    26,    27,
+      -1,    29,    30,    31,    -1,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    -1,    43,    -1,    45,    46,    47,
+      -1,    49,    50,    51,    52,    53,    54,    55,    -1,    -1,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    -1,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,     1,    95,    96,    97,
+      98,    99,   100,    -1,    -1,    -1,    -1,    -1,    -1,    14,
+      -1,    43,    17,    18,    -1,    -1,    21,    -1,    23,    24,
+      25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,    61,
+      62,    63,    64,    65,    66,    -1,    68,    69,    70,    71,
+      72,    73,    -1,    -1,    49,    -1,    51,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,
+      92,    93,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
+      75,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     0,     1,    90,    91,    -1,    -1,    -1,
+      -1,    96,    -1,    -1,    99,   100,   101,    14,    -1,    -1,
       17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
       27,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
       37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
       -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
-      -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
+      -1,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    -1,    -1,    71,    72,    73,    74,    75,    76,
       77,    78,    -1,    -1,    81,    82,    -1,    84,    85,    86,
-       0,     1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
-      -1,    98,    99,    -1,    14,    -1,    -1,    17,    18,    -1,
+      87,    88,    89,    90,    91,    92,    93,    -1,    95,    96,
+       0,     1,    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    31,    32,    33,    -1,    -1,    -1,    37,    38,    39,
-      40,    41,    -1,    -1,    44,    -1,    46,    -1,    -1,    49,
-      50,    51,    -1,    -1,    54,    -1,    -1,    57,    58,    59,
+      30,    31,    -1,    33,    -1,    35,    36,    37,    38,    39,
+      40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
+      50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
       60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
       -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
-      -1,    81,    82,    83,     0,     1,    -1,    -1,    -1,    -1,
-      90,    91,    -1,    -1,    -1,    95,    96,    -1,    14,    99,
+      -1,    81,    82,    -1,    84,    85,    86,     0,     1,    -1,
+      90,    91,    -1,    -1,    -1,    95,    96,    -1,    98,    99,
+      -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
+      33,    -1,    35,    36,    37,    38,    39,    40,    41,    -1,
+      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
+      -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
+      -1,    74,    75,    76,    77,    78,    -1,    -1,    81,    82,
+      -1,    84,    85,    86,     0,     1,    -1,    90,    91,    -1,
+      -1,    -1,    95,    96,    -1,    98,    99,    -1,    14,    -1,
       -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    -1,    29,    30,    31,    -1,    33,    -1,    -1,
+      26,    27,    -1,    29,    -1,    31,    32,    33,    -1,    -1,
+      -1,    37,    38,    39,    40,    41,    -1,    -1,    44,    -1,
+      46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
+      -1,    57,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
+      76,    77,    78,    -1,    -1,    81,    82,    83,     0,     1,
+      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,
+      96,    -1,    14,    99,    -1,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
+      -1,    33,    -1,    -1,    -1,    37,    38,    39,    40,    41,
+      -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,
+      -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,
+      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
+      -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,    81,
+      82,     0,     1,    -1,    -1,    -1,    -1,    -1,    90,    91,
+      -1,    -1,    -1,    95,    96,    14,    -1,    99,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,
+      39,    40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,
+      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
+      59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,
+      -1,    -1,    81,    82,     0,     1,    -1,    -1,    -1,    -1,
+      -1,    90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,
+      99,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
+      26,    27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,
       -1,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
       46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
       -1,    -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,
       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
-      76,    77,    78,    -1,    -1,    81,    82,     0,     1,    -1,
+      76,    77,    78,    -1,    -1,    81,    82,    -1,     1,    -1,
       -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,
       96,    14,    -1,    99,    17,    18,    -1,    -1,    21,    22,
       23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
-      33,    -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,
+      33,    -1,    35,    36,    37,    38,    39,    40,    41,    -1,
       -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
       -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
       -1,    74,    75,    76,    77,    78,    -1,    -1,    81,    82,
-       0,     1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,
-      -1,    -1,    95,    96,    14,    -1,    99,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,
-      40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
-      50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
-      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
-      -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
-      -1,    81,    82,    -1,     1,    -1,    -1,    -1,    -1,    -1,
-      90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,    99,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    -1,    31,    -1,    33,    -1,    35,    36,
-      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
-      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
-      -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
-      77,    78,    -1,    -1,    81,    82,    -1,    84,     1,    -1,
-      -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
-      -1,    14,    99,    -1,    17,    18,    -1,    -1,    21,    22,
+      -1,    84,     1,    -1,    -1,    -1,    -1,    90,    91,    -1,
+      -1,    -1,    95,    96,    -1,    14,    99,    -1,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,
+      39,    40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,
+      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
+      59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,
+      -1,    -1,    81,    82,    -1,     1,    -1,    86,    -1,    -1,
+      -1,    90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,
+      99,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
+      26,    27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,
+      -1,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
+      46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
+      -1,    -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
+      76,    77,    78,    -1,    -1,    81,    82,    -1,     1,    85,
+      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,
+      96,    14,    -1,    99,    17,    18,    -1,    -1,    21,    22,
       23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
       33,    -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,
       -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
       -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
       -1,    74,    75,    76,    77,    78,    -1,    -1,    81,    82,
-      -1,     1,    -1,    86,    -1,    -1,    -1,    90,    91,    -1,
-      -1,    -1,    95,    96,    14,    -1,    99,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,
-      40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
-      50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
-      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
-      -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
-      -1,    81,    82,    -1,     1,    85,    -1,    -1,    -1,    -1,
-      90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,    99,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
-      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
-      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
-      -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
-      77,    78,    -1,    -1,    81,    82,    -1,    84,     1,    -1,
-      -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
-      -1,    14,    99,    -1,    17,    18,    -1,    -1,    21,    22,
+      -1,    84,     1,    -1,    -1,    -1,    -1,    90,    91,    -1,
+      -1,    -1,    95,    96,    -1,    14,    99,    -1,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,
+      39,    40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,
+      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
+      59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,
+      -1,    -1,    81,    82,    -1,     1,    85,    -1,    -1,    -1,
+      -1,    90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,
+      99,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
+      26,    27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,
+      -1,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
+      46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
+      -1,    -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
+      76,    77,    78,    -1,    -1,    81,    82,    -1,     1,    85,
+      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,
+      96,    14,    -1,    99,    17,    18,    -1,    -1,    21,    22,
       23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
       33,    -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,
       -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
@@ -1513,109 +1535,96 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    95,    96,    14,    -1,    99,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
       -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,
-      40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
-      50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
+      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
+      -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
       60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
       -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
-      -1,    81,    82,    -1,     1,    85,    -1,    -1,    -1,    -1,
-      90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,    99,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
-      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
-      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
-      -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
-      77,    78,    -1,    -1,    81,    82,    -1,     1,    85,    -1,
-      -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
-      14,    -1,    99,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-      -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    -1,
-      -1,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
+      -1,     1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      90,    91,    -1,    -1,    14,    -1,    96,    17,    18,    99,
+      -1,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    -1,    -1,    33,    -1,    -1,    -1,     1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,
+      14,    51,    -1,    17,    18,    -1,    -1,    21,    -1,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    67,    -1,    33,
+      -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
+      -1,    45,    -1,    47,    -1,    49,    -1,    51,    -1,    -1,
+      90,    91,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,
       -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      74,    75,    76,    77,    78,    -1,    -1,     1,    82,    -1,
+      74,    75,    76,    77,    78,    -1,    -1,     1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
       14,    -1,    96,    17,    18,    99,    -1,    21,    -1,    23,
       24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,
       -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    45,    46,    47,    48,    49,    14,    51,    -1,    17,
+      -1,    -1,    -1,    -1,    -1,    49,    14,    51,    -1,    17,
       18,    -1,    -1,    21,    -1,    23,    24,    25,    26,    27,
       -1,    29,    -1,    67,    -1,    33,    -1,    -1,    -1,    -1,
-      74,    75,    76,    77,    78,    -1,    -1,    45,    -1,    47,
+      74,    75,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,
       -1,    49,    -1,    51,    -1,    -1,    90,    91,    -1,    -1,
-      -1,    -1,    96,    -1,    -1,    99,    -1,    -1,    -1,    67,
+      -1,    -1,    96,    97,    98,    99,    -1,    -1,    -1,    67,
       -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,
-      78,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    90,    91,    -1,    -1,    14,    -1,    96,    17,
-      18,    99,    -1,    21,    -1,    23,    24,    25,    26,    27,
-      -1,    29,    -1,    -1,    -1,    33,    -1,    -1,    -1,     1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    14,    51,    -1,    17,    18,    -1,    -1,    21,
-      -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    67,
-      -1,    33,    -1,    -1,    -1,    -1,    74,    75,    76,    77,
-      78,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    51,
+      78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
       -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    96,    97,
-      98,    99,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
+      98,    99,    14,    -1,    -1,    17,    18,    -1,    20,    21,
+      -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
+      -1,    33,    -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    14,    51,
+      -1,    17,    18,    -1,    -1,    21,    -1,    23,    24,    25,
+      26,    27,    -1,    29,    -1,    67,    -1,    33,    -1,    -1,
       -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    90,    91,
-      -1,    -1,    -1,    -1,    96,    97,    98,    99,    14,    -1,
-      -1,    17,    18,    -1,    20,    21,    -1,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    -1,    -1,    33,    -1,    -1,
-      -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    49,    14,    51,    -1,    17,    18,    -1,
-      -1,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    67,    -1,    33,    -1,    -1,    -1,    -1,    74,    75,
-      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    49,
-      -1,    51,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,
-      96,    -1,    -1,    99,    -1,    -1,    45,    67,    47,    -1,
-      -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
-      -1,    -1,    61,    62,    63,    64,    65,    66,    -1,    68,
-      90,    91,    71,    72,    73,    -1,    96,    -1,    -1,    99,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    87,    88,
-      89,    90,    91,    92,    93,    61,    62,    63,    64,    65,
-      66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,
-      -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
-      53,    87,    88,    89,    90,    91,    92,    93,    61,    62,
-      63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    72,
-      73,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,
-      -1,    -1,    -1,    53,    87,    88,    89,    90,    91,    92,
-      93,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
-      -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      47,    -1,    -1,    -1,    -1,    -1,    53,    87,    88,    89,
-      90,    91,    92,    93,    61,    62,    63,    64,    65,    66,
+      -1,    -1,    -1,    49,    -1,    51,    -1,    -1,    90,    91,
+      -1,    -1,    -1,    -1,    96,    -1,    -1,    99,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    34,    74,    75,
+      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,
+      96,    -1,    -1,    99,    61,    62,    63,    64,    65,    66,
       -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,
-      -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,
       87,    88,    89,    90,    91,    92,    93,    61,    62,    63,
       64,    65,    66,    -1,    68,    -1,    -1,    71,    72,    73,
       -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    87,    88,    89,    90,    91,    92,    93,
+      -1,    -1,    53,    87,    88,    89,    90,    91,    92,    93,
       61,    62,    63,    64,    65,    66,    -1,    68,    -1,    -1,
       71,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,    47,
-      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,
+      -1,    -1,    -1,    -1,    -1,    53,    87,    88,    89,    90,
       91,    92,    93,    61,    62,    63,    64,    65,    66,    -1,
       68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    87,
       88,    89,    90,    91,    92,    93,    61,    62,    63,    64,
       65,    66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,
       -1,    53,    87,    88,    89,    90,    91,    92,    93,    61,
       62,    63,    64,    65,    66,    -1,    68,    -1,    -1,    71,
-      72,    73,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      72,    73,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,
       -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,
-      92,    93,    55,    95,    -1,    -1,    -1,    -1,    61,    62,
-      63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    72,
-      73,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
-      -1,    71,    72,    73,    87,    88,    89,    90,    91,    92,
-      93,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-      90,    91,    92,    93,    -1,    -1,    -1,    97,    61,    62,
+      92,    93,    61,    62,    63,    64,    65,    66,    -1,    68,
+      -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,
+      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
+      89,    90,    91,    92,    93,    61,    62,    63,    64,    65,
+      66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,
+      -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+      -1,    87,    88,    89,    90,    91,    92,    93,    61,    62,
       63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    72,
-      73,    -1,    -1,    -1,    -1,    -1,    79,    80,    -1,    -1,
+      73,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,
       -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,    92,
       93,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
-      -1,    71,    72,    73,    61,    62,    63,    64,    -1,    -1,
-      -1,    68,    -1,    -1,    71,    72,    73,    87,    88,    89,
-      90,    91,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-      87,    88,    89,    90,    91,    92,    93
+      -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    53,    87,    88,    89,
+      90,    91,    92,    93,    61,    62,    63,    64,    65,    66,
+      -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      87,    88,    89,    90,    91,    92,    93,    55,    95,    -1,
+      -1,    -1,    -1,    61,    62,    63,    64,    65,    66,    -1,
+      68,    -1,    -1,    71,    72,    73,    61,    62,    63,    64,
+      65,    66,    -1,    68,    -1,    -1,    71,    72,    73,    87,
+      88,    89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    88,    89,    90,    91,    92,    93,    -1,
+      -1,    -1,    97,    61,    62,    63,    64,    65,    66,    -1,
+      68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,
+      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      88,    89,    90,    91,    92,    93,    61,    62,    63,    64,
+      65,    66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    88,    89,    90,    91,    92,    93
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1633,33 +1642,33 @@ static const yytype_uint8 yystos[] =
      134,    45,    46,    47,    48,   129,   141,   145,    50,    20,
      129,    55,    56,    17,    18,    19,    26,    33,    26,    26,
      129,   129,   141,   136,   129,   129,   129,   129,   129,   129,
-     129,   135,   149,   129,   129,   129,    27,    29,   101,   129,
-     157,   158,   159,   160,     0,    95,   129,    61,    62,    63,
-      64,    65,    66,    68,    71,    72,    73,    87,    88,    89,
-      90,    91,    92,    93,   126,    96,   129,   129,   154,    98,
-     154,   128,    26,   154,    98,   154,   126,    26,   137,   129,
-      45,   141,    26,    26,    43,    69,    70,    26,   126,    53,
-      63,   128,   128,    53,    63,    53,    63,    52,    55,   141,
-      26,   139,    47,    53,    47,    53,    47,    53,    47,    53,
-      79,    80,    53,    95,    26,   138,    26,    97,   101,   101,
-     100,    98,    98,   103,   122,   129,   129,   129,   129,   129,
+     129,   135,   149,   129,   129,   129,    26,    27,    29,   101,
+     129,   157,   158,   159,   160,     0,    95,   129,    61,    62,
+      63,    64,    65,    66,    68,    71,    72,    73,    87,    88,
+      89,    90,    91,    92,    93,   126,    96,   129,   129,   154,
+      98,   154,   128,    26,   154,    98,   154,   126,    26,   137,
+     129,    45,   141,    26,    26,    43,    69,    70,    26,   126,
+      53,    63,   128,   128,    53,    63,    53,    63,    52,    55,
+     141,    26,   139,    47,    53,    47,    53,    47,    53,    47,
+      53,    79,    80,    53,    95,    26,   138,    26,    97,   101,
+     101,   101,   100,    98,    98,   103,   122,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,    26,   150,    97,   129,    97,    97,    98,    97,
-     129,   150,    98,   129,   146,   128,    26,   132,    26,    26,
-      42,    63,   129,   129,   129,    53,    63,    47,   129,   129,
-     129,   129,   129,   129,    98,   129,   129,   129,   129,   129,
-     129,   129,   129,   129,   129,   118,   118,    98,   128,   128,
-     129,    27,    29,   160,    52,    95,    98,   130,    95,    26,
-     126,    43,   129,   129,   122,   129,   129,    26,    26,    47,
-      47,    47,    47,   106,   127,    26,   127,   152,    26,   155,
-     152,   150,   129,   114,   108,   111,   117,   128,   129,   129,
-     129,   129,   126,    95,   107,   126,   123,   127,    97,   127,
-      95,   126,   124,   124,   127,    53,    63,    86,   120,    30,
-     152,   115,   109,   112,   123,   129,   129,    35,    36,   121,
-     126,    26,   151,   127,   122,    53,    34,    85,   127,   129,
-      84,    98,   116,   129,    53,   126,   122,    26,   117,   110,
-     129,    84,    52,   127,   122,   113,   127,    85,   117,   122,
-     123,   127,   117,    85,   127,    85
+     129,   129,   129,   129,    26,   150,    97,   129,    97,    97,
+      98,    97,   129,   150,    98,   129,   146,   128,    26,   132,
+      26,    26,    42,    63,   129,   129,   129,    53,    63,    47,
+     129,   129,   129,   129,   129,   129,    98,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   118,   118,    98,
+     129,   129,   129,   129,    26,    27,    29,   160,    52,    95,
+      98,   130,    95,    26,   126,    43,   129,   129,   122,   129,
+     129,    26,    26,    47,    47,    47,    47,   106,   127,    26,
+     127,   152,    26,   155,   152,   150,   129,   114,   108,   111,
+     117,   128,   129,   129,   129,   129,   126,    95,   107,   126,
+     123,   127,    97,   127,    95,   126,   124,   124,   127,    53,
+      63,    86,   120,    30,   152,   115,   109,   112,   123,   129,
+     129,    35,    36,   121,   126,    26,   151,   127,   122,    53,
+      34,    85,   127,   129,    84,    98,   116,   129,    53,   126,
+     122,    26,   117,   110,   129,    84,    52,   127,   122,   113,
+     127,    85,   117,   122,   123,   127,   117,    85,   127,    85
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1682,7 +1691,8 @@ static const yytype_uint8 yyr1[] =
      141,   142,   142,   142,   143,   142,   145,   146,   144,   144,
      147,   144,   144,   144,   149,   148,   150,   150,   150,   151,
      151,   151,   152,   153,   154,   154,   154,   155,   155,   156,
-     157,   157,   157,   157,   158,   158,   159,   159,   160,   160
+     157,   157,   157,   157,   158,   158,   159,   159,   160,   160,
+     160
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1705,7 +1715,8 @@ static const yytype_int8 yyr2[] =
        2,     2,     3,     2,     0,     3,     0,     0,     9,     2,
        0,     7,     8,     6,     0,     3,     0,     1,     3,     0,
        1,     3,     0,     2,     0,     1,     3,     1,     3,     3,
-       0,     1,     1,     1,     1,     3,     1,     3,     3,     3
+       0,     1,     1,     1,     1,     3,     1,     3,     3,     3,
+       3
 };
 
 
@@ -1979,73 +1990,73 @@ yydestruct (const char *yymsg,
     case 22: /* BLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1983 "engines/director/lingo/lingo-gr.cpp"
+#line 1994 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1989 "engines/director/lingo/lingo-gr.cpp"
+#line 2000 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1995 "engines/director/lingo/lingo-gr.cpp"
+#line 2006 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* THEFBLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2001 "engines/director/lingo/lingo-gr.cpp"
+#line 2012 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ID  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2007 "engines/director/lingo/lingo-gr.cpp"
+#line 2018 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* STRING  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2013 "engines/director/lingo/lingo-gr.cpp"
+#line 2024 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* HANDLER  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2019 "engines/director/lingo/lingo-gr.cpp"
+#line 2030 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* SYMBOL  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2025 "engines/director/lingo/lingo-gr.cpp"
+#line 2036 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 30: /* ENDCLAUSE  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2031 "engines/director/lingo/lingo-gr.cpp"
+#line 2042 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 31: /* tPLAYACCEL  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2037 "engines/director/lingo/lingo-gr.cpp"
+#line 2048 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 32: /* tMETHOD  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2043 "engines/director/lingo/lingo-gr.cpp"
+#line 2054 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 148: /* on  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2049 "engines/director/lingo/lingo-gr.cpp"
+#line 2060 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2332,7 +2343,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2336 "engines/director/lingo/lingo-gr.cpp"
+#line 2347 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2340,7 +2351,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2344 "engines/director/lingo/lingo-gr.cpp"
+#line 2355 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2356,7 +2367,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2360 "engines/director/lingo/lingo-gr.cpp"
+#line 2371 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
@@ -2368,7 +2379,7 @@ yyreduce:
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2372 "engines/director/lingo/lingo-gr.cpp"
+#line 2383 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
@@ -2380,7 +2391,7 @@ yyreduce:
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2384 "engines/director/lingo/lingo-gr.cpp"
+#line 2395 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2392,7 +2403,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2396 "engines/director/lingo/lingo-gr.cpp"
+#line 2407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2404,7 +2415,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2408 "engines/director/lingo/lingo-gr.cpp"
+#line 2419 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2416,7 +2427,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2420 "engines/director/lingo/lingo-gr.cpp"
+#line 2431 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2428,7 +2439,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2432 "engines/director/lingo/lingo-gr.cpp"
+#line 2443 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2439,7 +2450,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2443 "engines/director/lingo/lingo-gr.cpp"
+#line 2454 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2450,7 +2461,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2454 "engines/director/lingo/lingo-gr.cpp"
+#line 2465 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2466,7 +2477,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2470 "engines/director/lingo/lingo-gr.cpp"
+#line 2481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2482,7 +2493,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2486 "engines/director/lingo/lingo-gr.cpp"
+#line 2497 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20:
@@ -2494,7 +2505,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2498 "engines/director/lingo/lingo-gr.cpp"
+#line 2509 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 21:
@@ -2506,7 +2517,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2510 "engines/director/lingo/lingo-gr.cpp"
+#line 2521 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 27:
@@ -2518,7 +2529,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2522 "engines/director/lingo/lingo-gr.cpp"
+#line 2533 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28:
@@ -2526,20 +2537,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2530 "engines/director/lingo/lingo-gr.cpp"
+#line 2541 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
 #line 366 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2537 "engines/director/lingo/lingo-gr.cpp"
+#line 2548 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
 #line 369 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2543 "engines/director/lingo/lingo-gr.cpp"
+#line 2554 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
@@ -2564,7 +2575,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2568 "engines/director/lingo/lingo-gr.cpp"
+#line 2579 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
@@ -2572,20 +2583,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2576 "engines/director/lingo/lingo-gr.cpp"
+#line 2587 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
 #line 400 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2583 "engines/director/lingo/lingo-gr.cpp"
+#line 2594 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
 #line 403 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2589 "engines/director/lingo/lingo-gr.cpp"
+#line 2600 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
@@ -2610,7 +2621,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2614 "engines/director/lingo/lingo-gr.cpp"
+#line 2625 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
@@ -2621,7 +2632,7 @@ yyreduce:
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2625 "engines/director/lingo/lingo-gr.cpp"
+#line 2636 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2631,7 +2642,7 @@ yyreduce:
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2635 "engines/director/lingo/lingo-gr.cpp"
+#line 2646 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
@@ -2646,7 +2657,7 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2650 "engines/director/lingo/lingo-gr.cpp"
+#line 2661 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
@@ -2670,7 +2681,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2674 "engines/director/lingo/lingo-gr.cpp"
+#line 2685 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
@@ -2683,7 +2694,7 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2687 "engines/director/lingo/lingo-gr.cpp"
+#line 2698 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
@@ -2691,31 +2702,31 @@ yyreduce:
                               {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2695 "engines/director/lingo/lingo-gr.cpp"
+#line 2706 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
 #line 484 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2701 "engines/director/lingo/lingo-gr.cpp"
+#line 2712 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
 #line 485 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2707 "engines/director/lingo/lingo-gr.cpp"
+#line 2718 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
 #line 487 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2713 "engines/director/lingo/lingo-gr.cpp"
+#line 2724 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
 #line 489 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2719 "engines/director/lingo/lingo-gr.cpp"
+#line 2730 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
@@ -2727,7 +2738,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2731 "engines/director/lingo/lingo-gr.cpp"
+#line 2742 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
@@ -2739,7 +2750,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2743 "engines/director/lingo/lingo-gr.cpp"
+#line 2754 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
@@ -2749,7 +2760,7 @@ yyreduce:
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2753 "engines/director/lingo/lingo-gr.cpp"
+#line 2764 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
@@ -2757,7 +2768,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2761 "engines/director/lingo/lingo-gr.cpp"
+#line 2772 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
@@ -2765,7 +2776,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2769 "engines/director/lingo/lingo-gr.cpp"
+#line 2780 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
@@ -2773,26 +2784,26 @@ yyreduce:
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2777 "engines/director/lingo/lingo-gr.cpp"
+#line 2788 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54:
 #line 527 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2784 "engines/director/lingo/lingo-gr.cpp"
+#line 2795 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
 #line 530 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2790 "engines/director/lingo/lingo-gr.cpp"
+#line 2801 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
 #line 532 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2796 "engines/director/lingo/lingo-gr.cpp"
+#line 2807 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
@@ -2800,7 +2811,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2804 "engines/director/lingo/lingo-gr.cpp"
+#line 2815 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
@@ -2808,7 +2819,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2812 "engines/director/lingo/lingo-gr.cpp"
+#line 2823 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
@@ -2817,7 +2828,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2821 "engines/director/lingo/lingo-gr.cpp"
+#line 2832 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62:
@@ -2826,7 +2837,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2830 "engines/director/lingo/lingo-gr.cpp"
+#line 2841 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63:
@@ -2835,7 +2846,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2839 "engines/director/lingo/lingo-gr.cpp"
+#line 2850 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64:
@@ -2848,7 +2859,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2852 "engines/director/lingo/lingo-gr.cpp"
+#line 2863 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 65:
@@ -2859,13 +2870,13 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2863 "engines/director/lingo/lingo-gr.cpp"
+#line 2874 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
 #line 568 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2869 "engines/director/lingo/lingo-gr.cpp"
+#line 2880 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68:
@@ -2880,13 +2891,13 @@ yyreduce:
 			yyerrok;
 		}
 	}
-#line 2884 "engines/director/lingo/lingo-gr.cpp"
+#line 2895 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
 #line 581 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2890 "engines/director/lingo/lingo-gr.cpp"
+#line 2901 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
@@ -2894,7 +2905,7 @@ yyreduce:
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2898 "engines/director/lingo/lingo-gr.cpp"
+#line 2909 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
@@ -2902,7 +2913,7 @@ yyreduce:
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2906 "engines/director/lingo/lingo-gr.cpp"
+#line 2917 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73:
@@ -2913,13 +2924,13 @@ yyreduce:
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2917 "engines/director/lingo/lingo-gr.cpp"
+#line 2928 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
 #line 595 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2923 "engines/director/lingo/lingo-gr.cpp"
+#line 2934 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
@@ -2928,7 +2939,7 @@ yyreduce:
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2932 "engines/director/lingo/lingo-gr.cpp"
+#line 2943 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
@@ -2936,7 +2947,7 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2940 "engines/director/lingo/lingo-gr.cpp"
+#line 2951 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
@@ -2944,7 +2955,7 @@ yyreduce:
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2948 "engines/director/lingo/lingo-gr.cpp"
+#line 2959 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
@@ -2955,187 +2966,187 @@ yyreduce:
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2959 "engines/director/lingo/lingo-gr.cpp"
+#line 2970 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
 #line 613 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2965 "engines/director/lingo/lingo-gr.cpp"
+#line 2976 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
 #line 614 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2971 "engines/director/lingo/lingo-gr.cpp"
+#line 2982 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
 #line 615 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2977 "engines/director/lingo/lingo-gr.cpp"
+#line 2988 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
 #line 616 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2983 "engines/director/lingo/lingo-gr.cpp"
+#line 2994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
 #line 617 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2989 "engines/director/lingo/lingo-gr.cpp"
+#line 3000 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
 #line 618 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2995 "engines/director/lingo/lingo-gr.cpp"
+#line 3006 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
 #line 619 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 3001 "engines/director/lingo/lingo-gr.cpp"
+#line 3012 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
 #line 620 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 3007 "engines/director/lingo/lingo-gr.cpp"
+#line 3018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
 #line 621 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 3013 "engines/director/lingo/lingo-gr.cpp"
+#line 3024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
 #line 622 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 3019 "engines/director/lingo/lingo-gr.cpp"
+#line 3030 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
 #line 623 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 3025 "engines/director/lingo/lingo-gr.cpp"
+#line 3036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
 #line 624 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 3031 "engines/director/lingo/lingo-gr.cpp"
+#line 3042 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
 #line 625 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 3037 "engines/director/lingo/lingo-gr.cpp"
+#line 3048 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
 #line 626 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 3043 "engines/director/lingo/lingo-gr.cpp"
+#line 3054 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
 #line 627 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 3049 "engines/director/lingo/lingo-gr.cpp"
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
 #line 628 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
 #line 629 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 3061 "engines/director/lingo/lingo-gr.cpp"
+#line 3072 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
 #line 630 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 3067 "engines/director/lingo/lingo-gr.cpp"
+#line 3078 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
 #line 631 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
-#line 3073 "engines/director/lingo/lingo-gr.cpp"
+#line 3084 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
 #line 632 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 3079 "engines/director/lingo/lingo-gr.cpp"
+#line 3090 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
 #line 633 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 3085 "engines/director/lingo/lingo-gr.cpp"
+#line 3096 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
 #line 634 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 3091 "engines/director/lingo/lingo-gr.cpp"
+#line 3102 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
 #line 636 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
-#line 3097 "engines/director/lingo/lingo-gr.cpp"
+#line 3108 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
 #line 637 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 3103 "engines/director/lingo/lingo-gr.cpp"
+#line 3114 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104:
 #line 638 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3109 "engines/director/lingo/lingo-gr.cpp"
+#line 3120 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
 #line 639 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 3115 "engines/director/lingo/lingo-gr.cpp"
+#line 3126 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
 #line 640 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3121 "engines/director/lingo/lingo-gr.cpp"
+#line 3132 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
 #line 641 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 3127 "engines/director/lingo/lingo-gr.cpp"
+#line 3138 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
 #line 642 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3133 "engines/director/lingo/lingo-gr.cpp"
+#line 3144 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
 #line 643 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 3139 "engines/director/lingo/lingo-gr.cpp"
+#line 3150 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
@@ -3143,13 +3154,13 @@ yyreduce:
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 3147 "engines/director/lingo/lingo-gr.cpp"
+#line 3158 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
 #line 650 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3153 "engines/director/lingo/lingo-gr.cpp"
+#line 3164 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
@@ -3162,49 +3173,49 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 3166 "engines/director/lingo/lingo-gr.cpp"
+#line 3177 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
 #line 661 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3172 "engines/director/lingo/lingo-gr.cpp"
+#line 3183 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117:
 #line 662 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3178 "engines/director/lingo/lingo-gr.cpp"
+#line 3189 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
 #line 662 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 3184 "engines/director/lingo/lingo-gr.cpp"
+#line 3195 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
 #line 663 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3190 "engines/director/lingo/lingo-gr.cpp"
+#line 3201 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
 #line 663 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3196 "engines/director/lingo/lingo-gr.cpp"
+#line 3207 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
 #line 664 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3202 "engines/director/lingo/lingo-gr.cpp"
+#line 3213 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122:
 #line 664 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3208 "engines/director/lingo/lingo-gr.cpp"
+#line 3219 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123:
@@ -3212,7 +3223,7 @@ yyreduce:
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3216 "engines/director/lingo/lingo-gr.cpp"
+#line 3227 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
@@ -3220,19 +3231,19 @@ yyreduce:
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3224 "engines/director/lingo/lingo-gr.cpp"
+#line 3235 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
 #line 671 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
-#line 3230 "engines/director/lingo/lingo-gr.cpp"
+#line 3241 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
 #line 672 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3236 "engines/director/lingo/lingo-gr.cpp"
+#line 3247 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
@@ -3240,7 +3251,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3244 "engines/director/lingo/lingo-gr.cpp"
+#line 3255 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128:
@@ -3248,7 +3259,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3252 "engines/director/lingo/lingo-gr.cpp"
+#line 3263 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129:
@@ -3256,7 +3267,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3260 "engines/director/lingo/lingo-gr.cpp"
+#line 3271 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
@@ -3264,7 +3275,7 @@ yyreduce:
                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3268 "engines/director/lingo/lingo-gr.cpp"
+#line 3279 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
@@ -3272,7 +3283,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3276 "engines/director/lingo/lingo-gr.cpp"
+#line 3287 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
@@ -3280,25 +3291,25 @@ yyreduce:
                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3284 "engines/director/lingo/lingo-gr.cpp"
+#line 3295 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133:
 #line 702 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3290 "engines/director/lingo/lingo-gr.cpp"
+#line 3301 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
 #line 703 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3296 "engines/director/lingo/lingo-gr.cpp"
+#line 3307 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
 #line 704 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3302 "engines/director/lingo/lingo-gr.cpp"
+#line 3313 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
@@ -3307,7 +3318,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3311 "engines/director/lingo/lingo-gr.cpp"
+#line 3322 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
@@ -3316,7 +3327,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3320 "engines/director/lingo/lingo-gr.cpp"
+#line 3331 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
@@ -3325,7 +3336,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3329 "engines/director/lingo/lingo-gr.cpp"
+#line 3340 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
@@ -3334,7 +3345,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3338 "engines/director/lingo/lingo-gr.cpp"
+#line 3349 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
@@ -3343,7 +3354,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3347 "engines/director/lingo/lingo-gr.cpp"
+#line 3358 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
@@ -3352,13 +3363,13 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3356 "engines/director/lingo/lingo-gr.cpp"
+#line 3367 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
 #line 733 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3362 "engines/director/lingo/lingo-gr.cpp"
+#line 3373 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
@@ -3367,19 +3378,19 @@ yyreduce:
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3371 "engines/director/lingo/lingo-gr.cpp"
+#line 3382 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
 #line 763 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3377 "engines/director/lingo/lingo-gr.cpp"
+#line 3388 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
 #line 763 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory = NULL; }
-#line 3383 "engines/director/lingo/lingo-gr.cpp"
+#line 3394 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
@@ -3389,19 +3400,19 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3393 "engines/director/lingo/lingo-gr.cpp"
+#line 3404 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
 #line 769 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3399 "engines/director/lingo/lingo-gr.cpp"
+#line 3410 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
 #line 770 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
-#line 3405 "engines/director/lingo/lingo-gr.cpp"
+#line 3416 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151:
@@ -3411,7 +3422,7 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg), g_lingo->_currentFactory);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3415 "engines/director/lingo/lingo-gr.cpp"
+#line 3426 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 152:
@@ -3424,7 +3435,7 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3428 "engines/director/lingo/lingo-gr.cpp"
+#line 3439 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
@@ -3434,56 +3445,56 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3438 "engines/director/lingo/lingo-gr.cpp"
+#line 3449 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
 #line 790 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3444 "engines/director/lingo/lingo-gr.cpp"
+#line 3455 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
 #line 790 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory = NULL; }
-#line 3451 "engines/director/lingo/lingo-gr.cpp"
+#line 3462 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
 #line 793 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3457 "engines/director/lingo/lingo-gr.cpp"
+#line 3468 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
 #line 794 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3463 "engines/director/lingo/lingo-gr.cpp"
+#line 3474 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
 #line 795 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3469 "engines/director/lingo/lingo-gr.cpp"
+#line 3480 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
 #line 798 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3475 "engines/director/lingo/lingo-gr.cpp"
+#line 3486 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
 #line 799 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3481 "engines/director/lingo/lingo-gr.cpp"
+#line 3492 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
 #line 801 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3487 "engines/director/lingo/lingo-gr.cpp"
+#line 3498 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
@@ -3495,113 +3506,122 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3499 "engines/director/lingo/lingo-gr.cpp"
+#line 3510 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
 #line 811 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3505 "engines/director/lingo/lingo-gr.cpp"
+#line 3516 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
 #line 812 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3511 "engines/director/lingo/lingo-gr.cpp"
+#line 3522 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
 #line 813 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3517 "engines/director/lingo/lingo-gr.cpp"
+#line 3528 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
 #line 815 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3523 "engines/director/lingo/lingo-gr.cpp"
+#line 3534 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
 #line 816 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3529 "engines/director/lingo/lingo-gr.cpp"
+#line 3540 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
 #line 818 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3535 "engines/director/lingo/lingo-gr.cpp"
+#line 3546 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170:
 #line 820 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3541 "engines/director/lingo/lingo-gr.cpp"
+#line 3552 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
 #line 821 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3547 "engines/director/lingo/lingo-gr.cpp"
+#line 3558 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172:
 #line 822 "engines/director/lingo/lingo-gr.y"
-                     { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3553 "engines/director/lingo/lingo-gr.cpp"
+                         { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
+#line 3564 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 173:
 #line 823 "engines/director/lingo/lingo-gr.y"
-                         { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3559 "engines/director/lingo/lingo-gr.cpp"
+                     { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
+#line 3570 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 174:
 #line 825 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3565 "engines/director/lingo/lingo-gr.cpp"
+#line 3576 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 175:
 #line 826 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3571 "engines/director/lingo/lingo-gr.cpp"
+#line 3582 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 176:
 #line 828 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3577 "engines/director/lingo/lingo-gr.cpp"
+#line 3588 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 177:
 #line 829 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3583 "engines/director/lingo/lingo-gr.cpp"
+#line 3594 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 178:
 #line 831 "engines/director/lingo/lingo-gr.y"
-                                {
+                          {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3592 "engines/director/lingo/lingo-gr.cpp"
+#line 3603 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 179:
 #line 835 "engines/director/lingo/lingo-gr.y"
-                                        {
+                                {
+		g_lingo->code1(LC::c_stringpush);
+		g_lingo->codeString((yyvsp[-2].s)->c_str());
+		delete (yyvsp[-2].s); }
+#line 3612 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 180:
+#line 839 "engines/director/lingo/lingo-gr.y"
+                        {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3601 "engines/director/lingo/lingo-gr.cpp"
+#line 3621 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3605 "engines/director/lingo/lingo-gr.cpp"
+#line 3625 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3800,7 +3820,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 841 "engines/director/lingo/lingo-gr.y"
+#line 845 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 131804b4f5..c6f7cc5f5e 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -819,8 +819,8 @@ list: '[' valuelist ']'			{ $$ = $valuelist; }
 
 valuelist:	/* nothing */		{ $$ = g_lingo->code2(LC::c_arraypush, 0); }
 	| ':'						{ $$ = g_lingo->code2(LC::c_proparraypush, 0); }
-	| linearlist { $$ = g_lingo->code1(LC::c_arraypush); $$ = g_lingo->codeInt($linearlist); }
 	| proplist	 { $$ = g_lingo->code1(LC::c_proparraypush); $$ = g_lingo->codeInt($proplist); }
+	| linearlist { $$ = g_lingo->code1(LC::c_arraypush); $$ = g_lingo->codeInt($linearlist); }
 
 linearlist: expr				{ $$ = 1; }
 	| linearlist ',' expr		{ $$ = $1 + 1; }
@@ -828,14 +828,18 @@ linearlist: expr				{ $$ = 1; }
 proplist:  proppair				{ $$ = 1; }
 	| proplist ',' proppair		{ $$ = $1 + 1; }
 
-proppair: SYMBOL ':' simpleexpr {
+proppair: SYMBOL ':' expr {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString($SYMBOL->c_str());
 		delete $SYMBOL; }
-	| STRING ':' simpleexpr 	{
+	| STRING ':' expr 	{
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString($STRING->c_str());
 		delete $STRING; }
+	| ID ':' expr 	{
+		g_lingo->code1(LC::c_stringpush);
+		g_lingo->codeString($ID->c_str());
+		delete $ID; }
 
 
 %%


Commit: 9846b546bf3b4e48db069963651774aa6dca85d9
    https://github.com/scummvm/scummvm/commit/9846b546bf3b4e48db069963651774aa6dca85d9
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-18T22:27:59-04:00

Commit Message:
DIRECTOR: LINGO: Treat proplists as objs w/ props

Changed paths:
    engines/director/lingo/lingo-the.cpp
    engines/director/lingo/lingo.cpp
    engines/director/lingo/lingo.h


diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 97ea5ddfe9..96c80d860e 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -33,6 +33,7 @@
 #include "director/sprite.h"
 #include "director/score.h"
 #include "director/lingo/lingo.h"
+#include "director/lingo/lingo-code.h"
 #include "director/lingo/lingo-the.h"
 
 namespace Director {
@@ -1208,29 +1209,42 @@ void Lingo::setTheField(Datum &id1, int field, Datum &d) {
 }
 
 Datum Lingo::getObjectProp(Datum &obj, Common::String &propName) {
-	if (obj.type != OBJECT) {
-		warning("LC::c_objectproppush: Invalid object: %s", obj.asString(true).c_str());
-		return Datum();
-	}
-
-	if (obj.u.obj->hasProp(propName)) {
-		return obj.u.obj->getProp(propName);
+	Datum d;
+	if (obj.type == OBJECT) {
+		if (obj.u.obj->hasProp(propName)) {
+			return obj.u.obj->getProp(propName);
+		} else {
+			warning("Lingo::getObjectProp: Object <%s> has no property '%s'", obj.asString(true).c_str(), propName.c_str());
+		}
+	} else if (obj.type == PARRAY) {
+		int index = LC::compareArrays(LC::eqData, obj, propName, true).u.i;
+		if (index > 0) {
+			d = obj.u.parr->operator[](index - 1).v;
+		}
+		return d;
 	} else {
-		warning("Lingo::getObjectProp: Object <%s> has no property '%s'", obj.asString(true).c_str(), propName.c_str());
-		return Datum();
+		warning("Lingo::getObjectProp: Invalid object: %s", obj.asString(true).c_str());
 	}
+	return d;
 }
 
-void Lingo::setObjectProp(Datum &obj, Common::String &propName, Datum &d) {
-	if (obj.type != OBJECT) {
-		warning("LC::c_objectproppush: Invalid object: %s", obj.asString(true).c_str());
-		return;
-	}
-
-	if (obj.u.obj->hasProp(propName)) {
-		obj.u.obj->getProp(propName) = d;
+void Lingo::setObjectProp(Datum &obj, Common::String &propName, Datum &val) {
+	if (obj.type == OBJECT) {
+		if (obj.u.obj->hasProp(propName)) {
+			obj.u.obj->getProp(propName) = val;
+		} else {
+			warning("Lingo::setObjectProp: Object <%s> has no property '%s'", obj.asString(true).c_str(), propName.c_str());
+		}
+	} else if (obj.type == PARRAY) {
+		int index = LC::compareArrays(LC::eqData, obj, propName, true).u.i;
+		if (index > 0) {
+			obj.u.parr->operator[](index - 1).v = val;
+		} else {
+			PCell cell = PCell(propName, val);
+			obj.u.parr->push_back(cell);
+		}
 	} else {
-		warning("Lingo::setObjectProp: Object <%s> has no property '%s'", obj.asString(true).c_str(), propName.c_str());
+		warning("Lingo::setObjectProp: Invalid object: %s", obj.asString(true).c_str());
 	}
 }
 
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 94373438bc..d84a515da7 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -118,7 +118,7 @@ Symbol::~Symbol() {
 PCell::PCell() {
 }
 
-PCell::PCell(Datum &prop, Datum &val) {
+PCell::PCell(const Datum &prop, const Datum &val) {
 	p = prop;
 	v = val;
 }
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 05a82f0da9..5631f223d1 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -194,7 +194,7 @@ struct PCell {
 	Datum v;
 
 	PCell();
-	PCell(Datum &prop, Datum &val);
+	PCell(const Datum &prop, const Datum &val);
 };
 
 struct Builtin {




More information about the Scummvm-git-logs mailing list