diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 84dec148049ef2e000f0bd79d470f4a685f1f144..e333072ef99a2a2c2e8985b75bddf91dad29a088 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.362 2005-07-12 15:02:04 remacle Exp $
+// $Id: Callbacks.cpp,v 1.363 2005-07-14 14:28:15 remacle Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -3039,7 +3039,8 @@ static void _add_transfinite_elliptic(int type, int dim)
             switch (dim) {
             case 2:
               if(n == 3 + 1 || n == 4 + 1)
-                add_trsfellisurf(type, n, p, CTX.filename);
+                add_trsfellisurf(type, n, p, CTX.filename,
+				 (char*)WID->context_mesh_choice[1]->text());
               else
                 Msg(GERROR, "Wrong number of points for %s surface",
 		    type ? "elliptic" : "transfinite");
@@ -3081,12 +3082,13 @@ void mesh_define_transfinite_line_cb(CALLBACK_ARGS)
 
 void mesh_define_transfinite_surface_cb(CALLBACK_ARGS)
 {
+  WID->create_mesh_context_window(2);
   _add_transfinite_elliptic(0, 2);
 }
 
 void mesh_define_transfinite_volume_cb(CALLBACK_ARGS)
 {
-  WID->create_mesh_context_window(2);
+  WID->create_mesh_context_window(3);
   _add_transfinite_elliptic(0, 3);
 }
 
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 8aeb1ed52074c8d0e66179d0dedca5a3f26401fc..51c1b754821765aa321e7975548b57363eb4520a 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.449 2005-07-12 15:02:04 remacle Exp $
+// $Id: GUI.cpp,v 1.450 2005-07-14 14:28:15 remacle Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -4336,6 +4336,12 @@ void GUI::create_mesh_context_window(int num)
 {
   static Fl_Group *g[10];
   int i;
+  static Fl_Menu Transfinite_Dir[] = {
+    {"Left", 0, 0, 0},
+    {"Right", 0, 0, 0},
+    {"Alternated", 0, 0, 0},
+    {0}
+  };
 
   if(context_mesh_window) {
     for(i = 0; i < 3; i++)
@@ -4345,7 +4351,7 @@ void GUI::create_mesh_context_window(int num)
     return;
   }
 
-  int width = 31 * fontsize;
+  int width = 41 * fontsize;
   int height = 5 * WB + 5 * BH;
 
   context_mesh_window = new Dialog_Window(width, height, "Contextual Mesh Definitions");
@@ -4380,13 +4386,24 @@ void GUI::create_mesh_context_window(int num)
       context_mesh_choice[0]->align(FL_ALIGN_RIGHT);
       g[1]->end();
     }
-    // 2: Transfinite volume
+    
+    // 2: Transfinite surface
     {
-      g[2] = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 3 * WB - 2 * BH, "Transfinite Volume");
+      g[2] = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 3 * WB - 2 * BH, "Transfinite Surface");
+
+      context_mesh_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 2 * BH, IW, BH, "Transfinite Arrangement");
+      context_mesh_choice[1]->menu(Transfinite_Dir);
+      context_mesh_choice[1]->align(FL_ALIGN_RIGHT);
+
+      g[2]->end();
+    }
+    // 3: Transfinite volume
+    {
+      g[3] = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 3 * WB - 2 * BH, "Transfinite Volume");
       context_mesh_input[3] = new Fl_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "Volume number");
       context_mesh_input[3]->value("1");
       context_mesh_input[3]->align(FL_ALIGN_RIGHT);
-      g[2]->end();
+      g[3]->end();
     }
     o->end();
   }
diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
index cb55efd0d85619170279795f87526e5c6da692e3..e31f16466a8b431e1c48b38e4204f145ef27637a 100644
--- a/Geo/Geo.cpp
+++ b/Geo/Geo.cpp
@@ -1,4 +1,4 @@
-// $Id: Geo.cpp,v 1.43 2005-02-02 18:47:56 geuzaine Exp $
+// $Id: Geo.cpp,v 1.44 2005-07-14 14:28:15 remacle Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -112,7 +112,7 @@ void delet(int p1, char *fich, char *what)
   add_infile(text, fich);
 }
 
-void add_trsfellisurf(int type, int N, int *l, char *fich)
+void add_trsfellisurf(int type, int N, int *l, char *fich, char *dir)
 {
   char text[BUFFSIZE];
   char text2[BUFFSIZE];
@@ -126,7 +126,11 @@ void add_trsfellisurf(int type, int N, int *l, char *fich)
       snprintf(text2, BUFFSIZE, ",%d", l[i]);
     strncat(text, text2, BUFFSIZE-strlen(text));
   }
-  snprintf(text2, BUFFSIZE, "};");
+  if (!strcmp(dir,"Left"))
+    snprintf(text2, BUFFSIZE, "};");
+  else
+    snprintf(text2, BUFFSIZE, "} %s;",dir);
+
   strncat(text, text2, BUFFSIZE-strlen(text));
   add_infile(text, fich);
 }
diff --git a/Geo/Geo.h b/Geo/Geo.h
index 2f0f82992900d29aa3d61fbde902f4420feb57d1..aee22da8fe70abfbb33124505c208bbade3ff8f6 100644
--- a/Geo/Geo.h
+++ b/Geo/Geo.h
@@ -99,7 +99,7 @@ void coherence(char *fich);
 void delet(int p1, char *fich, char *what);
 void add_infile(char *text, char *fich);
 void add_trsfline(int N, int *l, char *fich, char *type, char *typearg, char *pts);
-void add_trsfellisurf(int type, int N, int *l, char *fich);
+void add_trsfellisurf(int type, int N, int *l, char *fich, char *dir);
 void add_trsfvol(int N, int *l, char *fich, char *vol);
 void add_charlength(int N, int *l, char *fich, char *lc);
 void add_recosurf(int N, int *l, char *fich);
diff --git a/Mesh/2D_Transfinite.cpp b/Mesh/2D_Transfinite.cpp
index 3a347141e54047d506d95c9721186eb23cbec0b3..ac3da30e365028497f48f06a6d92acf5c47d2b27 100644
--- a/Mesh/2D_Transfinite.cpp
+++ b/Mesh/2D_Transfinite.cpp
@@ -1,4 +1,4 @@
-// $Id: 2D_Transfinite.cpp,v 1.2 2005-01-01 19:35:30 geuzaine Exp $
+// $Id: 2D_Transfinite.cpp,v 1.3 2005-07-14 14:28:15 remacle Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -61,6 +61,7 @@ int index1d(int flag, int N, int n)
 
 int MeshTransfiniteSurface(Surface * sur)
 {
+
   int i, j, k, flag, nb, N1, N2, issphere;
   Curve *G[4], *GG[4];
   Vertex V, *c1, *c2, **list, *CP[2];
@@ -223,17 +224,40 @@ int MeshTransfiniteSurface(Surface * sur)
 	  Tree_Add(sur->Quadrangles, &quad);
 	}
 	else {
-	  simp = Create_Simplex(list[(i) + N1 * (j)], 
-				list[(i + 1) + N1 * (j)],
-				list[(i) + N1 * (j + 1)], NULL);
-	  simp->iEnt = sur->Num;
-	  Tree_Add(sur->Simplexes, &simp);
-	  
-	  simp = Create_Simplex(list[(i + 1) + N1 * (j + 1)],
-				list[(i) + N1 * (j + 1)],
-				list[(i + 1) + N1 * (j)], NULL);
-	  simp->iEnt = sur->Num;
-	  Tree_Add(sur->Simplexes, &simp);
+	  if (sur->Recombine_Dir == 1 ||
+	      (sur->Recombine_Dir == 0 && 
+	       ( ( i % 2 == 0 && j % 2 == 1 ) ||
+		 ( i % 2 == 1 && j % 2 == 0 ) ) ) )
+	    {  
+	   //DECOUPAGE1
+ 	  simp = Create_Simplex(list[(i) + N1 * (j)], 
+ 				list[(i + 1) + N1 * (j)],
+ 				list[(i) + N1 * (j + 1)], NULL);
+ 	  simp->iEnt = sur->Num;
+ 	  Tree_Add(sur->Simplexes, &simp);
+  
+ 	  simp = Create_Simplex(list[(i + 1) + N1 * (j + 1)],
+ 				list[(i) + N1 * (j + 1)],
+ 				list[(i + 1) + N1 * (j)], NULL);
+ 	  simp->iEnt = sur->Num;
+ 	  Tree_Add(sur->Simplexes, &simp);
+	    }
+	  else
+	    {
+	      
+	      //DECOUPAGE2
+	      simp = Create_Simplex(list[(i) + N1 * (j)], 
+				    list[(i + 1) + N1 * (j)],
+				    list[(i + 1) + N1 * (j + 1) ], NULL);
+	      simp->iEnt = sur->Num;
+	      Tree_Add(sur->Simplexes, &simp);
+	      
+	      simp = Create_Simplex(list[(i) + N1 * (j + 1)],
+				    list[(i) + N1 * j ],
+				    list[(i + 1) + N1 * (j + 1)], NULL);
+	      simp->iEnt = sur->Num;
+	      Tree_Add(sur->Simplexes, &simp);
+	    }
 	}
       }
     }
@@ -263,7 +287,7 @@ int MeshTransfiniteSurface(Surface * sur)
 	  Tree_Add(sur->Quadrangles, &quad);
 	}
 	else {
-	  simp = Create_Simplex(list[(i) + N1 * (j)], 
+        simp = Create_Simplex(list[(i) + N1 * (j)], 
 				list[(i + 1) + N1 * (j)],
 				list[(i) + N1 * (j + 1)], NULL);
 	  simp->iEnt = sur->Num;
diff --git a/Mesh/BDS.cpp b/Mesh/BDS.cpp
index daf6ba6bdc374119d23b662181dd3b07df0fefb4..8929b7a6de2613e659ccadb2275e7fac0adfa92a 100644
--- a/Mesh/BDS.cpp
+++ b/Mesh/BDS.cpp
@@ -675,11 +675,9 @@ void BDS_Mesh :: color_plane_surf ( double eps, int NB_T )
 
 void BDS_Mesh :: classify ( double angle, int NB_T )
 {
-
     printf("  classifying \n");
     
     static BDS_GeomEntity EDGE_CLAS (0,1);
-
     // clear everything
 
     { 
diff --git a/Mesh/Create.cpp b/Mesh/Create.cpp
index 6c9f80b1bbd9b04a9c2f5388d62c63bf367cbd52..3ad7e235497d8ce1f1f01d61ff48c5ba6ff7f274 100644
--- a/Mesh/Create.cpp
+++ b/Mesh/Create.cpp
@@ -1,4 +1,4 @@
-// $Id: Create.cpp,v 1.76 2005-06-25 04:05:40 geuzaine Exp $
+// $Id: Create.cpp,v 1.77 2005-07-14 14:28:15 remacle Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -660,6 +660,7 @@ Surface *Create_Surface(int Num, int Typ)
   for(int i = 0; i < 5; i++)
     pS->ipar[i] = 0;
   pS->Recombine = 0;
+  pS->Recombine_Dir = 0;
   pS->RecombineAngle = 75;
   pS->TrsfPoints = List_Create(4, 4, sizeof(Vertex *));
   pS->Simplexes = Tree_Create(sizeof(Simplex *), compareQuality);
diff --git a/Mesh/Makefile b/Mesh/Makefile
index a2e6f99d556be718fd3649c2d7e6870535803e2a..3dc294ae0f00fb4534c17c91d2ce61c773ba19c4 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.90 2005-07-12 15:01:17 remacle Exp $
+# $Id: Makefile,v 1.91 2005-07-14 14:28:15 remacle Exp $
 #
 # Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 #
@@ -102,294 +102,3 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-1D_Mesh.o: 1D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  Mesh.h Vertex.h Element.h Simplex.h Face.h Edge.h \
-  ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h Utils.h ../Common/Context.h \
-  Interpolation.h
-2D_Mesh.o: 2D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Mesh.h Utils.h Vertex.h Create.h 2D_Mesh.h \
-  ../Common/Context.h Interpolation.h
-2D_Transfinite.o: 2D_Transfinite.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
-  Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  ../Numeric/Numeric.h Interpolation.h
-2D_Elliptic.o: 2D_Elliptic.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Mesh.h
-2D_BGMesh.o: 2D_BGMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  2D_Mesh.h
-2D_Recombine.o: 2D_Recombine.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  Mesh.h Vertex.h Element.h Simplex.h Face.h Edge.h \
-  ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h Interpolation.h Utils.h \
-  2D_Mesh.h Create.h ../Common/Context.h
-2D_InitMesh.o: 2D_InitMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  2D_Mesh.h
-2D_Bowyer.o: 2D_Bowyer.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  2D_Mesh.h
-2D_Bricks.o: 2D_Bricks.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  2D_Mesh.h
-2D_DivAndConq.o: 2D_DivAndConq.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  2D_Mesh.h
-2D_Util.o: 2D_Util.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  2D_Mesh.h ../Common/Context.h
-2D_Links.o: 2D_Links.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  2D_Mesh.h ../Common/Context.h
-2D_Tree.o: 2D_Tree.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Element.h Simplex.h \
-  Face.h Edge.h ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h 2D_Mesh.h
-2D_Cylindrical.o: 2D_Cylindrical.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  ../Common/Context.h
-2D_Parametric.o: 2D_Parametric.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Interpolation.h Vertex.h Mesh.h 2D_Mesh.h Create.h \
-  ../Common/Context.h
-2D_Mesh_Aniso.o: 2D_Mesh_Aniso.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Mesh.h Interpolation.h Vertex.h Create.h \
-  ../Common/Context.h
-2D_Mesh_Triangle.o: 2D_Mesh_Triangle.cpp ../Common/Gmsh.h \
-  ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h \
-  Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  ../Numeric/Numeric.h ../Common/Context.h
-3D_Mesh.o: 3D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  Mesh.h Vertex.h Element.h Simplex.h Face.h Edge.h \
-  ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h 3D_Mesh.h Create.h \
-  ../Common/Context.h
-3D_Transfinite.o: 3D_Transfinite.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Element.h Simplex.h \
-  Face.h Edge.h ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h Interpolation.h Create.h
-3D_BGMesh.o: 3D_BGMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Element.h Simplex.h \
-  Face.h Edge.h ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h 2D_Mesh.h 3D_Mesh.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/GmshMatrix.h \
-  ../Common/AdaptiveViews.h ../Numeric/Numeric.h ../Common/Context.h
-3D_Extrude.o: 3D_Extrude.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Mesh.h ../Common/Context.h Create.h Vertex.h
-3D_Extrude_Old.o: 3D_Extrude_Old.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Mesh.h ../Common/Context.h Create.h Vertex.h
-3D_Coherence.o: 3D_Coherence.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  Mesh.h Vertex.h Element.h Simplex.h Face.h Edge.h \
-  ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h 3D_Mesh.h Create.h
-3D_Divide.o: 3D_Divide.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h
-3D_Bricks.o: 3D_Bricks.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h
-3D_Mesh_Netgen.o: 3D_Mesh_Netgen.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
-  Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  Create.h ../Numeric/Numeric.h ../Common/Context.h
-3D_Mesh_Tetgen.o: 3D_Mesh_Tetgen.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
-  Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  Create.h ../Numeric/Numeric.h ../Common/Context.h
-BDS.o: BDS.cpp BDS.h ../Numeric/Numeric.h ../Common/GmshMatrix.h \
-  ../Numeric/EigSolve.h
-MeshQuality.o: MeshQuality.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h
-Create.o: Create.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Mesh.h Utils.h Vertex.h ../Common/Context.h Create.h
-Generator.o: Generator.cpp BDS.h ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  Create.h ../Common/Context.h ../Parser/OpenFile.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/GmshMatrix.h ../Common/AdaptiveViews.h
-Print_Mesh.o: Print_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Mesh.h Create.h Vertex.h ../Common/Context.h
-Read_Mesh.o: Read_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h ../Geo/CAD.h \
-  ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Simplex.h \
-  ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Mesh.h 3D_Mesh.h Create.h Vertex.h ../Geo/MinMax.h \
-  ../Numeric/Numeric.h ../Common/Context.h
-DiscreteSurface.o: DiscreteSurface.cpp ../Common/Gmsh.h \
-  ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
-  ../Numeric/Numeric.h Mesh.h Vertex.h Element.h Simplex.h Face.h Edge.h \
-  ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h ../Geo/CAD.h ../Mesh/Mesh.h \
-  ../Mesh/Vertex.h ../Geo/Geo.h Create.h Interpolation.h \
-  ../Common/Context.h BDS.h
-SwapEdge.o: SwapEdge.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  SwapPatterns.h
-Utils.o: Utils.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Mesh.h Interpolation.h Vertex.h ../Common/Context.h
-Metric.o: Metric.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h Mesh.h Matrix.h Interpolation.h Vertex.h
-Nurbs.o: Nurbs.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h Nurbs.h Vertex.h Mesh.h Element.h \
-  Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h ../Geo/Geo.h \
-  ../Geo/GeoUtils.h ../Mesh/Mesh.h Create.h ../Geo/CAD.h ../Mesh/Vertex.h
-Interpolation.o: Interpolation.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  Nurbs.h Vertex.h Mesh.h Element.h Simplex.h Face.h Edge.h \
-  ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h ../Geo/CAD.h ../Mesh/Mesh.h \
-  ../Mesh/Vertex.h Utils.h Interpolation.h
-SecondOrder.o: SecondOrder.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
-  Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  Utils.h Interpolation.h ../Numeric/Numeric.h
-Smoothing.o: Smoothing.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
-  Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h
-CrossData.o: CrossData.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Element.h Simplex.h \
-  Face.h Edge.h ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h
-Vertex.o: Vertex.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Vertex.h \
-  Mesh.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
-  ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  ../Common/Context.h
-Edge.o: Edge.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
-  ../Numeric/Numeric.h Mesh.h Vertex.h Element.h Simplex.h Face.h Edge.h \
-  ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h
-Face.o: Face.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
-  ../Numeric/Numeric.h Mesh.h Vertex.h Element.h Simplex.h Face.h Edge.h \
-  ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h
-Element.o: Element.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Element.h Simplex.h \
-  Face.h Edge.h ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h ../Numeric/Numeric.h
-Simplex.o: Simplex.cpp ../Common/Gmsh.h ../Common/Message.h \
-  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
-  Mesh.h Vertex.h Element.h Simplex.h Face.h Edge.h \
-  ../Geo/ExtrudeParams.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h ../Common/Context.h
diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h
index a9276a4d5bebd3ba7ff31b25b08207fee55c59e3..f369ba33d83e78705328cb52b2fe7e7b22c3b708 100644
--- a/Mesh/Mesh.h
+++ b/Mesh/Mesh.h
@@ -228,6 +228,8 @@ struct _Surf{
   char Visible;
   int Method;
   int Recombine;
+// -1 is left, +1 is right, 0 is alternated
+  int Recombine_Dir; 
   double RecombineAngle;
   int ipar[5];
   int Nu, Nv;
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 69fd0eada82c6dd3a04813c0d19dd4c4167cd4cc..bfcba9d4ba18a88a4157930e22e82a0101e3676d 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -1,174 +1,390 @@
+/* A Bison parser, made by GNU Bison 1.875.  */
 
-/*  A Bison parser, made from Gmsh.y
-    by GNU Bison version 1.28  */
-
-#define YYBISON 1  /* Identify Bison output.  */
-
-#define	tDOUBLE	257
-#define	tSTRING	258
-#define	tBIGSTR	259
-#define	tEND	260
-#define	tAFFECT	261
-#define	tDOTS	262
-#define	tPi	263
-#define	tMPI_Rank	264
-#define	tMPI_Size	265
-#define	tExp	266
-#define	tLog	267
-#define	tLog10	268
-#define	tSqrt	269
-#define	tSin	270
-#define	tAsin	271
-#define	tCos	272
-#define	tAcos	273
-#define	tTan	274
-#define	tRand	275
-#define	tAtan	276
-#define	tAtan2	277
-#define	tSinh	278
-#define	tCosh	279
-#define	tTanh	280
-#define	tFabs	281
-#define	tFloor	282
-#define	tCeil	283
-#define	tFmod	284
-#define	tModulo	285
-#define	tHypot	286
-#define	tPrintf	287
-#define	tSprintf	288
-#define	tStrCat	289
-#define	tStrPrefix	290
-#define	tStrRelative	291
-#define	tBoundingBox	292
-#define	tDraw	293
-#define	tToday	294
-#define	tPoint	295
-#define	tCircle	296
-#define	tEllipse	297
-#define	tLine	298
-#define	tSurface	299
-#define	tSpline	300
-#define	tVolume	301
-#define	tCharacteristic	302
-#define	tLength	303
-#define	tParametric	304
-#define	tElliptic	305
-#define	tPlane	306
-#define	tRuled	307
-#define	tTransfinite	308
-#define	tComplex	309
-#define	tPhysical	310
-#define	tUsing	311
-#define	tBump	312
-#define	tProgression	313
-#define	tPlugin	314
-#define	tRotate	315
-#define	tTranslate	316
-#define	tSymmetry	317
-#define	tDilate	318
-#define	tExtrude	319
-#define	tDuplicata	320
-#define	tLoop	321
-#define	tRecombine	322
-#define	tDelete	323
-#define	tCoherence	324
-#define	tIntersect	325
-#define	tAttractor	326
-#define	tLayers	327
-#define	tAlias	328
-#define	tAliasWithOptions	329
-#define	tText2D	330
-#define	tText3D	331
-#define	tInterpolationScheme	332
-#define	tTime	333
-#define	tCombine	334
-#define	tBSpline	335
-#define	tBezier	336
-#define	tNurbs	337
-#define	tOrder	338
-#define	tWith	339
-#define	tBounds	340
-#define	tKnots	341
-#define	tColor	342
-#define	tColorTable	343
-#define	tFor	344
-#define	tIn	345
-#define	tEndFor	346
-#define	tIf	347
-#define	tEndIf	348
-#define	tExit	349
-#define	tReturn	350
-#define	tCall	351
-#define	tFunction	352
-#define	tTrimmed	353
-#define	tShow	354
-#define	tHide	355
-#define	tGetValue	356
-#define	tGMSH_MAJOR_VERSION	357
-#define	tGMSH_MINOR_VERSION	358
-#define	tGMSH_PATCH_VERSION	359
-#define	tB_SPLINE_SURFACE_WITH_KNOTS	360
-#define	tB_SPLINE_CURVE_WITH_KNOTS	361
-#define	tCARTESIAN_POINT	362
-#define	tTRUE	363
-#define	tFALSE	364
-#define	tUNSPECIFIED	365
-#define	tU	366
-#define	tV	367
-#define	tEDGE_CURVE	368
-#define	tVERTEX_POINT	369
-#define	tORIENTED_EDGE	370
-#define	tPLANE	371
-#define	tFACE_OUTER_BOUND	372
-#define	tEDGE_LOOP	373
-#define	tADVANCED_FACE	374
-#define	tVECTOR	375
-#define	tDIRECTION	376
-#define	tAXIS2_PLACEMENT_3D	377
-#define	tISO	378
-#define	tENDISO	379
-#define	tENDSEC	380
-#define	tDATA	381
-#define	tHEADER	382
-#define	tFILE_DESCRIPTION	383
-#define	tFILE_SCHEMA	384
-#define	tFILE_NAME	385
-#define	tMANIFOLD_SOLID_BREP	386
-#define	tCLOSED_SHELL	387
-#define	tADVANCED_BREP_SHAPE_REPRESENTATION	388
-#define	tFACE_BOUND	389
-#define	tCYLINDRICAL_SURFACE	390
-#define	tCONICAL_SURFACE	391
-#define	tCIRCLE	392
-#define	tTRIMMED_CURVE	393
-#define	tGEOMETRIC_SET	394
-#define	tCOMPOSITE_CURVE_SEGMENT	395
-#define	tCONTINUOUS	396
-#define	tCOMPOSITE_CURVE	397
-#define	tTOROIDAL_SURFACE	398
-#define	tPRODUCT_DEFINITION	399
-#define	tPRODUCT_DEFINITION_SHAPE	400
-#define	tSHAPE_DEFINITION_REPRESENTATION	401
-#define	tELLIPSE	402
-#define	tAFFECTPLUS	403
-#define	tAFFECTMINUS	404
-#define	tAFFECTTIMES	405
-#define	tAFFECTDIVIDE	406
-#define	tOR	407
-#define	tAND	408
-#define	tEQUAL	409
-#define	tNOTEQUAL	410
-#define	tAPPROXEQUAL	411
-#define	tLESSOREQUAL	412
-#define	tGREATEROREQUAL	413
-#define	tCROSSPRODUCT	414
-#define	tPLUSPLUS	415
-#define	tMINUSMINUS	416
-#define	UNARYPREC	417
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
 
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     tDOUBLE = 258,
+     tSTRING = 259,
+     tBIGSTR = 260,
+     tEND = 261,
+     tAFFECT = 262,
+     tDOTS = 263,
+     tPi = 264,
+     tMPI_Rank = 265,
+     tMPI_Size = 266,
+     tExp = 267,
+     tLog = 268,
+     tLog10 = 269,
+     tSqrt = 270,
+     tSin = 271,
+     tAsin = 272,
+     tCos = 273,
+     tAcos = 274,
+     tTan = 275,
+     tRand = 276,
+     tAtan = 277,
+     tAtan2 = 278,
+     tSinh = 279,
+     tCosh = 280,
+     tTanh = 281,
+     tFabs = 282,
+     tFloor = 283,
+     tCeil = 284,
+     tFmod = 285,
+     tModulo = 286,
+     tHypot = 287,
+     tPrintf = 288,
+     tSprintf = 289,
+     tStrCat = 290,
+     tStrPrefix = 291,
+     tStrRelative = 292,
+     tBoundingBox = 293,
+     tDraw = 294,
+     tToday = 295,
+     tPoint = 296,
+     tCircle = 297,
+     tEllipse = 298,
+     tLine = 299,
+     tSurface = 300,
+     tSpline = 301,
+     tVolume = 302,
+     tCharacteristic = 303,
+     tLength = 304,
+     tParametric = 305,
+     tElliptic = 306,
+     tPlane = 307,
+     tRuled = 308,
+     tTransfinite = 309,
+     tComplex = 310,
+     tPhysical = 311,
+     tUsing = 312,
+     tBump = 313,
+     tProgression = 314,
+     tPlugin = 315,
+     tRotate = 316,
+     tTranslate = 317,
+     tSymmetry = 318,
+     tDilate = 319,
+     tExtrude = 320,
+     tDuplicata = 321,
+     tLoop = 322,
+     tRecombine = 323,
+     tDelete = 324,
+     tCoherence = 325,
+     tIntersect = 326,
+     tAttractor = 327,
+     tLayers = 328,
+     tAlias = 329,
+     tAliasWithOptions = 330,
+     tText2D = 331,
+     tText3D = 332,
+     tInterpolationScheme = 333,
+     tTime = 334,
+     tCombine = 335,
+     tBSpline = 336,
+     tBezier = 337,
+     tNurbs = 338,
+     tOrder = 339,
+     tWith = 340,
+     tBounds = 341,
+     tKnots = 342,
+     tColor = 343,
+     tColorTable = 344,
+     tFor = 345,
+     tIn = 346,
+     tEndFor = 347,
+     tIf = 348,
+     tEndIf = 349,
+     tExit = 350,
+     tReturn = 351,
+     tCall = 352,
+     tFunction = 353,
+     tTrimmed = 354,
+     tShow = 355,
+     tHide = 356,
+     tGetValue = 357,
+     tGMSH_MAJOR_VERSION = 358,
+     tGMSH_MINOR_VERSION = 359,
+     tGMSH_PATCH_VERSION = 360,
+     tB_SPLINE_SURFACE_WITH_KNOTS = 361,
+     tB_SPLINE_CURVE_WITH_KNOTS = 362,
+     tCARTESIAN_POINT = 363,
+     tTRUE = 364,
+     tFALSE = 365,
+     tUNSPECIFIED = 366,
+     tU = 367,
+     tV = 368,
+     tEDGE_CURVE = 369,
+     tVERTEX_POINT = 370,
+     tORIENTED_EDGE = 371,
+     tPLANE = 372,
+     tFACE_OUTER_BOUND = 373,
+     tEDGE_LOOP = 374,
+     tADVANCED_FACE = 375,
+     tVECTOR = 376,
+     tDIRECTION = 377,
+     tAXIS2_PLACEMENT_3D = 378,
+     tISO = 379,
+     tENDISO = 380,
+     tENDSEC = 381,
+     tDATA = 382,
+     tHEADER = 383,
+     tFILE_DESCRIPTION = 384,
+     tFILE_SCHEMA = 385,
+     tFILE_NAME = 386,
+     tMANIFOLD_SOLID_BREP = 387,
+     tCLOSED_SHELL = 388,
+     tADVANCED_BREP_SHAPE_REPRESENTATION = 389,
+     tFACE_BOUND = 390,
+     tCYLINDRICAL_SURFACE = 391,
+     tCONICAL_SURFACE = 392,
+     tCIRCLE = 393,
+     tTRIMMED_CURVE = 394,
+     tGEOMETRIC_SET = 395,
+     tCOMPOSITE_CURVE_SEGMENT = 396,
+     tCONTINUOUS = 397,
+     tCOMPOSITE_CURVE = 398,
+     tTOROIDAL_SURFACE = 399,
+     tPRODUCT_DEFINITION = 400,
+     tPRODUCT_DEFINITION_SHAPE = 401,
+     tSHAPE_DEFINITION_REPRESENTATION = 402,
+     tELLIPSE = 403,
+     tAFFECTDIVIDE = 404,
+     tAFFECTTIMES = 405,
+     tAFFECTMINUS = 406,
+     tAFFECTPLUS = 407,
+     tOR = 408,
+     tAND = 409,
+     tAPPROXEQUAL = 410,
+     tNOTEQUAL = 411,
+     tEQUAL = 412,
+     tGREATEROREQUAL = 413,
+     tLESSOREQUAL = 414,
+     tCROSSPRODUCT = 415,
+     UNARYPREC = 416,
+     tMINUSMINUS = 417,
+     tPLUSPLUS = 418
+   };
+#endif
+#define tDOUBLE 258
+#define tSTRING 259
+#define tBIGSTR 260
+#define tEND 261
+#define tAFFECT 262
+#define tDOTS 263
+#define tPi 264
+#define tMPI_Rank 265
+#define tMPI_Size 266
+#define tExp 267
+#define tLog 268
+#define tLog10 269
+#define tSqrt 270
+#define tSin 271
+#define tAsin 272
+#define tCos 273
+#define tAcos 274
+#define tTan 275
+#define tRand 276
+#define tAtan 277
+#define tAtan2 278
+#define tSinh 279
+#define tCosh 280
+#define tTanh 281
+#define tFabs 282
+#define tFloor 283
+#define tCeil 284
+#define tFmod 285
+#define tModulo 286
+#define tHypot 287
+#define tPrintf 288
+#define tSprintf 289
+#define tStrCat 290
+#define tStrPrefix 291
+#define tStrRelative 292
+#define tBoundingBox 293
+#define tDraw 294
+#define tToday 295
+#define tPoint 296
+#define tCircle 297
+#define tEllipse 298
+#define tLine 299
+#define tSurface 300
+#define tSpline 301
+#define tVolume 302
+#define tCharacteristic 303
+#define tLength 304
+#define tParametric 305
+#define tElliptic 306
+#define tPlane 307
+#define tRuled 308
+#define tTransfinite 309
+#define tComplex 310
+#define tPhysical 311
+#define tUsing 312
+#define tBump 313
+#define tProgression 314
+#define tPlugin 315
+#define tRotate 316
+#define tTranslate 317
+#define tSymmetry 318
+#define tDilate 319
+#define tExtrude 320
+#define tDuplicata 321
+#define tLoop 322
+#define tRecombine 323
+#define tDelete 324
+#define tCoherence 325
+#define tIntersect 326
+#define tAttractor 327
+#define tLayers 328
+#define tAlias 329
+#define tAliasWithOptions 330
+#define tText2D 331
+#define tText3D 332
+#define tInterpolationScheme 333
+#define tTime 334
+#define tCombine 335
+#define tBSpline 336
+#define tBezier 337
+#define tNurbs 338
+#define tOrder 339
+#define tWith 340
+#define tBounds 341
+#define tKnots 342
+#define tColor 343
+#define tColorTable 344
+#define tFor 345
+#define tIn 346
+#define tEndFor 347
+#define tIf 348
+#define tEndIf 349
+#define tExit 350
+#define tReturn 351
+#define tCall 352
+#define tFunction 353
+#define tTrimmed 354
+#define tShow 355
+#define tHide 356
+#define tGetValue 357
+#define tGMSH_MAJOR_VERSION 358
+#define tGMSH_MINOR_VERSION 359
+#define tGMSH_PATCH_VERSION 360
+#define tB_SPLINE_SURFACE_WITH_KNOTS 361
+#define tB_SPLINE_CURVE_WITH_KNOTS 362
+#define tCARTESIAN_POINT 363
+#define tTRUE 364
+#define tFALSE 365
+#define tUNSPECIFIED 366
+#define tU 367
+#define tV 368
+#define tEDGE_CURVE 369
+#define tVERTEX_POINT 370
+#define tORIENTED_EDGE 371
+#define tPLANE 372
+#define tFACE_OUTER_BOUND 373
+#define tEDGE_LOOP 374
+#define tADVANCED_FACE 375
+#define tVECTOR 376
+#define tDIRECTION 377
+#define tAXIS2_PLACEMENT_3D 378
+#define tISO 379
+#define tENDISO 380
+#define tENDSEC 381
+#define tDATA 382
+#define tHEADER 383
+#define tFILE_DESCRIPTION 384
+#define tFILE_SCHEMA 385
+#define tFILE_NAME 386
+#define tMANIFOLD_SOLID_BREP 387
+#define tCLOSED_SHELL 388
+#define tADVANCED_BREP_SHAPE_REPRESENTATION 389
+#define tFACE_BOUND 390
+#define tCYLINDRICAL_SURFACE 391
+#define tCONICAL_SURFACE 392
+#define tCIRCLE 393
+#define tTRIMMED_CURVE 394
+#define tGEOMETRIC_SET 395
+#define tCOMPOSITE_CURVE_SEGMENT 396
+#define tCONTINUOUS 397
+#define tCOMPOSITE_CURVE 398
+#define tTOROIDAL_SURFACE 399
+#define tPRODUCT_DEFINITION 400
+#define tPRODUCT_DEFINITION_SHAPE 401
+#define tSHAPE_DEFINITION_REPRESENTATION 402
+#define tELLIPSE 403
+#define tAFFECTDIVIDE 404
+#define tAFFECTTIMES 405
+#define tAFFECTMINUS 406
+#define tAFFECTPLUS 407
+#define tOR 408
+#define tAND 409
+#define tAPPROXEQUAL 410
+#define tNOTEQUAL 411
+#define tEQUAL 412
+#define tGREATEROREQUAL 413
+#define tLESSOREQUAL 414
+#define tCROSSPRODUCT 415
+#define UNARYPREC 416
+#define tMINUSMINUS 417
+#define tPLUSPLUS 418
+
+
+
+
+/* Copy the first part of user declarations.  */
 #line 1 "Gmsh.y"
 
-// $Id: Gmsh.tab.cpp,v 1.239 2005-06-13 04:17:55 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.240 2005-07-14 14:28:15 remacle Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -244,8 +460,23 @@ void skip_until(char *skip, char *until);
 int PrintListOfDouble(char *format, List_T *list, char *buffer);
 int CheckViewErrorFlags(Post_View *v);
 
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
 #line 79 "Gmsh.y"
-typedef union {
+typedef union YYSTYPE {
   char *c;
   int i;
   unsigned int u;
@@ -254,2411 +485,2848 @@ typedef union {
   Shape s;
   List_T *l;
 } YYSTYPE;
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
+/* Line 191 of yacc.c.  */
+#line 489 "Gmsh.tab.cpp"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
 
-#define	YYFINAL		1504
-#define	YYFLAG		-32768
-#define	YYNTBASE	183
-
-#define YYTRANSLATE(x) ((unsigned)(x) <= 417 ? yytranslate[x] : 251)
-
-static const short yytranslate[] = {     0,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   169,     2,   179,     2,   167,     2,     2,   174,
-   175,   165,   163,   180,   164,   178,   166,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   159,
-     2,   161,   153,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-   176,     2,   177,   173,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   181,     2,   182,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    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,    83,    84,    85,    86,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-   137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-   147,   148,   149,   150,   151,   152,   154,   155,   156,   157,
-   158,   160,   162,   168,   170,   171,   172
-};
+/* Copy the second part of user declarations.  */
+
+
+/* Line 214 of yacc.c.  */
+#line 501 "Gmsh.tab.cpp"
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# if YYSTACK_USE_ALLOCA
+#  define YYSTACK_ALLOC alloca
+# else
+#  ifndef YYSTACK_USE_ALLOCA
+#   if defined (alloca) || defined (_ALLOCA_H)
+#    define YYSTACK_ALLOC alloca
+#   else
+#    ifdef __GNUC__
+#     define YYSTACK_ALLOC __builtin_alloca
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+#  if defined (__STDC__) || defined (__cplusplus)
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T size_t
+#  endif
+#  define YYSTACK_ALLOC malloc
+#  define YYSTACK_FREE free
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  register YYSIZE_T yyi;		\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
 
-#if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     2,     4,     7,     8,    11,    13,    15,    17,    20,
-    23,    26,    29,    32,    40,    46,    64,    74,    98,   130,
-   146,   158,   170,   186,   196,   210,   220,   232,   246,   256,
-   266,   278,   288,   300,   310,   322,   336,   350,   362,   376,
-   394,   404,   416,   428,   442,   454,   464,   465,   468,   470,
-   472,   474,   476,   478,   480,   482,   484,   486,   488,   490,
-   492,   494,   496,   502,   510,   517,   526,   527,   530,   533,
-   536,   539,   542,   544,   548,   550,   554,   555,   556,   567,
-   569,   573,   574,   588,   590,   594,   595,   611,   620,   621,
-   628,   630,   632,   634,   636,   638,   640,   642,   647,   655,
-   665,   672,   676,   683,   690,   700,   707,   717,   723,   732,
-   741,   753,   760,   770,   780,   790,   798,   807,   820,   827,
-   835,   843,   851,   861,   869,   879,   897,   905,   913,   925,
-   934,   947,   956,   965,   974,   987,  1010,  1031,  1040,  1049,
-  1058,  1066,  1075,  1081,  1093,  1099,  1109,  1111,  1113,  1115,
-  1116,  1119,  1126,  1133,  1140,  1147,  1152,  1159,  1166,  1173,
-  1178,  1185,  1189,  1194,  1200,  1204,  1208,  1213,  1218,  1222,
-  1230,  1234,  1242,  1246,  1249,  1252,  1268,  1271,  1278,  1287,
-  1296,  1307,  1309,  1312,  1314,  1318,  1323,  1325,  1334,  1347,
-  1362,  1363,  1376,  1377,  1394,  1395,  1414,  1423,  1436,  1451,
-  1452,  1465,  1466,  1483,  1484,  1503,  1512,  1525,  1540,  1541,
-  1554,  1555,  1572,  1573,  1592,  1594,  1597,  1607,  1615,  1618,
-  1625,  1635,  1645,  1654,  1663,  1672,  1679,  1684,  1687,  1690,
-  1692,  1694,  1696,  1698,  1700,  1702,  1706,  1709,  1712,  1715,
-  1719,  1723,  1727,  1731,  1735,  1739,  1743,  1747,  1751,  1755,
-  1759,  1763,  1767,  1771,  1777,  1782,  1787,  1792,  1797,  1802,
-  1807,  1812,  1817,  1822,  1827,  1834,  1839,  1844,  1849,  1854,
-  1859,  1864,  1871,  1878,  1885,  1890,  1895,  1900,  1905,  1910,
-  1915,  1920,  1925,  1930,  1935,  1940,  1947,  1952,  1957,  1962,
-  1967,  1972,  1977,  1984,  1991,  1998,  2003,  2005,  2007,  2009,
-  2011,  2013,  2015,  2017,  2019,  2024,  2029,  2032,  2038,  2042,
-  2049,  2054,  2062,  2069,  2071,  2074,  2077,  2081,  2085,  2097,
-  2107,  2115,  2123,  2124,  2128,  2130,  2134,  2135,  2139,  2143,
-  2145,  2149,  2151,  2153,  2157,  2162,  2166,  2172,  2177,  2179,
-  2181,  2183,  2187,  2192,  2199,  2207,  2209,  2211,  2215,  2219,
-  2229,  2237,  2239,  2245,  2249,  2256,  2258,  2262,  2264,  2266,
-  2273,  2278,  2283,  2288,  2295,  2302
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  6
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   6269
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  183
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  69
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  368
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  1506
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   418
+
+#define YYTRANSLATE(YYX) 						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   169,     2,   179,     2,   167,     2,     2,
+     174,   175,   165,   163,   180,   164,   178,   166,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     159,     2,   160,   153,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   176,     2,   177,   173,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   181,     2,   182,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    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,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   154,   155,
+     156,   157,   158,   161,   162,   168,   170,   171,   172
 };
 
-static const short yyrhs[] = {   184,
-     0,   189,     0,     1,     6,     0,     0,   184,   185,     0,
-   186,     0,   188,     0,   187,     0,   124,     6,     0,   125,
-     6,     0,   127,     6,     0,   126,     6,     0,   128,     6,
-     0,   129,   174,   240,   180,     5,   175,     6,     0,   130,
-   174,   240,   175,     6,     0,   131,   174,     5,   180,     5,
-   180,   240,   180,   240,   180,     5,   180,     5,   180,     5,
-   175,     6,     0,     3,     7,   108,   174,     5,   180,   238,
-   175,     6,     0,     3,     7,   107,   174,     5,   180,   236,
-   180,   244,   180,   235,   180,   235,   180,   235,   180,   244,
-   180,   244,   180,   235,   175,     6,     0,     3,     7,   106,
-   174,     5,   180,   236,   180,   236,   180,   242,   180,   235,
-   180,   235,   180,   235,   180,   235,   180,   244,   180,   244,
-   180,   244,   180,   244,   180,   235,   175,     6,     0,     3,
-     7,   114,   174,     5,   180,     3,   180,     3,   180,     3,
-   180,   235,   175,     6,     0,     3,     7,   118,   174,     5,
-   180,     3,   180,   235,   175,     6,     0,     3,     7,   135,
-   174,     5,   180,     3,   180,   235,   175,     6,     0,     3,
-     7,   116,   174,     5,   180,   165,   180,   165,   180,   236,
-   180,   235,   175,     6,     0,     3,     7,   119,   174,     5,
-   180,   244,   175,     6,     0,     3,     7,   120,   174,     5,
-   180,   244,   180,     3,   180,   235,   175,     6,     0,     3,
-     7,   115,   174,     5,   180,     3,   175,     6,     0,     3,
-     7,   121,   174,     5,   180,     3,   180,   236,   175,     6,
-     0,     3,     7,   123,   174,     5,   180,     3,   180,     3,
-   180,     3,   175,     6,     0,     3,     7,   122,   174,     5,
-   180,   238,   175,     6,     0,     3,     7,   117,   174,     5,
-   180,     3,   175,     6,     0,     3,     7,    44,   174,     5,
-   180,     3,   180,     3,   175,     6,     0,     3,     7,   133,
-   174,     5,   180,   244,   175,     6,     0,     3,     7,   134,
-   174,     5,   180,   244,   180,     3,   175,     6,     0,     3,
-     7,   132,   174,     5,   180,     3,   175,     6,     0,     3,
-     7,   136,   174,     5,   180,     3,   180,   236,   175,     6,
-     0,     3,     7,   137,   174,     5,   180,     3,   180,   236,
-   180,   236,   175,     6,     0,     3,     7,   144,   174,     5,
-   180,     3,   180,   236,   180,   236,   175,     6,     0,     3,
-     7,   138,   174,     5,   180,     3,   180,   236,   175,     6,
-     0,     3,     7,   148,   174,     5,   180,     3,   180,   236,
-   180,   236,   175,     6,     0,     3,     7,   139,   174,     5,
-   180,     3,   180,   244,   180,   244,   180,   235,   180,   235,
-   175,     6,     0,     3,     7,   140,   174,     5,   180,   244,
-   175,     6,     0,     3,     7,   141,   174,   142,   180,   235,
-   180,     3,   175,     6,     0,     3,     7,   143,   174,     5,
-   180,   244,   180,   235,   175,     6,     0,     3,     7,   145,
-   174,     5,   180,     5,   180,     3,   180,     3,   175,     6,
-     0,     3,     7,   146,   174,     5,   180,     5,   180,     3,
-   175,     6,     0,     3,     7,   147,   174,     3,   180,     3,
-   175,     6,     0,     0,   189,   190,     0,   192,     0,   191,
-     0,   210,     0,   211,     0,   212,     0,   215,     0,   216,
-     0,   217,     0,   218,     0,   221,     0,   233,     0,   234,
-     0,   220,     0,   219,     0,    33,   174,     5,   175,     6,
-     0,    33,   174,     5,   180,   246,   175,     6,     0,     4,
-     5,   181,   193,   182,     6,     0,     4,     5,     4,   238,
-   181,   193,   182,     6,     0,     0,   193,   196,     0,   193,
-   200,     0,   193,   203,     0,   193,   205,     0,   193,   206,
-     0,   236,     0,   194,   180,   236,     0,   236,     0,   195,
-   180,   236,     0,     0,     0,     4,   197,   174,   194,   175,
-   198,   181,   195,   182,     6,     0,   250,     0,   199,   180,
-   250,     0,     0,    76,   174,   236,   180,   236,   180,   236,
-   175,   201,   181,   199,   182,     6,     0,   250,     0,   202,
-   180,   250,     0,     0,    77,   174,   236,   180,   236,   180,
-   236,   180,   236,   175,   204,   181,   202,   182,     6,     0,
-    78,   181,   243,   182,   181,   243,   182,     6,     0,     0,
-    79,   207,   181,   195,   182,     6,     0,     7,     0,   149,
-     0,   150,     0,   151,     0,   152,     0,   170,     0,   171,
-     0,     4,   208,   236,     6,     0,     4,   176,   236,   177,
-   208,   236,     6,     0,     4,   176,   181,   246,   182,   177,
-   208,   244,     6,     0,     4,   176,   177,     7,   244,     6,
-     0,     4,   209,     6,     0,     4,   176,   236,   177,   209,
-     6,     0,     4,   178,     4,     7,   250,     6,     0,     4,
-   176,   236,   177,   178,     4,     7,   250,     6,     0,     4,
-   178,     4,   208,   236,     6,     0,     4,   176,   236,   177,
-   178,     4,   208,   236,     6,     0,     4,   178,     4,   209,
-     6,     0,     4,   176,   236,   177,   178,     4,   209,     6,
-     0,     4,   178,    88,   178,     4,     7,   247,     6,     0,
-     4,   176,   236,   177,   178,    88,   178,     4,     7,   247,
-     6,     0,     4,   178,    89,     7,   248,     6,     0,     4,
-   176,   236,   177,   178,    89,     7,   248,     6,     0,    60,
-   174,     4,   175,   178,     4,     7,   236,     6,     0,    60,
-   174,     4,   175,   178,     4,     7,   250,     6,     0,    41,
-   174,   236,   175,     7,   238,     6,     0,    56,    41,   174,
-   236,   175,     7,   244,     6,     0,    72,    41,   244,     7,
-   181,   236,   180,   236,   180,   236,   182,     6,     0,    48,
-    49,   244,     7,   236,     6,     0,    44,   174,   236,   175,
-     7,   244,     6,     0,    46,   174,   236,   175,     7,   244,
-     6,     0,    42,   174,   236,   175,     7,   244,     6,     0,
-    42,   174,   236,   175,     7,   244,    52,   238,     6,     0,
-    43,   174,   236,   175,     7,   244,     6,     0,    43,   174,
-   236,   175,     7,   244,    52,   238,     6,     0,    50,   174,
-   236,   175,     7,   181,   236,   180,   236,   180,     5,   180,
-     5,   180,     5,   182,     6,     0,    81,   174,   236,   175,
-     7,   244,     6,     0,    82,   174,   236,   175,     7,   244,
-     6,     0,    83,   174,   236,   175,     7,   244,    87,   244,
-    84,   236,     6,     0,    44,    67,   174,   236,   175,     7,
-   244,     6,     0,    72,    44,   244,     7,   181,   236,   180,
-   236,   180,   236,   182,     6,     0,    56,    44,   174,   236,
-   175,     7,   244,     6,     0,    52,    45,   174,   236,   175,
-     7,   244,     6,     0,    53,    45,   174,   236,   175,     7,
-   244,     6,     0,    99,    45,   174,   236,   175,     7,   181,
-   236,   180,   244,   182,     6,     0,    83,    45,    85,    86,
-   174,   236,   175,     7,   242,    87,   181,   244,   180,   244,
-   182,    84,   181,   236,   180,   236,   182,     6,     0,    83,
-    45,   174,   236,   175,     7,   242,    87,   181,   244,   180,
-   244,   182,    84,   181,   236,   180,   236,   182,     6,     0,
-    45,    67,   174,   236,   175,     7,   244,     6,     0,    56,
-    45,   174,   236,   175,     7,   244,     6,     0,    55,    47,
-   174,   236,   175,     7,   244,     6,     0,    47,   174,   236,
-   175,     7,   244,     6,     0,    56,    47,   174,   236,   175,
-     7,   244,     6,     0,    62,   238,   181,   213,   182,     0,
-    61,   181,   238,   180,   238,   180,   236,   182,   181,   213,
-   182,     0,    63,   238,   181,   213,   182,     0,    64,   181,
-   238,   180,   236,   182,   181,   213,   182,     0,   215,     0,
-   214,     0,   212,     0,     0,   214,   211,     0,   214,    41,
-   181,   246,   182,     6,     0,   214,    44,   181,   246,   182,
-     6,     0,   214,    45,   181,   246,   182,     6,     0,   214,
-    47,   181,   246,   182,     6,     0,    66,   181,   214,   182,
-     0,    66,     4,   176,   236,   177,     6,     0,    74,     4,
-   176,   236,   177,     6,     0,    75,     4,   176,   236,   177,
-     6,     0,    69,   181,   214,   182,     0,    69,     4,   176,
-   236,   177,     6,     0,    69,     4,     6,     0,    69,     4,
-     4,     6,     0,    88,   247,   181,   214,   182,     0,   100,
-   250,     6,     0,   101,   250,     6,     0,   100,   181,   214,
-   182,     0,   101,   181,   214,   182,     0,     4,   250,     6,
-     0,     4,     4,   176,   236,   177,   250,     6,     0,     4,
-   236,     6,     0,    60,   174,     4,   175,   178,     4,     6,
-     0,    80,     4,     6,     0,    95,     6,     0,    38,     6,
-     0,    38,   181,   236,   180,   236,   180,   236,   180,   236,
-   180,   236,   180,   236,   182,     6,     0,    39,     6,     0,
-    90,   174,   236,     8,   236,   175,     0,    90,   174,   236,
-     8,   236,     8,   236,   175,     0,    90,     4,    91,   181,
-   236,     8,   236,   182,     0,    90,     4,    91,   181,   236,
-     8,   236,     8,   236,   182,     0,    92,     0,    98,     4,
-     0,    96,     0,    97,     4,     6,     0,    93,   174,   236,
-   175,     0,    94,     0,    65,    41,   181,   236,   180,   238,
-   182,     6,     0,    65,    41,   181,   236,   180,   238,   180,
-   238,   180,   236,   182,     6,     0,    65,    41,   181,   236,
-   180,   238,   180,   238,   180,   238,   180,   236,   182,     6,
-     0,     0,    65,    41,   181,   236,   180,   238,   182,   222,
-   181,   231,   182,     6,     0,     0,    65,    41,   181,   236,
-   180,   238,   180,   238,   180,   236,   182,   223,   181,   231,
-   182,     6,     0,     0,    65,    41,   181,   236,   180,   238,
-   180,   238,   180,   238,   180,   236,   182,   224,   181,   231,
-   182,     6,     0,    65,    44,   181,   236,   180,   238,   182,
-     6,     0,    65,    44,   181,   236,   180,   238,   180,   238,
-   180,   236,   182,     6,     0,    65,    44,   181,   236,   180,
-   238,   180,   238,   180,   238,   180,   236,   182,     6,     0,
-     0,    65,    44,   181,   236,   180,   238,   182,   225,   181,
-   231,   182,     6,     0,     0,    65,    44,   181,   236,   180,
-   238,   180,   238,   180,   236,   182,   226,   181,   231,   182,
-     6,     0,     0,    65,    44,   181,   236,   180,   238,   180,
-   238,   180,   238,   180,   236,   182,   227,   181,   231,   182,
-     6,     0,    65,    45,   181,   236,   180,   238,   182,     6,
-     0,    65,    45,   181,   236,   180,   238,   180,   238,   180,
-   236,   182,     6,     0,    65,    45,   181,   236,   180,   238,
-   180,   238,   180,   238,   180,   236,   182,     6,     0,     0,
-    65,    45,   181,   236,   180,   238,   182,   228,   181,   231,
-   182,     6,     0,     0,    65,    45,   181,   236,   180,   238,
-   180,   238,   180,   236,   182,   229,   181,   231,   182,     6,
-     0,     0,    65,    45,   181,   236,   180,   238,   180,   238,
-   180,   238,   180,   236,   182,   230,   181,   231,   182,     6,
-     0,   232,     0,   231,   232,     0,    73,   181,   244,   180,
-   244,   180,   244,   182,     6,     0,    73,   181,   244,   180,
-   244,   182,     6,     0,    68,     6,     0,    54,    44,   244,
-     7,   236,     6,     0,    54,    44,   244,     7,   236,    57,
-    59,   236,     6,     0,    54,    44,   244,     7,   236,    57,
-    58,   236,     6,     0,    54,    45,   181,   236,   182,     7,
-   244,     6,     0,    51,    45,   181,   236,   182,     7,   244,
-     6,     0,    54,    47,   181,   236,   182,     7,   244,     6,
-     0,    68,    45,   244,     7,   236,     6,     0,    68,    45,
-   244,     6,     0,    70,     6,     0,    71,     6,     0,   109,
-     0,   110,     0,   111,     0,   112,     0,   113,     0,   237,
-     0,   174,   236,   175,     0,   164,   236,     0,   163,   236,
-     0,   169,   236,     0,   236,   164,   236,     0,   236,   163,
-   236,     0,   236,   165,   236,     0,   236,   166,   236,     0,
-   236,   167,   236,     0,   236,   173,   236,     0,   236,   159,
-   236,     0,   236,   161,   236,     0,   236,   160,   236,     0,
-   236,   162,   236,     0,   236,   156,   236,     0,   236,   157,
-   236,     0,   236,   155,   236,     0,   236,   154,   236,     0,
-   236,   153,   236,     8,   236,     0,    12,   174,   236,   175,
-     0,    13,   174,   236,   175,     0,    14,   174,   236,   175,
-     0,    15,   174,   236,   175,     0,    16,   174,   236,   175,
-     0,    17,   174,   236,   175,     0,    18,   174,   236,   175,
-     0,    19,   174,   236,   175,     0,    20,   174,   236,   175,
-     0,    22,   174,   236,   175,     0,    23,   174,   236,   180,
-   236,   175,     0,    24,   174,   236,   175,     0,    25,   174,
-   236,   175,     0,    26,   174,   236,   175,     0,    27,   174,
-   236,   175,     0,    28,   174,   236,   175,     0,    29,   174,
-   236,   175,     0,    30,   174,   236,   180,   236,   175,     0,
-    31,   174,   236,   180,   236,   175,     0,    32,   174,   236,
-   180,   236,   175,     0,    21,   174,   236,   175,     0,    12,
-   176,   236,   177,     0,    13,   176,   236,   177,     0,    14,
-   176,   236,   177,     0,    15,   176,   236,   177,     0,    16,
-   176,   236,   177,     0,    17,   176,   236,   177,     0,    18,
-   176,   236,   177,     0,    19,   176,   236,   177,     0,    20,
-   176,   236,   177,     0,    22,   176,   236,   177,     0,    23,
-   176,   236,   180,   236,   177,     0,    24,   176,   236,   177,
-     0,    25,   176,   236,   177,     0,    26,   176,   236,   177,
-     0,    27,   176,   236,   177,     0,    28,   176,   236,   177,
-     0,    29,   176,   236,   177,     0,    30,   176,   236,   180,
-   236,   177,     0,    31,   176,   236,   180,   236,   177,     0,
-    32,   176,   236,   180,   236,   177,     0,    21,   176,   236,
-   177,     0,     3,     0,     9,     0,    10,     0,    11,     0,
-   103,     0,   104,     0,   105,     0,     4,     0,     4,   176,
-   236,   177,     0,   179,     4,   176,   177,     0,     4,   209,
-     0,     4,   176,   236,   177,   209,     0,     4,   178,     4,
-     0,     4,   176,   236,   177,   178,     4,     0,     4,   178,
-     4,   209,     0,     4,   176,   236,   177,   178,     4,   209,
-     0,   102,   174,     5,   180,   236,   175,     0,   239,     0,
-   164,   238,     0,   163,   238,     0,   238,   164,   238,     0,
-   238,   163,   238,     0,   181,   236,   180,   236,   180,   236,
-   180,   236,   180,   236,   182,     0,   181,   236,   180,   236,
-   180,   236,   180,   236,   182,     0,   181,   236,   180,   236,
-   180,   236,   182,     0,   174,   236,   180,   236,   180,   236,
-   175,     0,     0,   174,   241,   175,     0,     5,     0,   241,
-   180,     5,     0,     0,   181,   243,   182,     0,   174,   243,
-   175,     0,   244,     0,   243,   180,   244,     0,   236,     0,
-   245,     0,   181,   246,   182,     0,   164,   181,   246,   182,
-     0,   236,     8,   236,     0,   236,     8,   236,     8,   236,
-     0,    41,   181,   236,   182,     0,   212,     0,   215,     0,
-   221,     0,     4,   176,   177,     0,   164,     4,   176,   177,
-     0,     4,   176,   181,   246,   182,   177,     0,   164,     4,
-   176,   181,   246,   182,   177,     0,   236,     0,   245,     0,
-   246,   180,   236,     0,   246,   180,   245,     0,   181,   236,
-   180,   236,   180,   236,   180,   236,   182,     0,   181,   236,
-   180,   236,   180,   236,   182,     0,     4,     0,     4,   178,
-    88,   178,     4,     0,   181,   249,   182,     0,     4,   176,
-   236,   177,   178,    89,     0,   247,     0,   249,   180,   247,
-     0,     5,     0,    40,     0,    35,   174,   250,   180,   250,
-   175,     0,    36,   174,   250,   175,     0,    37,   174,   250,
-   175,     0,    34,   174,   250,   175,     0,    34,   174,   250,
-   180,   246,   175,     0,    34,   174,     4,   178,     4,   175,
-     0,    34,   174,     4,   176,   236,   177,   178,     4,   175,
-     0
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short yyprhs[] =
+{
+       0,     0,     3,     5,     7,    10,    11,    14,    16,    18,
+      20,    23,    26,    29,    32,    35,    43,    49,    67,    77,
+     101,   133,   149,   161,   173,   189,   199,   213,   223,   235,
+     249,   259,   269,   281,   291,   303,   313,   325,   339,   353,
+     365,   379,   397,   407,   419,   431,   445,   457,   467,   468,
+     471,   473,   475,   477,   479,   481,   483,   485,   487,   489,
+     491,   493,   495,   497,   499,   505,   513,   520,   529,   530,
+     533,   536,   539,   542,   545,   547,   551,   553,   557,   558,
+     559,   570,   572,   576,   577,   591,   593,   597,   598,   614,
+     623,   624,   631,   633,   635,   637,   639,   641,   643,   645,
+     650,   658,   668,   675,   679,   686,   693,   703,   710,   720,
+     726,   735,   744,   756,   763,   773,   783,   793,   801,   810,
+     823,   830,   838,   846,   854,   864,   872,   882,   900,   908,
+     916,   928,   937,   950,   959,   968,   977,   990,  1013,  1034,
+    1043,  1052,  1061,  1069,  1078,  1084,  1096,  1102,  1112,  1114,
+    1116,  1118,  1119,  1122,  1129,  1136,  1143,  1150,  1155,  1162,
+    1169,  1176,  1181,  1188,  1192,  1197,  1203,  1207,  1211,  1216,
+    1221,  1225,  1233,  1237,  1245,  1249,  1252,  1255,  1271,  1274,
+    1281,  1290,  1299,  1310,  1312,  1315,  1317,  1321,  1326,  1328,
+    1337,  1350,  1365,  1366,  1379,  1380,  1397,  1398,  1417,  1426,
+    1439,  1454,  1455,  1468,  1469,  1486,  1487,  1506,  1515,  1528,
+    1543,  1544,  1557,  1558,  1575,  1576,  1595,  1597,  1600,  1610,
+    1618,  1621,  1628,  1638,  1648,  1657,  1667,  1676,  1685,  1692,
+    1697,  1700,  1703,  1705,  1707,  1709,  1711,  1713,  1715,  1719,
+    1722,  1725,  1728,  1732,  1736,  1740,  1744,  1748,  1752,  1756,
+    1760,  1764,  1768,  1772,  1776,  1780,  1784,  1790,  1795,  1800,
+    1805,  1810,  1815,  1820,  1825,  1830,  1835,  1840,  1847,  1852,
+    1857,  1862,  1867,  1872,  1877,  1884,  1891,  1898,  1903,  1908,
+    1913,  1918,  1923,  1928,  1933,  1938,  1943,  1948,  1953,  1960,
+    1965,  1970,  1975,  1980,  1985,  1990,  1997,  2004,  2011,  2016,
+    2018,  2020,  2022,  2024,  2026,  2028,  2030,  2032,  2037,  2042,
+    2045,  2051,  2055,  2062,  2067,  2075,  2082,  2084,  2087,  2090,
+    2094,  2098,  2110,  2120,  2128,  2136,  2137,  2141,  2143,  2147,
+    2148,  2152,  2156,  2158,  2162,  2164,  2166,  2170,  2175,  2179,
+    2185,  2190,  2192,  2194,  2196,  2200,  2205,  2212,  2220,  2222,
+    2224,  2228,  2232,  2242,  2250,  2252,  2258,  2262,  2269,  2271,
+    2275,  2277,  2279,  2286,  2291,  2296,  2301,  2308,  2315
 };
 
-#endif
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short yyrhs[] =
+{
+     184,     0,    -1,   185,    -1,   190,    -1,     1,     6,    -1,
+      -1,   185,   186,    -1,   187,    -1,   189,    -1,   188,    -1,
+     124,     6,    -1,   125,     6,    -1,   127,     6,    -1,   126,
+       6,    -1,   128,     6,    -1,   129,   174,   241,   180,     5,
+     175,     6,    -1,   130,   174,   241,   175,     6,    -1,   131,
+     174,     5,   180,     5,   180,   241,   180,   241,   180,     5,
+     180,     5,   180,     5,   175,     6,    -1,     3,     7,   108,
+     174,     5,   180,   239,   175,     6,    -1,     3,     7,   107,
+     174,     5,   180,   237,   180,   245,   180,   236,   180,   236,
+     180,   236,   180,   245,   180,   245,   180,   236,   175,     6,
+      -1,     3,     7,   106,   174,     5,   180,   237,   180,   237,
+     180,   243,   180,   236,   180,   236,   180,   236,   180,   236,
+     180,   245,   180,   245,   180,   245,   180,   245,   180,   236,
+     175,     6,    -1,     3,     7,   114,   174,     5,   180,     3,
+     180,     3,   180,     3,   180,   236,   175,     6,    -1,     3,
+       7,   118,   174,     5,   180,     3,   180,   236,   175,     6,
+      -1,     3,     7,   135,   174,     5,   180,     3,   180,   236,
+     175,     6,    -1,     3,     7,   116,   174,     5,   180,   165,
+     180,   165,   180,   237,   180,   236,   175,     6,    -1,     3,
+       7,   119,   174,     5,   180,   245,   175,     6,    -1,     3,
+       7,   120,   174,     5,   180,   245,   180,     3,   180,   236,
+     175,     6,    -1,     3,     7,   115,   174,     5,   180,     3,
+     175,     6,    -1,     3,     7,   121,   174,     5,   180,     3,
+     180,   237,   175,     6,    -1,     3,     7,   123,   174,     5,
+     180,     3,   180,     3,   180,     3,   175,     6,    -1,     3,
+       7,   122,   174,     5,   180,   239,   175,     6,    -1,     3,
+       7,   117,   174,     5,   180,     3,   175,     6,    -1,     3,
+       7,    44,   174,     5,   180,     3,   180,     3,   175,     6,
+      -1,     3,     7,   133,   174,     5,   180,   245,   175,     6,
+      -1,     3,     7,   134,   174,     5,   180,   245,   180,     3,
+     175,     6,    -1,     3,     7,   132,   174,     5,   180,     3,
+     175,     6,    -1,     3,     7,   136,   174,     5,   180,     3,
+     180,   237,   175,     6,    -1,     3,     7,   137,   174,     5,
+     180,     3,   180,   237,   180,   237,   175,     6,    -1,     3,
+       7,   144,   174,     5,   180,     3,   180,   237,   180,   237,
+     175,     6,    -1,     3,     7,   138,   174,     5,   180,     3,
+     180,   237,   175,     6,    -1,     3,     7,   148,   174,     5,
+     180,     3,   180,   237,   180,   237,   175,     6,    -1,     3,
+       7,   139,   174,     5,   180,     3,   180,   245,   180,   245,
+     180,   236,   180,   236,   175,     6,    -1,     3,     7,   140,
+     174,     5,   180,   245,   175,     6,    -1,     3,     7,   141,
+     174,   142,   180,   236,   180,     3,   175,     6,    -1,     3,
+       7,   143,   174,     5,   180,   245,   180,   236,   175,     6,
+      -1,     3,     7,   145,   174,     5,   180,     5,   180,     3,
+     180,     3,   175,     6,    -1,     3,     7,   146,   174,     5,
+     180,     5,   180,     3,   175,     6,    -1,     3,     7,   147,
+     174,     3,   180,     3,   175,     6,    -1,    -1,   190,   191,
+      -1,   193,    -1,   192,    -1,   211,    -1,   212,    -1,   213,
+      -1,   216,    -1,   217,    -1,   218,    -1,   219,    -1,   222,
+      -1,   234,    -1,   235,    -1,   221,    -1,   220,    -1,    33,
+     174,     5,   175,     6,    -1,    33,   174,     5,   180,   247,
+     175,     6,    -1,     4,     5,   181,   194,   182,     6,    -1,
+       4,     5,     4,   239,   181,   194,   182,     6,    -1,    -1,
+     194,   197,    -1,   194,   201,    -1,   194,   204,    -1,   194,
+     206,    -1,   194,   207,    -1,   237,    -1,   195,   180,   237,
+      -1,   237,    -1,   196,   180,   237,    -1,    -1,    -1,     4,
+     198,   174,   195,   175,   199,   181,   196,   182,     6,    -1,
+     251,    -1,   200,   180,   251,    -1,    -1,    76,   174,   237,
+     180,   237,   180,   237,   175,   202,   181,   200,   182,     6,
+      -1,   251,    -1,   203,   180,   251,    -1,    -1,    77,   174,
+     237,   180,   237,   180,   237,   180,   237,   175,   205,   181,
+     203,   182,     6,    -1,    78,   181,   244,   182,   181,   244,
+     182,     6,    -1,    -1,    79,   208,   181,   196,   182,     6,
+      -1,     7,    -1,   152,    -1,   151,    -1,   150,    -1,   149,
+      -1,   172,    -1,   171,    -1,     4,   209,   237,     6,    -1,
+       4,   176,   237,   177,   209,   237,     6,    -1,     4,   176,
+     181,   247,   182,   177,   209,   245,     6,    -1,     4,   176,
+     177,     7,   245,     6,    -1,     4,   210,     6,    -1,     4,
+     176,   237,   177,   210,     6,    -1,     4,   178,     4,     7,
+     251,     6,    -1,     4,   176,   237,   177,   178,     4,     7,
+     251,     6,    -1,     4,   178,     4,   209,   237,     6,    -1,
+       4,   176,   237,   177,   178,     4,   209,   237,     6,    -1,
+       4,   178,     4,   210,     6,    -1,     4,   176,   237,   177,
+     178,     4,   210,     6,    -1,     4,   178,    88,   178,     4,
+       7,   248,     6,    -1,     4,   176,   237,   177,   178,    88,
+     178,     4,     7,   248,     6,    -1,     4,   178,    89,     7,
+     249,     6,    -1,     4,   176,   237,   177,   178,    89,     7,
+     249,     6,    -1,    60,   174,     4,   175,   178,     4,     7,
+     237,     6,    -1,    60,   174,     4,   175,   178,     4,     7,
+     251,     6,    -1,    41,   174,   237,   175,     7,   239,     6,
+      -1,    56,    41,   174,   237,   175,     7,   245,     6,    -1,
+      72,    41,   245,     7,   181,   237,   180,   237,   180,   237,
+     182,     6,    -1,    48,    49,   245,     7,   237,     6,    -1,
+      44,   174,   237,   175,     7,   245,     6,    -1,    46,   174,
+     237,   175,     7,   245,     6,    -1,    42,   174,   237,   175,
+       7,   245,     6,    -1,    42,   174,   237,   175,     7,   245,
+      52,   239,     6,    -1,    43,   174,   237,   175,     7,   245,
+       6,    -1,    43,   174,   237,   175,     7,   245,    52,   239,
+       6,    -1,    50,   174,   237,   175,     7,   181,   237,   180,
+     237,   180,     5,   180,     5,   180,     5,   182,     6,    -1,
+      81,   174,   237,   175,     7,   245,     6,    -1,    82,   174,
+     237,   175,     7,   245,     6,    -1,    83,   174,   237,   175,
+       7,   245,    87,   245,    84,   237,     6,    -1,    44,    67,
+     174,   237,   175,     7,   245,     6,    -1,    72,    44,   245,
+       7,   181,   237,   180,   237,   180,   237,   182,     6,    -1,
+      56,    44,   174,   237,   175,     7,   245,     6,    -1,    52,
+      45,   174,   237,   175,     7,   245,     6,    -1,    53,    45,
+     174,   237,   175,     7,   245,     6,    -1,    99,    45,   174,
+     237,   175,     7,   181,   237,   180,   245,   182,     6,    -1,
+      83,    45,    85,    86,   174,   237,   175,     7,   243,    87,
+     181,   245,   180,   245,   182,    84,   181,   237,   180,   237,
+     182,     6,    -1,    83,    45,   174,   237,   175,     7,   243,
+      87,   181,   245,   180,   245,   182,    84,   181,   237,   180,
+     237,   182,     6,    -1,    45,    67,   174,   237,   175,     7,
+     245,     6,    -1,    56,    45,   174,   237,   175,     7,   245,
+       6,    -1,    55,    47,   174,   237,   175,     7,   245,     6,
+      -1,    47,   174,   237,   175,     7,   245,     6,    -1,    56,
+      47,   174,   237,   175,     7,   245,     6,    -1,    62,   239,
+     181,   214,   182,    -1,    61,   181,   239,   180,   239,   180,
+     237,   182,   181,   214,   182,    -1,    63,   239,   181,   214,
+     182,    -1,    64,   181,   239,   180,   237,   182,   181,   214,
+     182,    -1,   216,    -1,   215,    -1,   213,    -1,    -1,   215,
+     212,    -1,   215,    41,   181,   247,   182,     6,    -1,   215,
+      44,   181,   247,   182,     6,    -1,   215,    45,   181,   247,
+     182,     6,    -1,   215,    47,   181,   247,   182,     6,    -1,
+      66,   181,   215,   182,    -1,    66,     4,   176,   237,   177,
+       6,    -1,    74,     4,   176,   237,   177,     6,    -1,    75,
+       4,   176,   237,   177,     6,    -1,    69,   181,   215,   182,
+      -1,    69,     4,   176,   237,   177,     6,    -1,    69,     4,
+       6,    -1,    69,     4,     4,     6,    -1,    88,   248,   181,
+     215,   182,    -1,   100,   251,     6,    -1,   101,   251,     6,
+      -1,   100,   181,   215,   182,    -1,   101,   181,   215,   182,
+      -1,     4,   251,     6,    -1,     4,     4,   176,   237,   177,
+     251,     6,    -1,     4,   237,     6,    -1,    60,   174,     4,
+     175,   178,     4,     6,    -1,    80,     4,     6,    -1,    95,
+       6,    -1,    38,     6,    -1,    38,   181,   237,   180,   237,
+     180,   237,   180,   237,   180,   237,   180,   237,   182,     6,
+      -1,    39,     6,    -1,    90,   174,   237,     8,   237,   175,
+      -1,    90,   174,   237,     8,   237,     8,   237,   175,    -1,
+      90,     4,    91,   181,   237,     8,   237,   182,    -1,    90,
+       4,    91,   181,   237,     8,   237,     8,   237,   182,    -1,
+      92,    -1,    98,     4,    -1,    96,    -1,    97,     4,     6,
+      -1,    93,   174,   237,   175,    -1,    94,    -1,    65,    41,
+     181,   237,   180,   239,   182,     6,    -1,    65,    41,   181,
+     237,   180,   239,   180,   239,   180,   237,   182,     6,    -1,
+      65,    41,   181,   237,   180,   239,   180,   239,   180,   239,
+     180,   237,   182,     6,    -1,    -1,    65,    41,   181,   237,
+     180,   239,   182,   223,   181,   232,   182,     6,    -1,    -1,
+      65,    41,   181,   237,   180,   239,   180,   239,   180,   237,
+     182,   224,   181,   232,   182,     6,    -1,    -1,    65,    41,
+     181,   237,   180,   239,   180,   239,   180,   239,   180,   237,
+     182,   225,   181,   232,   182,     6,    -1,    65,    44,   181,
+     237,   180,   239,   182,     6,    -1,    65,    44,   181,   237,
+     180,   239,   180,   239,   180,   237,   182,     6,    -1,    65,
+      44,   181,   237,   180,   239,   180,   239,   180,   239,   180,
+     237,   182,     6,    -1,    -1,    65,    44,   181,   237,   180,
+     239,   182,   226,   181,   232,   182,     6,    -1,    -1,    65,
+      44,   181,   237,   180,   239,   180,   239,   180,   237,   182,
+     227,   181,   232,   182,     6,    -1,    -1,    65,    44,   181,
+     237,   180,   239,   180,   239,   180,   239,   180,   237,   182,
+     228,   181,   232,   182,     6,    -1,    65,    45,   181,   237,
+     180,   239,   182,     6,    -1,    65,    45,   181,   237,   180,
+     239,   180,   239,   180,   237,   182,     6,    -1,    65,    45,
+     181,   237,   180,   239,   180,   239,   180,   239,   180,   237,
+     182,     6,    -1,    -1,    65,    45,   181,   237,   180,   239,
+     182,   229,   181,   232,   182,     6,    -1,    -1,    65,    45,
+     181,   237,   180,   239,   180,   239,   180,   237,   182,   230,
+     181,   232,   182,     6,    -1,    -1,    65,    45,   181,   237,
+     180,   239,   180,   239,   180,   239,   180,   237,   182,   231,
+     181,   232,   182,     6,    -1,   233,    -1,   232,   233,    -1,
+      73,   181,   245,   180,   245,   180,   245,   182,     6,    -1,
+      73,   181,   245,   180,   245,   182,     6,    -1,    68,     6,
+      -1,    54,    44,   245,     7,   237,     6,    -1,    54,    44,
+     245,     7,   237,    57,    59,   237,     6,    -1,    54,    44,
+     245,     7,   237,    57,    58,   237,     6,    -1,    54,    45,
+     181,   237,   182,     7,   245,     6,    -1,    54,    45,   181,
+     237,   182,     7,   245,     4,     6,    -1,    51,    45,   181,
+     237,   182,     7,   245,     6,    -1,    54,    47,   181,   237,
+     182,     7,   245,     6,    -1,    68,    45,   245,     7,   237,
+       6,    -1,    68,    45,   245,     6,    -1,    70,     6,    -1,
+      71,     6,    -1,   109,    -1,   110,    -1,   111,    -1,   112,
+      -1,   113,    -1,   238,    -1,   174,   237,   175,    -1,   164,
+     237,    -1,   163,   237,    -1,   169,   237,    -1,   237,   164,
+     237,    -1,   237,   163,   237,    -1,   237,   165,   237,    -1,
+     237,   166,   237,    -1,   237,   167,   237,    -1,   237,   173,
+     237,    -1,   237,   159,   237,    -1,   237,   160,   237,    -1,
+     237,   162,   237,    -1,   237,   161,   237,    -1,   237,   158,
+     237,    -1,   237,   157,   237,    -1,   237,   155,   237,    -1,
+     237,   154,   237,    -1,   237,   153,   237,     8,   237,    -1,
+      12,   174,   237,   175,    -1,    13,   174,   237,   175,    -1,
+      14,   174,   237,   175,    -1,    15,   174,   237,   175,    -1,
+      16,   174,   237,   175,    -1,    17,   174,   237,   175,    -1,
+      18,   174,   237,   175,    -1,    19,   174,   237,   175,    -1,
+      20,   174,   237,   175,    -1,    22,   174,   237,   175,    -1,
+      23,   174,   237,   180,   237,   175,    -1,    24,   174,   237,
+     175,    -1,    25,   174,   237,   175,    -1,    26,   174,   237,
+     175,    -1,    27,   174,   237,   175,    -1,    28,   174,   237,
+     175,    -1,    29,   174,   237,   175,    -1,    30,   174,   237,
+     180,   237,   175,    -1,    31,   174,   237,   180,   237,   175,
+      -1,    32,   174,   237,   180,   237,   175,    -1,    21,   174,
+     237,   175,    -1,    12,   176,   237,   177,    -1,    13,   176,
+     237,   177,    -1,    14,   176,   237,   177,    -1,    15,   176,
+     237,   177,    -1,    16,   176,   237,   177,    -1,    17,   176,
+     237,   177,    -1,    18,   176,   237,   177,    -1,    19,   176,
+     237,   177,    -1,    20,   176,   237,   177,    -1,    22,   176,
+     237,   177,    -1,    23,   176,   237,   180,   237,   177,    -1,
+      24,   176,   237,   177,    -1,    25,   176,   237,   177,    -1,
+      26,   176,   237,   177,    -1,    27,   176,   237,   177,    -1,
+      28,   176,   237,   177,    -1,    29,   176,   237,   177,    -1,
+      30,   176,   237,   180,   237,   177,    -1,    31,   176,   237,
+     180,   237,   177,    -1,    32,   176,   237,   180,   237,   177,
+      -1,    21,   176,   237,   177,    -1,     3,    -1,     9,    -1,
+      10,    -1,    11,    -1,   103,    -1,   104,    -1,   105,    -1,
+       4,    -1,     4,   176,   237,   177,    -1,   179,     4,   176,
+     177,    -1,     4,   210,    -1,     4,   176,   237,   177,   210,
+      -1,     4,   178,     4,    -1,     4,   176,   237,   177,   178,
+       4,    -1,     4,   178,     4,   210,    -1,     4,   176,   237,
+     177,   178,     4,   210,    -1,   102,   174,     5,   180,   237,
+     175,    -1,   240,    -1,   164,   239,    -1,   163,   239,    -1,
+     239,   164,   239,    -1,   239,   163,   239,    -1,   181,   237,
+     180,   237,   180,   237,   180,   237,   180,   237,   182,    -1,
+     181,   237,   180,   237,   180,   237,   180,   237,   182,    -1,
+     181,   237,   180,   237,   180,   237,   182,    -1,   174,   237,
+     180,   237,   180,   237,   175,    -1,    -1,   174,   242,   175,
+      -1,     5,    -1,   242,   180,     5,    -1,    -1,   181,   244,
+     182,    -1,   174,   244,   175,    -1,   245,    -1,   244,   180,
+     245,    -1,   237,    -1,   246,    -1,   181,   247,   182,    -1,
+     164,   181,   247,   182,    -1,   237,     8,   237,    -1,   237,
+       8,   237,     8,   237,    -1,    41,   181,   237,   182,    -1,
+     213,    -1,   216,    -1,   222,    -1,     4,   176,   177,    -1,
+     164,     4,   176,   177,    -1,     4,   176,   181,   247,   182,
+     177,    -1,   164,     4,   176,   181,   247,   182,   177,    -1,
+     237,    -1,   246,    -1,   247,   180,   237,    -1,   247,   180,
+     246,    -1,   181,   237,   180,   237,   180,   237,   180,   237,
+     182,    -1,   181,   237,   180,   237,   180,   237,   182,    -1,
+       4,    -1,     4,   178,    88,   178,     4,    -1,   181,   250,
+     182,    -1,     4,   176,   237,   177,   178,    89,    -1,   248,
+      -1,   250,   180,   248,    -1,     5,    -1,    40,    -1,    35,
+     174,   251,   180,   251,   175,    -1,    36,   174,   251,   175,
+      -1,    37,   174,   251,   175,    -1,    34,   174,   251,   175,
+      -1,    34,   174,   251,   180,   247,   175,    -1,    34,   174,
+       4,   178,     4,   175,    -1,    34,   174,     4,   176,   237,
+     177,   178,     4,   175,    -1
+};
 
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   157,   159,   160,   170,   172,   175,   177,   178,   181,   187,
-   192,   193,   194,   197,   201,   204,   210,   215,   221,   229,
-   234,   238,   244,   249,   253,   258,   262,   265,   270,   274,
-   278,   282,   287,   291,   294,   298,   302,   306,   310,   314,
-   318,   321,   325,   328,   332,   335,   342,   344,   347,   349,
-   350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
-   360,   361,   364,   370,   387,   395,   404,   412,   413,   414,
-   415,   416,   419,   422,   426,   429,   433,   624,   642,   652,
-   658,   665,   673,   679,   685,   692,   700,   706,   714,   719,
-   726,   728,   729,   730,   731,   734,   736,   739,   774,   813,
-   867,   884,   895,   914,   928,   945,   971,   998,  1012,  1029,
-  1043,  1060,  1080,  1103,  1113,  1128,  1148,  1164,  1183,  1202,
-  1220,  1238,  1256,  1282,  1300,  1326,  1346,  1370,  1394,  1420,
-  1437,  1455,  1474,  1493,  1532,  1557,  1576,  1595,  1611,  1631,
-  1648,  1665,  1685,  1691,  1696,  1701,  1708,  1710,  1711,  1714,
-  1719,  1723,  1739,  1755,  1771,  1791,  1806,  1812,  1818,  1829,
-  1839,  1849,  1863,  1881,  1895,  1904,  1910,  1921,  1934,  1979,
-  1994,  2010,  2020,  2042,  2046,  2050,  2054,  2065,  2082,  2098,
-  2124,  2151,  2183,  2190,  2195,  2201,  2205,  2213,  2232,  2248,
-  2264,  2269,  2285,  2290,  2306,  2311,  2329,  2352,  2375,  2398,
-  2403,  2426,  2431,  2454,  2459,  2485,  2508,  2531,  2554,  2559,
-  2582,  2588,  2611,  2617,  2642,  2646,  2651,  2678,  2702,  2710,
-  2729,  2747,  2765,  2793,  2820,  2847,  2861,  2879,  2884,  2893,
-  2895,  2896,  2897,  2898,  2901,  2903,  2904,  2905,  2906,  2907,
-  2908,  2909,  2910,  2917,  2918,  2919,  2920,  2921,  2922,  2923,
-  2924,  2925,  2926,  2927,  2928,  2929,  2930,  2931,  2932,  2933,
-  2934,  2935,  2936,  2937,  2938,  2939,  2940,  2941,  2942,  2943,
-  2944,  2945,  2946,  2947,  2948,  2950,  2951,  2952,  2953,  2954,
-  2955,  2956,  2957,  2958,  2959,  2960,  2961,  2962,  2963,  2964,
-  2965,  2966,  2967,  2968,  2969,  2970,  2975,  2980,  2981,  2982,
-  2983,  2984,  2985,  2989,  3002,  3022,  3036,  3049,  3072,  3090,
-  3108,  3126,  3144,  3151,  3156,  3160,  3164,  3168,  3174,  3179,
-  3183,  3187,  3193,  3197,  3202,  3206,  3211,  3215,  3219,  3225,
-  3231,  3238,  3244,  3248,  3252,  3263,  3270,  3281,  3301,  3311,
-  3321,  3333,  3350,  3369,  3393,  3421,  3427,  3431,  3435,  3447,
-  3452,  3464,  3471,  3492,  3497,  3511,  3517,  3523,  3528,  3536,
-  3544,  3558,  3572,  3576,  3595,  3617
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short yyrline[] =
+{
+       0,   158,   158,   159,   160,   170,   172,   176,   177,   178,
+     182,   187,   192,   193,   194,   198,   201,   204,   211,   215,
+     221,   229,   234,   238,   244,   249,   253,   258,   262,   265,
+     270,   274,   278,   282,   287,   291,   294,   298,   302,   306,
+     310,   314,   318,   321,   325,   328,   332,   335,   342,   344,
+     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
+     358,   359,   360,   361,   365,   370,   388,   395,   406,   412,
+     413,   414,   415,   416,   420,   422,   427,   429,   435,   625,
+     434,   653,   658,   667,   666,   680,   685,   694,   693,   707,
+     716,   715,   727,   728,   729,   730,   731,   735,   736,   743,
+     774,   813,   867,   884,   895,   914,   928,   945,   971,   998,
+    1012,  1029,  1043,  1060,  1080,  1103,  1113,  1132,  1148,  1164,
+    1183,  1202,  1220,  1238,  1256,  1282,  1300,  1326,  1346,  1370,
+    1394,  1420,  1437,  1455,  1474,  1493,  1532,  1557,  1576,  1595,
+    1611,  1631,  1648,  1665,  1686,  1691,  1696,  1701,  1709,  1710,
+    1711,  1716,  1719,  1723,  1739,  1755,  1771,  1792,  1806,  1812,
+    1818,  1830,  1839,  1849,  1863,  1882,  1896,  1904,  1910,  1921,
+    1935,  1979,  1994,  2010,  2020,  2042,  2046,  2050,  2054,  2067,
+    2082,  2098,  2124,  2151,  2183,  2190,  2195,  2201,  2205,  2216,
+    2232,  2248,  2265,  2264,  2286,  2285,  2307,  2306,  2329,  2352,
+    2375,  2399,  2398,  2427,  2426,  2455,  2454,  2485,  2508,  2531,
+    2555,  2554,  2583,  2582,  2612,  2611,  2643,  2646,  2652,  2678,
+    2702,  2711,  2729,  2747,  2765,  2794,  2829,  2856,  2883,  2897,
+    2916,  2920,  2930,  2931,  2932,  2933,  2934,  2938,  2939,  2940,
+    2941,  2942,  2943,  2944,  2945,  2946,  2953,  2954,  2955,  2956,
+    2957,  2958,  2959,  2960,  2961,  2962,  2963,  2964,  2965,  2966,
+    2967,  2968,  2969,  2970,  2971,  2972,  2973,  2974,  2975,  2976,
+    2977,  2978,  2979,  2980,  2981,  2982,  2983,  2984,  2986,  2987,
+    2988,  2989,  2990,  2991,  2992,  2993,  2994,  2995,  2996,  2997,
+    2998,  2999,  3000,  3001,  3002,  3003,  3004,  3005,  3006,  3015,
+    3016,  3017,  3018,  3019,  3020,  3021,  3025,  3038,  3058,  3072,
+    3085,  3108,  3126,  3144,  3162,  3180,  3188,  3192,  3196,  3200,
+    3204,  3211,  3215,  3219,  3223,  3231,  3233,  3239,  3242,  3249,
+    3251,  3255,  3262,  3267,  3275,  3280,  3284,  3288,  3300,  3306,
+    3317,  3337,  3347,  3357,  3369,  3386,  3405,  3429,  3458,  3463,
+    3467,  3471,  3484,  3488,  3500,  3507,  3529,  3533,  3548,  3553,
+    3560,  3564,  3572,  3580,  3594,  3608,  3612,  3631,  3653
 };
 #endif
 
-
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","tDOUBLE",
-"tSTRING","tBIGSTR","tEND","tAFFECT","tDOTS","tPi","tMPI_Rank","tMPI_Size","tExp",
-"tLog","tLog10","tSqrt","tSin","tAsin","tCos","tAcos","tTan","tRand","tAtan",
-"tAtan2","tSinh","tCosh","tTanh","tFabs","tFloor","tCeil","tFmod","tModulo",
-"tHypot","tPrintf","tSprintf","tStrCat","tStrPrefix","tStrRelative","tBoundingBox",
-"tDraw","tToday","tPoint","tCircle","tEllipse","tLine","tSurface","tSpline",
-"tVolume","tCharacteristic","tLength","tParametric","tElliptic","tPlane","tRuled",
-"tTransfinite","tComplex","tPhysical","tUsing","tBump","tProgression","tPlugin",
-"tRotate","tTranslate","tSymmetry","tDilate","tExtrude","tDuplicata","tLoop",
-"tRecombine","tDelete","tCoherence","tIntersect","tAttractor","tLayers","tAlias",
-"tAliasWithOptions","tText2D","tText3D","tInterpolationScheme","tTime","tCombine",
-"tBSpline","tBezier","tNurbs","tOrder","tWith","tBounds","tKnots","tColor","tColorTable",
-"tFor","tIn","tEndFor","tIf","tEndIf","tExit","tReturn","tCall","tFunction",
-"tTrimmed","tShow","tHide","tGetValue","tGMSH_MAJOR_VERSION","tGMSH_MINOR_VERSION",
-"tGMSH_PATCH_VERSION","tB_SPLINE_SURFACE_WITH_KNOTS","tB_SPLINE_CURVE_WITH_KNOTS",
-"tCARTESIAN_POINT","tTRUE","tFALSE","tUNSPECIFIED","tU","tV","tEDGE_CURVE","tVERTEX_POINT",
-"tORIENTED_EDGE","tPLANE","tFACE_OUTER_BOUND","tEDGE_LOOP","tADVANCED_FACE",
-"tVECTOR","tDIRECTION","tAXIS2_PLACEMENT_3D","tISO","tENDISO","tENDSEC","tDATA",
-"tHEADER","tFILE_DESCRIPTION","tFILE_SCHEMA","tFILE_NAME","tMANIFOLD_SOLID_BREP",
-"tCLOSED_SHELL","tADVANCED_BREP_SHAPE_REPRESENTATION","tFACE_BOUND","tCYLINDRICAL_SURFACE",
-"tCONICAL_SURFACE","tCIRCLE","tTRIMMED_CURVE","tGEOMETRIC_SET","tCOMPOSITE_CURVE_SEGMENT",
-"tCONTINUOUS","tCOMPOSITE_CURVE","tTOROIDAL_SURFACE","tPRODUCT_DEFINITION","tPRODUCT_DEFINITION_SHAPE",
-"tSHAPE_DEFINITION_REPRESENTATION","tELLIPSE","tAFFECTPLUS","tAFFECTMINUS","tAFFECTTIMES",
-"tAFFECTDIVIDE","'?'","tOR","tAND","tEQUAL","tNOTEQUAL","tAPPROXEQUAL","'<'",
-"tLESSOREQUAL","'>'","tGREATEROREQUAL","'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT",
-"'!'","tPLUSPLUS","tMINUSMINUS","UNARYPREC","'^'","'('","')'","'['","']'","'.'",
-"'#'","','","'{'","'}'","All","StepFormatItems","StepFormatItem","StepSpecial",
-"StepHeaderItem","StepDataItem","GeoFormatItems","GeoFormatItem","Printf","View",
-"Views","ElementCoords","ElementValues","Element","@1","@2","Text2DValues","Text2D",
-"@3","Text3DValues","Text3D","@4","InterpolationMatrix","Time","@5","NumericAffectation",
-"NumericIncrement","Affectation","Shape","Transform","MultipleShape","ListOfShapes",
-"Duplicata","Delete","Colorify","Visibility","Command","Loop","Extrude","@6",
-"@7","@8","@9","@10","@11","@12","@13","@14","ExtrudeParameters","ExtrudeParameter",
-"Transfinite","Coherence","BoolExpr","FExpr","FExpr_Single","VExpr","VExpr_Single",
-"ListOfStrings","RecursiveListOfStrings","ListOfListOfDouble","RecursiveListOfListOfDouble",
-"ListOfDouble","FExpr_Multi","RecursiveListOfDouble","ColorExpr","ListOfColor",
-"RecursiveListOfColor","StringExpr", NULL
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "tDOUBLE", "tSTRING", "tBIGSTR", "tEND", 
+  "tAFFECT", "tDOTS", "tPi", "tMPI_Rank", "tMPI_Size", "tExp", "tLog", 
+  "tLog10", "tSqrt", "tSin", "tAsin", "tCos", "tAcos", "tTan", "tRand", 
+  "tAtan", "tAtan2", "tSinh", "tCosh", "tTanh", "tFabs", "tFloor", 
+  "tCeil", "tFmod", "tModulo", "tHypot", "tPrintf", "tSprintf", "tStrCat", 
+  "tStrPrefix", "tStrRelative", "tBoundingBox", "tDraw", "tToday", 
+  "tPoint", "tCircle", "tEllipse", "tLine", "tSurface", "tSpline", 
+  "tVolume", "tCharacteristic", "tLength", "tParametric", "tElliptic", 
+  "tPlane", "tRuled", "tTransfinite", "tComplex", "tPhysical", "tUsing", 
+  "tBump", "tProgression", "tPlugin", "tRotate", "tTranslate", 
+  "tSymmetry", "tDilate", "tExtrude", "tDuplicata", "tLoop", "tRecombine", 
+  "tDelete", "tCoherence", "tIntersect", "tAttractor", "tLayers", 
+  "tAlias", "tAliasWithOptions", "tText2D", "tText3D", 
+  "tInterpolationScheme", "tTime", "tCombine", "tBSpline", "tBezier", 
+  "tNurbs", "tOrder", "tWith", "tBounds", "tKnots", "tColor", 
+  "tColorTable", "tFor", "tIn", "tEndFor", "tIf", "tEndIf", "tExit", 
+  "tReturn", "tCall", "tFunction", "tTrimmed", "tShow", "tHide", 
+  "tGetValue", "tGMSH_MAJOR_VERSION", "tGMSH_MINOR_VERSION", 
+  "tGMSH_PATCH_VERSION", "tB_SPLINE_SURFACE_WITH_KNOTS", 
+  "tB_SPLINE_CURVE_WITH_KNOTS", "tCARTESIAN_POINT", "tTRUE", "tFALSE", 
+  "tUNSPECIFIED", "tU", "tV", "tEDGE_CURVE", "tVERTEX_POINT", 
+  "tORIENTED_EDGE", "tPLANE", "tFACE_OUTER_BOUND", "tEDGE_LOOP", 
+  "tADVANCED_FACE", "tVECTOR", "tDIRECTION", "tAXIS2_PLACEMENT_3D", 
+  "tISO", "tENDISO", "tENDSEC", "tDATA", "tHEADER", "tFILE_DESCRIPTION", 
+  "tFILE_SCHEMA", "tFILE_NAME", "tMANIFOLD_SOLID_BREP", "tCLOSED_SHELL", 
+  "tADVANCED_BREP_SHAPE_REPRESENTATION", "tFACE_BOUND", 
+  "tCYLINDRICAL_SURFACE", "tCONICAL_SURFACE", "tCIRCLE", "tTRIMMED_CURVE", 
+  "tGEOMETRIC_SET", "tCOMPOSITE_CURVE_SEGMENT", "tCONTINUOUS", 
+  "tCOMPOSITE_CURVE", "tTOROIDAL_SURFACE", "tPRODUCT_DEFINITION", 
+  "tPRODUCT_DEFINITION_SHAPE", "tSHAPE_DEFINITION_REPRESENTATION", 
+  "tELLIPSE", "tAFFECTDIVIDE", "tAFFECTTIMES", "tAFFECTMINUS", 
+  "tAFFECTPLUS", "'?'", "tOR", "tAND", "tAPPROXEQUAL", "tNOTEQUAL", 
+  "tEQUAL", "'<'", "'>'", "tGREATEROREQUAL", "tLESSOREQUAL", "'+'", "'-'", 
+  "'*'", "'/'", "'%'", "tCROSSPRODUCT", "'!'", "UNARYPREC", "tMINUSMINUS", 
+  "tPLUSPLUS", "'^'", "'('", "')'", "'['", "']'", "'.'", "'#'", "','", 
+  "'{'", "'}'", "$accept", "All", "StepFormatItems", "StepFormatItem", 
+  "StepSpecial", "StepHeaderItem", "StepDataItem", "GeoFormatItems", 
+  "GeoFormatItem", "Printf", "View", "Views", "ElementCoords", 
+  "ElementValues", "Element", "@1", "@2", "Text2DValues", "Text2D", "@3", 
+  "Text3DValues", "Text3D", "@4", "InterpolationMatrix", "Time", "@5", 
+  "NumericAffectation", "NumericIncrement", "Affectation", "Shape", 
+  "Transform", "MultipleShape", "ListOfShapes", "Duplicata", "Delete", 
+  "Colorify", "Visibility", "Command", "Loop", "Extrude", "@6", "@7", 
+  "@8", "@9", "@10", "@11", "@12", "@13", "@14", "ExtrudeParameters", 
+  "ExtrudeParameter", "Transfinite", "Coherence", "BoolExpr", "FExpr", 
+  "FExpr_Single", "VExpr", "VExpr_Single", "ListOfStrings", 
+  "RecursiveListOfStrings", "ListOfListOfDouble", 
+  "RecursiveListOfListOfDouble", "ListOfDouble", "FExpr_Multi", 
+  "RecursiveListOfDouble", "ColorExpr", "ListOfColor", 
+  "RecursiveListOfColor", "StringExpr", 0
 };
 #endif
 
-static const short yyr1[] = {     0,
-   183,   183,   183,   184,   184,   185,   185,   185,   186,   186,
-   186,   186,   186,   187,   187,   187,   188,   188,   188,   188,
-   188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
-   188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
-   188,   188,   188,   188,   188,   188,   189,   189,   190,   190,
-   190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-   190,   190,   191,   191,   192,   192,   193,   193,   193,   193,
-   193,   193,   194,   194,   195,   195,   197,   198,   196,   199,
-   199,   201,   200,   202,   202,   204,   203,   205,   207,   206,
-   208,   208,   208,   208,   208,   209,   209,   210,   210,   210,
-   210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
-   210,   210,   210,   210,   210,   211,   211,   211,   211,   211,
-   211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
-   211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
-   211,   211,   212,   212,   212,   212,   213,   213,   213,   214,
-   214,   214,   214,   214,   214,   215,   215,   215,   215,   216,
-   216,   216,   216,   217,   218,   218,   218,   218,   219,   219,
-   219,   219,   219,   219,   219,   219,   219,   220,   220,   220,
-   220,   220,   220,   220,   220,   220,   220,   221,   221,   221,
-   222,   221,   223,   221,   224,   221,   221,   221,   221,   225,
-   221,   226,   221,   227,   221,   221,   221,   221,   228,   221,
-   229,   221,   230,   221,   231,   231,   232,   232,   232,   233,
-   233,   233,   233,   233,   233,   233,   233,   234,   234,   235,
-   235,   235,   235,   235,   236,   236,   236,   236,   236,   236,
-   236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
-   236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
-   236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
-   236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
-   236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
-   236,   236,   236,   236,   236,   236,   237,   237,   237,   237,
-   237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
-   237,   237,   237,   238,   238,   238,   238,   238,   239,   239,
-   239,   239,   240,   240,   241,   241,   242,   242,   242,   243,
-   243,   244,   244,   244,   244,   245,   245,   245,   245,   245,
-   245,   245,   245,   245,   245,   246,   246,   246,   246,   247,
-   247,   247,   247,   248,   248,   249,   249,   250,   250,   250,
-   250,   250,   250,   250,   250,   250
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
+     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
+     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+     405,   406,   407,    63,   408,   409,   410,   411,   412,    60,
+      62,   413,   414,    43,    45,    42,    47,    37,   415,    33,
+     416,   417,   418,    94,    40,    41,    91,    93,    46,    35,
+      44,   123,   125
 };
-
-static const short yyr2[] = {     0,
-     1,     1,     2,     0,     2,     1,     1,     1,     2,     2,
-     2,     2,     2,     7,     5,    17,     9,    23,    31,    15,
-    11,    11,    15,     9,    13,     9,    11,    13,     9,     9,
-    11,     9,    11,     9,    11,    13,    13,    11,    13,    17,
-     9,    11,    11,    13,    11,     9,     0,     2,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     5,     7,     6,     8,     0,     2,     2,     2,
-     2,     2,     1,     3,     1,     3,     0,     0,    10,     1,
-     3,     0,    13,     1,     3,     0,    15,     8,     0,     6,
-     1,     1,     1,     1,     1,     1,     1,     4,     7,     9,
-     6,     3,     6,     6,     9,     6,     9,     5,     8,     8,
-    11,     6,     9,     9,     9,     7,     8,    12,     6,     7,
-     7,     7,     9,     7,     9,    17,     7,     7,    11,     8,
-    12,     8,     8,     8,    12,    22,    20,     8,     8,     8,
-     7,     8,     5,    11,     5,     9,     1,     1,     1,     0,
-     2,     6,     6,     6,     6,     4,     6,     6,     6,     4,
-     6,     3,     4,     5,     3,     3,     4,     4,     3,     7,
-     3,     7,     3,     2,     2,    15,     2,     6,     8,     8,
-    10,     1,     2,     1,     3,     4,     1,     8,    12,    14,
-     0,    12,     0,    16,     0,    18,     8,    12,    14,     0,
-    12,     0,    16,     0,    18,     8,    12,    14,     0,    12,
-     0,    16,     0,    18,     1,     2,     9,     7,     2,     6,
-     9,     9,     8,     8,     8,     6,     4,     2,     2,     1,
-     1,     1,     1,     1,     1,     3,     2,     2,     2,     3,
-     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     3,     3,     3,     5,     4,     4,     4,     4,     4,     4,
-     4,     4,     4,     4,     6,     4,     4,     4,     4,     4,
-     4,     6,     6,     6,     4,     4,     4,     4,     4,     4,
-     4,     4,     4,     4,     4,     6,     4,     4,     4,     4,
-     4,     4,     6,     6,     6,     4,     1,     1,     1,     1,
-     1,     1,     1,     1,     4,     4,     2,     5,     3,     6,
-     4,     7,     6,     1,     2,     2,     3,     3,    11,     9,
-     7,     7,     0,     3,     1,     3,     0,     3,     3,     1,
-     3,     1,     1,     3,     4,     3,     5,     4,     1,     1,
-     1,     3,     4,     6,     7,     1,     1,     3,     3,     9,
-     7,     1,     5,     3,     6,     1,     3,     1,     1,     6,
-     4,     4,     4,     6,     6,     9
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,   183,   184,   184,   184,   185,   185,   186,   186,   186,
+     187,   187,   187,   187,   187,   188,   188,   188,   189,   189,
+     189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
+     189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
+     189,   189,   189,   189,   189,   189,   189,   189,   190,   190,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   192,   192,   193,   193,   194,   194,
+     194,   194,   194,   194,   195,   195,   196,   196,   198,   199,
+     197,   200,   200,   202,   201,   203,   203,   205,   204,   206,
+     208,   207,   209,   209,   209,   209,   209,   210,   210,   211,
+     211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
+     211,   211,   211,   211,   211,   211,   211,   212,   212,   212,
+     212,   212,   212,   212,   212,   212,   212,   212,   212,   212,
+     212,   212,   212,   212,   212,   212,   212,   212,   212,   212,
+     212,   212,   212,   212,   213,   213,   213,   213,   214,   214,
+     214,   215,   215,   215,   215,   215,   215,   216,   216,   216,
+     216,   217,   217,   217,   217,   218,   219,   219,   219,   219,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   222,
+     222,   222,   223,   222,   224,   222,   225,   222,   222,   222,
+     222,   226,   222,   227,   222,   228,   222,   222,   222,   222,
+     229,   222,   230,   222,   231,   222,   232,   232,   233,   233,
+     233,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     235,   235,   236,   236,   236,   236,   236,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   238,
+     238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
+     238,   238,   238,   238,   238,   238,   239,   239,   239,   239,
+     239,   240,   240,   240,   240,   241,   241,   242,   242,   243,
+     243,   243,   244,   244,   245,   245,   245,   245,   246,   246,
+     246,   246,   246,   246,   246,   246,   246,   246,   247,   247,
+     247,   247,   248,   248,   248,   248,   249,   249,   250,   250,
+     251,   251,   251,   251,   251,   251,   251,   251,   251
 };
 
-static const short yydefact[] = {     0,
-     0,     1,     2,     3,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     5,     6,     8,     7,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   182,     0,   187,     0,
-   184,     0,     0,     0,     0,     0,    48,    50,    49,    51,
-    52,    53,    54,    55,    56,    57,    62,    61,    58,    59,
-    60,     0,     9,    10,    12,    11,    13,   323,   323,     0,
-   297,   304,   358,    91,   298,   299,   300,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   359,     0,   301,   302,   303,    92,    93,    94,
-    95,     0,     0,     0,    96,    97,     0,     0,     0,     0,
-     0,     0,     0,   235,     0,     0,   175,     0,   177,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   314,     0,     0,
-     0,     0,     0,     0,   150,     0,     0,   150,   228,   229,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   352,
-     0,     0,     0,     0,     0,   174,     0,   183,     0,   358,
-   150,     0,   150,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   307,     0,    67,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   304,   238,   237,   239,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   102,   171,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   169,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   304,     0,     0,     0,   339,   340,   341,   332,     0,
-   333,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   316,   315,     0,     0,     0,
-     0,   150,   150,     0,     0,     0,     0,     0,     0,     0,
-     0,   162,     0,     0,     0,     0,     0,     0,   173,     0,
-     0,     0,     0,     0,     0,     0,   150,     0,     0,     0,
-   185,     0,     0,   165,     0,   166,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   325,     0,     0,     0,
-     0,     0,   309,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   236,     0,     0,   346,   347,     0,
-     0,    91,     0,     0,     0,     0,     0,    98,     0,   253,
-   252,   250,   251,   246,   248,   247,   249,   241,   240,   242,
-   243,   244,   245,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   304,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   318,   317,   149,
-     0,   148,   147,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   156,   151,   227,     0,   163,     0,   160,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   186,     0,   167,   168,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   324,     0,
-     0,    15,     0,   305,   311,    67,    77,     0,     0,     0,
-    89,     0,    68,    69,    70,    71,    72,   255,   276,   256,
-   277,   257,   278,   258,   279,   259,   280,   260,   281,   261,
-   282,   262,   283,   263,   284,   275,   296,   264,   285,     0,
-     0,   266,   287,   267,   288,   268,   289,   269,   290,   270,
-   291,   271,   292,     0,     0,     0,     0,     0,     0,     0,
-     0,   363,     0,     0,   361,   362,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   108,     0,     0,     0,
-     0,   306,     0,    63,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   342,     0,     0,     0,     0,   334,
-   336,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   143,   145,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   164,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   326,     0,   323,     0,
-   308,     0,     0,     0,     0,     0,     0,     0,    65,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   305,   101,   348,   349,     0,     0,     0,     0,
-     0,   103,   104,   106,     0,     0,   356,     0,   112,   254,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   338,   343,     0,   335,     0,   119,     0,     0,     0,
-     0,   220,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   157,     0,
-     0,     0,     0,   226,   161,     0,     0,   158,   159,     0,
-     0,     0,   327,     0,   353,     0,     0,     0,   178,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   230,   231,   232,   233,   234,     0,     0,
-     0,     0,     0,     0,     0,    14,     0,   310,   170,     0,
-     0,     0,     0,     0,   330,     0,   265,   286,   272,   293,
-   273,   294,   274,   295,     0,   365,   364,   360,   313,     0,
-    91,     0,     0,     0,     0,    99,     0,     0,     0,   354,
-    64,     0,   116,   122,     0,   124,     0,     0,   120,     0,
-   121,   141,     0,     0,   337,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   172,     0,
-     0,     0,     0,   150,     0,   191,     0,   200,     0,   209,
-     0,     0,     0,     0,     0,     0,   127,   128,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   323,   312,    66,
-     0,    73,     0,     0,     0,     0,     0,    75,     0,     0,
-     0,     0,   109,     0,     0,   110,     0,   357,     0,     0,
-     0,   130,   138,   344,     0,     0,   224,   133,   134,     0,
-     0,   223,   225,   140,   117,   132,   139,   142,     0,     0,
-     0,   322,     0,   321,     0,     0,   188,     0,     0,   197,
-     0,     0,   206,     0,   152,   153,   154,   155,     0,     0,
-   327,     0,     0,     0,     0,     0,   351,     0,   180,   179,
-     0,     0,     0,     0,    17,     0,    26,     0,    30,     0,
-    24,     0,     0,    29,     0,    34,    32,     0,     0,     0,
-     0,     0,     0,    41,     0,     0,     0,     0,     0,    46,
-     0,     0,    78,     0,     0,     0,   331,     0,     0,     0,
-     0,   100,   105,   107,     0,   113,     0,     0,   123,   125,
-   345,     0,   222,   221,   114,   115,   150,     0,   146,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   329,   328,
-     0,     0,     0,     0,     0,     0,   327,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    74,     0,
-     0,     0,    76,    90,   366,     0,   355,     0,     0,     0,
-     0,   320,     0,     0,     0,     0,     0,     0,     0,     0,
-   215,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   350,   181,     0,    31,     0,     0,     0,     0,
-    21,     0,    27,     0,    33,    22,    35,     0,    38,     0,
-    42,    43,     0,     0,    45,     0,     0,     0,     0,     0,
-     0,   111,     0,     0,   144,     0,     0,   193,     0,   219,
-     0,     0,   216,   202,     0,     0,   211,     0,     0,     0,
-     0,     0,     0,   129,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    82,     0,
-    88,     0,     0,   319,   189,     0,     0,     0,   192,   198,
-     0,     0,   201,   207,     0,     0,   210,   118,   131,     0,
-     0,   135,     0,     0,     0,     0,    25,    28,    36,     0,
-    37,    44,    39,     0,     0,     0,     0,     0,     0,     0,
-   195,     0,     0,   204,     0,   213,     0,     0,     0,     0,
-     0,     0,     0,     0,    79,     0,    86,     0,     0,     0,
-   190,     0,     0,     0,   199,     0,     0,   208,     0,     0,
-     0,     0,     0,    20,    23,     0,     0,     0,    80,     0,
-   176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   194,     0,     0,   218,   203,     0,   212,     0,     0,     0,
-     0,     0,    40,    16,    81,    83,     0,    84,   126,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   196,
-   217,   205,   214,     0,     0,     0,     0,    85,    87,     0,
-     0,     0,     0,     0,   137,     0,     0,     0,     0,     0,
-   136,     0,    18,     0,     0,     0,     0,     0,     0,     0,
-    19,     0,     0,     0
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     1,     1,     2,     0,     2,     1,     1,     1,
+       2,     2,     2,     2,     2,     7,     5,    17,     9,    23,
+      31,    15,    11,    11,    15,     9,    13,     9,    11,    13,
+       9,     9,    11,     9,    11,     9,    11,    13,    13,    11,
+      13,    17,     9,    11,    11,    13,    11,     9,     0,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     5,     7,     6,     8,     0,     2,
+       2,     2,     2,     2,     1,     3,     1,     3,     0,     0,
+      10,     1,     3,     0,    13,     1,     3,     0,    15,     8,
+       0,     6,     1,     1,     1,     1,     1,     1,     1,     4,
+       7,     9,     6,     3,     6,     6,     9,     6,     9,     5,
+       8,     8,    11,     6,     9,     9,     9,     7,     8,    12,
+       6,     7,     7,     7,     9,     7,     9,    17,     7,     7,
+      11,     8,    12,     8,     8,     8,    12,    22,    20,     8,
+       8,     8,     7,     8,     5,    11,     5,     9,     1,     1,
+       1,     0,     2,     6,     6,     6,     6,     4,     6,     6,
+       6,     4,     6,     3,     4,     5,     3,     3,     4,     4,
+       3,     7,     3,     7,     3,     2,     2,    15,     2,     6,
+       8,     8,    10,     1,     2,     1,     3,     4,     1,     8,
+      12,    14,     0,    12,     0,    16,     0,    18,     8,    12,
+      14,     0,    12,     0,    16,     0,    18,     8,    12,    14,
+       0,    12,     0,    16,     0,    18,     1,     2,     9,     7,
+       2,     6,     9,     9,     8,     9,     8,     8,     6,     4,
+       2,     2,     1,     1,     1,     1,     1,     1,     3,     2,
+       2,     2,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     5,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     6,     4,     4,
+       4,     4,     4,     4,     6,     6,     6,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     6,     4,
+       4,     4,     4,     4,     4,     6,     6,     6,     4,     1,
+       1,     1,     1,     1,     1,     1,     1,     4,     4,     2,
+       5,     3,     6,     4,     7,     6,     1,     2,     2,     3,
+       3,    11,     9,     7,     7,     0,     3,     1,     3,     0,
+       3,     3,     1,     3,     1,     1,     3,     4,     3,     5,
+       4,     1,     1,     1,     3,     4,     6,     7,     1,     1,
+       3,     3,     9,     7,     1,     5,     3,     6,     1,     3,
+       1,     1,     6,     4,     4,     4,     6,     6,     9
 };
 
-static const short yydefgoto[] = {  1502,
-     2,    14,    15,    16,    17,     3,    67,    68,    69,   445,
-  1071,  1077,   643,   814,  1238,  1418,   644,  1376,  1457,   645,
-  1420,   646,   647,   818,   141,   251,    70,   575,   346,   561,
-   562,   347,    74,    75,    76,    77,    78,   348,  1118,  1346,
-  1402,  1121,  1351,  1406,  1124,  1355,  1409,  1260,  1261,    80,
-    81,   939,   349,   144,   366,   178,   246,   438,  1032,   954,
-   955,   351,   500,   202,   711,   848,   145
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned short yydefact[] =
+{
+       0,     0,     0,     2,     3,     4,     1,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     6,     7,     9,     8,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   183,
+       0,   188,     0,   185,     0,     0,     0,     0,     0,    49,
+      51,    50,    52,    53,    54,    55,    56,    57,    58,    63,
+      62,    59,    60,    61,     0,    10,    11,    13,    12,    14,
+     325,   325,     0,   299,   306,   360,    92,   300,   301,   302,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   361,     0,   303,   304,   305,
+      96,    95,    94,    93,     0,     0,     0,    98,    97,     0,
+       0,     0,     0,     0,     0,     0,   237,     0,     0,   176,
+       0,   178,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     316,     0,     0,     0,     0,     0,     0,   151,     0,     0,
+     151,   230,   231,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   354,     0,     0,     0,     0,     0,   175,     0,
+     184,     0,   360,   151,     0,   151,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   309,     0,    68,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   306,   240,   239,   241,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   103,   172,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   170,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   306,     0,     0,     0,   341,   342,
+     343,   334,     0,   335,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   318,   317,
+       0,     0,     0,     0,   151,   151,     0,     0,     0,     0,
+       0,     0,     0,     0,   163,     0,     0,     0,     0,     0,
+       0,   174,     0,     0,     0,     0,     0,     0,     0,   151,
+       0,     0,     0,   186,     0,     0,   166,     0,   167,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   327,
+       0,     0,     0,     0,     0,   311,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   238,     0,     0,
+     348,   349,     0,     0,    92,     0,     0,     0,     0,     0,
+      99,     0,   255,   254,   253,   252,   248,   249,   251,   250,
+     243,   242,   244,   245,   246,   247,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   306,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     320,   319,   150,     0,   149,   148,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   157,   152,   229,     0,
+     164,     0,   161,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   187,     0,   168,
+     169,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   326,     0,     0,    16,     0,   307,   313,    68,    78,
+       0,     0,     0,    90,     0,    69,    70,    71,    72,    73,
+     257,   278,   258,   279,   259,   280,   260,   281,   261,   282,
+     262,   283,   263,   284,   264,   285,   265,   286,   277,   298,
+     266,   287,     0,     0,   268,   289,   269,   290,   270,   291,
+     271,   292,   272,   293,   273,   294,     0,     0,     0,     0,
+       0,     0,     0,     0,   365,     0,     0,   363,   364,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   109,
+       0,     0,     0,     0,   308,     0,    64,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   344,     0,     0,
+       0,     0,   336,   338,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   144,   146,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   165,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   328,
+       0,   325,     0,   310,     0,     0,     0,     0,     0,     0,
+       0,    66,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   307,   102,   350,   351,     0,
+       0,     0,     0,     0,   104,   105,   107,     0,     0,   358,
+       0,   113,   256,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   340,   345,     0,   337,     0,   120,
+       0,     0,     0,     0,   221,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   158,     0,     0,     0,     0,   228,   162,     0,     0,
+     159,   160,     0,     0,     0,   329,     0,   355,     0,     0,
+       0,   179,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   232,   233,   234,   235,
+     236,     0,     0,     0,     0,     0,     0,     0,    15,     0,
+     312,   171,     0,     0,     0,     0,     0,   332,     0,   267,
+     288,   274,   295,   275,   296,   276,   297,     0,   367,   366,
+     362,   315,     0,    92,     0,     0,     0,     0,   100,     0,
+       0,     0,   356,    65,     0,   117,   123,     0,   125,     0,
+       0,   121,     0,   122,   142,     0,     0,   339,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   173,     0,     0,     0,     0,   151,     0,   192,     0,
+     201,     0,   210,     0,     0,     0,     0,     0,     0,   128,
+     129,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     325,   314,    67,     0,    74,     0,     0,     0,     0,     0,
+      76,     0,     0,     0,     0,   110,     0,     0,   111,     0,
+     359,     0,     0,     0,   131,   139,   346,     0,     0,   226,
+     134,   135,     0,     0,     0,   224,   227,   141,   118,   133,
+     140,   143,     0,     0,     0,   324,     0,   323,     0,     0,
+     189,     0,     0,   198,     0,     0,   207,     0,   153,   154,
+     155,   156,     0,     0,   329,     0,     0,     0,     0,     0,
+     353,     0,   181,   180,     0,     0,     0,     0,    18,     0,
+      27,     0,    31,     0,    25,     0,     0,    30,     0,    35,
+      33,     0,     0,     0,     0,     0,     0,    42,     0,     0,
+       0,     0,     0,    47,     0,     0,    79,     0,     0,     0,
+     333,     0,     0,     0,     0,   101,   106,   108,     0,   114,
+       0,     0,   124,   126,   347,     0,   223,   222,   225,   115,
+     116,   151,     0,   147,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   331,   330,     0,     0,     0,     0,     0,
+       0,   329,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    75,     0,     0,     0,    77,    91,   368,
+       0,   357,     0,     0,     0,     0,   322,     0,     0,     0,
+       0,     0,     0,     0,     0,   216,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   352,   182,     0,
+      32,     0,     0,     0,     0,    22,     0,    28,     0,    34,
+      23,    36,     0,    39,     0,    43,    44,     0,     0,    46,
+       0,     0,     0,     0,     0,     0,   112,     0,     0,   145,
+       0,     0,   194,     0,   220,     0,     0,   217,   203,     0,
+       0,   212,     0,     0,     0,     0,     0,     0,   130,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    83,     0,    89,     0,     0,   321,   190,
+       0,     0,     0,   193,   199,     0,     0,   202,   208,     0,
+       0,   211,   119,   132,     0,     0,   136,     0,     0,     0,
+       0,    26,    29,    37,     0,    38,    45,    40,     0,     0,
+       0,     0,     0,     0,     0,   196,     0,     0,   205,     0,
+     214,     0,     0,     0,     0,     0,     0,     0,     0,    80,
+       0,    87,     0,     0,     0,   191,     0,     0,     0,   200,
+       0,     0,   209,     0,     0,     0,     0,     0,    21,    24,
+       0,     0,     0,    81,     0,   177,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   195,     0,     0,   219,   204,
+       0,   213,     0,     0,     0,     0,     0,    41,    17,    82,
+      84,     0,    85,   127,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   197,   218,   206,   215,     0,     0,
+       0,     0,    86,    88,     0,     0,     0,     0,     0,   138,
+       0,     0,     0,     0,     0,   137,     0,    19,     0,     0,
+       0,     0,     0,     0,     0,    20
 };
 
-static const short yypact[] = {  2486,
-    36,    25,  2635,-32768,    38,    65,    91,   104,   134,   142,
-   -92,    -7,    29,-32768,-32768,-32768,-32768,  1901,    54,    15,
-   206,   118,   144,   150,   -31,   151,   154,   164,   318,   212,
-   347,   364,   372,   124,   353,   392,   256,   262,   -46,   -46,
-   294,   492,    10,   433,    11,   482,   510,   242,   502,   526,
-   540,   386,   389,   -28,    14,    30,-32768,   394,-32768,   565,
--32768,   580,   596,   561,     3,    19,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  2515,-32768,-32768,-32768,-32768,-32768,   443,   443,   620,
--32768,   274,    16,-32768,-32768,-32768,-32768,   175,   179,   192,
-   232,   310,   345,   355,   374,   398,   420,   421,   444,   475,
-   486,   500,   522,   523,   528,   529,   533,   539,   459,   463,
-   468,   472,-32768,   476,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  2146,  2146,  2146,-32768,-32768,  2146,   900,    76,   657,
-  2146,   658,   610,-32768,   659,   668,-32768,  2146,-32768,  2146,
-  2146,  2146,   506,  2146,   507,  2146,  2146,  1454,  2146,   496,
-   544,   562,  1454,   545,   554,   568,   569,   585,   588,   594,
-   680,   -46,   -46,   -46,  2146,  2146,  -100,-32768,   -94,   -46,
-   601,   603,   604,   525,-32768,  1454,    23,-32768,-32768,-32768,
-  1454,  1454,   611,   612,   780,  2146,  2146,   -53,  2146,   613,
-  2146,   608,   699,  2146,  2146,-32768,   786,-32768,   619,-32768,
--32768,   788,-32768,   789,   625,   626,   632,   642,   643,   644,
-   646,   649,   650,   651,   652,   655,   656,   661,   662,   664,
-   665,   666,   667,   669,   670,   671,   673,   675,   677,   678,
-   679,   681,   682,   683,   791,   653,   647,   674,  2146,   827,
--32768,   -46,-32768,  2146,  2146,  2146,  2146,  2146,  2146,  2146,
-  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,
-  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,
-  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,
-  2146,  2146,  2146,  2146,  2146,   367,   376,   376,   376,   853,
-   456,   686,   686,   686,  4901,   825,  2078,  4151,   375,   684,
-   854,   687,   648,-32768,-32768,  2146,  2146,  2146,  2146,  2146,
-  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,  2146,
--32768,  -108,  3205,  4924,  4947,  4970,  2146,  4993,  2146,  5016,
-  5039,   465,   691,  1665,  2078,-32768,-32768,-32768,  1618,   875,
--32768,  5062,  2146,  2146,  2146,   876,  2146,  2146,  2146,  2146,
-  2146,  2146,  2146,   685,   -86,-32768,-32768,  3227,  3249,   -46,
-   -46,   503,   503,   -38,  2146,  2146,  2146,  2146,  2247,   370,
-   878,-32768,  2146,  2320,   879,   884,  2146,  2146,-32768,  5085,
-  5108,   799,  2146,  5131,   804,  3271,-32768,   712,  1726,  5154,
--32768,  2146,  2341,-32768,  2389,-32768,   889,   890,   891,   892,
-   893,   895,   896,   897,   901,   903,   932,   934,   935,   936,
-   939,   940,   942,   943,   944,   945,   946,   948,   950,   763,
-   951,   952,   953,   954,   957,   956,-32768,   -77,   958,   959,
-   980,  4176,   283,   133,     7,  5177,  4201,  5200,  4226,  5223,
-  4251,  5246,  4276,  5269,  4301,  5292,  4326,  5315,  4351,  5338,
-  4376,  5361,  4401,  5384,  4426,  5407,  4451,  3293,  3315,  5430,
-  4476,  5453,  4501,  5476,  4526,  5499,  4551,  5522,  4576,  5545,
-  4601,  3337,  3359,  3381,  3403,  3425,  3447,   373,   145,   762,
-   812,   814,   784,  2146,-32768,  1454,  2181,  1618,-32768,     8,
-   271,   376,  2146,   982,   986,    21,   816,-32768,  1864,  1337,
-  1014,   527,   527,   336,   336,   336,   336,   292,   292,   686,
-   686,   686,   686,   985,  2078,  2146,   987,   988,   989,  5568,
-   990,  5591,   991,   992,  1242,  2146,   469,  2078,   442,  2146,
-  2146,   993,  2697,  5614,  5637,  2146,  2721,  2745,  5660,  5683,
-  5706,  5729,  5752,   823,   -46,  2146,  2146,-32768,-32768,-32768,
-   824,  2696,-32768,   828,  2146,  3469,  3491,  3513,  4626,  -116,
-   -37,   -19,   -73,-32768,-32768,-32768,  2146,-32768,  4651,-32768,
-   830,   831,  4676,  4701,  1002,  1006,   840,  5775,  1010,   844,
-  2146,  2410,  2146,  2146,-32768,  5798,-32768,-32768,   838,   843,
-   845,   846,   847,   848,   849,   850,   852,   855,   856,   857,
-   861,   862,   863,   864,   866,   867,   868,   870,   871,   872,
-   873,   874,   877,   880,   881,   882,   885,   886,-32768,  1019,
-   858,-32768,   887,    39,-32768,-32768,-32768,   860,   894,   899,
--32768,  1052,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  2146,
-  2146,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,  2146,  2146,  2146,  2146,  2146,  2146,  2146,
-  1055,-32768,  2078,   376,-32768,-32768,  2146,  4726,  1064,  2078,
-   898,   141,  2146,  1066,  1067,   714,-32768,  1069,   906,    14,
-  1077,-32768,  2146,-32768,   210,  3535,   -46,  1454,  1454,  1078,
-  1454,  1079,  1454,  1454,-32768,  2078,  2769,  1634,   534,-32768,
-  2061,   813,   907,  1080,  1082,  1098,   426,  1099,  1100,  1101,
-  1102,  1104,  1105,  1106,  1110,   153,  3557,  3579,-32768,-32768,
-  2793,   -46,   -46,   -46,  1109,  2078,  2078,  2078,  2078,   937,
-  1111,  2146,  2146,  1113,  1115,  1454,  1454,  2146,  1116,  1454,
-  1112,  3601,-32768,  2105,   448,  1117,  1081,  2146,  2146,   -46,
-  1119,  1122,   961,  1124,  1130,  1454,  1454,  1140,   -46,  1141,
-  1142,  1454,  1454,  1143,  1144,  1146,  1147,  1148,  1454,   546,
-  1454,  1149,  1150,  1152,  1151,  1155,-32768,  1153,   443,  1156,
--32768,  1157,    12,   979,  2146,  2146,  1454,   981,-32768,  5821,
-  4751,  5844,  4776,  5867,  4801,  5890,  4826,  4851,   997,   302,
-  1008,  5913,   326,-32768,  1618,-32768,    24,   391,  1007,  1158,
-   975,-32768,-32768,-32768,    14,  2146,-32768,   537,-32768,  1592,
-  1160,  2146,    51,    43,    44,  1454,  1162,  1454,  1184,  1185,
-   541,-32768,-32768,  2078,-32768,  2146,-32768,  2146,  1454,  1454,
-  1454,-32768,   498,  1454,  1454,  1454,  1454,  1454,  1454,  1454,
-   622,  2146,  2146,  2146,   983,   -71,   -58,   -51,-32768,   542,
-   547,   548,   551,-32768,-32768,  3623,  3645,-32768,-32768,  1186,
-  1187,  5936,   114,  1108,-32768,  2146,  2146,  2146,-32768,  1015,
-  1020,  3667,  3689,   159,  1025,  1031,  1027,  1033,  1029,  1036,
-  1032,  1034,   265,  1037,  1038,  1041,  1039,  1040,  1044,  1045,
-  1046,  1047,  1053,-32768,-32768,-32768,-32768,-32768,  1049,  1051,
-  1054,  1060,  1062,  1057,  1068,-32768,  1070,   283,-32768,  1215,
-  2146,  3711,  3733,   552,-32768,  2146,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  1071,-32768,-32768,-32768,-32768,  1454,
-   376,  2146,  1241,  1271,    21,-32768,  1270,  4876,    14,-32768,
--32768,  3755,-32768,-32768,   -46,-32768,   -46,  1272,-32768,  1273,
--32768,-32768,  1118,   566,  1592,  3777,  1275,  1276,  1277,  2146,
-  2146,  1279,  1282,  1283,  1286,  1287,  1288,  1290,-32768,  1954,
-  2817,  5959,  2600,   503,   -46,  1292,   -46,  1293,   -46,  1295,
-  1296,  1297,  1298,  1299,  2146,  2146,-32768,-32768,  1301,  1454,
-  1454,  1190,  1454,  2637,   307,  5982,  2146,  1306,  2146,  1454,
-  1304,  1308,  1309,  1161,  1310,   546,  1311,  1315,  2146,  1314,
-  1320,  1319,  1321,  1325,   546,  2146,  2146,  2146,  1454,  1323,
-  1327,   546,  2146,  1328,  1330,  1329,  2146,   443,-32768,-32768,
-   315,  1592,  2146,  2146,  1454,  1133,   567,  1592,  1332,  1331,
-  1333,  1198,-32768,  1334,  1336,-32768,  1165,-32768,  2146,    60,
-    62,-32768,-32768,-32768,  1163,  2146,-32768,-32768,-32768,  1278,
-  1377,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1409,  1342,
-  1168,-32768,  2146,-32768,  1174,   166,-32768,  1169,   168,-32768,
-  1188,   200,-32768,  1189,-32768,-32768,-32768,-32768,  3799,  3821,
-   114,   335,   571,  1191,  1250,  2146,-32768,  2146,-32768,-32768,
-  3843,  1192,  3865,  1194,-32768,  1197,-32768,  1199,-32768,  1193,
--32768,  1200,  6005,-32768,  1201,-32768,-32768,  1210,  1212,  6028,
-  3887,  6051,  1208,-32768,  1217,  1218,  3909,  1221,  1227,-32768,
-  3931,  1223,-32768,  2146,  3953,  3975,-32768,  1454,  2146,  1360,
-  1232,-32768,-32768,-32768,    14,-32768,  1249,  3997,-32768,-32768,
--32768,  4019,-32768,-32768,-32768,-32768,   503,  2667,-32768,  1697,
-   378,  1697,   378,  1697,   378,  2146,  2146,  1322,-32768,-32768,
-  1454,  2146,  2841,  2865,  1454,  1402,   114,   546,  1407,  2146,
-  1406,   546,  1411,  1410,  1412,  1414,  1416,  2146,  1418,  1454,
-  1419,  1420,  2146,  1424,  1422,  2146,  1425,  1248,  1592,  2146,
-  2146,   572,  1592,-32768,-32768,  1442,-32768,  2146,  1445,  1274,
-  2146,-32768,  1697,  1697,  2146,  2889,   225,  1446,  1280,   -22,
--32768,  2913,   251,   -21,  2937,   255,    31,  2961,  2985,  1307,
-  1326,  1443,-32768,-32768,  1305,-32768,  1341,  1343,  1344,  4041,
--32768,  1284,-32768,  1285,-32768,-32768,-32768,  6074,-32768,  1345,
--32768,-32768,  6097,  1316,-32768,  6120,  1346,  2146,  6143,  4063,
-  1447,-32768,  4085,  1347,-32768,  3009,  3177,  1448,  2146,-32768,
-  1454,  1449,-32768,  1483,  2146,  1499,  1501,  2146,  1502,  1503,
-  1505,  1454,  1454,-32768,  1506,   546,   546,   546,   546,  1507,
-  1508,  1516,   546,  1529,  1539,  1540,  1542,   575,-32768,  2146,
--32768,  2146,  1543,-32768,-32768,  1368,  3033,  1371,-32768,-32768,
-  1373,  3057,-32768,-32768,  1374,  3081,-32768,-32768,-32768,  1372,
-  1379,-32768,  1387,  1397,  1403,  1405,-32768,-32768,-32768,  1401,
--32768,-32768,-32768,  1404,  1577,  1408,  6166,  3105,  1413,   378,
-  1579,  1454,   378,  1580,   378,  1581,  1454,  1504,   546,   546,
-  1584,  1585,   546,  1587,-32768,   376,-32768,  1588,  1596,    34,
--32768,  1430,   576,   109,-32768,  1431,   112,-32768,  1432,  1433,
-  1438,  1434,  1440,-32768,-32768,  1450,  1452,   598,-32768,  1441,
--32768,  1439,  1623,   378,  1454,  1624,  1625,   378,  1626,   378,
-  1550,  2146,   546,  1454,  1630,  1633,   376,  1635,   376,  1636,
--32768,   211,  1458,-32768,-32768,   214,-32768,   217,  1486,  4107,
-  1444,  1490,-32768,-32768,-32768,-32768,   599,-32768,-32768,  1666,
-  1667,  1692,  1693,  2146,  2146,   546,  1454,   376,  1696,-32768,
--32768,-32768,-32768,  4129,  3129,  1491,  1523,-32768,-32768,  2146,
-  1698,  1454,   546,  3153,-32768,  1525,  1555,  1727,  1454,  1734,
--32768,  1552,-32768,  1454,  1561,  1454,  1562,   546,  1568,  1738,
--32768,  1760,  1761,-32768
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short yydefgoto[] =
+{
+      -1,     2,     3,    16,    17,    18,    19,     4,    69,    70,
+      71,   447,  1073,  1079,   645,   816,  1242,  1422,   646,  1380,
+    1461,   647,  1424,   648,   649,   820,   143,   253,    72,   577,
+     348,   563,   564,   349,    76,    77,    78,    79,    80,   350,
+    1121,  1350,  1406,  1124,  1355,  1410,  1127,  1359,  1413,  1264,
+    1265,    82,    83,   941,   351,   146,   368,   180,   248,   440,
+    1034,   956,   957,   353,   502,   204,   713,   850,   147
 };
 
-static const short yypgoto[] = {-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1126,
--32768,   466,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  -303,     4,-32768,  1763,     1,  -370,
-  -178,     6,-32768,-32768,-32768,-32768,-32768,  1773,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768, -1033, -1241,-32768,
--32768,  -835,   -18,-32768,   182,-32768,   -84,-32768, -1090,  -970,
-   520,  -245,  -332,  -698,   811,-32768,   -64
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -1250
+static const short yypact[] =
+{
+    2410,    38,    75,   223,  2559, -1250, -1250,    89,   100,   125,
+     137,   167,   207,    43,    55,   104, -1250, -1250, -1250, -1250,
+    1785,   122,     3,   317,   155,   158,   172,   -32,   297,   194,
+     221,   373,   300,   441,   448,   459,   513,   468,   553,   342,
+     340,   -18,   -18,   371,   490,    14,   520,    17,   565,   582,
+     108,   551,   609,   618,   438,   442,   -13,    21,    25, -1250,
+     452, -1250,   644, -1250,   669,   673,   642,    15,    28, -1250,
+   -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250,
+   -1250, -1250, -1250, -1250,  2439, -1250, -1250, -1250, -1250, -1250,
+     544,   544,   717, -1250,   294,    23, -1250, -1250, -1250, -1250,
+     -64,    54,   146,   287,   325,   350,   398,   433,   445,   449,
+     475,   481,   484,   485,   488,   489,   500,   504,   507,   510,
+     514,   563,   575,   589,   593, -1250,   594, -1250, -1250, -1250,
+   -1250, -1250, -1250, -1250,  1888,  1888,  1888, -1250, -1250,  1888,
+     387,    39,   792,  1888,   737,   648, -1250,   793,   795, -1250,
+    1888, -1250,  1888,  1888,  1888,   630,  1888,   652,  1888,  1888,
+     948,  1888,   649,   657,   658,   948,   654,   655,   663,   664,
+     665,   666,   667,   813,   -18,   -18,   -18,  1888,  1888,   -83,
+   -1250,   -77,   -18,   661,   662,   668,   671, -1250,   948,    34,
+   -1250, -1250, -1250,   948,   948,   675,   676,   838,  1888,  1888,
+     -49,  1888,   677,  1888,   672,   754,  1888,  1888, -1250,   848,
+   -1250,   682, -1250, -1250,   851, -1250,   852,   685,   686,   687,
+     688,   689,   696,   708,   709,   710,   711,   712,   721,   750,
+     751,   752,   753,   757,   761,   762,   763,   765,   766,   767,
+     768,   769,   770,   771,   773,   774,   775,   886,   748,   755,
+     776,  1888,   946, -1250,   -18, -1250,  1888,  1888,  1888,  1888,
+    1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,
+    1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,
+    1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,
+    1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,   549,   130,
+     130,   130,   950,   391,   780,   780,   780,  4829,   974,  1820,
+    4199,   281,   807,   979,   811,   714, -1250, -1250,  1888,  1888,
+    1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,  1888,
+    1888,  1888,  1888, -1250,  -106,  3167,  4852,  4875,  4898,  1888,
+    4921,  1888,  4944,  4967,   430,   809,  1500,  1820, -1250, -1250,
+   -1250,   739,   981, -1250,  4990,  1888,  1888,  1888,   984,  1888,
+    1888,  1888,  1888,  1888,  1888,  1888,   818,   -63, -1250, -1250,
+    3191,  3215,   -18,   -18,   529,   529,   151,  1888,  1888,  1888,
+    1888,  2199,   349,   990, -1250,  1888,  2220,   991,   994,  1888,
+    1888, -1250,  5013,  5036,   916,  1888,  5059,   915,  3239, -1250,
+     823,  1945,  5082, -1250,  1888,  2265, -1250,  2286, -1250,  1000,
+    1001,  1012,  1015,  1019,  1020,  1021,  1022,  1023,  1024,  1025,
+    1027,  1028,  1029,  1030,  1031,  1032,  1036,  1039,  1042,  1043,
+    1049,  1052,   917,  1053,  1055,  1056,  1059,  1062,  1061, -1250,
+     191,  1067,  1068,  1071,  4220,   -50,   -10,     6,  5105,  4241,
+    5128,  4262,  5151,  4283,  5174,  4304,  5197,  4325,  5220,  4346,
+    5243,  4367,  5266,  4388,  5289,  4409,  5312,  4430,  5335,  4451,
+    3263,  3287,  5358,  4472,  5381,  4493,  5404,  4514,  5427,  4535,
+    5450,  4556,  5473,  4577,  3311,  3335,  3359,  3383,  3407,  3431,
+     106,   203,   887,   898,   907,   914,  1888, -1250,   948,  2060,
+     739, -1250,   268,    40,   130,  1888,  1089,  1093,    24,   921,
+   -1250,  1972,  1198,   569,   592,   592,   414,   414,   414,   414,
+     375,   375,   780,   780,   780,   780,  1094,  1820,  1888,  1095,
+    1096,  1097,  5496,  1101,  5519,  1102,  1103,  1240,  1888,   439,
+    1820,   293,  1888,  1888,  1106,  2623,  5542,  5565,  1888,  2649,
+    2675,  5588,  5611,  5634,  5657,  5680,   923,   -18,  1888,  1888,
+   -1250, -1250, -1250,   932,  2620, -1250,   933,  1888,  3455,  3479,
+    3503,  4598,  -121,   -37,   -33,   116, -1250, -1250, -1250,  1888,
+   -1250,  4619, -1250,   935,   937,  4640,  4661,  1113,  1116,   951,
+    5703,  1117,   952,  1888,  2345,  1888,  1888, -1250,  5726, -1250,
+   -1250,   955,   956,   957,   958,   959,   960,   961,   963,   964,
+     968,   969,   978,   980,   986,   998,   999,  1002,  1005,  1007,
+    1009,  1013,  1014,  1017,  1018,  1026,  1033,  1034,  1035,  1038,
+    1041, -1250,  1121,   953, -1250,  1046,    36, -1250, -1250, -1250,
+     985,   987,  1011, -1250,  1125, -1250, -1250, -1250, -1250, -1250,
+   -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250,
+   -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250,
+   -1250, -1250,  1888,  1888, -1250, -1250, -1250, -1250, -1250, -1250,
+   -1250, -1250, -1250, -1250, -1250, -1250,  1888,  1888,  1888,  1888,
+    1888,  1888,  1888,  1176, -1250,  1820,   130, -1250, -1250,  1888,
+    4682,  1175,  1820,  1045,    62,  1888,  1189,  1193,   756, -1250,
+    1194,  1040,    21,  1196, -1250,  1888, -1250,   248,  3527,   -18,
+     948,   948,  1200,   948,  1201,   948,   948, -1250,  1820,  2701,
+    1370,   509, -1250,  2022,   926,  1047,  1202,  1203,  1204,   539,
+    1212,  1216,  1220,  1222,  1223,  1224,  1226,  1230,   153,  3551,
+    3575, -1250, -1250,  2727,   -18,   -18,   -18,  1199,  1820,  1820,
+    1820,  1820,  1010,  1234,  1888,  1888,  1235,  1236,   948,   948,
+    1888,  1229,   948,  1241,  3599, -1250,  2039,   616,  1266,  1244,
+    1888,  1888,   -18,  1245,  1271,  1111,  1274,  1275,   948,   948,
+    1276,   -18,  1277,  1278,   948,   948,  1280,  1281,  1282,  1283,
+    1284,   948,   533,   948,  1285,  1286,  1287,  1291,  1292, -1250,
+    1290,   544,  1293, -1250,  1294,    12,  1115,  1888,  1888,   948,
+    1109, -1250,  5749,  4703,  5772,  4724,  5795,  4745,  5818,  4766,
+    4787,  1123,   260,  1126,  5841,   115, -1250,   739, -1250,    70,
+     306,  1127,  1296,  1269, -1250, -1250, -1250,    21,  1888, -1250,
+     527, -1250,  2359,  1298,  1888,    11,    42,    50,   948,  1300,
+     948,  1301,  1302,   531, -1250, -1250,  1820, -1250,  1888, -1250,
+    1888,   948,   948,   948, -1250,   330,   948,   948,   948,   948,
+     948,   948,   948,   537,  1888,  1888,  1888,  1129,   -85,   -71,
+     -56, -1250,   534,   535,   566,   584, -1250, -1250,  3623,  3647,
+   -1250, -1250,  1305,  1306,  5864,   144,  1227, -1250,  1888,  1888,
+    1888, -1250,  1132,  1135,  3671,  3695,  -118,  1137,  1143,  1139,
+    1145,  1141,  1147,  1148,  1149,   296,  1150,  1152,  1156,  1153,
+    1157,  1159,  1161,  1166,  1167,  1173, -1250, -1250, -1250, -1250,
+   -1250,  1169,  1170,  1172,  1174,  1186,  1192,  1225, -1250,  1228,
+     -50, -1250,  1317,  1888,  3719,  3743,   604, -1250,  1888, -1250,
+   -1250, -1250, -1250, -1250, -1250, -1250, -1250,  1154, -1250, -1250,
+   -1250, -1250,   948,   130,  1888,  1319,  1332,    24, -1250,  1363,
+    4808,    21, -1250, -1250,  3767, -1250, -1250,   -18, -1250,   -18,
+    1372, -1250,  1401, -1250, -1250,  1233,   605,  2359,  3791,  1405,
+    1406,  1409,  1888,  1888,   715,  1412,  1414,  1419,  1431,  1432,
+    1433, -1250,  1992,  2753,  5887,  2524,   529,   -18,  1434,   -18,
+    1435,   -18,  1437,  1438,  1439,  1440,  1441,  1888,  1888, -1250,
+   -1250,  1369,   948,   948,  1364,   948,  2563,   474,  5910,  1888,
+    1447,  1888,   948,  1446,  1450,  1448,  1295,  1449,   533,  1451,
+    1453,  1888,  1452,  1456,  1455,  1457,  1459,   533,  1888,  1888,
+    1888,   948,  1460,  1462,   533,  1888,  1464,  1465,  1463,  1888,
+     544, -1250, -1250,   261,  2359,  1888,  1888,   948,  1289,   608,
+    2359,  1467,  1470,  1471,  1407, -1250,  1472,  1474, -1250,  1303,
+   -1250,  1888,    52,    61, -1250, -1250, -1250,  1307,  1888, -1250,
+   -1250, -1250,  1529,  1569,  1476, -1250, -1250, -1250, -1250, -1250,
+   -1250, -1250,  1705,  1477,  1297, -1250,  1888, -1250,  1304,   199,
+   -1250,  1309,   257, -1250,  1310,   320, -1250,  1311, -1250, -1250,
+   -1250, -1250,  3815,  3839,   144,   271,   612,  1313,  1403,  1888,
+   -1250,  1888, -1250, -1250,  3863,  1320,  3887,  1308, -1250,  1316,
+   -1250,  1318, -1250,  1322, -1250,  1321,  5933, -1250,  1325, -1250,
+   -1250,  1324,  1327,  5956,  3911,  5979,  1326, -1250,  1361,  1362,
+    3935,  1358,  1365, -1250,  3959,  1366, -1250,  1888,  3983,  4007,
+   -1250,   948,  1888,  1479,  1367, -1250, -1250, -1250,    21, -1250,
+    1411,  4031, -1250, -1250, -1250,  4055, -1250, -1250, -1250, -1250,
+   -1250,   529,  2593, -1250,  1612,   396,  1612,   396,  1612,   396,
+    1888,  1888,  1420, -1250, -1250,   948,  1888,  2779,  2805,   948,
+    1535,   144,   533,  1540,  1888,  1539,   533,  1542,  1547,  1546,
+    1548,  1550,  1888,  1552,   948,  1557,  1570,  1888,  1574,  1572,
+    1888,  1576,  1398,  2359,  1888,  1888,   613,  2359, -1250, -1250,
+    1577, -1250,  1888,  1579,  1371,  1888, -1250,  1612,  1612,  1888,
+    2831,   334,  1580,  1404,   -42, -1250,  2857,   339,   -14,  2883,
+     366,    45,  2909,  2935,  1410,  1402,  1812, -1250, -1250,  1408,
+   -1250,  1413,  1415,  1416,  4079, -1250,  1417, -1250,  1422, -1250,
+   -1250, -1250,  6002, -1250,  1418, -1250, -1250,  6025,  1424, -1250,
+    6048,  1426,  1888,  6071,  4103,  1581, -1250,  4127,  1427, -1250,
+    2961,  3143,  1582,  1888, -1250,   948,  1588, -1250,  1602,  1888,
+    1604,  1605,  1888,  1606,  1607,  1608,   948,   948, -1250,  1611,
+     533,   533,   533,   533,  1613,  1614,  1639,   533,  1640,  1641,
+    1642,  1644,   636, -1250,  1888, -1250,  1888,  1645, -1250, -1250,
+    1473,  2987,  1475, -1250, -1250,  1478,  3013, -1250, -1250,  1480,
+    3039, -1250, -1250, -1250,  1482,  1436, -1250,  1486,  1487,  1481,
+    1483, -1250, -1250, -1250,  1488, -1250, -1250, -1250,  1490,  1646,
+    1491,  6094,  3065,  1493,   396,  1647,   948,   396,  1651,   396,
+    1665,   948,  1567,   533,   533,  1669,  1670,   533,  1672, -1250,
+     130, -1250,  1674,  1673,   109, -1250,  1504,   640,   112, -1250,
+    1516,   299, -1250,  1517,  1518,  1520,  1519,  1524, -1250, -1250,
+    1530,  1531,   643, -1250,  1526, -1250,  1527,  1702,   396,   948,
+    1704,  1707,   396,  1712,   396,  1635,  1888,   533,   948,  1714,
+    1715,   130,  1719,   130,  1731, -1250,   312,  1556, -1250, -1250,
+     313, -1250,   314,  1558,  4151,  1560,  1561, -1250, -1250, -1250,
+   -1250,   647, -1250, -1250,  1737,  1738,  1740,  1741,  1888,  1888,
+     533,   948,   130,  1742, -1250, -1250, -1250, -1250,  4175,  3091,
+    1571,  1573, -1250, -1250,  1888,  1743,   948,   533,  3117, -1250,
+    1575,  1583,  1744,   948,  1746, -1250,  1584, -1250,   948,  1585,
+     948,  1586,   533,  1587,  1748, -1250
 };
 
-
-#define	YYLAST		6341
-
-
-static const short yytable[] = {   143,
-   212,   214,   564,    72,   247,   503,   379,   210,    73,   384,
-   637,   847,   539,   184,   187,   637,   198,   200,  1313,   252,
-   147,   142,  1313,   210,   709,  1313,   381,     5,   382,   153,
-    94,   392,   403,   203,   405,   153,   119,   120,   121,   122,
-  1208,     4,   123,   210,    82,  1258,  1258,   155,   984,   986,
-  1259,  1259,   119,   120,   121,   122,   983,   150,   123,  1132,
-  1133,   499,   370,   371,   756,  1189,   524,  1190,   370,   371,
-    83,   525,   119,   120,   121,   122,   370,   371,   123,   309,
-   372,    88,   638,   639,   640,   641,   373,   638,   639,   640,
-   641,   370,   371,   555,   985,   987,    84,   629,  1258,   499,
-   157,  1258,   630,  1259,   370,   371,  1259,   759,  1015,    85,
-  1016,   370,   371,   302,   303,   304,   173,   174,   305,   308,
-   393,  1017,   313,  1018,   370,   371,  1277,   175,  1019,   333,
-  1020,   334,   335,   336,   176,   338,   154,   340,   341,    86,
-   352,   565,   154,   757,   838,   199,   977,    87,     6,     7,
-     8,     9,    10,    11,    12,    13,   368,   369,  1313,  1312,
-  1316,   758,  1313,   310,   311,  1313,    89,   163,   164,  1264,
-   165,  1267,   128,   129,   130,   131,  1258,   390,   391,  1258,
-   394,  1259,   396,   211,  1259,   399,   400,   700,   642,   701,
-   185,   188,   715,   950,   201,   148,   253,   703,   383,   213,
-  1313,   710,    90,   204,  1313,   729,  1313,  1242,   135,   136,
-  1150,   149,  1319,   370,   371,  1423,   810,   155,   592,  1159,
-   177,   179,   370,   371,   370,   371,  1166,   146,   839,   840,
-   442,   489,   490,   491,   492,   446,   447,   448,   449,   450,
-   451,   452,   453,   454,   455,   456,   457,   458,   459,   460,
-   461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
-   471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
-   481,   482,   483,   484,   485,   486,   487,    94,  1258,   499,
-  1088,  1258,   191,  1259,  1258,   192,  1259,  1030,   498,  1259,
-  1427,   150,   499,  1429,  1031,   370,   371,   509,   510,   511,
-   512,   513,   514,   515,   516,   517,   518,   519,   520,   521,
-   522,   523,   504,   636,  1138,   370,   371,   151,   530,   692,
-   532,   370,   371,   152,   693,   303,   498,   156,   370,   371,
-   370,   371,   882,  1041,   543,   544,   545,   157,   547,   548,
-   549,   550,   551,   552,   553,  1200,  1400,  1202,   254,  1404,
-   255,  1407,   256,   365,   257,   367,   566,   567,   568,   569,
-   830,   374,   370,   371,   579,   258,   158,   259,   583,   584,
-   488,   210,   560,   560,   588,   576,   577,   563,   563,  1204,
-   210,   502,  1278,   596,   851,   159,  1282,   370,   371,   700,
-  1442,   160,  1460,   861,  1446,  1462,  1448,   971,  1463,   166,
-   119,   120,   121,   122,  1309,   260,   123,   261,   161,   119,
-   120,   121,   122,   370,   371,   123,   162,   370,   371,   128,
-   129,   130,   131,   890,   891,   892,   893,   370,   371,   171,
-  1315,   872,   167,   444,  1318,   168,   169,   705,   170,  1050,
-   135,   136,   172,   135,   136,  1258,   635,   499,   702,   249,
-  1259,   250,   135,   136,   836,   908,   327,   328,   329,   316,
-   317,   318,   319,   320,   330,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,   180,   698,   967,   186,   303,   330,
-   499,   700,   873,   262,   706,   263,  1246,   189,  1139,  1173,
-  1363,  1364,  1365,  1366,  1174,   135,   136,  1370,   325,   326,
-   327,   328,   329,   810,   704,   193,   498,   716,   330,  1209,
-   499,   499,   499,   499,  1075,   190,   698,   727,   264,   498,
-   265,   731,   732,   128,   129,   130,   131,   737,   266,   194,
-   267,   994,   181,   970,   972,   182,   183,   747,   748,   128,
-   129,   130,   131,   195,   135,   136,   751,   268,   690,   269,
-   691,   558,   559,  1412,  1413,  1000,  1001,  1416,   760,   196,
-   135,   136,   197,    38,    39,    40,    41,   205,    43,   812,
-   206,   270,   772,   271,   774,   775,    49,    50,   316,   317,
-   318,   319,   320,   207,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,   272,   274,   273,   275,  1451,   330,   208,
-   316,   317,   318,   319,   320,   209,   321,   322,   323,   324,
-   325,   326,   327,   328,   329,   315,   245,   276,   499,   277,
-   330,   700,   909,   730,   248,   135,   136,  1009,  1010,   831,
-  1476,   494,   296,   250,   135,   136,   297,   811,   135,   136,
-   535,   298,   250,  1115,   728,   299,   250,  1487,   278,   300,
-   279,   820,   821,   508,   934,   935,   936,   937,   938,   280,
-   312,   281,  1499,   314,   331,   822,   823,   824,   825,   826,
-   827,   828,   332,   282,   498,   283,   353,   350,   832,   337,
-   339,   835,   356,   364,   841,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,   850,   284,   286,   285,   287,   330,
-   378,   288,   290,   289,   291,   380,   292,   498,   293,   698,
-   385,   386,   294,   700,   295,   865,   979,   354,   980,   844,
-   700,   700,   993,  1021,   947,   357,   700,   700,  1022,  1023,
-   700,  1075,  1024,  1076,   358,   355,   746,   498,   498,   498,
-   498,   359,   360,   896,   897,   700,  1179,  1095,  1180,   902,
-  1075,  1075,  1210,  1301,  1179,  1425,  1375,  1426,   361,   912,
-   913,   362,   316,   317,   318,   319,   320,   363,   321,   322,
-   323,   324,   325,   326,   327,   328,   329,  1437,  1468,  1438,
-  1469,   375,   330,   376,   377,   389,   387,   388,   397,   398,
-   395,   401,   402,   404,   406,   437,   952,   953,   407,   408,
-   316,   317,   318,   319,   320,   409,   321,   322,   323,   324,
-   325,   326,   327,   328,   329,   410,   411,   412,   867,   413,
-   330,   440,   414,   415,   416,   417,  1250,   978,   418,   419,
-   443,   496,   439,   982,   420,   421,   811,   422,   423,   424,
-   425,   973,   426,   427,   428,   498,   429,   995,   430,   996,
-   431,   432,   433,   441,   434,   435,   436,   493,   330,   554,
-   506,   505,   507,  1011,  1012,  1013,   316,   317,   318,   319,
-   320,   536,   321,   322,   323,   324,   325,   326,   327,   328,
-   329,   541,   546,   578,   587,   581,   330,  1034,  1035,  1036,
-   582,   590,   593,   599,   600,   601,   602,   603,   853,   604,
-   605,   606,    91,   301,   622,   607,  1081,   608,    95,    96,
-    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,  1072,   886,   887,   888,   609,  1078,   610,   611,
-   612,   694,   894,   613,   614,  1110,   615,   616,   617,   618,
-   619,  1069,   620,  1082,   621,   623,   624,   625,   626,   627,
-   628,   914,   631,   697,   632,   316,   317,   318,   319,   320,
-   923,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-   976,  1100,  1101,  1172,   633,   330,   695,   707,   696,   708,
-   714,  1109,   712,   717,   718,   719,   721,   723,   724,   733,
-   745,   124,   125,   126,   127,   749,  1129,  1130,   766,   750,
-   762,   763,   767,   768,   560,   699,   770,   777,  1141,   563,
-  1143,   771,   778,   807,   779,   780,   781,   782,   783,   784,
-  1153,   785,   808,   815,   786,   787,   788,  1160,  1161,  1162,
-   789,   790,   791,   792,  1167,   793,   794,   795,  1171,   796,
-   797,   798,   799,   800,  1175,  1176,   801,   819,   829,   802,
-   803,   804,   132,   133,   805,   806,   809,   816,   134,   834,
-  1188,   842,   843,   137,   837,   845,   306,  1192,   140,   817,
-   307,   846,   849,   911,   856,   858,   869,   868,   870,   316,
-   317,   318,   319,   320,  1198,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,   871,   874,   875,   876,   877,   330,
-   878,   879,   880,   881,   889,   905,   895,  1213,   898,  1214,
-   899,   915,   903,   910,   916,   917,   918,   316,   317,   318,
-   319,   320,   919,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,   922,   924,   925,   928,   929,   330,   930,   931,
-   932,   941,   951,   944,   942,  1239,   943,   945,   946,   948,
-  1243,   956,   949,  1014,   975,   981,  1090,   989,  1091,   319,
-   320,   966,   321,   322,   323,   324,   325,   326,   327,   328,
-   329,  1256,   968,  1262,   974,  1265,   330,  1268,  1269,   991,
-   992,  1027,  1028,  1272,  1033,  1037,  1116,   560,  1119,  1038,
-  1122,  1280,   563,  1184,  1042,  1043,  1044,  1045,  1046,  1288,
-  1047,  1048,  1052,  1049,  1293,  1053,  1051,  1296,  1054,  1055,
-  1070,  1299,  1300,  1056,  1057,  1058,  1059,  1060,  1061,  1303,
-  1062,  1066,  1306,  1063,   302,   303,  1307,   854,   855,  1064,
-   857,  1065,   859,   860,    91,   301,  1083,  1067,  1079,  1068,
-    95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-   105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-   115,   116,   117,   118,  1084,  1086,  1134,  1092,  1093,  1078,
-  1097,  1098,  1099,  1193,  1102,   900,   901,  1103,  1104,   904,
-  1347,  1105,  1106,  1107,  1094,  1108,  1352,  1117,  1120,  1356,
-  1123,  1125,  1126,  1127,  1128,   920,   921,  1131,  1142,  1145,
-  1146,   926,   927,  1178,  1147,  1149,  1151,  1152,   933,  1154,
-   940,  1377,  1155,  1378,  1156,  1148,  1157,  1158,  1164,  1165,
-  1168,  1419,  1169,  1212,  1170,  1181,  1182,  1247,  1183,  1191,
-  1185,  1186,  1187,   124,   125,   126,   127,  1196,  1197,  1201,
-   316,   317,   318,   319,   320,  1199,   321,   322,   323,   324,
-   325,   326,   327,   328,   329,  1244,  1216,  1221,  1203,  1205,
-   330,  1211,  1455,  1218,  1458,   988,  1219,   990,  1220,  1222,
-  1224,  1257,  1194,  1263,  1225,  1266,  1226,  1230,   997,   998,
-   999,  1231,  1232,  1002,  1003,  1004,  1005,  1006,  1007,  1008,
-  1234,  1235,  1237,  1478,   132,   133,  1245,  1276,  1270,  1279,
-   134,  1281,  1284,  1450,  1195,   137,  1283,  1285,   725,  1286,
-   140,  1287,   726,  1289,  1291,  1292,  1294,  1295,  1298,  1297,
-   316,   317,   318,   319,   320,   367,   321,   322,   323,   324,
-   325,   326,   327,   328,   329,  1474,  1475,  1302,  1324,  1304,
-   330,  1310,  1341,  1345,  1349,  1305,    91,   342,  1330,  1331,
-  1311,  1484,    95,    96,    97,    98,    99,   100,   101,   102,
-   103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-   113,   114,   115,   116,   117,   118,  1325,  1322,  1350,  1080,
-  1335,   318,   319,   320,   343,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,  1353,  1323,  1354,  1357,  1358,   330,
-  1359,  1362,  1367,  1368,    38,    39,    40,    41,    42,    43,
-  1326,  1369,  1327,  1328,  1333,  1337,  1343,    49,    50,   316,
-   317,   318,   319,   320,  1371,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,  1372,  1373,  1374,  1379,  1380,   330,
-  1382,  1387,  1135,  1383,  1385,   124,   125,   126,   127,  1144,
-  1388,   316,   317,   318,   319,   320,  1389,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,  1390,  1391,  1163,  1392,
-  1393,   330,  1395,  1394,  1401,  1405,  1408,  1411,  1396,  1414,
-  1415,  1417,  1399,  1421,  1177,   316,   317,   318,   319,   320,
-  1422,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-  1424,  1428,  1430,  1433,  1431,   330,   132,   344,  1432,  1434,
-  1440,  1439,   134,  1466,  1435,   540,  1436,   137,  1441,  1444,
-  1445,  1447,   140,  1449,   345,  1453,    91,   301,  1454,  1461,
-  1456,  1459,    95,    96,    97,    98,    99,   100,   101,   102,
-   103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-   113,   114,   115,   116,   117,   118,  1464,    91,   537,  1467,
-  1482,  1470,  1471,    95,    96,    97,    98,    99,   100,   101,
-   102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,  1472,  1473,    91,
-   301,  1479,  1483,  1485,  1489,    95,    96,    97,    98,    99,
-   100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-   110,   111,   112,   113,   114,   115,   116,   117,   118,  1490,
-  1271,  1494,  1491,   594,  1275,   124,   125,   126,   127,  1493,
-  1496,  1498,  1500,  1501,   316,   317,   318,   319,   320,  1290,
-   321,   322,   323,   324,   325,   326,   327,   328,   329,  1503,
-  1504,   813,     0,  1338,   330,    71,   124,   125,   126,   127,
-   316,   317,   318,   319,   320,    79,   321,   322,   323,   324,
-   325,   326,   327,   328,   329,  1085,     0,     0,     0,     0,
-   330,     0,     0,     0,     0,     0,   132,   133,   124,   125,
-   126,   127,   134,     0,     0,     0,     0,   137,     0,     0,
-   863,     0,   140,     0,   864,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   132,   133,     0,
-  1348,     0,     0,   134,     0,     0,     0,     0,   137,     0,
-     0,  1360,  1361,   140,     0,   538,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,  1253,
-  1254,     0,     0,     0,     0,   134,     0,     0,     0,     0,
-  1255,   713,     0,     0,     0,   140,     0,   176,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,  1403,     0,    91,    92,    93,  1410,    94,     0,    95,
-    96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-   106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-   116,   117,   118,     0,   119,   120,   121,   122,     0,     0,
-   123,     0,     0,     0,  1443,     0,     0,     0,     0,     0,
-     0,     0,     0,  1452,     0,     0,    91,   301,   210,     0,
-     0,     0,    95,    96,    97,    98,    99,   100,   101,   102,
-   103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-   113,   114,   115,   116,   117,   118,  1477,   119,   120,   121,
-   122,     0,     0,   123,     0,     0,     0,     0,     0,     0,
-     0,  1486,   124,   125,   126,   127,     0,     0,  1492,     0,
-     0,     0,     0,  1495,     0,  1497,   316,   317,   318,   319,
-   320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
-   329,     0,     0,     0,     0,     0,   330,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   128,
-   129,   130,   131,     0,     0,   124,   125,   126,   127,     0,
-     0,     0,     0,   132,   133,     0,     0,     0,   866,   134,
-   135,   136,     0,     0,   137,     0,   138,     0,   139,   140,
-    91,   342,     0,     0,     0,     0,    95,    96,    97,    98,
-    99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-   109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     0,     0,   907,     0,     0,     0,   132,   133,   343,     0,
-     0,     0,   134,     0,     0,     0,     0,   137,     0,     0,
-     0,     0,   140,     0,     0,     0,     0,     0,    38,    39,
-    40,    41,    42,    43,     0,     0,     0,     0,    91,   301,
-     0,    49,    50,     0,    95,    96,    97,    98,    99,   100,
-   101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-   111,   112,   113,   114,   115,   116,   117,   118,     0,   124,
-   125,   126,   127,    91,   537,     0,     0,     0,     0,    95,
-    96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-   106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-   116,   117,   118,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
-   132,   497,     0,     0,     0,     0,   134,   124,   125,   126,
-   127,   137,     0,     0,     0,     0,   140,   316,   317,   318,
-   319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,     0,
-     0,     0,   124,   125,   126,   127,     0,   570,    23,    24,
-   571,   572,    27,   573,    29,     0,    30,     0,    32,    33,
-     0,    35,    36,     0,     0,     0,     0,     0,   132,   133,
-     0,     0,     0,     0,   134,     0,     0,     0,    48,   137,
-     0,     0,     0,     0,   140,     0,     0,    52,    53,    54,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   132,   133,    64,     0,     0,     0,   134,
-     0,     0,     0,     0,   137,     0,     0,     0,     0,   140,
-   570,    23,    24,   571,   572,    27,   573,    29,     0,    30,
-     0,    32,    33,     0,    35,    36,     0,     0,     0,     0,
-     0,   570,    23,    24,   571,   572,    27,   573,    29,     0,
-    30,    48,    32,    33,     0,    35,    36,     0,     0,     0,
-    52,    53,    54,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    48,     0,     0,     0,     0,     0,    64,     0,
-     0,    52,    53,    54,     0,     0,     0,     0,   574,   570,
-    23,    24,   571,   572,    27,   573,    29,     0,    30,    64,
-    32,    33,     0,    35,    36,     0,     0,     0,     0,     0,
-   570,    23,    24,   571,   572,    27,   573,    29,     0,    30,
-    48,    32,    33,     0,    35,    36,     0,     0,     0,    52,
-    53,    54,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    48,     0,     0,     0,    -4,     1,    64,    -4,   -47,
-    52,    53,    54,     0,     0,     0,     0,     0,     0,     0,
-     0,   580,     0,     0,     0,     0,     0,     0,    64,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   -47,     0,
-     0,     0,   597,   -47,   -47,     0,   -47,   -47,   -47,   -47,
-   -47,   -47,   -47,   -47,     0,   -47,   -47,   -47,   -47,   -47,
-   -47,   -47,     0,     0,     0,   -47,   -47,   -47,   -47,   -47,
-   -47,   -47,     0,   -47,   -47,   -47,   -47,   -47,   215,   -47,
-   -47,     0,     0,     0,     0,   -47,   -47,   -47,   -47,     0,
-   598,     0,     0,   -47,     0,   -47,     0,   -47,   -47,   -47,
-   -47,   -47,   -47,   -47,   -47,   -47,   -47,     0,     0,     0,
-     0,   773,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    -4,
-    -4,    -4,    -4,    -4,    -4,    -4,    -4,     0,     0,     0,
-   216,   217,   218,     0,     0,     0,     0,     0,   219,   220,
-   221,   222,   223,   224,   225,   226,   227,   228,    18,     0,
-     0,     0,     0,     0,     0,     0,   229,   230,   231,   232,
-   233,   234,   235,   236,   237,   238,     0,   239,   240,   241,
-   242,   243,   244,     0,     0,     0,     0,    19,     0,     0,
-     0,     0,    20,    21,     0,    22,    23,    24,    25,    26,
-    27,    28,    29,     0,    30,    31,    32,    33,    34,    35,
-    36,     0,     0,     0,    37,    38,    39,    40,    41,    42,
-    43,     0,    44,    45,    46,    47,    48,     0,    49,    50,
-     0,     0,     0,     0,    51,    52,    53,    54,     0,     0,
-     0,     0,    55,     0,    56,     0,    57,    58,    59,    60,
-    61,    62,    63,    64,    65,    66,   570,    23,    24,   571,
-   572,    27,   573,    29,     0,    30,     0,    32,    33,     0,
-    35,    36,   316,   317,   318,   319,   320,     0,   321,   322,
-   323,   324,   325,   326,   327,   328,   329,    48,     0,     0,
-     0,     0,   330,     0,     0,     0,    52,    53,    54,  1113,
-     0,  1114,     0,     0,     0,     0,     0,     0,     0,   316,
-   317,   318,   319,   320,    64,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,     0,     0,     0,     0,     0,  1136,     0,  1137,   316,
-   317,   318,   319,   320,     0,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,     0,     0,     0,     0,     0,  1251,     0,  1252,   316,
-   317,   318,   319,   320,     0,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,     0,     0,   316,   317,   318,   319,   320,   734,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   316,   317,   318,
-   319,   320,   738,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,     0,
-     0,   316,   317,   318,   319,   320,   739,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,     0,     0,   316,   317,   318,   319,   320,
-   862,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,     0,     0,   316,
-   317,   318,   319,   320,   885,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,     0,     0,   316,   317,   318,   319,   320,  1111,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   316,   317,   318,
-   319,   320,  1273,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,     0,
-     0,   316,   317,   318,   319,   320,  1274,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,     0,     0,   316,   317,   318,   319,   320,
-  1308,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,     0,     0,   316,
-   317,   318,   319,   320,  1314,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,     0,     0,   316,   317,   318,   319,   320,  1317,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   316,   317,   318,
-   319,   320,  1320,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,     0,
-     0,   316,   317,   318,   319,   320,  1321,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,     0,     0,   316,   317,   318,   319,   320,
-  1344,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,     0,     0,   316,
-   317,   318,   319,   320,  1381,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,     0,     0,   316,   317,   318,   319,   320,  1384,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   316,   317,   318,
-   319,   320,  1386,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,     0,
-     0,   316,   317,   318,   319,   320,  1398,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,     0,     0,   316,   317,   318,   319,   320,
-  1481,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,     0,     0,   316,
-   317,   318,   319,   320,  1488,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   495,     0,     0,     0,     0,   556,   316,   317,   318,
-   319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   316,
-   317,   318,   319,   320,   526,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   316,   317,   318,   319,   320,   556,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   316,   317,   318,   319,   320,   557,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   316,   317,   318,   319,   320,
-   591,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   316,   317,   318,
-   319,   320,   670,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   316,
-   317,   318,   319,   320,   671,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   316,   317,   318,   319,   320,   684,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   316,   317,   318,   319,   320,   685,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   316,   317,   318,   319,   320,
-   686,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   316,   317,   318,
-   319,   320,   687,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   316,
-   317,   318,   319,   320,   688,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   316,   317,   318,   319,   320,   689,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   316,   317,   318,   319,   320,   752,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   316,   317,   318,   319,   320,
-   753,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   316,   317,   318,
-   319,   320,   754,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   316,
-   317,   318,   319,   320,   852,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   316,   317,   318,   319,   320,   883,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   316,   317,   318,   319,   320,   884,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   316,   317,   318,   319,   320,
-   906,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   316,   317,   318,
-   319,   320,  1025,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   316,
-   317,   318,   319,   320,  1026,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   316,   317,   318,   319,   320,  1039,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   316,   317,   318,   319,   320,  1040,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   316,   317,   318,   319,   320,
-  1073,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   316,   317,   318,
-   319,   320,  1074,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   316,
-   317,   318,   319,   320,  1089,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   316,   317,   318,   319,   320,  1096,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   316,   317,   318,   319,   320,  1206,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   316,   317,   318,   319,   320,
-  1207,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   316,   317,   318,
-   319,   320,  1215,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   316,
-   317,   318,   319,   320,  1217,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   316,   317,   318,   319,   320,  1228,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   316,   317,   318,   319,   320,  1233,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   316,   317,   318,   319,   320,
-  1236,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   316,   317,   318,
-   319,   320,  1240,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   316,
-   317,   318,   319,   320,  1241,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   316,   317,   318,   319,   320,  1248,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   316,   317,   318,   319,   320,  1249,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   316,   317,   318,   319,   320,
-  1329,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   316,   317,   318,
-   319,   320,  1340,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   316,
-   317,   318,   319,   320,  1342,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   316,   317,   318,   319,   320,  1465,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   316,   317,   318,   319,   320,  1480,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   501,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   634,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   649,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   651,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   653,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   655,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   657,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   659,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   661,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   663,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   665,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   667,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   669,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   673,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   675,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   677,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   679,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   681,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   683,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   755,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   761,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   764,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   765,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   833,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   958,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   960,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   962,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,   964,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,     0,     0,   965,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-     0,     0,  1087,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   495,   316,   317,   318,   319,
-   320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
-   329,     0,     0,     0,     0,     0,   330,     0,   527,   316,
-   317,   318,   319,   320,     0,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   528,   316,   317,   318,   319,   320,     0,   321,   322,
-   323,   324,   325,   326,   327,   328,   329,     0,     0,     0,
-     0,     0,   330,     0,   529,   316,   317,   318,   319,   320,
-     0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   531,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-   533,   316,   317,   318,   319,   320,     0,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   534,   316,   317,   318,   319,   320,     0,
-   321,   322,   323,   324,   325,   326,   327,   328,   329,     0,
-     0,     0,     0,     0,   330,     0,   542,   316,   317,   318,
-   319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   585,
-   316,   317,   318,   319,   320,     0,   321,   322,   323,   324,
-   325,   326,   327,   328,   329,     0,     0,     0,     0,     0,
-   330,     0,   586,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   589,   316,   317,   318,   319,
-   320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
-   329,     0,     0,     0,     0,     0,   330,     0,   595,   316,
-   317,   318,   319,   320,     0,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   648,   316,   317,   318,   319,   320,     0,   321,   322,
-   323,   324,   325,   326,   327,   328,   329,     0,     0,     0,
-     0,     0,   330,     0,   650,   316,   317,   318,   319,   320,
-     0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   652,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-   654,   316,   317,   318,   319,   320,     0,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   656,   316,   317,   318,   319,   320,     0,
-   321,   322,   323,   324,   325,   326,   327,   328,   329,     0,
-     0,     0,     0,     0,   330,     0,   658,   316,   317,   318,
-   319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   660,
-   316,   317,   318,   319,   320,     0,   321,   322,   323,   324,
-   325,   326,   327,   328,   329,     0,     0,     0,     0,     0,
-   330,     0,   662,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   664,   316,   317,   318,   319,
-   320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
-   329,     0,     0,     0,     0,     0,   330,     0,   666,   316,
-   317,   318,   319,   320,     0,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   668,   316,   317,   318,   319,   320,     0,   321,   322,
-   323,   324,   325,   326,   327,   328,   329,     0,     0,     0,
-     0,     0,   330,     0,   672,   316,   317,   318,   319,   320,
-     0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   674,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-   676,   316,   317,   318,   319,   320,     0,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   678,   316,   317,   318,   319,   320,     0,
-   321,   322,   323,   324,   325,   326,   327,   328,   329,     0,
-     0,     0,     0,     0,   330,     0,   680,   316,   317,   318,
-   319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   682,
-   316,   317,   318,   319,   320,     0,   321,   322,   323,   324,
-   325,   326,   327,   328,   329,     0,     0,     0,     0,     0,
-   330,     0,   720,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   722,   316,   317,   318,   319,
-   320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
-   329,     0,     0,     0,     0,     0,   330,     0,   735,   316,
-   317,   318,   319,   320,     0,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   736,   316,   317,   318,   319,   320,     0,   321,   322,
-   323,   324,   325,   326,   327,   328,   329,     0,     0,     0,
-     0,     0,   330,     0,   740,   316,   317,   318,   319,   320,
-     0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   741,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-   742,   316,   317,   318,   319,   320,     0,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,   743,   316,   317,   318,   319,   320,     0,
-   321,   322,   323,   324,   325,   326,   327,   328,   329,     0,
-     0,     0,     0,     0,   330,     0,   744,   316,   317,   318,
-   319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,   769,
-   316,   317,   318,   319,   320,     0,   321,   322,   323,   324,
-   325,   326,   327,   328,   329,     0,     0,     0,     0,     0,
-   330,     0,   776,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,   957,   316,   317,   318,   319,
-   320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
-   329,     0,     0,     0,     0,     0,   330,     0,   959,   316,
-   317,   318,   319,   320,     0,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,   961,   316,   317,   318,   319,   320,     0,   321,   322,
-   323,   324,   325,   326,   327,   328,   329,     0,     0,     0,
-     0,     0,   330,     0,   963,   316,   317,   318,   319,   320,
-     0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,   969,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-  1029,   316,   317,   318,   319,   320,     0,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,     0,     0,     0,     0,
-     0,   330,     0,  1112,   316,   317,   318,   319,   320,     0,
-   321,   322,   323,   324,   325,   326,   327,   328,   329,     0,
-     0,     0,     0,     0,   330,     0,  1140,   316,   317,   318,
-   319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
-   328,   329,     0,     0,     0,     0,     0,   330,     0,  1223,
-   316,   317,   318,   319,   320,     0,   321,   322,   323,   324,
-   325,   326,   327,   328,   329,     0,     0,     0,     0,     0,
-   330,     0,  1227,   316,   317,   318,   319,   320,     0,   321,
-   322,   323,   324,   325,   326,   327,   328,   329,     0,     0,
-     0,     0,     0,   330,     0,  1229,   316,   317,   318,   319,
-   320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
-   329,     0,     0,     0,     0,     0,   330,     0,  1332,   316,
-   317,   318,   319,   320,     0,   321,   322,   323,   324,   325,
-   326,   327,   328,   329,     0,     0,     0,     0,     0,   330,
-     0,  1334,   316,   317,   318,   319,   320,     0,   321,   322,
-   323,   324,   325,   326,   327,   328,   329,     0,     0,     0,
-     0,     0,   330,     0,  1336,   316,   317,   318,   319,   320,
-     0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     0,     0,     0,     0,     0,   330,     0,  1339,   316,   317,
-   318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
-   327,   328,   329,     0,     0,     0,     0,     0,   330,     0,
-  1397
+/* YYPGOTO[NTERM-NUM].  */
+static const short yypgoto[] =
+{
+   -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250,
+   -1250,  1118, -1250,   455, -1250, -1250, -1250, -1250, -1250, -1250,
+   -1250, -1250, -1250, -1250, -1250, -1250,  -303,   -16, -1250,  1755,
+      -1,  -368,  -176,     2, -1250, -1250, -1250, -1250, -1250,  1757,
+   -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1250, -1104,
+   -1249, -1250, -1250,  -888,   -20, -1250,   351, -1250,   -86, -1250,
+   -1092, -1009,   274,  -248,  -334,  -700,   786, -1250,   -66
 };
 
-static const short yycheck[] = {    18,
-    65,    66,   373,     3,    89,   309,   185,     5,     3,   188,
-     4,   710,   345,     4,     4,     4,    45,     4,  1260,     4,
-     6,    18,  1264,     5,     4,  1267,     4,     3,     6,    67,
-     7,    85,   211,     4,   213,    67,    34,    35,    36,    37,
-  1131,     6,    40,     5,     7,    68,    68,    67,     6,     6,
-    73,    73,    34,    35,    36,    37,     6,   174,    40,  1030,
-  1031,   307,   163,   164,   181,     6,   175,     6,   163,   164,
-     6,   180,    34,    35,    36,    37,   163,   164,    40,     4,
-   181,   174,    76,    77,    78,    79,   181,    76,    77,    78,
-    79,   163,   164,   180,    52,    52,     6,   175,    68,   345,
-   174,    68,   180,    73,   163,   164,    73,   181,   180,     6,
-   182,   163,   164,   132,   133,   134,   163,   164,   137,   138,
-   174,   180,   141,   182,   163,   164,  1217,   174,   180,   148,
-   182,   150,   151,   152,   181,   154,   174,   156,   157,     6,
-   159,   180,   174,   181,     4,   174,   845,     6,   124,   125,
-   126,   127,   128,   129,   130,   131,   175,   176,  1400,   182,
-   182,   181,  1404,    88,    89,  1407,   174,    44,    45,  1203,
-    47,  1205,   149,   150,   151,   152,    68,   196,   197,    68,
-   199,    73,   201,   181,    73,   204,   205,   180,   182,   182,
-   181,   181,   525,   182,   181,   181,   181,   501,   176,   181,
-  1442,   181,   174,   174,  1446,   538,  1448,  1178,   170,   171,
-  1046,     6,   182,   163,   164,   182,   178,    67,   397,  1055,
-    39,    40,   163,   164,   163,   164,  1062,   174,    88,    89,
-   249,   296,   297,   298,   299,   254,   255,   256,   257,   258,
-   259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-   269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-   289,   290,   291,   292,   293,   294,   295,     7,    68,   525,
-   979,    68,    41,    73,    68,    44,    73,   174,   307,    73,
-   182,   174,   538,   182,   181,   163,   164,   316,   317,   318,
-   319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-   329,   330,   309,   181,     8,   163,   164,   174,   337,   175,
-   339,   163,   164,   174,   180,   344,   345,   174,   163,   164,
-   163,   164,   180,   175,   353,   354,   355,   174,   357,   358,
-   359,   360,   361,   362,   363,   180,  1380,   180,   174,  1383,
-   176,  1385,   174,   172,   176,   174,   375,   376,   377,   378,
-   693,   180,   163,   164,   383,   174,    49,   176,   387,   388,
-     4,     5,   372,   373,   393,     6,     7,   372,   373,   180,
-     5,     7,  1218,   402,   175,   174,  1222,   163,   164,   180,
-  1424,    45,   182,   726,  1428,   182,  1430,     7,   182,    47,
-    34,    35,    36,    37,   180,   174,    40,   176,    45,    34,
-    35,    36,    37,   163,   164,    40,    45,   163,   164,   149,
-   150,   151,   152,   756,   757,   758,   759,   163,   164,   174,
-   180,     6,    41,   252,   180,    44,    45,   502,    47,   175,
-   170,   171,   181,   170,   171,    68,   443,   693,   178,   176,
-    73,   178,   170,   171,   700,     8,   165,   166,   167,   153,
-   154,   155,   156,   157,   173,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,   181,   494,   175,    45,   497,   173,
-   726,   180,    57,   174,   503,   176,  1185,     6,   182,   175,
-  1326,  1327,  1328,  1329,   180,   170,   171,  1333,   163,   164,
-   165,   166,   167,   178,   501,     4,   525,   526,   173,   175,
-   756,   757,   758,   759,   180,     6,   535,   536,   174,   538,
-   176,   540,   541,   149,   150,   151,   152,   546,   174,     4,
-   176,   864,    41,   837,   838,    44,    45,   556,   557,   149,
-   150,   151,   152,     4,   170,   171,   565,   174,   176,   176,
-   178,   370,   371,  1389,  1390,    58,    59,  1393,   577,   174,
-   170,   171,   174,    61,    62,    63,    64,   174,    66,   634,
-     6,   174,   591,   176,   593,   594,    74,    75,   153,   154,
-   155,   156,   157,     4,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,   174,   174,   176,   176,  1433,   173,     4,
-   153,   154,   155,   156,   157,    45,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,     6,   174,   174,   864,   176,
-   173,   180,   175,   182,     5,   170,   171,     6,     7,   694,
-  1466,   176,   174,   178,   170,   171,   174,   634,   170,   171,
-   176,   174,   178,  1014,   176,   174,   178,  1483,   174,   174,
-   176,   670,   671,     6,   109,   110,   111,   112,   113,   174,
-     4,   176,  1498,     6,     6,   684,   685,   686,   687,   688,
-   689,   690,     5,   174,   693,   176,   181,   158,   697,   174,
-   174,   700,   163,     4,   703,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,   713,   174,   174,   176,   176,   173,
-   176,   174,   174,   176,   176,   186,   174,   726,   176,   728,
-   191,   192,   174,   180,   176,   182,   180,   174,   182,     6,
-   180,   180,   182,   182,   809,   181,   180,   180,   182,   182,
-   180,   180,   182,   182,   181,   174,   555,   756,   757,   758,
-   759,   174,   174,   762,   763,   180,   180,   182,   182,   768,
-   180,   180,   182,   182,   180,   180,   182,   182,   174,   778,
-   779,   174,   153,   154,   155,   156,   157,   174,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,   180,   180,   182,
-   182,   181,   173,   181,   181,     6,   176,   176,   181,    91,
-   178,     6,   174,     6,     6,     5,   815,   816,   174,   174,
-   153,   154,   155,   156,   157,   174,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   174,   174,   174,     6,   174,
-   173,   175,   174,   174,   174,   174,  1197,   846,   174,   174,
-     4,     7,   180,   852,   174,   174,   833,   174,   174,   174,
-   174,   838,   174,   174,   174,   864,   174,   866,   174,   868,
-   174,   174,   174,   180,   174,   174,   174,     5,   173,   175,
-     7,   178,   176,   882,   883,   884,   153,   154,   155,   156,
-   157,   181,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,     7,     7,     6,    86,     7,   173,   906,   907,   908,
-     7,    88,   181,     5,     5,     5,     5,     5,   717,     5,
-     5,     5,     3,     4,   142,     5,   971,     5,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,   951,   752,   753,   754,     5,   956,     5,     5,
-     5,   180,     6,     5,     5,  1010,     5,     5,     5,     5,
-     5,   948,     5,   972,     5,     5,     5,     5,     5,     3,
-     5,   780,     5,   180,     6,   153,   154,   155,   156,   157,
-   789,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-     6,  1000,  1001,  1068,     5,   173,   175,     6,   175,     4,
-     6,  1010,   177,     7,     7,     7,     7,     7,     7,     7,
-   178,   102,   103,   104,   105,   182,  1025,  1026,     7,   182,
-   181,   181,     7,   174,  1014,   496,     7,   180,  1037,  1014,
-  1039,   178,   180,     5,   180,   180,   180,   180,   180,   180,
-  1049,   180,   175,   174,   180,   180,   180,  1056,  1057,  1058,
-   180,   180,   180,   180,  1063,   180,   180,   180,  1067,   180,
-   180,   180,   180,   180,  1073,  1074,   180,     6,     4,   180,
-   180,   180,   163,   164,   180,   180,   180,   174,   169,     6,
-  1089,     6,     6,   174,   177,     7,   177,  1096,   179,   181,
-   181,   176,     6,     3,     7,     7,     7,   181,     7,   153,
-   154,   155,   156,   157,  1113,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,     7,     7,     7,     7,     7,   173,
-     7,     7,     7,     4,     6,     4,     6,  1136,     6,  1138,
-     6,     3,     7,     7,     3,   165,     3,   153,   154,   155,
-   156,   157,     3,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,     3,     3,     3,     3,     3,   173,     3,     3,
-     3,     3,   174,     3,     5,  1174,     5,     3,     6,     4,
-  1179,   181,     6,   181,     7,     6,   985,     6,   987,   156,
-   157,   175,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,  1200,   175,  1202,   178,  1204,   173,  1206,  1207,     6,
-     6,     6,     6,  1212,    87,   181,  1015,  1197,  1017,   180,
-  1019,  1220,  1197,     6,   180,   175,   180,   175,   180,  1228,
-   175,   180,   175,   180,  1233,   175,   180,  1236,   180,   180,
-     6,  1240,  1241,   180,   180,   180,   180,   175,   180,  1248,
-   180,   175,  1251,   180,  1253,  1254,  1255,   718,   719,   180,
-   721,   180,   723,   724,     3,     4,     6,   180,   178,   180,
-     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-    29,    30,    31,    32,     4,     6,    87,     6,     6,  1298,
-     6,     6,     6,     6,     6,   766,   767,     6,     6,   770,
-  1309,     6,     6,     6,   177,     6,  1315,     6,     6,  1318,
-     6,     6,     6,     6,     6,   786,   787,     7,     3,     6,
-     3,   792,   793,   181,     6,     6,     6,     3,   799,     6,
-   801,  1340,     3,  1342,     6,   165,     6,     3,     6,     3,
-     3,  1396,     3,    84,     6,     4,     6,    89,     6,   177,
-     7,     6,   178,   102,   103,   104,   105,     6,   181,   181,
-   153,   154,   155,   156,   157,   182,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,     6,   175,   175,   181,   181,
-   173,   181,  1437,   180,  1439,   856,   180,   858,   180,   180,
-   180,  1200,     6,  1202,   175,  1204,   175,   180,   869,   870,
-   871,   175,   175,   874,   875,   876,   877,   878,   879,   880,
-   180,   175,   180,  1468,   163,   164,   175,     6,    87,     3,
-   169,     6,     3,  1432,     6,   174,     6,     6,   177,     6,
-   179,     6,   181,     6,     6,     6,     3,     6,   181,     5,
-   153,   154,   155,   156,   157,  1254,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,  1464,  1465,     6,     6,     5,
-   173,     6,     6,     6,     6,   182,     3,     4,   175,   175,
-   181,  1480,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,   182,   181,     6,   970,
-   175,   155,   156,   157,    41,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,     6,   180,     6,     6,     6,   173,
-     6,     6,     6,     6,    61,    62,    63,    64,    65,    66,
-   180,     6,   180,   180,   180,   180,   180,    74,    75,   153,
-   154,   155,   156,   157,     6,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,     6,     6,     5,     5,   181,   173,
-   180,   180,  1033,   181,   181,   102,   103,   104,   105,  1040,
-   182,   153,   154,   155,   156,   157,   180,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,   180,   175,  1059,   175,
-   180,   173,     6,   180,     6,     6,     6,    84,   181,     6,
-     6,     5,   180,     6,  1075,   153,   154,   155,   156,   157,
-     5,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   181,   181,   181,   180,   182,   173,   163,   164,   181,   180,
-   182,   181,   169,   180,   175,     8,   175,   174,     6,     6,
-     6,     6,   179,    84,   181,     6,     3,     4,     6,   182,
-     6,     6,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,   181,     3,     4,   180,
-   180,     6,     6,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,     6,     6,     3,
-     4,     6,   180,     6,   180,     9,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,   175,
-  1211,   180,     6,     8,  1215,   102,   103,   104,   105,     6,
-   180,   180,   175,     6,   153,   154,   155,   156,   157,  1230,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,     0,
-     0,   636,    -1,  1298,   173,     3,   102,   103,   104,   105,
-   153,   154,   155,   156,   157,     3,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   975,    -1,    -1,    -1,    -1,
-   173,    -1,    -1,    -1,    -1,    -1,   163,   164,   102,   103,
-   104,   105,   169,    -1,    -1,    -1,    -1,   174,    -1,    -1,
-   177,    -1,   179,    -1,   181,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   163,   164,    -1,
-  1311,    -1,    -1,   169,    -1,    -1,    -1,    -1,   174,    -1,
-    -1,  1322,  1323,   179,    -1,   181,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   163,
-   164,    -1,    -1,    -1,    -1,   169,    -1,    -1,    -1,    -1,
-   174,     8,    -1,    -1,    -1,   179,    -1,   181,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,  1382,    -1,     3,     4,     5,  1387,     7,    -1,     9,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,    -1,    34,    35,    36,    37,    -1,    -1,
-    40,    -1,    -1,    -1,  1425,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,  1434,    -1,    -1,     3,     4,     5,    -1,
-    -1,    -1,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,  1467,    34,    35,    36,
-    37,    -1,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,  1482,   102,   103,   104,   105,    -1,    -1,  1489,    -1,
-    -1,    -1,    -1,  1494,    -1,  1496,   153,   154,   155,   156,
-   157,    -1,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   149,
-   150,   151,   152,    -1,    -1,   102,   103,   104,   105,    -1,
-    -1,    -1,    -1,   163,   164,    -1,    -1,    -1,     8,   169,
-   170,   171,    -1,    -1,   174,    -1,   176,    -1,   178,   179,
-     3,     4,    -1,    -1,    -1,    -1,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-    -1,    -1,     8,    -1,    -1,    -1,   163,   164,    41,    -1,
-    -1,    -1,   169,    -1,    -1,    -1,    -1,   174,    -1,    -1,
-    -1,    -1,   179,    -1,    -1,    -1,    -1,    -1,    61,    62,
-    63,    64,    65,    66,    -1,    -1,    -1,    -1,     3,     4,
-    -1,    74,    75,    -1,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    -1,   102,
-   103,   104,   105,     3,     4,    -1,    -1,    -1,    -1,     9,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,    -1,
-   163,   164,    -1,    -1,    -1,    -1,   169,   102,   103,   104,
-   105,   174,    -1,    -1,    -1,    -1,   179,   153,   154,   155,
-   156,   157,    -1,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,
-    -1,    -1,   102,   103,   104,   105,    -1,    41,    42,    43,
-    44,    45,    46,    47,    48,    -1,    50,    -1,    52,    53,
-    -1,    55,    56,    -1,    -1,    -1,    -1,    -1,   163,   164,
-    -1,    -1,    -1,    -1,   169,    -1,    -1,    -1,    72,   174,
-    -1,    -1,    -1,    -1,   179,    -1,    -1,    81,    82,    83,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   163,   164,    99,    -1,    -1,    -1,   169,
-    -1,    -1,    -1,    -1,   174,    -1,    -1,    -1,    -1,   179,
-    41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
-    -1,    52,    53,    -1,    55,    56,    -1,    -1,    -1,    -1,
-    -1,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
-    50,    72,    52,    53,    -1,    55,    56,    -1,    -1,    -1,
-    81,    82,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    99,    -1,
-    -1,    81,    82,    83,    -1,    -1,    -1,    -1,   182,    41,
-    42,    43,    44,    45,    46,    47,    48,    -1,    50,    99,
-    52,    53,    -1,    55,    56,    -1,    -1,    -1,    -1,    -1,
-    41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
-    72,    52,    53,    -1,    55,    56,    -1,    -1,    -1,    81,
-    82,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    72,    -1,    -1,    -1,     0,     1,    99,     3,     4,
-    81,    82,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   182,    -1,    -1,    -1,    -1,    -1,    -1,    99,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    -1,
-    -1,    -1,   182,    38,    39,    -1,    41,    42,    43,    44,
-    45,    46,    47,    48,    -1,    50,    51,    52,    53,    54,
-    55,    56,    -1,    -1,    -1,    60,    61,    62,    63,    64,
-    65,    66,    -1,    68,    69,    70,    71,    72,    44,    74,
-    75,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    -1,
-   182,    -1,    -1,    88,    -1,    90,    -1,    92,    93,    94,
-    95,    96,    97,    98,    99,   100,   101,    -1,    -1,    -1,
-    -1,   182,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,
-   125,   126,   127,   128,   129,   130,   131,    -1,    -1,    -1,
-   106,   107,   108,    -1,    -1,    -1,    -1,    -1,   114,   115,
-   116,   117,   118,   119,   120,   121,   122,   123,     4,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   132,   133,   134,   135,
-   136,   137,   138,   139,   140,   141,    -1,   143,   144,   145,
-   146,   147,   148,    -1,    -1,    -1,    -1,    33,    -1,    -1,
-    -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    45,
-    46,    47,    48,    -1,    50,    51,    52,    53,    54,    55,
-    56,    -1,    -1,    -1,    60,    61,    62,    63,    64,    65,
-    66,    -1,    68,    69,    70,    71,    72,    -1,    74,    75,
-    -1,    -1,    -1,    -1,    80,    81,    82,    83,    -1,    -1,
-    -1,    -1,    88,    -1,    90,    -1,    92,    93,    94,    95,
-    96,    97,    98,    99,   100,   101,    41,    42,    43,    44,
-    45,    46,    47,    48,    -1,    50,    -1,    52,    53,    -1,
-    55,    56,   153,   154,   155,   156,   157,    -1,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,    72,    -1,    -1,
-    -1,    -1,   173,    -1,    -1,    -1,    81,    82,    83,   180,
-    -1,   182,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   153,
-   154,   155,   156,   157,    99,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,   182,   153,
-   154,   155,   156,   157,    -1,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,   182,   153,
-   154,   155,   156,   157,    -1,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,    -1,    -1,   153,   154,   155,   156,   157,   182,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,
-   156,   157,   182,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,
-    -1,   153,   154,   155,   156,   157,   182,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,    -1,    -1,   153,   154,   155,   156,   157,
-   182,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,
-   154,   155,   156,   157,   182,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,    -1,    -1,   153,   154,   155,   156,   157,   182,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,
-   156,   157,   182,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,
-    -1,   153,   154,   155,   156,   157,   182,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,    -1,    -1,   153,   154,   155,   156,   157,
-   182,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,
-   154,   155,   156,   157,   182,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,    -1,    -1,   153,   154,   155,   156,   157,   182,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,
-   156,   157,   182,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,
-    -1,   153,   154,   155,   156,   157,   182,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,    -1,    -1,   153,   154,   155,   156,   157,
-   182,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,
-   154,   155,   156,   157,   182,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,    -1,    -1,   153,   154,   155,   156,   157,   182,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,
-   156,   157,   182,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,
-    -1,   153,   154,   155,   156,   157,   182,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,    -1,    -1,   153,   154,   155,   156,   157,
-   182,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,
-   154,   155,   156,   157,   182,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   175,    -1,    -1,    -1,    -1,   180,   153,   154,   155,
-   156,   157,    -1,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,
-   154,   155,   156,   157,   180,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   153,   154,   155,   156,   157,   180,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   153,   154,   155,   156,   157,   180,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   153,   154,   155,   156,   157,
-   180,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,   154,   155,
-   156,   157,   180,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,
-   154,   155,   156,   157,   180,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   153,   154,   155,   156,   157,   180,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   153,   154,   155,   156,   157,   180,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   153,   154,   155,   156,   157,
-   180,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,   154,   155,
-   156,   157,   180,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,
-   154,   155,   156,   157,   180,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   153,   154,   155,   156,   157,   180,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   153,   154,   155,   156,   157,   180,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   153,   154,   155,   156,   157,
-   180,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,   154,   155,
-   156,   157,   180,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,
-   154,   155,   156,   157,   180,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   153,   154,   155,   156,   157,   180,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   153,   154,   155,   156,   157,   180,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   153,   154,   155,   156,   157,
-   180,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,   154,   155,
-   156,   157,   180,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,
-   154,   155,   156,   157,   180,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   153,   154,   155,   156,   157,   180,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   153,   154,   155,   156,   157,   180,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   153,   154,   155,   156,   157,
-   180,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,   154,   155,
-   156,   157,   180,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,
-   154,   155,   156,   157,   180,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   153,   154,   155,   156,   157,   180,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   153,   154,   155,   156,   157,   180,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   153,   154,   155,   156,   157,
-   180,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,   154,   155,
-   156,   157,   180,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,
-   154,   155,   156,   157,   180,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   153,   154,   155,   156,   157,   180,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   153,   154,   155,   156,   157,   180,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   153,   154,   155,   156,   157,
-   180,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,   154,   155,
-   156,   157,   180,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,
-   154,   155,   156,   157,   180,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   153,   154,   155,   156,   157,   180,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   153,   154,   155,   156,   157,   180,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   153,   154,   155,   156,   157,
-   180,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,   154,   155,
-   156,   157,   180,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   153,
-   154,   155,   156,   157,   180,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   153,   154,   155,   156,   157,   180,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   153,   154,   155,   156,   157,   180,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,    -1,    -1,   177,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-    -1,    -1,   177,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,
-   157,    -1,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
-   154,   155,   156,   157,    -1,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   175,   153,   154,   155,   156,   157,    -1,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
-    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,   157,
-    -1,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-   175,   153,   154,   155,   156,   157,    -1,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   175,   153,   154,   155,   156,   157,    -1,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
-    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
-   156,   157,    -1,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,
-   153,   154,   155,   156,   157,    -1,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
-   173,    -1,   175,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,
-   157,    -1,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
-   154,   155,   156,   157,    -1,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   175,   153,   154,   155,   156,   157,    -1,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
-    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,   157,
-    -1,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-   175,   153,   154,   155,   156,   157,    -1,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   175,   153,   154,   155,   156,   157,    -1,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
-    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
-   156,   157,    -1,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,
-   153,   154,   155,   156,   157,    -1,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
-   173,    -1,   175,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,
-   157,    -1,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
-   154,   155,   156,   157,    -1,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   175,   153,   154,   155,   156,   157,    -1,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
-    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,   157,
-    -1,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-   175,   153,   154,   155,   156,   157,    -1,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   175,   153,   154,   155,   156,   157,    -1,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
-    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
-   156,   157,    -1,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,
-   153,   154,   155,   156,   157,    -1,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
-   173,    -1,   175,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,
-   157,    -1,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
-   154,   155,   156,   157,    -1,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   175,   153,   154,   155,   156,   157,    -1,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
-    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,   157,
-    -1,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-   175,   153,   154,   155,   156,   157,    -1,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   175,   153,   154,   155,   156,   157,    -1,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
-    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
-   156,   157,    -1,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,
-   153,   154,   155,   156,   157,    -1,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
-   173,    -1,   175,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,
-   157,    -1,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
-   154,   155,   156,   157,    -1,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   175,   153,   154,   155,   156,   157,    -1,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
-    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,   157,
-    -1,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-   175,   153,   154,   155,   156,   157,    -1,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
-    -1,   173,    -1,   175,   153,   154,   155,   156,   157,    -1,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
-    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
-   156,   157,    -1,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,
-   153,   154,   155,   156,   157,    -1,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
-   173,    -1,   175,   153,   154,   155,   156,   157,    -1,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
-    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,
-   157,    -1,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
-   154,   155,   156,   157,    -1,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
-    -1,   175,   153,   154,   155,   156,   157,    -1,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
-    -1,    -1,   173,    -1,   175,   153,   154,   155,   156,   157,
-    -1,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
-   155,   156,   157,    -1,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
-   175
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -49
+static const short yytable[] =
+{
+     145,   214,   216,    74,   144,   249,    75,   566,   505,   149,
+     639,   381,   849,   541,   386,  1317,   639,   985,   186,  1317,
+     212,   189,  1317,  1135,  1136,   202,  1262,   254,   711,   205,
+     155,  1263,   200,   212,   157,   155,   394,   405,   383,   407,
+     384,   212,  1212,   311,     5,   372,   373,    96,   986,   121,
+     122,   123,   124,   152,  1262,   125,   988,  1043,  1192,  1263,
+     758,   501,   121,   122,   123,   124,   840,  1193,   125,   526,
+     121,   122,   123,   124,   527,     6,   125,    96,   372,   373,
+     372,   373,   640,   641,   642,   643,   372,   373,   640,   641,
+     642,   643,   372,   373,   987,  1017,    84,  1018,   374,   501,
+     372,   373,   989,  1268,   375,  1271,    85,   372,   373,  1019,
+     256,  1020,   257,  1262,   304,   305,   306,   557,  1263,   307,
+     310,   137,   138,   315,  1021,   395,  1022,   312,   313,  1281,
+     335,    86,   336,   337,   338,   212,   340,   156,   342,   343,
+    1316,   354,   156,    87,   759,   175,   176,   979,   760,   193,
+     841,   842,   194,   372,   373,  1317,   177,   370,   371,  1317,
+    1153,   201,  1317,   178,   121,   122,   123,   124,  1320,  1162,
+     125,   638,  1246,    88,   372,   373,  1169,  1262,   392,   393,
+    1262,   396,  1263,   398,   150,  1263,   401,   402,   644,   130,
+     131,   132,   133,   717,   952,   187,   213,  1317,   190,   206,
+     705,  1317,   203,  1317,   255,   712,   731,   137,   138,   215,
+     385,   137,   138,    89,   812,   372,   373,    90,   704,   130,
+     131,   132,   133,   594,   372,   373,     7,  1323,   258,    91,
+     259,   444,   491,   492,   493,   494,   448,   449,   450,   451,
+     452,   453,   454,   455,   456,   457,   458,   459,   460,   461,
+     462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
+     472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
+     482,   483,   484,   485,   486,   487,   488,   489,    92,   501,
+    1404,  1090,   692,  1408,   693,  1411,   137,   138,   504,   500,
+     159,  1427,   501,   812,  1431,   506,   148,   761,   511,   512,
+     513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
+     523,   524,   525,   973,   372,   373,   372,   373,  1032,   532,
+     260,   534,   261,   151,  1446,  1033,   305,   500,  1450,   152,
+    1452,   567,   153,   884,  1282,   545,   546,   547,  1286,   549,
+     550,   551,   552,   553,   554,   555,   154,     8,     9,    10,
+      11,    12,    13,    14,    15,   578,   579,   568,   569,   570,
+     571,   832,   372,   373,   157,   581,   631,  1262,   158,   585,
+     586,   632,  1263,   562,   562,   590,   565,   565,   694,  1204,
+    1262,  1262,  1262,   695,   598,  1263,  1263,  1263,  1002,  1003,
+      93,   303,   179,   181,   863,   159,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     372,   373,   160,   853,   892,   893,   894,   895,   702,   637,
+     130,   131,   132,   133,   352,   969,  1176,  1206,   707,   358,
+     702,  1177,  1367,  1368,  1369,  1370,  1213,   501,   702,  1374,
+     703,  1077,   137,   138,   838,   130,   131,   132,   133,   372,
+     373,   262,   382,   263,  1262,   137,   138,   387,   388,  1263,
+     251,  1052,   252,   702,   161,   732,   700,   137,   138,   305,
+     501,  1433,  1141,   372,   373,   708,   162,   706,  1250,   126,
+     127,   128,   129,   163,  1464,  1466,  1467,   372,   373,   264,
+    1208,   265,   372,   373,   164,  1416,  1417,   500,   718,  1420,
+     501,   501,   501,   501,  1313,   168,   173,   700,   729,  1319,
+     500,   174,   733,   734,   266,   367,   267,   369,   739,   372,
+     373,   183,   996,   376,   184,   185,   972,   974,   749,   750,
+     329,   330,   331,  1011,  1012,   874,  1322,   753,   332,  1455,
+     134,   135,   182,   490,   212,   195,   136,   165,   166,   762,
+     167,   139,   137,   138,   308,   188,   142,   496,   309,   252,
+     814,   191,   268,   774,   269,   776,   777,   327,   328,   329,
+     330,   331,  1480,   121,   122,   123,   124,   332,   192,   125,
+      40,    41,    42,    43,   169,    45,   875,   170,   171,  1491,
+     172,   137,   138,    51,    52,   446,   537,   270,   252,   271,
+     137,   138,   198,   196,  1503,   730,   199,   252,   501,   272,
+     813,   273,   197,   274,   910,   275,   207,   318,   319,   320,
+     833,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,   936,   937,   938,   939,   940,   332,  1118,   276,
+     208,   277,   822,   823,   317,   278,  1142,   279,   280,   282,
+     281,   283,   284,   286,   285,   287,   824,   825,   826,   827,
+     828,   829,   830,   209,   288,   500,   289,   210,   290,   834,
+     291,   292,   837,   293,   294,   843,   295,   211,   296,   702,
+     297,   867,   318,   319,   320,   852,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   981,   500,   982,
+     700,   702,   332,   995,   702,   702,  1023,  1024,   247,  1104,
+     510,  1105,   250,   560,   561,   949,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   298,   500,   500,
+     500,   500,   332,   316,   898,   899,   702,   542,  1025,   299,
+     904,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+     914,   915,   846,   300,   702,   332,  1026,   301,   302,   318,
+     319,   320,   701,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,  1077,   702,  1078,  1097,  1182,   332,
+    1183,   911,  1077,  1077,  1214,  1305,   314,   954,   955,   333,
+     334,   318,   319,   320,   339,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,  1182,   366,  1379,   813,
+    1429,   332,  1430,  1441,   975,  1442,   341,  1472,   980,  1473,
+     355,   356,   357,  1254,   984,   359,   360,   361,   362,   363,
+     364,   365,   377,   378,   391,   400,   500,   380,   997,   379,
+     998,   389,   390,   399,   403,   397,   404,   406,   408,   409,
+     410,   411,   412,   413,  1013,  1014,  1015,   318,   319,   320,
+     414,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,   415,   416,   417,   418,   419,   332,  1036,  1037,
+    1038,   439,   318,   319,   320,   420,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,  1083,   748,   318,
+     319,   320,   332,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,   421,   422,   423,   424,   441,   332,
+     442,   425,   869,  1074,  1071,   426,   427,   428,  1080,   429,
+     430,   431,   432,   433,   434,   435,  1113,   436,   437,   438,
+     445,    93,   344,   332,  1084,   495,   443,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   498,  1102,  1103,  1175,   507,   508,   509,   543,   345,
+     538,   548,  1112,   556,   856,   857,   580,   859,   583,   861,
+     862,   584,   589,   592,   595,   601,   602,  1132,  1133,    40,
+      41,    42,    43,    44,    45,   562,   896,   603,   565,  1144,
+     604,  1146,    51,    52,   605,   606,   607,   608,   609,   610,
+     611,  1156,   612,   613,   614,   615,   616,   617,  1163,  1164,
+    1165,   618,   902,   903,   619,  1170,   906,   620,   621,  1174,
+     126,   127,   128,   129,   622,  1178,  1179,   623,   625,   624,
+     626,   627,   922,   923,   628,   629,   630,   696,   928,   929,
+     855,  1191,   633,   697,   634,   935,   635,   942,  1195,   318,
+     319,   320,   698,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,   699,   709,  1202,   710,   714,   332,
+     716,   747,   719,   720,   721,   888,   889,   890,   723,   725,
+     726,   134,   346,   735,   751,   752,   764,   136,   765,  1217,
+     768,  1218,   139,   769,   772,   770,   809,   142,   810,   347,
+     773,   821,   990,   916,   992,   779,   780,   781,   782,   783,
+     784,   785,   925,   786,   787,   999,  1000,  1001,   788,   789,
+    1004,  1005,  1006,  1007,  1008,  1009,  1010,  1243,   790,   817,
+     791,   818,  1247,   318,   319,   320,   792,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,   793,   794,
+     831,   836,   795,   332,  1260,   796,  1266,   797,  1269,   798,
+    1272,  1273,   819,   799,   800,   844,  1276,   801,   802,   845,
+     562,   847,   851,   565,  1284,   891,   803,   858,   860,   871,
+     872,   873,  1292,   804,   805,   806,   848,  1297,   807,   876,
+    1300,   808,   839,   877,  1303,  1304,   811,   878,   870,   879,
+     880,   881,  1307,   882,   883,  1310,   905,   304,   305,  1311,
+     897,   900,   901,    93,   303,   907,  1082,   913,   917,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   912,   918,   978,   919,   920,   921,   924,
+     926,   927,  1080,   930,   931,   932,   933,   934,   943,   953,
+     958,   944,   945,  1351,   946,   947,   948,   950,   968,  1356,
+     951,   970,  1360,   977,   983,   976,   991,   993,   994,  1138,
+    1016,  1029,  1030,  1039,  1035,  1040,  1147,  1044,  1045,  1046,
+    1047,  1048,  1049,  1072,  1381,  1085,  1382,  1054,  1050,  1051,
+    1053,  1055,  1081,  1056,  1423,  1166,  1086,  1057,  1092,  1058,
+    1093,  1059,   126,   127,   128,   129,  1060,  1061,  1062,  1063,
+    1064,  1180,  1065,   320,  1066,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,  1067,  1068,  1119,  1088,
+    1122,   332,  1125,    93,   303,  1459,  1134,  1462,  1094,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   134,   135,  1069,  1482,  1095,  1070,   136,
+    1096,  1099,  1100,  1187,   139,  1101,  1454,   727,  1106,   142,
+    1107,   728,   318,   319,   320,  1108,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,  1109,  1110,  1111,
+    1120,  1123,   332,  1126,  1128,  1129,  1130,  1131,  1478,  1479,
+    1145,  1137,  1148,  1149,  1150,  1152,  1155,  1154,  1157,  1158,
+    1151,  1159,  1161,  1160,  1488,  1168,  1167,  1171,  1172,  1173,
+    1181,  1184,   126,   127,   128,   129,  1185,  1186,  1201,  1188,
+    1189,  1190,  1198,  1200,  1194,  1248,  1203,  1216,  1222,  1275,
+    1205,  1207,  1209,  1279,  1215,  1220,  1223,  1225,  1224,  1229,
+    1251,  1226,  1230,    93,   539,  1228,  1234,  1274,  1294,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   134,   135,  1196,  1235,  1236,  1238,   136,
+    1239,  1280,  1249,  1283,   139,  1285,  1241,   865,  1287,   142,
+    1288,   866,  1289,  1309,  1290,  1261,  1291,  1267,  1293,  1270,
+     318,   319,   320,  1295,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,  1197,  1296,  1298,  1299,  1302,
+     332,  1301,  1327,  1306,  1308,  1315,  1314,  1345,  1349,  1352,
+    1329,  1326,  1334,  1330,  1353,  1331,  1332,  1335,  1337,  1339,
+    1364,  1365,   126,   127,   128,   129,  1341,  1347,  1354,   369,
+    1357,  1358,  1361,  1362,  1363,    93,   303,  1366,  1392,  1371,
+    1372,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,  1373,  1375,  1376,  1377,  1378,
+    1383,  1415,  1399,  1405,  1384,  1386,  1395,  1409,  1396,  1387,
+    1407,  1389,  1391,   134,   135,  1414,  1393,  1394,  1397,   136,
+    1398,  1412,  1400,  1403,   139,  1418,  1419,  1421,  1426,   142,
+    1425,   540,   318,   319,   320,  1428,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,  1432,  1434,  1437,
+    1435,  1436,   332,  1447,  1438,  1439,  1440,  1443,  1445,  1444,
+    1448,  1199,  1456,  1449,   126,   127,   128,   129,  1451,  1453,
+    1457,  1458,   318,   319,   320,  1460,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,  1463,  1465,  1468,
+    1470,  1471,   332,  1474,  1475,  1481,  1476,  1477,  1483,  1489,
+    1495,  1486,  1497,  1487,  1505,  1493,   815,  1342,  1494,    73,
+    1490,    81,  1504,  1087,  1498,  1500,  1502,  1496,     0,     0,
+       0,     0,  1499,     0,  1501,  1257,  1258,     0,     0,     0,
+       0,   136,     0,     0,     0,     0,  1259,     0,    93,    94,
+      95,   142,    96,   178,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,   120,  1328,   121,
+     122,   123,   124,    93,   344,   125,     0,     0,     0,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,     0,     0,     0,     0,     0,   318,   319,
+     320,   345,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,    40,    41,    42,    43,    44,    45,   126,   127,   128,
+     129,    93,   303,     0,    51,    52,     0,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,     0,   126,   127,   128,   129,     0,     0,     0,     0,
+       0,     0,     0,     0,   130,   131,   132,   133,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   134,   135,
+       0,     0,     0,   596,   136,     0,   137,   138,     0,   139,
+       0,   140,     0,   141,   142,   318,   319,   320,     0,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+     715,     0,     0,   134,   499,   332,     0,     0,     0,   136,
+     126,   127,   128,   129,   139,    93,   303,   212,     0,   142,
+       0,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,     0,   121,   122,   123,   124,
+     868,     0,   125,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   909,     0,     0,
+       0,   134,   135,     0,     0,     0,     0,   136,     0,     0,
+       0,     0,   139,    93,   539,     0,     0,   142,     0,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,     0,   126,   127,   128,   129,   318,   319,
+     320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,     0,     0,     0,   318,   319,   320,     0,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,   332,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   134,   135,     0,     0,     0,
+       0,   136,   126,   127,   128,   129,   139,     0,     0,     0,
+       0,   142,     0,     0,     0,   318,   319,   320,     0,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,   318,   319,   320,   332,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   134,   135,     0,     0,     0,     0,   136,
+       0,     0,     0,     0,   139,     0,     0,     0,     0,   142,
+     572,    25,    26,   573,   574,    29,   575,    31,     0,    32,
+       0,    34,    35,     0,    37,    38,     0,     0,     0,     0,
+       0,   572,    25,    26,   573,   574,    29,   575,    31,     0,
+      32,    50,    34,    35,     0,    37,    38,     0,     0,     0,
+      54,    55,    56,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    50,     0,     0,     0,     0,     0,    66,     0,
+       0,    54,    55,    56,     0,     0,   572,    25,    26,   573,
+     574,    29,   575,    31,     0,    32,     0,    34,    35,    66,
+      37,    38,     0,     0,     0,     0,     0,   572,    25,    26,
+     573,   574,    29,   575,    31,     0,    32,    50,    34,    35,
+       0,    37,    38,     0,     0,     0,    54,    55,    56,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    50,     0,
+       0,     0,     0,     0,    66,     0,     0,    54,    55,    56,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   576,     0,     0,     0,    66,   572,    25,    26,   573,
+     574,    29,   575,    31,     0,    32,     0,    34,    35,     0,
+      37,    38,   582,     0,     0,     0,     0,     0,     0,     0,
+      -5,     1,     0,    -5,   -48,     0,     0,    50,     0,     0,
+       0,     0,     0,     0,     0,     0,    54,    55,    56,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   -48,    66,     0,     0,   599,   -48,   -48,
+       0,   -48,   -48,   -48,   -48,   -48,   -48,   -48,   -48,     0,
+     -48,   -48,   -48,   -48,   -48,   -48,   -48,     0,   600,     0,
+     -48,   -48,   -48,   -48,   -48,   -48,   -48,     0,   -48,   -48,
+     -48,   -48,   -48,   217,   -48,   -48,     0,     0,     0,     0,
+     -48,   -48,   -48,   -48,     0,     0,     0,     0,   -48,     0,
+     -48,     0,   -48,   -48,   -48,   -48,   -48,   -48,   -48,   -48,
+     -48,   -48,   318,   319,   320,     0,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   775,     0,     0,
+       0,     0,   332,     0,    -5,    -5,    -5,    -5,    -5,    -5,
+      -5,    -5,     0,     0,     0,   218,   219,   220,     0,     0,
+       0,     0,     0,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,    20,     0,     0,     0,     0,     0,     0,
+       0,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,     0,   241,   242,   243,   244,   245,   246,     0,     0,
+       0,     0,    21,     0,     0,     0,     0,    22,    23,     0,
+      24,    25,    26,    27,    28,    29,    30,    31,     0,    32,
+      33,    34,    35,    36,    37,    38,     0,     0,     0,    39,
+      40,    41,    42,    43,    44,    45,     0,    46,    47,    48,
+      49,    50,     0,    51,    52,     0,     0,     0,     0,    53,
+      54,    55,    56,     0,     0,     0,     0,    57,     0,    58,
+       0,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,   572,    25,    26,   573,   574,    29,   575,    31,     0,
+      32,     0,    34,    35,     0,    37,    38,   318,   319,   320,
+       0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,    50,     0,     0,     0,     0,   332,     0,     0,
+       0,    54,    55,    56,  1116,     0,  1117,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   318,   319,   320,    66,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+       0,     0,     0,  1139,     0,  1140,   318,   319,   320,     0,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+       0,     0,     0,  1255,     0,  1256,   318,   319,   320,     0,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+       0,     0,   318,   319,   320,   736,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,     0,     0,   318,   319,
+     320,   740,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,     0,     0,   318,   319,   320,   741,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,     0,     0,
+     318,   319,   320,   864,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,     0,     0,   318,   319,   320,   887,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+       0,     0,   318,   319,   320,  1114,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,     0,     0,   318,   319,
+     320,  1277,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,     0,     0,   318,   319,   320,  1278,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,     0,     0,
+     318,   319,   320,  1312,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,     0,     0,   318,   319,   320,  1318,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+       0,     0,   318,   319,   320,  1321,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,     0,     0,   318,   319,
+     320,  1324,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,     0,     0,   318,   319,   320,  1325,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,     0,     0,
+     318,   319,   320,  1348,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,     0,     0,   318,   319,   320,  1385,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+       0,     0,   318,   319,   320,  1388,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,     0,     0,   318,   319,
+     320,  1390,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,     0,     0,   318,   319,   320,  1402,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,     0,     0,
+     318,   319,   320,  1485,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,     0,     0,   318,   319,   320,  1492,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,   497,     0,
+     318,   319,   320,   558,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,   318,   319,   320,   528,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,   318,   319,
+     320,   558,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,   318,   319,   320,   559,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,   318,   319,   320,   593,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+     318,   319,   320,   672,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,   318,   319,   320,   673,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,   318,   319,
+     320,   686,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,   318,   319,   320,   687,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,   318,   319,   320,   688,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+     318,   319,   320,   689,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,   318,   319,   320,   690,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,   318,   319,
+     320,   691,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,   318,   319,   320,   754,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,   318,   319,   320,   755,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+     318,   319,   320,   756,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,   318,   319,   320,   854,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,   318,   319,
+     320,   885,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,   318,   319,   320,   886,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,   318,   319,   320,   908,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+     318,   319,   320,  1027,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,   318,   319,   320,  1028,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,   318,   319,
+     320,  1041,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,   318,   319,   320,  1042,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,   318,   319,   320,  1075,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+     318,   319,   320,  1076,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,   318,   319,   320,  1091,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,   318,   319,
+     320,  1098,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,   318,   319,   320,  1210,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,   318,   319,   320,  1211,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+     318,   319,   320,  1219,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,   318,   319,   320,  1221,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,   318,   319,
+     320,  1232,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,   318,   319,   320,  1237,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,   318,   319,   320,  1240,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+     318,   319,   320,  1244,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,   318,   319,   320,  1245,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,   318,   319,
+     320,  1252,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,   318,   319,   320,  1253,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,     0,     0,   318,   319,   320,  1333,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+     318,   319,   320,  1344,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,     0,     0,   318,   319,   320,  1346,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,     0,     0,   318,   319,
+     320,  1469,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+       0,     0,   318,   319,   320,  1484,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,   318,   319,   320,   503,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,     0,     0,
+       0,     0,     0,   332,   318,   319,   320,   636,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,   318,   319,   320,   651,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,   332,   318,   319,   320,   653,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,   318,   319,   320,
+     655,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,     0,     0,     0,     0,     0,   332,   318,   319,
+     320,   657,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,   318,
+     319,   320,   659,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,     0,     0,     0,     0,     0,   332,
+     318,   319,   320,   661,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,   318,   319,   320,   663,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,     0,     0,     0,     0,
+       0,   332,   318,   319,   320,   665,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,   318,   319,   320,   667,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,     0,     0,
+       0,     0,     0,   332,   318,   319,   320,   669,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,   318,   319,   320,   671,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,   332,   318,   319,   320,   675,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,   318,   319,   320,
+     677,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,     0,     0,     0,     0,     0,   332,   318,   319,
+     320,   679,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,   318,
+     319,   320,   681,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,     0,     0,     0,     0,     0,   332,
+     318,   319,   320,   683,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,   318,   319,   320,   685,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,     0,     0,     0,     0,
+       0,   332,   318,   319,   320,   757,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,   318,   319,   320,   763,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,     0,     0,
+       0,     0,     0,   332,   318,   319,   320,   766,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,   318,   319,   320,   767,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,   332,   318,   319,   320,   835,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,   318,   319,   320,
+     960,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,     0,     0,     0,     0,     0,   332,   318,   319,
+     320,   962,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,   318,
+     319,   320,   964,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,     0,     0,     0,     0,     0,   332,
+     318,   319,   320,   966,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,   318,   319,   320,   967,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,     0,     0,     0,     0,
+       0,   332,   318,   319,   320,  1089,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,   497,   318,   319,   320,     0,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,   332,     0,   529,   318,   319,
+     320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+     530,   318,   319,   320,     0,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,     0,     0,     0,     0,
+       0,   332,     0,   531,   318,   319,   320,     0,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,   533,   318,   319,   320,
+       0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,     0,     0,     0,     0,     0,   332,     0,   535,
+     318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,   536,   318,   319,   320,     0,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,     0,     0,
+       0,     0,     0,   332,     0,   544,   318,   319,   320,     0,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,   587,   318,
+     319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,     0,     0,     0,     0,     0,   332,
+       0,   588,   318,   319,   320,     0,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,   591,   318,   319,   320,     0,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,   332,     0,   597,   318,   319,
+     320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+     650,   318,   319,   320,     0,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,     0,     0,     0,     0,
+       0,   332,     0,   652,   318,   319,   320,     0,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,   654,   318,   319,   320,
+       0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,     0,     0,     0,     0,     0,   332,     0,   656,
+     318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,   658,   318,   319,   320,     0,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,     0,     0,
+       0,     0,     0,   332,     0,   660,   318,   319,   320,     0,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,   662,   318,
+     319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,     0,     0,     0,     0,     0,   332,
+       0,   664,   318,   319,   320,     0,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,   666,   318,   319,   320,     0,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,   332,     0,   668,   318,   319,
+     320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+     670,   318,   319,   320,     0,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,     0,     0,     0,     0,
+       0,   332,     0,   674,   318,   319,   320,     0,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,   676,   318,   319,   320,
+       0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,     0,     0,     0,     0,     0,   332,     0,   678,
+     318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,   680,   318,   319,   320,     0,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,     0,     0,
+       0,     0,     0,   332,     0,   682,   318,   319,   320,     0,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,   684,   318,
+     319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,     0,     0,     0,     0,     0,   332,
+       0,   722,   318,   319,   320,     0,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,   724,   318,   319,   320,     0,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,   332,     0,   737,   318,   319,
+     320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+     738,   318,   319,   320,     0,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,     0,     0,     0,     0,
+       0,   332,     0,   742,   318,   319,   320,     0,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,   743,   318,   319,   320,
+       0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,     0,     0,     0,     0,     0,   332,     0,   744,
+     318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,   745,   318,   319,   320,     0,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,     0,     0,
+       0,     0,     0,   332,     0,   746,   318,   319,   320,     0,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,   771,   318,
+     319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,     0,     0,     0,     0,     0,   332,
+       0,   778,   318,   319,   320,     0,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,   959,   318,   319,   320,     0,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,   332,     0,   961,   318,   319,
+     320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+     963,   318,   319,   320,     0,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,     0,     0,     0,     0,
+       0,   332,     0,   965,   318,   319,   320,     0,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,   971,   318,   319,   320,
+       0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,     0,     0,     0,     0,     0,   332,     0,  1031,
+     318,   319,   320,     0,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,     0,     0,     0,     0,     0,
+     332,     0,  1115,   318,   319,   320,     0,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,     0,     0,
+       0,     0,     0,   332,     0,  1143,   318,   319,   320,     0,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,     0,     0,     0,     0,     0,   332,     0,  1227,   318,
+     319,   320,     0,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,     0,     0,     0,     0,     0,   332,
+       0,  1231,   318,   319,   320,     0,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,     0,     0,     0,
+       0,     0,   332,     0,  1233,   318,   319,   320,     0,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,   332,     0,  1336,   318,   319,
+     320,     0,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,     0,     0,     0,     0,     0,   332,     0,
+    1338,   318,   319,   320,     0,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,     0,     0,     0,     0,
+       0,   332,     0,  1340,   318,   319,   320,     0,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,     0,
+       0,     0,     0,     0,   332,     0,  1343,   318,   319,   320,
+       0,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,     0,     0,     0,     0,     0,   332,     0,  1401
 };
-/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/share/bison.simple"
-/* This file comes from bison-1.28.  */
-
-/* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+static const short yycheck[] =
+{
+      20,    67,    68,     4,    20,    91,     4,   375,   311,     6,
+       4,   187,   712,   347,   190,  1264,     4,     6,     4,  1268,
+       5,     4,  1271,  1032,  1033,     4,    68,     4,     4,     4,
+      67,    73,    45,     5,    67,    67,    85,   213,     4,   215,
+       6,     5,  1134,     4,     6,   163,   164,     7,     6,    34,
+      35,    36,    37,   174,    68,    40,     6,   175,     6,    73,
+     181,   309,    34,    35,    36,    37,     4,     6,    40,   175,
+      34,    35,    36,    37,   180,     0,    40,     7,   163,   164,
+     163,   164,    76,    77,    78,    79,   163,   164,    76,    77,
+      78,    79,   163,   164,    52,   180,     7,   182,   181,   347,
+     163,   164,    52,  1207,   181,  1209,     6,   163,   164,   180,
+     174,   182,   176,    68,   134,   135,   136,   180,    73,   139,
+     140,   171,   172,   143,   180,   174,   182,    88,    89,  1221,
+     150,     6,   152,   153,   154,     5,   156,   174,   158,   159,
+     182,   161,   174,     6,   181,   163,   164,   847,   181,    41,
+      88,    89,    44,   163,   164,  1404,   174,   177,   178,  1408,
+    1048,   174,  1411,   181,    34,    35,    36,    37,   182,  1057,
+      40,   181,  1181,     6,   163,   164,  1064,    68,   198,   199,
+      68,   201,    73,   203,   181,    73,   206,   207,   182,   149,
+     150,   151,   152,   527,   182,   181,   181,  1446,   181,   174,
+     503,  1450,   181,  1452,   181,   181,   540,   171,   172,   181,
+     176,   171,   172,     6,   178,   163,   164,   174,   178,   149,
+     150,   151,   152,   399,   163,   164,     3,   182,   174,   174,
+     176,   251,   298,   299,   300,   301,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   174,   527,
+    1384,   981,   176,  1387,   178,  1389,   171,   172,     7,   309,
+     174,   182,   540,   178,   182,   311,   174,   181,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,   332,     7,   163,   164,   163,   164,   174,   339,
+     174,   341,   176,     6,  1428,   181,   346,   347,  1432,   174,
+    1434,   180,   174,   180,  1222,   355,   356,   357,  1226,   359,
+     360,   361,   362,   363,   364,   365,   174,   124,   125,   126,
+     127,   128,   129,   130,   131,     6,     7,   377,   378,   379,
+     380,   695,   163,   164,    67,   385,   175,    68,   174,   389,
+     390,   180,    73,   374,   375,   395,   374,   375,   175,   180,
+      68,    68,    68,   180,   404,    73,    73,    73,    58,    59,
+       3,     4,    41,    42,   728,   174,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+     163,   164,    49,   175,   758,   759,   760,   761,   180,   445,
+     149,   150,   151,   152,   160,   175,   175,   180,   504,   165,
+     180,   180,  1330,  1331,  1332,  1333,   175,   695,   180,  1337,
+     182,   180,   171,   172,   702,   149,   150,   151,   152,   163,
+     164,   174,   188,   176,    68,   171,   172,   193,   194,    73,
+     176,   175,   178,   180,   174,   182,   496,   171,   172,   499,
+     728,   182,     8,   163,   164,   505,    45,   503,  1188,   102,
+     103,   104,   105,    45,   182,   182,   182,   163,   164,   174,
+     180,   176,   163,   164,    45,  1393,  1394,   527,   528,  1397,
+     758,   759,   760,   761,   180,    47,   174,   537,   538,   180,
+     540,   181,   542,   543,   174,   174,   176,   176,   548,   163,
+     164,    41,   866,   182,    44,    45,   839,   840,   558,   559,
+     165,   166,   167,     6,     7,     6,   180,   567,   173,  1437,
+     163,   164,   181,     4,     5,     4,   169,    44,    45,   579,
+      47,   174,   171,   172,   177,    45,   179,   176,   181,   178,
+     636,     6,   174,   593,   176,   595,   596,   163,   164,   165,
+     166,   167,  1470,    34,    35,    36,    37,   173,     6,    40,
+      61,    62,    63,    64,    41,    66,    57,    44,    45,  1487,
+      47,   171,   172,    74,    75,   254,   176,   174,   178,   176,
+     171,   172,   174,     4,  1502,   176,   174,   178,   866,   174,
+     636,   176,     4,   174,     8,   176,   174,   153,   154,   155,
+     696,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   109,   110,   111,   112,   113,   173,  1016,   174,
+       6,   176,   672,   673,     6,   174,   182,   176,   174,   174,
+     176,   176,   174,   174,   176,   176,   686,   687,   688,   689,
+     690,   691,   692,     4,   174,   695,   176,     4,   174,   699,
+     176,   174,   702,   176,   174,   705,   176,    45,   174,   180,
+     176,   182,   153,   154,   155,   715,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   180,   728,   182,
+     730,   180,   173,   182,   180,   180,   182,   182,   174,     4,
+       6,     6,     5,   372,   373,   811,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   174,   758,   759,
+     760,   761,   173,     6,   764,   765,   180,     8,   182,   174,
+     770,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     780,   781,     6,   174,   180,   173,   182,   174,   174,   153,
+     154,   155,   498,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   180,   180,   182,   182,   180,   173,
+     182,   175,   180,   180,   182,   182,     4,   817,   818,     6,
+       5,   153,   154,   155,   174,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   180,     4,   182,   835,
+     180,   173,   182,   180,   840,   182,   174,   180,   848,   182,
+     181,   174,   174,  1201,   854,   181,   181,   174,   174,   174,
+     174,   174,   181,   181,     6,    91,   866,   176,   868,   181,
+     870,   176,   176,   181,     6,   178,   174,     6,     6,   174,
+     174,   174,   174,   174,   884,   885,   886,   153,   154,   155,
+     174,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   174,   174,   174,   174,   174,   173,   908,   909,
+     910,     5,   153,   154,   155,   174,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   973,   557,   153,
+     154,   155,   173,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   174,   174,   174,   174,   180,   173,
+     175,   174,     6,   953,   950,   174,   174,   174,   958,   174,
+     174,   174,   174,   174,   174,   174,  1012,   174,   174,   174,
+       4,     3,     4,   173,   974,     5,   180,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,     7,  1002,  1003,  1070,   178,     7,   176,     7,    41,
+     181,     7,  1012,   175,   720,   721,     6,   723,     7,   725,
+     726,     7,    86,    88,   181,     5,     5,  1027,  1028,    61,
+      62,    63,    64,    65,    66,  1016,     6,     5,  1016,  1039,
+       5,  1041,    74,    75,     5,     5,     5,     5,     5,     5,
+       5,  1051,     5,     5,     5,     5,     5,     5,  1058,  1059,
+    1060,     5,   768,   769,     5,  1065,   772,     5,     5,  1069,
+     102,   103,   104,   105,     5,  1075,  1076,     5,     5,   142,
+       5,     5,   788,   789,     5,     3,     5,   180,   794,   795,
+     719,  1091,     5,   175,     6,   801,     5,   803,  1098,   153,
+     154,   155,   175,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   180,     6,  1116,     4,   177,   173,
+       6,   178,     7,     7,     7,   754,   755,   756,     7,     7,
+       7,   163,   164,     7,   182,   182,   181,   169,   181,  1139,
+       7,  1141,   174,     7,     7,   174,     5,   179,   175,   181,
+     178,     6,   858,   782,   860,   180,   180,   180,   180,   180,
+     180,   180,   791,   180,   180,   871,   872,   873,   180,   180,
+     876,   877,   878,   879,   880,   881,   882,  1177,   180,   174,
+     180,   174,  1182,   153,   154,   155,   180,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   180,   180,
+       4,     6,   180,   173,  1204,   180,  1206,   180,  1208,   180,
+    1210,  1211,   181,   180,   180,     6,  1216,   180,   180,     6,
+    1201,     7,     6,  1201,  1224,     6,   180,     7,     7,     7,
+       7,     7,  1232,   180,   180,   180,   176,  1237,   180,     7,
+    1240,   180,   177,     7,  1244,  1245,   180,     7,   181,     7,
+       7,     7,  1252,     7,     4,  1255,     7,  1257,  1258,  1259,
+       6,     6,     6,     3,     4,     4,   972,     3,     3,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,     7,     3,     6,   165,     3,     3,     3,
+       3,     3,  1302,     3,     3,     3,     3,     3,     3,   174,
+     181,     5,     5,  1313,     3,     3,     6,     4,   175,  1319,
+       6,   175,  1322,     7,     6,   178,     6,     6,     6,  1035,
+     181,     6,     6,   181,    87,   180,  1042,   180,   175,   180,
+     175,   180,   175,     6,  1344,     6,  1346,   175,   180,   180,
+     180,   175,   178,   180,  1400,  1061,     4,   180,   987,   180,
+     989,   180,   102,   103,   104,   105,   180,   180,   175,   180,
+     180,  1077,   180,   155,   180,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   180,   175,  1017,     6,
+    1019,   173,  1021,     3,     4,  1441,     7,  1443,     6,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,   163,   164,   180,  1472,     6,   180,   169,
+     177,     6,     6,     6,   174,     6,  1436,   177,     6,   179,
+       6,   181,   153,   154,   155,     6,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,     6,     6,     6,
+       6,     6,   173,     6,     6,     6,     6,     6,  1468,  1469,
+       3,    87,     6,     3,     6,     6,     3,     6,     6,     3,
+     165,     6,     3,     6,  1484,     3,     6,     3,     3,     6,
+     181,     4,   102,   103,   104,   105,     6,     6,   181,     7,
+       6,   178,     6,     6,   177,     6,   182,    84,   180,  1215,
+     181,   181,   181,  1219,   181,   175,   180,   175,   180,   175,
+      89,   180,   175,     3,     4,   180,   180,    87,  1234,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,   163,   164,     6,   175,   175,   180,   169,
+     175,     6,   175,     3,   174,     6,   180,   177,     6,   179,
+       3,   181,     6,   182,     6,  1204,     6,  1206,     6,  1208,
+     153,   154,   155,     6,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,     6,     6,     3,     6,   181,
+     173,     5,   180,     6,     5,   181,     6,     6,     6,  1315,
+     182,   181,   175,   180,     6,   180,   180,   175,   180,   175,
+    1326,  1327,   102,   103,   104,   105,   180,   180,     6,  1258,
+       6,     6,     6,     6,     6,     3,     4,     6,   182,     6,
+       6,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,     6,     6,     6,     6,     5,
+       5,    84,     6,     6,   181,   180,   175,     6,   175,   181,
+    1386,   181,   180,   163,   164,  1391,   180,   180,   180,   169,
+     180,     6,   181,   180,   174,     6,     6,     5,     5,   179,
+       6,   181,   153,   154,   155,   181,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   181,   181,   180,
+     182,   181,   173,  1429,   180,   175,   175,   181,     6,   182,
+       6,     6,  1438,     6,   102,   103,   104,   105,     6,    84,
+       6,     6,   153,   154,   155,     6,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,     6,   182,   181,
+     180,   180,   173,     6,     6,  1471,     6,     6,     6,     6,
+       6,   180,     6,   180,     6,   180,   638,  1302,   175,     4,
+    1486,     4,   175,   977,   180,   180,   180,  1493,    -1,    -1,
+      -1,    -1,  1498,    -1,  1500,   163,   164,    -1,    -1,    -1,
+      -1,   169,    -1,    -1,    -1,    -1,   174,    -1,     3,     4,
+       5,   179,     7,   181,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,     6,    34,
+      35,    36,    37,     3,     4,    40,    -1,    -1,    -1,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    -1,    -1,    -1,    -1,    -1,   153,   154,
+     155,    41,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    61,    62,    63,    64,    65,    66,   102,   103,   104,
+     105,     3,     4,    -1,    74,    75,    -1,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    -1,   102,   103,   104,   105,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   149,   150,   151,   152,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   163,   164,
+      -1,    -1,    -1,     8,   169,    -1,   171,   172,    -1,   174,
+      -1,   176,    -1,   178,   179,   153,   154,   155,    -1,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+       8,    -1,    -1,   163,   164,   173,    -1,    -1,    -1,   169,
+     102,   103,   104,   105,   174,     3,     4,     5,    -1,   179,
+      -1,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
+       8,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,     8,    -1,    -1,
+      -1,   163,   164,    -1,    -1,    -1,    -1,   169,    -1,    -1,
+      -1,    -1,   174,     3,     4,    -1,    -1,   179,    -1,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    -1,   102,   103,   104,   105,   153,   154,
+     155,    -1,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,    -1,    -1,    -1,   153,   154,   155,    -1,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   163,   164,    -1,    -1,    -1,
+      -1,   169,   102,   103,   104,   105,   174,    -1,    -1,    -1,
+      -1,   179,    -1,    -1,    -1,   153,   154,   155,    -1,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,   153,   154,   155,   173,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   163,   164,    -1,    -1,    -1,    -1,   169,
+      -1,    -1,    -1,    -1,   174,    -1,    -1,    -1,    -1,   179,
+      41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
+      -1,    52,    53,    -1,    55,    56,    -1,    -1,    -1,    -1,
+      -1,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
+      50,    72,    52,    53,    -1,    55,    56,    -1,    -1,    -1,
+      81,    82,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    99,    -1,
+      -1,    81,    82,    83,    -1,    -1,    41,    42,    43,    44,
+      45,    46,    47,    48,    -1,    50,    -1,    52,    53,    99,
+      55,    56,    -1,    -1,    -1,    -1,    -1,    41,    42,    43,
+      44,    45,    46,    47,    48,    -1,    50,    72,    52,    53,
+      -1,    55,    56,    -1,    -1,    -1,    81,    82,    83,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
+      -1,    -1,    -1,    -1,    99,    -1,    -1,    81,    82,    83,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   182,    -1,    -1,    -1,    99,    41,    42,    43,    44,
+      45,    46,    47,    48,    -1,    50,    -1,    52,    53,    -1,
+      55,    56,   182,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       0,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    33,    99,    -1,    -1,   182,    38,    39,
+      -1,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
+      50,    51,    52,    53,    54,    55,    56,    -1,   182,    -1,
+      60,    61,    62,    63,    64,    65,    66,    -1,    68,    69,
+      70,    71,    72,    44,    74,    75,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,
+      90,    -1,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   153,   154,   155,    -1,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   182,    -1,    -1,
+      -1,    -1,   173,    -1,   124,   125,   126,   127,   128,   129,
+     130,   131,    -1,    -1,    -1,   106,   107,   108,    -1,    -1,
+      -1,    -1,    -1,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,     4,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+     141,    -1,   143,   144,   145,   146,   147,   148,    -1,    -1,
+      -1,    -1,    33,    -1,    -1,    -1,    -1,    38,    39,    -1,
+      41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
+      51,    52,    53,    54,    55,    56,    -1,    -1,    -1,    60,
+      61,    62,    63,    64,    65,    66,    -1,    68,    69,    70,
+      71,    72,    -1,    74,    75,    -1,    -1,    -1,    -1,    80,
+      81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    90,
+      -1,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
+      50,    -1,    52,    53,    -1,    55,    56,   153,   154,   155,
+      -1,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    72,    -1,    -1,    -1,    -1,   173,    -1,    -1,
+      -1,    81,    82,    83,   180,    -1,   182,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   153,   154,   155,    99,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+      -1,    -1,    -1,   180,    -1,   182,   153,   154,   155,    -1,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+      -1,    -1,    -1,   180,    -1,   182,   153,   154,   155,    -1,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+      -1,    -1,   153,   154,   155,   182,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,   153,   154,
+     155,   182,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,    -1,    -1,   153,   154,   155,   182,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,
+     153,   154,   155,   182,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,    -1,    -1,   153,   154,   155,   182,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+      -1,    -1,   153,   154,   155,   182,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,   153,   154,
+     155,   182,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,    -1,    -1,   153,   154,   155,   182,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,
+     153,   154,   155,   182,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,    -1,    -1,   153,   154,   155,   182,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+      -1,    -1,   153,   154,   155,   182,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,   153,   154,
+     155,   182,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,    -1,    -1,   153,   154,   155,   182,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,
+     153,   154,   155,   182,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,    -1,    -1,   153,   154,   155,   182,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+      -1,    -1,   153,   154,   155,   182,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,   153,   154,
+     155,   182,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,    -1,    -1,   153,   154,   155,   182,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,
+     153,   154,   155,   182,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,    -1,    -1,   153,   154,   155,   182,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,    -1,
+     153,   154,   155,   180,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,   153,   154,   155,   180,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,
+     155,   180,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,   153,   154,   155,   180,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,   180,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+     153,   154,   155,   180,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,   153,   154,   155,   180,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,
+     155,   180,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,   153,   154,   155,   180,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,   180,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+     153,   154,   155,   180,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,   153,   154,   155,   180,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,
+     155,   180,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,   153,   154,   155,   180,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,   180,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+     153,   154,   155,   180,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,   153,   154,   155,   180,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,
+     155,   180,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,   153,   154,   155,   180,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,   180,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+     153,   154,   155,   180,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,   153,   154,   155,   180,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,
+     155,   180,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,   153,   154,   155,   180,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,   180,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+     153,   154,   155,   180,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,   153,   154,   155,   180,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,
+     155,   180,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,   153,   154,   155,   180,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,   180,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+     153,   154,   155,   180,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,   153,   154,   155,   180,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,
+     155,   180,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,   153,   154,   155,   180,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,   180,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+     153,   154,   155,   180,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,   153,   154,   155,   180,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,
+     155,   180,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,   153,   154,   155,   180,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,    -1,    -1,   153,   154,   155,   180,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
+     153,   154,   155,   180,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,    -1,    -1,   153,   154,   155,   180,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,   153,   154,
+     155,   180,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+      -1,    -1,   153,   154,   155,   180,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,   153,   154,   155,   177,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
+      -1,    -1,    -1,   173,   153,   154,   155,   177,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,   153,   154,   155,   177,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,    -1,    -1,    -1,   173,   153,   154,   155,   177,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,   153,   154,   155,
+     177,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    -1,    -1,    -1,    -1,    -1,   173,   153,   154,
+     155,   177,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,   153,
+     154,   155,   177,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
+     153,   154,   155,   177,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,   153,   154,   155,   177,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
+      -1,   173,   153,   154,   155,   177,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,   153,   154,   155,   177,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
+      -1,    -1,    -1,   173,   153,   154,   155,   177,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,   153,   154,   155,   177,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,    -1,    -1,    -1,   173,   153,   154,   155,   177,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,   153,   154,   155,
+     177,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    -1,    -1,    -1,    -1,    -1,   173,   153,   154,
+     155,   177,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,   153,
+     154,   155,   177,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
+     153,   154,   155,   177,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,   153,   154,   155,   177,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
+      -1,   173,   153,   154,   155,   177,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,   153,   154,   155,   177,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
+      -1,    -1,    -1,   173,   153,   154,   155,   177,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,   153,   154,   155,   177,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,    -1,    -1,    -1,   173,   153,   154,   155,   177,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,   153,   154,   155,
+     177,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    -1,    -1,    -1,    -1,    -1,   173,   153,   154,
+     155,   177,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,   153,
+     154,   155,   177,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
+     153,   154,   155,   177,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,   153,   154,   155,   177,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
+      -1,   173,   153,   154,   155,   177,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
+     155,    -1,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+     175,   153,   154,   155,    -1,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
+      -1,   173,    -1,   175,   153,   154,   155,    -1,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
+      -1,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,
+     153,   154,   155,    -1,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,   175,   153,   154,   155,    -1,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
+      -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
+     154,   155,    -1,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
+      -1,   175,   153,   154,   155,    -1,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
+     155,    -1,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+     175,   153,   154,   155,    -1,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
+      -1,   173,    -1,   175,   153,   154,   155,    -1,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
+      -1,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,
+     153,   154,   155,    -1,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,   175,   153,   154,   155,    -1,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
+      -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
+     154,   155,    -1,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
+      -1,   175,   153,   154,   155,    -1,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
+     155,    -1,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+     175,   153,   154,   155,    -1,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
+      -1,   173,    -1,   175,   153,   154,   155,    -1,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
+      -1,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,
+     153,   154,   155,    -1,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,   175,   153,   154,   155,    -1,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
+      -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
+     154,   155,    -1,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
+      -1,   175,   153,   154,   155,    -1,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
+     155,    -1,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+     175,   153,   154,   155,    -1,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
+      -1,   173,    -1,   175,   153,   154,   155,    -1,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
+      -1,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,
+     153,   154,   155,    -1,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,   175,   153,   154,   155,    -1,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
+      -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
+     154,   155,    -1,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
+      -1,   175,   153,   154,   155,    -1,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
+     155,    -1,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+     175,   153,   154,   155,    -1,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
+      -1,   173,    -1,   175,   153,   154,   155,    -1,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
+      -1,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,
+     153,   154,   155,    -1,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,
+     173,    -1,   175,   153,   154,   155,    -1,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,    -1,    -1,
+      -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,
+     154,   155,    -1,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,
+      -1,   175,   153,   154,   155,    -1,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,    -1,    -1,    -1,
+      -1,    -1,   173,    -1,   175,   153,   154,   155,    -1,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+      -1,    -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,
+     155,    -1,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,
+     175,   153,   154,   155,    -1,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,    -1,    -1,    -1,    -1,
+      -1,   173,    -1,   175,   153,   154,   155,    -1,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    -1,
+      -1,    -1,    -1,    -1,   173,    -1,   175,   153,   154,   155,
+      -1,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    -1,    -1,    -1,    -1,    -1,   173,    -1,   175
+};
 
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,     1,   184,   185,   190,     6,     0,     3,   124,   125,
+     126,   127,   128,   129,   130,   131,   186,   187,   188,   189,
+       4,    33,    38,    39,    41,    42,    43,    44,    45,    46,
+      47,    48,    50,    51,    52,    53,    54,    55,    56,    60,
+      61,    62,    63,    64,    65,    66,    68,    69,    70,    71,
+      72,    74,    75,    80,    81,    82,    83,    88,    90,    92,
+      93,    94,    95,    96,    97,    98,    99,   100,   101,   191,
+     192,   193,   211,   212,   213,   216,   217,   218,   219,   220,
+     221,   222,   234,   235,     7,     6,     6,     6,     6,     6,
+     174,   174,   174,     3,     4,     5,     7,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    34,    35,    36,    37,    40,   102,   103,   104,   105,
+     149,   150,   151,   152,   163,   164,   169,   171,   172,   174,
+     176,   178,   179,   209,   210,   237,   238,   251,   174,     6,
+     181,     6,   174,   174,   174,    67,   174,    67,   174,   174,
+      49,   174,    45,    45,    45,    44,    45,    47,    47,    41,
+      44,    45,    47,   174,   181,   163,   164,   174,   181,   239,
+     240,   239,   181,    41,    44,    45,     4,   181,    45,     4,
+     181,     6,     6,    41,    44,     4,     4,     4,   174,   174,
+      45,   174,     4,   181,   248,     4,   174,   174,     6,     4,
+       4,    45,     5,   181,   251,   181,   251,    44,   106,   107,
+     108,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+     141,   143,   144,   145,   146,   147,   148,   174,   241,   241,
+       5,   176,   178,   210,     4,   181,   174,   176,   174,   176,
+     174,   176,   174,   176,   174,   176,   174,   176,   174,   176,
+     174,   176,   174,   176,   174,   176,   174,   176,   174,   176,
+     174,   176,   174,   176,   174,   176,   174,   176,   174,   176,
+     174,   176,   174,   176,   174,   176,   174,   176,   174,   174,
+     174,   174,   174,     4,   237,   237,   237,   237,   177,   181,
+     237,     4,    88,    89,     4,   237,     6,     6,   153,   154,
+     155,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   173,     6,     5,   237,   237,   237,   237,   174,
+     237,   174,   237,   237,     4,    41,   164,   181,   213,   216,
+     222,   237,   245,   246,   237,   181,   174,   174,   245,   181,
+     181,   174,   174,   174,   174,   174,     4,   239,   239,   239,
+     237,   237,   163,   164,   181,   181,   239,   181,   181,   181,
+     176,   215,   245,     4,     6,   176,   215,   245,   245,   176,
+     176,     6,   237,   237,    85,   174,   237,   178,   237,   181,
+      91,   237,   237,     6,   174,   215,     6,   215,     6,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,     5,
+     242,   180,   175,   180,   237,     4,   239,   194,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+       4,   251,   251,   251,   251,     5,   176,   175,     7,   164,
+     237,   246,   247,   177,     7,   209,   210,   178,     7,   176,
+       6,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   175,   180,   180,   175,
+     175,   175,   237,   175,   237,   175,   175,   176,   181,     4,
+     181,   247,     8,     7,   175,   237,   237,   237,     7,   237,
+     237,   237,   237,   237,   237,   237,   175,   180,   180,   180,
+     239,   239,   213,   214,   215,   216,   214,   180,   237,   237,
+     237,   237,    41,    44,    45,    47,   182,   212,     6,     7,
+       6,   237,   182,     7,     7,   237,   237,   175,   175,    86,
+     237,   175,    88,   180,   215,   181,     8,   175,   237,   182,
+     182,     5,     5,     5,     5,     5,     5,     5,     5,     5,
+       5,     5,     5,     5,     5,     5,     5,     5,     5,     5,
+       5,     5,     5,     5,   142,     5,     5,     5,     5,     3,
+       5,   175,   180,     5,     6,     5,   177,   210,   181,     4,
+      76,    77,    78,    79,   182,   197,   201,   204,   206,   207,
+     175,   177,   175,   177,   175,   177,   175,   177,   175,   177,
+     175,   177,   175,   177,   175,   177,   175,   177,   175,   177,
+     175,   177,   180,   180,   175,   177,   175,   177,   175,   177,
+     175,   177,   175,   177,   175,   177,   180,   180,   180,   180,
+     180,   180,   176,   178,   175,   180,   180,   175,   175,   180,
+     237,   245,   180,   182,   178,   209,   210,   251,   237,     6,
+       4,     4,   181,   249,   177,     8,     6,   247,   237,     7,
+       7,     7,   175,     7,   175,     7,     7,   177,   181,   237,
+     176,   247,   182,   237,   237,     7,   182,   175,   175,   237,
+     182,   182,   175,   175,   175,   175,   175,   178,   239,   237,
+     237,   182,   182,   237,   180,   180,   180,   177,   181,   181,
+     181,   181,   237,   177,   181,   181,   177,   177,     7,     7,
+     174,   175,     7,   178,   237,   182,   237,   237,   175,   180,
+     180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
+     180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
+     180,   180,   180,   180,   180,   180,   180,   180,   180,     5,
+     175,   180,   178,   210,   251,   194,   198,   174,   174,   181,
+     208,     6,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,     4,   247,   251,   237,   177,     6,   237,   246,   177,
+       4,    88,    89,   237,     6,     6,     6,     7,   176,   248,
+     250,     6,   237,   175,   180,   239,   245,   245,     7,   245,
+       7,   245,   245,   247,   182,   177,   181,   182,     8,     6,
+     181,     7,     7,     7,     6,    57,     7,     7,     7,     7,
+       7,     7,     7,     4,   180,   180,   180,   182,   239,   239,
+     239,     6,   247,   247,   247,   247,     6,     6,   237,   237,
+       6,     6,   245,   245,   237,     7,   245,     4,   180,     8,
+       8,   175,     7,     3,   237,   237,   239,     3,     3,   165,
+       3,     3,   245,   245,     3,   239,     3,     3,   245,   245,
+       3,     3,     3,     3,     3,   245,   109,   110,   111,   112,
+     113,   236,   245,     3,     5,     5,     3,     3,     6,   241,
+       4,     6,   182,   174,   237,   237,   244,   245,   181,   175,
+     177,   175,   177,   175,   177,   175,   177,   177,   175,   175,
+     175,   175,   209,     7,   209,   210,   178,     7,     6,   248,
+     237,   180,   182,     6,   237,     6,     6,    52,     6,    52,
+     245,     6,   245,     6,     6,   182,   247,   237,   237,   245,
+     245,   245,    58,    59,   245,   245,   245,   245,   245,   245,
+     245,     6,     7,   237,   237,   237,   181,   180,   182,   180,
+     182,   180,   182,   182,   182,   182,   182,   180,   180,     6,
+       6,   175,   174,   181,   243,    87,   237,   237,   237,   181,
+     180,   180,   180,   175,   180,   175,   180,   175,   180,   175,
+     180,   180,   175,   180,   175,   175,   180,   180,   180,   180,
+     180,   180,   175,   180,   180,   180,   180,   180,   175,   180,
+     180,   210,     6,   195,   237,   180,   180,   180,   182,   196,
+     237,   178,   245,   251,   237,     6,     4,   249,     6,   177,
+     248,   180,   239,   239,     6,     6,   177,   182,   180,     6,
+       6,     6,   237,   237,     4,     6,     6,     6,     6,     6,
+       6,     6,   237,   251,   182,   175,   180,   182,   214,   239,
+       6,   223,   239,     6,   226,   239,     6,   229,     6,     6,
+       6,     6,   237,   237,     7,   244,   244,    87,   245,   180,
+     182,     8,   182,   175,   237,     3,   237,   245,     6,     3,
+       6,   165,     6,   236,     6,     3,   237,     6,     3,     6,
+       6,     3,   236,   237,   237,   237,   245,     6,     3,   236,
+     237,     3,     3,     6,   237,   241,   175,   180,   237,   237,
+     245,   181,   180,   182,     4,     6,     6,     6,     7,     6,
+     178,   237,     6,     6,   177,   237,     6,     6,     6,     6,
+       6,   181,   237,   182,   180,   181,   180,   181,   180,   181,
+     180,   180,   243,   175,   182,   181,    84,   237,   237,   180,
+     175,   180,   180,   180,   180,   175,   180,   175,   180,   175,
+     175,   175,   180,   175,   180,   175,   175,   180,   180,   175,
+     180,   180,   199,   237,   180,   180,   244,   237,     6,   175,
+     248,    89,   180,   180,   214,   180,   182,   163,   164,   174,
+     237,   239,    68,    73,   232,   233,   237,   239,   232,   237,
+     239,   232,   237,   237,    87,   245,   237,   182,   182,   245,
+       6,   243,   236,     3,   237,     6,   236,     6,     3,     6,
+       6,     6,   237,     6,   245,     6,     6,   237,     3,     6,
+     237,     5,   181,   237,   237,   182,     6,   237,     5,   182,
+     237,   237,   182,   180,     6,   181,   182,   233,   182,   180,
+     182,   182,   180,   182,   182,   182,   181,   180,     6,   182,
+     180,   180,   180,   180,   175,   175,   175,   180,   175,   175,
+     175,   180,   196,   175,   180,     6,   180,   180,   182,     6,
+     224,   237,   245,     6,     6,   227,   237,     6,     6,   230,
+     237,     6,     6,     6,   245,   245,     6,   236,   236,   236,
+     236,     6,     6,     6,   236,     6,     6,     6,     5,   182,
+     202,   237,   237,     5,   181,   182,   180,   181,   182,   181,
+     182,   180,   182,   180,   180,   175,   175,   180,   180,     6,
+     181,   175,   182,   180,   232,     6,   225,   245,   232,     6,
+     228,   232,     6,   231,   245,    84,   236,   236,     6,     6,
+     236,     5,   200,   251,   205,     6,     5,   182,   181,   180,
+     182,   182,   181,   182,   181,   182,   181,   180,   180,   175,
+     175,   180,   182,   181,   182,     6,   232,   245,     6,     6,
+     232,     6,   232,    84,   237,   236,   245,     6,     6,   251,
+       6,   203,   251,     6,   182,   182,   182,   182,   181,   180,
+     180,   180,   180,   182,     6,     6,     6,     6,   237,   237,
+     236,   245,   251,     6,   180,   182,   180,   180,   237,     6,
+     245,   236,   182,   180,   175,     6,   245,     6,   180,   245,
+     180,   245,   180,   236,   175,     6
+};
 
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
-#ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
-#include <alloca.h>
-#else /* not sparc */
-/* We think this test detects Watcom and Microsoft C.  */
-/* This used to test MSDOS, but that is a bad idea
-   since that symbol is in the user namespace.  */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
-	 instead, just don't use alloca.  */
-#include <malloc.h>
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
 #endif
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
-   So I turned it off.   rms, 2 May 1997.  */
-/* #include <malloc.h>  */
- #pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-		 and on HPUX 10.  Eventually we can turn this on.  */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#endif /* __hpux */
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
 #endif
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
-#endif /* YYSTACK_USE_ALLOCA not defined */
-
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
+#if ! defined (YYSIZE_T)
+# if defined (__STDC__) || defined (__cplusplus)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
 #endif
-
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
 
 #define yyerrok		(yyerrstatus = 0)
 #define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		-2
+#define YYEMPTY		(-2)
 #define YYEOF		0
+
 #define YYACCEPT	goto yyacceptlab
-#define YYABORT 	goto yyabortlab
+#define YYABORT		goto yyabortlab
 #define YYERROR		goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
    Once GCC version 2 has supplanted version 1, this can go.  */
+
 #define YYFAIL		goto yyerrlab
+
 #define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
+
+#define YYBACKUP(Token, Value)					\
 do								\
   if (yychar == YYEMPTY && yylen == 1)				\
-    { yychar = (token), yylval = (value);			\
-      yychar1 = YYTRANSLATE (yychar);				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
       YYPOPSTACK;						\
       goto yybackup;						\
     }								\
   else								\
-    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
+    { 								\
+      yyerror ("syntax error: cannot back up");\
+      YYERROR;							\
+    }								\
 while (0)
 
 #define YYTERROR	1
 #define YYERRCODE	256
 
-#ifndef YYPURE
-#define YYLEX		yylex()
-#endif
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+   are run).  */
 
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX		yylex(&yylval, &yylloc)
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)         \
+  Current.first_line   = Rhs[1].first_line;      \
+  Current.first_column = Rhs[1].first_column;    \
+  Current.last_line    = Rhs[N].last_line;       \
+  Current.last_column  = Rhs[N].last_column;
 #endif
-#else /* not YYLSP_NEEDED */
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
 #ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, YYLEX_PARAM)
+# define YYLEX yylex (YYLEX_PARAM)
 #else
-#define YYLEX		yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
+# define YYLEX yylex ()
 #endif
 
-/* If nonreentrant, generate the variables here */
-
-#ifndef YYPURE
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YYDSYMPRINT(Args)			\
+do {						\
+  if (yydebug)					\
+    yysymprint Args;				\
+} while (0)
+
+# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr, 					\
+                  Token, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
 
-int	yychar;			/*  the lookahead symbol		*/
-YYSTYPE	yylval;			/*  the semantic value of the		*/
-				/*  lookahead symbol			*/
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (cinluded).                                                   |
+`------------------------------------------------------------------*/
 
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;			/*  location data for the lookahead	*/
-				/*  symbol				*/
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short *bottom, short *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short *bottom;
+    short *top;
 #endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
 
-int yynerrs;			/*  number of parse errors so far       */
-#endif  /* not YYPURE */
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
 
-#if YYDEBUG != 0
-int yydebug;			/*  nonzero means print parse trace	*/
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
 
-/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned int yylineno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+             yyrule - 1, yylineno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
+}
 
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YYDSYMPRINT(Args)
+# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef	YYINITDEPTH
-#define YYINITDEPTH 200
+# define YYINITDEPTH 200
 #endif
 
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
 
 #if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
+# undef YYMAXDEPTH
 #endif
 
 #ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
+# define YYMAXDEPTH 10000
 #endif
+
 
-/* Define __yy_memcpy.  Note that the size argument
-   should be passed with type unsigned int, because that is what the non-GCC
-   definitions require.  With GCC, __builtin_memcpy takes an arg
-   of type size_t, but it can handle unsigned int.  */
-
-#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
-#else				/* not GNU C or C++ */
-#ifndef __cplusplus
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     unsigned int count;
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
 {
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
+  register const char *yys = yystr;
 
-  while (i-- > 0)
-    *t++ = *f++;
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  register char *yyd = yydest;
+  register const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
 }
+#  endif
+# endif
 
-#else /* __cplusplus */
+#endif /* !YYERROR_VERBOSE */
 
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
 static void
-__yy_memcpy (char *to, char *from, unsigned int count)
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
 {
-  register char *t = to;
-  register char *f = from;
-  register int i = count;
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    {
+      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+# ifdef YYPRINT
+      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+    }
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 
-  while (i-- > 0)
-    *t++ = *f++;
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
 }
 
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yytype, yyvaluep)
+    int yytype;
+    YYSTYPE *yyvaluep;
 #endif
-#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
 
-#line 217 "/usr/share/bison.simple"
 
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-   into yyparse.  The argument should have type void *.
-   It should actually point to an object.
-   Grammar actions can access the variable by casting it
-   to the proper pointer type.  */
+/* Prevent warnings from -Wmissing-prototypes.  */
 
 #ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-#ifdef YYPARSE_PARAM
-int yyparse (void *);
-#else
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
 int yyparse (void);
+#else
+int yyparse ();
 #endif
-#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The lookahead symbol.  */
+int yychar;
 
+/* The semantic value of the lookahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
 int
-yyparse(YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
+yyparse ()
+
+#endif
+#endif
 {
+  
   register int yystate;
   register int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short	yyssa[YYINITDEPTH];
+  short *yyss = yyssa;
   register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */
 
-  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
-  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  register YYSTYPE *yyvsp;
 
-  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */
 
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
 
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
-#else
 #define YYPOPSTACK   (yyvsp--, yyssp--)
-#endif
 
-  int yystacksize = YYINITDEPTH;
-  int yyfree_stacks = 0;
+  YYSIZE_T yystacksize = YYINITDEPTH;
 
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
 
-  YYSTYPE yyval;		/*  the variable used to return		*/
-				/*  semantic values from the action	*/
-				/*  routines				*/
 
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
   int yylen;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
+  YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
@@ -2670,110 +3338,96 @@ yyparse(YYPARSE_PARAM_ARG)
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
 
-  yyssp = yyss - 1;
+  yyssp = yyss;
   yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
-  yylsp = yyls;
-#endif
 
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
+  goto yysetstate;
 
-  *++yyssp = yystate;
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
 
-  if (yyssp >= yyss + yystacksize - 1)
-    {
-      /* Give user a chance to reallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
-      YYSTYPE *yyvs1 = yyvs;
-      short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
+ yysetstate:
+  *yyssp = yystate;
 
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
       /* Get the current used size of the three stacks, in elements.  */
-      int size = yyssp - yyss + 1;
+      YYSIZE_T yysize = yyssp - yyss + 1;
 
 #ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-	 the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-	 but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yyls1, size * sizeof (*yylsp),
-		 &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yystacksize);
-#endif
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short *yyss1 = yyss;
 
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#endif
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow ("parser stack overflow",
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
 #else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyoverflowlab;
+# else
       /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-	{
-	  yyerror("parser stack overflow");
-	  if (yyfree_stacks)
-	    {
-	      free (yyss);
-	      free (yyvs);
-#ifdef YYLSP_NEEDED
-	      free (yyls);
-#endif
-	    }
-	  return 2;
-	}
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyoverflowlab;
       yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
+      if (YYMAXDEPTH < yystacksize)
 	yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
-      yyfree_stacks = 1;
-#endif
-      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1,
-		   size * (unsigned int) sizeof (*yyssp));
-      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-		   size * (unsigned int) sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1,
-		   size * (unsigned int) sizeof (*yylsp));
-#endif
+
+      {
+	short *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyoverflowlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
 #endif /* no yyoverflow */
 
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
-#endif
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
 
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
 
-      if (yyssp >= yyss + yystacksize - 1)
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
 	YYABORT;
     }
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
   goto yybackup;
- yybackup:
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
 
 /* Do appropriate processing given the current state.  */
 /* Read a lookahead token if we need one and don't already have one.  */
@@ -2782,417 +3436,435 @@ yynewstate:
   /* First try to decide what to do without reference to lookahead token.  */
 
   yyn = yypact[yystate];
-  if (yyn == YYFLAG)
+  if (yyn == YYPACT_NINF)
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
-
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   if (yychar == YYEMPTY)
     {
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Reading a token: ");
-#endif
+      YYDPRINTF ((stderr, "Reading a token: "));
       yychar = YYLEX;
     }
 
-  /* Convert token to internal form (in yychar1) for indexing tables with */
-
-  if (yychar <= 0)		/* This means end of input. */
+  if (yychar <= YYEOF)
     {
-      yychar1 = 0;
-      yychar = YYEOF;		/* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Now at end of input.\n");
-#endif
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
-      if (yydebug)
-	{
-	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-	  /* Give the individual parser a way to print the precise meaning
-	     of a token, for further debugging info.  */
-#ifdef YYPRINT
-	  YYPRINT (stderr, yychar, yylval);
-#endif
-	  fprintf (stderr, ")\n");
-	}
-#endif
+      yytoken = YYTRANSLATE (yychar);
+      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
     }
 
-  yyn += yychar1;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
     goto yydefault;
-
   yyn = yytable[yyn];
-
-  /* yyn is what to do for this token type in this state.
-     Negative => reduce, -yyn is rule number.
-     Positive => shift, yyn is new state.
-       New state is final state => don't bother to shift,
-       just return success.
-     0, or most negative number => error.  */
-
-  if (yyn < 0)
+  if (yyn <= 0)
     {
-      if (yyn == YYFLAG)
+      if (yyn == 0 || yyn == YYTABLE_NINF)
 	goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
-  else if (yyn == 0)
-    goto yyerrlab;
 
   if (yyn == YYFINAL)
     YYACCEPT;
 
   /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
+  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
     yychar = YYEMPTY;
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
 
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
 
   yystate = yyn;
   goto yynewstate;
 
-/* Do the default action for the current state.  */
-yydefault:
 
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
   yyn = yydefact[yystate];
   if (yyn == 0)
     goto yyerrlab;
+  goto yyreduce;
+
 
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
 yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
 
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      int i;
-
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-	       yyn, yyrline[yyn]);
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
 
-      /* Print the symbols being reduced, and their result.  */
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-    }
-#endif
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
 
 
-  switch (yyn) {
-
-case 3:
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 4:
 #line 160 "Gmsh.y"
-{ yyerrok; return 1; ;
-    break;}
-case 6:
+    { yyerrok; return 1; ;}
+    break;
+
+  case 7:
 #line 176 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 7:
+    { return 1; ;}
+    break;
+
+  case 8:
 #line 177 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 8:
+    { return 1; ;}
+    break;
+
+  case 9:
 #line 178 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 9:
+    { return 1; ;}
+    break;
+
+  case 10:
 #line 183 "Gmsh.y"
-{
+    {
       yymsg(INFO, "Reading Step Iso-10303-21 data");
       Create_Step_Solid_BRep();
-    ;
-    break;}
-case 10:
+    ;}
+    break;
+
+  case 11:
 #line 188 "Gmsh.y"
-{
+    {
       Resolve_BREP ();
       yymsg(INFO, "Read Step Iso-10303-21 data");
-    ;
-    break;}
-case 14:
+    ;}
+    break;
+
+  case 15:
 #line 199 "Gmsh.y"
-{
-    ;
-    break;}
-case 15:
+    {
+    ;}
+    break;
+
+  case 16:
 #line 202 "Gmsh.y"
-{
-    ;
-    break;}
-case 16:
+    {
+    ;}
+    break;
+
+  case 17:
 #line 206 "Gmsh.y"
-{
-    ;
-    break;}
-case 17:
+    {
+    ;}
+    break;
+
+  case 18:
 #line 212 "Gmsh.y"
-{
+    {
       Add_Cartesian_Point((int)yyvsp[-8].d, yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]);
-    ;
-    break;}
-case 18:
+    ;}
+    break;
+
+  case 19:
 #line 218 "Gmsh.y"
-{
+    {
       Add_BSpline_Curve_With_Knots ((int)yyvsp[-22].d, yyvsp[-18].c, (int) yyvsp[-16].d, yyvsp[-14].l,	yyvsp[-6].l, yyvsp[-4].l, 0., 1.);
-    ;
-    break;}
-case 19:
+    ;}
+    break;
+
+  case 20:
 #line 225 "Gmsh.y"
-{
+    {
       Add_BSpline_Surface_With_Knots ((int)yyvsp[-30].d, yyvsp[-26].c, (int) yyvsp[-24].d, (int) yyvsp[-22].d, yyvsp[-20].l, yyvsp[-10].l,
 				      yyvsp[-8].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1., 0., 1. );
-    ;
-    break;}
-case 20:
+    ;}
+    break;
+
+  case 21:
 #line 231 "Gmsh.y"
-{
+    {
       Add_Edge_Curve ((int)yyvsp[-14].d, yyvsp[-10].c , (int)yyvsp[-8].d , (int)yyvsp[-6].d, (int)yyvsp[-4].d);
-    ;
-    break;}
-case 21:
+    ;}
+    break;
+
+  case 22:
 #line 235 "Gmsh.y"
-{
+    {
       Add_Face_Outer_Bound((int)yyvsp[-10].d, yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-2].i, 1);
-    ;
-    break;}
-case 22:
+    ;}
+    break;
+
+  case 23:
 #line 239 "Gmsh.y"
-{
+    {
       // check the norm! Face_Bound : hole outside surface!
       yymsg(INFO, "Found a face bound");
       Add_Face_Outer_Bound((int)yyvsp[-10].d, yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-2].i, 0);
-    ;
-    break;}
-case 23:
+    ;}
+    break;
+
+  case 24:
 #line 246 "Gmsh.y"
-{
+    {
       Add_Oriented_Edge((int)yyvsp[-14].d, yyvsp[-10].c, (int)yyvsp[-4].d, yyvsp[-2].i);
-    ;
-    break;}
-case 24:
+    ;}
+    break;
+
+  case 25:
 #line 250 "Gmsh.y"
-{
+    {
       Add_Edge_Loop((int)yyvsp[-8].d, yyvsp[-4].c, yyvsp[-2].l);
-    ;
-    break;}
-case 25:
+    ;}
+    break;
+
+  case 26:
 #line 255 "Gmsh.y"
-{
+    {
       Add_Advanced_Face((int)yyvsp[-12].d, yyvsp[-8].c, yyvsp[-6].l, (int)yyvsp[-4].d, yyvsp[-2].i);
-    ;
-    break;}
-case 26:
+    ;}
+    break;
+
+  case 27:
 #line 259 "Gmsh.y"
-{
+    {
       Add_Vertex_Point((int)yyvsp[-8].d, yyvsp[-4].c, (int)yyvsp[-2].d);
-    ;
-    break;}
-case 27:
+    ;}
+    break;
+
+  case 28:
 #line 263 "Gmsh.y"
-{
-    ;
-    break;}
-case 28:
+    {
+    ;}
+    break;
+
+  case 29:
 #line 267 "Gmsh.y"
-{
+    {
       Add_Axis2_Placement3D  ((int)yyvsp[-12].d, (int)yyvsp[-4].d, (int)yyvsp[-2].d, (int)yyvsp[-6].d);
-    ;
-    break;}
-case 29:
+    ;}
+    break;
+
+  case 30:
 #line 271 "Gmsh.y"
-{
+    {
       Add_Direction((int)yyvsp[-8].d , yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]);
-    ;
-    break;}
-case 30:
+    ;}
+    break;
+
+  case 31:
 #line 275 "Gmsh.y"
-{
+    {
       Add_Plane((int)yyvsp[-8].d, yyvsp[-4].c, (int)yyvsp[-2].d);
-    ;
-    break;}
-case 31:
+    ;}
+    break;
+
+  case 32:
 #line 279 "Gmsh.y"
-{
+    {
       Add_Line ((int)yyvsp[-10].d, yyvsp[-6].c , (int) yyvsp[-4].d, (int)yyvsp[-2].d);
-    ;
-    break;}
-case 32:
+    ;}
+    break;
+
+  case 33:
 #line 283 "Gmsh.y"
-{
+    {
       yymsg(INFO, "Found a closed shell");
       Add_Closed_Shell((int)yyvsp[-8].d, yyvsp[-4].c , yyvsp[-2].l);
-    ;
-    break;}
-case 33:
+    ;}
+    break;
+
+  case 34:
 #line 289 "Gmsh.y"
-{
-    ;
-    break;}
-case 34:
+    {
+    ;}
+    break;
+
+  case 35:
 #line 292 "Gmsh.y"
-{
-    ;
-    break;}
-case 35:
+    {
+    ;}
+    break;
+
+  case 36:
 #line 295 "Gmsh.y"
-{
+    {
       Add_Cylinder ((int)yyvsp[-10].d, yyvsp[-6].c , (int)yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 36:
+    ;}
+    break;
+
+  case 37:
 #line 299 "Gmsh.y"
-{
+    {
       Add_Cone ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 37:
+    ;}
+    break;
+
+  case 38:
 #line 303 "Gmsh.y"
-{
+    {
       Add_Torus ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 38:
+    ;}
+    break;
+
+  case 39:
 #line 307 "Gmsh.y"
-{
+    {
       Add_Circle((int) yyvsp[-10].d, yyvsp[-6].c, (int) yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 39:
+    ;}
+    break;
+
+  case 40:
 #line 311 "Gmsh.y"
-{
+    {
       Add_Ellipse((int) yyvsp[-12].d, yyvsp[-8].c, (int) yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 40:
+    ;}
+    break;
+
+  case 41:
 #line 316 "Gmsh.y"
-{
-    ;
-    break;}
-case 41:
+    {
+    ;}
+    break;
+
+  case 42:
 #line 319 "Gmsh.y"
-{
-    ;
-    break;}
-case 42:
+    {
+    ;}
+    break;
+
+  case 43:
 #line 323 "Gmsh.y"
-{
-    ;
-    break;}
-case 43:
+    {
+    ;}
+    break;
+
+  case 44:
 #line 326 "Gmsh.y"
-{
-    ;
-    break;}
-case 44:
+    {
+    ;}
+    break;
+
+  case 45:
 #line 330 "Gmsh.y"
-{
-    ;
-    break;}
-case 45:
+    {
+    ;}
+    break;
+
+  case 46:
 #line 333 "Gmsh.y"
-{
-    ;
-    break;}
-case 46:
+    {
+    ;}
+    break;
+
+  case 47:
 #line 336 "Gmsh.y"
-{
-    ;
-    break;}
-case 49:
+    {
+    ;}
+    break;
+
+  case 50:
 #line 348 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 50:
+    { return 1; ;}
+    break;
+
+  case 51:
 #line 349 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 51:
+    { return 1; ;}
+    break;
+
+  case 52:
 #line 350 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 52:
+    { return 1; ;}
+    break;
+
+  case 53:
 #line 351 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 53:
+    { return 1; ;}
+    break;
+
+  case 54:
 #line 352 "Gmsh.y"
-{ List_Delete(yyvsp[0].l); return 1; ;
-    break;}
-case 54:
+    { List_Delete(yyvsp[0].l); return 1; ;}
+    break;
+
+  case 55:
 #line 353 "Gmsh.y"
-{ List_Delete(yyvsp[0].l); return 1; ;
-    break;}
-case 55:
+    { List_Delete(yyvsp[0].l); return 1; ;}
+    break;
+
+  case 56:
 #line 354 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 56:
+    { return 1; ;}
+    break;
+
+  case 57:
 #line 355 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 57:
+    { return 1; ;}
+    break;
+
+  case 58:
 #line 356 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 58:
+    { return 1; ;}
+    break;
+
+  case 59:
 #line 357 "Gmsh.y"
-{ List_Delete(yyvsp[0].l); return 1; ;
-    break;}
-case 59:
+    { List_Delete(yyvsp[0].l); return 1; ;}
+    break;
+
+  case 60:
 #line 358 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 60:
+    { return 1; ;}
+    break;
+
+  case 61:
 #line 359 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 61:
+    { return 1; ;}
+    break;
+
+  case 62:
 #line 360 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 62:
+    { return 1; ;}
+    break;
+
+  case 63:
 #line 361 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 63:
+    { return 1; ;}
+    break;
+
+  case 64:
 #line 366 "Gmsh.y"
-{
+    {
       Msg(DIRECT, yyvsp[-2].c);
       Free(yyvsp[-2].c);
-    ;
-    break;}
-case 64:
+    ;}
+    break;
+
+  case 65:
 #line 371 "Gmsh.y"
-{
+    {
       char tmpstring[1024];
       int i = PrintListOfDouble(yyvsp[-4].c, yyvsp[-2].l, tmpstring);
       if(i < 0) 
@@ -3203,54 +3875,62 @@ case 64:
 	Msg(DIRECT, tmpstring);
       Free(yyvsp[-4].c);
       List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 65:
+    ;}
+    break;
+
+  case 66:
 #line 389 "Gmsh.y"
-{ 
+    { 
       if(!strcmp(yyvsp[-5].c, "View") && !CheckViewErrorFlags(View)){
 	EndView(View, 0, yyname, yyvsp[-4].c);
       }
       Free(yyvsp[-5].c); Free(yyvsp[-4].c);
-    ;
-    break;}
-case 66:
+    ;}
+    break;
+
+  case 67:
 #line 396 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-7].c, "View") && !CheckViewErrorFlags(View)){
 	EndView(View, 0, yyname, yyvsp[-6].c);
       }
       Free(yyvsp[-7].c); Free(yyvsp[-6].c); Free(yyvsp[-5].c);
-    ;
-    break;}
-case 67:
+    ;}
+    break;
+
+  case 68:
 #line 406 "Gmsh.y"
-{
+    {
       View = BeginView(1); 
       for(int i = 0; i < VIEW_NB_ELEMENT_TYPES; i++){
 	ViewErrorFlags[i] = 0;
       }
-    ;
-    break;}
-case 73:
+    ;}
+    break;
+
+  case 74:
 #line 421 "Gmsh.y"
-{ ViewCoord[ViewCoordIdx] = yyvsp[0].d; ViewCoordIdx++; ;
-    break;}
-case 74:
+    { ViewCoord[ViewCoordIdx] = yyvsp[0].d; ViewCoordIdx++; ;}
+    break;
+
+  case 75:
 #line 423 "Gmsh.y"
-{ ViewCoord[ViewCoordIdx] = yyvsp[0].d; ViewCoordIdx++; ;
-    break;}
-case 75:
+    { ViewCoord[ViewCoordIdx] = yyvsp[0].d; ViewCoordIdx++; ;}
+    break;
+
+  case 76:
 #line 428 "Gmsh.y"
-{ if(ViewValueList) List_Add(ViewValueList, &yyvsp[0].d); ;
-    break;}
-case 76:
+    { if(ViewValueList) List_Add(ViewValueList, &yyvsp[0].d); ;}
+    break;
+
+  case 77:
 #line 430 "Gmsh.y"
-{ if(ViewValueList) List_Add(ViewValueList, &yyvsp[0].d); ;
-    break;}
-case 77:
+    { if(ViewValueList) List_Add(ViewValueList, &yyvsp[0].d); ;}
+    break;
+
+  case 78:
 #line 435 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[0].c, "SP")){
 	ViewElementIdx = 0; ViewNumNodes = 1; ViewNumComp = 1;
 	ViewValueList = View->SP; ViewNumList = &View->NbSP;
@@ -3438,11 +4118,12 @@ case 77:
       }
       Free(yyvsp[0].c);
       ViewCoordIdx = 0;
-    ;
-    break;}
-case 78:
+    ;}
+    break;
+
+  case 79:
 #line 625 "Gmsh.y"
-{
+    {
       if(ViewValueList){
 	if(ViewCoordIdx != 3 * ViewNumNodes){
 	  yymsg(GERROR, "Wrong number of node coordinates (%d != %d)", 
@@ -3458,124 +4139,144 @@ case 78:
 	}
 	ViewNumListTmp = List_Nbr(ViewValueList);
       }
-    ;
-    break;}
-case 79:
+    ;}
+    break;
+
+  case 80:
 #line 643 "Gmsh.y"
-{
+    {
       if(ViewValueList){  
 	if((List_Nbr(ViewValueList) - ViewNumListTmp) % (ViewNumComp * ViewNumNodes)) 
 	  ViewErrorFlags[ViewElementIdx]++;
 	(*ViewNumList)++;
       }
-    ;
-    break;}
-case 80:
+    ;}
+    break;
+
+  case 81:
 #line 654 "Gmsh.y"
-{ 
+    { 
       for(int i = 0; i < (int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T2C, &yyvsp[0].c[i]); 
       Free(yyvsp[0].c);
-    ;
-    break;}
-case 81:
+    ;}
+    break;
+
+  case 82:
 #line 659 "Gmsh.y"
-{ 
+    { 
       for(int i = 0; i < (int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T2C, &yyvsp[0].c[i]); 
       Free(yyvsp[0].c);
-    ;
-    break;}
-case 82:
+    ;}
+    break;
+
+  case 83:
 #line 667 "Gmsh.y"
-{ 
+    { 
       List_Add(View->T2D, &yyvsp[-5].d); List_Add(View->T2D, &yyvsp[-3].d);
       List_Add(View->T2D, &yyvsp[-1].d); 
       double d = List_Nbr(View->T2C);
       List_Add(View->T2D, &d); 
-    ;
-    break;}
-case 83:
+    ;}
+    break;
+
+  case 84:
 #line 674 "Gmsh.y"
-{
+    {
       View->NbT2++;
-    ;
-    break;}
-case 84:
+    ;}
+    break;
+
+  case 85:
 #line 681 "Gmsh.y"
-{ 
+    { 
       for(int i = 0; i < (int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T3C, &yyvsp[0].c[i]); 
       Free(yyvsp[0].c);
-    ;
-    break;}
-case 85:
+    ;}
+    break;
+
+  case 86:
 #line 686 "Gmsh.y"
-{ 
+    { 
       for(int i = 0; i < (int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T3C, &yyvsp[0].c[i]); 
       Free(yyvsp[0].c);
-    ;
-    break;}
-case 86:
+    ;}
+    break;
+
+  case 87:
 #line 694 "Gmsh.y"
-{ 
+    { 
       List_Add(View->T3D, &yyvsp[-7].d); List_Add(View->T3D, &yyvsp[-5].d);
       List_Add(View->T3D, &yyvsp[-3].d); List_Add(View->T3D, &yyvsp[-1].d); 
       double d = List_Nbr(View->T3C);
       List_Add(View->T3D, &d); 
-    ;
-    break;}
-case 87:
+    ;}
+    break;
+
+  case 88:
 #line 701 "Gmsh.y"
-{
+    {
       View->NbT3++;
-    ;
-    break;}
-case 88:
+    ;}
+    break;
+
+  case 89:
 #line 709 "Gmsh.y"
-{
+    {
       View->adaptive = new Adaptive_Post_View(View, yyvsp[-5].l, yyvsp[-2].l);
-    ;
-    break;}
-case 89:
+    ;}
+    break;
+
+  case 90:
 #line 716 "Gmsh.y"
-{
+    {
       ViewValueList = View->Time;
-    ;
-    break;}
-case 90:
+    ;}
+    break;
+
+  case 91:
 #line 720 "Gmsh.y"
-{
-    ;
-    break;}
-case 91:
+    {
+    ;}
+    break;
+
+  case 92:
 #line 727 "Gmsh.y"
-{ yyval.i = 0; ;
-    break;}
-case 92:
+    { yyval.i = 0; ;}
+    break;
+
+  case 93:
 #line 728 "Gmsh.y"
-{ yyval.i = 1; ;
-    break;}
-case 93:
+    { yyval.i = 1; ;}
+    break;
+
+  case 94:
 #line 729 "Gmsh.y"
-{ yyval.i = 2; ;
-    break;}
-case 94:
+    { yyval.i = 2; ;}
+    break;
+
+  case 95:
 #line 730 "Gmsh.y"
-{ yyval.i = 3; ;
-    break;}
-case 95:
+    { yyval.i = 3; ;}
+    break;
+
+  case 96:
 #line 731 "Gmsh.y"
-{ yyval.i = 4; ;
-    break;}
-case 96:
+    { yyval.i = 4; ;}
+    break;
+
+  case 97:
 #line 735 "Gmsh.y"
-{ yyval.i = 1; ;
-    break;}
-case 97:
+    { yyval.i = 1; ;}
+    break;
+
+  case 98:
 #line 736 "Gmsh.y"
-{ yyval.i = -1; ;
-    break;}
-case 98:
+    { yyval.i = -1; ;}
+    break;
+
+  case 99:
 #line 744 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-3].c;
       Symbol *pSymbol;
@@ -3604,11 +4305,12 @@ case 98:
 	}
 	Free(yyvsp[-3].c);
       }
-    ;
-    break;}
-case 99:
+    ;}
+    break;
+
+  case 100:
 #line 775 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-6].c;
       Symbol *pSymbol;
@@ -3645,11 +4347,12 @@ case 99:
 	}
 	Free(yyvsp[-6].c);
       }
-    ;
-    break;}
-case 100:
+    ;}
+    break;
+
+  case 101:
 #line 814 "Gmsh.y"
-{
+    {
       if(List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-1].l)){
 	yymsg(GERROR, "Incompatible array dimensions in affectation");
 	Free(yyvsp[-8].c);
@@ -3701,11 +4404,12 @@ case 100:
       }
       List_Delete(yyvsp[-5].l);
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 101:
+    ;}
+    break;
+
+  case 102:
 #line 868 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-5].c;
       Symbol *pSymbol;
@@ -3720,11 +4424,12 @@ case 101:
 	Free(yyvsp[-5].c);
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 102:
+    ;}
+    break;
+
+  case 103:
 #line 885 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-2].c;
       Symbol *pSymbol;
@@ -3733,11 +4438,12 @@ case 102:
       else
 	*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[-1].i;
       Free(yyvsp[-2].c);
-    ;
-    break;}
-case 103:
+    ;}
+    break;
+
+  case 104:
 #line 896 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-5].c;
       Symbol *pSymbol;
@@ -3751,11 +4457,12 @@ case 103:
 	  yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-5].c, (int)yyvsp[-3].d);
       }
       Free(yyvsp[-5].c);
-    ;
-    break;}
-case 104:
+    ;}
+    break;
+
+  case 105:
 #line 915 "Gmsh.y"
-{ 
+    { 
       char* (*pStrOpt)(int num, int action, char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-5].c)))
@@ -3767,11 +4474,12 @@ case 104:
 	  pStrOpt(0, GMSH_SET|GMSH_GUI, yyvsp[-1].c);
       }
       Free(yyvsp[-5].c); Free(yyvsp[-3].c); //FIXME: somtimes leak $5
-    ;
-    break;}
-case 105:
+    ;}
+    break;
+
+  case 106:
 #line 929 "Gmsh.y"
-{ 
+    { 
       char* (*pStrOpt)(int num, int action, char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-8].c)))
@@ -3783,11 +4491,12 @@ case 105:
 	  pStrOpt((int)yyvsp[-6].d, GMSH_SET|GMSH_GUI, yyvsp[-1].c);
       }
       Free(yyvsp[-8].c); Free(yyvsp[-3].c); //FIXME: somtimes leak $8
-    ;
-    break;}
-case 106:
+    ;}
+    break;
+
+  case 107:
 #line 946 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
@@ -3811,11 +4520,12 @@ case 106:
 	}
       }
       Free(yyvsp[-5].c); Free(yyvsp[-3].c);
-    ;
-    break;}
-case 107:
+    ;}
+    break;
+
+  case 108:
 #line 972 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-8].c)))
@@ -3840,11 +4550,12 @@ case 107:
 	}
       }
       Free(yyvsp[-8].c); Free(yyvsp[-3].c);
-    ;
-    break;}
-case 108:
+    ;}
+    break;
+
+  case 109:
 #line 999 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
@@ -3856,11 +4567,12 @@ case 108:
 	  pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+yyvsp[-1].i);
       }
       Free(yyvsp[-4].c); Free(yyvsp[-2].c);
-    ;
-    break;}
-case 109:
+    ;}
+    break;
+
+  case 110:
 #line 1013 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-7].c)))
@@ -3872,11 +4584,12 @@ case 109:
 	  pNumOpt((int)yyvsp[-5].d, GMSH_SET|GMSH_GUI, pNumOpt((int)yyvsp[-5].d, GMSH_GET, 0)+yyvsp[-1].i);
       }
       Free(yyvsp[-7].c); Free(yyvsp[-2].c);
-    ;
-    break;}
-case 110:
+    ;}
+    break;
+
+  case 111:
 #line 1030 "Gmsh.y"
-{
+    {
       unsigned int (*pColOpt)(int num, int action, unsigned int value);
       StringXColor *pColCat;
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-7].c)))
@@ -3888,11 +4601,12 @@ case 110:
 	  pColOpt(0, GMSH_SET|GMSH_GUI, yyvsp[-1].u);
       }
       Free(yyvsp[-7].c); Free(yyvsp[-3].c);
-    ;
-    break;}
-case 111:
+    ;}
+    break;
+
+  case 112:
 #line 1044 "Gmsh.y"
-{
+    {
       unsigned int (*pColOpt)(int num, int action, unsigned int value);
       StringXColor *pColCat;
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-10].c)))
@@ -3904,11 +4618,12 @@ case 111:
 	  pColOpt((int)yyvsp[-8].d, GMSH_SET|GMSH_GUI, yyvsp[-1].u);
       }
       Free(yyvsp[-10].c); Free(yyvsp[-3].c);
-    ;
-    break;}
-case 112:
+    ;}
+    break;
+
+  case 113:
 #line 1061 "Gmsh.y"
-{
+    {
       GmshColorTable *ct = Get_ColorTable(0);
       if(!ct)
 	yymsg(GERROR, "View[%d] does not exist", 0);
@@ -3926,11 +4641,12 @@ case 112:
       }
       Free(yyvsp[-5].c);
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 113:
+    ;}
+    break;
+
+  case 114:
 #line 1081 "Gmsh.y"
-{
+    {
       GmshColorTable *ct = Get_ColorTable((int)yyvsp[-6].d);
       if(!ct)
 	yymsg(GERROR, "View[%d] does not exist", (int)yyvsp[-6].d);
@@ -3948,11 +4664,12 @@ case 113:
       }
       Free(yyvsp[-8].c);
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 114:
+    ;}
+    break;
+
+  case 115:
 #line 1104 "Gmsh.y"
-{
+    {
       try {
 	GMSH_PluginManager::instance()->setPluginOption(yyvsp[-6].c, yyvsp[-3].c, yyvsp[-1].d); 
       }
@@ -3960,11 +4677,12 @@ case 114:
 	yymsg(GERROR, "Unknown option '%s' or plugin '%s'", yyvsp[-3].c, yyvsp[-6].c);
       }
       Free(yyvsp[-6].c); Free(yyvsp[-3].c);
-    ;
-    break;}
-case 115:
+    ;}
+    break;
+
+  case 116:
 #line 1114 "Gmsh.y"
-{
+    {
       try {
 	GMSH_PluginManager::instance()->setPluginOption(yyvsp[-6].c, yyvsp[-3].c, yyvsp[-1].c); 
       }
@@ -3972,11 +4690,12 @@ case 115:
 	yymsg(GERROR, "Unknown option '%s' or plugin '%s'", yyvsp[-3].c, yyvsp[-6].c);
       }
       Free(yyvsp[-6].c); Free(yyvsp[-3].c); // FIXME: sometimes leak $8
-    ;
-    break;}
-case 116:
+    ;}
+    break;
+
+  case 117:
 #line 1133 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindPoint(num, THEM)){
 	yymsg(GERROR, "Point %d already exists", num);
@@ -3990,11 +4709,12 @@ case 116:
       }
       yyval.s.Type = MSH_POINT;
       yyval.s.Num = num;
-    ;
-    break;}
-case 117:
+    ;}
+    break;
+
+  case 118:
 #line 1149 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindPhysicalGroup(num, MSH_PHYSICAL_POINT, THEM)){
 	yymsg(GERROR, "Physical point %d already exists", num);
@@ -4008,11 +4728,12 @@ case 117:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_PHYSICAL_POINT;
       yyval.s.Num = num;
-    ;
-    break;}
-case 118:
+    ;}
+    break;
+
+  case 119:
 #line 1165 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-9].l); i++){
 	double p;
       	List_Read(yyvsp[-9].l, i, &p);
@@ -4029,11 +4750,12 @@ case 118:
       // dummy values
       yyval.s.Type = 0;
       yyval.s.Num = 0;
-    ;
-    break;}
-case 119:
+    ;}
+    break;
+
+  case 120:
 #line 1184 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){
 	double d;
 	List_Read(yyvsp[-3].l, i, &d);
@@ -4047,11 +4769,12 @@ case 119:
       // dummy values
       yyval.s.Type = 0;
       yyval.s.Num = 0;
-    ;
-    break;}
-case 120:
+    ;}
+    break;
+
+  case 121:
 #line 1203 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -4067,11 +4790,12 @@ case 120:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_LINE;
       yyval.s.Num = num;
-    ;
-    break;}
-case 121:
+    ;}
+    break;
+
+  case 122:
 #line 1221 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -4087,11 +4811,12 @@ case 121:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_SPLN;
       yyval.s.Num = num;
-    ;
-    break;}
-case 122:
+    ;}
+    break;
+
+  case 123:
 #line 1239 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -4107,11 +4832,12 @@ case 122:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_CIRC;
       yyval.s.Num = num;
-    ;
-    break;}
-case 123:
+    ;}
+    break;
+
+  case 124:
 #line 1257 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-6].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -4135,11 +4861,12 @@ case 123:
       List_Delete(yyvsp[-3].l);
       yyval.s.Type = MSH_SEGM_CIRC;
       yyval.s.Num = num;
-    ;
-    break;}
-case 124:
+    ;}
+    break;
+
+  case 125:
 #line 1283 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -4155,11 +4882,12 @@ case 124:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_ELLI;
       yyval.s.Num = num;
-    ;
-    break;}
-case 125:
+    ;}
+    break;
+
+  case 126:
 #line 1301 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-6].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -4183,11 +4911,12 @@ case 125:
       List_Delete(yyvsp[-3].l);
       yyval.s.Type = MSH_SEGM_ELLI;
       yyval.s.Num = num;
-    ;
-    break;}
-case 126:
+    ;}
+    break;
+
+  case 127:
 #line 1328 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-14].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -4204,11 +4933,12 @@ case 126:
       Free(yyvsp[-6].c); Free(yyvsp[-4].c); Free(yyvsp[-2].c);
       yyval.s.Type = MSH_SEGM_PARAMETRIC;
       yyval.s.Num = num;
-    ;
-    break;}
-case 127:
+    ;}
+    break;
+
+  case 128:
 #line 1347 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(List_Nbr(yyvsp[-1].l) < 4){
 	yymsg(GERROR, "Too few control points for BSpline %d (%d < 4)", num,
@@ -4230,11 +4960,12 @@ case 127:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_BSPLN;
       yyval.s.Num = num;
-    ;
-    break;}
-case 128:
+    ;}
+    break;
+
+  case 129:
 #line 1371 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(List_Nbr(yyvsp[-1].l) < 4){
 	yymsg(GERROR, "Too few control points for Bezier curve %d (%d < 4)", num,
@@ -4256,11 +4987,12 @@ case 128:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_BEZIER;
       yyval.s.Num = num;
-    ;
-    break;}
-case 129:
+    ;}
+    break;
+
+  case 130:
 #line 1395 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-8].d;
       if(List_Nbr(yyvsp[-5].l) + (int)yyvsp[-1].d + 1 != List_Nbr(yyvsp[-3].l)){
 	yymsg(GERROR, "Wrong definition of Nurbs Curve %d: "
@@ -4284,11 +5016,12 @@ case 129:
       List_Delete(yyvsp[-3].l);
       yyval.s.Type = MSH_SEGM_NURBS;
       yyval.s.Num = num;
-    ;
-    break;}
-case 130:
+    ;}
+    break;
+
+  case 131:
 #line 1421 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindEdgeLoop(num, THEM)){
 	yymsg(GERROR, "Line loop %d already exists", num);
@@ -4303,11 +5036,12 @@ case 130:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_LOOP;
       yyval.s.Num = num;
-    ;
-    break;}
-case 131:
+    ;}
+    break;
+
+  case 132:
 #line 1438 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-9].l); i++){
 	double p;
       	List_Read(yyvsp[-9].l, i, &p);
@@ -4323,11 +5057,12 @@ case 131:
       // dummy values
       yyval.s.Type = 0;
       yyval.s.Num = 0;
-    ;
-    break;}
-case 132:
+    ;}
+    break;
+
+  case 133:
 #line 1456 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindPhysicalGroup(num, MSH_PHYSICAL_LINE, THEM)){
 	yymsg(GERROR, "Physical line %d already exists", num);
@@ -4341,11 +5076,12 @@ case 132:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_PHYSICAL_LINE;
       yyval.s.Num = num;
-    ;
-    break;}
-case 133:
+    ;}
+    break;
+
+  case 134:
 #line 1475 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindSurface(num, THEM)){
 	yymsg(GERROR, "Surface %d already exists", num);
@@ -4362,11 +5098,12 @@ case 133:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SURF_PLAN;
       yyval.s.Num = num;
-    ;
-    break;}
-case 134:
+    ;}
+    break;
+
+  case 135:
 #line 1494 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d, type = 0;
       if(FindSurface(num, THEM)){
 	yymsg(GERROR, "Surface %d already exists", num);
@@ -4403,11 +5140,12 @@ case 134:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = type;
       yyval.s.Num = num;
-    ;
-    break;}
-case 135:
+    ;}
+    break;
+
+  case 136:
 #line 1533 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-8].d;
       Surface *support = FindSurface((int)yyvsp[-4].d, THEM);
       if(!support){
@@ -4430,11 +5168,12 @@ case 135:
       List_Delete(yyvsp[-2].l);
       yyval.s.Type = MSH_SURF_TRIMMED;
       yyval.s.Num = num;
-    ;
-    break;}
-case 136:
+    ;}
+    break;
+
+  case 137:
 #line 1560 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-16].d;
       if(FindSurface(num, THEM)){
 	yymsg(GERROR, "Surface %d already exists", num);
@@ -4449,11 +5188,12 @@ case 136:
       List_Delete(yyvsp[-8].l);
       yyval.s.Type = MSH_SURF_NURBS;
       yyval.s.Num = num;
-    ;
-    break;}
-case 137:
+    ;}
+    break;
+
+  case 138:
 #line 1579 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-16].d;
       if(FindSurface(num, THEM)){
 	yymsg(GERROR, "Surface %d already exists", num);
@@ -4468,11 +5208,12 @@ case 137:
       List_Delete(yyvsp[-8].l);
       yyval.s.Type = MSH_SURF_NURBS;
       yyval.s.Num = num;
-    ;
-    break;}
-case 138:
+    ;}
+    break;
+
+  case 139:
 #line 1596 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindSurfaceLoop(num, THEM)){
 	yymsg(GERROR, "Surface loop %d already exists", num);
@@ -4486,11 +5227,12 @@ case 138:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SURF_LOOP;
       yyval.s.Num = num;
-    ;
-    break;}
-case 139:
+    ;}
+    break;
+
+  case 140:
 #line 1612 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE, THEM)){
 	yymsg(GERROR, "Physical surface %d already exists", num);
@@ -4504,11 +5246,12 @@ case 139:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_PHYSICAL_SURFACE;
       yyval.s.Num = num;
-    ;
-    break;}
-case 140:
+    ;}
+    break;
+
+  case 141:
 #line 1632 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindVolume(num, THEM)){
 	yymsg(GERROR, "Volume %d already exists", num);
@@ -4523,11 +5266,12 @@ case 140:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_VOLUME;
       yyval.s.Num = num;
-    ;
-    break;}
-case 141:
+    ;}
+    break;
+
+  case 142:
 #line 1649 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindVolume(num, THEM)){
 	yymsg(GERROR, "Volume %d already exists", num);
@@ -4542,11 +5286,12 @@ case 141:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_VOLUME;
       yyval.s.Num = num;
-    ;
-    break;}
-case 142:
+    ;}
+    break;
+
+  case 143:
 #line 1666 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME, THEM)){
 	yymsg(GERROR, "Physical volume %d already exists", num);
@@ -4560,63 +5305,73 @@ case 142:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_PHYSICAL_VOLUME;
       yyval.s.Num = num;
-    ;
-    break;}
-case 143:
+    ;}
+    break;
+
+  case 144:
 #line 1687 "Gmsh.y"
-{
+    {
       TranslateShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-1].l, 1);
       yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 144:
+    ;}
+    break;
+
+  case 145:
 #line 1692 "Gmsh.y"
-{
+    {
       RotateShapes(yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l, 1);
       yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 145:
+    ;}
+    break;
+
+  case 146:
 #line 1697 "Gmsh.y"
-{
+    {
       SymmetryShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-3].v[3], yyvsp[-1].l, 1);
       yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 146:
+    ;}
+    break;
+
+  case 147:
 #line 1702 "Gmsh.y"
-{
+    {
       DilatShapes(yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l, 1);
       yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 147:
+    ;}
+    break;
+
+  case 148:
 #line 1709 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
-    break;}
-case 148:
+    { yyval.l = yyvsp[0].l; ;}
+    break;
+
+  case 149:
 #line 1710 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
-    break;}
-case 149:
+    { yyval.l = yyvsp[0].l; ;}
+    break;
+
+  case 150:
 #line 1711 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
-    break;}
-case 150:
+    { yyval.l = yyvsp[0].l; ;}
+    break;
+
+  case 151:
 #line 1716 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(3, 3, sizeof(Shape));
-    ;
-    break;}
-case 151:
+    ;}
+    break;
+
+  case 152:
 #line 1720 "Gmsh.y"
-{
+    {
       List_Add(yyval.l, &yyvsp[0].s);
-    ;
-    break;}
-case 152:
+    ;}
+    break;
+
+  case 153:
 #line 1724 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
 	List_Read(yyvsp[-2].l, i, &d);
@@ -4630,11 +5385,12 @@ case 152:
 	  List_Add(yyval.l, &TheShape);
 	}
       }
-    ;
-    break;}
-case 153:
+    ;}
+    break;
+
+  case 154:
 #line 1740 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
 	List_Read(yyvsp[-2].l, i, &d);
@@ -4648,11 +5404,12 @@ case 153:
 	  List_Add(yyval.l, &TheShape);
 	}
       }
-    ;
-    break;}
-case 154:
+    ;}
+    break;
+
+  case 155:
 #line 1756 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
 	List_Read(yyvsp[-2].l, i, &d);
@@ -4666,11 +5423,12 @@ case 154:
 	  List_Add(yyval.l, &TheShape);
 	}
       }
-    ;
-    break;}
-case 155:
+    ;}
+    break;
+
+  case 156:
 #line 1772 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
 	List_Read(yyvsp[-2].l, i, &d);
@@ -4684,11 +5442,12 @@ case 155:
 	  List_Add(yyval.l, &TheShape);
 	}
       }
-    ;
-    break;}
-case 156:
+    ;}
+    break;
+
+  case 157:
 #line 1793 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(3, 3, sizeof(Shape));
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	Shape TheShape;
@@ -4699,46 +5458,51 @@ case 156:
 	List_Add(yyval.l, &TheShape);
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 157:
+    ;}
+    break;
+
+  case 158:
 #line 1807 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
       Free(yyvsp[-4].c);
       yyval.l = NULL;
-    ;
-    break;}
-case 158:
+    ;}
+    break;
+
+  case 159:
 #line 1813 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
       Free(yyvsp[-4].c);
       yyval.l = NULL;
-    ;
-    break;}
-case 159:
+    ;}
+    break;
+
+  case 160:
 #line 1819 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 1);
       Free(yyvsp[-4].c);
       yyval.l = NULL;
-    ;
-    break;}
-case 160:
+    ;}
+    break;
+
+  case 161:
 #line 1831 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	Shape TheShape;
 	List_Read(yyvsp[-1].l, i, &TheShape);
 	DeleteShape(TheShape.Type, TheShape.Num);
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 161:
+    ;}
+    break;
+
+  case 162:
 #line 1840 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-4].c, "View")){
 	RemoveViewByIndex((int)yyvsp[-2].d);
       }
@@ -4746,11 +5510,12 @@ case 161:
 	yymsg(GERROR, "Unknown command 'Delete %s'", yyvsp[-4].c);
       }
       Free(yyvsp[-4].c);
-    ;
-    break;}
-case 162:
+    ;}
+    break;
+
+  case 163:
 #line 1850 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-1].c, "Meshes") || !strcmp(yyvsp[-1].c, "All")){
 	Init_Mesh(THEM);
       }
@@ -4762,11 +5527,12 @@ case 162:
 	yymsg(GERROR, "Unknown command 'Delete %s'", yyvsp[-1].c);
       }
       Free(yyvsp[-1].c);
-    ;
-    break;}
-case 163:
+    ;}
+    break;
+
+  case 164:
 #line 1864 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-2].c, "Empty") && !strcmp(yyvsp[-1].c, "Views")){
 	for(int i = List_Nbr(CTX.post.list) - 1; i >= 0; i--){
 	  Post_View *v = *(Post_View **) List_Pointer(CTX.post.list, i);
@@ -4778,40 +5544,44 @@ case 163:
 	yymsg(GERROR, "Unknown command 'Delete %s %s'", yyvsp[-2].c, yyvsp[-1].c);
       }
       Free(yyvsp[-2].c); Free(yyvsp[-1].c);
-    ;
-    break;}
-case 164:
+    ;}
+    break;
+
+  case 165:
 #line 1883 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	Shape TheShape;
 	List_Read(yyvsp[-1].l, i, &TheShape);
 	ColorShape(TheShape.Type, TheShape.Num, yyvsp[-3].u);
       }
       List_Delete(yyvsp[-1].l);      
-    ;
-    break;}
-case 165:
+    ;}
+    break;
+
+  case 166:
 #line 1897 "Gmsh.y"
-{
+    {
       int m = (CTX.visibility_mode == 2) ? VIS_MESH : 
 	((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH);
       for(int i = 2; i < 6; i++)
 	SetVisibilityByNumber(yyvsp[-1].c, i, m);
       Free(yyvsp[-1].c);
-    ;
-    break;}
-case 166:
+    ;}
+    break;
+
+  case 167:
 #line 1905 "Gmsh.y"
-{
+    {
       for(int i = 2; i < 6; i++)
 	SetVisibilityByNumber(yyvsp[-1].c, i, 0);
       Free(yyvsp[-1].c);
-    ;
-    break;}
-case 167:
+    ;}
+    break;
+
+  case 168:
 #line 1911 "Gmsh.y"
-{
+    {
       int m = (CTX.visibility_mode == 2) ? VIS_MESH :
 	((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH);
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
@@ -4820,22 +5590,24 @@ case 167:
 	VisibilityShape(TheShape.Type, TheShape.Num, m);
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 168:
+    ;}
+    break;
+
+  case 169:
 #line 1922 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	Shape TheShape;
 	List_Read(yyvsp[-1].l, i, &TheShape);
 	VisibilityShape(TheShape.Type, TheShape.Num, 0);
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 169:
+    ;}
+    break;
+
+  case 170:
 #line 1936 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-2].c, "Include")){
 	char tmpstring[1024];
 	FixRelativePath(yyvsp[-1].c, tmpstring);
@@ -4877,11 +5649,12 @@ case 169:
 	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
       }
       Free(yyvsp[-2].c); Free(yyvsp[-1].c);
-    ;
-    break;}
-case 170:
+    ;}
+    break;
+
+  case 171:
 #line 1980 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-6].c, "Save") && !strcmp(yyvsp[-5].c, "View")){
 	Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-3].d);
 	if(vv){
@@ -4894,11 +5667,12 @@ case 170:
 	yymsg(GERROR, "Unknown command '%s'", yyvsp[-6].c);
       }
       Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-1].c);
-    ;
-    break;}
-case 171:
+    ;}
+    break;
+
+  case 172:
 #line 1995 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-2].c, "Sleep")){
 	long sleep_time = GetTime();
 	while(1){
@@ -4912,11 +5686,12 @@ case 171:
 	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
       }
       Free(yyvsp[-2].c);
-    ;
-    break;}
-case 172:
+    ;}
+    break;
+
+  case 173:
 #line 2011 "Gmsh.y"
-{
+    {
        try {
 	 GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0);
        }
@@ -4924,11 +5699,12 @@ case 172:
 	 yymsg(GERROR, "Unknown action '%s' or plugin '%s'", yyvsp[-1].c, yyvsp[-4].c);
        }
        Free(yyvsp[-4].c); Free(yyvsp[-1].c);
-     ;
-    break;}
-case 173:
+     ;}
+    break;
+
+  case 174:
 #line 2021 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-1].c, "ElementsFromAllViews"))
 	CombineViews(0, 1, CTX.post.combine_remove_orig);
       else if(!strcmp(yyvsp[-1].c, "ElementsFromVisibleViews"))
@@ -4948,38 +5724,43 @@ case 173:
       else
 	yymsg(GERROR, "Unknown 'Combine' command");
       Free(yyvsp[-1].c);
-    ;
-    break;}
-case 174:
+    ;}
+    break;
+
+  case 175:
 #line 2043 "Gmsh.y"
-{
+    {
       exit(0);
-    ;
-    break;}
-case 175:
+    ;}
+    break;
+
+  case 176:
 #line 2047 "Gmsh.y"
-{
+    {
       SetBoundingBox();
-    ;
-    break;}
-case 176:
+    ;}
+    break;
+
+  case 177:
 #line 2051 "Gmsh.y"
-{
+    {
       SetBoundingBox(yyvsp[-12].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 177:
+    ;}
+    break;
+
+  case 178:
 #line 2055 "Gmsh.y"
-{
+    {
 #if defined(HAVE_FLTK)
       if(!CTX.batch) // we're in interactive mode
 	Draw();
 #endif
-    ;
-    break;}
-case 178:
+    ;}
+    break;
+
+  case 179:
 #line 2068 "Gmsh.y"
-{
+    {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
       LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
@@ -4992,11 +5773,12 @@ case 178:
 	ImbricatedLoop = MAX_RECUR_LOOPS-1;
       }
       if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor");
-    ;
-    break;}
-case 179:
+    ;}
+    break;
+
+  case 180:
 #line 2083 "Gmsh.y"
-{
+    {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
       LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d;
@@ -5010,11 +5792,12 @@ case 179:
       }
       if((yyvsp[-1].d > 0. && yyvsp[-5].d > yyvsp[-3].d) || (yyvsp[-1].d < 0. && yyvsp[-5].d < yyvsp[-3].d))
 	skip_until("For", "EndFor");
-    ;
-    break;}
-case 180:
+    ;}
+    break;
+
+  case 181:
 #line 2099 "Gmsh.y"
-{
+    {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
       LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
@@ -5038,11 +5821,12 @@ case 180:
 	ImbricatedLoop = MAX_RECUR_LOOPS-1;
       }
       if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor");
-    ;
-    break;}
-case 181:
+    ;}
+    break;
+
+  case 182:
 #line 2125 "Gmsh.y"
-{
+    {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
       LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d;
@@ -5067,11 +5851,12 @@ case 181:
       }
       if((yyvsp[-1].d > 0. && yyvsp[-5].d > yyvsp[-3].d) || (yyvsp[-1].d < 0. && yyvsp[-5].d < yyvsp[-3].d))
 	skip_until("For", "EndFor");
-    ;
-    break;}
-case 182:
+    ;}
+    break;
+
+  case 183:
 #line 2152 "Gmsh.y"
-{
+    {
       if(ImbricatedLoop <= 0){
 	yymsg(GERROR, "Invalid For/EndFor loop");
 	ImbricatedLoop = 0;
@@ -5101,46 +5886,52 @@ case 182:
 	  ImbricatedLoop--;
 	}
       }
-    ;
-    break;}
-case 183:
+    ;}
+    break;
+
+  case 184:
 #line 2184 "Gmsh.y"
-{
+    {
       if(!FunctionManager::Instance()->createFunction(yyvsp[0].c, yyin, yyname, yylineno))
 	yymsg(GERROR, "Redefinition of function %s", yyvsp[0].c);
       skip_until(NULL, "Return");
       //FIXME: wee leak $2
-    ;
-    break;}
-case 184:
+    ;}
+    break;
+
+  case 185:
 #line 2191 "Gmsh.y"
-{
+    {
       if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno))
 	yymsg(GERROR, "Error while exiting function");
-    ;
-    break;}
-case 185:
+    ;}
+    break;
+
+  case 186:
 #line 2196 "Gmsh.y"
-{
+    {
       if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c, &yyin, yyname, yylineno))
 	yymsg(GERROR, "Unknown function %s", yyvsp[-1].c);
       //FIXME: wee leak $2
-    ;
-    break;}
-case 186:
+    ;}
+    break;
+
+  case 187:
 #line 2202 "Gmsh.y"
-{
+    {
       if(!yyvsp[-1].d) skip_until("If", "EndIf");
-    ;
-    break;}
-case 187:
+    ;}
+    break;
+
+  case 188:
 #line 2206 "Gmsh.y"
-{
-    ;
-    break;}
-case 188:
+    {
+    ;}
+    break;
+
+  case 189:
 #line 2217 "Gmsh.y"
-{
+    {
       Curve *pc, *prc;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
@@ -5154,11 +5945,12 @@ case 188:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 189:
+    ;}
+    break;
+
+  case 190:
 #line 2233 "Gmsh.y"
-{
+    {
       Curve *pc, *prc;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
@@ -5172,11 +5964,12 @@ case 189:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 190:
+    ;}
+    break;
+
+  case 191:
 #line 2249 "Gmsh.y"
-{
+    {
       Curve *pc, *prc;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2],
@@ -5190,18 +5983,20 @@ case 190:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 191:
+    ;}
+    break;
+
+  case 192:
 #line 2265 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 192:
+    ;}
+    break;
+
+  case 193:
 #line 2270 "Gmsh.y"
-{
+    {
       Curve *pc, *prc;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
@@ -5215,18 +6010,20 @@ case 192:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 193:
+    ;}
+    break;
+
+  case 194:
 #line 2286 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 194:
+    ;}
+    break;
+
+  case 195:
 #line 2291 "Gmsh.y"
-{
+    {
       Curve *pc, *prc;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
@@ -5240,18 +6037,20 @@ case 194:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 195:
+    ;}
+    break;
+
+  case 196:
 #line 2307 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 196:
+    ;}
+    break;
+
+  case 197:
 #line 2312 "Gmsh.y"
-{
+    {
       Curve *pc, *prc;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
@@ -5265,11 +6064,12 @@ case 196:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 197:
+    ;}
+    break;
+
+  case 198:
 #line 2330 "Gmsh.y"
-{
+    {
       Surface *ps;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
@@ -5290,11 +6090,12 @@ case 197:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 198:
+    ;}
+    break;
+
+  case 199:
 #line 2353 "Gmsh.y"
-{
+    {
       Surface *ps;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
@@ -5315,11 +6116,12 @@ case 198:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 199:
+    ;}
+    break;
+
+  case 200:
 #line 2376 "Gmsh.y"
-{
+    {
       Surface *ps;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2],
@@ -5340,18 +6142,20 @@ case 199:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 200:
+    ;}
+    break;
+
+  case 201:
 #line 2399 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 201:
+    ;}
+    break;
+
+  case 202:
 #line 2404 "Gmsh.y"
-{
+    {
       Surface *ps;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
@@ -5372,18 +6176,20 @@ case 201:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 202:
+    ;}
+    break;
+
+  case 203:
 #line 2427 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 203:
+    ;}
+    break;
+
+  case 204:
 #line 2432 "Gmsh.y"
-{
+    {
       Surface *ps;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
@@ -5404,18 +6210,20 @@ case 203:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 204:
+    ;}
+    break;
+
+  case 205:
 #line 2455 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 205:
+    ;}
+    break;
+
+  case 206:
 #line 2460 "Gmsh.y"
-{
+    {
       Surface *ps;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
@@ -5436,11 +6244,12 @@ case 205:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 206:
+    ;}
+    break;
+
+  case 207:
 #line 2486 "Gmsh.y"
-{
+    {
       Volume *pv;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
@@ -5461,11 +6270,12 @@ case 206:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 207:
+    ;}
+    break;
+
+  case 208:
 #line 2509 "Gmsh.y"
-{
+    {
       Volume *pv;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
@@ -5486,11 +6296,12 @@ case 207:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 208:
+    ;}
+    break;
+
+  case 209:
 #line 2532 "Gmsh.y"
-{
+    {
       Volume *pv;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2],
@@ -5511,18 +6322,20 @@ case 208:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 209:
+    ;}
+    break;
+
+  case 210:
 #line 2555 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 210:
+    ;}
+    break;
+
+  case 211:
 #line 2560 "Gmsh.y"
-{
+    {
       Volume *pv;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
@@ -5543,18 +6356,20 @@ case 210:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 211:
+    ;}
+    break;
+
+  case 212:
 #line 2583 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 212:
+    ;}
+    break;
+
+  case 213:
 #line 2589 "Gmsh.y"
-{
+    {
       Volume *pv;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
@@ -5575,18 +6390,20 @@ case 212:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 213:
+    ;}
+    break;
+
+  case 214:
 #line 2612 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 214:
+    ;}
+    break;
+
+  case 215:
 #line 2618 "Gmsh.y"
-{
+    {
       Volume *pv;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
@@ -5607,21 +6424,24 @@ case 214:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 215:
+    ;}
+    break;
+
+  case 216:
 #line 2644 "Gmsh.y"
-{
-    ;
-    break;}
-case 216:
+    {
+    ;}
+    break;
+
+  case 217:
 #line 2647 "Gmsh.y"
-{
-    ;
-    break;}
-case 217:
+    {
+    ;}
+    break;
+
+  case 218:
 #line 2653 "Gmsh.y"
-{
+    {
       double d;
       extr.mesh.ExtrudeMesh = true;
       extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l);
@@ -5645,11 +6465,12 @@ case 217:
       List_Delete(yyvsp[-6].l);
       List_Delete(yyvsp[-4].l);
       List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 218:
+    ;}
+    break;
+
+  case 219:
 #line 2679 "Gmsh.y"
-{
+    {
       double d;
       extr.mesh.ExtrudeMesh = true;
       extr.mesh.NbLayer = List_Nbr(yyvsp[-4].l);
@@ -5671,17 +6492,19 @@ case 218:
       }
       List_Delete(yyvsp[-4].l);
       List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 219:
+    ;}
+    break;
+
+  case 220:
 #line 2703 "Gmsh.y"
-{
+    {
       extr.mesh.Recombine = true;
-    ;
-    break;}
-case 220:
+    ;}
+    break;
+
+  case 221:
 #line 2712 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){
 	double d;
 	List_Read(yyvsp[-3].l, i, &d);
@@ -5697,11 +6520,12 @@ case 220:
 	}
       }
       List_Delete(yyvsp[-3].l);
-    ;
-    break;}
-case 221:
+    ;}
+    break;
+
+  case 222:
 #line 2730 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
 	double d;
 	List_Read(yyvsp[-6].l, i, &d);
@@ -5717,11 +6541,12 @@ case 221:
 	}
       }
       List_Delete(yyvsp[-6].l);
-    ;
-    break;}
-case 222:
+    ;}
+    break;
+
+  case 223:
 #line 2748 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
 	double d;
 	List_Read(yyvsp[-6].l, i, &d);
@@ -5737,16 +6562,18 @@ case 222:
 	}
       }
       List_Delete(yyvsp[-6].l);
-    ;
-    break;}
-case 223:
+    ;}
+    break;
+
+  case 224:
 #line 2766 "Gmsh.y"
-{
+    {
       Surface *s = FindSurface((int)yyvsp[-4].d, THEM);
       if(!s)
 	yymsg(WARNING, "Unknown surface %d", (int)yyvsp[-4].d);
       else{
 	s->Method = TRANSFINI;
+	s->Recombine_Dir = -1;
 	int k = List_Nbr(yyvsp[-1].l);
 	if(k != 3 && k != 4){
 	  yymsg(GERROR, "Wrong definition of Transfinite Surface %d: "
@@ -5767,11 +6594,50 @@ case 223:
 	}
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 224:
-#line 2794 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 225:
+#line 2795 "Gmsh.y"
+    {
+      Surface *s = FindSurface((int)yyvsp[-5].d, THEM);
+      if(!s)
+	yymsg(WARNING, "Unknown surface %d", (int)yyvsp[-5].d);
+      else{
+	s->Method = TRANSFINI;
+	int k = List_Nbr(yyvsp[-2].l);
+	if(k != 3 && k != 4){
+	  yymsg(GERROR, "Wrong definition of Transfinite Surface %d: "
+		"%d points instead of 3 or 4" , (int)yyvsp[-5].d, k);
+	}
+	else{
+	  List_Reset(s->TrsfPoints);
+	  if (!strcmp(yyvsp[-1].c,"Right"))
+	    s->Recombine_Dir = 1;
+	  else if (!strcmp(yyvsp[-1].c,"Left"))
+	    s->Recombine_Dir = -1;
+	  else
+	    s->Recombine_Dir = 0;
+
+	  for(int i = 0; i < k; i++){
+	    double d;
+	    List_Read(yyvsp[-2].l, i, &d);
+	    int j = (int)fabs(d);
+	    Vertex *v = FindPoint(j, THEM);
+	    if(!v)
+	      yymsg(WARNING, "Unknown point %d", j);
+	    else
+	      List_Add(s->TrsfPoints, &v);
+	  }
+	}
+      }
+      List_Delete(yyvsp[-2].l);
+    ;}
+    break;
+
+  case 226:
+#line 2830 "Gmsh.y"
+    {
       Surface *s = FindSurface((int)yyvsp[-4].d, THEM);
       if(!s)
 	yymsg(WARNING, "Unknown surface %d", (int)yyvsp[-4].d);
@@ -5796,11 +6662,12 @@ case 224:
 	}
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 225:
-#line 2821 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 227:
+#line 2857 "Gmsh.y"
+    {
       Volume *v = FindVolume((int)yyvsp[-4].d, THEM);
       if(!v)
 	yymsg(WARNING, "Unknown volume %d", (int)yyvsp[-4].d);
@@ -5825,11 +6692,12 @@ case 225:
 	}
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 226:
-#line 2848 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 228:
+#line 2884 "Gmsh.y"
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){
 	double d;
 	List_Read(yyvsp[-3].l, i, &d);
@@ -5841,11 +6709,12 @@ case 226:
 	}
       }
       List_Delete(yyvsp[-3].l);
-    ;
-    break;}
-case 227:
-#line 2862 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 229:
+#line 2898 "Gmsh.y"
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	double d;
 	List_Read(yyvsp[-1].l, i, &d);
@@ -5856,324 +6725,401 @@ case 227:
         }
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 228:
-#line 2881 "Gmsh.y"
-{ 
-      ReplaceAllDuplicates(THEM);
-    ;
-    break;}
-case 229:
-#line 2885 "Gmsh.y"
-{ 
-      IntersectAllSegmentsTogether();
-    ;
-    break;}
-case 230:
-#line 2894 "Gmsh.y"
-{yyval.i = 1;;
-    break;}
-case 231:
-#line 2895 "Gmsh.y"
-{yyval.i = 0;;
-    break;}
-case 232:
-#line 2896 "Gmsh.y"
-{yyval.i = -1;;
-    break;}
-case 233:
-#line 2897 "Gmsh.y"
-{yyval.i = -1;;
-    break;}
-case 234:
-#line 2898 "Gmsh.y"
-{yyval.i = -1;;
-    break;}
-case 235:
-#line 2902 "Gmsh.y"
-{ yyval.d = yyvsp[0].d;           ;
-    break;}
-case 236:
-#line 2903 "Gmsh.y"
-{ yyval.d = yyvsp[-1].d;           ;
-    break;}
-case 237:
-#line 2904 "Gmsh.y"
-{ yyval.d = -yyvsp[0].d;          ;
-    break;}
-case 238:
-#line 2905 "Gmsh.y"
-{ yyval.d = yyvsp[0].d;           ;
-    break;}
-case 239:
-#line 2906 "Gmsh.y"
-{ yyval.d = !yyvsp[0].d;          ;
-    break;}
-case 240:
-#line 2907 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d - yyvsp[0].d;      ;
-    break;}
-case 241:
-#line 2908 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d + yyvsp[0].d;      ;
-    break;}
-case 242:
-#line 2909 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d * yyvsp[0].d;      ;
-    break;}
-case 243:
-#line 2911 "Gmsh.y"
-{ 
-      if(!yyvsp[0].d)
-	yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
-      else
-	yyval.d = yyvsp[-2].d / yyvsp[0].d;     
-    ;
-    break;}
-case 244:
+    ;}
+    break;
+
+  case 230:
 #line 2917 "Gmsh.y"
-{ yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d;  ;
-    break;}
-case 245:
-#line 2918 "Gmsh.y"
-{ yyval.d = pow(yyvsp[-2].d, yyvsp[0].d);  ;
-    break;}
-case 246:
-#line 2919 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d < yyvsp[0].d;      ;
-    break;}
-case 247:
-#line 2920 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d > yyvsp[0].d;      ;
-    break;}
-case 248:
+    { 
+      ReplaceAllDuplicates(THEM);
+    ;}
+    break;
+
+  case 231:
 #line 2921 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d <= yyvsp[0].d;     ;
-    break;}
-case 249:
-#line 2922 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d >= yyvsp[0].d;     ;
-    break;}
-case 250:
-#line 2923 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d == yyvsp[0].d;     ;
-    break;}
-case 251:
-#line 2924 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d != yyvsp[0].d;     ;
-    break;}
-case 252:
-#line 2925 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d && yyvsp[0].d;     ;
-    break;}
-case 253:
-#line 2926 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d || yyvsp[0].d;     ;
-    break;}
-case 254:
-#line 2927 "Gmsh.y"
-{ yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d;  ;
-    break;}
-case 255:
-#line 2928 "Gmsh.y"
-{ yyval.d = exp(yyvsp[-1].d);      ;
-    break;}
-case 256:
-#line 2929 "Gmsh.y"
-{ yyval.d = log(yyvsp[-1].d);      ;
-    break;}
-case 257:
+    { 
+      IntersectAllSegmentsTogether();
+    ;}
+    break;
+
+  case 232:
 #line 2930 "Gmsh.y"
-{ yyval.d = log10(yyvsp[-1].d);    ;
-    break;}
-case 258:
+    {yyval.i = 1;;}
+    break;
+
+  case 233:
 #line 2931 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-1].d);     ;
-    break;}
-case 259:
+    {yyval.i = 0;;}
+    break;
+
+  case 234:
 #line 2932 "Gmsh.y"
-{ yyval.d = sin(yyvsp[-1].d);      ;
-    break;}
-case 260:
+    {yyval.i = -1;;}
+    break;
+
+  case 235:
 #line 2933 "Gmsh.y"
-{ yyval.d = asin(yyvsp[-1].d);     ;
-    break;}
-case 261:
+    {yyval.i = -1;;}
+    break;
+
+  case 236:
 #line 2934 "Gmsh.y"
-{ yyval.d = cos(yyvsp[-1].d);      ;
-    break;}
-case 262:
-#line 2935 "Gmsh.y"
-{ yyval.d = acos(yyvsp[-1].d);     ;
-    break;}
-case 263:
-#line 2936 "Gmsh.y"
-{ yyval.d = tan(yyvsp[-1].d);      ;
-    break;}
-case 264:
-#line 2937 "Gmsh.y"
-{ yyval.d = atan(yyvsp[-1].d);     ;
-    break;}
-case 265:
+    {yyval.i = -1;;}
+    break;
+
+  case 237:
 #line 2938 "Gmsh.y"
-{ yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;
-    break;}
-case 266:
+    { yyval.d = yyvsp[0].d;           ;}
+    break;
+
+  case 238:
 #line 2939 "Gmsh.y"
-{ yyval.d = sinh(yyvsp[-1].d);     ;
-    break;}
-case 267:
+    { yyval.d = yyvsp[-1].d;           ;}
+    break;
+
+  case 239:
 #line 2940 "Gmsh.y"
-{ yyval.d = cosh(yyvsp[-1].d);     ;
-    break;}
-case 268:
+    { yyval.d = -yyvsp[0].d;          ;}
+    break;
+
+  case 240:
 #line 2941 "Gmsh.y"
-{ yyval.d = tanh(yyvsp[-1].d);     ;
-    break;}
-case 269:
+    { yyval.d = yyvsp[0].d;           ;}
+    break;
+
+  case 241:
 #line 2942 "Gmsh.y"
-{ yyval.d = fabs(yyvsp[-1].d);     ;
-    break;}
-case 270:
+    { yyval.d = !yyvsp[0].d;          ;}
+    break;
+
+  case 242:
 #line 2943 "Gmsh.y"
-{ yyval.d = floor(yyvsp[-1].d);    ;
-    break;}
-case 271:
+    { yyval.d = yyvsp[-2].d - yyvsp[0].d;      ;}
+    break;
+
+  case 243:
 #line 2944 "Gmsh.y"
-{ yyval.d = ceil(yyvsp[-1].d);     ;
-    break;}
-case 272:
+    { yyval.d = yyvsp[-2].d + yyvsp[0].d;      ;}
+    break;
+
+  case 244:
 #line 2945 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
-    break;}
-case 273:
-#line 2946 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
-    break;}
-case 274:
+    { yyval.d = yyvsp[-2].d * yyvsp[0].d;      ;}
+    break;
+
+  case 245:
 #line 2947 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
-    break;}
-case 275:
-#line 2948 "Gmsh.y"
-{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
-    break;}
-case 276:
-#line 2950 "Gmsh.y"
-{ yyval.d = exp(yyvsp[-1].d);      ;
-    break;}
-case 277:
-#line 2951 "Gmsh.y"
-{ yyval.d = log(yyvsp[-1].d);      ;
-    break;}
-case 278:
-#line 2952 "Gmsh.y"
-{ yyval.d = log10(yyvsp[-1].d);    ;
-    break;}
-case 279:
+    { 
+      if(!yyvsp[0].d)
+	yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
+      else
+	yyval.d = yyvsp[-2].d / yyvsp[0].d;     
+    ;}
+    break;
+
+  case 246:
 #line 2953 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-1].d);     ;
-    break;}
-case 280:
+    { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d;  ;}
+    break;
+
+  case 247:
 #line 2954 "Gmsh.y"
-{ yyval.d = sin(yyvsp[-1].d);      ;
-    break;}
-case 281:
+    { yyval.d = pow(yyvsp[-2].d, yyvsp[0].d);  ;}
+    break;
+
+  case 248:
 #line 2955 "Gmsh.y"
-{ yyval.d = asin(yyvsp[-1].d);     ;
-    break;}
-case 282:
+    { yyval.d = yyvsp[-2].d < yyvsp[0].d;      ;}
+    break;
+
+  case 249:
 #line 2956 "Gmsh.y"
-{ yyval.d = cos(yyvsp[-1].d);      ;
-    break;}
-case 283:
+    { yyval.d = yyvsp[-2].d > yyvsp[0].d;      ;}
+    break;
+
+  case 250:
 #line 2957 "Gmsh.y"
-{ yyval.d = acos(yyvsp[-1].d);     ;
-    break;}
-case 284:
+    { yyval.d = yyvsp[-2].d <= yyvsp[0].d;     ;}
+    break;
+
+  case 251:
 #line 2958 "Gmsh.y"
-{ yyval.d = tan(yyvsp[-1].d);      ;
-    break;}
-case 285:
+    { yyval.d = yyvsp[-2].d >= yyvsp[0].d;     ;}
+    break;
+
+  case 252:
 #line 2959 "Gmsh.y"
-{ yyval.d = atan(yyvsp[-1].d);     ;
-    break;}
-case 286:
+    { yyval.d = yyvsp[-2].d == yyvsp[0].d;     ;}
+    break;
+
+  case 253:
 #line 2960 "Gmsh.y"
-{ yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;
-    break;}
-case 287:
+    { yyval.d = yyvsp[-2].d != yyvsp[0].d;     ;}
+    break;
+
+  case 254:
 #line 2961 "Gmsh.y"
-{ yyval.d = sinh(yyvsp[-1].d);     ;
-    break;}
-case 288:
+    { yyval.d = yyvsp[-2].d && yyvsp[0].d;     ;}
+    break;
+
+  case 255:
 #line 2962 "Gmsh.y"
-{ yyval.d = cosh(yyvsp[-1].d);     ;
-    break;}
-case 289:
+    { yyval.d = yyvsp[-2].d || yyvsp[0].d;     ;}
+    break;
+
+  case 256:
 #line 2963 "Gmsh.y"
-{ yyval.d = tanh(yyvsp[-1].d);     ;
-    break;}
-case 290:
+    { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d;  ;}
+    break;
+
+  case 257:
 #line 2964 "Gmsh.y"
-{ yyval.d = fabs(yyvsp[-1].d);     ;
-    break;}
-case 291:
+    { yyval.d = exp(yyvsp[-1].d);      ;}
+    break;
+
+  case 258:
 #line 2965 "Gmsh.y"
-{ yyval.d = floor(yyvsp[-1].d);    ;
-    break;}
-case 292:
+    { yyval.d = log(yyvsp[-1].d);      ;}
+    break;
+
+  case 259:
 #line 2966 "Gmsh.y"
-{ yyval.d = ceil(yyvsp[-1].d);     ;
-    break;}
-case 293:
+    { yyval.d = log10(yyvsp[-1].d);    ;}
+    break;
+
+  case 260:
 #line 2967 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
-    break;}
-case 294:
+    { yyval.d = sqrt(yyvsp[-1].d);     ;}
+    break;
+
+  case 261:
 #line 2968 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
-    break;}
-case 295:
+    { yyval.d = sin(yyvsp[-1].d);      ;}
+    break;
+
+  case 262:
 #line 2969 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
-    break;}
-case 296:
+    { yyval.d = asin(yyvsp[-1].d);     ;}
+    break;
+
+  case 263:
 #line 2970 "Gmsh.y"
-{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
-    break;}
-case 297:
+    { yyval.d = cos(yyvsp[-1].d);      ;}
+    break;
+
+  case 264:
+#line 2971 "Gmsh.y"
+    { yyval.d = acos(yyvsp[-1].d);     ;}
+    break;
+
+  case 265:
+#line 2972 "Gmsh.y"
+    { yyval.d = tan(yyvsp[-1].d);      ;}
+    break;
+
+  case 266:
+#line 2973 "Gmsh.y"
+    { yyval.d = atan(yyvsp[-1].d);     ;}
+    break;
+
+  case 267:
+#line 2974 "Gmsh.y"
+    { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;}
+    break;
+
+  case 268:
+#line 2975 "Gmsh.y"
+    { yyval.d = sinh(yyvsp[-1].d);     ;}
+    break;
+
+  case 269:
+#line 2976 "Gmsh.y"
+    { yyval.d = cosh(yyvsp[-1].d);     ;}
+    break;
+
+  case 270:
+#line 2977 "Gmsh.y"
+    { yyval.d = tanh(yyvsp[-1].d);     ;}
+    break;
+
+  case 271:
+#line 2978 "Gmsh.y"
+    { yyval.d = fabs(yyvsp[-1].d);     ;}
+    break;
+
+  case 272:
 #line 2979 "Gmsh.y"
-{ yyval.d = yyvsp[0].d; ;
-    break;}
-case 298:
+    { yyval.d = floor(yyvsp[-1].d);    ;}
+    break;
+
+  case 273:
 #line 2980 "Gmsh.y"
-{ yyval.d = 3.141592653589793; ;
-    break;}
-case 299:
+    { yyval.d = ceil(yyvsp[-1].d);     ;}
+    break;
+
+  case 274:
 #line 2981 "Gmsh.y"
-{ yyval.d = ParUtil::Instance()->rank(); ;
-    break;}
-case 300:
+    { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;}
+    break;
+
+  case 275:
 #line 2982 "Gmsh.y"
-{ yyval.d = ParUtil::Instance()->size(); ;
-    break;}
-case 301:
+    { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;}
+    break;
+
+  case 276:
 #line 2983 "Gmsh.y"
-{ yyval.d = GMSH_MAJOR_VERSION; ;
-    break;}
-case 302:
+    { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;}
+    break;
+
+  case 277:
 #line 2984 "Gmsh.y"
-{ yyval.d = GMSH_MINOR_VERSION; ;
-    break;}
-case 303:
-#line 2985 "Gmsh.y"
-{ yyval.d = GMSH_PATCH_VERSION; ;
-    break;}
-case 304:
+    { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;}
+    break;
+
+  case 278:
+#line 2986 "Gmsh.y"
+    { yyval.d = exp(yyvsp[-1].d);      ;}
+    break;
+
+  case 279:
+#line 2987 "Gmsh.y"
+    { yyval.d = log(yyvsp[-1].d);      ;}
+    break;
+
+  case 280:
+#line 2988 "Gmsh.y"
+    { yyval.d = log10(yyvsp[-1].d);    ;}
+    break;
+
+  case 281:
+#line 2989 "Gmsh.y"
+    { yyval.d = sqrt(yyvsp[-1].d);     ;}
+    break;
+
+  case 282:
 #line 2990 "Gmsh.y"
-{
+    { yyval.d = sin(yyvsp[-1].d);      ;}
+    break;
+
+  case 283:
+#line 2991 "Gmsh.y"
+    { yyval.d = asin(yyvsp[-1].d);     ;}
+    break;
+
+  case 284:
+#line 2992 "Gmsh.y"
+    { yyval.d = cos(yyvsp[-1].d);      ;}
+    break;
+
+  case 285:
+#line 2993 "Gmsh.y"
+    { yyval.d = acos(yyvsp[-1].d);     ;}
+    break;
+
+  case 286:
+#line 2994 "Gmsh.y"
+    { yyval.d = tan(yyvsp[-1].d);      ;}
+    break;
+
+  case 287:
+#line 2995 "Gmsh.y"
+    { yyval.d = atan(yyvsp[-1].d);     ;}
+    break;
+
+  case 288:
+#line 2996 "Gmsh.y"
+    { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;}
+    break;
+
+  case 289:
+#line 2997 "Gmsh.y"
+    { yyval.d = sinh(yyvsp[-1].d);     ;}
+    break;
+
+  case 290:
+#line 2998 "Gmsh.y"
+    { yyval.d = cosh(yyvsp[-1].d);     ;}
+    break;
+
+  case 291:
+#line 2999 "Gmsh.y"
+    { yyval.d = tanh(yyvsp[-1].d);     ;}
+    break;
+
+  case 292:
+#line 3000 "Gmsh.y"
+    { yyval.d = fabs(yyvsp[-1].d);     ;}
+    break;
+
+  case 293:
+#line 3001 "Gmsh.y"
+    { yyval.d = floor(yyvsp[-1].d);    ;}
+    break;
+
+  case 294:
+#line 3002 "Gmsh.y"
+    { yyval.d = ceil(yyvsp[-1].d);     ;}
+    break;
+
+  case 295:
+#line 3003 "Gmsh.y"
+    { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;}
+    break;
+
+  case 296:
+#line 3004 "Gmsh.y"
+    { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;}
+    break;
+
+  case 297:
+#line 3005 "Gmsh.y"
+    { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;}
+    break;
+
+  case 298:
+#line 3006 "Gmsh.y"
+    { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;}
+    break;
+
+  case 299:
+#line 3015 "Gmsh.y"
+    { yyval.d = yyvsp[0].d; ;}
+    break;
+
+  case 300:
+#line 3016 "Gmsh.y"
+    { yyval.d = 3.141592653589793; ;}
+    break;
+
+  case 301:
+#line 3017 "Gmsh.y"
+    { yyval.d = ParUtil::Instance()->rank(); ;}
+    break;
+
+  case 302:
+#line 3018 "Gmsh.y"
+    { yyval.d = ParUtil::Instance()->size(); ;}
+    break;
+
+  case 303:
+#line 3019 "Gmsh.y"
+    { yyval.d = GMSH_MAJOR_VERSION; ;}
+    break;
+
+  case 304:
+#line 3020 "Gmsh.y"
+    { yyval.d = GMSH_MINOR_VERSION; ;}
+    break;
+
+  case 305:
+#line 3021 "Gmsh.y"
+    { yyval.d = GMSH_PATCH_VERSION; ;}
+    break;
+
+  case 306:
+#line 3026 "Gmsh.y"
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[0].c;
       Symbol *pSymbol;
@@ -6184,11 +7130,12 @@ case 304:
       else
 	yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0);
       Free(yyvsp[0].c);
-    ;
-    break;}
-case 305:
-#line 3003 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 307:
+#line 3039 "Gmsh.y"
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-3].c;
       Symbol *pSymbol;
@@ -6206,11 +7153,12 @@ case 305:
 	}
       }
       Free(yyvsp[-3].c);
-    ;
-    break;}
-case 306:
-#line 3023 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 308:
+#line 3059 "Gmsh.y"
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-2].c;
       Symbol *pSymbol;
@@ -6222,11 +7170,12 @@ case 306:
 	yyval.d = List_Nbr(pSymbol->val);
       }
       Free(yyvsp[-2].c);
-    ;
-    break;}
-case 307:
-#line 3037 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 309:
+#line 3073 "Gmsh.y"
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-1].c;
       Symbol *pSymbol;
@@ -6237,11 +7186,12 @@ case 307:
       else
 	yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i);
       Free(yyvsp[-1].c);
-    ;
-    break;}
-case 308:
-#line 3050 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 310:
+#line 3086 "Gmsh.y"
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-4].c;
       Symbol *pSymbol;
@@ -6259,11 +7209,12 @@ case 308:
 	}
       }
       Free(yyvsp[-4].c);
-    ;
-    break;}
-case 309:
-#line 3073 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 311:
+#line 3109 "Gmsh.y"
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){
@@ -6279,11 +7230,12 @@ case 309:
 	  yyval.d = pNumOpt(0, GMSH_GET, 0);
       }
       Free(yyvsp[-2].c); Free(yyvsp[0].c);
-    ;
-    break;}
-case 310:
-#line 3091 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 312:
+#line 3127 "Gmsh.y"
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){
@@ -6299,11 +7251,12 @@ case 310:
 	  yyval.d = pNumOpt((int)yyvsp[-3].d, GMSH_GET, 0);
       }
       Free(yyvsp[-5].c); Free(yyvsp[0].c);
-    ;
-    break;}
-case 311:
-#line 3109 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 313:
+#line 3145 "Gmsh.y"
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){
@@ -6319,11 +7272,12 @@ case 311:
 	  yyval.d = pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+yyvsp[0].i);
       }
       Free(yyvsp[-3].c); Free(yyvsp[-1].c);
-    ;
-    break;}
-case 312:
-#line 3127 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 314:
+#line 3163 "Gmsh.y"
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){
@@ -6339,160 +7293,185 @@ case 312:
 	  yyval.d = pNumOpt((int)yyvsp[-4].d, GMSH_SET|GMSH_GUI, pNumOpt((int)yyvsp[-4].d, GMSH_GET, 0)+yyvsp[0].i);
       }
       Free(yyvsp[-6].c); Free(yyvsp[-1].c);
-    ;
-    break;}
-case 313:
-#line 3145 "Gmsh.y"
-{ 
+    ;}
+    break;
+
+  case 315:
+#line 3181 "Gmsh.y"
+    { 
       yyval.d = GetValue(yyvsp[-3].c, yyvsp[-1].d);
       Free(yyvsp[-3].c);
-    ;
-    break;}
-case 314:
-#line 3153 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 316:
+#line 3189 "Gmsh.y"
+    {
       memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double));
-    ;
-    break;}
-case 315:
-#line 3157 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 317:
+#line 3193 "Gmsh.y"
+    {
       for(int i = 0; i < 5; i++) yyval.v[i] = -yyvsp[0].v[i];
-    ;
-    break;}
-case 316:
-#line 3161 "Gmsh.y"
-{ 
+    ;}
+    break;
+
+  case 318:
+#line 3197 "Gmsh.y"
+    { 
       for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[0].v[i];
-    ;
-    break;}
-case 317:
-#line 3165 "Gmsh.y"
-{ 
+    ;}
+    break;
+
+  case 319:
+#line 3201 "Gmsh.y"
+    { 
       for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i];
-    ;
-    break;}
-case 318:
-#line 3169 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 320:
+#line 3205 "Gmsh.y"
+    {
       for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i];
-    ;
-    break;}
-case 319:
-#line 3176 "Gmsh.y"
-{ 
+    ;}
+    break;
+
+  case 321:
+#line 3212 "Gmsh.y"
+    { 
       yyval.v[0] = yyvsp[-9].d;  yyval.v[1] = yyvsp[-7].d;  yyval.v[2] = yyvsp[-5].d;  yyval.v[3] = yyvsp[-3].d; yyval.v[4] = yyvsp[-1].d;
-    ;
-    break;}
-case 320:
-#line 3180 "Gmsh.y"
-{ 
+    ;}
+    break;
+
+  case 322:
+#line 3216 "Gmsh.y"
+    { 
       yyval.v[0] = yyvsp[-7].d;  yyval.v[1] = yyvsp[-5].d;  yyval.v[2] = yyvsp[-3].d;  yyval.v[3] = yyvsp[-1].d; yyval.v[4] = 1.0;
-    ;
-    break;}
-case 321:
-#line 3184 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 323:
+#line 3220 "Gmsh.y"
+    {
       yyval.v[0] = yyvsp[-5].d;  yyval.v[1] = yyvsp[-3].d;  yyval.v[2] = yyvsp[-1].d;  yyval.v[3] = 0.0; yyval.v[4] = 1.0;
-    ;
-    break;}
-case 322:
-#line 3188 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 324:
+#line 3224 "Gmsh.y"
+    {
       yyval.v[0] = yyvsp[-5].d;  yyval.v[1] = yyvsp[-3].d;  yyval.v[2] = yyvsp[-1].d;  yyval.v[3] = 0.0; yyval.v[4] = 1.0;
-    ;
-    break;}
-case 323:
-#line 3195 "Gmsh.y"
-{
-    ;
-    break;}
-case 324:
-#line 3198 "Gmsh.y"
-{
-    ;
-    break;}
-case 325:
-#line 3204 "Gmsh.y"
-{
-    ;
-    break;}
-case 326:
-#line 3207 "Gmsh.y"
-{
-    ;
-    break;}
-case 327:
-#line 3213 "Gmsh.y"
-{
-    ;
-    break;}
-case 328:
-#line 3216 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 325:
+#line 3231 "Gmsh.y"
+    {
+    ;}
+    break;
+
+  case 326:
+#line 3234 "Gmsh.y"
+    {
+    ;}
+    break;
+
+  case 327:
+#line 3240 "Gmsh.y"
+    {
+    ;}
+    break;
+
+  case 328:
+#line 3243 "Gmsh.y"
+    {
+    ;}
+    break;
+
+  case 329:
+#line 3249 "Gmsh.y"
+    {
+    ;}
+    break;
+
+  case 330:
+#line 3252 "Gmsh.y"
+    {
        yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 329:
-#line 3220 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 331:
+#line 3256 "Gmsh.y"
+    {
        yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 330:
-#line 3227 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 332:
+#line 3263 "Gmsh.y"
+    {
       yyval.l = List_Create(2, 1, sizeof(List_T*));
       List_Add(yyval.l, &(yyvsp[0].l));
-    ;
-    break;}
-case 331:
-#line 3232 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 333:
+#line 3268 "Gmsh.y"
+    {
       List_Add(yyval.l, &(yyvsp[0].l));
-    ;
-    break;}
-case 332:
-#line 3240 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 334:
+#line 3276 "Gmsh.y"
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       List_Add(yyval.l, &(yyvsp[0].d));
-    ;
-    break;}
-case 333:
-#line 3245 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 335:
+#line 3281 "Gmsh.y"
+    {
       yyval.l = yyvsp[0].l;
-    ;
-    break;}
-case 334:
-#line 3249 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 336:
+#line 3285 "Gmsh.y"
+    {
       yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 335:
-#line 3253 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 337:
+#line 3289 "Gmsh.y"
+    {
       yyval.l = yyvsp[-1].l;
       double *pd;
       for(int i = 0; i < List_Nbr(yyval.l); i++){
 	pd = (double*)List_Pointer(yyval.l, i);
 	(*pd) = - (*pd);
       }
-    ;
-    break;}
-case 336:
-#line 3265 "Gmsh.y"
-{ 
+    ;}
+    break;
+
+  case 338:
+#line 3301 "Gmsh.y"
+    { 
       yyval.l = List_Create(2, 1, sizeof(double)); 
       for(double d = yyvsp[-2].d; (yyvsp[-2].d < yyvsp[0].d) ? (d <= yyvsp[0].d) : (d >= yyvsp[0].d); (yyvsp[-2].d < yyvsp[0].d) ? (d += 1.) : (d -= 1.)) 
 	List_Add(yyval.l, &d);
-    ;
-    break;}
-case 337:
-#line 3271 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 339:
+#line 3307 "Gmsh.y"
+    {
       yyval.l = List_Create(2, 1, sizeof(double)); 
       if(!yyvsp[0].d || (yyvsp[-4].d < yyvsp[-2].d && yyvsp[0].d < 0) || (yyvsp[-4].d > yyvsp[-2].d && yyvsp[0].d > 0)){
         yymsg(GERROR, "Wrong increment in '%g:%g:%g'", yyvsp[-4].d, yyvsp[-2].d, yyvsp[0].d);
@@ -6501,11 +7480,12 @@ case 337:
       else
 	for(double d = yyvsp[-4].d; (yyvsp[0].d > 0) ? (d <= yyvsp[-2].d) : (d >= yyvsp[-2].d); d += yyvsp[0].d)
 	  List_Add(yyval.l, &d);
-   ;
-    break;}
-case 338:
-#line 3282 "Gmsh.y"
-{
+   ;}
+    break;
+
+  case 340:
+#line 3318 "Gmsh.y"
+    {
       // Returns the coordinates of a point and fills a list with it.
       // This allows to ensure e.g. that relative point positions are
       // always conserved
@@ -6523,11 +7503,12 @@ case 338:
 	List_Add(yyval.l, &v->Pos.Y);
 	List_Add(yyval.l, &v->Pos.Z);
       }
-    ;
-    break;}
-case 339:
-#line 3302 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 341:
+#line 3338 "Gmsh.y"
+    {
       yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double));
       for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
 	Shape *s = (Shape*) List_Pointer(yyvsp[0].l, i);
@@ -6535,11 +7516,12 @@ case 339:
 	List_Add(yyval.l, &d);
       }
       List_Delete(yyvsp[0].l);
-    ;
-    break;}
-case 340:
-#line 3312 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 342:
+#line 3348 "Gmsh.y"
+    {
       yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double));
       for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
 	Shape *s = (Shape*) List_Pointer(yyvsp[0].l, i);
@@ -6547,11 +7529,12 @@ case 340:
 	List_Add(yyval.l, &d);
       }
       List_Delete(yyvsp[0].l);
-    ;
-    break;}
-case 341:
-#line 3322 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 343:
+#line 3358 "Gmsh.y"
+    {
       // FIXME: The syntax for this is ugly: we get double semi-colons
       // at the end of the line
       yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double));
@@ -6561,11 +7544,12 @@ case 341:
 	List_Add(yyval.l, &d);
       }
       List_Delete(yyvsp[0].l);
-    ;
-    break;}
-case 342:
-#line 3334 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 344:
+#line 3370 "Gmsh.y"
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-2].c;
@@ -6580,11 +7564,12 @@ case 342:
 	  List_Add(yyval.l, (double*)List_Pointer_Fast(pSymbol->val, i));
       }
       Free(yyvsp[-2].c);
-    ;
-    break;}
-case 343:
-#line 3351 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 345:
+#line 3387 "Gmsh.y"
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-2].c;
@@ -6601,11 +7586,12 @@ case 343:
 	}
       }
       Free(yyvsp[-2].c);
-    ;
-    break;}
-case 344:
-#line 3370 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 346:
+#line 3406 "Gmsh.y"
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-5].c;
@@ -6627,11 +7613,12 @@ case 344:
       }
       Free(yyvsp[-5].c);
       List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 345:
-#line 3394 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 347:
+#line 3430 "Gmsh.y"
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-5].c;
@@ -6655,62 +7642,70 @@ case 345:
       }
       Free(yyvsp[-5].c);
       List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 346:
-#line 3423 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 348:
+#line 3459 "Gmsh.y"
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       List_Add(yyval.l, &(yyvsp[0].d));
-    ;
-    break;}
-case 347:
-#line 3428 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 349:
+#line 3464 "Gmsh.y"
+    {
       yyval.l = yyvsp[0].l;
-    ;
-    break;}
-case 348:
-#line 3432 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 350:
+#line 3468 "Gmsh.y"
+    {
       List_Add(yyval.l, &(yyvsp[0].d));
-    ;
-    break;}
-case 349:
-#line 3436 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 351:
+#line 3472 "Gmsh.y"
+    {
       for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
 	double d;
 	List_Read(yyvsp[0].l, i, &d);
 	List_Add(yyval.l, &d);
       }
       List_Delete(yyvsp[0].l);
-    ;
-    break;}
-case 350:
-#line 3449 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 352:
+#line 3485 "Gmsh.y"
+    {
       yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d);
-    ;
-    break;}
-case 351:
-#line 3453 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 353:
+#line 3489 "Gmsh.y"
+    {
       yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255);
-    ;
-    break;}
-case 352:
-#line 3465 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 354:
+#line 3501 "Gmsh.y"
+    {
       int flag;
       yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag);
       if(flag) yymsg(GERROR, "Unknown color '%s'", yyvsp[0].c);
       Free(yyvsp[0].c);
-    ;
-    break;}
-case 353:
-#line 3472 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 355:
+#line 3508 "Gmsh.y"
+    {
       unsigned int (*pColOpt)(int num, int action, unsigned int value);
       StringXColor *pColCat;
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){
@@ -6727,17 +7722,19 @@ case 353:
 	}
       }
       Free(yyvsp[-4].c); Free(yyvsp[0].c);
-    ;
-    break;}
-case 354:
-#line 3494 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 356:
+#line 3530 "Gmsh.y"
+    {
       yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 355:
-#line 3498 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 357:
+#line 3534 "Gmsh.y"
+    {
       yyval.l = List_Create(256, 10, sizeof(unsigned int));
       GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d);
       if(!ct)
@@ -6747,50 +7744,56 @@ case 355:
 	  List_Add(yyval.l, &ct->table[i]);
       }
       Free(yyvsp[-5].c);
-    ;
-    break;}
-case 356:
-#line 3513 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 358:
+#line 3549 "Gmsh.y"
+    {
       yyval.l = List_Create(256, 10, sizeof(unsigned int));
       List_Add(yyval.l, &(yyvsp[0].u));
-    ;
-    break;}
-case 357:
-#line 3518 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 359:
+#line 3554 "Gmsh.y"
+    {
       List_Add(yyval.l, &(yyvsp[0].u));
-    ;
-    break;}
-case 358:
-#line 3525 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 360:
+#line 3561 "Gmsh.y"
+    {
       yyval.c = yyvsp[0].c;
-    ;
-    break;}
-case 359:
-#line 3529 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 361:
+#line 3565 "Gmsh.y"
+    {
       yyval.c = (char *)Malloc(32*sizeof(char));
       time_t now;
       time(&now);
       strcpy(yyval.c, ctime(&now));
       yyval.c[strlen(yyval.c) - 1] = '\0';
-    ;
-    break;}
-case 360:
-#line 3537 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 362:
+#line 3573 "Gmsh.y"
+    {
       yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char));
       strcpy(yyval.c, yyvsp[-3].c);
       strcat(yyval.c, yyvsp[-1].c);
       Free(yyvsp[-3].c);
       Free(yyvsp[-1].c);
-    ;
-    break;}
-case 361:
-#line 3545 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 363:
+#line 3581 "Gmsh.y"
+    {
       yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char));
       int i;
       for(i = strlen(yyvsp[-1].c)-1; i >= 0; i--){
@@ -6802,11 +7805,12 @@ case 361:
       }
       if(i <= 0) strcpy(yyval.c, yyvsp[-1].c);
       Free(yyvsp[-1].c);
-    ;
-    break;}
-case 362:
-#line 3559 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 364:
+#line 3595 "Gmsh.y"
+    {
       yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char));
       int i;
       for(i = strlen(yyvsp[-1].c)-1; i >= 0; i--){
@@ -6818,17 +7822,19 @@ case 362:
       else
 	strcpy(yyval.c, &yyvsp[-1].c[i+1]);
       Free(yyvsp[-1].c);
-    ;
-    break;}
-case 363:
-#line 3573 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 365:
+#line 3609 "Gmsh.y"
+    {
       yyval.c = yyvsp[-1].c;
-    ;
-    break;}
-case 364:
-#line 3577 "Gmsh.y"
-{
+    ;}
+    break;
+
+  case 366:
+#line 3613 "Gmsh.y"
+    {
       char tmpstring[1024];
       int i = PrintListOfDouble(yyvsp[-3].c, yyvsp[-1].l, tmpstring);
       if(i < 0){
@@ -6845,11 +7851,12 @@ case 364:
 	Free(yyvsp[-3].c);
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 365:
-#line 3596 "Gmsh.y"
-{ 
+    ;}
+    break;
+
+  case 367:
+#line 3632 "Gmsh.y"
+    { 
       char* (*pStrOpt)(int num, int action, char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-3].c))){
@@ -6869,11 +7876,12 @@ case 365:
 	  strcpy(yyval.c, str);
 	}
       }
-    ;
-    break;}
-case 366:
-#line 3618 "Gmsh.y"
-{ 
+    ;}
+    break;
+
+  case 368:
+#line 3654 "Gmsh.y"
+    { 
       char* (*pStrOpt)(int num, int action, char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-6].c))){
@@ -6893,231 +7901,224 @@ case 366:
 	  strcpy(yyval.c, str);
 	}
       }
-    ;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/share/bison.simple"
+    ;}
+    break;
+
+
+    }
+
+/* Line 991 of yacc.c.  */
+#line 7911 "Gmsh.tab.cpp"
 
   yyvsp -= yylen;
   yyssp -= yylen;
-#ifdef YYLSP_NEEDED
-  yylsp -= yylen;
-#endif
 
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
+
+  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
-#endif
 
-  /* Now "shift" the result of the reduction.
-     Determine what state that goes to,
-     based on the state we popped back to
-     and the rule number reduced by.  */
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
 
   yyn = yyr1[yyn];
 
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
     yystate = yytable[yystate];
   else
-    yystate = yydefgoto[yyn - YYNTBASE];
+    yystate = yydefgoto[yyn - YYNTOKENS];
 
   goto yynewstate;
 
-yyerrlab:   /* here on detecting error */
 
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
     {
       ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
+#if YYERROR_VERBOSE
       yyn = yypact[yystate];
 
-      if (yyn > YYFLAG && yyn < YYLAST)
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
 	{
-	  int size = 0;
-	  char *msg;
-	  int x, count;
-
-	  count = 0;
-	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-	  for (x = (yyn < 0 ? -yyn : 0);
-	       x < (sizeof(yytname) / sizeof(char *)); x++)
-	    if (yycheck[x + yyn] == x)
-	      size += strlen(yytname[x]) + 15, count++;
-	  msg = (char *) malloc(size + 15);
-	  if (msg != 0)
+	  YYSIZE_T yysize = 0;
+	  int yytype = YYTRANSLATE (yychar);
+	  char *yymsg;
+	  int yyx, yycount;
+
+	  yycount = 0;
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  for (yyx = yyn < 0 ? -yyn : 0;
+	       yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      yysize += yystrlen (yytname[yyx]) + 15, yycount++;
+	  yysize += yystrlen ("syntax error, unexpected ") + 1;
+	  yysize += yystrlen (yytname[yytype]);
+	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg != 0)
 	    {
-	      strcpy(msg, "parse error");
+	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+	      yyp = yystpcpy (yyp, yytname[yytype]);
 
-	      if (count < 5)
+	      if (yycount < 5)
 		{
-		  count = 0;
-		  for (x = (yyn < 0 ? -yyn : 0);
-		       x < (sizeof(yytname) / sizeof(char *)); x++)
-		    if (yycheck[x + yyn] == x)
+		  yycount = 0;
+		  for (yyx = yyn < 0 ? -yyn : 0;
+		       yyx < (int) (sizeof (yytname) / sizeof (char *));
+		       yyx++)
+		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
 		      {
-			strcat(msg, count == 0 ? ", expecting `" : " or `");
-			strcat(msg, yytname[x]);
-			strcat(msg, "'");
-			count++;
+			const char *yyq = ! yycount ? ", expecting " : " or ";
+			yyp = yystpcpy (yyp, yyq);
+			yyp = yystpcpy (yyp, yytname[yyx]);
+			yycount++;
 		      }
 		}
-	      yyerror(msg);
-	      free(msg);
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
 	    }
 	  else
-	    yyerror ("parse error; also virtual memory exceeded");
+	    yyerror ("syntax error; also virtual memory exhausted");
 	}
       else
 #endif /* YYERROR_VERBOSE */
-	yyerror("parse error");
+	yyerror ("syntax error");
     }
 
-  goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
+
 
   if (yyerrstatus == 3)
     {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+      /* If just tried and failed to reuse lookahead token after an
+	 error, discard it.  */
 
-      /* return failure if at end of input */
+      /* Return failure if at end of input.  */
       if (yychar == YYEOF)
-	YYABORT;
-
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
+        {
+	  /* Pop the error token.  */
+          YYPOPSTACK;
+	  /* Pop the rest of the stack.  */
+	  while (yyss < yyssp)
+	    {
+	      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+	      yydestruct (yystos[*yyssp], yyvsp);
+	      YYPOPSTACK;
+	    }
+	  YYABORT;
+        }
 
+      YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+      yydestruct (yytoken, &yylval);
       yychar = YYEMPTY;
-    }
 
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
+    }
 
-  yyerrstatus = 3;		/* Each real token shifted decrements this */
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
+  goto yyerrlab2;
 
-  goto yyerrhandle;
 
-yyerrdefault:  /* current state does not do anything special for the error token. */
+/*----------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action.  |
+`----------------------------------------------------*/
+yyerrlab1:
 
-#if 0
-  /* This is wrong; only states that explicitly want error tokens
-     should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
+  /* Suppress GCC warning that yyerrlab1 is unused when no action
+     invokes YYERROR.  */
+#if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) \
+    && !defined __cplusplus
+  __attribute__ ((__unused__))
 #endif
 
-yyerrpop:   /* pop the current state because it cannot handle the error token */
 
-  if (yyssp == yyss) YYABORT;
-  yyvsp--;
-  yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
-  yylsp--;
-#endif
+  goto yyerrlab2;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
 
-yyerrhandle:
+/*---------------------------------------------------------------.
+| yyerrlab2 -- pop states until the error token can be shifted.  |
+`---------------------------------------------------------------*/
+yyerrlab2:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
 
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yyerrdefault;
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
 
-  yyn += YYTERROR;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-    goto yyerrdefault;
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
 
-  yyn = yytable[yyn];
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-	goto yyerrpop;
-      yyn = -yyn;
-      goto yyreduce;
+      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+      yydestruct (yystos[yystate], yyvsp);
+      yyvsp--;
+      yystate = *--yyssp;
+
+      YY_STACK_PRINT (yyss, yyssp);
     }
-  else if (yyn == 0)
-    goto yyerrpop;
 
   if (yyn == YYFINAL)
     YYACCEPT;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
+  YYDPRINTF ((stderr, "Shifting error token, "));
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
+
 
   yystate = yyn;
   goto yynewstate;
 
- yyacceptlab:
-  /* YYACCEPT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*----------------------------------------------.
+| yyoverflowlab -- parser overflow comes here.  |
+`----------------------------------------------*/
+yyoverflowlab:
+  yyerror ("parser stack overflow");
+  yyresult = 2;
+  /* Fall through.  */
 #endif
-    }
-  return 0;
 
- yyabortlab:
-  /* YYABORT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
+yyreturn:
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
 #endif
-    }
-  return 1;
+  return yyresult;
 }
-#line 3641 "Gmsh.y"
+
+
+#line 3677 "Gmsh.y"
 
 
 void DeleteSymbol(void *a, void *b){
@@ -7211,3 +8212,4 @@ void yymsg(int type, char *fmt, ...){
 
   if(type == GERROR) yyerrorstate++;
 }
+
diff --git a/Parser/Gmsh.tab.hpp b/Parser/Gmsh.tab.hpp
index 31ef5417bf4384090799d1263019b23d06f12db9..85a77aa43915360cf754d5e70c7bd674bf9556ab 100644
--- a/Parser/Gmsh.tab.hpp
+++ b/Parser/Gmsh.tab.hpp
@@ -1,4 +1,365 @@
-typedef union {
+/* A Bison parser, made by GNU Bison 1.875.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     tDOUBLE = 258,
+     tSTRING = 259,
+     tBIGSTR = 260,
+     tEND = 261,
+     tAFFECT = 262,
+     tDOTS = 263,
+     tPi = 264,
+     tMPI_Rank = 265,
+     tMPI_Size = 266,
+     tExp = 267,
+     tLog = 268,
+     tLog10 = 269,
+     tSqrt = 270,
+     tSin = 271,
+     tAsin = 272,
+     tCos = 273,
+     tAcos = 274,
+     tTan = 275,
+     tRand = 276,
+     tAtan = 277,
+     tAtan2 = 278,
+     tSinh = 279,
+     tCosh = 280,
+     tTanh = 281,
+     tFabs = 282,
+     tFloor = 283,
+     tCeil = 284,
+     tFmod = 285,
+     tModulo = 286,
+     tHypot = 287,
+     tPrintf = 288,
+     tSprintf = 289,
+     tStrCat = 290,
+     tStrPrefix = 291,
+     tStrRelative = 292,
+     tBoundingBox = 293,
+     tDraw = 294,
+     tToday = 295,
+     tPoint = 296,
+     tCircle = 297,
+     tEllipse = 298,
+     tLine = 299,
+     tSurface = 300,
+     tSpline = 301,
+     tVolume = 302,
+     tCharacteristic = 303,
+     tLength = 304,
+     tParametric = 305,
+     tElliptic = 306,
+     tPlane = 307,
+     tRuled = 308,
+     tTransfinite = 309,
+     tComplex = 310,
+     tPhysical = 311,
+     tUsing = 312,
+     tBump = 313,
+     tProgression = 314,
+     tPlugin = 315,
+     tRotate = 316,
+     tTranslate = 317,
+     tSymmetry = 318,
+     tDilate = 319,
+     tExtrude = 320,
+     tDuplicata = 321,
+     tLoop = 322,
+     tRecombine = 323,
+     tDelete = 324,
+     tCoherence = 325,
+     tIntersect = 326,
+     tAttractor = 327,
+     tLayers = 328,
+     tAlias = 329,
+     tAliasWithOptions = 330,
+     tText2D = 331,
+     tText3D = 332,
+     tInterpolationScheme = 333,
+     tTime = 334,
+     tCombine = 335,
+     tBSpline = 336,
+     tBezier = 337,
+     tNurbs = 338,
+     tOrder = 339,
+     tWith = 340,
+     tBounds = 341,
+     tKnots = 342,
+     tColor = 343,
+     tColorTable = 344,
+     tFor = 345,
+     tIn = 346,
+     tEndFor = 347,
+     tIf = 348,
+     tEndIf = 349,
+     tExit = 350,
+     tReturn = 351,
+     tCall = 352,
+     tFunction = 353,
+     tTrimmed = 354,
+     tShow = 355,
+     tHide = 356,
+     tGetValue = 357,
+     tGMSH_MAJOR_VERSION = 358,
+     tGMSH_MINOR_VERSION = 359,
+     tGMSH_PATCH_VERSION = 360,
+     tB_SPLINE_SURFACE_WITH_KNOTS = 361,
+     tB_SPLINE_CURVE_WITH_KNOTS = 362,
+     tCARTESIAN_POINT = 363,
+     tTRUE = 364,
+     tFALSE = 365,
+     tUNSPECIFIED = 366,
+     tU = 367,
+     tV = 368,
+     tEDGE_CURVE = 369,
+     tVERTEX_POINT = 370,
+     tORIENTED_EDGE = 371,
+     tPLANE = 372,
+     tFACE_OUTER_BOUND = 373,
+     tEDGE_LOOP = 374,
+     tADVANCED_FACE = 375,
+     tVECTOR = 376,
+     tDIRECTION = 377,
+     tAXIS2_PLACEMENT_3D = 378,
+     tISO = 379,
+     tENDISO = 380,
+     tENDSEC = 381,
+     tDATA = 382,
+     tHEADER = 383,
+     tFILE_DESCRIPTION = 384,
+     tFILE_SCHEMA = 385,
+     tFILE_NAME = 386,
+     tMANIFOLD_SOLID_BREP = 387,
+     tCLOSED_SHELL = 388,
+     tADVANCED_BREP_SHAPE_REPRESENTATION = 389,
+     tFACE_BOUND = 390,
+     tCYLINDRICAL_SURFACE = 391,
+     tCONICAL_SURFACE = 392,
+     tCIRCLE = 393,
+     tTRIMMED_CURVE = 394,
+     tGEOMETRIC_SET = 395,
+     tCOMPOSITE_CURVE_SEGMENT = 396,
+     tCONTINUOUS = 397,
+     tCOMPOSITE_CURVE = 398,
+     tTOROIDAL_SURFACE = 399,
+     tPRODUCT_DEFINITION = 400,
+     tPRODUCT_DEFINITION_SHAPE = 401,
+     tSHAPE_DEFINITION_REPRESENTATION = 402,
+     tELLIPSE = 403,
+     tAFFECTDIVIDE = 404,
+     tAFFECTTIMES = 405,
+     tAFFECTMINUS = 406,
+     tAFFECTPLUS = 407,
+     tOR = 408,
+     tAND = 409,
+     tAPPROXEQUAL = 410,
+     tNOTEQUAL = 411,
+     tEQUAL = 412,
+     tGREATEROREQUAL = 413,
+     tLESSOREQUAL = 414,
+     tCROSSPRODUCT = 415,
+     UNARYPREC = 416,
+     tMINUSMINUS = 417,
+     tPLUSPLUS = 418
+   };
+#endif
+#define tDOUBLE 258
+#define tSTRING 259
+#define tBIGSTR 260
+#define tEND 261
+#define tAFFECT 262
+#define tDOTS 263
+#define tPi 264
+#define tMPI_Rank 265
+#define tMPI_Size 266
+#define tExp 267
+#define tLog 268
+#define tLog10 269
+#define tSqrt 270
+#define tSin 271
+#define tAsin 272
+#define tCos 273
+#define tAcos 274
+#define tTan 275
+#define tRand 276
+#define tAtan 277
+#define tAtan2 278
+#define tSinh 279
+#define tCosh 280
+#define tTanh 281
+#define tFabs 282
+#define tFloor 283
+#define tCeil 284
+#define tFmod 285
+#define tModulo 286
+#define tHypot 287
+#define tPrintf 288
+#define tSprintf 289
+#define tStrCat 290
+#define tStrPrefix 291
+#define tStrRelative 292
+#define tBoundingBox 293
+#define tDraw 294
+#define tToday 295
+#define tPoint 296
+#define tCircle 297
+#define tEllipse 298
+#define tLine 299
+#define tSurface 300
+#define tSpline 301
+#define tVolume 302
+#define tCharacteristic 303
+#define tLength 304
+#define tParametric 305
+#define tElliptic 306
+#define tPlane 307
+#define tRuled 308
+#define tTransfinite 309
+#define tComplex 310
+#define tPhysical 311
+#define tUsing 312
+#define tBump 313
+#define tProgression 314
+#define tPlugin 315
+#define tRotate 316
+#define tTranslate 317
+#define tSymmetry 318
+#define tDilate 319
+#define tExtrude 320
+#define tDuplicata 321
+#define tLoop 322
+#define tRecombine 323
+#define tDelete 324
+#define tCoherence 325
+#define tIntersect 326
+#define tAttractor 327
+#define tLayers 328
+#define tAlias 329
+#define tAliasWithOptions 330
+#define tText2D 331
+#define tText3D 332
+#define tInterpolationScheme 333
+#define tTime 334
+#define tCombine 335
+#define tBSpline 336
+#define tBezier 337
+#define tNurbs 338
+#define tOrder 339
+#define tWith 340
+#define tBounds 341
+#define tKnots 342
+#define tColor 343
+#define tColorTable 344
+#define tFor 345
+#define tIn 346
+#define tEndFor 347
+#define tIf 348
+#define tEndIf 349
+#define tExit 350
+#define tReturn 351
+#define tCall 352
+#define tFunction 353
+#define tTrimmed 354
+#define tShow 355
+#define tHide 356
+#define tGetValue 357
+#define tGMSH_MAJOR_VERSION 358
+#define tGMSH_MINOR_VERSION 359
+#define tGMSH_PATCH_VERSION 360
+#define tB_SPLINE_SURFACE_WITH_KNOTS 361
+#define tB_SPLINE_CURVE_WITH_KNOTS 362
+#define tCARTESIAN_POINT 363
+#define tTRUE 364
+#define tFALSE 365
+#define tUNSPECIFIED 366
+#define tU 367
+#define tV 368
+#define tEDGE_CURVE 369
+#define tVERTEX_POINT 370
+#define tORIENTED_EDGE 371
+#define tPLANE 372
+#define tFACE_OUTER_BOUND 373
+#define tEDGE_LOOP 374
+#define tADVANCED_FACE 375
+#define tVECTOR 376
+#define tDIRECTION 377
+#define tAXIS2_PLACEMENT_3D 378
+#define tISO 379
+#define tENDISO 380
+#define tENDSEC 381
+#define tDATA 382
+#define tHEADER 383
+#define tFILE_DESCRIPTION 384
+#define tFILE_SCHEMA 385
+#define tFILE_NAME 386
+#define tMANIFOLD_SOLID_BREP 387
+#define tCLOSED_SHELL 388
+#define tADVANCED_BREP_SHAPE_REPRESENTATION 389
+#define tFACE_BOUND 390
+#define tCYLINDRICAL_SURFACE 391
+#define tCONICAL_SURFACE 392
+#define tCIRCLE 393
+#define tTRIMMED_CURVE 394
+#define tGEOMETRIC_SET 395
+#define tCOMPOSITE_CURVE_SEGMENT 396
+#define tCONTINUOUS 397
+#define tCOMPOSITE_CURVE 398
+#define tTOROIDAL_SURFACE 399
+#define tPRODUCT_DEFINITION 400
+#define tPRODUCT_DEFINITION_SHAPE 401
+#define tSHAPE_DEFINITION_REPRESENTATION 402
+#define tELLIPSE 403
+#define tAFFECTDIVIDE 404
+#define tAFFECTTIMES 405
+#define tAFFECTMINUS 406
+#define tAFFECTPLUS 407
+#define tOR 408
+#define tAND 409
+#define tAPPROXEQUAL 410
+#define tNOTEQUAL 411
+#define tEQUAL 412
+#define tGREATEROREQUAL 413
+#define tLESSOREQUAL 414
+#define tCROSSPRODUCT 415
+#define UNARYPREC 416
+#define tMINUSMINUS 417
+#define tPLUSPLUS 418
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 79 "Gmsh.y"
+typedef union YYSTYPE {
   char *c;
   int i;
   unsigned int u;
@@ -7,167 +368,14 @@ typedef union {
   Shape s;
   List_T *l;
 } YYSTYPE;
-#define	tDOUBLE	257
-#define	tSTRING	258
-#define	tBIGSTR	259
-#define	tEND	260
-#define	tAFFECT	261
-#define	tDOTS	262
-#define	tPi	263
-#define	tMPI_Rank	264
-#define	tMPI_Size	265
-#define	tExp	266
-#define	tLog	267
-#define	tLog10	268
-#define	tSqrt	269
-#define	tSin	270
-#define	tAsin	271
-#define	tCos	272
-#define	tAcos	273
-#define	tTan	274
-#define	tRand	275
-#define	tAtan	276
-#define	tAtan2	277
-#define	tSinh	278
-#define	tCosh	279
-#define	tTanh	280
-#define	tFabs	281
-#define	tFloor	282
-#define	tCeil	283
-#define	tFmod	284
-#define	tModulo	285
-#define	tHypot	286
-#define	tPrintf	287
-#define	tSprintf	288
-#define	tStrCat	289
-#define	tStrPrefix	290
-#define	tStrRelative	291
-#define	tBoundingBox	292
-#define	tDraw	293
-#define	tToday	294
-#define	tPoint	295
-#define	tCircle	296
-#define	tEllipse	297
-#define	tLine	298
-#define	tSurface	299
-#define	tSpline	300
-#define	tVolume	301
-#define	tCharacteristic	302
-#define	tLength	303
-#define	tParametric	304
-#define	tElliptic	305
-#define	tPlane	306
-#define	tRuled	307
-#define	tTransfinite	308
-#define	tComplex	309
-#define	tPhysical	310
-#define	tUsing	311
-#define	tBump	312
-#define	tProgression	313
-#define	tPlugin	314
-#define	tRotate	315
-#define	tTranslate	316
-#define	tSymmetry	317
-#define	tDilate	318
-#define	tExtrude	319
-#define	tDuplicata	320
-#define	tLoop	321
-#define	tRecombine	322
-#define	tDelete	323
-#define	tCoherence	324
-#define	tIntersect	325
-#define	tAttractor	326
-#define	tLayers	327
-#define	tAlias	328
-#define	tAliasWithOptions	329
-#define	tText2D	330
-#define	tText3D	331
-#define	tInterpolationScheme	332
-#define	tTime	333
-#define	tCombine	334
-#define	tBSpline	335
-#define	tBezier	336
-#define	tNurbs	337
-#define	tOrder	338
-#define	tWith	339
-#define	tBounds	340
-#define	tKnots	341
-#define	tColor	342
-#define	tColorTable	343
-#define	tFor	344
-#define	tIn	345
-#define	tEndFor	346
-#define	tIf	347
-#define	tEndIf	348
-#define	tExit	349
-#define	tReturn	350
-#define	tCall	351
-#define	tFunction	352
-#define	tTrimmed	353
-#define	tShow	354
-#define	tHide	355
-#define	tGetValue	356
-#define	tGMSH_MAJOR_VERSION	357
-#define	tGMSH_MINOR_VERSION	358
-#define	tGMSH_PATCH_VERSION	359
-#define	tB_SPLINE_SURFACE_WITH_KNOTS	360
-#define	tB_SPLINE_CURVE_WITH_KNOTS	361
-#define	tCARTESIAN_POINT	362
-#define	tTRUE	363
-#define	tFALSE	364
-#define	tUNSPECIFIED	365
-#define	tU	366
-#define	tV	367
-#define	tEDGE_CURVE	368
-#define	tVERTEX_POINT	369
-#define	tORIENTED_EDGE	370
-#define	tPLANE	371
-#define	tFACE_OUTER_BOUND	372
-#define	tEDGE_LOOP	373
-#define	tADVANCED_FACE	374
-#define	tVECTOR	375
-#define	tDIRECTION	376
-#define	tAXIS2_PLACEMENT_3D	377
-#define	tISO	378
-#define	tENDISO	379
-#define	tENDSEC	380
-#define	tDATA	381
-#define	tHEADER	382
-#define	tFILE_DESCRIPTION	383
-#define	tFILE_SCHEMA	384
-#define	tFILE_NAME	385
-#define	tMANIFOLD_SOLID_BREP	386
-#define	tCLOSED_SHELL	387
-#define	tADVANCED_BREP_SHAPE_REPRESENTATION	388
-#define	tFACE_BOUND	389
-#define	tCYLINDRICAL_SURFACE	390
-#define	tCONICAL_SURFACE	391
-#define	tCIRCLE	392
-#define	tTRIMMED_CURVE	393
-#define	tGEOMETRIC_SET	394
-#define	tCOMPOSITE_CURVE_SEGMENT	395
-#define	tCONTINUOUS	396
-#define	tCOMPOSITE_CURVE	397
-#define	tTOROIDAL_SURFACE	398
-#define	tPRODUCT_DEFINITION	399
-#define	tPRODUCT_DEFINITION_SHAPE	400
-#define	tSHAPE_DEFINITION_REPRESENTATION	401
-#define	tELLIPSE	402
-#define	tAFFECTPLUS	403
-#define	tAFFECTMINUS	404
-#define	tAFFECTTIMES	405
-#define	tAFFECTDIVIDE	406
-#define	tOR	407
-#define	tAND	408
-#define	tEQUAL	409
-#define	tNOTEQUAL	410
-#define	tAPPROXEQUAL	411
-#define	tLESSOREQUAL	412
-#define	tGREATEROREQUAL	413
-#define	tCROSSPRODUCT	414
-#define	tPLUSPLUS	415
-#define	tMINUSMINUS	416
-#define	UNARYPREC	417
-
+/* Line 1249 of yacc.c.  */
+#line 372 "Gmsh.tab.hpp"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
 
 extern YYSTYPE yylval;
+
+
+
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 6eaef06f54b1e0ddbcbc2aeab8362120d38e042d..cf1bd579abbfe459472c86339c120b341b03ed4f 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,5 +1,5 @@
 %{
-// $Id: Gmsh.y,v 1.209 2005-06-13 04:17:56 geuzaine Exp $
+// $Id: Gmsh.y,v 1.210 2005-07-14 14:28:17 remacle Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -2769,6 +2769,7 @@ Transfinite :
 	yymsg(WARNING, "Unknown surface %d", (int)$4);
       else{
 	s->Method = TRANSFINI;
+	s->Recombine_Dir = -1;
 	int k = List_Nbr($7);
 	if(k != 3 && k != 4){
 	  yymsg(GERROR, "Wrong definition of Transfinite Surface %d: "
@@ -2790,6 +2791,41 @@ Transfinite :
       }
       List_Delete($7);
     }
+  | tTransfinite tSurface '{' FExpr '}' tAFFECT ListOfDouble tSTRING tEND
+    {
+      Surface *s = FindSurface((int)$4, THEM);
+      if(!s)
+	yymsg(WARNING, "Unknown surface %d", (int)$4);
+      else{
+	s->Method = TRANSFINI;
+	int k = List_Nbr($7);
+	if(k != 3 && k != 4){
+	  yymsg(GERROR, "Wrong definition of Transfinite Surface %d: "
+		"%d points instead of 3 or 4" , (int)$4, k);
+	}
+	else{
+	  List_Reset(s->TrsfPoints);
+	  if (!strcmp($8,"Right"))
+	    s->Recombine_Dir = 1;
+	  else if (!strcmp($8,"Left"))
+	    s->Recombine_Dir = -1;
+	  else
+	    s->Recombine_Dir = 0;
+
+	  for(int i = 0; i < k; i++){
+	    double d;
+	    List_Read($7, i, &d);
+	    int j = (int)fabs(d);
+	    Vertex *v = FindPoint(j, THEM);
+	    if(!v)
+	      yymsg(WARNING, "Unknown point %d", j);
+	    else
+	      List_Add(s->TrsfPoints, &v);
+	  }
+	}
+      }
+      List_Delete($7);
+    }
   | tElliptic tSurface '{' FExpr '}' tAFFECT ListOfDouble tEND
     {
       Surface *s = FindSurface((int)$4, THEM);
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 7982126453d541a3e28432a66b89e8c73d1ede73..8aea03f97bc9ff6176d159606d4eedd714d5b132 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -2,7 +2,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.238 2005-06-13 04:17:56 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.239 2005-07-14 14:28:18 remacle Exp $
  */
 
 #define FLEX_SCANNER
@@ -1026,7 +1026,7 @@ char *yytext;
 #line 1 "Gmsh.l"
 #define INITIAL 0
 #line 2 "Gmsh.l"
-// $Id: Gmsh.yy.cpp,v 1.238 2005-06-13 04:17:56 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.239 2005-07-14 14:28:18 remacle Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //