diff --git a/Common/AdaptiveViews.cpp b/Common/AdaptiveViews.cpp
index 94859f1fab3b5b9ede24e7cdd83b485a5d0030cc..6eb6363ad5ecb873336da396da4b17a7fb192011 100644
--- a/Common/AdaptiveViews.cpp
+++ b/Common/AdaptiveViews.cpp
@@ -23,89 +23,265 @@
 				       
 #include <stdio.h>
 #include <math.h>
+#include <list>
+#include <set>
 #include "Views.h"
+#include "Plugin.h"
 
-void PascalgetIndices(int iFct, int &n, int &i)
+// A recursive effective implementation
+
+void computeShapeFunctions ( Double_Matrix *coeffs, Double_Matrix *eexps , double u, double v, double *sf);
+
+std::set<_point> _point::all_points;
+std::list<_triangle*> _triangle::all_triangles;
+
+_point * _point::New ( double x, double y, double z, Double_Matrix *coeffs, Double_Matrix *eexps) 
 {
-  int k = 0;
-  int l = 0;
-  while(k<=iFct)
+  _point p;
+  p.x=x; p.y=y; p.z=z;
+  std::set<_point> :: iterator it = all_points.find ( p );
+  if ( it == all_points.end() )
     {
-      l++;
-      k +=l;
-    };
-  n = l - 1;
-  i = l - k + iFct;
+      all_points.insert (p);
+      it = all_points.find ( p );
+      double *kkk = (double*)(it->shape_functions);
+      computeShapeFunctions (coeffs, eexps , x,y,kkk);
+      return (_point*) & (*it);
+    }
+  else
+    return (_point*) & (*it);
+}
+void _triangle::clean ()
+{    
+  std::list<_triangle*>::iterator it =  all_triangles.begin();
+  std::list<_triangle*>::iterator ite =  all_triangles.end();
+  for (;it!=ite;++it)
+    {
+      delete *it;
+    }
+  all_triangles.clear();
+  _point::all_points.clear();
+}
+void _triangle::Create (int maxlevel, Double_Matrix *coeffs, Double_Matrix *eexps) 
+{
+  int level = 0;
+  clean();
+  _point *p1 = _point::New ( 0,0,0, coeffs, eexps);
+  _point *p2 = _point::New ( 0,1,0, coeffs, eexps);
+  _point *p3 = _point::New ( 1,0,0, coeffs, eexps);
+  _triangle *t = new _triangle(p1,p2,p3);
+  Recur_Create (t, maxlevel,level,coeffs,eexps) ;
+}
+void _triangle::Recur_Create (_triangle *t, int maxlevel, int level , Double_Matrix *coeffs, Double_Matrix *eexps) 
+{
+  all_triangles.push_back(t);
+  if (level++ >= maxlevel)
+    return;
+  
+  _point *p1  = t->p[0]; 
+  _point *p2  = t->p[1]; 
+  _point *p3  = t->p[2]; 
+  _point *p12 = _point::New ( (p1->x+p2->x)*0.5,(p1->y+p2->y)*0.5,0, coeffs, eexps);
+  _point *p13 = _point::New ( (p1->x+p3->x)*0.5,(p1->y+p3->y)*0.5,0, coeffs, eexps);
+  _point *p23 = _point::New ( (p3->x+p2->x)*0.5,(p3->y+p2->y)*0.5,0, coeffs, eexps);
+  _triangle *t1 = new _triangle (p1,p12,p13);
+  Recur_Create (t1, maxlevel,level,coeffs,eexps);
+  _triangle *t2 = new _triangle (p12,p23,p2);
+  Recur_Create (t2, maxlevel,level,coeffs,eexps); 
+  _triangle *t3 = new _triangle (p23,p13,p3);
+  Recur_Create (t3, maxlevel,level,coeffs,eexps); 
+  _triangle *t4 = new _triangle (p12,p23,p13);
+  Recur_Create (t4, maxlevel,level,coeffs,eexps);
+  t->t[0]=t1;t->t[1]=t2;t->t[2]=t3;t->t[3]=t4;      
 }
 
+void _triangle::Error ( double AVG , double tol )
+{
+  _triangle *t = *all_triangles.begin();
+  Recur_Error (t,AVG,tol);
+}
 
-void Post_Zoom::interpolate (  Double_Matrix *coeffs, double u, double v, double *sf)
+void _triangle::Recur_Error ( _triangle *t, double AVG, double tol )
 {
-  // 2 s = (p+1) (p+2)
-  // p^2 + 3p + 2 = 2s 
-  // p = -3 + sqrt ( 1 + 8 s ) / 2 
-  //int p = (int) ( (-3. + sqrt ( 1 + 8 * coeffs->size2())) / 2);
-  int nn,ii;
-  for (int i=0;i<coeffs->size1();++i)
+  if(!t->t[0])t->visible = true; 
+  else
     {
-      sf[i] = 0.0;
-      for (int j=0;j<coeffs->size2();++j)
+      double vr;
+      if (!t->t[0]->t[0])
 	{
-	  PascalgetIndices(j,nn,ii);
-	  sf[i] += (*coeffs)(i,j) * pow(u,nn-ii) * pow(v,ii);
+	  double v1 = t->t[0]->V();
+	  double v2 = t->t[1]->V();
+	  double v3 = t->t[2]->V();
+	  double v4 = t->t[3]->V();
+	  vr = (2*v1 + 2*v2 + 2*v3 + v4)/7.;
+	  double v =  t->V();
+	  if ( fabs(v - vr) > AVG * tol ) 
+	    //if ( fabs(v - vr) > ((fabs(v) + fabs(vr) + AVG * tol) * tol ) ) 
+	    {
+	      t->visible = false;
+	      Recur_Error (t->t[0],AVG,tol);
+	      Recur_Error (t->t[1],AVG,tol);
+	      Recur_Error (t->t[2],AVG,tol);
+	      Recur_Error (t->t[3],AVG,tol);
+	    } 
+	  else
+	    t->visible = true;
+	}
+      else
+	{
+	  double v11 = t->t[0]->t[0]->V();
+	  double v12 = t->t[0]->t[1]->V();
+	  double v13 = t->t[0]->t[2]->V();
+	  double v14 = t->t[0]->t[3]->V();
+	  double v21 = t->t[1]->t[0]->V();
+	  double v22 = t->t[1]->t[1]->V();
+	  double v23 = t->t[1]->t[2]->V();
+	  double v24 = t->t[1]->t[3]->V();
+	  double v31 = t->t[2]->t[0]->V();
+	  double v32 = t->t[2]->t[1]->V();
+	  double v33 = t->t[2]->t[2]->V();
+	  double v34 = t->t[2]->t[3]->V();
+	  double v41 = t->t[3]->t[0]->V();
+	  double v42 = t->t[3]->t[1]->V();
+	  double v43 = t->t[3]->t[2]->V();
+	  double v44 = t->t[3]->t[3]->V();
+	  double vr1 = (2*v11 + 2*v12 + 2*v13 + v14)/7.;
+	  double vr2 = (2*v21 + 2*v22 + 2*v23 + v24)/7.;
+	  double vr3 = (2*v31 + 2*v32 + 2*v33 + v34)/7.;
+	  double vr4 = (2*v41 + 2*v42 + 2*v43 + v44)/7.;
+	  vr = (2*vr1+2*vr2+2*vr3+vr4)/7.;
+	  if ( fabs(t->t[0]->V() - vr1) > AVG * tol  || 
+	       fabs(t->t[1]->V() - vr2) > AVG * tol  || 
+	       fabs(t->t[2]->V() - vr3) > AVG * tol  || 
+	       fabs(t->t[3]->V() - vr4) > AVG * tol  || 
+	       fabs(t->V() - vr) > AVG * tol ) 
+	    //if ( fabs(t->t[0]->V() - vr1) > (fabs(t->t[0]->V())+fabs(vr1)+AVG * tol)*tol  || 
+	    //		 fabs(t->t[1]->V() - vr2) > (fabs(t->t[1]->V())+fabs(vr2)+AVG * tol)*tol  || 
+	    //		 fabs(t->t[2]->V() - vr3) > (fabs(t->t[2]->V())+fabs(vr3)+AVG * tol)*tol  || 
+	    //		 fabs(t->t[3]->V() - vr4) > (fabs(t->t[3]->V())+fabs(vr4)+AVG * tol)*tol  || 
+	    //		 fabs(t->V() - vr) > (fabs(t->V())+fabs(vr)+AVG * tol ) *tol)
+	    {
+	      t->visible = false;
+	      Recur_Error (t->t[0],AVG,tol);
+	      Recur_Error (t->t[1],AVG,tol);
+	      Recur_Error (t->t[2],AVG,tol);
+	      Recur_Error (t->t[3],AVG,tol);
+	    }
+	  else
+	    t->visible = true;	      
 	}
     }
 }
 
-Post_Zoom::Post_Zoom ( int level , Double_Matrix *coeffs)
+void Adaptive_Post_View:: zoomElement (Post_View * view ,
+				       int ielem , int level, GMSH_Post_Plugin *plug)
 {
-  Points = new Double_Matrix ( (level+1)*(level+2)/2 , 2);
-  M      = new Double_Matrix ( (level+1)*(level+2)/2 , coeffs->size2());
-  MGeom  = new Double_Matrix ( (level+1)*(level+2)/2 , 3);
-  int k=0;
-  double sf[256];  
+  std::set<_point>::iterator it  = _point::all_points.begin();
+  std::set<_point>::iterator ite = _point::all_points.end();
+  
+  int ip=0;
 
-  for(int i=0;i<=level;i++)
+  for ( ; it !=ite ; ++it)
     {
-      for(int j=0;j<=level-i;j++)
+      _point *p = (_point*) &(*it);
+      p->val = 0;
+      for ( int k=0;k<_coefs->size1();++k)
 	{
-	  (*Points) ( k , 0 ) = (double)i / (level);
-	  (*Points) ( k , 1 ) = (double)j / (level);	  
-
-	  //	  printf ("%d %g %g\n",k,(*Points) ( k , 0 ),(*Points) ( k , 1 ));
+	  p->val += it->shape_functions[k] * (*_STval )( ielem , k );
+	}	        
+      p->X = (*_STposX) ( ielem , 0 ) * ( 1.-p->x-p->y) + (*_STposX) ( ielem , 1 ) * p->x + (*_STposX) ( ielem , 2 ) * p->y;
+      p->Y = (*_STposY) ( ielem , 0 ) * ( 1.-p->x-p->y) + (*_STposY) ( ielem , 1 ) * p->x + (*_STposY) ( ielem , 2 ) * p->y;
+      p->Z = (*_STposZ) ( ielem , 0 ) * ( 1.-p->x-p->y) + (*_STposZ) ( ielem , 1 ) * p->x + (*_STposZ) ( ielem , 2 ) * p->y;
 
-	  interpolate ( coeffs, (*Points)(k,0),(*Points)(k,1),sf );
-	  for (int m=0;m<coeffs->size2();++m)(*M)(k,m)=sf[m];
-	  (*MGeom)(k,0) = 1- (*Points)(k,0)- (*Points)(k,1);
-	  (*MGeom)(k,1) = (*Points)(k,0);
-	  (*MGeom)(k,2) = (*Points)(k,1);
-	  k++;
+      if (level == 0)
+	{
+	  if (min > p->val) min = p->val;
+	  if (max < p->val) max = p->val;
 	}
     }
-  Simplices = new Int_Matrix ( level*level , 3 );
-  k=0;
-  int s=0;
-  for(int i=0;i<=level;i++)
+
+  std::list<_triangle*>::iterator itt  = _triangle::all_triangles.begin();
+  std::list<_triangle*>::iterator itte = _triangle::all_triangles.end();
+
+  for ( ;itt != itte ; itt++)
     {
-      for(int j=0;j<=level-i;j++)
+      (*itt)->visible = false;
+    }
+
+
+  if (plug)
+    plug->assign_specific_visibility ();
+  else
+  _triangle::Error ( max-min, tol );
+
+  itt  = _triangle::all_triangles.begin();
+  for ( ;itt != itte ; itt++)
+    {
+      if ((*itt)->visible)
 	{
-	  if (j!=level-i)
-	    {
-	      (*Simplices) ( s , 0 )   = k;
-	      (*Simplices) ( s , 1 )   = k+1;
-	      (*Simplices) ( s++ , 2 ) = k+level+1-i;
-	      //	      printf ("A %d %d -  %d ==> %d %d %d\n",i,j,s,k,k+1,k+level+1-i);
-	    }
-	  if (j+1<level-i)
-	    {
-	      (*Simplices) ( s , 0 )   = k+1;
-	      (*Simplices) ( s , 2 )   = k+level+1-i;
-	      (*Simplices) ( s++ , 1 ) = k+level-i+2;
-	      //	      printf ("B %d %d - %d ==> %d %d %d\n",i,j,s,k+1,k+level+1-i,k+level-i+2);
-	    }
-	  k++;
+	  _point *p1 = (*itt)->p[0];
+	  _point *p2 = (*itt)->p[1];
+	  _point *p3 = (*itt)->p[2];
+	  List_Add ( view->ST , &p1->X );
+	  List_Add ( view->ST , &p2->X );
+	  List_Add ( view->ST , &p3->X );
+	  List_Add ( view->ST , &p1->Y );
+	  List_Add ( view->ST , &p2->Y );
+	  List_Add ( view->ST , &p3->Y );
+	  List_Add ( view->ST , &p1->Z );
+	  List_Add ( view->ST , &p2->Z );
+	  List_Add ( view->ST , &p3->Z );
+	  List_Add ( view->ST , &p1->val );
+	  List_Add ( view->ST , &p2->val );
+	  List_Add ( view->ST , &p3->val );
+	  view->NbST++;
 	}
+    }
+}
+
+void Adaptive_Post_View:: setAdaptiveResolutionLevel (Post_View * view , int level, GMSH_Post_Plugin *plug)
+{
+  if (!view->ST)return;
+
+  if (presentTol==tol && presentZoomLevel == level && !plug)return;
+
+  _triangle::Create ( level, _coefs, _eexps );
+
+  List_Delete(view->ST); view->ST = 0;  
+  view->NbST = 0;
+  /// for now, that's all we do, 1 TS
+  view->NbTimeStep=1;
+  int nbelm = _STposX->size1();
+  view->ST = List_Create ( nbelm * (int) pow(4.,level), nbelm *12, sizeof(double));
+
+  for ( int i=0;i<nbelm;++i)
+    {
+      zoomElement ( view , i , level, plug);
     }  
+  view->Changed = 1;
+  presentZoomLevel = level;
+  presentTol = tol;
+}
+		      
+void computeShapeFunctions ( Double_Matrix *coeffs, Double_Matrix *eexps , double u, double v, double *sf)
+{
+
+  static double powsuv[256];
+  for (int j=0;j<coeffs->size2();++j)
+    {
+      double powu = (*eexps) ( j, 0);
+      double powv = (*eexps) ( j, 1);
+      powsuv[j] = pow(u,powu) *pow(v,powv);
+    }
+
+  for (int i=0;i<coeffs->size1();++i)
+    {
+      sf[i] = 0.0;
+      for (int j=0;j<coeffs->size2();++j)
+	{
+	  sf[i] += (*coeffs)(i,j) * powsuv[j];
+	}
+    }
 }
 
 void Adaptive_Post_View:: initWithLowResolution (Post_View *view)
@@ -115,9 +291,10 @@ void Adaptive_Post_View:: initWithLowResolution (Post_View *view)
   int nbelm = view->NbST;
   int nbnod = 3;
 
+  min = VAL_INF;
+  max = -VAL_INF;
+
   int nb = List_Nbr(myList) / (nbelm);
-  //  printf("nb = %d nbelem = %d size = %d\n ",
-  //	 nb,nbelm,List_Nbr(myList)); 
 
   _STposX = new Double_Matrix ( nbelm , nbnod        );
   _STposY = new Double_Matrix ( nbelm , nbnod        );
@@ -128,125 +305,61 @@ void Adaptive_Post_View:: initWithLowResolution (Post_View *view)
   int k=0;
   for (int i=0;i<List_Nbr(myList);i+=nb)
     {    
-      double *x = (double*)List_Pointer_Fast (view->ST,i); 
+      double *x = (double*)List_Pointer_Fast (view->ST,i);
       double *y = (double*)List_Pointer_Fast (view->ST,i+nbnod); 
       double *z = (double*)List_Pointer_Fast (view->ST,i+2*nbnod); 
       (*_STposX) ( k , 0) = x[0]; (*_STposX) ( k , 1) = x[1]; (*_STposX) ( k , 2) = x[2]; 
       (*_STposY) ( k , 0) = y[0]; (*_STposY) ( k , 1) = y[1]; (*_STposY) ( k , 2) = y[2]; 
       (*_STposZ) ( k , 0) = z[0]; (*_STposZ) ( k , 1) = z[1]; (*_STposZ) ( k , 2) = z[2]; 
-      double *val = (double*)List_Pointer_Fast (view->ST,i+3*nbnod); 
-      for (int j=0;j<nb-3*nbnod;j++)(*_STval)(k,j)=val[j];      
+      double *val = (double*)List_Pointer_Fast (view->ST,i+3*nbnod);
+      for (int j=0;j<nb-3*nbnod;j++){
+	(*_STval)(k,j)=val[j];      
+      }      
       k++;
     }
-  
-  setGlobalResolutionLevel(view,1);
-}
-
-void Adaptive_Post_View:: zoomElement (Post_View * view ,
-				       int ielem ,
-				       Post_Zoom *zoom)
-{
-  static double valelem[1024];
-  static double x[1024];
-  static double y[1024];
-  static double z[1024];
-
-  Double_Matrix *M         = zoom->M;
-  Double_Matrix *MGeom     = zoom->MGeom;
-  Int_Matrix    *Simplices = zoom->Simplices;
-  for ( int j=0;j<M->size1();++j)
-    {
-      valelem[j] = 0.0;
-      x[j] = 0.0;
-      y[j] = 0.0;
-      z[j] = 0.0;
-      for ( int k=0;k<M->size2();++k)
-	{
-	  valelem[j] += (*M)(j,k) * (*_STval )( ielem , k );
-	  if (view->Min > valelem[j]) view->Min = valelem[j];
-	  if (view->Max < valelem[j]) view->Max = valelem[j];
-	}	  
-      for ( int k=0;k<3;++k)
-	{
-	  x[j] += (*MGeom)(j,k) * (*_STposX) ( ielem , k );
-	  y[j] += (*MGeom)(j,k) * (*_STposY) ( ielem , k );
-	  z[j] += (*MGeom)(j,k) * (*_STposZ) ( ielem , k );
-	}	  
-    }
-  
-  for (int i=0;i<Simplices->size1();++i)
-    {
-      int p1 = (*Simplices) (i,0);
-      int p2 = (*Simplices) (i,1);
-      int p3 = (*Simplices) (i,2);
-      List_Add ( view->ST , &x[p1] );
-      List_Add ( view->ST , &x[p2] );
-      List_Add ( view->ST , &x[p3] );
-      List_Add ( view->ST , &y[p1] );
-      List_Add ( view->ST , &y[p2] );
-      List_Add ( view->ST , &y[p3] );
-      List_Add ( view->ST , &z[p1] );
-      List_Add ( view->ST , &z[p2] );
-      List_Add ( view->ST , &z[p3] );
-      List_Add ( view->ST , &valelem[p1] );
-      List_Add ( view->ST , &valelem[p2] );
-      List_Add ( view->ST , &valelem[p3] );
-      view->NbST++;
-    }
+  setAdaptiveResolutionLevel(view,0);
 }
 
-void Adaptive_Post_View:: setAdaptiveResolutionLevel (Post_View * view , int level)
-{
-}
-
-void Adaptive_Post_View:: setGlobalResolutionLevel (Post_View * view , int level)
+Adaptive_Post_View:: Adaptive_Post_View (Post_View *view, List_T *_c , List_T *_pol)  
+  : tol(1.e-3)
 {
 
-  printf ("asking for resolution %d\n",level);
-  
-  if (!view->ST)return;
-  if (presentZoomLevel==level)return;
-  if (!ZOOMS[level]) 
-    ZOOMS[level] = new Post_Zoom ( level , _coefs);
-
-  
-  List_Delete(view->ST); view->ST = 0;
-  view->NbST = 0;
-
-  int nbelm = _STposX->size1();
-
-  view->ST = List_Create ( nbelm * 12 * ZOOMS[level]->Simplices->size1(), 100, sizeof(double));
+  _coefs = new Double_Matrix ( List_Nbr (_c) , List_Nbr (_c)  );
+  _eexps  = new Double_Matrix ( List_Nbr (_c) , 3  );
 
-  for ( int i=0;i<nbelm;++i)
+  for (int i=0; i< List_Nbr ( _c ); ++i)
     {
-      zoomElement ( view , i , ZOOMS[level] );
-    }  
-  view->Changed = 1;
-  presentZoomLevel=level;
-}
+      List_T **line = (List_T **) List_Pointer_Fast ( _c,i); 
+      List_T **eexp = (List_T **) List_Pointer_Fast ( _pol,i); 
 
-Adaptive_Post_View:: Adaptive_Post_View (Post_View *view, List_T *_c)  
-{
-  //  printf ("the view is adaptive, yeah!\n");
+      double dpowu,dpowv,dpoww;
 
-  for (int i=0;i<MAX_LEVEL_OF_ZOOM+1;i++) ZOOMS[i] = 0;
-  _coefs = new Double_Matrix ( List_Nbr (_c) , List_Nbr (_c)  );
+      List_Read (*eexp, 0, &dpowu);
+      List_Read (*eexp, 1, &dpowv);
+      List_Read (*eexp, 2, &dpoww);
 
-  //  printf ("we have a %d x %d interpolation matrix\n", List_Nbr (_c), List_Nbr (_c));
+      (*_eexps) ( i , 0 ) = dpowu;
+      (*_eexps) ( i , 1 ) = dpowv;
+      (*_eexps) ( i , 2 ) = dpoww;
 
-  for (int i=0; i< List_Nbr ( _c ); ++i)
-    {
-      List_T **line = (List_T **) List_Pointer_Fast ( _c,i); 
       for (int j=0;j < List_Nbr ( *line ); ++j)
 	{
 	  double val;
 	  List_Read ( *line, j, &val);
 	  (*_coefs) ( i , j ) = val;
-	  //	  printf("%g ",val); 
 	}
-      //	  printf("\n "); 
     }
-  //  printf("\n "); 
+
   initWithLowResolution (view);  
 }
 
+Adaptive_Post_View::~Adaptive_Post_View()
+{
+  delete _coefs;
+  delete _eexps;
+  delete _STposX;
+  delete _STposY;
+  delete _STposZ;
+  delete _STval;
+  _triangle::clean();
+}
diff --git a/Common/Makefile b/Common/Makefile
index ce5904def9c0c9174e8ab23db5939e81dd1d08c8..30c914de4e429ff1da22e654c19dc3d712511feb 100644
--- a/Common/Makefile
+++ b/Common/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.63 2004-10-28 06:11:22 geuzaine Exp $
+# $Id: Makefile,v 1.64 2004-11-09 16:27:49 remacle Exp $
 #
 # Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 #
@@ -69,7 +69,8 @@ Context.o: Context.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../Geo/ExtrudeParams.h ../Mesh/STL.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Mesh/Metric.h ../Mesh/Matrix.h \
   ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
-  ../Common/GmshMatrix.h Context.h Options.h DefaultOptions.h Trackball.h
+  ../Common/GmshMatrix.h Context.h Options.h DefaultOptions.h Views.h \
+  Trackball.h
 AdaptiveViews.o: AdaptiveViews.cpp Views.h ColorTable.h ../DataStr/List.h \
   VertexArray.h SmoothNormals.h GmshMatrix.h
 Views.o: Views.cpp Gmsh.h Message.h ../DataStr/Malloc.h ../DataStr/List.h \
@@ -79,14 +80,14 @@ Views.o: Views.cpp Gmsh.h Message.h ../DataStr/Malloc.h ../DataStr/List.h \
 Options.o: Options.cpp ../Plugin/PluginManager.h ../Plugin/Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
   ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h ../Common/GmshMatrix.h Gmsh.h \
+  ../Common/SmoothNormals.h ../Common/GmshMatrix.h Gmsh.h Message.h \
   ../DataStr/Malloc.h ../DataStr/Tree.h ../DataStr/avl.h \
   ../DataStr/Tools.h GmshUI.h ../Geo/Geo.h ../Mesh/Mesh.h \
   ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Simplex.h ../Mesh/Face.h \
   ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/STL.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h ../Graphics/Draw.h Context.h ../Fltk/Solvers.h \
-  ../Fltk/GUI.h ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h \
-  ../Fltk/File_Picker.h
+  ../Mesh/Matrix.h ../Graphics/Draw.h Context.h Options.h \
+  ../Fltk/Solvers.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
+  ../Fltk/Colorbar_Window.h ../Common/GmshUI.h ../Fltk/File_Picker.h
 CommandLine.o: CommandLine.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   GmshUI.h GmshVersion.h CommandLine.h ../Numeric/Numeric.h Context.h \
@@ -94,7 +95,8 @@ CommandLine.o: CommandLine.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../Mesh/Element.h ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h \
   ../Geo/ExtrudeParams.h ../Mesh/STL.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Mesh/Metric.h ../Mesh/Matrix.h Views.h \
-  ColorTable.h GmshMatrix.h ../Parser/OpenFile.h ../Parser/Parser.h
+  ColorTable.h VertexArray.h SmoothNormals.h GmshMatrix.h \
+  ../Parser/OpenFile.h ../Parser/Parser.h
 Timer.o: Timer.cpp
 ColorTable.o: ColorTable.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
diff --git a/Common/Options.cpp b/Common/Options.cpp
index d29a0aff5060acc6441d4063a4bf1c1cc5b7b7d5..fc52f03d75e0d1c637e9ce73cc4f1d7cc2dce102 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.202 2004-11-09 02:14:19 geuzaine Exp $
+// $Id: Options.cpp,v 1.203 2004-11-09 16:27:49 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -4658,11 +4658,11 @@ double opt_view_saturate_values(OPT_ARGS_NUM)
 }
 
 
-double opt_view_global_zoom(OPT_ARGS_NUM)
+double opt_view_max_recursion_level(OPT_ARGS_NUM)
 {
-   GET_VIEW(0.);
+  GET_VIEW(0.);
   if(action & GMSH_SET) {
-     if (v->adaptive)
+    if (v->adaptive)
       v->adaptive->setGlobalResolutionLevel(v,(int)val);
   }
 #if defined(HAVE_FLTK)
@@ -4674,7 +4674,29 @@ double opt_view_global_zoom(OPT_ARGS_NUM)
 #endif
   if (v->adaptive)
     return v->adaptive->getGlobalResolutionLevel();
-  return 1;
+  return 0;
+}
+
+double opt_view_target_error(OPT_ARGS_NUM)
+{
+  GET_VIEW(0.);
+  if(action & GMSH_SET) {
+    if (v->adaptive)
+      {
+	v->adaptive->setTolerance(val);
+	v->adaptive->setGlobalResolutionLevel(v,v->adaptive->getGlobalResolutionLevel());
+      }
+  }
+#if defined(HAVE_FLTK)
+  if(_gui_action_valid(action, num)) {
+    if (v->adaptive){
+      WID->view_value[34]->value(v->adaptive->getTolerance());
+    }
+  }
+#endif
+  if (v->adaptive)
+    return v->adaptive->getTolerance();
+  return 1.e-2;
 }
 
 
diff --git a/Common/Options.h b/Common/Options.h
index afb56e82a6500b2b34a3bc5115fa4335eeb5e9be..3ecac1fcab71559b606c247dc9bf882c593689cb 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -474,7 +474,8 @@ double opt_view_explode(OPT_ARGS_NUM);
 double opt_view_visible(OPT_ARGS_NUM);
 double opt_view_intervals_type(OPT_ARGS_NUM);
 double opt_view_saturate_values(OPT_ARGS_NUM);
-double opt_view_global_zoom(OPT_ARGS_NUM);
+double opt_view_max_recursion_level(OPT_ARGS_NUM);
+double opt_view_target_error(OPT_ARGS_NUM);
 double opt_view_alpha_channel(OPT_ARGS_NUM);
 double opt_view_external_view(OPT_ARGS_NUM);
 double opt_view_type(OPT_ARGS_NUM);
diff --git a/Common/Views.h b/Common/Views.h
index 6eba5318b0290a785178ea4f0cadcd9b92b7d739..eacb34079b59be7faf12498f60b0dd3b6df71b68 100644
--- a/Common/Views.h
+++ b/Common/Views.h
@@ -25,71 +25,103 @@
 #include "VertexArray.h"
 #include "SmoothNormals.h"
 #include "GmshMatrix.h"
-
+#include<list>
 #define VIEW_NB_ELEMENT_TYPES  (8*3)
 #define VIEW_MAX_ELEMENT_NODES  8
 #define VAL_INF 1.e200
 
 class Post_View;
+class GMSH_Post_Plugin;
 
-#define MAX_LEVEL_OF_ZOOM 40
+#define MAX_LEVEL_OF_ZOOM 8
 
 // On a triangle, we suppose that there exists an
 // interpolation scheme such that u = \sum_i u_i \phi_i
 // phi_i being polynomials of order p, i goes from 1...(p+1)(p+2)/2
 // and phi_i = \sum_j coeffs_{ij} monomials_j and
 // monomials are 1,x,y,x^2,xy,y^2,x^3,x^2y,xy^2,y^3...
+class _point
+{
+public :
+  double x,y,z;
+  double X,Y,Z,val;
+  double shape_functions[128];
+  static _point * New ( double x, double y, double z, Double_Matrix *coeffs, Double_Matrix *eexps); 
+  void print ()const
+  {
+    printf ("p %g %g\n" ,x,y);
+  }
+  bool operator < ( const _point & other ) const
+  {
+    if ( other.x < x) return true;
+    if ( other.x > x) return false;
+    if ( other.y < y) return true;
+    if ( other.y > y) return false;
+    if ( other.z < z) return true;
+    return false;
+  }
+  static std::set<_point> all_points;
+};
 
-/// A zoom is a triangulation in reference coordinates
-class Post_Zoom
+class _triangle
 {
 public:
-  Post_Zoom( int level , Double_Matrix *coeffs);
-  ~Post_Zoom()
+  _triangle (_point *p1,_point *p2,_point *p3)    
+    : visible (false)
   {
-    delete M;
-    delete MGeom;
-    delete Points;
-    delete Simplices;
+    p[0] = p1;
+    p[1] = p2;
+    p[2] = p3;
+    t[0]=t[1]=t[2]=t[3]=0;
   }
-  Double_Matrix *M;
-  Double_Matrix *MGeom;
-  Double_Matrix *Points;
-  Int_Matrix *Simplices;
-  void interpolate ( Double_Matrix *coefs , double u, double v, double *sf);
+
+  inline double V () const
+  {
+    static const double THIRD = 1./3.;
+    return (p[0]->val + p[1]->val + p[2]->val)*THIRD;    
+  }
+  void print ()
+  {
+    printf ("p1 %g %g p2 %g %g p3 %g %g \n",p[0]->x,p[0]->y,p[1]->x,p[1]->y,p[2]->x,p[2]->y);
+  }
+  static void clean ();
+  static void Create (int maxlevel, Double_Matrix *coeffs, Double_Matrix *eexps) ;
+  static void Recur_Create (_triangle *t, int maxlevel, int level , Double_Matrix *coeffs, Double_Matrix *eexps);
+  static void Error ( double AVG , double tol );
+  static void Recur_Error ( _triangle *t, double AVG, double tol );
+  bool visible;
+  _point     *p[3];
+  _triangle  *t[4];
+  static std::list<_triangle*> all_triangles;
 };
 
+
 class Adaptive_Post_View 
 {
-  Post_Zoom* ZOOMS [MAX_LEVEL_OF_ZOOM+1];
   double tol;
+  double min,max;
   int presentZoomLevel;
+  double presentTol;
+  Double_Matrix * _eexps;
   Double_Matrix * _coefs;
-  Double_Matrix * _coefs_L2;
   Double_Matrix * _STposX;
   Double_Matrix * _STposY;
   Double_Matrix * _STposZ;
   Double_Matrix * _STval;
 public:
-  Adaptive_Post_View (Post_View *view, List_T *_coeffs);
-  ~Adaptive_Post_View()
-  {
-    delete _coefs;
-    delete _STposX;
-    delete _STposY;
-    delete _STposZ;
-    delete _STval;
-    for (int i=0;i<MAX_LEVEL_OF_ZOOM+1;i++)
-      if (ZOOMS[i]) delete ZOOMS[i];
-  }
+  Adaptive_Post_View (Post_View *view, List_T *_coeffs, List_T *_eexps);
+  ~Adaptive_Post_View();
   int getGlobalResolutionLevel ( ) const {return presentZoomLevel;}
-  void setGlobalResolutionLevel ( Post_View * view , int level );
-  void setAdaptiveResolutionLevel ( Post_View * view , int levelmax = MAX_LEVEL_OF_ZOOM );
+  void setGlobalResolutionLevel ( Post_View * view , int level )
+    {
+      setAdaptiveResolutionLevel ( view , level );
+    }
+  void setAdaptiveResolutionLevel ( Post_View * view , int levelmax, GMSH_Post_Plugin *plug = 0);
   void initWithLowResolution (Post_View *view);
   void setTolerance (const double eps) {tol=eps;}
+  double getTolerance () const {return tol;}
   void zoomElement (Post_View * view ,
-		    int ielem ,
-		    Post_Zoom *zoom);
+		    int ielem, int level, GMSH_Post_Plugin *plug);
 
 };
 
@@ -107,10 +139,10 @@ class Post_View{
     if ( adaptive )
       adaptive->setGlobalResolutionLevel(this, level);
   }
-  void setAdaptiveResolutionLevel (int level)
+  void setAdaptiveResolutionLevel (int level, GMSH_Post_Plugin *plug = 0)
   {
     if ( adaptive )
-      adaptive->setAdaptiveResolutionLevel(this, level);
+      adaptive->setAdaptiveResolutionLevel(this, level, plug);
   }
 
   // intrinsic to a view
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index b4461b6fba9dd6fe5d3d192dc652c7e8f5d7c5c8..e60b61e67d9e2089ca918c7c8781f05f157ae7c5 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.295 2004-10-30 03:07:29 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.296 2004-11-09 16:27:49 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -3496,7 +3496,8 @@ void view_options_ok_cb(CALLBACK_ARGS)
 
   double type = opt_view_type(current, GMSH_GET, 0);
   double saturate_values = opt_view_saturate_values(current, GMSH_GET, 0);
-  double global_zoom = opt_view_global_zoom(current, GMSH_GET, 0);
+  double max_recursion_level = opt_view_max_recursion_level(current, GMSH_GET, 0);
+  double target_error = opt_view_target_error(current, GMSH_GET, 0);
   double show_element = opt_view_show_element(current, GMSH_GET, 0);
   double show_scale = opt_view_show_scale(current, GMSH_GET, 0);
   double auto_position = opt_view_auto_position(current, GMSH_GET, 0);
@@ -3772,8 +3773,12 @@ void view_options_ok_cb(CALLBACK_ARGS)
         opt_view_custom_max(i, GMSH_SET, val);
 
       val = WID->view_value[33]->value();
-      if(force || (val != global_zoom))
-        opt_view_global_zoom(i, GMSH_SET, val);
+      if(force || (val != max_recursion_level))
+        opt_view_max_recursion_level(i, GMSH_SET, val);
+
+      val = WID->view_value[34]->value();
+      if(force || (val != target_error))
+        opt_view_target_error(i, GMSH_SET, val);
 
       val = WID->view_value[30]->value();
       if(force || (val != nb_iso))
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index b1644d68403bf3cff468bed88f0d4b11e43d3b85..408335b2567075eacd1f32d8841efc9471edb7fa 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.376 2004-11-09 02:14:19 geuzaine Exp $
+// $Id: GUI.cpp,v 1.377 2004-11-09 16:27:49 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -2558,12 +2558,19 @@ void GUI::create_option_window()
       view_butt[38]->down_box(TOGGLE_BOX);
       view_butt[38]->selection_color(TOGGLE_COLOR);
 
-      view_value[33] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 8 * BH, IW, BH, "Global resolution level");
+      /// Adaptive views ...
+      view_value[33] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 8 * BH, IW, BH, "Maximal Recursion Level");
       view_value[33]->align(FL_ALIGN_RIGHT);
-      view_value[33]->minimum(1);
+      view_value[33]->minimum(0);
       view_value[33]->maximum(MAX_LEVEL_OF_ZOOM);
       view_value[33]->step(1);
-      view_value[33]->value(1);
+      view_value[33]->value(0);
+      view_value[34] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 9 * BH, IW, BH, "Target Error");
+      view_value[34]->align(FL_ALIGN_RIGHT);
+      view_value[34]->minimum(0);
+      view_value[34]->maximum(1);
+      view_value[34]->value(1.e-2);
+      ///------------------
 
       view_range->end();
     }
@@ -2745,11 +2752,18 @@ void GUI::update_view_window(int num)
   opt_view_draw_strings(num, GMSH_GUI, 0);
   opt_view_auto_position(num, GMSH_GUI, 0);
 
-  opt_view_global_zoom(num, GMSH_GUI, 0);
+  opt_view_max_recursion_level (num, GMSH_GUI, 0);
+  opt_view_target_error (num, GMSH_GUI, 0);
   if(v->adaptive)
-    view_value[33]->activate();
+    {
+      view_value[33]->activate();
+      view_value[34]->activate();
+    }
   else
-    view_value[33]->deactivate();
+    {
+      view_value[33]->deactivate();
+      view_value[34]->deactivate();
+    }
 
   if(v->NbSP) {
     view_butt[2]->activate();
diff --git a/Geo/Makefile b/Geo/Makefile
index ddf4cd1fa4dc59da2d755f1f12c9b80afb6b7700..794374e5c3b043bc7465e2841704aa9aec9be364 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.54 2004-08-06 14:48:32 remacle Exp $
+# $Id: Makefile,v 1.55 2004-11-09 16:27:50 remacle Exp $
 #
 # Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 #
@@ -64,8 +64,8 @@ CAD.o: CAD.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../Mesh/Element.h ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h \
   ../Geo/ExtrudeParams.h ../Mesh/STL.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Mesh/Metric.h ../Mesh/Matrix.h \
-  ../Mesh/Interpolation.h ../Mesh/Create.h CAD.h ../Common/Visibility.h \
-  ../Common/Context.h
+  ../Mesh/Interpolation.h ../Mesh/Create.h CAD.h ExtrudeParams.h \
+  ../Common/Visibility.h ../Common/Context.h
 MinMax.o: MinMax.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 \
@@ -76,21 +76,21 @@ ExtrudeParams.o: ExtrudeParams.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Simplex.h ../Mesh/Face.h \
   ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/STL.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h
+  ../Mesh/Matrix.h ExtrudeParams.h
 Geo.o: Geo.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.h CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
   ../Mesh/Element.h ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h \
   ../Geo/ExtrudeParams.h ../Mesh/STL.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Mesh/Metric.h ../Mesh/Matrix.h \
-  ../Parser/Parser.h ../Common/Context.h
+  ExtrudeParams.h ../Parser/Parser.h ../Common/Context.h
 GeoUtils.o: GeoUtils.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h Geo.h CAD.h ../Mesh/Mesh.h \
   ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Simplex.h ../Mesh/Face.h \
   ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/STL.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h ../Numeric/Numeric.h
+  ../Mesh/Matrix.h ExtrudeParams.h ../Numeric/Numeric.h
 StepGeomDatabase.o: StepGeomDatabase.cpp ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
@@ -98,19 +98,19 @@ StepGeomDatabase.o: StepGeomDatabase.cpp ../Common/Gmsh.h \
   ../Mesh/Element.h ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h \
   ../Geo/ExtrudeParams.h ../Mesh/STL.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Mesh/Metric.h ../Mesh/Matrix.h \
-  ../Mesh/Nurbs.h CAD.h StepGeomDatabase.h ../Mesh/Create.h \
-  ../Common/Context.h
+  ../Mesh/Nurbs.h CAD.h ExtrudeParams.h StepGeomDatabase.h \
+  ../Mesh/Create.h ../Common/Context.h
 ExtractContour.o: ExtractContour.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h Geo.h GeoUtils.h ../Mesh/Mesh.h \
   ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Simplex.h ../Mesh/Face.h \
   ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/STL.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h CAD.h ../Numeric/Numeric.h
+  ../Mesh/Matrix.h CAD.h ExtrudeParams.h ../Numeric/Numeric.h
 Print_Geo.o: Print_Geo.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h Geo.h ../Mesh/Mesh.h \
   ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Simplex.h ../Mesh/Face.h \
   ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/STL.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h CAD.h ../Common/Context.h
+  ../Mesh/Matrix.h CAD.h ExtrudeParams.h ../Common/Context.h
diff --git a/Mesh/Makefile b/Mesh/Makefile
index 6d12bd504c346d1aafe587e4c3080714cad2d234..5480541038b647bf3bf4e6d14ee26c51f8954aea 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.72 2004-10-28 06:11:22 geuzaine Exp $
+# $Id: Makefile,v 1.73 2004-11-09 16:27:50 remacle Exp $
 #
 # Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 #
@@ -113,8 +113,8 @@ depend:
   ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
   ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
   ../Mesh/STL.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
-  ../Mesh/Metric.h ../Mesh/Matrix.h Utils.h Create.h 2D_Mesh.h \
-  ../Common/Context.h Interpolation.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 \
@@ -127,7 +127,7 @@ depend:
   ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
   ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
   ../Mesh/STL.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
-  ../Mesh/Metric.h ../Mesh/Matrix.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 \
@@ -193,16 +193,16 @@ depend:
   ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
   ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
   ../Mesh/STL.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
-  ../Mesh/Metric.h ../Mesh/Matrix.h Interpolation.h 2D_Mesh.h Create.h \
-  ../Common/Context.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 \
   ../Mesh/STL.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
-  ../Mesh/Metric.h ../Mesh/Matrix.h Interpolation.h Create.h \
-  ../Common/Context.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 \
@@ -233,14 +233,16 @@ depend:
   ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Element.h \
   ../Mesh/Simplex.h ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
   ../Mesh/STL.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
-  ../Mesh/Metric.h ../Mesh/Matrix.h ../Common/Context.h Create.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 \
   ../Mesh/STL.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
-  ../Mesh/Metric.h ../Mesh/Matrix.h ../Common/Context.h Create.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 \
@@ -274,7 +276,8 @@ Create.o: Create.cpp ../Common/Gmsh.h ../Common/Message.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 \
   ../Mesh/STL.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
-  ../Mesh/Metric.h ../Mesh/Matrix.h Utils.h ../Common/Context.h Create.h
+  ../Mesh/Metric.h ../Mesh/Matrix.h Mesh.h Utils.h Vertex.h \
+  ../Common/Context.h Create.h
 Generator.o: Generator.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 \
@@ -288,20 +291,23 @@ Print_Mesh.o: Print_Mesh.cpp ../Common/Gmsh.h ../Common/Message.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 \
   ../Mesh/STL.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
-  ../Mesh/Metric.h ../Mesh/Matrix.h Create.h ../Common/Context.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 ../Mesh/STL.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Mesh/Metric.h \
-  ../Mesh/Matrix.h 3D_Mesh.h Create.h ../Geo/MinMax.h ../Common/Context.h
+  ../Mesh/Matrix.h Mesh.h 3D_Mesh.h Create.h Vertex.h ../Geo/MinMax.h \
+  ../Common/Context.h
 STL.o: STL.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 STL.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h ../Geo/CAD.h ../Geo/Geo.h \
-  Create.h Interpolation.h ../Common/Context.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
 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 \
@@ -314,27 +320,30 @@ Utils.o: Utils.cpp ../Common/Gmsh.h ../Common/Message.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 \
   ../Mesh/STL.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
-  ../Mesh/Metric.h ../Mesh/Matrix.h Interpolation.h ../Common/Context.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 \
   ../Mesh/STL.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
-  ../Mesh/Metric.h ../Mesh/Matrix.h Interpolation.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 STL.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h Metric.h Matrix.h \
-  ../Geo/Geo.h ../Geo/GeoUtils.h Create.h ../Geo/CAD.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 STL.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h Metric.h Matrix.h ../Geo/CAD.h Utils.h \
-  Interpolation.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 \
diff --git a/Numeric/Makefile b/Numeric/Makefile
index 709a0f6730dd10f3857746a0ff0985aa33394030..eb22aa5c36b3d070935163a38bf74665472de372 100644
--- a/Numeric/Makefile
+++ b/Numeric/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.12 2004-02-07 01:40:22 geuzaine Exp $
+# $Id: Makefile,v 1.13 2004-11-09 16:27:50 remacle Exp $
 #
 # Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 #
@@ -26,6 +26,7 @@ INCLUDE = -I../Common -I../DataStr
 CFLAGS  = ${OPTIM} ${FLAGS} ${INCLUDE} 
 
 SRC = Numeric.cpp\
+      GaussQuadrature.cpp\
       gsl_newt.cpp\
       gsl_brent.cpp
 
@@ -55,6 +56,7 @@ depend:
 Numeric.o: Numeric.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h Numeric.h
+GaussQuadrature.o: GaussQuadrature.cpp GaussQuadrature.h Numeric.h
 gsl_newt.o: gsl_newt.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h Numeric.h
diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l
index 2be42ce93991748e784ccb25d028b018aeae6db7..dc5aa522e085b9a505d2fb38bcaa493f73914798 100644
--- a/Parser/Gmsh.l
+++ b/Parser/Gmsh.l
@@ -1,5 +1,5 @@
 %{
-// $Id: Gmsh.l,v 1.58 2004-10-20 14:38:57 remacle Exp $
+// $Id: Gmsh.l,v 1.59 2004-11-09 16:27:50 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -248,7 +248,7 @@ VY                      return tVectorPyramid;
 TY                      return tTensorPyramid;
 T2                      return tText2D;
 T3                      return tText3D;
-INTERPOLATION_MATRIX    return tInterpolationMatrix;
+INTERPOLATION_SCHEME    return tInterpolationScheme;
 
 
 CARTESIAN_POINT         	   return tCARTESIAN_POINT;
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 09bd243cd93e73aac6872b1b7fcc29642a89de07..057a62f0d76e364a191c548aceb95ec6aefa1d7f 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -1,199 +1,440 @@
+/* A Bison parser, made by GNU Bison 1.875b.  */
 
-/*  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	tBoundingBox	291
-#define	tDraw	292
-#define	tPoint	293
-#define	tCircle	294
-#define	tEllipse	295
-#define	tLine	296
-#define	tSurface	297
-#define	tSpline	298
-#define	tVolume	299
-#define	tCharacteristic	300
-#define	tLength	301
-#define	tParametric	302
-#define	tElliptic	303
-#define	tPlane	304
-#define	tRuled	305
-#define	tTriangulation	306
-#define	tTransfinite	307
-#define	tComplex	308
-#define	tPhysical	309
-#define	tUsing	310
-#define	tBump	311
-#define	tProgression	312
-#define	tPlugin	313
-#define	tRotate	314
-#define	tTranslate	315
-#define	tSymmetry	316
-#define	tDilate	317
-#define	tExtrude	318
-#define	tDuplicata	319
-#define	tLoop	320
-#define	tRecombine	321
-#define	tDelete	322
-#define	tCoherence	323
-#define	tIntersect	324
-#define	tAttractor	325
-#define	tLayers	326
-#define	tScalarPoint	327
-#define	tVectorPoint	328
-#define	tTensorPoint	329
-#define	tScalarLine	330
-#define	tVectorLine	331
-#define	tTensorLine	332
-#define	tScalarTriangle	333
-#define	tVectorTriangle	334
-#define	tTensorTriangle	335
-#define	tScalarQuadrangle	336
-#define	tVectorQuadrangle	337
-#define	tTensorQuadrangle	338
-#define	tScalarTetrahedron	339
-#define	tVectorTetrahedron	340
-#define	tTensorTetrahedron	341
-#define	tScalarHexahedron	342
-#define	tVectorHexahedron	343
-#define	tTensorHexahedron	344
-#define	tScalarPrism	345
-#define	tVectorPrism	346
-#define	tTensorPrism	347
-#define	tScalarPyramid	348
-#define	tVectorPyramid	349
-#define	tTensorPyramid	350
-#define	tText2D	351
-#define	tText3D	352
-#define	tInterpolationMatrix	353
-#define	tCombine	354
-#define	tBSpline	355
-#define	tBezier	356
-#define	tNurbs	357
-#define	tOrder	358
-#define	tWith	359
-#define	tBounds	360
-#define	tKnots	361
-#define	tColor	362
-#define	tColorTable	363
-#define	tFor	364
-#define	tIn	365
-#define	tEndFor	366
-#define	tIf	367
-#define	tEndIf	368
-#define	tExit	369
-#define	tReturn	370
-#define	tCall	371
-#define	tFunction	372
-#define	tTrimmed	373
-#define	tShow	374
-#define	tHide	375
-#define	tB_SPLINE_SURFACE_WITH_KNOTS	376
-#define	tB_SPLINE_CURVE_WITH_KNOTS	377
-#define	tCARTESIAN_POINT	378
-#define	tTRUE	379
-#define	tFALSE	380
-#define	tUNSPECIFIED	381
-#define	tU	382
-#define	tV	383
-#define	tEDGE_CURVE	384
-#define	tVERTEX_POINT	385
-#define	tORIENTED_EDGE	386
-#define	tPLANE	387
-#define	tFACE_OUTER_BOUND	388
-#define	tEDGE_LOOP	389
-#define	tADVANCED_FACE	390
-#define	tVECTOR	391
-#define	tDIRECTION	392
-#define	tAXIS2_PLACEMENT_3D	393
-#define	tISO	394
-#define	tENDISO	395
-#define	tENDSEC	396
-#define	tDATA	397
-#define	tHEADER	398
-#define	tFILE_DESCRIPTION	399
-#define	tFILE_SCHEMA	400
-#define	tFILE_NAME	401
-#define	tMANIFOLD_SOLID_BREP	402
-#define	tCLOSED_SHELL	403
-#define	tADVANCED_BREP_SHAPE_REPRESENTATION	404
-#define	tFACE_BOUND	405
-#define	tCYLINDRICAL_SURFACE	406
-#define	tCONICAL_SURFACE	407
-#define	tCIRCLE	408
-#define	tTRIMMED_CURVE	409
-#define	tGEOMETRIC_SET	410
-#define	tCOMPOSITE_CURVE_SEGMENT	411
-#define	tCONTINUOUS	412
-#define	tCOMPOSITE_CURVE	413
-#define	tTOROIDAL_SURFACE	414
-#define	tPRODUCT_DEFINITION	415
-#define	tPRODUCT_DEFINITION_SHAPE	416
-#define	tSHAPE_DEFINITION_REPRESENTATION	417
-#define	tELLIPSE	418
-#define	tSolid	419
-#define	tEndSolid	420
-#define	tVertex	421
-#define	tFacet	422
-#define	tNormal	423
-#define	tOuter	424
-#define	tLoopSTL	425
-#define	tEndLoop	426
-#define	tEndFacet	427
-#define	tAFFECTPLUS	428
-#define	tAFFECTMINUS	429
-#define	tAFFECTTIMES	430
-#define	tAFFECTDIVIDE	431
-#define	tOR	432
-#define	tAND	433
-#define	tEQUAL	434
-#define	tNOTEQUAL	435
-#define	tAPPROXEQUAL	436
-#define	tLESSOREQUAL	437
-#define	tGREATEROREQUAL	438
-#define	tCROSSPRODUCT	439
-#define	tPLUSPLUS	440
-#define	tMINUSMINUS	441
-#define	UNARYPREC	442
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 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,
+     tBoundingBox = 292,
+     tDraw = 293,
+     tPoint = 294,
+     tCircle = 295,
+     tEllipse = 296,
+     tLine = 297,
+     tSurface = 298,
+     tSpline = 299,
+     tVolume = 300,
+     tCharacteristic = 301,
+     tLength = 302,
+     tParametric = 303,
+     tElliptic = 304,
+     tPlane = 305,
+     tRuled = 306,
+     tTriangulation = 307,
+     tTransfinite = 308,
+     tComplex = 309,
+     tPhysical = 310,
+     tUsing = 311,
+     tBump = 312,
+     tProgression = 313,
+     tPlugin = 314,
+     tRotate = 315,
+     tTranslate = 316,
+     tSymmetry = 317,
+     tDilate = 318,
+     tExtrude = 319,
+     tDuplicata = 320,
+     tLoop = 321,
+     tRecombine = 322,
+     tDelete = 323,
+     tCoherence = 324,
+     tIntersect = 325,
+     tAttractor = 326,
+     tLayers = 327,
+     tScalarPoint = 328,
+     tVectorPoint = 329,
+     tTensorPoint = 330,
+     tScalarLine = 331,
+     tVectorLine = 332,
+     tTensorLine = 333,
+     tScalarTriangle = 334,
+     tVectorTriangle = 335,
+     tTensorTriangle = 336,
+     tScalarQuadrangle = 337,
+     tVectorQuadrangle = 338,
+     tTensorQuadrangle = 339,
+     tScalarTetrahedron = 340,
+     tVectorTetrahedron = 341,
+     tTensorTetrahedron = 342,
+     tScalarHexahedron = 343,
+     tVectorHexahedron = 344,
+     tTensorHexahedron = 345,
+     tScalarPrism = 346,
+     tVectorPrism = 347,
+     tTensorPrism = 348,
+     tScalarPyramid = 349,
+     tVectorPyramid = 350,
+     tTensorPyramid = 351,
+     tText2D = 352,
+     tText3D = 353,
+     tInterpolationScheme = 354,
+     tCombine = 355,
+     tBSpline = 356,
+     tBezier = 357,
+     tNurbs = 358,
+     tOrder = 359,
+     tWith = 360,
+     tBounds = 361,
+     tKnots = 362,
+     tColor = 363,
+     tColorTable = 364,
+     tFor = 365,
+     tIn = 366,
+     tEndFor = 367,
+     tIf = 368,
+     tEndIf = 369,
+     tExit = 370,
+     tReturn = 371,
+     tCall = 372,
+     tFunction = 373,
+     tTrimmed = 374,
+     tShow = 375,
+     tHide = 376,
+     tB_SPLINE_SURFACE_WITH_KNOTS = 377,
+     tB_SPLINE_CURVE_WITH_KNOTS = 378,
+     tCARTESIAN_POINT = 379,
+     tTRUE = 380,
+     tFALSE = 381,
+     tUNSPECIFIED = 382,
+     tU = 383,
+     tV = 384,
+     tEDGE_CURVE = 385,
+     tVERTEX_POINT = 386,
+     tORIENTED_EDGE = 387,
+     tPLANE = 388,
+     tFACE_OUTER_BOUND = 389,
+     tEDGE_LOOP = 390,
+     tADVANCED_FACE = 391,
+     tVECTOR = 392,
+     tDIRECTION = 393,
+     tAXIS2_PLACEMENT_3D = 394,
+     tISO = 395,
+     tENDISO = 396,
+     tENDSEC = 397,
+     tDATA = 398,
+     tHEADER = 399,
+     tFILE_DESCRIPTION = 400,
+     tFILE_SCHEMA = 401,
+     tFILE_NAME = 402,
+     tMANIFOLD_SOLID_BREP = 403,
+     tCLOSED_SHELL = 404,
+     tADVANCED_BREP_SHAPE_REPRESENTATION = 405,
+     tFACE_BOUND = 406,
+     tCYLINDRICAL_SURFACE = 407,
+     tCONICAL_SURFACE = 408,
+     tCIRCLE = 409,
+     tTRIMMED_CURVE = 410,
+     tGEOMETRIC_SET = 411,
+     tCOMPOSITE_CURVE_SEGMENT = 412,
+     tCONTINUOUS = 413,
+     tCOMPOSITE_CURVE = 414,
+     tTOROIDAL_SURFACE = 415,
+     tPRODUCT_DEFINITION = 416,
+     tPRODUCT_DEFINITION_SHAPE = 417,
+     tSHAPE_DEFINITION_REPRESENTATION = 418,
+     tELLIPSE = 419,
+     tSolid = 420,
+     tEndSolid = 421,
+     tVertex = 422,
+     tFacet = 423,
+     tNormal = 424,
+     tOuter = 425,
+     tLoopSTL = 426,
+     tEndLoop = 427,
+     tEndFacet = 428,
+     tAFFECTDIVIDE = 429,
+     tAFFECTTIMES = 430,
+     tAFFECTMINUS = 431,
+     tAFFECTPLUS = 432,
+     tOR = 433,
+     tAND = 434,
+     tAPPROXEQUAL = 435,
+     tNOTEQUAL = 436,
+     tEQUAL = 437,
+     tGREATEROREQUAL = 438,
+     tLESSOREQUAL = 439,
+     tCROSSPRODUCT = 440,
+     UNARYPREC = 441,
+     tMINUSMINUS = 442,
+     tPLUSPLUS = 443
+   };
+#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 tBoundingBox 292
+#define tDraw 293
+#define tPoint 294
+#define tCircle 295
+#define tEllipse 296
+#define tLine 297
+#define tSurface 298
+#define tSpline 299
+#define tVolume 300
+#define tCharacteristic 301
+#define tLength 302
+#define tParametric 303
+#define tElliptic 304
+#define tPlane 305
+#define tRuled 306
+#define tTriangulation 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 tScalarPoint 328
+#define tVectorPoint 329
+#define tTensorPoint 330
+#define tScalarLine 331
+#define tVectorLine 332
+#define tTensorLine 333
+#define tScalarTriangle 334
+#define tVectorTriangle 335
+#define tTensorTriangle 336
+#define tScalarQuadrangle 337
+#define tVectorQuadrangle 338
+#define tTensorQuadrangle 339
+#define tScalarTetrahedron 340
+#define tVectorTetrahedron 341
+#define tTensorTetrahedron 342
+#define tScalarHexahedron 343
+#define tVectorHexahedron 344
+#define tTensorHexahedron 345
+#define tScalarPrism 346
+#define tVectorPrism 347
+#define tTensorPrism 348
+#define tScalarPyramid 349
+#define tVectorPyramid 350
+#define tTensorPyramid 351
+#define tText2D 352
+#define tText3D 353
+#define tInterpolationScheme 354
+#define tCombine 355
+#define tBSpline 356
+#define tBezier 357
+#define tNurbs 358
+#define tOrder 359
+#define tWith 360
+#define tBounds 361
+#define tKnots 362
+#define tColor 363
+#define tColorTable 364
+#define tFor 365
+#define tIn 366
+#define tEndFor 367
+#define tIf 368
+#define tEndIf 369
+#define tExit 370
+#define tReturn 371
+#define tCall 372
+#define tFunction 373
+#define tTrimmed 374
+#define tShow 375
+#define tHide 376
+#define tB_SPLINE_SURFACE_WITH_KNOTS 377
+#define tB_SPLINE_CURVE_WITH_KNOTS 378
+#define tCARTESIAN_POINT 379
+#define tTRUE 380
+#define tFALSE 381
+#define tUNSPECIFIED 382
+#define tU 383
+#define tV 384
+#define tEDGE_CURVE 385
+#define tVERTEX_POINT 386
+#define tORIENTED_EDGE 387
+#define tPLANE 388
+#define tFACE_OUTER_BOUND 389
+#define tEDGE_LOOP 390
+#define tADVANCED_FACE 391
+#define tVECTOR 392
+#define tDIRECTION 393
+#define tAXIS2_PLACEMENT_3D 394
+#define tISO 395
+#define tENDISO 396
+#define tENDSEC 397
+#define tDATA 398
+#define tHEADER 399
+#define tFILE_DESCRIPTION 400
+#define tFILE_SCHEMA 401
+#define tFILE_NAME 402
+#define tMANIFOLD_SOLID_BREP 403
+#define tCLOSED_SHELL 404
+#define tADVANCED_BREP_SHAPE_REPRESENTATION 405
+#define tFACE_BOUND 406
+#define tCYLINDRICAL_SURFACE 407
+#define tCONICAL_SURFACE 408
+#define tCIRCLE 409
+#define tTRIMMED_CURVE 410
+#define tGEOMETRIC_SET 411
+#define tCOMPOSITE_CURVE_SEGMENT 412
+#define tCONTINUOUS 413
+#define tCOMPOSITE_CURVE 414
+#define tTOROIDAL_SURFACE 415
+#define tPRODUCT_DEFINITION 416
+#define tPRODUCT_DEFINITION_SHAPE 417
+#define tSHAPE_DEFINITION_REPRESENTATION 418
+#define tELLIPSE 419
+#define tSolid 420
+#define tEndSolid 421
+#define tVertex 422
+#define tFacet 423
+#define tNormal 424
+#define tOuter 425
+#define tLoopSTL 426
+#define tEndLoop 427
+#define tEndFacet 428
+#define tAFFECTDIVIDE 429
+#define tAFFECTTIMES 430
+#define tAFFECTMINUS 431
+#define tAFFECTPLUS 432
+#define tOR 433
+#define tAND 434
+#define tAPPROXEQUAL 435
+#define tNOTEQUAL 436
+#define tEQUAL 437
+#define tGREATEROREQUAL 438
+#define tLESSOREQUAL 439
+#define tCROSSPRODUCT 440
+#define UNARYPREC 441
+#define tMINUSMINUS 442
+#define tPLUSPLUS 443
+
+
+
+
+/* Copy the first part of user declarations.  */
 #line 1 "Gmsh.y"
 
-// $Id: Gmsh.tab.cpp,v 1.206 2004-11-01 14:49:00 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.207 2004-11-09 16:27:50 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -269,8 +510,23 @@ void yymsg (int type, char *fmt, ...);
 void skip_until (char *skip, char *until);
 int PrintListOfDouble (char *format, List_T *list, char *buffer);
 
+
+/* 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;
@@ -279,4172 +535,4832 @@ typedef union {
   Shape s;
   List_T *l;
 } YYSTYPE;
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
+/* Line 191 of yacc.c.  */
+#line 540 "Gmsh.tab.cpp"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
 
-#define	YYFINAL		2359
-#define	YYFLAG		-32768
-#define	YYNTBASE	208
-
-#define YYTRANSLATE(x) ((unsigned)(x) <= 442 ? yytranslate[x] : 344)
-
-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,   194,     2,   204,     2,   192,     2,     2,   199,
-   200,   190,   188,   205,   189,   203,   191,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   184,
-     2,   186,   178,     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,
-   201,     2,   202,   198,     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,   206,     2,   207,     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,   153,   154,   155,   156,
-   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-   177,   179,   180,   181,   182,   183,   185,   187,   193,   195,
-   196,   197
-};
+/* Copy the second part of user declarations.  */
+
+
+/* Line 214 of yacc.c.  */
+#line 552 "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,     6,     9,    11,    14,    15,    18,    20,
-    42,    44,    45,    48,    50,    52,    54,    57,    60,    63,
-    66,    69,    77,    83,   101,   111,   135,   167,   183,   195,
-   207,   223,   233,   247,   257,   269,   283,   293,   303,   315,
-   325,   337,   347,   359,   373,   387,   399,   413,   431,   441,
-   453,   465,   479,   491,   501,   502,   505,   507,   509,   511,
-   513,   515,   517,   519,   521,   523,   525,   527,   529,   531,
-   533,   539,   547,   554,   563,   564,   567,   570,   573,   576,
-   579,   582,   585,   588,   591,   594,   597,   600,   603,   606,
-   609,   612,   615,   618,   621,   624,   627,   630,   633,   636,
-   639,   642,   645,   647,   651,   652,   666,   668,   672,   673,
-   687,   689,   693,   694,   708,   710,   714,   715,   735,   737,
-   741,   742,   762,   764,   768,   769,   789,   791,   795,   796,
-   822,   824,   828,   829,   855,   857,   861,   862,   888,   890,
-   894,   895,   927,   929,   933,   934,   966,   968,   972,   973,
-  1005,  1007,  1011,  1012,  1044,  1046,  1050,  1051,  1083,  1085,
-  1089,  1090,  1122,  1124,  1128,  1129,  1185,  1187,  1191,  1192,
-  1248,  1250,  1254,  1255,  1311,  1313,  1317,  1318,  1362,  1364,
-  1368,  1369,  1413,  1415,  1419,  1420,  1464,  1466,  1470,  1471,
-  1509,  1511,  1515,  1516,  1554,  1556,  1560,  1561,  1599,  1601,
-  1605,  1606,  1620,  1622,  1626,  1627,  1643,  1647,  1649,  1651,
-  1653,  1655,  1657,  1659,  1661,  1666,  1674,  1684,  1691,  1695,
-  1702,  1709,  1719,  1726,  1736,  1742,  1751,  1760,  1772,  1779,
-  1789,  1799,  1809,  1817,  1826,  1839,  1846,  1854,  1862,  1870,
-  1880,  1888,  1898,  1916,  1924,  1932,  1944,  1953,  1966,  1975,
-  1984,  1993,  2006,  2021,  2036,  2059,  2080,  2089,  2098,  2107,
-  2115,  2124,  2130,  2142,  2148,  2158,  2160,  2162,  2164,  2165,
-  2168,  2175,  2182,  2189,  2196,  2201,  2208,  2213,  2220,  2224,
-  2230,  2234,  2238,  2243,  2248,  2252,  2260,  2264,  2272,  2276,
-  2279,  2282,  2298,  2301,  2308,  2317,  2326,  2337,  2339,  2342,
-  2344,  2348,  2353,  2355,  2364,  2377,  2392,  2393,  2406,  2407,
-  2424,  2425,  2444,  2453,  2466,  2481,  2482,  2495,  2496,  2513,
-  2514,  2533,  2542,  2555,  2570,  2571,  2584,  2585,  2602,  2603,
-  2622,  2624,  2627,  2637,  2645,  2648,  2655,  2665,  2675,  2684,
-  2693,  2702,  2709,  2714,  2717,  2720,  2722,  2724,  2726,  2728,
-  2730,  2732,  2736,  2739,  2742,  2745,  2749,  2753,  2757,  2761,
-  2765,  2769,  2773,  2777,  2781,  2785,  2789,  2793,  2797,  2801,
-  2807,  2812,  2817,  2822,  2827,  2832,  2837,  2842,  2847,  2852,
-  2857,  2864,  2869,  2874,  2879,  2884,  2889,  2894,  2901,  2908,
-  2915,  2920,  2925,  2930,  2935,  2940,  2945,  2950,  2955,  2960,
-  2965,  2970,  2977,  2982,  2987,  2992,  2997,  3002,  3007,  3014,
-  3021,  3028,  3033,  3035,  3037,  3039,  3041,  3043,  3048,  3053,
-  3056,  3062,  3066,  3073,  3078,  3086,  3088,  3091,  3094,  3098,
-  3102,  3114,  3124,  3132,  3140,  3141,  3145,  3147,  3151,  3152,
-  3156,  3160,  3162,  3166,  3168,  3170,  3174,  3179,  3183,  3189,
-  3194,  3196,  3198,  3200,  3204,  3209,  3216,  3224,  3226,  3228,
-  3232,  3236,  3246,  3254,  3256,  3262,  3266,  3273,  3275,  3279,
-  3281,  3288,  3293,  3298,  3305,  3312
+#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  7
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   13968
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  208
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  137
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  477
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  2360
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   443
+
+#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,   194,     2,   204,     2,   192,     2,     2,
+     199,   200,   190,   188,   205,   189,   203,   191,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     184,     2,   185,   178,     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,   201,     2,   202,   198,     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,   206,     2,   207,     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,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   179,   180,   181,   182,   183,   186,   187,
+     193,   195,   196,   197
 };
 
-static const short yyrhs[] = {   212,
-     0,   210,     0,   217,     0,     1,     6,     0,     3,     0,
-   189,     3,     0,     0,   210,   211,     0,   165,     0,   168,
-   169,   209,   209,   209,   170,   171,   167,   209,   209,   209,
-   167,   209,   209,   209,   167,   209,   209,   209,   172,   173,
-     0,   166,     0,     0,   212,   213,     0,   214,     0,   216,
-     0,   215,     0,   140,     6,     0,   141,     6,     0,   143,
-     6,     0,   142,     6,     0,   144,     6,     0,   145,   199,
-   333,   205,     5,   200,     6,     0,   146,   199,   333,   200,
-     6,     0,   147,   199,     5,   205,     5,   205,   333,   205,
-   333,   205,     5,   205,     5,   205,     5,   200,     6,     0,
-     3,     7,   124,   199,     5,   205,   331,   200,     6,     0,
-     3,     7,   123,   199,     5,   205,   329,   205,   337,   205,
-   328,   205,   328,   205,   328,   205,   337,   205,   337,   205,
-   328,   200,     6,     0,     3,     7,   122,   199,     5,   205,
-   329,   205,   329,   205,   335,   205,   328,   205,   328,   205,
-   328,   205,   328,   205,   337,   205,   337,   205,   337,   205,
-   337,   205,   328,   200,     6,     0,     3,     7,   130,   199,
-     5,   205,     3,   205,     3,   205,     3,   205,   328,   200,
-     6,     0,     3,     7,   134,   199,     5,   205,     3,   205,
-   328,   200,     6,     0,     3,     7,   151,   199,     5,   205,
-     3,   205,   328,   200,     6,     0,     3,     7,   132,   199,
-     5,   205,   190,   205,   190,   205,   329,   205,   328,   200,
-     6,     0,     3,     7,   135,   199,     5,   205,   337,   200,
-     6,     0,     3,     7,   136,   199,     5,   205,   337,   205,
-     3,   205,   328,   200,     6,     0,     3,     7,   131,   199,
-     5,   205,     3,   200,     6,     0,     3,     7,   137,   199,
-     5,   205,     3,   205,   329,   200,     6,     0,     3,     7,
-   139,   199,     5,   205,     3,   205,     3,   205,     3,   200,
-     6,     0,     3,     7,   138,   199,     5,   205,   331,   200,
-     6,     0,     3,     7,   133,   199,     5,   205,     3,   200,
-     6,     0,     3,     7,    42,   199,     5,   205,     3,   205,
-     3,   200,     6,     0,     3,     7,   149,   199,     5,   205,
-   337,   200,     6,     0,     3,     7,   150,   199,     5,   205,
-   337,   205,     3,   200,     6,     0,     3,     7,   148,   199,
-     5,   205,     3,   200,     6,     0,     3,     7,   152,   199,
-     5,   205,     3,   205,   329,   200,     6,     0,     3,     7,
-   153,   199,     5,   205,     3,   205,   329,   205,   329,   200,
-     6,     0,     3,     7,   160,   199,     5,   205,     3,   205,
-   329,   205,   329,   200,     6,     0,     3,     7,   154,   199,
-     5,   205,     3,   205,   329,   200,     6,     0,     3,     7,
-   164,   199,     5,   205,     3,   205,   329,   205,   329,   200,
-     6,     0,     3,     7,   155,   199,     5,   205,     3,   205,
-   337,   205,   337,   205,   328,   205,   328,   200,     6,     0,
-     3,     7,   156,   199,     5,   205,   337,   200,     6,     0,
-     3,     7,   157,   199,   158,   205,   328,   205,     3,   200,
-     6,     0,     3,     7,   159,   199,     5,   205,   337,   205,
-   328,   200,     6,     0,     3,     7,   161,   199,     5,   205,
-     5,   205,     3,   205,     3,   200,     6,     0,     3,     7,
-   162,   199,     5,   205,     5,   205,     3,   200,     6,     0,
-     3,     7,   163,   199,     3,   205,     3,   200,     6,     0,
-     0,   217,   218,     0,   220,     0,   219,     0,   303,     0,
-   304,     0,   305,     0,   308,     0,   309,     0,   310,     0,
-   311,     0,   314,     0,   326,     0,   327,     0,   313,     0,
-   312,     0,    33,   199,     5,   200,     6,     0,    33,   199,
-     5,   205,   339,   200,     6,     0,     4,     5,   206,   221,
-   207,     6,     0,     4,     5,     4,   331,   206,   221,   207,
-     6,     0,     0,   221,   223,     0,   221,   226,     0,   221,
-   229,     0,   221,   232,     0,   221,   235,     0,   221,   238,
-     0,   221,   241,     0,   221,   244,     0,   221,   247,     0,
-   221,   250,     0,   221,   253,     0,   221,   256,     0,   221,
-   259,     0,   221,   262,     0,   221,   265,     0,   221,   268,
-     0,   221,   271,     0,   221,   274,     0,   221,   277,     0,
-   221,   280,     0,   221,   283,     0,   221,   286,     0,   221,
-   289,     0,   221,   292,     0,   221,   295,     0,   221,   298,
-     0,   221,   300,     0,   329,     0,   222,   205,   329,     0,
-     0,    73,   199,   329,   205,   329,   205,   329,   200,   224,
-   206,   222,   207,     6,     0,   329,     0,   225,   205,   329,
-     0,     0,    74,   199,   329,   205,   329,   205,   329,   200,
-   227,   206,   225,   207,     6,     0,   329,     0,   228,   205,
-   329,     0,     0,    75,   199,   329,   205,   329,   205,   329,
-   200,   230,   206,   228,   207,     6,     0,   329,     0,   231,
-   205,   329,     0,     0,    76,   199,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   200,   233,   206,
-   231,   207,     6,     0,   329,     0,   234,   205,   329,     0,
-     0,    77,   199,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   200,   236,   206,   234,   207,     6,
-     0,   329,     0,   237,   205,   329,     0,     0,    78,   199,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   200,   239,   206,   237,   207,     6,     0,   329,     0,
-   240,   205,   329,     0,     0,    79,   199,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   200,   242,   206,   240,   207,     6,
-     0,   329,     0,   243,   205,   329,     0,     0,    80,   199,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   200,   245,   206,
-   243,   207,     6,     0,   329,     0,   246,   205,   329,     0,
-     0,    81,   199,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   200,   248,   206,   246,   207,     6,     0,   329,     0,   249,
-   205,   329,     0,     0,    82,   199,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   200,
-   251,   206,   249,   207,     6,     0,   329,     0,   252,   205,
-   329,     0,     0,    83,   199,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   200,   254,
-   206,   252,   207,     6,     0,   329,     0,   255,   205,   329,
-     0,     0,    84,   199,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   200,   257,   206,
-   255,   207,     6,     0,   329,     0,   258,   205,   329,     0,
-     0,    85,   199,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   200,   260,   206,   258,
-   207,     6,     0,   329,     0,   261,   205,   329,     0,     0,
-    86,   199,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   200,   263,   206,   261,   207,
-     6,     0,   329,     0,   264,   205,   329,     0,     0,    87,
-   199,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   200,   266,   206,   264,   207,     6,
-     0,   329,     0,   267,   205,   329,     0,     0,    88,   199,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   200,   269,   206,
-   267,   207,     6,     0,   329,     0,   270,   205,   329,     0,
-     0,    89,   199,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   200,   272,   206,   270,   207,     6,     0,   329,     0,   273,
-   205,   329,     0,     0,    90,   199,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   200,   275,   206,   273,   207,     6,     0,
-   329,     0,   276,   205,   329,     0,     0,    91,   199,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   200,   278,   206,   276,   207,     6,
-     0,   329,     0,   279,   205,   329,     0,     0,    92,   199,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   200,   281,   206,   279,   207,
-     6,     0,   329,     0,   282,   205,   329,     0,     0,    93,
-   199,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   200,   284,   206,   282,
-   207,     6,     0,   329,     0,   285,   205,   329,     0,     0,
-    94,   199,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   200,   287,   206,   285,   207,     6,     0,   329,     0,
-   288,   205,   329,     0,     0,    95,   199,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   205,   329,   200,   290,   206,   288,
-   207,     6,     0,   329,     0,   291,   205,   329,     0,     0,
-    96,   199,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   205,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   200,   293,   206,   291,   207,     6,     0,   343,     0,
-   294,   205,   343,     0,     0,    97,   199,   329,   205,   329,
-   205,   329,   200,   296,   206,   294,   207,     6,     0,   343,
-     0,   297,   205,   343,     0,     0,    98,   199,   329,   205,
-   329,   205,   329,   205,   329,   200,   299,   206,   297,   207,
-     6,     0,    99,   335,     6,     0,     7,     0,   174,     0,
-   175,     0,   176,     0,   177,     0,   195,     0,   196,     0,
-     4,   301,   329,     6,     0,     4,   201,   329,   202,   301,
-   329,     6,     0,     4,   201,   206,   339,   207,   202,   301,
-   337,     6,     0,     4,   201,   202,     7,   337,     6,     0,
-     4,   302,     6,     0,     4,   201,   329,   202,   302,     6,
-     0,     4,   203,     4,     7,   343,     6,     0,     4,   201,
-   329,   202,   203,     4,     7,   343,     6,     0,     4,   203,
-     4,   301,   329,     6,     0,     4,   201,   329,   202,   203,
-     4,   301,   329,     6,     0,     4,   203,     4,   302,     6,
-     0,     4,   201,   329,   202,   203,     4,   302,     6,     0,
-     4,   203,   108,   203,     4,     7,   340,     6,     0,     4,
-   201,   329,   202,   203,   108,   203,     4,     7,   340,     6,
-     0,     4,   203,   109,     7,   341,     6,     0,     4,   201,
-   329,   202,   203,   109,     7,   341,     6,     0,    59,   199,
-     4,   200,   203,     4,     7,   329,     6,     0,    59,   199,
-     4,   200,   203,     4,     7,   343,     6,     0,    39,   199,
-   329,   200,     7,   331,     6,     0,    55,    39,   199,   329,
-   200,     7,   337,     6,     0,    71,    39,   337,     7,   206,
-   329,   205,   329,   205,   329,   207,     6,     0,    46,    47,
-   337,     7,   329,     6,     0,    42,   199,   329,   200,     7,
-   337,     6,     0,    44,   199,   329,   200,     7,   337,     6,
-     0,    40,   199,   329,   200,     7,   337,     6,     0,    40,
-   199,   329,   200,     7,   337,    50,   331,     6,     0,    41,
-   199,   329,   200,     7,   337,     6,     0,    41,   199,   329,
-   200,     7,   337,    50,   331,     6,     0,    48,   199,   329,
-   200,     7,   206,   329,   205,   329,   205,     5,   205,     5,
-   205,     5,   207,     6,     0,   101,   199,   329,   200,     7,
-   337,     6,     0,   102,   199,   329,   200,     7,   337,     6,
-     0,   103,   199,   329,   200,     7,   337,   107,   337,   104,
-   329,     6,     0,    42,    66,   199,   329,   200,     7,   337,
-     6,     0,    71,    42,   337,     7,   206,   329,   205,   329,
-   205,   329,   207,     6,     0,    55,    42,   199,   329,   200,
-     7,   337,     6,     0,    50,    43,   199,   329,   200,     7,
-   337,     6,     0,    51,    43,   199,   329,   200,     7,   337,
-     6,     0,   119,    43,   199,   329,   200,     7,   206,   329,
-   205,   337,   207,     6,     0,    52,    43,   206,   329,   207,
-     7,   199,   329,   205,   329,   200,   337,   337,     6,     0,
-    52,    43,   199,   329,   200,     7,   199,   329,   205,   329,
-   200,   337,   337,     6,     0,   103,    43,   105,   106,   199,
-   329,   200,     7,   335,   107,   206,   337,   205,   337,   207,
-   104,   206,   329,   205,   329,   207,     6,     0,   103,    43,
-   199,   329,   200,     7,   335,   107,   206,   337,   205,   337,
-   207,   104,   206,   329,   205,   329,   207,     6,     0,    43,
-    66,   199,   329,   200,     7,   337,     6,     0,    55,    43,
-   199,   329,   200,     7,   337,     6,     0,    54,    45,   199,
-   329,   200,     7,   337,     6,     0,    45,   199,   329,   200,
-     7,   337,     6,     0,    55,    45,   199,   329,   200,     7,
-   337,     6,     0,    61,   331,   206,   306,   207,     0,    60,
-   206,   331,   205,   331,   205,   329,   207,   206,   306,   207,
-     0,    62,   331,   206,   306,   207,     0,    63,   206,   331,
-   205,   329,   207,   206,   306,   207,     0,   308,     0,   307,
-     0,   305,     0,     0,   307,   304,     0,   307,    39,   206,
-   339,   207,     6,     0,   307,    42,   206,   339,   207,     6,
-     0,   307,    43,   206,   339,   207,     6,     0,   307,    45,
-   206,   339,   207,     6,     0,    65,   206,   307,   207,     0,
-    65,     4,   201,   329,   202,     6,     0,    68,   206,   307,
-   207,     0,    68,     4,   201,   329,   202,     6,     0,    68,
-     4,     6,     0,   108,   340,   206,   307,   207,     0,   120,
-   343,     6,     0,   121,   343,     6,     0,   120,   206,   307,
-   207,     0,   121,   206,   307,   207,     0,     4,   343,     6,
-     0,     4,     4,   201,   329,   202,   343,     6,     0,     4,
-   329,     6,     0,    59,   199,     4,   200,   203,     4,     6,
-     0,   100,     4,     6,     0,   115,     6,     0,    37,     6,
-     0,    37,   206,   329,   205,   329,   205,   329,   205,   329,
-   205,   329,   205,   329,   207,     6,     0,    38,     6,     0,
-   110,   199,   329,     8,   329,   200,     0,   110,   199,   329,
-     8,   329,     8,   329,   200,     0,   110,     4,   111,   206,
-   329,     8,   329,   207,     0,   110,     4,   111,   206,   329,
-     8,   329,     8,   329,   207,     0,   112,     0,   118,     4,
-     0,   116,     0,   117,     4,     6,     0,   113,   199,   329,
-   200,     0,   114,     0,    64,    39,   206,   329,   205,   331,
-   207,     6,     0,    64,    39,   206,   329,   205,   331,   205,
-   331,   205,   329,   207,     6,     0,    64,    39,   206,   329,
-   205,   331,   205,   331,   205,   331,   205,   329,   207,     6,
-     0,     0,    64,    39,   206,   329,   205,   331,   207,   315,
-   206,   324,   207,     6,     0,     0,    64,    39,   206,   329,
-   205,   331,   205,   331,   205,   329,   207,   316,   206,   324,
-   207,     6,     0,     0,    64,    39,   206,   329,   205,   331,
-   205,   331,   205,   331,   205,   329,   207,   317,   206,   324,
-   207,     6,     0,    64,    42,   206,   329,   205,   331,   207,
-     6,     0,    64,    42,   206,   329,   205,   331,   205,   331,
-   205,   329,   207,     6,     0,    64,    42,   206,   329,   205,
-   331,   205,   331,   205,   331,   205,   329,   207,     6,     0,
-     0,    64,    42,   206,   329,   205,   331,   207,   318,   206,
-   324,   207,     6,     0,     0,    64,    42,   206,   329,   205,
-   331,   205,   331,   205,   329,   207,   319,   206,   324,   207,
-     6,     0,     0,    64,    42,   206,   329,   205,   331,   205,
-   331,   205,   331,   205,   329,   207,   320,   206,   324,   207,
-     6,     0,    64,    43,   206,   329,   205,   331,   207,     6,
-     0,    64,    43,   206,   329,   205,   331,   205,   331,   205,
-   329,   207,     6,     0,    64,    43,   206,   329,   205,   331,
-   205,   331,   205,   331,   205,   329,   207,     6,     0,     0,
-    64,    43,   206,   329,   205,   331,   207,   321,   206,   324,
-   207,     6,     0,     0,    64,    43,   206,   329,   205,   331,
-   205,   331,   205,   329,   207,   322,   206,   324,   207,     6,
-     0,     0,    64,    43,   206,   329,   205,   331,   205,   331,
-   205,   331,   205,   329,   207,   323,   206,   324,   207,     6,
-     0,   325,     0,   324,   325,     0,    72,   206,   337,   205,
-   337,   205,   337,   207,     6,     0,    72,   206,   337,   205,
-   337,   207,     6,     0,    67,     6,     0,    53,    42,   337,
-     7,   329,     6,     0,    53,    42,   337,     7,   329,    56,
-    58,   329,     6,     0,    53,    42,   337,     7,   329,    56,
-    57,   329,     6,     0,    53,    43,   206,   329,   207,     7,
-   337,     6,     0,    49,    43,   206,   329,   207,     7,   337,
-     6,     0,    53,    45,   206,   329,   207,     7,   337,     6,
-     0,    67,    43,   337,     7,   329,     6,     0,    67,    43,
-   337,     6,     0,    69,     6,     0,    70,     6,     0,   125,
-     0,   126,     0,   127,     0,   128,     0,   129,     0,   330,
-     0,   199,   329,   200,     0,   189,   329,     0,   188,   329,
-     0,   194,   329,     0,   329,   189,   329,     0,   329,   188,
-   329,     0,   329,   190,   329,     0,   329,   191,   329,     0,
-   329,   192,   329,     0,   329,   198,   329,     0,   329,   184,
-   329,     0,   329,   186,   329,     0,   329,   185,   329,     0,
-   329,   187,   329,     0,   329,   181,   329,     0,   329,   182,
-   329,     0,   329,   180,   329,     0,   329,   179,   329,     0,
-   329,   178,   329,     8,   329,     0,    12,   199,   329,   200,
-     0,    13,   199,   329,   200,     0,    14,   199,   329,   200,
-     0,    15,   199,   329,   200,     0,    16,   199,   329,   200,
-     0,    17,   199,   329,   200,     0,    18,   199,   329,   200,
-     0,    19,   199,   329,   200,     0,    20,   199,   329,   200,
-     0,    22,   199,   329,   200,     0,    23,   199,   329,   205,
-   329,   200,     0,    24,   199,   329,   200,     0,    25,   199,
-   329,   200,     0,    26,   199,   329,   200,     0,    27,   199,
-   329,   200,     0,    28,   199,   329,   200,     0,    29,   199,
-   329,   200,     0,    30,   199,   329,   205,   329,   200,     0,
-    31,   199,   329,   205,   329,   200,     0,    32,   199,   329,
-   205,   329,   200,     0,    21,   199,   329,   200,     0,    12,
-   201,   329,   202,     0,    13,   201,   329,   202,     0,    14,
-   201,   329,   202,     0,    15,   201,   329,   202,     0,    16,
-   201,   329,   202,     0,    17,   201,   329,   202,     0,    18,
-   201,   329,   202,     0,    19,   201,   329,   202,     0,    20,
-   201,   329,   202,     0,    22,   201,   329,   202,     0,    23,
-   201,   329,   205,   329,   202,     0,    24,   201,   329,   202,
-     0,    25,   201,   329,   202,     0,    26,   201,   329,   202,
-     0,    27,   201,   329,   202,     0,    28,   201,   329,   202,
-     0,    29,   201,   329,   202,     0,    30,   201,   329,   205,
-   329,   202,     0,    31,   201,   329,   205,   329,   202,     0,
-    32,   201,   329,   205,   329,   202,     0,    21,   201,   329,
-   202,     0,     3,     0,     9,     0,    10,     0,    11,     0,
-     4,     0,     4,   201,   329,   202,     0,   204,     4,   201,
-   202,     0,     4,   302,     0,     4,   201,   329,   202,   302,
-     0,     4,   203,     4,     0,     4,   201,   329,   202,   203,
-     4,     0,     4,   203,     4,   302,     0,     4,   201,   329,
-   202,   203,     4,   302,     0,   332,     0,   189,   331,     0,
-   188,   331,     0,   331,   189,   331,     0,   331,   188,   331,
-     0,   206,   329,   205,   329,   205,   329,   205,   329,   205,
-   329,   207,     0,   206,   329,   205,   329,   205,   329,   205,
-   329,   207,     0,   206,   329,   205,   329,   205,   329,   207,
-     0,   199,   329,   205,   329,   205,   329,   200,     0,     0,
-   199,   334,   200,     0,     5,     0,   334,   205,     5,     0,
-     0,   206,   336,   207,     0,   199,   336,   200,     0,   337,
-     0,   336,   205,   337,     0,   329,     0,   338,     0,   206,
-   339,   207,     0,   189,   206,   339,   207,     0,   329,     8,
-   329,     0,   329,     8,   329,     8,   329,     0,    39,   206,
-   329,   207,     0,   305,     0,   308,     0,   314,     0,     4,
-   201,   202,     0,   189,     4,   201,   202,     0,     4,   201,
-   206,   339,   207,   202,     0,   189,     4,   201,   206,   339,
-   207,   202,     0,   329,     0,   338,     0,   339,   205,   329,
-     0,   339,   205,   338,     0,   206,   329,   205,   329,   205,
-   329,   205,   329,   207,     0,   206,   329,   205,   329,   205,
-   329,   207,     0,     4,     0,     4,   203,   108,   203,     4,
-     0,   206,   342,   207,     0,     4,   201,   329,   202,   203,
-   109,     0,   340,     0,   342,   205,   340,     0,     5,     0,
-    35,   199,   343,   205,   343,   200,     0,    36,   199,   343,
-   200,     0,    34,   199,   343,   200,     0,    34,   199,   343,
-   205,   339,   200,     0,    34,   199,     4,   203,     4,   200,
-     0,    34,   199,     4,   201,   329,   202,   203,     4,   200,
-     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,     9,    12,    14,    17,    18,
+      21,    23,    45,    47,    48,    51,    53,    55,    57,    60,
+      63,    66,    69,    72,    80,    86,   104,   114,   138,   170,
+     186,   198,   210,   226,   236,   250,   260,   272,   286,   296,
+     306,   318,   328,   340,   350,   362,   376,   390,   402,   416,
+     434,   444,   456,   468,   482,   494,   504,   505,   508,   510,
+     512,   514,   516,   518,   520,   522,   524,   526,   528,   530,
+     532,   534,   536,   542,   550,   557,   566,   567,   570,   573,
+     576,   579,   582,   585,   588,   591,   594,   597,   600,   603,
+     606,   609,   612,   615,   618,   621,   624,   627,   630,   633,
+     636,   639,   642,   645,   648,   650,   654,   655,   669,   671,
+     675,   676,   690,   692,   696,   697,   711,   713,   717,   718,
+     738,   740,   744,   745,   765,   767,   771,   772,   792,   794,
+     798,   799,   825,   827,   831,   832,   858,   860,   864,   865,
+     891,   893,   897,   898,   930,   932,   936,   937,   969,   971,
+     975,   976,  1008,  1010,  1014,  1015,  1047,  1049,  1053,  1054,
+    1086,  1088,  1092,  1093,  1125,  1127,  1131,  1132,  1188,  1190,
+    1194,  1195,  1251,  1253,  1257,  1258,  1314,  1316,  1320,  1321,
+    1365,  1367,  1371,  1372,  1416,  1418,  1422,  1423,  1467,  1469,
+    1473,  1474,  1512,  1514,  1518,  1519,  1557,  1559,  1563,  1564,
+    1602,  1604,  1608,  1609,  1623,  1625,  1629,  1630,  1646,  1651,
+    1653,  1655,  1657,  1659,  1661,  1663,  1665,  1670,  1678,  1688,
+    1695,  1699,  1706,  1713,  1723,  1730,  1740,  1746,  1755,  1764,
+    1776,  1783,  1793,  1803,  1813,  1821,  1830,  1843,  1850,  1858,
+    1866,  1874,  1884,  1892,  1902,  1920,  1928,  1936,  1948,  1957,
+    1970,  1979,  1988,  1997,  2010,  2025,  2040,  2063,  2084,  2093,
+    2102,  2111,  2119,  2128,  2134,  2146,  2152,  2162,  2164,  2166,
+    2168,  2169,  2172,  2179,  2186,  2193,  2200,  2205,  2212,  2217,
+    2224,  2228,  2234,  2238,  2242,  2247,  2252,  2256,  2264,  2268,
+    2276,  2280,  2283,  2286,  2302,  2305,  2312,  2321,  2330,  2341,
+    2343,  2346,  2348,  2352,  2357,  2359,  2368,  2381,  2396,  2397,
+    2410,  2411,  2428,  2429,  2448,  2457,  2470,  2485,  2486,  2499,
+    2500,  2517,  2518,  2537,  2546,  2559,  2574,  2575,  2588,  2589,
+    2606,  2607,  2626,  2628,  2631,  2641,  2649,  2652,  2659,  2669,
+    2679,  2688,  2697,  2706,  2713,  2718,  2721,  2724,  2726,  2728,
+    2730,  2732,  2734,  2736,  2740,  2743,  2746,  2749,  2753,  2757,
+    2761,  2765,  2769,  2773,  2777,  2781,  2785,  2789,  2793,  2797,
+    2801,  2805,  2811,  2816,  2821,  2826,  2831,  2836,  2841,  2846,
+    2851,  2856,  2861,  2868,  2873,  2878,  2883,  2888,  2893,  2898,
+    2905,  2912,  2919,  2924,  2929,  2934,  2939,  2944,  2949,  2954,
+    2959,  2964,  2969,  2974,  2981,  2986,  2991,  2996,  3001,  3006,
+    3011,  3018,  3025,  3032,  3037,  3039,  3041,  3043,  3045,  3047,
+    3052,  3057,  3060,  3066,  3070,  3077,  3082,  3090,  3092,  3095,
+    3098,  3102,  3106,  3118,  3128,  3136,  3144,  3145,  3149,  3151,
+    3155,  3156,  3160,  3164,  3166,  3170,  3172,  3174,  3178,  3183,
+    3187,  3193,  3198,  3200,  3202,  3204,  3208,  3213,  3220,  3228,
+    3230,  3232,  3236,  3240,  3250,  3258,  3260,  3266,  3270,  3277,
+    3279,  3283,  3285,  3292,  3297,  3302,  3309,  3316
 };
 
-#endif
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short yyrhs[] =
+{
+     209,     0,    -1,   213,    -1,   211,    -1,   218,    -1,     1,
+       6,    -1,     3,    -1,   189,     3,    -1,    -1,   211,   212,
+      -1,   165,    -1,   168,   169,   210,   210,   210,   170,   171,
+     167,   210,   210,   210,   167,   210,   210,   210,   167,   210,
+     210,   210,   172,   173,    -1,   166,    -1,    -1,   213,   214,
+      -1,   215,    -1,   217,    -1,   216,    -1,   140,     6,    -1,
+     141,     6,    -1,   143,     6,    -1,   142,     6,    -1,   144,
+       6,    -1,   145,   199,   334,   205,     5,   200,     6,    -1,
+     146,   199,   334,   200,     6,    -1,   147,   199,     5,   205,
+       5,   205,   334,   205,   334,   205,     5,   205,     5,   205,
+       5,   200,     6,    -1,     3,     7,   124,   199,     5,   205,
+     332,   200,     6,    -1,     3,     7,   123,   199,     5,   205,
+     330,   205,   338,   205,   329,   205,   329,   205,   329,   205,
+     338,   205,   338,   205,   329,   200,     6,    -1,     3,     7,
+     122,   199,     5,   205,   330,   205,   330,   205,   336,   205,
+     329,   205,   329,   205,   329,   205,   329,   205,   338,   205,
+     338,   205,   338,   205,   338,   205,   329,   200,     6,    -1,
+       3,     7,   130,   199,     5,   205,     3,   205,     3,   205,
+       3,   205,   329,   200,     6,    -1,     3,     7,   134,   199,
+       5,   205,     3,   205,   329,   200,     6,    -1,     3,     7,
+     151,   199,     5,   205,     3,   205,   329,   200,     6,    -1,
+       3,     7,   132,   199,     5,   205,   190,   205,   190,   205,
+     330,   205,   329,   200,     6,    -1,     3,     7,   135,   199,
+       5,   205,   338,   200,     6,    -1,     3,     7,   136,   199,
+       5,   205,   338,   205,     3,   205,   329,   200,     6,    -1,
+       3,     7,   131,   199,     5,   205,     3,   200,     6,    -1,
+       3,     7,   137,   199,     5,   205,     3,   205,   330,   200,
+       6,    -1,     3,     7,   139,   199,     5,   205,     3,   205,
+       3,   205,     3,   200,     6,    -1,     3,     7,   138,   199,
+       5,   205,   332,   200,     6,    -1,     3,     7,   133,   199,
+       5,   205,     3,   200,     6,    -1,     3,     7,    42,   199,
+       5,   205,     3,   205,     3,   200,     6,    -1,     3,     7,
+     149,   199,     5,   205,   338,   200,     6,    -1,     3,     7,
+     150,   199,     5,   205,   338,   205,     3,   200,     6,    -1,
+       3,     7,   148,   199,     5,   205,     3,   200,     6,    -1,
+       3,     7,   152,   199,     5,   205,     3,   205,   330,   200,
+       6,    -1,     3,     7,   153,   199,     5,   205,     3,   205,
+     330,   205,   330,   200,     6,    -1,     3,     7,   160,   199,
+       5,   205,     3,   205,   330,   205,   330,   200,     6,    -1,
+       3,     7,   154,   199,     5,   205,     3,   205,   330,   200,
+       6,    -1,     3,     7,   164,   199,     5,   205,     3,   205,
+     330,   205,   330,   200,     6,    -1,     3,     7,   155,   199,
+       5,   205,     3,   205,   338,   205,   338,   205,   329,   205,
+     329,   200,     6,    -1,     3,     7,   156,   199,     5,   205,
+     338,   200,     6,    -1,     3,     7,   157,   199,   158,   205,
+     329,   205,     3,   200,     6,    -1,     3,     7,   159,   199,
+       5,   205,   338,   205,   329,   200,     6,    -1,     3,     7,
+     161,   199,     5,   205,     5,   205,     3,   205,     3,   200,
+       6,    -1,     3,     7,   162,   199,     5,   205,     5,   205,
+       3,   200,     6,    -1,     3,     7,   163,   199,     3,   205,
+       3,   200,     6,    -1,    -1,   218,   219,    -1,   221,    -1,
+     220,    -1,   304,    -1,   305,    -1,   306,    -1,   309,    -1,
+     310,    -1,   311,    -1,   312,    -1,   315,    -1,   327,    -1,
+     328,    -1,   314,    -1,   313,    -1,    33,   199,     5,   200,
+       6,    -1,    33,   199,     5,   205,   340,   200,     6,    -1,
+       4,     5,   206,   222,   207,     6,    -1,     4,     5,     4,
+     332,   206,   222,   207,     6,    -1,    -1,   222,   224,    -1,
+     222,   227,    -1,   222,   230,    -1,   222,   233,    -1,   222,
+     236,    -1,   222,   239,    -1,   222,   242,    -1,   222,   245,
+      -1,   222,   248,    -1,   222,   251,    -1,   222,   254,    -1,
+     222,   257,    -1,   222,   260,    -1,   222,   263,    -1,   222,
+     266,    -1,   222,   269,    -1,   222,   272,    -1,   222,   275,
+      -1,   222,   278,    -1,   222,   281,    -1,   222,   284,    -1,
+     222,   287,    -1,   222,   290,    -1,   222,   293,    -1,   222,
+     296,    -1,   222,   299,    -1,   222,   301,    -1,   330,    -1,
+     223,   205,   330,    -1,    -1,    73,   199,   330,   205,   330,
+     205,   330,   200,   225,   206,   223,   207,     6,    -1,   330,
+      -1,   226,   205,   330,    -1,    -1,    74,   199,   330,   205,
+     330,   205,   330,   200,   228,   206,   226,   207,     6,    -1,
+     330,    -1,   229,   205,   330,    -1,    -1,    75,   199,   330,
+     205,   330,   205,   330,   200,   231,   206,   229,   207,     6,
+      -1,   330,    -1,   232,   205,   330,    -1,    -1,    76,   199,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   200,   234,   206,   232,   207,     6,    -1,   330,    -1,
+     235,   205,   330,    -1,    -1,    77,   199,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   200,   237,
+     206,   235,   207,     6,    -1,   330,    -1,   238,   205,   330,
+      -1,    -1,    78,   199,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   200,   240,   206,   238,   207,
+       6,    -1,   330,    -1,   241,   205,   330,    -1,    -1,    79,
+     199,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   200,   243,
+     206,   241,   207,     6,    -1,   330,    -1,   244,   205,   330,
+      -1,    -1,    80,   199,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   200,   246,   206,   244,   207,     6,    -1,   330,    -1,
+     247,   205,   330,    -1,    -1,    81,   199,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   200,   249,   206,   247,   207,     6,
+      -1,   330,    -1,   250,   205,   330,    -1,    -1,    82,   199,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   200,   252,   206,   250,   207,     6,    -1,
+     330,    -1,   253,   205,   330,    -1,    -1,    83,   199,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   200,   255,   206,   253,   207,     6,    -1,   330,
+      -1,   256,   205,   330,    -1,    -1,    84,   199,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   200,   258,   206,   256,   207,     6,    -1,   330,    -1,
+     259,   205,   330,    -1,    -1,    85,   199,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     200,   261,   206,   259,   207,     6,    -1,   330,    -1,   262,
+     205,   330,    -1,    -1,    86,   199,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   200,
+     264,   206,   262,   207,     6,    -1,   330,    -1,   265,   205,
+     330,    -1,    -1,    87,   199,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   200,   267,
+     206,   265,   207,     6,    -1,   330,    -1,   268,   205,   330,
+      -1,    -1,    88,   199,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   200,   270,   206,   268,   207,     6,    -1,   330,    -1,
+     271,   205,   330,    -1,    -1,    89,   199,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   200,   273,   206,   271,   207,     6,
+      -1,   330,    -1,   274,   205,   330,    -1,    -1,    90,   199,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   200,   276,   206,
+     274,   207,     6,    -1,   330,    -1,   277,   205,   330,    -1,
+      -1,    91,   199,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   200,   279,
+     206,   277,   207,     6,    -1,   330,    -1,   280,   205,   330,
+      -1,    -1,    92,   199,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   200,
+     282,   206,   280,   207,     6,    -1,   330,    -1,   283,   205,
+     330,    -1,    -1,    93,   199,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     200,   285,   206,   283,   207,     6,    -1,   330,    -1,   286,
+     205,   330,    -1,    -1,    94,   199,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   200,   288,   206,   286,   207,
+       6,    -1,   330,    -1,   289,   205,   330,    -1,    -1,    95,
+     199,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   205,   330,   205,   330,
+     200,   291,   206,   289,   207,     6,    -1,   330,    -1,   292,
+     205,   330,    -1,    -1,    96,   199,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   205,
+     330,   205,   330,   205,   330,   200,   294,   206,   292,   207,
+       6,    -1,   344,    -1,   295,   205,   344,    -1,    -1,    97,
+     199,   330,   205,   330,   205,   330,   200,   297,   206,   295,
+     207,     6,    -1,   344,    -1,   298,   205,   344,    -1,    -1,
+      98,   199,   330,   205,   330,   205,   330,   205,   330,   200,
+     300,   206,   298,   207,     6,    -1,    99,   336,   336,     6,
+      -1,     7,    -1,   177,    -1,   176,    -1,   175,    -1,   174,
+      -1,   197,    -1,   196,    -1,     4,   302,   330,     6,    -1,
+       4,   201,   330,   202,   302,   330,     6,    -1,     4,   201,
+     206,   340,   207,   202,   302,   338,     6,    -1,     4,   201,
+     202,     7,   338,     6,    -1,     4,   303,     6,    -1,     4,
+     201,   330,   202,   303,     6,    -1,     4,   203,     4,     7,
+     344,     6,    -1,     4,   201,   330,   202,   203,     4,     7,
+     344,     6,    -1,     4,   203,     4,   302,   330,     6,    -1,
+       4,   201,   330,   202,   203,     4,   302,   330,     6,    -1,
+       4,   203,     4,   303,     6,    -1,     4,   201,   330,   202,
+     203,     4,   303,     6,    -1,     4,   203,   108,   203,     4,
+       7,   341,     6,    -1,     4,   201,   330,   202,   203,   108,
+     203,     4,     7,   341,     6,    -1,     4,   203,   109,     7,
+     342,     6,    -1,     4,   201,   330,   202,   203,   109,     7,
+     342,     6,    -1,    59,   199,     4,   200,   203,     4,     7,
+     330,     6,    -1,    59,   199,     4,   200,   203,     4,     7,
+     344,     6,    -1,    39,   199,   330,   200,     7,   332,     6,
+      -1,    55,    39,   199,   330,   200,     7,   338,     6,    -1,
+      71,    39,   338,     7,   206,   330,   205,   330,   205,   330,
+     207,     6,    -1,    46,    47,   338,     7,   330,     6,    -1,
+      42,   199,   330,   200,     7,   338,     6,    -1,    44,   199,
+     330,   200,     7,   338,     6,    -1,    40,   199,   330,   200,
+       7,   338,     6,    -1,    40,   199,   330,   200,     7,   338,
+      50,   332,     6,    -1,    41,   199,   330,   200,     7,   338,
+       6,    -1,    41,   199,   330,   200,     7,   338,    50,   332,
+       6,    -1,    48,   199,   330,   200,     7,   206,   330,   205,
+     330,   205,     5,   205,     5,   205,     5,   207,     6,    -1,
+     101,   199,   330,   200,     7,   338,     6,    -1,   102,   199,
+     330,   200,     7,   338,     6,    -1,   103,   199,   330,   200,
+       7,   338,   107,   338,   104,   330,     6,    -1,    42,    66,
+     199,   330,   200,     7,   338,     6,    -1,    71,    42,   338,
+       7,   206,   330,   205,   330,   205,   330,   207,     6,    -1,
+      55,    42,   199,   330,   200,     7,   338,     6,    -1,    50,
+      43,   199,   330,   200,     7,   338,     6,    -1,    51,    43,
+     199,   330,   200,     7,   338,     6,    -1,   119,    43,   199,
+     330,   200,     7,   206,   330,   205,   338,   207,     6,    -1,
+      52,    43,   206,   330,   207,     7,   199,   330,   205,   330,
+     200,   338,   338,     6,    -1,    52,    43,   199,   330,   200,
+       7,   199,   330,   205,   330,   200,   338,   338,     6,    -1,
+     103,    43,   105,   106,   199,   330,   200,     7,   336,   107,
+     206,   338,   205,   338,   207,   104,   206,   330,   205,   330,
+     207,     6,    -1,   103,    43,   199,   330,   200,     7,   336,
+     107,   206,   338,   205,   338,   207,   104,   206,   330,   205,
+     330,   207,     6,    -1,    43,    66,   199,   330,   200,     7,
+     338,     6,    -1,    55,    43,   199,   330,   200,     7,   338,
+       6,    -1,    54,    45,   199,   330,   200,     7,   338,     6,
+      -1,    45,   199,   330,   200,     7,   338,     6,    -1,    55,
+      45,   199,   330,   200,     7,   338,     6,    -1,    61,   332,
+     206,   307,   207,    -1,    60,   206,   332,   205,   332,   205,
+     330,   207,   206,   307,   207,    -1,    62,   332,   206,   307,
+     207,    -1,    63,   206,   332,   205,   330,   207,   206,   307,
+     207,    -1,   309,    -1,   308,    -1,   306,    -1,    -1,   308,
+     305,    -1,   308,    39,   206,   340,   207,     6,    -1,   308,
+      42,   206,   340,   207,     6,    -1,   308,    43,   206,   340,
+     207,     6,    -1,   308,    45,   206,   340,   207,     6,    -1,
+      65,   206,   308,   207,    -1,    65,     4,   201,   330,   202,
+       6,    -1,    68,   206,   308,   207,    -1,    68,     4,   201,
+     330,   202,     6,    -1,    68,     4,     6,    -1,   108,   341,
+     206,   308,   207,    -1,   120,   344,     6,    -1,   121,   344,
+       6,    -1,   120,   206,   308,   207,    -1,   121,   206,   308,
+     207,    -1,     4,   344,     6,    -1,     4,     4,   201,   330,
+     202,   344,     6,    -1,     4,   330,     6,    -1,    59,   199,
+       4,   200,   203,     4,     6,    -1,   100,     4,     6,    -1,
+     115,     6,    -1,    37,     6,    -1,    37,   206,   330,   205,
+     330,   205,   330,   205,   330,   205,   330,   205,   330,   207,
+       6,    -1,    38,     6,    -1,   110,   199,   330,     8,   330,
+     200,    -1,   110,   199,   330,     8,   330,     8,   330,   200,
+      -1,   110,     4,   111,   206,   330,     8,   330,   207,    -1,
+     110,     4,   111,   206,   330,     8,   330,     8,   330,   207,
+      -1,   112,    -1,   118,     4,    -1,   116,    -1,   117,     4,
+       6,    -1,   113,   199,   330,   200,    -1,   114,    -1,    64,
+      39,   206,   330,   205,   332,   207,     6,    -1,    64,    39,
+     206,   330,   205,   332,   205,   332,   205,   330,   207,     6,
+      -1,    64,    39,   206,   330,   205,   332,   205,   332,   205,
+     332,   205,   330,   207,     6,    -1,    -1,    64,    39,   206,
+     330,   205,   332,   207,   316,   206,   325,   207,     6,    -1,
+      -1,    64,    39,   206,   330,   205,   332,   205,   332,   205,
+     330,   207,   317,   206,   325,   207,     6,    -1,    -1,    64,
+      39,   206,   330,   205,   332,   205,   332,   205,   332,   205,
+     330,   207,   318,   206,   325,   207,     6,    -1,    64,    42,
+     206,   330,   205,   332,   207,     6,    -1,    64,    42,   206,
+     330,   205,   332,   205,   332,   205,   330,   207,     6,    -1,
+      64,    42,   206,   330,   205,   332,   205,   332,   205,   332,
+     205,   330,   207,     6,    -1,    -1,    64,    42,   206,   330,
+     205,   332,   207,   319,   206,   325,   207,     6,    -1,    -1,
+      64,    42,   206,   330,   205,   332,   205,   332,   205,   330,
+     207,   320,   206,   325,   207,     6,    -1,    -1,    64,    42,
+     206,   330,   205,   332,   205,   332,   205,   332,   205,   330,
+     207,   321,   206,   325,   207,     6,    -1,    64,    43,   206,
+     330,   205,   332,   207,     6,    -1,    64,    43,   206,   330,
+     205,   332,   205,   332,   205,   330,   207,     6,    -1,    64,
+      43,   206,   330,   205,   332,   205,   332,   205,   332,   205,
+     330,   207,     6,    -1,    -1,    64,    43,   206,   330,   205,
+     332,   207,   322,   206,   325,   207,     6,    -1,    -1,    64,
+      43,   206,   330,   205,   332,   205,   332,   205,   330,   207,
+     323,   206,   325,   207,     6,    -1,    -1,    64,    43,   206,
+     330,   205,   332,   205,   332,   205,   332,   205,   330,   207,
+     324,   206,   325,   207,     6,    -1,   326,    -1,   325,   326,
+      -1,    72,   206,   338,   205,   338,   205,   338,   207,     6,
+      -1,    72,   206,   338,   205,   338,   207,     6,    -1,    67,
+       6,    -1,    53,    42,   338,     7,   330,     6,    -1,    53,
+      42,   338,     7,   330,    56,    58,   330,     6,    -1,    53,
+      42,   338,     7,   330,    56,    57,   330,     6,    -1,    53,
+      43,   206,   330,   207,     7,   338,     6,    -1,    49,    43,
+     206,   330,   207,     7,   338,     6,    -1,    53,    45,   206,
+     330,   207,     7,   338,     6,    -1,    67,    43,   338,     7,
+     330,     6,    -1,    67,    43,   338,     6,    -1,    69,     6,
+      -1,    70,     6,    -1,   125,    -1,   126,    -1,   127,    -1,
+     128,    -1,   129,    -1,   331,    -1,   199,   330,   200,    -1,
+     189,   330,    -1,   188,   330,    -1,   194,   330,    -1,   330,
+     189,   330,    -1,   330,   188,   330,    -1,   330,   190,   330,
+      -1,   330,   191,   330,    -1,   330,   192,   330,    -1,   330,
+     198,   330,    -1,   330,   184,   330,    -1,   330,   185,   330,
+      -1,   330,   187,   330,    -1,   330,   186,   330,    -1,   330,
+     183,   330,    -1,   330,   182,   330,    -1,   330,   180,   330,
+      -1,   330,   179,   330,    -1,   330,   178,   330,     8,   330,
+      -1,    12,   199,   330,   200,    -1,    13,   199,   330,   200,
+      -1,    14,   199,   330,   200,    -1,    15,   199,   330,   200,
+      -1,    16,   199,   330,   200,    -1,    17,   199,   330,   200,
+      -1,    18,   199,   330,   200,    -1,    19,   199,   330,   200,
+      -1,    20,   199,   330,   200,    -1,    22,   199,   330,   200,
+      -1,    23,   199,   330,   205,   330,   200,    -1,    24,   199,
+     330,   200,    -1,    25,   199,   330,   200,    -1,    26,   199,
+     330,   200,    -1,    27,   199,   330,   200,    -1,    28,   199,
+     330,   200,    -1,    29,   199,   330,   200,    -1,    30,   199,
+     330,   205,   330,   200,    -1,    31,   199,   330,   205,   330,
+     200,    -1,    32,   199,   330,   205,   330,   200,    -1,    21,
+     199,   330,   200,    -1,    12,   201,   330,   202,    -1,    13,
+     201,   330,   202,    -1,    14,   201,   330,   202,    -1,    15,
+     201,   330,   202,    -1,    16,   201,   330,   202,    -1,    17,
+     201,   330,   202,    -1,    18,   201,   330,   202,    -1,    19,
+     201,   330,   202,    -1,    20,   201,   330,   202,    -1,    22,
+     201,   330,   202,    -1,    23,   201,   330,   205,   330,   202,
+      -1,    24,   201,   330,   202,    -1,    25,   201,   330,   202,
+      -1,    26,   201,   330,   202,    -1,    27,   201,   330,   202,
+      -1,    28,   201,   330,   202,    -1,    29,   201,   330,   202,
+      -1,    30,   201,   330,   205,   330,   202,    -1,    31,   201,
+     330,   205,   330,   202,    -1,    32,   201,   330,   205,   330,
+     202,    -1,    21,   201,   330,   202,    -1,     3,    -1,     9,
+      -1,    10,    -1,    11,    -1,     4,    -1,     4,   201,   330,
+     202,    -1,   204,     4,   201,   202,    -1,     4,   303,    -1,
+       4,   201,   330,   202,   303,    -1,     4,   203,     4,    -1,
+       4,   201,   330,   202,   203,     4,    -1,     4,   203,     4,
+     303,    -1,     4,   201,   330,   202,   203,     4,   303,    -1,
+     333,    -1,   189,   332,    -1,   188,   332,    -1,   332,   189,
+     332,    -1,   332,   188,   332,    -1,   206,   330,   205,   330,
+     205,   330,   205,   330,   205,   330,   207,    -1,   206,   330,
+     205,   330,   205,   330,   205,   330,   207,    -1,   206,   330,
+     205,   330,   205,   330,   207,    -1,   199,   330,   205,   330,
+     205,   330,   200,    -1,    -1,   199,   335,   200,    -1,     5,
+      -1,   335,   205,     5,    -1,    -1,   206,   337,   207,    -1,
+     199,   337,   200,    -1,   338,    -1,   337,   205,   338,    -1,
+     330,    -1,   339,    -1,   206,   340,   207,    -1,   189,   206,
+     340,   207,    -1,   330,     8,   330,    -1,   330,     8,   330,
+       8,   330,    -1,    39,   206,   330,   207,    -1,   306,    -1,
+     309,    -1,   315,    -1,     4,   201,   202,    -1,   189,     4,
+     201,   202,    -1,     4,   201,   206,   340,   207,   202,    -1,
+     189,     4,   201,   206,   340,   207,   202,    -1,   330,    -1,
+     339,    -1,   340,   205,   330,    -1,   340,   205,   339,    -1,
+     206,   330,   205,   330,   205,   330,   205,   330,   207,    -1,
+     206,   330,   205,   330,   205,   330,   207,    -1,     4,    -1,
+       4,   203,   108,   203,     4,    -1,   206,   343,   207,    -1,
+       4,   201,   330,   202,   203,   109,    -1,   341,    -1,   343,
+     205,   341,    -1,     5,    -1,    35,   199,   344,   205,   344,
+     200,    -1,    36,   199,   344,   200,    -1,    34,   199,   344,
+     200,    -1,    34,   199,   344,   205,   340,   200,    -1,    34,
+     199,     4,   203,     4,   200,    -1,    34,   199,     4,   201,
+     330,   202,   203,     4,   200,    -1
+};
 
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   165,   167,   168,   169,   174,   176,   179,   181,   184,   192,
-   206,   223,   225,   228,   230,   231,   234,   240,   245,   246,
-   247,   250,   254,   257,   263,   268,   274,   282,   287,   291,
-   297,   302,   306,   311,   315,   318,   323,   327,   331,   335,
-   340,   344,   347,   351,   355,   359,   363,   367,   371,   374,
-   378,   381,   385,   388,   395,   397,   400,   402,   403,   404,
-   405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
-   417,   422,   438,   443,   449,   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,   483,   486,   490,   496,   502,   505,   509,   516,
-   525,   528,   532,   539,   548,   551,   555,   564,   573,   576,
-   580,   589,   598,   601,   605,   614,   623,   626,   630,   643,
-   652,   655,   659,   672,   681,   684,   688,   701,   710,   713,
-   717,   731,   740,   743,   747,   761,   770,   773,   777,   791,
-   800,   803,   807,   821,   830,   833,   837,   851,   860,   863,
-   867,   881,   890,   893,   897,   921,   930,   933,   937,   961,
-   970,   973,   977,  1001,  1010,  1013,  1017,  1036,  1045,  1048,
-  1052,  1071,  1080,  1083,  1087,  1106,  1115,  1118,  1122,  1140,
-  1149,  1152,  1156,  1174,  1183,  1186,  1190,  1208,  1217,  1223,
-  1230,  1238,  1244,  1250,  1257,  1265,  1271,  1280,  1282,  1283,
-  1284,  1285,  1288,  1290,  1293,  1325,  1361,  1410,  1426,  1436,
-  1454,  1467,  1483,  1508,  1534,  1547,  1563,  1576,  1592,  1611,
-  1633,  1642,  1656,  1676,  1692,  1711,  1730,  1748,  1766,  1784,
-  1810,  1828,  1854,  1873,  1897,  1921,  1947,  1964,  1982,  2001,
-  2020,  2059,  2084,  2106,  2122,  2141,  2160,  2176,  2195,  2212,
-  2229,  2249,  2255,  2260,  2265,  2272,  2274,  2275,  2278,  2283,
-  2287,  2303,  2319,  2335,  2355,  2369,  2379,  2389,  2399,  2408,
-  2422,  2430,  2435,  2446,  2459,  2503,  2517,  2532,  2541,  2551,
-  2555,  2559,  2563,  2574,  2590,  2604,  2629,  2654,  2681,  2687,
-  2692,  2697,  2701,  2709,  2728,  2744,  2760,  2765,  2781,  2786,
-  2802,  2807,  2825,  2848,  2871,  2894,  2899,  2922,  2927,  2950,
-  2955,  2981,  3004,  3027,  3050,  3055,  3078,  3084,  3107,  3113,
-  3138,  3142,  3147,  3174,  3198,  3206,  3225,  3243,  3261,  3288,
-  3314,  3340,  3354,  3372,  3377,  3386,  3388,  3389,  3390,  3391,
-  3394,  3396,  3397,  3398,  3399,  3400,  3401,  3402,  3403,  3410,
-  3411,  3412,  3413,  3414,  3415,  3416,  3417,  3418,  3419,  3420,
-  3421,  3422,  3423,  3424,  3425,  3426,  3427,  3428,  3429,  3430,
-  3431,  3432,  3433,  3434,  3435,  3436,  3437,  3438,  3439,  3440,
-  3441,  3443,  3444,  3445,  3446,  3447,  3448,  3449,  3450,  3451,
-  3452,  3453,  3454,  3455,  3456,  3457,  3458,  3459,  3460,  3461,
-  3462,  3463,  3468,  3473,  3474,  3475,  3479,  3491,  3510,  3523,
-  3535,  3557,  3574,  3591,  3608,  3627,  3632,  3636,  3640,  3644,
-  3650,  3655,  3659,  3663,  3669,  3673,  3678,  3682,  3687,  3691,
-  3695,  3701,  3707,  3714,  3720,  3724,  3728,  3739,  3746,  3757,
-  3777,  3787,  3797,  3809,  3825,  3843,  3866,  3893,  3899,  3903,
-  3907,  3919,  3924,  3936,  3942,  3962,  3967,  3980,  3986,  3992,
-  3997,  4005,  4019,  4023,  4042,  4058
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short yyrline[] =
+{
+       0,   166,   166,   167,   168,   169,   175,   176,   179,   181,
+     185,   192,   206,   223,   225,   229,   230,   231,   235,   240,
+     245,   246,   247,   251,   254,   257,   264,   268,   274,   282,
+     287,   291,   297,   302,   306,   311,   315,   318,   323,   327,
+     331,   335,   340,   344,   347,   351,   355,   359,   363,   367,
+     371,   374,   378,   381,   385,   388,   395,   397,   401,   402,
+     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
+     413,   414,   418,   422,   439,   443,   451,   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,   484,   486,   492,   491,   503,   505,
+     511,   510,   526,   528,   534,   533,   549,   551,   558,   556,
+     574,   576,   583,   581,   599,   601,   608,   606,   624,   626,
+     634,   631,   653,   655,   663,   660,   682,   684,   692,   689,
+     711,   713,   722,   718,   741,   743,   752,   748,   771,   773,
+     782,   778,   801,   803,   812,   808,   831,   833,   842,   838,
+     861,   863,   872,   868,   891,   893,   906,   898,   931,   933,
+     946,   938,   971,   973,   986,   978,  1011,  1013,  1024,  1018,
+    1046,  1048,  1059,  1053,  1081,  1083,  1094,  1088,  1116,  1118,
+    1128,  1123,  1150,  1152,  1162,  1157,  1184,  1186,  1196,  1191,
+    1218,  1223,  1232,  1231,  1245,  1250,  1259,  1258,  1272,  1281,
+    1282,  1283,  1284,  1285,  1289,  1290,  1297,  1325,  1361,  1410,
+    1426,  1436,  1454,  1467,  1483,  1508,  1534,  1547,  1563,  1576,
+    1592,  1611,  1633,  1642,  1660,  1676,  1692,  1711,  1730,  1748,
+    1766,  1784,  1810,  1828,  1854,  1873,  1897,  1921,  1947,  1964,
+    1982,  2001,  2020,  2059,  2084,  2106,  2122,  2141,  2160,  2176,
+    2195,  2212,  2229,  2250,  2255,  2260,  2265,  2273,  2274,  2275,
+    2280,  2283,  2287,  2303,  2319,  2335,  2356,  2369,  2380,  2389,
+    2399,  2409,  2423,  2430,  2435,  2446,  2460,  2503,  2517,  2532,
+    2541,  2551,  2555,  2559,  2563,  2576,  2590,  2604,  2629,  2654,
+    2681,  2687,  2692,  2697,  2701,  2712,  2728,  2744,  2761,  2760,
+    2782,  2781,  2803,  2802,  2825,  2848,  2871,  2895,  2894,  2923,
+    2922,  2951,  2950,  2981,  3004,  3027,  3051,  3050,  3079,  3078,
+    3108,  3107,  3139,  3142,  3148,  3174,  3198,  3207,  3225,  3243,
+    3261,  3288,  3314,  3340,  3354,  3373,  3377,  3387,  3388,  3389,
+    3390,  3391,  3395,  3396,  3397,  3398,  3399,  3400,  3401,  3402,
+    3403,  3410,  3411,  3412,  3413,  3414,  3415,  3416,  3417,  3418,
+    3419,  3420,  3421,  3422,  3423,  3424,  3425,  3426,  3427,  3428,
+    3429,  3430,  3431,  3432,  3433,  3434,  3435,  3436,  3437,  3438,
+    3439,  3440,  3441,  3443,  3444,  3445,  3446,  3447,  3448,  3449,
+    3450,  3451,  3452,  3453,  3454,  3455,  3456,  3457,  3458,  3459,
+    3460,  3461,  3462,  3463,  3472,  3473,  3474,  3475,  3479,  3491,
+    3510,  3523,  3535,  3557,  3574,  3591,  3608,  3628,  3632,  3636,
+    3640,  3644,  3651,  3655,  3659,  3663,  3671,  3673,  3679,  3682,
+    3689,  3691,  3695,  3702,  3707,  3715,  3720,  3724,  3728,  3740,
+    3746,  3757,  3777,  3787,  3797,  3809,  3825,  3843,  3866,  3894,
+    3899,  3903,  3907,  3920,  3924,  3936,  3942,  3963,  3967,  3981,
+    3986,  3993,  3997,  4005,  4019,  4023,  4042,  4058
 };
 #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","tBoundingBox","tDraw",
-"tPoint","tCircle","tEllipse","tLine","tSurface","tSpline","tVolume","tCharacteristic",
-"tLength","tParametric","tElliptic","tPlane","tRuled","tTriangulation","tTransfinite",
-"tComplex","tPhysical","tUsing","tBump","tProgression","tPlugin","tRotate","tTranslate",
-"tSymmetry","tDilate","tExtrude","tDuplicata","tLoop","tRecombine","tDelete",
-"tCoherence","tIntersect","tAttractor","tLayers","tScalarPoint","tVectorPoint",
-"tTensorPoint","tScalarLine","tVectorLine","tTensorLine","tScalarTriangle","tVectorTriangle",
-"tTensorTriangle","tScalarQuadrangle","tVectorQuadrangle","tTensorQuadrangle",
-"tScalarTetrahedron","tVectorTetrahedron","tTensorTetrahedron","tScalarHexahedron",
-"tVectorHexahedron","tTensorHexahedron","tScalarPrism","tVectorPrism","tTensorPrism",
-"tScalarPyramid","tVectorPyramid","tTensorPyramid","tText2D","tText3D","tInterpolationMatrix",
-"tCombine","tBSpline","tBezier","tNurbs","tOrder","tWith","tBounds","tKnots",
-"tColor","tColorTable","tFor","tIn","tEndFor","tIf","tEndIf","tExit","tReturn",
-"tCall","tFunction","tTrimmed","tShow","tHide","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","tSolid","tEndSolid","tVertex","tFacet","tNormal","tOuter","tLoopSTL",
-"tEndLoop","tEndFacet","tAFFECTPLUS","tAFFECTMINUS","tAFFECTTIMES","tAFFECTDIVIDE",
-"'?'","tOR","tAND","tEQUAL","tNOTEQUAL","tAPPROXEQUAL","'<'","tLESSOREQUAL",
-"'>'","tGREATEROREQUAL","'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT","'!'",
-"tPLUSPLUS","tMINUSMINUS","UNARYPREC","'^'","'('","')'","'['","']'","'.'","'#'",
-"','","'{'","'}'","All","SignedDouble","StlFormatItems","StlFormatItem","StepFormatItems",
-"StepFormatItem","StepSpecial","StepHeaderItem","StepDataItem","GeoFormatItems",
-"GeoFormatItem","Printf","View","Views","ScalarPointValues","ScalarPoint","@1",
-"VectorPointValues","VectorPoint","@2","TensorPointValues","TensorPoint","@3",
-"ScalarLineValues","ScalarLine","@4","VectorLineValues","VectorLine","@5","TensorLineValues",
-"TensorLine","@6","ScalarTriangleValues","ScalarTriangle","@7","VectorTriangleValues",
-"VectorTriangle","@8","TensorTriangleValues","TensorTriangle","@9","ScalarQuadrangleValues",
-"ScalarQuadrangle","@10","VectorQuadrangleValues","VectorQuadrangle","@11","TensorQuadrangleValues",
-"TensorQuadrangle","@12","ScalarTetrahedronValues","ScalarTetrahedron","@13",
-"VectorTetrahedronValues","VectorTetrahedron","@14","TensorTetrahedronValues",
-"TensorTetrahedron","@15","ScalarHexahedronValues","ScalarHexahedron","@16",
-"VectorHexahedronValues","VectorHexahedron","@17","TensorHexahedronValues","TensorHexahedron",
-"@18","ScalarPrismValues","ScalarPrism","@19","VectorPrismValues","VectorPrism",
-"@20","TensorPrismValues","TensorPrism","@21","ScalarPyramidValues","ScalarPyramid",
-"@22","VectorPyramidValues","VectorPyramid","@23","TensorPyramidValues","TensorPyramid",
-"@24","Text2DValues","Text2D","@25","Text3DValues","Text3D","@26","InterpolationMatrix",
-"NumericAffectation","NumericIncrement","Affectation","Shape","Transform","MultipleShape",
-"ListOfShapes","Duplicata","Delete","Colorify","Visibility","Command","Loop",
-"Extrude","@27","@28","@29","@30","@31","@32","@33","@34","@35","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", "tBoundingBox", "tDraw", "tPoint", "tCircle", "tEllipse", 
+  "tLine", "tSurface", "tSpline", "tVolume", "tCharacteristic", "tLength", 
+  "tParametric", "tElliptic", "tPlane", "tRuled", "tTriangulation", 
+  "tTransfinite", "tComplex", "tPhysical", "tUsing", "tBump", 
+  "tProgression", "tPlugin", "tRotate", "tTranslate", "tSymmetry", 
+  "tDilate", "tExtrude", "tDuplicata", "tLoop", "tRecombine", "tDelete", 
+  "tCoherence", "tIntersect", "tAttractor", "tLayers", "tScalarPoint", 
+  "tVectorPoint", "tTensorPoint", "tScalarLine", "tVectorLine", 
+  "tTensorLine", "tScalarTriangle", "tVectorTriangle", "tTensorTriangle", 
+  "tScalarQuadrangle", "tVectorQuadrangle", "tTensorQuadrangle", 
+  "tScalarTetrahedron", "tVectorTetrahedron", "tTensorTetrahedron", 
+  "tScalarHexahedron", "tVectorHexahedron", "tTensorHexahedron", 
+  "tScalarPrism", "tVectorPrism", "tTensorPrism", "tScalarPyramid", 
+  "tVectorPyramid", "tTensorPyramid", "tText2D", "tText3D", 
+  "tInterpolationScheme", "tCombine", "tBSpline", "tBezier", "tNurbs", 
+  "tOrder", "tWith", "tBounds", "tKnots", "tColor", "tColorTable", "tFor", 
+  "tIn", "tEndFor", "tIf", "tEndIf", "tExit", "tReturn", "tCall", 
+  "tFunction", "tTrimmed", "tShow", "tHide", 
+  "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", "tSolid", "tEndSolid", "tVertex", "tFacet", "tNormal", 
+  "tOuter", "tLoopSTL", "tEndLoop", "tEndFacet", "tAFFECTDIVIDE", 
+  "tAFFECTTIMES", "tAFFECTMINUS", "tAFFECTPLUS", "'?'", "tOR", "tAND", 
+  "tAPPROXEQUAL", "tNOTEQUAL", "tEQUAL", "'<'", "'>'", "tGREATEROREQUAL", 
+  "tLESSOREQUAL", "'+'", "'-'", "'*'", "'/'", "'%'", "tCROSSPRODUCT", 
+  "'!'", "UNARYPREC", "tMINUSMINUS", "tPLUSPLUS", "'^'", "'('", "')'", 
+  "'['", "']'", "'.'", "'#'", "','", "'{'", "'}'", "$accept", "All", 
+  "SignedDouble", "StlFormatItems", "StlFormatItem", "StepFormatItems", 
+  "StepFormatItem", "StepSpecial", "StepHeaderItem", "StepDataItem", 
+  "GeoFormatItems", "GeoFormatItem", "Printf", "View", "Views", 
+  "ScalarPointValues", "ScalarPoint", "@1", "VectorPointValues", 
+  "VectorPoint", "@2", "TensorPointValues", "TensorPoint", "@3", 
+  "ScalarLineValues", "ScalarLine", "@4", "VectorLineValues", 
+  "VectorLine", "@5", "TensorLineValues", "TensorLine", "@6", 
+  "ScalarTriangleValues", "ScalarTriangle", "@7", "VectorTriangleValues", 
+  "VectorTriangle", "@8", "TensorTriangleValues", "TensorTriangle", "@9", 
+  "ScalarQuadrangleValues", "ScalarQuadrangle", "@10", 
+  "VectorQuadrangleValues", "VectorQuadrangle", "@11", 
+  "TensorQuadrangleValues", "TensorQuadrangle", "@12", 
+  "ScalarTetrahedronValues", "ScalarTetrahedron", "@13", 
+  "VectorTetrahedronValues", "VectorTetrahedron", "@14", 
+  "TensorTetrahedronValues", "TensorTetrahedron", "@15", 
+  "ScalarHexahedronValues", "ScalarHexahedron", "@16", 
+  "VectorHexahedronValues", "VectorHexahedron", "@17", 
+  "TensorHexahedronValues", "TensorHexahedron", "@18", 
+  "ScalarPrismValues", "ScalarPrism", "@19", "VectorPrismValues", 
+  "VectorPrism", "@20", "TensorPrismValues", "TensorPrism", "@21", 
+  "ScalarPyramidValues", "ScalarPyramid", "@22", "VectorPyramidValues", 
+  "VectorPyramid", "@23", "TensorPyramidValues", "TensorPyramid", "@24", 
+  "Text2DValues", "Text2D", "@25", "Text3DValues", "Text3D", "@26", 
+  "InterpolationMatrix", "NumericAffectation", "NumericIncrement", 
+  "Affectation", "Shape", "Transform", "MultipleShape", "ListOfShapes", 
+  "Duplicata", "Delete", "Colorify", "Visibility", "Command", "Loop", 
+  "Extrude", "@27", "@28", "@29", "@30", "@31", "@32", "@33", "@34", 
+  "@35", "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,
-   208,   208,   208,   208,   209,   209,   210,   210,   211,   211,
-   211,   212,   212,   213,   213,   213,   214,   214,   214,   214,
-   214,   215,   215,   215,   216,   216,   216,   216,   216,   216,
-   216,   216,   216,   216,   216,   216,   216,   216,   216,   216,
-   216,   216,   216,   216,   216,   216,   216,   216,   216,   216,
-   216,   216,   216,   216,   217,   217,   218,   218,   218,   218,
-   218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
-   219,   219,   220,   220,   221,   221,   221,   221,   221,   221,
-   221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
-   221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
-   221,   221,   222,   222,   224,   223,   225,   225,   227,   226,
-   228,   228,   230,   229,   231,   231,   233,   232,   234,   234,
-   236,   235,   237,   237,   239,   238,   240,   240,   242,   241,
-   243,   243,   245,   244,   246,   246,   248,   247,   249,   249,
-   251,   250,   252,   252,   254,   253,   255,   255,   257,   256,
-   258,   258,   260,   259,   261,   261,   263,   262,   264,   264,
-   266,   265,   267,   267,   269,   268,   270,   270,   272,   271,
-   273,   273,   275,   274,   276,   276,   278,   277,   279,   279,
-   281,   280,   282,   282,   284,   283,   285,   285,   287,   286,
-   288,   288,   290,   289,   291,   291,   293,   292,   294,   294,
-   296,   295,   297,   297,   299,   298,   300,   301,   301,   301,
-   301,   301,   302,   302,   303,   303,   303,   303,   303,   303,
-   303,   303,   303,   303,   303,   303,   303,   303,   303,   303,
-   303,   303,   304,   304,   304,   304,   304,   304,   304,   304,
-   304,   304,   304,   304,   304,   304,   304,   304,   304,   304,
-   304,   304,   304,   304,   304,   304,   304,   304,   304,   304,
-   304,   305,   305,   305,   305,   306,   306,   306,   307,   307,
-   307,   307,   307,   307,   308,   308,   309,   309,   309,   310,
-   311,   311,   311,   311,   312,   312,   312,   312,   312,   312,
-   312,   312,   312,   313,   313,   313,   313,   313,   313,   313,
-   313,   313,   313,   314,   314,   314,   315,   314,   316,   314,
-   317,   314,   314,   314,   314,   318,   314,   319,   314,   320,
-   314,   314,   314,   314,   321,   314,   322,   314,   323,   314,
-   324,   324,   325,   325,   325,   326,   326,   326,   326,   326,
-   326,   326,   326,   327,   327,   328,   328,   328,   328,   328,
-   329,   329,   329,   329,   329,   329,   329,   329,   329,   329,
-   329,   329,   329,   329,   329,   329,   329,   329,   329,   329,
-   329,   329,   329,   329,   329,   329,   329,   329,   329,   329,
-   329,   329,   329,   329,   329,   329,   329,   329,   329,   329,
-   329,   329,   329,   329,   329,   329,   329,   329,   329,   329,
-   329,   329,   329,   329,   329,   329,   329,   329,   329,   329,
-   329,   329,   330,   330,   330,   330,   330,   330,   330,   330,
-   330,   330,   330,   330,   330,   331,   331,   331,   331,   331,
-   332,   332,   332,   332,   333,   333,   334,   334,   335,   335,
-   335,   336,   336,   337,   337,   337,   337,   338,   338,   338,
-   338,   338,   338,   338,   338,   338,   338,   339,   339,   339,
-   339,   340,   340,   340,   340,   341,   341,   342,   342,   343,
-   343,   343,   343,   343,   343,   343
+# 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,   408,   409,   410,   411,   412,   413,   414,
+     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
+     425,   426,   427,   428,   429,   430,   431,   432,    63,   433,
+     434,   435,   436,   437,    60,    62,   438,   439,    43,    45,
+      42,    47,    37,   440,    33,   441,   442,   443,    94,    40,
+      41,    91,    93,    46,    35,    44,   123,   125
 };
-
-static const short yyr2[] = {     0,
-     1,     1,     1,     2,     1,     2,     0,     2,     1,    21,
-     1,     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,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     1,     3,     0,    13,     1,     3,     0,    13,
-     1,     3,     0,    13,     1,     3,     0,    19,     1,     3,
-     0,    19,     1,     3,     0,    19,     1,     3,     0,    25,
-     1,     3,     0,    25,     1,     3,     0,    25,     1,     3,
-     0,    31,     1,     3,     0,    31,     1,     3,     0,    31,
-     1,     3,     0,    31,     1,     3,     0,    31,     1,     3,
-     0,    31,     1,     3,     0,    55,     1,     3,     0,    55,
-     1,     3,     0,    55,     1,     3,     0,    43,     1,     3,
-     0,    43,     1,     3,     0,    43,     1,     3,     0,    37,
-     1,     3,     0,    37,     1,     3,     0,    37,     1,     3,
-     0,    13,     1,     3,     0,    15,     3,     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,    14,    14,    22,    20,     8,     8,     8,     7,
-     8,     5,    11,     5,     9,     1,     1,     1,     0,     2,
-     6,     6,     6,     6,     4,     6,     4,     6,     3,     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,     4,     4,     2,
-     5,     3,     6,     4,     7,     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,
-     6,     4,     4,     6,     6,     9
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned short yyr1[] =
+{
+       0,   208,   209,   209,   209,   209,   210,   210,   211,   211,
+     212,   212,   212,   213,   213,   214,   214,   214,   215,   215,
+     215,   215,   215,   216,   216,   216,   217,   217,   217,   217,
+     217,   217,   217,   217,   217,   217,   217,   217,   217,   217,
+     217,   217,   217,   217,   217,   217,   217,   217,   217,   217,
+     217,   217,   217,   217,   217,   217,   218,   218,   219,   219,
+     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
+     219,   219,   220,   220,   221,   221,   222,   222,   222,   222,
+     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
+     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
+     222,   222,   222,   222,   223,   223,   225,   224,   226,   226,
+     228,   227,   229,   229,   231,   230,   232,   232,   234,   233,
+     235,   235,   237,   236,   238,   238,   240,   239,   241,   241,
+     243,   242,   244,   244,   246,   245,   247,   247,   249,   248,
+     250,   250,   252,   251,   253,   253,   255,   254,   256,   256,
+     258,   257,   259,   259,   261,   260,   262,   262,   264,   263,
+     265,   265,   267,   266,   268,   268,   270,   269,   271,   271,
+     273,   272,   274,   274,   276,   275,   277,   277,   279,   278,
+     280,   280,   282,   281,   283,   283,   285,   284,   286,   286,
+     288,   287,   289,   289,   291,   290,   292,   292,   294,   293,
+     295,   295,   297,   296,   298,   298,   300,   299,   301,   302,
+     302,   302,   302,   302,   303,   303,   304,   304,   304,   304,
+     304,   304,   304,   304,   304,   304,   304,   304,   304,   304,
+     304,   304,   304,   304,   305,   305,   305,   305,   305,   305,
+     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
+     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
+     305,   305,   305,   306,   306,   306,   306,   307,   307,   307,
+     308,   308,   308,   308,   308,   308,   309,   309,   310,   310,
+     310,   311,   312,   312,   312,   312,   313,   313,   313,   313,
+     313,   313,   313,   313,   313,   314,   314,   314,   314,   314,
+     314,   314,   314,   314,   314,   315,   315,   315,   316,   315,
+     317,   315,   318,   315,   315,   315,   315,   319,   315,   320,
+     315,   321,   315,   315,   315,   315,   322,   315,   323,   315,
+     324,   315,   325,   325,   326,   326,   326,   327,   327,   327,
+     327,   327,   327,   327,   327,   328,   328,   329,   329,   329,
+     329,   329,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   332,   332,   332,
+     332,   332,   333,   333,   333,   333,   334,   334,   335,   335,
+     336,   336,   336,   337,   337,   338,   338,   338,   338,   339,
+     339,   339,   339,   339,   339,   339,   339,   339,   339,   340,
+     340,   340,   340,   341,   341,   341,   341,   342,   342,   343,
+     343,   344,   344,   344,   344,   344,   344,   344
 };
 
-static const short yydefact[] = {     0,
-     0,     2,     1,     3,     4,     9,    11,     0,     8,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    13,    14,
-    16,    15,     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,
-   298,     0,   303,     0,   300,     0,     0,     0,     0,     0,
-    56,    58,    57,    59,    60,    61,    62,    63,    64,    65,
-    70,    69,    66,    67,    68,     0,     0,    17,    18,    20,
-    19,    21,   435,   435,     0,   413,   417,   470,   208,   414,
-   415,   416,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   209,   210,   211,   212,
-     0,     0,     0,   213,   214,     0,     0,     0,     0,     0,
-     0,     0,   351,     0,     0,   291,     0,   293,     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,   426,     0,     0,
-     0,     0,     0,     0,   269,     0,     0,   269,   344,   345,
-     0,     0,     0,     0,     0,     0,     0,   464,     0,     0,
-     0,     0,     0,   290,     0,   299,     0,   470,   269,     0,
-   269,     0,     5,     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,   420,     0,    75,     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,   417,
-   354,   353,   355,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   219,   287,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   285,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   417,     0,     0,     0,   451,   452,   453,   444,     0,   445,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   428,   427,     0,     0,
-     0,     0,   269,   269,     0,     0,     0,     0,     0,     0,
-     0,   279,     0,     0,     0,     0,   289,     0,     0,     0,
-     0,     0,     0,     0,   269,     0,     0,     0,   301,     0,
-     0,   281,     0,   282,     6,     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,   437,     0,     0,     0,
-     0,     0,   422,     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,   352,     0,     0,   458,   459,     0,     0,   208,
-     0,     0,     0,     0,     0,   215,     0,   369,   368,   366,
-   367,   362,   364,   363,   365,   357,   356,   358,   359,   360,
-   361,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   417,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   430,   429,   268,
-     0,   267,   266,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   275,   270,   343,     0,     0,   277,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   302,     0,   283,   284,     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,   436,     0,     0,    23,
-     0,   418,   424,    75,     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,
-   439,     0,    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,   371,
-   392,   372,   393,   373,   394,   374,   395,   375,   396,   376,
-   397,   377,   398,   378,   399,   379,   400,   391,   412,   380,
-   401,     0,     0,   382,   403,   383,   404,   384,   405,   385,
-   406,   386,   407,   387,   408,     0,     0,     0,     0,     0,
-     0,     0,     0,   473,     0,     0,   472,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   225,     0,     0,     0,
-     0,   419,     0,    71,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   454,     0,     0,     0,     0,   446,
-   448,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   262,   264,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   280,     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,   438,     0,   435,
-     0,   421,     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,    73,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   418,   218,   460,   461,
-     0,     0,     0,     0,     0,   220,   221,   223,     0,     0,
-   468,     0,   229,   370,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   450,   455,     0,   447,     0,
-   236,     0,     0,     0,     0,     0,     0,   336,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   276,     0,     0,     0,     0,   342,
-   278,     0,     0,     0,     0,     0,   439,     0,   465,     0,
-     0,     0,   294,     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,   346,   347,
-   348,   349,   350,     0,     0,     0,     0,     0,     0,     0,
-    22,     0,   423,   286,     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,   442,     0,   207,   381,   402,   388,   409,   389,
-   410,   390,   411,     0,   475,   474,   471,     0,   208,     0,
-     0,     0,     0,   216,     0,     0,     0,   466,    72,     0,
-   233,   239,     0,   241,     0,     0,   237,     0,   238,   260,
-     0,     0,   449,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   288,     0,
-     0,     0,     0,   269,     0,   307,     0,   316,     0,   325,
-     0,     0,     0,     0,     0,     0,   244,   245,     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,   435,   425,    74,     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,   441,     0,   440,     0,     0,
-     0,     0,   226,     0,     0,   227,     0,   469,     0,     0,
-     0,   247,   257,   456,     0,     0,   340,   250,   251,     0,
-     0,     0,     0,   339,   341,   259,   234,   249,   258,   261,
-     0,     0,     0,   434,     0,   433,     0,     0,   304,     0,
-     0,   313,     0,     0,   322,     0,   271,   272,   273,   274,
-     0,     0,   439,     0,     0,     0,   463,     0,   296,   295,
-     0,     0,     0,     0,     0,    25,     0,    34,     0,    38,
-     0,    32,     0,     0,    37,     0,    42,    40,     0,     0,
-     0,     0,     0,     0,    49,     0,     0,     0,     0,     0,
-    54,     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,   443,
-     0,   217,   222,   224,     0,   230,     0,     0,   240,   242,
-   457,     0,     0,     0,   338,   337,   231,   232,   269,     0,
-   265,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   439,     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,   476,     0,   467,     0,     0,     0,
-     0,     0,     0,   432,     0,     0,     0,     0,     0,     0,
-     0,     0,   331,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   462,   297,     0,     0,    39,     0,
-     0,     0,     0,    29,     0,    35,     0,    41,    30,    43,
-     0,    46,     0,    50,    51,     0,     0,    53,     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,   228,     0,     0,     0,
-     0,   263,     0,     0,   309,     0,   335,     0,     0,   332,
-   318,     0,     0,   327,     0,     0,     0,     0,     0,     0,
-   246,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   105,   109,   113,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   201,
-     0,     0,     0,     0,     0,   431,   305,     0,     0,     0,
-   308,   314,     0,     0,   317,   323,     0,     0,   326,   235,
-   248,     0,     0,   252,     0,     0,     0,     0,     0,    33,
-    36,    44,     0,    45,    52,    47,     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,   311,     0,
-     0,   320,     0,   329,     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,   205,     0,
-     0,   254,   253,     0,   306,     0,     0,     0,   315,     0,
-     0,   324,     0,     0,     0,     0,     0,     0,    28,    31,
-     0,     0,     0,   103,     0,   107,     0,   111,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   199,     0,   292,     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,
-   310,     0,     0,   334,   319,     0,   328,     0,     0,     0,
-     0,     0,     0,    48,    24,   104,   106,   108,   110,   112,
-   114,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   200,   202,     0,   203,   243,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   117,   121,   125,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   312,
-   333,   321,   330,     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,   204,
-   206,     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,   256,    10,
-     0,     0,     0,   115,     0,   119,     0,   123,     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,   255,     0,    26,   116,   118,   120,   122,
-   124,   126,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   129,   133,   137,     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,     0,     0,     0,     0,   127,
-     0,   131,     0,   135,     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,   128,   130,   132,   134,   136,   138,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   141,   145,   149,   153,   157,   161,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    27,
-     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,   139,     0,   143,     0,   147,     0,   151,     0,   155,
-     0,   159,     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,   140,   142,   144,   146,   148,   150,   152,   154,
-   156,   158,   160,   162,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   189,
-   193,   197,     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,   187,     0,   191,
-     0,   195,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   188,   190,   192,   194,   196,   198,     0,     0,     0,   177,
-   181,   185,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   175,     0,
-   179,     0,   183,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   176,   178,   180,   182,   184,
-   186,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   165,
-   169,   173,     0,     0,     0,     0,     0,     0,     0,   163,
-     0,   167,     0,   171,     0,     0,     0,     0,     0,     0,
-   164,   166,   168,   170,   172,   174,     0,     0,     0
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     1,     1,     1,     2,     1,     2,     0,     2,
+       1,    21,     1,     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,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     1,     3,     0,    13,     1,     3,
+       0,    13,     1,     3,     0,    13,     1,     3,     0,    19,
+       1,     3,     0,    19,     1,     3,     0,    19,     1,     3,
+       0,    25,     1,     3,     0,    25,     1,     3,     0,    25,
+       1,     3,     0,    31,     1,     3,     0,    31,     1,     3,
+       0,    31,     1,     3,     0,    31,     1,     3,     0,    31,
+       1,     3,     0,    31,     1,     3,     0,    55,     1,     3,
+       0,    55,     1,     3,     0,    55,     1,     3,     0,    43,
+       1,     3,     0,    43,     1,     3,     0,    43,     1,     3,
+       0,    37,     1,     3,     0,    37,     1,     3,     0,    37,
+       1,     3,     0,    13,     1,     3,     0,    15,     4,     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,    14,    14,    22,    20,     8,     8,
+       8,     7,     8,     5,    11,     5,     9,     1,     1,     1,
+       0,     2,     6,     6,     6,     6,     4,     6,     4,     6,
+       3,     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,     4,
+       4,     2,     5,     3,     6,     4,     7,     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,     6,     4,     4,     6,     6,     9
 };
 
-static const short yydefgoto[] = {  2357,
-   215,     2,     9,     3,    19,    20,    21,    22,     4,    71,
-    72,    73,   445,  1673,   663,  1578,  1675,   664,  1579,  1677,
-   665,  1580,  1893,   666,  1839,  1895,   667,  1840,  1897,   668,
-  1841,  2029,   669,  1991,  2031,   670,  1992,  2033,   671,  1993,
-  2141,   672,  2111,  2143,   673,  2112,  2145,   674,  2113,  2147,
-   675,  2114,  2149,   676,  2115,  2151,   677,  2116,  2339,   678,
-  2333,  2341,   679,  2334,  2343,   680,  2335,  2288,   681,  2276,
-  2290,   682,  2277,  2292,   683,  2278,  2237,   684,  2219,  2239,
-   685,  2220,  2241,   686,  2221,  1700,   687,  1602,  1795,   688,
-  1702,   689,   140,   252,    74,   575,   345,   561,   562,   346,
-    78,    79,    80,    81,    82,   347,  1230,  1548,  1656,  1233,
-  1553,  1660,  1236,  1557,  1663,  1412,  1413,    84,    85,  1004,
-   348,   143,   367,   178,   247,   438,   883,  1042,  1043,   350,
-   498,   200,   751,   912,   144
+/* 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,     3,     2,     4,     5,     1,    10,    12,
+       0,     9,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    14,    15,    17,    16,     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,   299,     0,   304,     0,   301,     0,     0,
+       0,     0,     0,    57,    59,    58,    60,    61,    62,    63,
+      64,    65,    66,    71,    70,    67,    68,    69,     0,     0,
+      18,    19,    21,    20,    22,   436,   436,     0,   414,   418,
+     471,   209,   415,   416,   417,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   213,
+     212,   211,   210,     0,     0,     0,   215,   214,     0,     0,
+       0,     0,     0,     0,     0,   352,     0,     0,   292,     0,
+     294,     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,
+     427,     0,     0,     0,     0,     0,     0,   270,     0,     0,
+     270,   345,   346,     0,     0,     0,     0,     0,     0,     0,
+     465,     0,     0,     0,     0,     0,   291,     0,   300,     0,
+     471,   270,     0,   270,     0,     6,     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,   421,     0,    76,     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,   418,   355,   354,   356,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   220,   288,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   286,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   418,     0,     0,     0,   452,   453,   454,
+     445,     0,   446,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   429,
+     428,     0,     0,     0,     0,   270,   270,     0,     0,     0,
+       0,     0,     0,     0,   280,     0,     0,     0,     0,   290,
+       0,     0,     0,     0,     0,     0,     0,   270,     0,     0,
+       0,   302,     0,     0,   282,     0,   283,     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,   438,
+       0,     0,     0,     0,     0,   423,     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,   353,     0,     0,   459,   460,
+       0,     0,   209,     0,     0,     0,     0,     0,   216,     0,
+     370,   369,   368,   367,   363,   364,   366,   365,   358,   357,
+     359,   360,   361,   362,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   418,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     431,   430,   269,     0,   268,   267,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   276,   271,   344,     0,
+       0,   278,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   303,     0,   284,   285,     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,   437,
+       0,     0,    24,     0,   419,   425,    76,     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,   440,     0,    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,   372,   393,   373,   394,   374,   395,   375,   396,
+     376,   397,   377,   398,   378,   399,   379,   400,   380,   401,
+     392,   413,   381,   402,     0,     0,   383,   404,   384,   405,
+     385,   406,   386,   407,   387,   408,   388,   409,     0,     0,
+       0,     0,     0,     0,     0,     0,   474,     0,     0,   473,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   226,
+       0,     0,     0,     0,   420,     0,    72,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   455,     0,     0,
+       0,     0,   447,   449,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   263,   265,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   281,     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,
+     439,     0,   436,     0,   422,     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,   440,    74,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   419,
+     219,   461,   462,     0,     0,     0,     0,     0,   221,   222,
+     224,     0,     0,   469,     0,   230,   371,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   451,   456,
+       0,   448,     0,   237,     0,     0,     0,     0,     0,     0,
+     337,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   277,     0,     0,
+       0,     0,   343,   279,     0,     0,     0,     0,     0,   440,
+       0,   466,     0,     0,     0,   295,     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,   347,   348,   349,   350,   351,     0,     0,     0,     0,
+       0,     0,     0,    23,     0,   424,   287,     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,   443,     0,     0,   382,   403,
+     389,   410,   390,   411,   391,   412,     0,   476,   475,   472,
+       0,   209,     0,     0,     0,     0,   217,     0,     0,     0,
+     467,    73,     0,   234,   240,     0,   242,     0,     0,   238,
+       0,   239,   261,     0,     0,   450,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   289,     0,     0,     0,     0,   270,     0,   308,     0,
+     317,     0,   326,     0,     0,     0,     0,     0,     0,   245,
+     246,     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,   436,
+     426,    75,     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,   442,     0,
+     441,   208,     0,     0,     0,     0,   227,     0,     0,   228,
+       0,   470,     0,     0,     0,   248,   258,   457,     0,     0,
+     341,   251,   252,     0,     0,     0,     0,   340,   342,   260,
+     235,   250,   259,   262,     0,     0,     0,   435,     0,   434,
+       0,     0,   305,     0,     0,   314,     0,     0,   323,     0,
+     272,   273,   274,   275,     0,     0,   440,     0,     0,     0,
+     464,     0,   297,   296,     0,     0,     0,     0,     0,    26,
+       0,    35,     0,    39,     0,    33,     0,     0,    38,     0,
+      43,    41,     0,     0,     0,     0,     0,     0,    50,     0,
+       0,     0,     0,     0,    55,     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,   444,     0,   218,   223,   225,     0,   231,
+       0,     0,   241,   243,   458,     0,     0,     0,   339,   338,
+     232,   233,   270,     0,   266,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   440,     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,   477,     0,
+     468,     0,     0,     0,     0,     0,     0,   433,     0,     0,
+       0,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   463,   298,
+       0,     0,    40,     0,     0,     0,     0,    30,     0,    36,
+       0,    42,    31,    44,     0,    47,     0,    51,    52,     0,
+       0,    54,     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,
+     229,     0,     0,     0,     0,   264,     0,     0,   310,     0,
+     336,     0,     0,   333,   319,     0,     0,   328,     0,     0,
+       0,     0,     0,     0,   247,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   106,
+     110,   114,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   202,     0,     0,     0,     0,     0,   432,
+     306,     0,     0,     0,   309,   315,     0,     0,   318,   324,
+       0,     0,   327,   236,   249,     0,     0,   253,     0,     0,
+       0,     0,     0,    34,    37,    45,     0,    46,    53,    48,
+       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,   312,     0,     0,   321,     0,   330,     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,   206,     0,     0,   255,   254,     0,   307,     0,
+       0,     0,   316,     0,     0,   325,     0,     0,     0,     0,
+       0,     0,    29,    32,     0,     0,     0,   104,     0,   108,
+       0,   112,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   200,     0,   293,     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,   311,     0,     0,   335,   320,     0,
+     329,     0,     0,     0,     0,     0,     0,    49,    25,   105,
+     107,   109,   111,   113,   115,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   201,   203,     0,   204,
+     244,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     118,   122,   126,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   313,   334,   322,   331,     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,   205,   207,     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,   257,    11,     0,     0,     0,   116,     0,   120,
+       0,   124,     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,   256,     0,    27,
+     117,   119,   121,   123,   125,   127,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   130,   134,   138,     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,     0,
+       0,     0,     0,   128,     0,   132,     0,   136,     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,   129,   131,   133,   135,
+     137,   139,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   142,   146,
+     150,   154,   158,   162,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    28,     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,   140,     0,   144,     0,   148,
+       0,   152,     0,   156,     0,   160,     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,   141,   143,   145,   147,
+     149,   151,   153,   155,   157,   159,   161,   163,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   190,   194,   198,     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,   188,     0,   192,     0,   196,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   189,   191,   193,   195,   197,   199,
+       0,     0,     0,   178,   182,   186,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   176,     0,   180,     0,   184,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   177,
+     179,   181,   183,   185,   187,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   166,   170,   174,     0,     0,     0,     0,
+       0,     0,     0,   164,     0,   168,     0,   172,     0,     0,
+       0,     0,     0,     0,   165,   167,   169,   171,   173,   175
 };
 
-static const short yypact[] = {  2757,
-    34,   273,   415,  3188,-32768,-32768,-32768,  -120,-32768,    88,
-   110,   128,   132,   161,   180,   149,   186,   217,-32768,-32768,
--32768,-32768,  2356,   220,    68,   183,   230,   263,   290,   -37,
-   262,   300,   303,   168,   319,   336,   363,   425,   434,   428,
-   500,   151,   364,   360,  -101,  -101,   393,   283,     8,   541,
-    10,   543,   609,   115,   639,   445,   467,   -15,    15,    77,
--32768,   485,-32768,   682,-32768,   706,   714,   671,    17,    20,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,    23,  2949,-32768,-32768,-32768,
--32768,-32768,   527,   527,   727,-32768,   279,    16,-32768,-32768,
--32768,-32768,  -165,   -57,   162,   190,   214,   282,   304,   318,
-   330,   351,   375,   378,   381,   382,   390,   391,   395,   396,
-   399,   417,   460,   537,   542,   548,-32768,-32768,-32768,-32768,
-  2492,  2492,  2492,-32768,-32768,  2492,   993,    28,   749,  2492,
-   758,   680,-32768,   767,   774,-32768,  2492,-32768,  2492,  2492,
-  2492,   581,  2492,   608,  2492,  2492,   610,  2492,   588,   627,
-   629,  -124,   610,   623,   624,   632,   664,   674,   675,   676,
-   811,  -101,  -101,  -101,  2492,  2492,   -77,-32768,   -28,  -101,
-   670,   677,   678,   679,-32768,   610,    18,-32768,-32768,-32768,
-   610,   610,   875,  2492,  2492,   -74,  2492,   683,  2492,   697,
-   793,  2492,  2492,-32768,   879,-32768,   707,-32768,-32768,   909,
--32768,   922,-32768,   926,    23,   737,   747,   751,   755,   771,
-   772,   773,   775,   790,   791,   799,   800,   801,   802,   827,
-   828,   829,   830,   831,   832,   834,   835,   836,   837,   839,
-   840,   841,   842,   843,   844,   947,   768,   776,   787,  2492,
-  1041,-32768,  -101,-32768,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,    85,    65,    65,   311,
-   849,   849,   849,   753,  1047,  2390, 10648,   170,   845,  1057,
-   870,   710,-32768,-32768,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,-32768,
-  -139,  3652, 11348, 11371, 11394,  2492, 11417,  2492, 11440, 11463,
-   329,   866,  1622,  2390,-32768,-32768,-32768,   871,  1066,-32768,
- 11486,  2492,  2492,  2492,  2492,  2492,  1067,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,   881,   -82,-32768,-32768,  3674,  3696,
-  -101,  -101,   365,   365,     3,  2492,  2492,  2492,  2492,  2624,
-   278,-32768,  2492,  2661,  1068,  1072,-32768, 11509, 11532,   976,
-  2492, 11555,   975,  3718,-32768,   878,  1827, 11578,-32768,  2492,
-  2887,-32768,  2923,-32768,-32768,    23,  1080,  1081,  1082,  1083,
-  1084,  1085,  1086,  1089,  1090,  1091,  1092,  1093,  1094,  1095,
-  1096,  1098,  1102,  1103,  1106,  1107,  1108,  1109,  1111,   951,
-  1112,  1113,  1114,  1115,  1122,  1121,-32768,    -5,  1123,  1124,
-  1126, 10673,  -104,    14,  3058, 11601, 10698, 11624, 10723, 11647,
- 10748, 11670, 10773, 11693, 10798, 11716, 10823, 11739, 10848, 11762,
- 10873, 11785, 10898, 11808, 10923, 11831, 10948,  3740,  3762, 11854,
- 10973, 11877, 10998, 11900, 11023, 11923, 11048, 11946, 11073, 11969,
- 11098,  3784,  3806,  3828,  3850,  3872,  3894,   459,   119,   927,
-   934,  2492,-32768,   610,  2587,   871,-32768,   458,   175,    65,
-  2492,  1129,  1132,    19,   925,-32768,  1940,   466,   796,   419,
-   419,   254,   254,   254,   254,   345,   345,   849,   849,   849,
-   849,  1157,  2390,  2492,  1158,  1159,  1160, 11992,  1161, 12015,
-  1162,  1163,  1217,  2492,   343,  2390,   462,  2492,  2492,  1164,
-  1344, 12038, 12061, 12084,  2385,  2492,  3151,  3175, 12107, 12130,
- 12153, 12176, 12199,   961,  -101,  2492,  2492,-32768,-32768,-32768,
-   965,  3273,-32768,   966,  2492,  3916,  3938,  3960, 11123,   -84,
-   -36,   -19,   -40,-32768,-32768,-32768,  2492, 11148,-32768,   968,
-   969,  1170,  1171,   980, 12222,  1173,   981,  2492,  2957,  2492,
-  2492,-32768, 12245,-32768,-32768,  1015,   983,   984,   985,   986,
-   988,   989,   991,   995,   996,   998,   999,  1000,  1001,  1002,
-  1003,  1004,  1005,  1006,  1007,  1008,  1009,  1012,  1013,  1014,
-  1017,  1019,  1048,  1049,  1050,  1075,-32768,  1181,  1052,-32768,
-  1076,   113,-32768,-32768,  1088,  1099,  1100,  1105,  1118,  1119,
-  1125,  1127,  1128,  1131,  1133,  1134,  1135,  1136,  1138,  1139,
-  1140,  1141,  1143,  1144,  1146,  1174,  1177,  1179,  1180,  1182,
-   -31,  1192,-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,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  2492,  2492,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  1293,-32768,  2390,    65,-32768, 11173,  1300,  2390,
-  1110,    56,  2492,  1302,  1304,   732,-32768,  1307,  1120,    15,
-  1314,-32768,  2492,-32768,   159,  3982,  -101,   610,   610,  1315,
-   610,  1316,   610,   610,-32768,  2390,  3209,  1247,   471,-32768,
-  2246,   777,  1187,  1318,  1378,  1379,  1380,  1396,   306,  1397,
-  1400,  1402,  1403,  1405,  1406,  1407,  1411,   129,  4004,  4026,
--32768,-32768,  3240,  -101,  -101,  -101,  1412,  2390,  2390,  2390,
-  2390,  1104,  1414,  2492,  2492,   610,   610,  2492,  1410,   610,
-  1418,  4048,-32768,  2450,   570,  1417,  1254,  1423,  2492,  2492,
-  -101,  1424,  1425,  1239,  1427,  1428,   610,   610,  1429,  -101,
-  1430,  1434,   610,   610,  1435,  1436,  1437,  1439,  1440,   610,
-   444,   610,  1441,  1442,  1443,  1447,  1449,-32768,  1448,   527,
-  1451,-32768,  1450,  3092,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-   610,   610,  1452,-32768, 12268, 11198, 12291, 11223, 12314, 11248,
- 12337, 11273, 11298,  1245,   167,  1257,   325,-32768,   871,-32768,
-    30,   206,  1256,  1453,  1210,-32768,-32768,-32768,    15,  2492,
--32768,   472,-32768, 13211,  1455,  2492,    21,    33,    53,   610,
-  1456,   610,  1458,  1459,   475,-32768,-32768,  2390,-32768,  2492,
--32768,  2492,   610,   610,   610,  1267,  1268,-32768,   451,   610,
-   610,   610,   610,   610,   610,   610,   534,  2492,  2492,  2492,
-  1262,  -111,  -103,   -49,-32768,   476,   480,   486,   487,-32768,
--32768,  4070,  4092,  1464,  1465, 12360,   -31,  1366,-32768,  2492,
-  2492,  2492,-32768,  1269,  1309,  1272,  4114,  4136,  -121,  1273,
-  1274,  1275,  1279,  1276,  1282,  1280,  1283,   169,  1284,  1287,
-  1290,  1286,  1288,  1289,  1312,  1322,  1332,  1292,-32768,-32768,
--32768,-32768,-32768,  1333,  1334,  1335,  1336,  1338,  1295,  1339,
--32768,  1340,  -104,-32768,  1478,  4158,  4180,  4202,  4224,  4246,
-  4268,  4290,  4312,  4334,  4356,  4378,  4400,  4422,  4444,  4466,
-  4488,  4510,  4532,  4554,  4576,  4598,  4620,  4642,  4664,  4686,
-  4708,   199,-32768,   490,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,  1317,-32768,-32768,-32768,   610,    65,  2492,
-  1515,  1558,    19,-32768,  1557, 11323,    15,-32768,-32768,  4730,
--32768,-32768,  -101,-32768,  -101,  1561,-32768,  1562,-32768,-32768,
-  1362,   491, 13211,  4752,  1563,  1564,  1566,  2492,  2492,  2492,
-  2492,  1567,  1568,  1569,  1570,  1571,  1572,  1573,-32768,  2458,
-  3264, 12383,  2656,   365,  -101,  1575,  -101,  1576,  -101,  1579,
-  1580,  1581,  1582,  1583,  2492,  2492,-32768,-32768,  1584,  1483,
-   610,  2859,   269, 12406,  2492,    23,  1589,  2492,   610,  1587,
-  1592,  1590,  1438,  1591,   444,  1621,  1595,  2492,  1623,  1657,
-  1664,  1665,  1669,   444,  2492,  2492,  2492,   610,  1668,  1673,
-   444,  2492,  1674,  1675,  1676,  2492,   527,-32768,-32768,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,-32768,   610,-32768,  1679,  1678,
-  1680,  1368,-32768,  1681,  1683,-32768,  1482,-32768,  2492,    29,
-    91,-32768,-32768,-32768,  1485,  2492,-32768,-32768,-32768,  4774,
-  4796,  1477,  1555,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-  1577,  1684,  1474,-32768,  2492,-32768,  1486,   198,-32768,  1488,
-   205,-32768,  1489,   207,-32768,  1490,-32768,-32768,-32768,-32768,
-  4818,  4840,   -31,  1492,  1588,  2492,-32768,  2492,-32768,-32768,
-  4862,    23,  1500,  4884,  1497,-32768,  1519,-32768,  1520,-32768,
-  1526,-32768,  1522, 12429,-32768,  1523,-32768,-32768,  1529,  1530,
- 12452,  4906, 12475,  1527,-32768,  1531,  1538,  4928,  1543,  1550,
--32768,  4950,  1546,  4972,  4994,  5016,  5038,  5060,  5082,  5104,
-  5126,  5148,  5170,  5192,  5214,  5236,  5258,  5280,  5302,  5324,
-  5346,  5368,  5390,  5412,  5434,  5456,  5478,  5500,  5522,-32768,
-  1552,-32768,-32768,-32768,    15,-32768,  1645,  5544,-32768,-32768,
--32768,  5566,  2492,  2492,-32768,-32768,-32768,-32768,   365,  3015,
--32768,  1862,   350,  1862,   350,  1862,   350,  2492,  2492,  1663,
-   610,  2492,  3288,  3312,   610,    23,  1765,   -31,   444,  1769,
-  2492,  1767,   444,  1768,  1773,  1771,  1772,  1775,  2492,  1776,
-   610,  1777,  1778,  2492,  1782,  1780,  2492,  1800,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,-32768,  1801,-32768,  2492,  1803, 12498,
- 12521,  1599,  2492,-32768,  1862,  1862,  2492,  3336,   209,  1806,
-  1603,   -34,-32768,  3360,   219,   -26,  3384,   232,   -24,  3408,
-  3432,  1607,  1609,  1743,-32768,-32768,  1608,  1650,-32768,  1613,
-  1614,  1615,  5588,-32768,  1624,-32768,  1625,-32768,-32768,-32768,
- 12544,-32768,  1617,-32768,-32768, 12567,  1627,-32768, 12590,  1618,
- 12613, 12636, 12659,  5610,  5632,  5654,  5676,  5698,  5720,  5742,
-  5764,  5786,  5808,  5830,  5852,  5874,  5896,  5918,  5940,  5962,
-  5984,  6006,  6028,  6050, 12682,  6072,-32768,  6094,  1626,   610,
-   610,-32768,  3456,  3624,  1823,  2492,-32768,   610,  1824,-32768,
-  1826,  2492,  1828,  1830,  2492,  1831,  1832,  1834,   610,   610,
--32768,  1835,    23,   444,   444,   444,   444,  1836,  1837,  1861,
-   444,  1863,  1864,  1889,  1891,-32768,-32768,-32768,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,-32768,
-  2492,  2492,  1893,   610,   610,-32768,-32768,  1662,  3480,  1628,
--32768,-32768,  1694,  3504,-32768,-32768,  1720,  3528,-32768,-32768,
--32768,  1731,  1730,-32768,    23,  1733,  1734,  1740,  1742,-32768,
--32768,-32768,  1738,-32768,-32768,-32768,  1739,  1741,  1744,  1745,
-  6116,  6138,  6160,  6182,  6204,  6226,  6248,  6270,  6292,  6314,
-  6336,  6358,  6380,  6402,  6424,  6446,  6468,  6490,  6512,  6534,
-  6556,  1761, 12705,  3552,  1763,  1939,  1943,   350,  1963,   610,
-   350,  1964,   350,  1965,   610,  1842,    23,   444,   444,  1966,
-  1967,   444,  1969,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,    65,-32768,  1970,
-  1972,-32768,-32768,   -22,-32768,  1774,   494,   -10,-32768,  1779,
-    -9,-32768,  1804,  1813,  1815,  1808,  1781,  1817,-32768,-32768,
-  1783,  1784,   495, 13211,   506, 13211,   514, 13211,  6578,  6600,
-  6622,  6644,  6666,  6688,  6710,  6732,  6754,  6776,  6798,  6820,
-  6842,  6864,  6886,  6908,  6930,  6952,  6974,  6996,  7018,   517,
--32768,  1818,-32768,  1816,  1973,   350,   610,  1975,  1976,   350,
-  2020,   350,  1874,  2492,    23,   444,   610,  2021,  2023,  2492,
-  2025,  2492,  2027,  2492,  2043,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,    65,  2046,    65,  2047,
--32768,     4,  1847,-32768,-32768,    74,-32768,    83,  1849,  7040,
-    23,  1852,  1853,-32768,-32768, 13211,-32768, 13211,-32768, 13211,
--32768, 12728, 12751, 12774,  7062,  7084,  7106,  7128,  7150,  7172,
-  7194,  7216,  7238,  7260,  7282,  7304,  7326,  7348,  7370,  7392,
-  7414,  7436,-32768,-32768,   518,-32768,-32768,  2053,  2054,  2056,
-  2057,  2492,  2492,    23,   444,   610,-32768,-32768,-32768,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,    65,  2058,-32768,
--32768,-32768,-32768,  7458,  3576,  1895,  1860,  1865,  1866,  1867,
-  1868,  7480,  7502,  7524,  7546,  7568,  7590,  7612,  7634,  7656,
-  7678,  7700,  7722,  7744,  7766,  7788,  7810,  7832,  7854,-32768,
--32768,  2492,  2063,  1898,   610,   444,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  3600,-32768,-32768,
-  1870,  1876,   522, 13211,   526, 13211,   532, 13211,  7876,  7898,
-  7920,  7942,  7964,  7986,  8008,  8030,  8052,  8074,  8096,  8118,
-  8140,  8162,  8184,  8206,  8228,  8250,  2071,   610,  2081,  2492,
-  2082,  2492,  2083,  2492,  2084,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,-32768,  1886,-32768, 13211,-32768, 13211,-32768,
- 13211,-32768, 12797, 12820, 12843,  8272,  8294,  8316,  8338,  8360,
-  8382,  8404,  8426,  8448,  8470,  8492,  8514,  8536,  8558,  8580,
-   610,-32768,-32768,-32768,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  1887,
-  1888,  1890,  1892,  8602,  8624,  8646,  8668,  8690,  8712,  8734,
-  8756,  8778,  8800,  8822,  8844,  8866,  8888,  8910,   610,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  1894,   535, 13211,
-   539, 13211,   564, 13211,  8932,  8954,  8976,  8998,  9020,  9042,
-  9064,  9086,  9108,  9130,  9152,  9174,  9196,  9218,  9240,   444,
-  2492,  2087,  2492,  2089,  2492,  2091,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  1900, 13211,-32768, 13211,-32768, 13211,-32768, 12866, 12889,
- 12912, 12935, 12958, 12981,  9262,  9284,  9306,  9328,  9350,  9372,
-  9394,  9416,  9438,  2095,-32768,-32768,-32768,-32768,-32768,-32768,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,-32768,
-  1896,  1917,  1927,  1928,  1929,  1930,  9460,  9482,  9504,  9526,
-  9548,  9570,  9592,  9614,  9636,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-   567, 13211,   579, 13211,   582, 13211,   583, 13211,   586, 13211,
-   595, 13211,  9658,  9680,  9702,  9724,  9746,  9768,  9790,  9812,
-  9834,  2492,  2131,  2492,  2134,  2492,  2136,  2492,  2138,  2492,
-  2140,  2492,  2142,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
-  2492,  2492, 13211,-32768, 13211,-32768, 13211,-32768, 13211,-32768,
- 13211,-32768, 13211,-32768,  9856,  9878,  9900,  9922,  9944,  9966,
- 13004, 13027, 13050,  2492,  2492,  2492,  2492,  2492,  2492,-32768,
--32768,-32768,  9988, 10010, 10032, 10054, 10076, 10098,  1944,  1954,
-  1955,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2492,
- 10120, 10142, 10164, 10186, 10208, 10230,   598, 13211,   601, 13211,
-   605, 13211,  2492,  2492,  2492,  2492,  2492,  2492,  2492,  2156,
-  2492,  2157,  2492,  2158, 10252, 10274, 10296, 13073, 13096, 13119,
- 13211,-32768, 13211,-32768, 13211,-32768,  2492,  2492,  2492,-32768,
--32768,-32768, 10318, 10340, 10362,  1959,  1962,  1968,  2492,  2492,
-  2492,  2492,  2492,  2492, 10384, 10406, 10428,   606, 13211,   612,
- 13211,   613, 13211,  2492,  2492,  2492,  2492,  2164,  2492,  2167,
-  2492,  2169, 10450, 10472, 10494, 13211,-32768, 13211,-32768, 13211,
--32768,  2492,  2492,  2492, 10516, 10538, 10560,  2492,  2492,  2492,
- 10582, 10604, 10626,  2492,  2492,  2492, 13142, 13165, 13188,-32768,
--32768,-32768,  1971,  1974,  1981,  2492,  2492,  2492,   616, 13211,
-   617, 13211,   620, 13211,  2492,  2170,  2492,  2172,  2492,  2173,
- 13211,-32768, 13211,-32768, 13211,-32768,  2188,  2189,-32768
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short yydefgoto[] =
+{
+      -1,     2,   217,     3,    11,     4,    21,    22,    23,    24,
+       5,    73,    74,    75,   447,  1676,   665,  1581,  1678,   666,
+    1582,  1680,   667,  1583,  1896,   668,  1842,  1898,   669,  1843,
+    1900,   670,  1844,  2032,   671,  1994,  2034,   672,  1995,  2036,
+     673,  1996,  2144,   674,  2114,  2146,   675,  2115,  2148,   676,
+    2116,  2150,   677,  2117,  2152,   678,  2118,  2154,   679,  2119,
+    2342,   680,  2336,  2344,   681,  2337,  2346,   682,  2338,  2291,
+     683,  2279,  2293,   684,  2280,  2295,   685,  2281,  2240,   686,
+    2222,  2242,   687,  2223,  2244,   688,  2224,  1703,   689,  1605,
+    1798,   690,  1705,   691,   142,   254,    76,   577,   347,   563,
+     564,   348,    80,    81,    82,    83,    84,   349,  1233,  1551,
+    1659,  1236,  1556,  1663,  1239,  1560,  1666,  1415,  1416,    86,
+      87,  1006,   350,   145,   369,   180,   249,   440,   885,  1044,
+    1045,   352,   500,   202,   753,   914,   146
 };
 
-static const short yypgoto[] = {-32768,
-  -131,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  1556,-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,
--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,-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,  -300,   -20,-32768,  2187,     0,  -369,  -167,     2,
--32768,-32768,-32768,-32768,-32768,  2190,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768, -1322, -1347,-32768,-32768, -1071,
-   -23,-32768,   -29,-32768,   -87,-32768,  -956,  1310,  1408,  -213,
-  -335,  -740,  1130,-32768,   -68
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -1378
+static const short yypact[] =
+{
+    2760,    42,    34,   276,   273,  3239, -1378, -1378, -1378, -1378,
+    -107, -1378,   122,    64,   134,   169,   210,   285,    12,    87,
+     135, -1378, -1378, -1378, -1378,  2357,   145,    69,   312,   148,
+     159,   163,   -37,   243,   168,   207,   277,   246,   358,   407,
+     425,   443,   476,   453,   283,   263,   293,   -88,   -88,   314,
+     360,     9,   466,    15,   544,   551,   156,   528,   336,   341,
+     -13,    16,    18, -1378,   350, -1378,   560, -1378,   570,   574,
+     556,    22,    68, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,    23,  3069,
+   -1378, -1378, -1378, -1378, -1378,   401,   401,   661, -1378,  -114,
+      17, -1378, -1378, -1378, -1378,  -155,  -115,   115,   158,   196,
+     280,   303,   329,   342,   376,   396,   397,   417,   445,   463,
+     464,   496,   497,   500,   501,   512,   413,   420,   470, -1378,
+   -1378, -1378, -1378,  2493,  2493,  2493, -1378, -1378,  2493,   992,
+      39,   666,  2493,   682,   469, -1378,   685,   689, -1378,  2493,
+   -1378,  2493,  2493,  2493,   511,  2493,   527,  2493,  2493,   611,
+    2493,   557,   533,   536,   -62,   611,   558,   573,   561,   581,
+     584,   591,   595,   769,   -88,   -88,   -88,  2493,  2493,   -83,
+   -1378,   -67,   -88,   592,   610,   624,   555, -1378,   611,    19,
+   -1378, -1378, -1378,   611,   611,   797,  2493,  2493,   -65,  2493,
+     628,  2493,   659,   770,  2493,  2493, -1378,   879, -1378,   690,
+   -1378, -1378,   906, -1378,   918, -1378,   925,    23,   734,   746,
+     747,   753,   754,   755,   756,   757,   758,   759,   760,   776,
+     777,   778,   779,   783,   784,   785,   786,   787,   788,   789,
+     790,   791,   793,   794,   798,   799,   801,   826,   946,   821,
+     781,   822,  2493,  1024, -1378,   -88, -1378,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,    63,
+      56,    56,   311,   831,   831,   831,  1296,  1023,  2391, 11342,
+     174,   828,  1028,   833,   712, -1378, -1378,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493, -1378,  -141,  3710,  2249, 11930, 11953,  2493, 11976,
+    2493, 11999, 12022,   328,   830,  1627,  2391, -1378, -1378, -1378,
+     872,  1031, -1378, 12045,  2493,  2493,  2493,  2493,  2493,  1032,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,   840,     5, -1378,
+   -1378,  3734,  3758,   -88,   -88,   529,   529,   202,  2493,  2493,
+    2493,  2493,  2625,   109, -1378,  2493,  2794,  1034,  1035, -1378,
+   12068, 12091,   937,  2493, 12114,   939,  3782, -1378,   839,  1828,
+   12137, -1378,  2493,  2890, -1378,  2925, -1378, -1378,    23,  1043,
+    1044,  1048,  1066,  1067,  1068,  1069,  1070,  1074,  1076,  1077,
+    1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,  1089,
+    1090,  1091,   940,  1092,  1094,  1095,  1096,  1100,  1102, -1378,
+    -120,  1103,  1104,  1107, 11363,    11,   -28,  2990, 12160, 11384,
+   12183, 11405, 12206, 11426, 12229, 11447, 12252, 11468, 12275, 11489,
+   12298, 11510, 12321, 11531, 12344, 11552, 12367, 11573, 12390, 11594,
+    3806,  3830, 12413, 11615, 12436, 11636, 12459, 11657, 12482, 11678,
+   12505, 11699, 12528, 11720,  3854,  3878,  3902,  3926,  3950,  3974,
+     513,   -93,   904,   913,  2493, -1378,   611,  2588,   872, -1378,
+     356,   189,    56,  2493,  1108,  1112,    20,   915, -1378,  1941,
+     731,   495,   419,   419,   381,   381,   381,   381,   354,   354,
+     831,   831,   831,   831,  1113,  2391,  2493,  1111,  1114,  1118,
+   12551,  1120, 12574,  1121,  1123,  1218,  2493,   359,  2391,   514,
+    2493,  2493,  1124,  2386, 12597, 12620, 12643,  3062,  2493,  3210,
+    3242, 12666, 12689, 12712, 12735, 12758,   917,   -88,  2493,  2493,
+   -1378, -1378, -1378,   927,  3272, -1378,   928,  2493,  3998,  4022,
+    4046, 11741,   -57,   -43,   -15,   113, -1378, -1378, -1378,  2493,
+   11762, -1378,   926,   930,  1156,  1157,   966, 12781,  1159,   964,
+    2493,  2991,  2493,  2493, -1378, 12804, -1378, -1378,   998,   965,
+     967,   968,   969,   970,   971,   973,   974,   977,   978,   980,
+     982,   983,   984,   985,   987,   988,   990,   994,   995,   996,
+     997,   999,  1003,  1018,  1049,  1050,  1051,  1093,  1106, -1378,
+    1164,  1053, -1378,  1110,   149, -1378, -1378,   972,  1087,  1101,
+    1119,  1122,  1125,  1126,  1127,  1128,  1129,  1132,  1134,  1135,
+    1136,  1137,  1139,  1140,  1141,  1142,  1144,  1145,  1147,  1175,
+    1176,  1180,  1181,   182,  1191, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378,  2493,  2493, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  1277, -1378,  2391,    56, -1378,
+   11783,  1276,  2391,  1097,    49,  2493,  1299,  1301,   752, -1378,
+    1302,  1185,    16,  1307, -1378,  2493, -1378,   -50,  4070,   -88,
+     611,   611,  1312,   611,  1315,   611,   611, -1378,  2391,  3268,
+    1248,   517, -1378,  2451,   782,  1117,  1375,  1380,  1381,  1385,
+    1397,   305,  1398,  1401,  1403,  1404,  1406,  1408,  1412,  1410,
+     205,  4094,  4118, -1378, -1378,  3294,   -88,   -88,   -88,  1415,
+    2391,  2391,  2391,  2391,  1027,  1417,  2493,  2493,   611,   611,
+    2493,  1418,   611,  1422,  4142, -1378,  2520,   684,  1420,  1257,
+    1426,  2493,  2493,   -88,  1427,  1428,  1242,  1430,  1431,   611,
+     611,  1432,   -88,  1435,  1437,   611,   611,  1438,  1440,  1441,
+    1442,  1443,   611,   455,   611,  1445,  1444,  1446,  1450,  1452,
+   -1378,  1451,   401,  1454, -1378,  1453,  3060,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,   611,   611,   182, -1378, 12827, 11804, 12850,
+   11825, 12873, 11846, 12896, 11867, 11888,  1256,   -41,  1260,   -30,
+   -1378,   872, -1378,    28,   362,  1258,  1455,  1105, -1378, -1378,
+   -1378,    16,  2493, -1378,   518, -1378, 13770,  1457,  2493,    25,
+      26,    31,   611,  1459,   611,  1460,  1461,   522, -1378, -1378,
+    2391, -1378,  2493, -1378,  2493,   611,   611,   611,  1269,  1270,
+   -1378,   380,   611,   611,   611,   611,   611,   611,   611,   467,
+    2493,  2493,  2493,  1265,  -111,   -69,   191, -1378,   526,   531,
+     534,   535, -1378, -1378,  4166,  4190,  1466,  1471, 12919,   182,
+    1383, -1378,  2493,  2493,  2493, -1378,  1286,  1326,  1290,  4214,
+    4238,   282,  1313,  1324,  1331,  1337,  1333,  1339,  1335,  1356,
+     317,  1357,  1342,  1344,  1358,  1359,  1362,  1363,  1364,  1365,
+    1371, -1378, -1378, -1378, -1378, -1378,  1368,  1369,  1370,  1372,
+    1373,  1376,  1374, -1378,  1377,    11, -1378,  1574,  4262,  4286,
+    4310,  4334,  4358,  4382,  4406,  4430,  4454,  4478,  4502,  4526,
+    4550,  4574,  4598,  4622,  4646,  4670,  4694,  4718,  4742,  4766,
+    4790,  4814,  4838,  4862,   -35, -1378,   539,  1577, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378,  1382, -1378, -1378, -1378,
+     611,    56,  2493,  1578,  1583,    20, -1378,  1582, 11909,    16,
+   -1378, -1378,  4886, -1378, -1378,   -88, -1378,   -88,  1584, -1378,
+    1585, -1378, -1378,  1390,   542, 13770,  4910,  1587,  1588,  1590,
+    2493,  2493,  2493,  2493,  1591,  1592,  1593,  1620,  1621,  1622,
+    1623, -1378,  2459,  3320, 12942,  1211,   529,   -88,  1626,   -88,
+    1628,   -88,  1654,  1658,  1670,  1671,  1673,  2493,  2493, -1378,
+   -1378,  1676,  1526,   611,  2551,   269, 12965,  2493,    23,  1681,
+    2493,   611,  1679,  1683,  1682,  1497,  1684,   455,  1685,  1686,
+    2493,  1687,  1691,  1689,  1690,  1694,   455,  2493,  2493,  2493,
+     611,  1693,  1698,   455,  2493,  1700,  1722,  1720,  2493,   401,
+   -1378, -1378,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493, -1378,   611,
+   -1378, -1378,  1723,  1724,  1725,  1367, -1378,  1721,  1729, -1378,
+    1544, -1378,  2493,    30,   119, -1378, -1378, -1378,  1527,  2493,
+   -1378, -1378, -1378,  4934,  4958,  1483,  1554, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378,  1580,  1742,  1543, -1378,  2493, -1378,
+    1546,   216, -1378,  1545,   220, -1378,  1548,   223, -1378,  1549,
+   -1378, -1378, -1378, -1378,  4982,  5006,   182,  1550,  1653,  2493,
+   -1378,  2493, -1378, -1378,  5030,    23,  1573,  5054,  1569, -1378,
+    1570, -1378,  1571, -1378,  1579, -1378,  1572, 12988, -1378,  1581,
+   -1378, -1378,  1606,  1607, 13011,  5078, 13034,  1603, -1378,  1609,
+    1610,  5102,  1608,  1611, -1378,  5126,  1612,  5150,  5174,  5198,
+    5222,  5246,  5270,  5294,  5318,  5342,  5366,  5390,  5414,  5438,
+    5462,  5486,  5510,  5534,  5558,  5582,  5606,  5630,  5654,  5678,
+    5702,  5726,  5750, -1378,  1614, -1378, -1378, -1378,    16, -1378,
+    1674,  5774, -1378, -1378, -1378,  5798,  2493,  2493, -1378, -1378,
+   -1378, -1378,   529,  2982, -1378,  1863,   125,  1863,   125,  1863,
+     125,  2493,  2493,  1675,   611,  2493,  3346,  3372,   611,    23,
+    1778,   182,   455,  1782,  2493,  1781,   455,  1806,  1815,  1813,
+    1814,  1816,  2493,  1817,   611,  1818,  1819,  2493,  1824,  1822,
+    2493,  1825,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493, -1378,  1823,
+   -1378,  2493,  1827, 13057, 13080,  1630,  2493, -1378,  1863,  1863,
+    2493,  3398,   234,  1829,  1632,   -39, -1378,  3424,   238,   -20,
+    3450,   241,   -18,  3476,  3502,  1633,  1629,  1744, -1378, -1378,
+    1634,  1677, -1378,  1637,  1638,  1663,  5822, -1378,  1669, -1378,
+    1696, -1378, -1378, -1378, 13103, -1378,  1665, -1378, -1378, 13126,
+    1697, -1378, 13149,  1666, 13172, 13195, 13218,  5846,  5870,  5894,
+    5918,  5942,  5966,  5990,  6014,  6038,  6062,  6086,  6110,  6134,
+    6158,  6182,  6206,  6230,  6254,  6278,  6302,  6326, 13241,  6350,
+   -1378,  6374,  1732,   611,   611, -1378,  3528,  1343,  1893,  2493,
+   -1378,   611,  1895, -1378,  1919,  2493,  1932,  1933,  2493,  1934,
+    1935,  1937,   611,   611, -1378,  1938,    23,   455,   455,   455,
+     455,  1939,  1940,  1942,   455,  1944,  1945,  1946,  1963, -1378,
+   -1378, -1378,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493, -1378,  2493,  2493,  1964,   611,   611, -1378,
+   -1378,  1741,  3554,  1765, -1378, -1378,  1766,  3580, -1378, -1378,
+    1767,  3606, -1378, -1378, -1378,  1769,  1764, -1378,    23,  1770,
+    1771,  1777,  1779, -1378, -1378, -1378,  1773, -1378, -1378, -1378,
+    1775,  1776,  1780,  1803,  6398,  6422,  6446,  6470,  6494,  6518,
+    6542,  6566,  6590,  6614,  6638,  6662,  6686,  6710,  6734,  6758,
+    6782,  6806,  6830,  6854,  6878,  1821, 13264,  3632,  1820,  1975,
+    1977,   125,  1978,   611,   125,  1979,   125,  1981,   611,  1917,
+      23,   455,   455,  2016,  2017,   455,  2019,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,    56, -1378,  2022,  2025, -1378, -1378,   -17, -1378,  1826,
+     543,    -7, -1378,  1844,    -1, -1378,  1847,  1848,  1850,  1867,
+    1849,  1853, -1378, -1378,  1859,  1860,   546, 13770,   547, 13770,
+     550, 13770,  6902,  6926,  6950,  6974,  6998,  7022,  7046,  7070,
+    7094,  7118,  7142,  7166,  7190,  7214,  7238,  7262,  7286,  7310,
+    7334,  7358,  7382,   554, -1378,  1855, -1378,  1856,  2058,   125,
+     611,  2059,  2060,   125,  2062,   125,  1966,  2493,    23,   455,
+     611,  2065,  2066,  2493,  2067,  2493,  2068,  2493,  2069,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+      56,  2070,    56,  2071, -1378,     2,  1871, -1378, -1378,    74,
+   -1378,   110,  1882,  7406,    23,  1884,  1885, -1378, -1378, 13770,
+   -1378, 13770, -1378, 13770, -1378, 13287, 13310, 13333,  7430,  7454,
+    7478,  7502,  7526,  7550,  7574,  7598,  7622,  7646,  7670,  7694,
+    7718,  7742,  7766,  7790,  7814,  7838, -1378, -1378,   563, -1378,
+   -1378,  2085,  2086,  2087,  2088,  2493,  2493,    23,   455,   611,
+   -1378, -1378, -1378,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,    56,  2089, -1378, -1378, -1378, -1378,  7862,  3658,  1924,
+    1892,  1894,  1896,  1897,  1916,  7886,  7910,  7934,  7958,  7982,
+    8006,  8030,  8054,  8078,  8102,  8126,  8150,  8174,  8198,  8222,
+    8246,  8270,  8294, -1378, -1378,  2493,  2092,  1927,   611,   455,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  3684, -1378, -1378,  1929,  1901,   564, 13770,   567, 13770,
+     579, 13770,  8318,  8342,  8366,  8390,  8414,  8438,  8462,  8486,
+    8510,  8534,  8558,  8582,  8606,  8630,  8654,  8678,  8702,  8726,
+    2129,   611,  2130,  2493,  2131,  2493,  2132,  2493,  2135,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493, -1378,  1956, -1378,
+   13770, -1378, 13770, -1378, 13770, -1378, 13356, 13379, 13402,  8750,
+    8774,  8798,  8822,  8846,  8870,  8894,  8918,  8942,  8966,  8990,
+    9014,  9038,  9062,  9086,   611, -1378, -1378, -1378,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  1957,  1943,  1958,  1959,  9110,  9134,  9158,
+    9182,  9206,  9230,  9254,  9278,  9302,  9326,  9350,  9374,  9398,
+    9422,  9446,   611,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  1961,   582, 13770,   586, 13770,   597, 13770,  9470,  9494,
+    9518,  9542,  9566,  9590,  9614,  9638,  9662,  9686,  9710,  9734,
+    9758,  9782,  9806,   455,  2493,  2137,  2493,  2139,  2493,  2141,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  1951, 13770, -1378, 13770, -1378,
+   13770, -1378, 13425, 13448, 13471, 13494, 13517, 13540,  9830,  9854,
+    9878,  9902,  9926,  9950,  9974,  9998, 10022,  2157, -1378, -1378,
+   -1378, -1378, -1378, -1378,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493, -1378,  1965,  1968,  1969,  1970,  1971,  1972,
+   10046, 10070, 10094, 10118, 10142, 10166, 10190, 10214, 10238,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,   601, 13770,   602, 13770,   606, 13770,
+     607, 13770,   613, 13770,   614, 13770, 10262, 10286, 10310, 10334,
+   10358, 10382, 10406, 10430, 10454,  2493,  2163,  2493,  2173,  2493,
+    2174,  2493,  2175,  2493,  2182,  2493,  2183,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493,  2493,  2493, 13770, -1378, 13770, -1378,
+   13770, -1378, 13770, -1378, 13770, -1378, 13770, -1378, 10478, 10502,
+   10526, 10550, 10574, 10598, 13563, 13586, 13609,  2493,  2493,  2493,
+    2493,  2493,  2493, -1378, -1378, -1378, 10622, 10646, 10670, 10694,
+   10718, 10742,  1984,  1985,  1986,  2493,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2493, 10766, 10790, 10814, 10838, 10862, 10886,
+     617, 13770,   618, 13770,   621, 13770,  2493,  2493,  2493,  2493,
+    2493,  2493,  2493,  2187,  2493,  2188,  2493,  2189, 10910, 10934,
+   10958, 13632, 13655, 13678, 13770, -1378, 13770, -1378, 13770, -1378,
+    2493,  2493,  2493, -1378, -1378, -1378, 10982, 11006, 11030,  1990,
+    1991,  1992,  2493,  2493,  2493,  2493,  2493,  2493, 11054, 11078,
+   11102,   622, 13770,   653, 13770,   654, 13770,  2493,  2493,  2493,
+    2493,  2193,  2493,  2203,  2493,  2204, 11126, 11150, 11174, 13770,
+   -1378, 13770, -1378, 13770, -1378,  2493,  2493,  2493, 11198, 11222,
+   11246,  2493,  2493,  2493, 11270, 11294, 11318,  2493,  2493,  2493,
+   13701, 13724, 13747, -1378, -1378, -1378,  2005,  2006,  2007,  2493,
+    2493,  2493,   672, 13770,   681, 13770,   701, 13770,  2493,  2208,
+    2493,  2211,  2493,  2212, 13770, -1378, 13770, -1378, 13770, -1378
 };
 
-
-#define	YYLAST		13409
-
-
-static const short yytable[] = {   142,
-   210,   212,   141,    76,   564,    77,   248,   501,   537,   911,
-  1120,   184,  1416,   187,  1419,   177,   179,   380,   198,   253,
-   384,   208,   749,   382,   208,   213,  1071,   196,   152,   152,
-   390,   308,  1410,   255,  1319,   256,    99,  1411,  1072,     5,
-  1410,   401,  1410,   403,  1410,  1411,   154,  1411,    86,  1411,
-   124,   125,   126,   124,   125,   126,  1410,  1410,  1074,   902,
-   522,  1411,  1411,  1261,  1490,   523,   371,   372,  1490,   208,
-  1410,  1490,  1270,   146,   355,  1411,   371,   372,  1130,  1277,
-   201,   356,  1073,   406,   371,   372,   173,   174,   488,   208,
-   134,   135,   497,  1105,    87,  1106,  1320,   175,   124,   125,
-   126,  1107,  1075,  1108,   176,   371,   372,   301,   302,   303,
-   371,   372,   304,   307,   149,    88,   312,   208,   124,   125,
-   126,   798,   555,   332,   391,   333,   334,   335,   373,   337,
-   497,   339,   340,    89,   351,   309,   310,    90,   371,   372,
-  1410,   257,   366,   258,   368,  1411,   124,   125,   126,  1410,
-   375,   369,   370,   191,  1411,  1109,   192,  1110,   156,   371,
-   372,   153,   153,   903,   904,   801,    91,   881,  1065,   799,
-   388,   389,  1489,   392,   882,   394,   500,   374,   397,   398,
-  1493,    99,  1496,   197,  1705,    92,   800,   755,   148,   167,
-   371,   372,   168,   169,   627,   170,  1709,  1711,   743,   628,
-   769,   371,   372,   127,   128,   129,   130,   565,   371,   372,
-  1798,   214,  1059,   185,   157,   188,   371,   372,   383,   634,
-   199,   254,   209,   444,   750,   211,   442,   589,   489,   490,
-   491,   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,   147,   596,   202,  1248,  1431,   371,   372,
-  1800,  1435,   496,   576,   577,  1654,  1340,   502,  1658,  1801,
-  1661,   507,   508,   509,   510,   511,   512,   513,   514,   515,
-   516,   517,   518,   519,   520,   521,  1490,   134,   135,   497,
-  1490,   938,   528,  1490,   530,   851,   371,   372,   734,   302,
-   496,   181,   497,   735,   182,   183,  1198,   154,   541,   542,
-   543,   544,   545,   948,   547,   548,   549,   550,   551,   552,
-   553,   558,   559,   127,   128,   129,   130,    93,   127,   128,
-   129,   130,   566,   567,   568,   569,   371,   372,   915,   578,
-   259,   939,   260,   740,   134,   135,  1056,   585,  1139,   134,
-   135,   740,   560,   560,   563,   563,   593,   742,   159,   127,
-   128,   129,   130,  1752,    94,   371,   372,  1756,   261,  1758,
-   262,  1430,   371,   372,   371,   372,   371,   372,  1186,   895,
-   134,   135,  1332,  1187,  1490,   160,   371,   372,  1490,  1334,
-  1490,  1336,   263,  1486,   264,    95,  1410,    10,   145,   371,
-   372,  1411,   633,  1492,    44,    45,    46,    47,   149,    49,
-   925,   745,  1566,  1567,  1568,  1569,  1495,     6,     7,  1573,
-     8,   324,   325,   326,   327,   328,   315,   316,   317,   318,
-   319,   329,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,   150,   956,   957,   958,   959,   329,   161,   738,   163,
-   164,   302,   165,   134,   135,  1249,   162,   746,   744,   250,
-   265,   251,   266,   315,   316,   317,   318,   319,   151,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,   155,   496,
-   756,   156,   267,   329,   268,   134,   135,  1090,  1091,   738,
-   767,   492,   496,   251,   771,   772,   269,   158,   270,   134,
-   135,   497,   779,   134,   135,   788,   900,   851,   271,   533,
-   272,   251,   789,   790,   326,   327,   328,   134,   135,  1099,
-  1100,   793,   329,   768,   166,   251,  1667,  1668,   189,   273,
-  1671,   274,   497,   802,    11,    12,    13,    14,    15,    16,
-    17,    18,   171,   853,   812,   172,   814,   815,   999,  1000,
-  1001,  1002,  1003,   275,  1396,   276,   277,   972,   278,   279,
-   281,   280,   282,   186,   497,   497,   497,   497,   283,   285,
-   284,   286,  1082,   287,   289,   288,   290,   291,   180,   292,
-  1058,  1060,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,   852,    96,   341,   190,   293,   329,   294,   100,   101,
-   102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-   122,   123,   193,   194,  1762,   317,   318,   319,   342,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,   295,   732,
-   296,   733,   740,   329,   741,   195,   740,   896,   770,    44,
-    45,    46,    47,    48,    49,   740,  1067,   929,  1068,   740,
-   740,  1081,  1111,   203,   740,   314,  1112,   204,   885,   886,
-   740,   740,  1113,  1114,  1187,   740,  1188,  1205,  1707,  1720,
-  1708,  1721,   887,   888,   889,   890,   891,   892,   893,   205,
-  1722,   496,  1723,   207,   497,   506,   899,   206,  1724,   905,
-  1725,  1747,  1828,  1748,  1829,   246,  1920,   917,  1921,   914,
-  1922,   249,  1923,  1837,  1227,   297,  1924,   908,  1925,  2051,
-   298,  2052,   496,  2053,   738,  2054,   299,   315,   316,   317,
-   318,   319,   311,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,  1012,   313,   952,   953,   954,   329,  2055,   973,
-  2056,  2162,   330,  2163,   496,   496,   496,   496,   331,   336,
-   962,   963,   931,  2164,   966,  2165,  2166,  2168,  2167,  2169,
-  2170,   979,  2171,   352,  1892,   977,   978,   131,   343,  2172,
-   988,  2173,  2249,   133,  2250,  2251,   338,  2252,   136,  2253,
-  2297,  2254,  2298,   139,   365,   344,  2299,  2301,  2300,  2302,
-  2345,  2347,  2346,  2348,  2349,   353,  2350,   354,   358,   359,
-   360,  1016,  1017,  1018,  1019,  1020,  1021,  1022,  1023,  1024,
-  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,  1033,  1034,
-  1035,  1036,  1037,  1038,  1039,  1040,  1041,   315,   316,   317,
-   318,   319,   361,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,   362,   363,   364,   376,   852,   329,   538,   379,
-   387,  1061,   377,   378,   399,   393,  1066,   315,   316,   317,
-   318,   319,  1070,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,   395,   396,   496,   400,  1083,   329,  1084,   315,
-   316,   317,   318,   319,   402,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,  1101,  1102,  1103,   404,   405,   329,
-   315,   316,   317,   318,   319,   407,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,   408,  1122,  1123,  1124,   409,
-   329,   437,   493,   410,   315,   316,   317,   318,   319,  1402,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,   411,
-   412,   413,   439,   414,   329,   440,   318,   319,  2072,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,   415,   416,
-  1191,   441,  1158,   329,  1252,    96,   300,   417,   418,   419,
-   420,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-   109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-   119,   120,   121,   122,   123,   421,   422,   423,   424,   425,
-   426,  1222,   427,   428,   429,   430,  1192,   431,   432,   433,
-   434,   435,   436,  1200,   443,  1201,   329,   503,   315,   316,
-   317,   318,   319,   494,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,   504,  1210,  1211,  1212,  1213,   329,  1283,
-   505,   534,   539,   546,   580,  1228,  1221,  1231,   581,  1234,
-   554,   584,   587,   590,   597,   598,   599,   600,   601,   602,
-   603,  1241,  1242,   604,   605,   606,   607,   608,   609,   610,
-   611,  1251,   612,   560,  1254,   563,   613,   614,   620,   960,
-   615,   616,   617,   618,  1264,   619,   621,   622,   623,   624,
-  1346,  1271,  1272,  1273,   625,   626,   752,   629,  1278,   630,
-   631,   736,  1282,   737,   747,   748,  1284,  1285,  1286,  1287,
-  1288,  1289,  1290,  1291,  1292,  1293,  1294,  1295,  1296,  1297,
-  1298,  1299,  1300,  1301,  1302,  1303,  1304,  1305,  1306,  1307,
-  1308,  1309,   754,   787,   757,   758,   759,   761,   763,   764,
-   773,   791,   792,   804,   805,  1318,   806,   807,   808,   810,
-   131,   132,  1322,   811,   817,   848,   133,   818,   819,   820,
-   821,   136,   822,   823,   305,   824,   139,   884,   306,   825,
-   826,  1330,   827,   828,   829,   830,   831,   832,   833,   834,
-   835,   836,   837,   838,  1428,  1064,   839,   840,   841,    96,
-   300,   842,  1343,   843,  1344,   100,   101,   102,   103,   104,
-   105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-   115,   116,   117,   118,   119,   120,   121,   122,   123,    96,
-   300,   849,   844,   845,   846,   100,   101,   102,   103,   104,
-   105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-   115,   116,   117,   118,   119,   120,   121,   122,   123,   847,
-   850,   315,   316,   317,   318,   319,   855,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,   894,   856,   857,  1400,
-  1401,   329,  1409,   858,  1415,   898,  1418,   906,  1408,   907,
-  1414,   901,  1417,   909,  1420,  1421,   859,   860,  1424,   913,
-   910,   920,   922,   861,   933,   862,   863,  1433,   560,   864,
-   563,   865,   866,   867,   868,  1441,   869,   870,   871,   872,
-  1446,   873,   874,  1449,   875,  1451,  1452,  1453,  1454,  1455,
-  1456,  1457,  1458,  1459,  1460,  1461,  1462,  1463,  1464,  1465,
-  1466,  1467,  1468,  1469,  1470,  1471,  1472,  1473,  1474,  1475,
-  1476,  1565,   876,  1314,  1478,   877,   368,   878,   879,  1483,
-   880,   301,   302,  1484,   934,   935,   936,   315,   316,   317,
-   318,   319,   932,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,   937,   940,   131,   132,   941,   329,   942,   943,
-   133,   944,   945,   946,   947,   136,   967,   955,   765,   961,
-   139,   969,   766,   974,   975,   976,   980,   981,   982,   983,
-   984,   987,   989,  1617,   131,   132,   990,   993,   994,   995,
-   133,   996,   997,  1006,  1055,   136,  1007,  1008,   927,  1009,
-   139,  1010,   928,  1011,  1013,  1014,  1057,  1045,  1062,  1063,
-  1069,  1077,  1549,  1079,  1080,  1088,  1089,  1104,  1554,  1117,
-  1118,  1558,  1121,  1132,  1125,  1126,  1127,  1131,  1134,  1133,
-  1135,  1136,  1325,  1159,  1137,  1666,  1141,  1138,  1140,  1142,
-  1143,  1149,  1144,  1145,  1155,  1581,  1582,  1583,  1584,  1585,
-  1586,  1587,  1588,  1589,  1590,  1591,  1592,  1593,  1594,  1595,
-  1596,  1597,  1598,  1599,  1600,  1601,  1146,  1603,  1604,  1189,
-  1193,   315,   316,   317,   318,   319,  1147,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,  1148,  1150,  1151,  1152,
-  1153,   329,  1154,  1156,  1157,   315,   316,   317,   318,   319,
-   774,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-  1326,  1194,  1196,  1204,   349,   329,  1202,  1203,  1207,  1208,
-   357,  1209,  1214,  1215,  1216,  1217,  1218,  1219,  1220,  1701,
-  1229,  1232,  1327,  1761,  1235,  1237,  1238,  1239,  1240,  1244,
-  1243,  1253,  1256,   381,  1257,  1258,  1260,  1263,   385,   386,
-  1674,  1676,  1678,  1679,  1680,  1681,  1682,  1683,  1684,  1685,
-  1686,  1687,  1688,  1689,  1690,  1691,  1692,  1693,  1694,  1695,
-  1696,  1697,  1698,  1699,    96,   535,  1262,  1259,  1265,  1804,
-   100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-   110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-   120,   121,   122,   123,   315,   316,   317,   318,   319,  1266,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,  1267,
-  1268,  1269,  1836,  1275,   329,  1276,  1279,  1280,  1793,  1329,
-  1796,  1281,  1311,  1312,  1317,  1313,  1321,  1315,  1316,  1328,
-  1760,  1342,  1331,  1333,  1335,  1337,  1766,  1341,  1768,  1347,
-  1770,  1349,  1772,  1773,  1774,  1775,  1776,  1777,  1778,  1779,
-  1780,  1781,  1782,  1783,  1784,  1785,  1786,  1787,  1788,  1789,
-  1790,  1791,  1792,  1350,  1351,  1352,  1353,  1355,  1356,  1357,
-  1362,  1361,   315,   316,   317,   318,   319,  1363,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,  1365,  1501,  1366,
-  1368,  1395,   329,  1397,   315,   316,   317,   318,   319,  1860,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,  1422,
-  1429,  1432,  1434,  1436,   329,  1437,  1438,  1439,  1834,  1835,
-  1440,  1442,  1444,  1445,  1447,  1448,  1842,  1843,  1844,  1845,
-  1846,  1847,  1848,  1849,  1850,  1851,  1852,  1853,  1854,  1855,
-  1856,  1857,  1858,  1859,  1450,  1482,  1477,  1479,  1488,   131,
-   132,  1487,  1499,  1500,  1502,   133,  1503,  1504,  1505,  1506,
-   136,  1511,  1515,  1508,  1509,   139,  1513,   536,  1547,  1551,
-  1543,  1552,  1610,  1555,   591,  1556,  1559,  1560,  1888,  1561,
-  1564,  1570,  1571,  1894,  1896,  1898,  1899,  1900,  1901,  1902,
-  1903,  1904,  1905,  1906,  1907,  1908,  1909,  1910,  1911,  1912,
-  1913,  1914,  1915,  1916,    96,   300,  1572,  1608,  1574,  1575,
-   100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-   110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-   120,   121,   122,   123,  1576,  1577,  1947,  1605,  1949,  1611,
-  1951,   739,  1953,  1954,  1955,  1956,  1957,  1958,  1959,  1960,
-  1961,  1962,  1963,  1964,  1965,  1966,  1967,  1968,  1969,  1970,
-   315,   316,   317,   318,   319,  1613,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,  1615,  1616,  1618,  1619,  1620,
-   329,  1621,  1622,  1623,  1652,  1665,  1624,   753,  1653,  1625,
-  1626,  1994,  1995,  1996,  1997,  1998,  1999,  2000,  2001,  2002,
-  2003,  2004,  2005,  2006,  2007,  2008,  1648,  1651,  1655,  1659,
-  1662,  1669,  1670,  1672,  1715,  1703,  1704,  1759,  1751,  1706,
-  1754,  1755,  1718,  1719,  1710,  1716,  2030,  2032,  2034,  2035,
-  2036,  2037,  2038,  2039,  2040,  2041,  2042,  2043,  2044,  2045,
-  2046,  2047,  2048,  2049,   315,   316,   317,   318,   319,  1712,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,  1713,
-  1714,  1717,  1750,  1749,   329,  1757,  1764,  2073,  1765,  2075,
-  1767,  2077,  1769,  2079,  2080,  2081,  2082,  2083,  2084,  2085,
-  2086,  2087,  2088,  2089,  2090,  2091,  2092,  2093,  1771,  1405,
-  1406,  1794,  1797,  1799,  1802,   133,  1805,  1806,  1830,  1831,
-  1407,  1832,  1833,  1861,  1865,   139,  1864,   176,  1889,  1866,
-  1890,  1867,  1868,  1869,  1918,  1919,  1944,  2117,  2118,  2119,
-  2120,  2121,  2122,  2123,  2124,  2125,  1946,  1948,  1950,  1952,
-  1971,  2009,  2074,  2010,  2076,  2011,  2078,  2012,  2050,  2094,
-  2110,  2126,  2142,  2144,  2146,  2148,  2150,  2152,  2153,  2154,
-  2155,  2156,  2157,  2158,  2159,  2160,  2161,   315,   316,   317,
-   318,   319,  2127,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,  2128,  2129,  2130,  2131,  2184,   329,  2183,  2186,
-  2185,  2188,  2187,  2190,  2189,  2192,  2191,  2194,  2193,  2228,
-  2195,  2196,  2197,  2198,  2199,  2200,  2201,  2202,  2203,  2229,
-  2230,  2262,  2264,  2266,  2282,   918,   919,  2283,   921,  2307,
-   923,   924,  2309,  2284,  2311,  2352,  2336,  2354,  2356,  2337,
-  2213,  2214,  2215,  2216,  2217,  2218,  2338,  2358,  2359,   854,
-    75,  1044,  1195,    83,     0,     0,     0,     0,  2231,  2232,
-  2233,  2234,  2235,  2236,  2238,  2240,  2242,     0,     0,     0,
-     0,     0,     0,   964,   965,     0,     0,   968,     0,  2255,
-  2256,  2257,  2258,  2259,  2260,  2261,     0,  2263,     0,  2265,
-     0,     0,     0,     0,   985,   986,     0,     0,     0,     0,
-   991,   992,     0,  2273,  2274,  2275,     0,   998,     0,  1005,
-     0,     0,     0,   930,     0,  2285,  2286,  2287,  2289,  2291,
-  2293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-  2303,  2304,  2305,  2306,     0,  2308,     0,  2310,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,  2315,  2316,
-  2317,     0,     0,     0,  2321,  2322,  2323,     0,     0,     0,
-  2327,  2328,  2329,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,  2340,  2342,  2344,     0,     0,     0,     0,     0,
-     0,  2351,     0,  2353,     0,  2355,     0,  1076,     0,  1078,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-  1085,  1086,  1087,     0,     0,     0,     0,  1092,  1093,  1094,
-  1095,  1096,  1097,  1098,     0,     0,     0,     0,    96,    97,
-    98,     0,    99,     0,   100,   101,   102,   103,   104,   105,
-   106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-   116,   117,   118,   119,   120,   121,   122,   123,     0,   124,
-   125,   126,    96,   341,     0,     0,     0,     0,   100,   101,
-   102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-   122,   123,     0,   315,   316,   317,   318,   319,   342,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,     0,     0,     0,     0,    44,
-    45,    46,    47,    48,    49,     0,     0,   971,     0,     0,
-    96,   300,   208,     0,     0,  1190,   100,   101,   102,   103,
-   104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-   114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     0,   124,   125,   126,    96,   300,     0,     0,     0,     0,
-   100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-   110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-   120,   121,   122,   123,     0,     0,     0,     0,  1245,   127,
-   128,   129,   130,     0,     0,     0,  1255,     0,     0,     0,
-     0,     0,     0,   131,   132,     0,     0,     0,     0,   133,
-   134,   135,     0,     0,   136,  1274,   137,     0,   138,   139,
-     0,     0,   315,   316,   317,   318,   319,     0,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,   131,   495,     0,
-     0,     0,   329,   133,     0,     0,     0,     0,   136,    96,
-   535,   778,     0,   139,  1310,   100,   101,   102,   103,   104,
-   105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-   115,   116,   117,   118,   119,   120,   121,   122,   123,     0,
-     0,     0,     0,     0,     0,     0,     0,   315,   316,   317,
-   318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,   131,   132,   329,     0,     0,
-     0,   133,     0,     0,     0,     0,   136,     0,     0,     0,
-     0,   139,   570,    28,    29,   571,   572,    32,   573,    34,
-     0,    35,     0,    37,    38,    39,     0,    41,    42,   131,
-   132,     0,     0,     0,     0,   133,     0,     0,     0,     0,
-   136,     0,     0,     0,    54,   139,     0,     0,     0,   570,
-    28,    29,   571,   572,    32,   573,    34,     0,    35,     0,
-    37,    38,    39,     0,    41,    42,     0,     0,     0,     0,
-     0,     0,     0,     0,    56,    57,    58,     0,     0,     0,
-     0,    54,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    68,     0,     0,     0,     0,     0,  1423,     0,
-     0,     0,  1427,     0,     0,     0,    -7,     1,     0,   -12,
-   -55,    56,    57,    58,     0,     0,     0,     0,  1443,     0,
-     0,     0,     0,     0,   131,   132,     0,     0,     0,    68,
-   133,     0,     0,     0,     0,   136,     0,     0,     0,   -55,
-   139,     0,     0,   -55,   -55,   -55,   -55,   -55,   -55,   -55,
-   -55,   -55,   -55,     0,   -55,   -55,   -55,   -55,   -55,   -55,
-   -55,   -55,     0,     0,     0,   -55,   -55,   -55,   -55,   -55,
-   -55,   -55,     0,   -55,   -55,   -55,   -55,   -55,     0,     0,
-   574,     0,     0,   315,   316,   317,   318,   319,     0,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,     0,   -55,   -55,   -55,   -55,
-  1225,     0,  1226,     0,   -55,     0,   -55,   579,   -55,   -55,
-   -55,   -55,   -55,   -55,   -55,   -55,   -55,   -55,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,  1544,  1545,     0,
-     0,     0,     0,     0,     0,  1550,   -12,   -12,   -12,   -12,
-   -12,   -12,   -12,   -12,     0,     0,  1562,  1563,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    -7,    -7,     0,    -7,   570,    28,    29,   571,   572,
-    32,   573,    34,     0,    35,     0,    37,    38,    39,     0,
-    41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,  1606,  1607,     0,     0,     0,     0,    54,     0,     0,
-     0,   570,    28,    29,   571,   572,    32,   573,    34,     0,
-    35,     0,    37,    38,    39,     0,    41,    42,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    56,    57,    58,
-   216,     0,     0,    54,     0,   570,    28,    29,   571,   572,
-    32,   573,    34,     0,    35,    68,    37,    38,    39,     0,
-    41,    42,     0,     0,     0,     0,     0,  1657,     0,     0,
-     0,     0,  1664,    56,    57,    58,     0,    54,     0,     0,
-     0,     0,     0,     0,     0,     0,   315,   316,   317,   318,
-   319,    68,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,     0,     0,     0,     0,     0,   329,    56,    57,    58,
-     0,     0,     0,  1246,     0,  1247,     0,     0,     0,     0,
-   217,   218,   219,     0,     0,    68,     0,     0,   220,   221,
-   222,   223,   224,   225,   226,   227,   228,   229,     0,     0,
-     0,     0,     0,   594,     0,     0,   230,   231,   232,   233,
-   234,   235,   236,   237,   238,   239,     0,   240,   241,   242,
-   243,   244,   245,     0,  1753,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,  1763,     0,     0,     0,     0,   595,
-   635,   636,   637,   638,   639,   640,   641,   642,   643,   644,
-   645,   646,   647,   648,   649,   650,   651,   652,   653,   654,
-   655,   656,   657,   658,   659,   660,   661,     0,     0,     0,
-     0,     0,     0,   813,   635,   636,   637,   638,   639,   640,
-   641,   642,   643,   644,   645,   646,   647,   648,   649,   650,
-   651,   652,   653,   654,   655,   656,   657,   658,   659,   660,
-   661,    23,   315,   316,   317,   318,   319,     0,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,     0,     0,     0,
-     0,     0,   329,  1838,     0,     0,     0,     0,     0,  1403,
-    24,  1404,     0,     0,    25,    26,    27,    28,    29,    30,
-    31,    32,    33,    34,     0,    35,    36,    37,    38,    39,
-    40,    41,    42,     0,     0,     0,    43,    44,    45,    46,
-    47,    48,    49,     0,    50,    51,    52,    53,    54,     0,
-     0,     0,     0,     0,   662,     0,     0,     0,     0,     0,
-     0,     0,  1891,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    55,    56,    57,
-    58,     0,     0,     0,     0,    59,     0,    60,  1015,    61,
-    62,    63,    64,    65,    66,    67,    68,    69,    70,     0,
-     0,   570,    28,    29,   571,   572,    32,   573,    34,     0,
-    35,     0,    37,    38,    39,  1945,    41,    42,   315,   316,
-   317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,    54,     0,     0,     0,     0,   329,     0,
-     0,     0,   315,   316,   317,   318,   319,   780,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,     0,     0,     0,
-     0,     0,   329,    56,    57,    58,     0,     0,  1990,     0,
-     0,   781,     0,     0,     0,     0,   315,   316,   317,   318,
-   319,    68,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,     0,     0,     0,     0,     0,   329,     0,     0,     0,
-     0,     0,     0,     0,     0,   926,  2028,   315,   316,   317,
-   318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,     0,
-     0,   315,   316,   317,   318,   319,   951,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,     0,     0,   315,   316,   317,   318,   319,
-  1223,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   315,
-   316,   317,   318,   319,  1425,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,     0,     0,   315,   316,   317,   318,   319,  1426,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,     0,     0,   315,   316,   317,
-   318,   319,  1485,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,     0,
-     0,   315,   316,   317,   318,   319,  1491,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,     0,     0,   315,   316,   317,   318,   319,
-  1494,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   315,
-   316,   317,   318,   319,  1497,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,     0,     0,   315,   316,   317,   318,   319,  1498,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,     0,     0,   315,   316,   317,
-   318,   319,  1546,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,     0,
-     0,   315,   316,   317,   318,   319,  1609,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,     0,     0,   315,   316,   317,   318,   319,
-  1612,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   315,
-   316,   317,   318,   319,  1614,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,     0,     0,   315,   316,   317,   318,   319,  1650,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,     0,     0,   315,   316,   317,
-   318,   319,  1863,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,     0,
-     0,   315,   316,   317,   318,   319,  1917,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   493,     0,     0,     0,     0,   556,   315,
-   316,   317,   318,   319,     0,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,   524,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,   556,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-   557,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,   588,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,   712,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,   713,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,   726,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-   727,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,   728,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,   729,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,   730,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,   731,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-   794,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,   795,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,   796,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,   916,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,   949,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-   950,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,   970,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1115,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1116,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1128,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1129,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1160,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1161,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1162,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1163,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1164,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1165,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1166,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1167,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1168,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1169,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1170,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1171,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1172,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1173,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1174,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1175,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1176,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1177,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1178,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1179,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1180,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1181,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1182,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1183,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1184,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1185,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1199,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1206,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1323,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1324,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1338,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1339,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1345,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1348,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1359,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1364,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1367,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1369,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1370,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1371,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1372,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1373,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1374,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1375,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1376,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1377,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1378,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1379,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1380,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1381,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1382,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1383,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1384,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1385,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1386,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1387,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1388,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1389,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1390,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1391,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1392,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1393,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1394,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1398,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1399,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1507,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1519,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1520,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1521,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1522,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1523,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1524,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1525,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1526,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1527,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1528,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1529,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1530,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1531,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1532,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1533,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1534,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1535,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1536,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1537,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1538,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1539,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1541,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1542,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1627,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1628,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1629,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1630,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1631,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1632,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1633,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1634,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1635,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1636,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1637,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1638,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1639,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1640,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1641,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1642,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1643,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1644,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1645,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1646,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1647,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1726,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1727,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1728,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1729,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1730,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1731,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1732,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1733,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1734,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1735,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1736,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1737,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1738,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1739,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1740,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1741,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1742,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1743,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1744,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1745,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1746,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1803,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1810,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1811,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1812,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1813,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1814,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1815,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1816,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1817,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1818,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1819,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1820,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1821,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1822,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1823,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1824,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1825,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1826,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1827,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1862,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1870,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1871,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1872,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1873,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1874,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1875,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1876,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1877,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1878,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1879,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1880,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1881,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1882,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1883,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1884,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1885,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1886,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1887,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1926,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1927,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1928,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1929,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1930,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1931,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1932,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1933,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1934,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1935,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1936,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1937,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1938,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1939,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1940,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1941,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1942,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1943,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1975,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1976,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1977,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1978,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1979,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1980,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1981,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1982,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1983,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1984,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  1985,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  1986,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  1987,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  1988,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  1989,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2013,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2014,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2015,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2016,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2017,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2018,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2019,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2020,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2021,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2022,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2023,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2024,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2025,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2026,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2027,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2057,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2058,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2059,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2060,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2061,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2062,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2063,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2064,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2065,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2066,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2067,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2068,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2069,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2070,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2071,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2101,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2102,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2103,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2104,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2105,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2106,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2107,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2108,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2109,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2132,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2133,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2134,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2135,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2136,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2137,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2138,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2139,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2140,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2174,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2175,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2176,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2177,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2178,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2179,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2180,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2181,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2182,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2204,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2205,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2206,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2207,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2208,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2209,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2222,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2223,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2224,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2225,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2226,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2227,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2243,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2244,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2245,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2246,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2247,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2248,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2267,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2268,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2269,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2279,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2280,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2281,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2294,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2295,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2296,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2312,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2313,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2314,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2318,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   315,   316,   317,
-   318,   319,  2319,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   315,
-   316,   317,   318,   319,  2320,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   315,   316,   317,   318,   319,  2324,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   315,   316,   317,   318,   319,  2325,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   315,   316,   317,   318,   319,
-  2326,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   499,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   632,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   691,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   693,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   695,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   697,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   699,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   701,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   703,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   705,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   707,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   709,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   711,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   715,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   717,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   719,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   721,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   723,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   725,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   797,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,   803,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,   897,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,  1047,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,  1049,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,  1051,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,  1053,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,     0,     0,  1054,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,     0,     0,  1197,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   525,   315,   316,
-   317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,     0,     0,     0,     0,     0,   329,     0,
-   526,   315,   316,   317,   318,   319,     0,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   527,   315,   316,   317,   318,   319,     0,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,     0,
-     0,     0,     0,     0,   329,     0,   529,   315,   316,   317,
-   318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   531,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,   532,   315,   316,   317,   318,   319,     0,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   540,   315,   316,   317,   318,
-   319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,     0,     0,     0,     0,     0,   329,     0,   582,   315,
-   316,   317,   318,   319,     0,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   583,   315,   316,   317,   318,   319,     0,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,     0,     0,     0,
-     0,     0,   329,     0,   586,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   592,   315,   316,
-   317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,     0,     0,     0,     0,     0,   329,     0,
-   690,   315,   316,   317,   318,   319,     0,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   692,   315,   316,   317,   318,   319,     0,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,     0,
-     0,     0,     0,     0,   329,     0,   694,   315,   316,   317,
-   318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   696,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,   698,   315,   316,   317,   318,   319,     0,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   700,   315,   316,   317,   318,
-   319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,     0,     0,     0,     0,     0,   329,     0,   702,   315,
-   316,   317,   318,   319,     0,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   704,   315,   316,   317,   318,   319,     0,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,     0,     0,     0,
-     0,     0,   329,     0,   706,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   708,   315,   316,
-   317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,     0,     0,     0,     0,     0,   329,     0,
-   710,   315,   316,   317,   318,   319,     0,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   714,   315,   316,   317,   318,   319,     0,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,     0,
-     0,     0,     0,     0,   329,     0,   716,   315,   316,   317,
-   318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   718,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,   720,   315,   316,   317,   318,   319,     0,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   722,   315,   316,   317,   318,
-   319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,     0,     0,     0,     0,     0,   329,     0,   724,   315,
-   316,   317,   318,   319,     0,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   760,   315,   316,   317,   318,   319,     0,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,     0,     0,     0,
-     0,     0,   329,     0,   762,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,   775,   315,   316,
-   317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,     0,     0,     0,     0,     0,   329,     0,
-   776,   315,   316,   317,   318,   319,     0,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,   777,   315,   316,   317,   318,   319,     0,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,     0,
-     0,     0,     0,     0,   329,     0,   782,   315,   316,   317,
-   318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,   783,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,   784,   315,   316,   317,   318,   319,     0,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,   785,   315,   316,   317,   318,
-   319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,     0,     0,     0,     0,     0,   329,     0,   786,   315,
-   316,   317,   318,   319,     0,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,   809,   315,   316,   317,   318,   319,     0,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,     0,     0,     0,
-     0,     0,   329,     0,   816,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,  1046,   315,   316,
-   317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,     0,     0,     0,     0,     0,   329,     0,
-  1048,   315,   316,   317,   318,   319,     0,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,  1050,   315,   316,   317,   318,   319,     0,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,     0,
-     0,     0,     0,     0,   329,     0,  1052,   315,   316,   317,
-   318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,  1119,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,  1224,   315,   316,   317,   318,   319,     0,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,  1250,   315,   316,   317,   318,
-   319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,     0,     0,     0,     0,     0,   329,     0,  1354,   315,
-   316,   317,   318,   319,     0,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,  1358,   315,   316,   317,   318,   319,     0,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,     0,     0,     0,
-     0,     0,   329,     0,  1360,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,  1480,   315,   316,
-   317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,     0,     0,     0,     0,     0,   329,     0,
-  1481,   315,   316,   317,   318,   319,     0,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,  1510,   315,   316,   317,   318,   319,     0,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,     0,
-     0,     0,     0,     0,   329,     0,  1512,   315,   316,   317,
-   318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,  1514,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,  1516,   315,   316,   317,   318,   319,     0,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,  1517,   315,   316,   317,   318,
-   319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,     0,     0,     0,     0,     0,   329,     0,  1518,   315,
-   316,   317,   318,   319,     0,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,  1540,   315,   316,   317,   318,   319,     0,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,     0,     0,     0,
-     0,     0,   329,     0,  1649,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,  1807,   315,   316,
-   317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,     0,     0,     0,     0,     0,   329,     0,
-  1808,   315,   316,   317,   318,   319,     0,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,  1809,   315,   316,   317,   318,   319,     0,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,     0,
-     0,     0,     0,     0,   329,     0,  1972,   315,   316,   317,
-   318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,  1973,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,  1974,   315,   316,   317,   318,   319,     0,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,  2095,   315,   316,   317,   318,
-   319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,     0,     0,     0,     0,     0,   329,     0,  2096,   315,
-   316,   317,   318,   319,     0,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,  2097,   315,   316,   317,   318,   319,     0,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,     0,     0,     0,
-     0,     0,   329,     0,  2098,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,  2099,   315,   316,
-   317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,     0,     0,     0,     0,     0,   329,     0,
-  2100,   315,   316,   317,   318,   319,     0,   320,   321,   322,
-   323,   324,   325,   326,   327,   328,     0,     0,     0,     0,
-     0,   329,     0,  2210,   315,   316,   317,   318,   319,     0,
-   320,   321,   322,   323,   324,   325,   326,   327,   328,     0,
-     0,     0,     0,     0,   329,     0,  2211,   315,   316,   317,
-   318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
-   327,   328,     0,     0,     0,     0,     0,   329,     0,  2212,
-   315,   316,   317,   318,   319,     0,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,     0,     0,     0,     0,     0,
-   329,     0,  2270,   315,   316,   317,   318,   319,     0,   320,
-   321,   322,   323,   324,   325,   326,   327,   328,     0,     0,
-     0,     0,     0,   329,     0,  2271,   315,   316,   317,   318,
-   319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
-   328,     0,     0,     0,     0,     0,   329,     0,  2272,   315,
-   316,   317,   318,   319,     0,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,     0,     0,     0,     0,     0,   329,
-     0,  2330,   315,   316,   317,   318,   319,     0,   320,   321,
-   322,   323,   324,   325,   326,   327,   328,     0,     0,     0,
-     0,     0,   329,     0,  2331,   315,   316,   317,   318,   319,
-     0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     0,     0,     0,     0,     0,   329,     0,  2332,   315,   316,
-   317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
-   326,   327,   328,     0,     0,     0,     0,     0,   329
+/* YYPGOTO[NTERM-NUM].  */
+static const short yypgoto[] =
+{
+   -1378, -1378,  -129, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378,  1594, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1378,
+   -1378, -1378, -1378, -1378,  -302,   -21, -1378,  2215,    -2,  -369,
+    -172,     0, -1378, -1378, -1378, -1378, -1378,  2223, -1378, -1378,
+   -1378, -1378, -1378, -1378, -1378, -1378, -1378, -1326, -1377, -1378,
+   -1378, -1074,   -25, -1378,   -31, -1378,   -90, -1378,  -874,  1348,
+    1407,  -215,  -337,  -742,  1168, -1378,   -70
 };
 
-static const short yycheck[] = {    23,
-    69,    70,    23,     4,   374,     4,    94,   308,   344,   750,
-   967,     4,  1335,     4,  1337,    45,    46,   185,     4,     4,
-   188,     5,     4,     6,     5,     3,     6,    43,    66,    66,
-   105,     4,    67,   199,     6,   201,     7,    72,     6,     6,
-    67,   209,    67,   211,    67,    72,    66,    72,   169,    72,
-    34,    35,    36,    34,    35,    36,    67,    67,     6,     4,
-   200,    72,    72,  1135,  1412,   205,   188,   189,  1416,     5,
-    67,  1419,  1144,     6,   199,    72,   188,   189,   200,  1151,
-     4,   206,    50,   215,   188,   189,   188,   189,     4,     5,
-   195,   196,   306,   205,     7,   207,     6,   199,    34,    35,
-    36,   205,    50,   207,   206,   188,   189,   131,   132,   133,
-   188,   189,   136,   137,   199,     6,   140,     5,    34,    35,
-    36,   206,   205,   147,   199,   149,   150,   151,   206,   153,
-   344,   155,   156,     6,   158,   108,   109,     6,   188,   189,
-    67,   199,   172,   201,   174,    72,    34,    35,    36,    67,
-   180,   175,   176,    39,    72,   205,    42,   207,   199,   188,
-   189,   199,   199,   108,   109,   206,     6,   199,   909,   206,
-   194,   195,   207,   197,   206,   199,     7,   206,   202,   203,
-   207,     7,   207,   199,   207,     6,   206,   523,     6,    39,
-   188,   189,    42,    43,   200,    45,   207,   207,   499,   205,
-   536,   188,   189,   174,   175,   176,   177,   205,   188,   189,
-   207,   189,     7,   206,    47,   206,   188,   189,   201,   206,
-   206,   206,   206,   253,   206,   206,   250,   395,   297,   298,
-   299,   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,   296,   206,   406,   199,     8,  1349,   188,   189,
-   207,  1353,   306,     6,     7,  1608,  1243,   308,  1611,   207,
-  1613,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-   324,   325,   326,   327,   328,   329,  1654,   195,   196,   523,
-  1658,     6,   336,  1661,   338,   203,   188,   189,   200,   343,
-   344,    39,   536,   205,    42,    43,  1067,    66,   352,   353,
-   354,   355,   356,   205,   358,   359,   360,   361,   362,   363,
-   364,   371,   372,   174,   175,   176,   177,   199,   174,   175,
-   176,   177,   376,   377,   378,   379,   188,   189,   200,   383,
-   199,    56,   201,   205,   195,   196,   200,   391,   200,   195,
-   196,   205,   373,   374,   373,   374,   400,   203,    43,   174,
-   175,   176,   177,  1706,   199,   188,   189,  1710,   199,  1712,
-   201,  1348,   188,   189,   188,   189,   188,   189,   200,   735,
-   195,   196,   205,   205,  1752,    43,   188,   189,  1756,   205,
-  1758,   205,   199,   205,   201,   199,    67,     3,   199,   188,
-   189,    72,   443,   205,    60,    61,    62,    63,   199,    65,
-   766,   500,  1504,  1505,  1506,  1507,   205,   165,   166,  1511,
-   168,   188,   189,   190,   191,   192,   178,   179,   180,   181,
-   182,   198,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,   199,   798,   799,   800,   801,   198,    43,   492,    42,
-    43,   495,    45,   195,   196,   207,    43,   501,   499,   201,
-   199,   203,   201,   178,   179,   180,   181,   182,   199,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,   199,   523,
-   524,   199,   199,   198,   201,   195,   196,    57,    58,   533,
-   534,   201,   536,   203,   538,   539,   199,   199,   201,   195,
-   196,   735,   546,   195,   196,   555,   740,   203,   199,   201,
-   201,   203,   556,   557,   190,   191,   192,   195,   196,     6,
-     7,   565,   198,   201,    45,   203,  1618,  1619,     6,   199,
-  1622,   201,   766,   577,   140,   141,   142,   143,   144,   145,
-   146,   147,   199,   632,   588,   206,   590,   591,   125,   126,
-   127,   128,   129,   199,  1315,   201,   199,     8,   201,   199,
-   199,   201,   201,    43,   798,   799,   800,   801,   199,   199,
-   201,   201,   928,   199,   199,   201,   201,   199,   206,   201,
-   901,   902,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,   632,     3,     4,     6,   199,   198,   201,     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,   199,  1716,   180,   181,   182,    39,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,   199,   201,
-   201,   203,   205,   198,   207,   199,   205,   736,   207,    60,
-    61,    62,    63,    64,    65,   205,   205,   207,   207,   205,
-   205,   207,   207,   199,   205,     6,   207,     6,   712,   713,
-   205,   205,   207,   207,   205,   205,   207,   207,   205,   205,
-   207,   207,   726,   727,   728,   729,   730,   731,   732,     4,
-   205,   735,   207,    43,   928,     6,   740,     4,   205,   743,
-   207,   205,   205,   207,   207,   199,   205,   757,   207,   753,
-   205,     5,   207,  1805,  1104,   199,   205,     6,   207,   205,
-   199,   207,   766,   205,   768,   207,   199,   178,   179,   180,
-   181,   182,     4,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,   850,     6,   794,   795,   796,   198,   205,   200,
-   207,   205,     6,   207,   798,   799,   800,   801,     5,   199,
-   804,   805,     6,   205,   808,   207,   205,   205,   207,   207,
-   205,   821,   207,   206,  1866,   819,   820,   188,   189,   205,
-   830,   207,   205,   194,   207,   205,   199,   207,   199,   205,
-   205,   207,   207,   204,     4,   206,   205,   205,   207,   207,
-   205,   205,   207,   207,   205,   199,   207,   199,   206,   206,
-   199,   855,   856,   857,   858,   859,   860,   861,   862,   863,
-   864,   865,   866,   867,   868,   869,   870,   871,   872,   873,
-   874,   875,   876,   877,   878,   879,   880,   178,   179,   180,
-   181,   182,   199,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,   199,   199,   199,   206,   897,   198,     8,   201,
-     6,   902,   206,   206,     6,   203,   910,   178,   179,   180,
-   181,   182,   916,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,   206,   111,   928,   199,   930,   198,   932,   178,
-   179,   180,   181,   182,     6,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,   948,   949,   950,     6,     3,   198,
-   178,   179,   180,   181,   182,   199,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,   199,   970,   971,   972,   199,
-   198,     5,   200,   199,   178,   179,   180,   181,   182,  1329,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,   199,
-   199,   199,   205,   199,   198,   200,   181,   182,  2050,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,   199,   199,
-  1059,   205,  1013,   198,  1126,     3,     4,   199,   199,   199,
-   199,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-    28,    29,    30,    31,    32,   199,   199,   199,   199,   199,
-   199,  1100,   199,   199,   199,   199,  1060,   199,   199,   199,
-   199,   199,   199,  1073,     4,  1075,   198,   203,   178,   179,
-   180,   181,   182,     7,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,     7,  1088,  1089,  1090,  1091,   198,  1157,
-   201,   206,     7,     7,     7,  1105,  1100,  1107,     7,  1109,
-   200,   106,   108,   206,     5,     5,     5,     5,     5,     5,
-     5,  1115,  1116,     5,     5,     5,     5,     5,     5,     5,
-     5,  1125,     5,  1104,  1128,  1104,     5,     5,   158,     6,
-     5,     5,     5,     5,  1138,     5,     5,     5,     5,     5,
-  1252,  1145,  1146,  1147,     3,     5,   202,     5,  1152,     6,
-     5,   205,  1156,   200,     6,     4,  1160,  1161,  1162,  1163,
-  1164,  1165,  1166,  1167,  1168,  1169,  1170,  1171,  1172,  1173,
-  1174,  1175,  1176,  1177,  1178,  1179,  1180,  1181,  1182,  1183,
-  1184,  1185,     6,   203,     7,     7,     7,     7,     7,     7,
-     7,   207,   207,   206,   206,  1199,     7,     7,   199,     7,
-   188,   189,  1206,   203,   170,     5,   194,   205,   205,   205,
-   205,   199,   205,   205,   202,   205,   204,     6,   206,   205,
-   205,  1225,   205,   205,   205,   205,   205,   205,   205,   205,
-   205,   205,   205,   205,  1346,     6,   205,   205,   205,     3,
-     4,   205,  1246,   205,  1248,     9,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,     3,
-     4,   200,   205,   205,   205,     9,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,   205,
-   205,   178,   179,   180,   181,   182,   199,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,     4,   199,   199,  1323,
-  1324,   198,  1332,   199,  1334,     6,  1336,     6,  1332,     6,
-  1334,   202,  1336,     7,  1338,  1339,   199,   199,  1342,     6,
-   201,     7,     7,   199,     7,   199,   199,  1351,  1329,   199,
-  1329,   199,   199,   199,   199,  1359,   199,   199,   199,   199,
-  1364,   199,   199,  1367,   199,  1369,  1370,  1371,  1372,  1373,
-  1374,  1375,  1376,  1377,  1378,  1379,  1380,  1381,  1382,  1383,
-  1384,  1385,  1386,  1387,  1388,  1389,  1390,  1391,  1392,  1393,
-  1394,  1503,   199,     6,  1398,   199,  1406,   199,   199,  1403,
-   199,  1405,  1406,  1407,     7,     7,     7,   178,   179,   180,
-   181,   182,   206,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,     7,     7,   188,   189,     7,   198,     7,     7,
-   194,     7,     7,     7,     4,   199,     7,     6,   202,     6,
-   204,     4,   206,     7,   171,     3,     3,     3,   190,     3,
-     3,     3,     3,  1565,   188,   189,     3,     3,     3,     3,
-   194,     3,     3,     3,   200,   199,     5,     5,   202,     3,
-   204,     3,   206,     6,     4,     6,   200,     6,   203,     7,
-     6,     6,  1486,     6,     6,   199,   199,   206,  1492,     6,
-     6,  1495,   107,   200,   206,   167,   205,   205,   200,   205,
-   205,   200,     6,     6,   205,  1617,   200,   205,   205,   200,
-   205,   200,   205,   205,   200,  1519,  1520,  1521,  1522,  1523,
-  1524,  1525,  1526,  1527,  1528,  1529,  1530,  1531,  1532,  1533,
-  1534,  1535,  1536,  1537,  1538,  1539,   205,  1541,  1542,   203,
-     6,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,   205,   205,   205,   205,
-   205,   198,   205,   205,   205,   178,   179,   180,   181,   182,
-   207,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     6,     4,     6,   202,   157,   198,     6,     6,     6,     6,
-   163,     6,     6,     6,     6,     6,     6,     6,     6,  1648,
-     6,     6,     6,  1715,     6,     6,     6,     6,     6,   107,
-     7,     3,     6,   186,     3,     6,     6,     3,   191,   192,
-  1624,  1625,  1626,  1627,  1628,  1629,  1630,  1631,  1632,  1633,
-  1634,  1635,  1636,  1637,  1638,  1639,  1640,  1641,  1642,  1643,
-  1644,  1645,  1646,  1647,     3,     4,     6,   190,     6,  1761,
-     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-    29,    30,    31,    32,   178,   179,   180,   181,   182,     3,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,     6,
-     6,     3,  1804,     6,   198,     3,     3,     3,  1747,   206,
-  1749,     6,     4,     6,   203,     6,   202,     7,     6,     6,
-  1714,   104,   207,   206,   206,   206,  1720,   206,  1722,   200,
-  1724,   205,  1726,  1727,  1728,  1729,  1730,  1731,  1732,  1733,
-  1734,  1735,  1736,  1737,  1738,  1739,  1740,  1741,  1742,  1743,
-  1744,  1745,  1746,   205,   205,   200,   205,   205,   200,   200,
-   200,   205,   178,   179,   180,   181,   182,   200,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,   205,     6,   200,
-   205,   200,   198,   109,   178,   179,   180,   181,   182,  1828,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,   107,
-     6,     3,     6,     6,   198,     3,     6,     6,  1802,  1803,
-     6,     6,     6,     6,     3,     6,  1810,  1811,  1812,  1813,
-  1814,  1815,  1816,  1817,  1818,  1819,  1820,  1821,  1822,  1823,
-  1824,  1825,  1826,  1827,     5,   207,     6,     5,   206,   188,
-   189,     6,   206,   205,   207,   194,   167,   205,   205,   205,
-   199,   205,   205,   200,   200,   204,   200,   206,     6,     6,
-   205,     6,   205,     6,     8,     6,     6,     6,  1862,     6,
-     6,     6,     6,  1867,  1868,  1869,  1870,  1871,  1872,  1873,
-  1874,  1875,  1876,  1877,  1878,  1879,  1880,  1881,  1882,  1883,
-  1884,  1885,  1886,  1887,     3,     4,     6,   206,     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,     5,  1920,     5,  1922,   206,
-  1924,   494,  1926,  1927,  1928,  1929,  1930,  1931,  1932,  1933,
-  1934,  1935,  1936,  1937,  1938,  1939,  1940,  1941,  1942,  1943,
-   178,   179,   180,   181,   182,   206,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,   205,   207,   205,   205,   200,
-   198,   200,   205,   205,     6,   104,   206,     8,     6,   206,
-   206,  1975,  1976,  1977,  1978,  1979,  1980,  1981,  1982,  1983,
-  1984,  1985,  1986,  1987,  1988,  1989,   206,   205,     6,     6,
-     6,     6,     6,     5,   167,     6,     5,   104,     6,   206,
-     6,     6,   200,   200,   206,   205,  2010,  2011,  2012,  2013,
-  2014,  2015,  2016,  2017,  2018,  2019,  2020,  2021,  2022,  2023,
-  2024,  2025,  2026,  2027,   178,   179,   180,   181,   182,   206,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,   207,
-   206,   205,   207,   206,   198,     6,     6,  2051,     6,  2053,
-     6,  2055,     6,  2057,  2058,  2059,  2060,  2061,  2062,  2063,
-  2064,  2065,  2066,  2067,  2068,  2069,  2070,  2071,     6,   188,
-   189,     6,     6,   207,   206,   194,   205,   205,     6,     6,
-   199,     6,     6,     6,   205,   204,   172,   206,     6,   205,
-   173,   206,   206,   206,   205,   200,     6,  2101,  2102,  2103,
-  2104,  2105,  2106,  2107,  2108,  2109,     6,     6,     6,     6,
-   205,   205,     6,   206,     6,   206,     6,   206,   205,   200,
-     6,   206,  2126,  2127,  2128,  2129,  2130,  2131,  2132,  2133,
-  2134,  2135,  2136,  2137,  2138,  2139,  2140,   178,   179,   180,
-   181,   182,   206,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,   206,   206,   206,   206,     6,   198,  2162,     6,
-  2164,     6,  2166,     6,  2168,     6,  2170,     6,  2172,   206,
-  2174,  2175,  2176,  2177,  2178,  2179,  2180,  2181,  2182,   206,
-   206,     6,     6,     6,   206,   758,   759,   206,   761,     6,
-   763,   764,     6,   206,     6,     6,   206,     6,     6,   206,
-  2204,  2205,  2206,  2207,  2208,  2209,   206,     0,     0,   634,
-     4,   882,  1063,     4,    -1,    -1,    -1,    -1,  2222,  2223,
-  2224,  2225,  2226,  2227,  2228,  2229,  2230,    -1,    -1,    -1,
-    -1,    -1,    -1,   806,   807,    -1,    -1,   810,    -1,  2243,
-  2244,  2245,  2246,  2247,  2248,  2249,    -1,  2251,    -1,  2253,
-    -1,    -1,    -1,    -1,   827,   828,    -1,    -1,    -1,    -1,
-   833,   834,    -1,  2267,  2268,  2269,    -1,   840,    -1,   842,
-    -1,    -1,    -1,     8,    -1,  2279,  2280,  2281,  2282,  2283,
-  2284,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-  2294,  2295,  2296,  2297,    -1,  2299,    -1,  2301,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2312,  2313,
-  2314,    -1,    -1,    -1,  2318,  2319,  2320,    -1,    -1,    -1,
-  2324,  2325,  2326,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,  2336,  2337,  2338,    -1,    -1,    -1,    -1,    -1,
-    -1,  2345,    -1,  2347,    -1,  2349,    -1,   920,    -1,   922,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   933,   934,   935,    -1,    -1,    -1,    -1,   940,   941,   942,
-   943,   944,   945,   946,    -1,    -1,    -1,    -1,     3,     4,
-     5,    -1,     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,     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,   178,   179,   180,   181,   182,    39,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,    -1,    -1,    -1,    -1,    60,
-    61,    62,    63,    64,    65,    -1,    -1,     8,    -1,    -1,
-     3,     4,     5,    -1,    -1,  1058,     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,     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,    -1,    -1,  1121,   174,
-   175,   176,   177,    -1,    -1,    -1,  1129,    -1,    -1,    -1,
-    -1,    -1,    -1,   188,   189,    -1,    -1,    -1,    -1,   194,
-   195,   196,    -1,    -1,   199,  1148,   201,    -1,   203,   204,
-    -1,    -1,   178,   179,   180,   181,   182,    -1,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,   188,   189,    -1,
-    -1,    -1,   198,   194,    -1,    -1,    -1,    -1,   199,     3,
-     4,   207,    -1,   204,  1187,     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,    -1,    -1,    -1,   178,   179,   180,
-   181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,   188,   189,   198,    -1,    -1,
-    -1,   194,    -1,    -1,    -1,    -1,   199,    -1,    -1,    -1,
-    -1,   204,    39,    40,    41,    42,    43,    44,    45,    46,
-    -1,    48,    -1,    50,    51,    52,    -1,    54,    55,   188,
-   189,    -1,    -1,    -1,    -1,   194,    -1,    -1,    -1,    -1,
-   199,    -1,    -1,    -1,    71,   204,    -1,    -1,    -1,    39,
-    40,    41,    42,    43,    44,    45,    46,    -1,    48,    -1,
-    50,    51,    52,    -1,    54,    55,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   101,   102,   103,    -1,    -1,    -1,
-    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,  1341,    -1,
-    -1,    -1,  1345,    -1,    -1,    -1,     0,     1,    -1,     3,
-     4,   101,   102,   103,    -1,    -1,    -1,    -1,  1361,    -1,
-    -1,    -1,    -1,    -1,   188,   189,    -1,    -1,    -1,   119,
-   194,    -1,    -1,    -1,    -1,   199,    -1,    -1,    -1,    33,
-   204,    -1,    -1,    37,    38,    39,    40,    41,    42,    43,
-    44,    45,    46,    -1,    48,    49,    50,    51,    52,    53,
-    54,    55,    -1,    -1,    -1,    59,    60,    61,    62,    63,
-    64,    65,    -1,    67,    68,    69,    70,    71,    -1,    -1,
-   207,    -1,    -1,   178,   179,   180,   181,   182,    -1,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,    -1,   100,   101,   102,   103,
-   205,    -1,   207,    -1,   108,    -1,   110,   207,   112,   113,
-   114,   115,   116,   117,   118,   119,   120,   121,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1480,  1481,    -1,
-    -1,    -1,    -1,    -1,    -1,  1488,   140,   141,   142,   143,
-   144,   145,   146,   147,    -1,    -1,  1499,  1500,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   165,   166,    -1,   168,    39,    40,    41,    42,    43,
-    44,    45,    46,    -1,    48,    -1,    50,    51,    52,    -1,
-    54,    55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,  1544,  1545,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-    -1,    39,    40,    41,    42,    43,    44,    45,    46,    -1,
-    48,    -1,    50,    51,    52,    -1,    54,    55,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,   102,   103,
-    42,    -1,    -1,    71,    -1,    39,    40,    41,    42,    43,
-    44,    45,    46,    -1,    48,   119,    50,    51,    52,    -1,
-    54,    55,    -1,    -1,    -1,    -1,    -1,  1610,    -1,    -1,
-    -1,    -1,  1615,   101,   102,   103,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   178,   179,   180,   181,
-   182,   119,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,    -1,    -1,    -1,    -1,    -1,   198,   101,   102,   103,
-    -1,    -1,    -1,   205,    -1,   207,    -1,    -1,    -1,    -1,
-   122,   123,   124,    -1,    -1,   119,    -1,    -1,   130,   131,
-   132,   133,   134,   135,   136,   137,   138,   139,    -1,    -1,
-    -1,    -1,    -1,   207,    -1,    -1,   148,   149,   150,   151,
-   152,   153,   154,   155,   156,   157,    -1,   159,   160,   161,
-   162,   163,   164,    -1,  1707,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,  1717,    -1,    -1,    -1,    -1,   207,
-    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,    -1,    -1,    -1,
-    -1,    -1,    -1,   207,    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,     4,   178,   179,   180,   181,   182,    -1,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,   198,  1806,    -1,    -1,    -1,    -1,    -1,   205,
-    33,   207,    -1,    -1,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    46,    -1,    48,    49,    50,    51,    52,
-    53,    54,    55,    -1,    -1,    -1,    59,    60,    61,    62,
-    63,    64,    65,    -1,    67,    68,    69,    70,    71,    -1,
-    -1,    -1,    -1,    -1,   207,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,  1865,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,   101,   102,
-   103,    -1,    -1,    -1,    -1,   108,    -1,   110,   207,   112,
-   113,   114,   115,   116,   117,   118,   119,   120,   121,    -1,
-    -1,    39,    40,    41,    42,    43,    44,    45,    46,    -1,
-    48,    -1,    50,    51,    52,  1918,    54,    55,   178,   179,
-   180,   181,   182,    -1,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,    71,    -1,    -1,    -1,    -1,   198,    -1,
-    -1,    -1,   178,   179,   180,   181,   182,   207,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,   198,   101,   102,   103,    -1,    -1,  1971,    -1,
-    -1,   207,    -1,    -1,    -1,    -1,   178,   179,   180,   181,
-   182,   119,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   207,  2009,   178,   179,   180,
-   181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,
-    -1,   178,   179,   180,   181,   182,   207,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,    -1,    -1,   178,   179,   180,   181,   182,
-   207,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,
-   179,   180,   181,   182,   207,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,    -1,    -1,   178,   179,   180,   181,   182,   207,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,
-   181,   182,   207,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,
-    -1,   178,   179,   180,   181,   182,   207,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,    -1,    -1,   178,   179,   180,   181,   182,
-   207,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,
-   179,   180,   181,   182,   207,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,    -1,    -1,   178,   179,   180,   181,   182,   207,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,
-   181,   182,   207,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,
-    -1,   178,   179,   180,   181,   182,   207,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,    -1,    -1,   178,   179,   180,   181,   182,
-   207,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,
-   179,   180,   181,   182,   207,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,    -1,    -1,   178,   179,   180,   181,   182,   207,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,
-   181,   182,   207,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,
-    -1,   178,   179,   180,   181,   182,   207,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   200,    -1,    -1,    -1,    -1,   205,   178,
-   179,   180,   181,   182,    -1,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,   179,   180,
-   181,   182,   205,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   178,
-   179,   180,   181,   182,   205,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   178,   179,   180,   181,   182,   205,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   178,   179,   180,   181,   182,   205,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   178,   179,   180,   181,   182,
-   205,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   202,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,    -1,    -1,   202,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
-   180,   181,   182,    -1,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
-   200,   178,   179,   180,   181,   182,    -1,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   200,   178,   179,   180,   181,   182,    -1,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
-    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
-   181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,   200,   178,   179,   180,   181,   182,    -1,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,
-   182,    -1,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
-   179,   180,   181,   182,    -1,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   200,   178,   179,   180,   181,   182,    -1,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
-   180,   181,   182,    -1,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
-   200,   178,   179,   180,   181,   182,    -1,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   200,   178,   179,   180,   181,   182,    -1,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
-    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
-   181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,   200,   178,   179,   180,   181,   182,    -1,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,
-   182,    -1,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
-   179,   180,   181,   182,    -1,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   200,   178,   179,   180,   181,   182,    -1,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
-   180,   181,   182,    -1,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
-   200,   178,   179,   180,   181,   182,    -1,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   200,   178,   179,   180,   181,   182,    -1,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
-    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
-   181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,   200,   178,   179,   180,   181,   182,    -1,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,
-   182,    -1,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
-   179,   180,   181,   182,    -1,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   200,   178,   179,   180,   181,   182,    -1,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
-   180,   181,   182,    -1,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
-   200,   178,   179,   180,   181,   182,    -1,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   200,   178,   179,   180,   181,   182,    -1,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
-    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
-   181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,   200,   178,   179,   180,   181,   182,    -1,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,
-   182,    -1,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
-   179,   180,   181,   182,    -1,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   200,   178,   179,   180,   181,   182,    -1,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
-   180,   181,   182,    -1,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
-   200,   178,   179,   180,   181,   182,    -1,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   200,   178,   179,   180,   181,   182,    -1,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
-    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
-   181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,   200,   178,   179,   180,   181,   182,    -1,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,
-   182,    -1,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
-   179,   180,   181,   182,    -1,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   200,   178,   179,   180,   181,   182,    -1,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
-   180,   181,   182,    -1,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
-   200,   178,   179,   180,   181,   182,    -1,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   200,   178,   179,   180,   181,   182,    -1,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
-    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
-   181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,   200,   178,   179,   180,   181,   182,    -1,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,
-   182,    -1,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
-   179,   180,   181,   182,    -1,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   200,   178,   179,   180,   181,   182,    -1,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
-   180,   181,   182,    -1,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
-   200,   178,   179,   180,   181,   182,    -1,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   200,   178,   179,   180,   181,   182,    -1,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
-    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
-   181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,   200,   178,   179,   180,   181,   182,    -1,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,
-   182,    -1,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
-   179,   180,   181,   182,    -1,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   200,   178,   179,   180,   181,   182,    -1,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
-   180,   181,   182,    -1,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
-   200,   178,   179,   180,   181,   182,    -1,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
-    -1,   198,    -1,   200,   178,   179,   180,   181,   182,    -1,
-   184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
-    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
-   181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
-   178,   179,   180,   181,   182,    -1,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-   198,    -1,   200,   178,   179,   180,   181,   182,    -1,   184,
-   185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,
-   182,    -1,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
-   179,   180,   181,   182,    -1,   184,   185,   186,   187,   188,
-   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
-    -1,   200,   178,   179,   180,   181,   182,    -1,   184,   185,
-   186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,   198,    -1,   200,   178,   179,   180,   181,   182,
-    -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
-   180,   181,   182,    -1,   184,   185,   186,   187,   188,   189,
-   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198
+/* 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 -57
+static const short yytable[] =
+{
+     144,   212,   214,    78,   143,    79,   250,   566,   503,   539,
+     913,  1047,  1419,   186,  1422,   382,   179,   181,   386,   189,
+     200,   255,   203,   154,   751,   384,   215,   210,  1413,   154,
+     198,  1073,  1074,  1414,     7,   101,  1322,  1076,  1493,   403,
+     392,   405,  1493,   310,   257,  1493,   258,  1413,     6,  1413,
+    1413,   156,  1414,   904,  1414,  1414,   126,   127,   128,   524,
+    1413,   210,    88,  1264,   525,  1414,  1413,   490,   210,  1413,
+      90,  1414,  1273,   210,  1414,   148,  1075,   373,   374,  1280,
+     629,  1077,   136,   137,   259,   630,   260,   252,   408,   253,
+     126,   127,   128,   499,  1107,  1122,  1108,   126,   127,   128,
+     175,   176,   126,   127,   128,   373,   374,   736,   303,   304,
+     305,   177,   737,   306,   309,   578,   579,   314,   178,   373,
+     374,   373,   374,   375,   334,  1323,   335,   336,   337,    89,
+     339,   499,   341,   342,   393,   353,  1109,   357,  1110,   376,
+      91,  1413,   151,   368,   358,   370,  1414,   311,   312,   800,
+     917,   377,   371,   372,   210,   742,   155,   905,   906,  1058,
+     373,   374,   155,   801,   742,  1188,   136,   137,  1492,  1067,
+    1189,   390,   391,   853,   394,    92,   396,  1413,   636,   399,
+     400,   502,  1414,   126,   127,   128,   199,  1496,   757,  1499,
+    1708,   802,  1413,   373,   374,   193,   101,  1414,   194,   745,
+    1712,   771,   129,   130,   131,   132,  1714,   136,   137,  1801,
+     557,    95,   216,   373,   374,   187,    93,   204,   373,   374,
+     385,   190,   201,   256,   446,   591,   752,   444,   211,   491,
+     492,   493,   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,   213,   149,    12,  1251,  1434,   598,
+    1493,  1803,  1438,   498,  1493,  1657,    96,  1493,  1661,   504,
+    1664,    94,   509,   510,   511,   512,   513,   514,   515,   516,
+     517,   518,   519,   520,   521,   522,   523,   373,   374,   156,
+     499,   940,   158,   530,   261,   532,   262,  1804,   150,   803,
+     304,   498,   169,   499,   159,   170,   171,  1201,   172,   543,
+     544,   545,   546,   547,    97,   549,   550,   551,   552,   553,
+     554,   555,   560,   561,   147,   136,   137,   151,   129,   130,
+     131,   132,   853,   568,   569,   570,   571,   263,   152,   264,
+     580,   941,   153,   129,   130,   131,   132,   157,   587,  1061,
+     136,   137,  1343,   562,   562,   565,   565,   595,  1493,   373,
+     374,   883,  1493,  1755,  1493,   136,   137,  1759,   884,  1761,
+     373,   374,   744,   373,   374,   265,  1111,   266,  1112,   183,
+     897,   161,   184,   185,   373,   374,   158,   567,   373,   374,
+     950,   373,   374,    13,    14,    15,    16,    17,    18,    19,
+      20,  1335,   373,   374,   635,  1337,   373,   374,  1339,   373,
+     374,   927,   747,  1569,  1570,  1571,  1572,  1092,  1093,  1489,
+    1576,     8,     9,  1495,    10,   160,  1498,   317,   318,   319,
+     162,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   173,   958,   959,   960,   961,   331,   163,   740,
+     373,   374,   304,  1101,  1102,   316,  1252,  1433,   748,   267,
+     746,   268,  1132,   317,   318,   319,   164,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   168,   174,
+     498,   758,   269,   331,   270,   373,   374,   136,   137,   188,
+     740,   769,   494,   498,   253,   773,   774,  1141,   165,   166,
+     182,   167,   499,   781,   136,   137,   790,   902,   271,   535,
+     272,   253,   195,   791,   792,   196,   129,   130,   131,   132,
+     197,   273,   795,   274,   328,   329,   330,  1670,  1671,   205,
+     191,  1674,   331,   499,   804,   136,   137,   192,   136,   137,
+     770,   742,   253,   743,   855,   814,   206,   816,   817,   326,
+     327,   328,   329,   330,   207,   275,  1399,   276,   208,   331,
+    1001,  1002,  1003,  1004,  1005,   499,   499,   499,   499,    46,
+      47,    48,    49,  1084,    51,   277,   279,   278,   280,   209,
+     248,  1060,  1062,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   299,   854,    98,   343,   281,   331,   282,   300,
+     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
+     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   283,  1765,   284,   317,   318,   319,
+     344,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   285,   287,   286,   288,   251,   331,   898,   301,
+     313,    46,    47,    48,    49,    50,    51,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   315,   887,
+     888,   332,   974,   331,   333,   289,   291,   290,   292,   293,
+     295,   294,   296,   889,   890,   891,   892,   893,   894,   895,
+     338,   297,   498,   298,   734,   499,   735,   901,   508,   742,
+     907,   772,   742,  1069,   931,  1070,   340,   742,   919,  1083,
+     916,   742,   355,  1113,  1840,   356,   742,  1230,  1114,   742,
+     742,  1115,  1116,   498,  1189,   740,  1190,   742,  1710,  1208,
+    1711,  1723,  1725,  1724,  1726,  1727,   381,  1728,   910,  1750,
+     362,  1751,  1014,   354,   360,   954,   955,   956,  1831,  1923,
+    1832,  1924,  1925,   367,  1926,   498,   498,   498,   498,   361,
+     363,   964,   965,   364,  1927,   968,  1928,  2054,   933,  2055,
+     365,  2056,   981,  2057,   366,  1895,   979,   980,   378,   133,
+     345,   990,  2058,   389,  2059,   135,  2165,  2167,  2166,  2168,
+     138,  2169,  2171,  2170,  2172,   141,   379,   346,  2173,  2175,
+    2174,  2176,  2252,  2254,  2253,  2255,  2256,  2300,  2257,  2301,
+     380,   395,  1018,  1019,  1020,  1021,  1022,  1023,  1024,  1025,
+    1026,  1027,  1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,
+    1036,  1037,  1038,  1039,  1040,  1041,  1042,  1043,  2302,  2304,
+    2303,  2305,   317,   318,   319,   397,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,  2348,   854,  2349,
+     540,   398,   331,  1063,   975,   401,  2350,  1068,  2351,   402,
+     317,   318,   319,  1072,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   498,  2352,  1085,  2353,  1086,
+     331,   319,   404,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   406,  1103,  1104,  1105,   407,   331,
+     317,   318,   319,   409,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   410,   411,  1124,  1125,  1126,
+     331,   439,   412,   413,   414,   415,   416,   417,   418,   419,
+     317,   318,   319,  1405,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   420,   421,   422,   423,  2075,
+     331,   442,   424,   425,   426,   427,   428,   429,   430,   431,
+     432,  1194,   433,   434,  1160,    98,   302,   435,   436,  1255,
+     437,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   438,   441,   443,   445,   331,
+     496,   505,  1225,   962,   507,   506,   536,  1195,   541,   548,
+     556,   582,   583,   586,  1203,   592,  1204,   589,   599,   600,
+     317,   318,   319,   601,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,  1213,  1214,  1215,  1216,  1286,
+     331,   602,   603,   604,   605,   606,  1231,  1224,  1234,   607,
+    1237,   608,   609,   610,   611,   612,   613,   614,   615,   616,
+     617,   618,  1244,  1245,   619,   620,   621,   623,   622,   624,
+     625,   626,  1254,   627,   562,  1257,   565,   628,   631,   738,
+     632,  1066,   633,   739,   749,  1267,   750,   754,   759,   756,
+     789,   760,  1274,  1275,  1276,   761,  1349,   763,   765,  1281,
+     766,   775,   806,  1285,   793,   794,   807,  1287,  1288,  1289,
+    1290,  1291,  1292,  1293,  1294,  1295,  1296,  1297,  1298,  1299,
+    1300,  1301,  1302,  1303,  1304,  1305,  1306,  1307,  1308,  1309,
+    1310,  1311,  1312,   808,   809,   810,   812,   813,   819,   850,
+     820,   857,   821,   822,   823,   824,   825,  1321,   826,   827,
+     133,   134,   828,   829,  1325,   830,   135,   831,   832,   833,
+     834,   138,   835,   836,   307,   837,   141,   886,   308,   838,
+     839,   840,   841,  1333,   842,   317,   318,   319,   843,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+    1431,    98,   302,   844,  1346,   331,  1347,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,    98,   302,   851,   845,   846,   847,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   896,   900,   317,   318,   319,   858,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   848,   903,
+     859,  1403,  1404,   331,  1412,   908,  1418,   909,  1421,   911,
+    1411,   849,  1417,   915,  1420,   852,  1423,  1424,   860,   922,
+    1427,   861,   924,   934,   862,   863,   864,   865,   866,  1436,
+     562,   867,   565,   868,   869,   870,   871,  1444,   872,   873,
+     874,   875,  1449,   876,   877,  1452,   878,  1454,  1455,  1456,
+    1457,  1458,  1459,  1460,  1461,  1462,  1463,  1464,  1465,  1466,
+    1467,  1468,  1469,  1470,  1471,  1472,  1473,  1474,  1475,  1476,
+    1477,  1478,  1479,  1317,   879,   880,  1481,  1568,   370,   881,
+     882,  1486,   935,   303,   304,  1487,   912,   936,   937,   317,
+     318,   319,   938,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   939,   942,   133,   134,   943,   331,
+     944,   945,   135,   946,   949,   947,  1228,   138,  1229,   948,
+     767,   957,   141,   963,   768,   969,   971,   976,   977,   978,
+     982,   983,   984,   985,   986,   989,   133,   134,   991,  1620,
+     992,   995,   135,   996,   997,   998,   999,   138,  1008,  1009,
+     929,  1010,   141,  1011,   930,  1012,  1057,  1013,  1015,  1016,
+    1059,  1064,  1065,  1071,  1552,  1079,  1081,  1082,  1090,  1091,
+    1557,  1106,  1119,  1561,   317,   318,   319,  1120,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,  1328,
+    1123,  1669,  1127,  1128,   331,  1129,   495,  1584,  1585,  1586,
+    1587,  1588,  1589,  1590,  1591,  1592,  1593,  1594,  1595,  1596,
+    1597,  1598,  1599,  1600,  1601,  1602,  1603,  1604,  1133,  1606,
+    1607,   317,   318,   319,  1134,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,  1135,  1136,  1137,  1138,
+    1139,   331,  1143,   495,  1144,   317,   318,   319,   558,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+    1329,  1140,  1142,  1145,  1146,   331,   351,  1147,  1148,  1149,
+    1150,  1151,   359,  1152,  1153,  1154,  1157,  1155,  1156,  1158,
+    1161,  1704,  1159,  1191,  1196,  1192,  1330,  1197,  1199,  1764,
+    1205,  1206,  1207,  1210,  1211,   383,  1212,  1217,  1218,  1219,
+     387,   388,  1677,  1679,  1681,  1682,  1683,  1684,  1685,  1686,
+    1687,  1688,  1689,  1690,  1691,  1692,  1693,  1694,  1695,  1696,
+    1697,  1698,  1699,  1700,  1701,  1702,  1220,  1221,  1222,  1223,
+      98,   537,  1232,  1247,  1235,  1807,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+    1238,   317,   318,   319,  1240,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,  1241,  1242,  1839,  1243,
+    1796,   331,  1799,  1246,  1256,  1259,  1260,  1262,  1261,  1266,
+    1263,  1265,  1763,  1268,  1269,  1270,  1271,  1272,  1769,  1278,
+    1771,  1279,  1773,  1282,  1775,  1776,  1777,  1778,  1779,  1780,
+    1781,  1782,  1783,  1784,  1785,  1786,  1787,  1788,  1789,  1790,
+    1791,  1792,  1793,  1794,  1795,  1283,  1284,  1314,  1318,  1324,
+    1315,  1316,   317,   318,   319,  1319,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,  1320,  1331,  1332,
+    1504,  1336,   331,  1334,  1338,  1340,  1344,  1345,   317,   318,
+     319,  1863,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,  1350,  1352,  1353,  1354,  1356,   331,  1355,
+    1837,  1838,  1425,  1400,  1432,  1435,  1358,  1437,  1845,  1846,
+    1847,  1848,  1849,  1850,  1851,  1852,  1853,  1854,  1855,  1856,
+    1857,  1858,  1859,  1860,  1861,  1862,  1359,  1360,  1364,  1365,
+    1366,  1369,  1439,  1368,  1398,   133,   134,  1371,  1440,  1441,
+    1442,   135,  1443,  1445,  1447,  1448,   138,  1450,  1451,  1480,
+    1453,   141,  1482,   538,  1503,  1490,   593,  1485,  1491,  1502,
+    1891,  1505,  1507,  1508,  1506,  1897,  1899,  1901,  1902,  1903,
+    1904,  1905,  1906,  1907,  1908,  1909,  1910,  1911,  1912,  1913,
+    1914,  1915,  1916,  1917,  1918,  1919,    98,   302,  1509,  1511,
+    1514,  1518,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,  1512,  1516,  1950,  1550,
+    1952,  1554,  1954,   741,  1956,  1957,  1958,  1959,  1960,  1961,
+    1962,  1963,  1964,  1965,  1966,  1967,  1968,  1969,  1970,  1971,
+    1972,  1973,   317,   318,   319,  1555,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,  1546,  1558,  1559,
+    1562,  1563,   331,  1564,  1567,  1573,  1574,  1611,  1575,   755,
+    1577,  1578,  1579,  1997,  1998,  1999,  2000,  2001,  2002,  2003,
+    2004,  2005,  2006,  2007,  2008,  2009,  2010,  2011,  1580,  1608,
+    1613,  1619,  1614,  1616,  1618,  1621,  1622,  1623,  1625,  1624,
+    1626,  1655,  1627,  1656,  1658,  1662,  1628,  1665,  2033,  2035,
+    2037,  2038,  2039,  2040,  2041,  2042,  2043,  2044,  2045,  2046,
+    2047,  2048,  2049,  2050,  2051,  2052,   317,   318,   319,  1629,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,  1668,  1672,  1673,  1675,  1654,   331,  1651,  1706,  2076,
+    1707,  2078,  1709,  2080,  1718,  2082,  2083,  2084,  2085,  2086,
+    2087,  2088,  2089,  2090,  2091,  2092,  2093,  2094,  2095,  2096,
+    1713,  1408,  1409,  1715,  1719,  1716,  1717,   135,  1720,  1721,
+    1722,  1752,  1410,  1753,  1754,  1757,  1758,   141,  1760,   178,
+    1762,  1767,  1768,  1770,  1772,  1774,  1797,  1800,  1802,  2120,
+    2121,  2122,  2123,  2124,  2125,  2126,  2127,  2128,  1805,  1808,
+    1809,  1833,  1834,  1835,  1836,  1864,  1867,  1868,  1892,  1869,
+    1893,  1922,  1870,  1871,  2145,  2147,  2149,  2151,  2153,  2155,
+    2156,  2157,  2158,  2159,  2160,  2161,  2162,  2163,  2164,   317,
+     318,   319,  1872,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,  1921,  1947,  1949,  1951,  1953,   331,
+    2186,  1955,  2188,  2077,  2190,  2079,  2192,  2081,  2194,  2013,
+    2196,  2097,  2198,  2199,  2200,  2201,  2202,  2203,  2204,  2205,
+    2206,  1974,  2012,  2113,  2014,  2015,  2053,   920,   921,  2187,
+     923,  2129,   925,   926,  2130,  2131,  2132,  2133,  2134,  2189,
+    2191,  2193,  2216,  2217,  2218,  2219,  2220,  2221,  2195,  2197,
+    2231,  2232,  2233,  2265,  2267,  2269,  2285,  2286,  2287,  2310,
+    2234,  2235,  2236,  2237,  2238,  2239,  2241,  2243,  2245,  2312,
+    2314,  2339,  2340,  2341,  2355,   966,   967,  2357,  2359,   970,
+      77,  2258,  2259,  2260,  2261,  2262,  2263,  2264,    85,  2266,
+     856,  2268,  1046,  1198,     0,     0,   987,   988,     0,     0,
+       0,     0,   993,   994,     0,  2276,  2277,  2278,     0,  1000,
+       0,  1007,     0,     0,     0,     0,     0,  2288,  2289,  2290,
+    2292,  2294,  2296,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  2306,  2307,  2308,  2309,     0,  2311,     0,  2313,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    2318,  2319,  2320,     0,     0,     0,  2324,  2325,  2326,     0,
+       0,     0,  2330,  2331,  2332,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  2343,  2345,  2347,     0,     0,     0,
+       0,     0,     0,  2354,     0,  2356,     0,  2358,     0,  1078,
+       0,  1080,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  1087,  1088,  1089,     0,     0,     0,     0,  1094,
+    1095,  1096,  1097,  1098,  1099,  1100,     0,     0,     0,     0,
+      98,    99,   100,     0,   101,     0,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+       0,   126,   127,   128,    98,   343,     0,     0,     0,     0,
+     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
+     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,     0,     0,     0,   317,   318,   319,
+     344,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,     0,   527,
+       0,    46,    47,    48,    49,    50,    51,     0,     0,   932,
+       0,     0,    98,   302,   210,     0,     0,  1193,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,     0,   126,   127,   128,    98,   302,     0,     0,
+       0,     0,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,     0,     0,   973,     0,
+    1248,   129,   130,   131,   132,     0,     0,     0,  1258,     0,
+       0,     0,     0,     0,     0,   133,   134,     0,     0,     0,
+       0,   135,     0,   136,   137,     0,   138,  1277,   139,     0,
+     140,   141,     0,     0,   317,   318,   319,     0,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   133,
+     497,     0,     0,     0,   331,   135,     0,     0,     0,     0,
+     138,    98,   537,   776,     0,   141,  1313,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,     0,     0,     0,     0,     0,     0,     0,     0,   317,
+     318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,   133,   134,   331,
+       0,     0,     0,   135,     0,     0,     0,     0,   138,     0,
+       0,     0,     0,   141,   572,    30,    31,   573,   574,    34,
+     575,    36,     0,    37,     0,    39,    40,    41,     0,    43,
+      44,   133,   134,     0,     0,     0,     0,   135,     0,     0,
+       0,     0,   138,     0,     0,     0,    56,   141,   317,   318,
+     319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,     0,     0,     0,     0,    58,    59,    60,   317,
+     318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,    70,     0,     0,     0,     0,   331,
+       0,  1426,     0,     0,     0,  1430,  1249,     0,  1250,     0,
+      -8,     1,     0,   -13,   -56,     0,     0,     0,     0,     0,
+       0,  1446,     0,     0,     0,     0,   133,   134,     0,     0,
+       0,     0,   135,     0,     0,     0,     0,   138,     0,     0,
+       0,     0,   141,   -56,     0,     0,     0,   -56,   -56,   -56,
+     -56,   -56,   -56,   -56,   -56,   -56,   -56,     0,   -56,   -56,
+     -56,   -56,   -56,   -56,   -56,   -56,     0,     0,     0,   -56,
+     -56,   -56,   -56,   -56,   -56,   -56,     0,   -56,   -56,   -56,
+     -56,   -56,   576,   572,    30,    31,   573,   574,    34,   575,
+      36,     0,    37,     0,    39,    40,    41,     0,    43,    44,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     -56,   -56,   -56,   -56,     0,    56,     0,     0,   -56,     0,
+     -56,     0,   -56,   -56,   -56,   -56,   -56,   -56,   -56,   -56,
+     -56,   -56,     0,     0,     0,     0,     0,     0,     0,     0,
+    1547,  1548,     0,     0,     0,    58,    59,    60,  1553,     0,
+     -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,     0,  1565,
+    1566,     0,     0,    70,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    -8,    -8,     0,    -8,   572,
+      30,    31,   573,   574,    34,   575,    36,     0,    37,     0,
+      39,    40,    41,     0,    43,    44,     0,     0,     0,     0,
+       0,     0,     0,     0,  1609,  1610,     0,     0,     0,     0,
+       0,    56,     0,     0,   572,    30,    31,   573,   574,    34,
+     575,    36,     0,    37,     0,    39,    40,    41,     0,    43,
+      44,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    58,    59,    60,     0,     0,    56,     0,     0,     0,
+       0,   581,     0,     0,     0,     0,     0,     0,     0,    70,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    1660,     0,     0,     0,     0,  1667,    58,    59,    60,     0,
+     572,    30,    31,   573,   574,    34,   575,    36,     0,    37,
+       0,    39,    40,    41,    70,    43,    44,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    56,   637,   638,   639,   640,   641,   642,   643,
+     644,   645,   646,   647,   648,   649,   650,   651,   652,   653,
+     654,   655,   656,   657,   658,   659,   660,   661,   662,   663,
+       0,     0,    58,    59,    60,     0,     0,   596,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      70,   218,     0,     0,     0,     0,     0,  1756,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  1766,     0,     0,
+       0,     0,   597,   637,   638,   639,   640,   641,   642,   643,
+     644,   645,   646,   647,   648,   649,   650,   651,   652,   653,
+     654,   655,   656,   657,   658,   659,   660,   661,   662,   663,
+     317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,     0,     0,     0,  1406,     0,  1407,
+       0,   219,   220,   221,     0,     0,     0,   664,   815,   222,
+     223,   224,   225,   226,   227,   228,   229,   230,   231,     0,
+       0,     0,     0,     0,     0,     0,  1841,   232,   233,   234,
+     235,   236,   237,   238,   239,   240,   241,     0,   242,   243,
+     244,   245,   246,   247,     0,     0,     0,     0,     0,     0,
+     317,   318,   319,    25,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,     0,     0,     0,  1017,     0,   780,
+       0,     0,    26,     0,     0,  1894,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,     0,    37,    38,    39,
+      40,    41,    42,    43,    44,     0,     0,     0,    45,    46,
+      47,    48,    49,    50,    51,     0,    52,    53,    54,    55,
+      56,   572,    30,    31,   573,   574,    34,   575,    36,     0,
+      37,     0,    39,    40,    41,     0,    43,    44,  1948,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    57,
+      58,    59,    60,    56,     0,     0,     0,    61,     0,    62,
+       0,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    58,    59,    60,     0,     0,     0,     0,
+       0,  1993,     0,     0,     0,     0,     0,     0,   317,   318,
+     319,    70,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,     0,     0,     0,     0,     0,   782,     0,  2031,
+     317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,     0,     0,   317,   318,   319,   783,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+       0,     0,   317,   318,   319,   928,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,     0,     0,   317,   318,
+     319,   953,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,     0,     0,   317,   318,   319,  1226,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,     0,     0,
+     317,   318,   319,  1428,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,     0,     0,   317,   318,   319,  1429,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+       0,     0,   317,   318,   319,  1488,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,     0,     0,   317,   318,
+     319,  1494,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,     0,     0,   317,   318,   319,  1497,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,     0,     0,
+     317,   318,   319,  1500,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,     0,     0,   317,   318,   319,  1501,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+       0,     0,   317,   318,   319,  1549,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,     0,     0,   317,   318,
+     319,  1612,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,     0,     0,   317,   318,   319,  1615,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,     0,     0,
+     317,   318,   319,  1617,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,     0,     0,   317,   318,   319,  1653,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+       0,     0,   317,   318,   319,  1866,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,     0,     0,   317,   318,
+     319,  1920,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,   526,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,   558,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,   559,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,   590,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,   714,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,   715,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,   728,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,   729,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,   730,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,   731,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,   732,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,   733,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,   796,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,   797,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,   798,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,   918,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,   951,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,   952,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,   972,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1117,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1118,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1130,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1131,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1162,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1163,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1164,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1165,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1166,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1167,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1168,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1169,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1170,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1171,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1172,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1173,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1174,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1175,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1176,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1177,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1178,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1179,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1180,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1181,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1182,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1183,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1184,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1185,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1186,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1187,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1202,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1209,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1326,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1327,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1341,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1342,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1348,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1351,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1362,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1367,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1370,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1372,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1373,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1374,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1375,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1376,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1377,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1378,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1379,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1380,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1381,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1382,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1383,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1384,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1385,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1386,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1387,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1388,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1389,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1390,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1391,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1392,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1393,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1394,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1395,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1396,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1397,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1401,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1402,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1510,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1522,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1523,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1524,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1525,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1526,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1527,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1528,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1529,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1530,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1531,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1532,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1533,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1534,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1535,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1536,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1537,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1538,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1539,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1540,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1541,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1542,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1544,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1545,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1630,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1631,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1632,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1633,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1634,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1635,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1636,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1637,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1638,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1639,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1640,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1641,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1642,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1643,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1644,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1645,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1646,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1647,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1648,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1649,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1650,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1729,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1730,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1731,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1732,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1733,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1734,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1735,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1736,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1737,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1738,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1739,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1740,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1741,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1742,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1743,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1744,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1745,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1746,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1747,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1748,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1749,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1806,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1813,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1814,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1815,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1816,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1817,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1818,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1819,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1820,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1821,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1822,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1823,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1824,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1825,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1826,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1827,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1828,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1829,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1830,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1865,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1873,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1874,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1875,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1876,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1877,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1878,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1879,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1880,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1881,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1882,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1883,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1884,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1885,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1886,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1887,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1888,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1889,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1890,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1929,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1930,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1931,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1932,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1933,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1934,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1935,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1936,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1937,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1938,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1939,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1940,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1941,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1942,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1943,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1944,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1945,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1946,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1978,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1979,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1980,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1981,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1982,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1983,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1984,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1985,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1986,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1987,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  1988,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  1989,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  1990,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  1991,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  1992,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2016,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2017,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2018,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2019,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2020,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2021,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2022,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2023,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2024,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2025,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2026,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2027,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2028,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2029,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2030,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2060,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2061,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2062,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2063,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2064,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2065,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2066,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2067,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2068,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2069,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2070,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2071,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2072,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2073,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2074,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2104,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2105,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2106,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2107,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2108,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2109,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2110,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2111,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2112,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2135,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2136,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2137,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2138,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2139,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2140,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2141,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2142,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2143,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2177,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2178,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2179,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2180,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2181,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2182,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2183,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2184,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2185,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2207,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2208,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2209,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2210,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2211,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2212,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2225,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2226,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2227,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2228,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2229,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2230,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2246,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2247,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2248,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2249,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2250,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2251,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2270,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2271,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2272,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2282,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2283,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2284,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2297,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2298,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2299,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2315,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2316,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2317,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2321,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,     0,     0,   317,   318,   319,  2322,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,     0,     0,   317,   318,
+     319,  2323,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+       0,     0,   317,   318,   319,  2327,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,     0,     0,   317,   318,   319,  2328,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+     317,   318,   319,  2329,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,   317,   318,   319,   501,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,   317,   318,   319,   634,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,   317,   318,   319,   693,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,   317,   318,   319,   695,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,   317,   318,   319,   697,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,   317,   318,   319,   699,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,   317,   318,   319,
+     701,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,   317,   318,
+     319,   703,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,   317,
+     318,   319,   705,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,     0,     0,   331,
+     317,   318,   319,   707,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,   317,   318,   319,   709,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,   317,   318,   319,   711,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,   317,   318,   319,   713,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,   317,   318,   319,   717,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,   317,   318,   319,   719,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,   317,   318,   319,   721,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,   317,   318,   319,
+     723,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,   317,   318,
+     319,   725,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,   317,
+     318,   319,   727,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,     0,     0,   331,
+     317,   318,   319,   799,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,   317,   318,   319,   805,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,   317,   318,   319,   899,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,   317,   318,   319,  1049,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,   317,   318,   319,  1051,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,   317,   318,   319,  1053,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,   317,   318,   319,  1055,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,   317,   318,   319,
+    1056,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,   317,   318,
+     319,  1200,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+     528,   317,   318,   319,     0,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,     0,   529,   317,   318,   319,     0,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,   531,   317,   318,   319,
+       0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,     0,   533,
+     317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,   534,   317,   318,   319,     0,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,     0,   542,   317,   318,   319,     0,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,   584,   317,
+     318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,     0,     0,   331,
+       0,   585,   317,   318,   319,     0,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,   588,   317,   318,   319,     0,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,     0,   594,   317,   318,
+     319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+     692,   317,   318,   319,     0,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,     0,   694,   317,   318,   319,     0,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,   696,   317,   318,   319,
+       0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,     0,   698,
+     317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,   700,   317,   318,   319,     0,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,     0,   702,   317,   318,   319,     0,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,   704,   317,
+     318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,     0,     0,   331,
+       0,   706,   317,   318,   319,     0,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,   708,   317,   318,   319,     0,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,     0,   710,   317,   318,
+     319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+     712,   317,   318,   319,     0,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,     0,   716,   317,   318,   319,     0,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,   718,   317,   318,   319,
+       0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,     0,   720,
+     317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,   722,   317,   318,   319,     0,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,     0,   724,   317,   318,   319,     0,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,   726,   317,
+     318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,     0,     0,   331,
+       0,   762,   317,   318,   319,     0,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,   764,   317,   318,   319,     0,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,     0,   777,   317,   318,
+     319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+     778,   317,   318,   319,     0,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,     0,   779,   317,   318,   319,     0,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,   784,   317,   318,   319,
+       0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,     0,   785,
+     317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,   786,   317,   318,   319,     0,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,     0,   787,   317,   318,   319,     0,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,   788,   317,
+     318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,     0,     0,   331,
+       0,   811,   317,   318,   319,     0,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,   818,   317,   318,   319,     0,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,     0,  1048,   317,   318,
+     319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+    1050,   317,   318,   319,     0,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,     0,  1052,   317,   318,   319,     0,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,  1054,   317,   318,   319,
+       0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,     0,  1121,
+     317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,  1227,   317,   318,   319,     0,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,     0,  1253,   317,   318,   319,     0,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,  1357,   317,
+     318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,     0,     0,   331,
+       0,  1361,   317,   318,   319,     0,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,  1363,   317,   318,   319,     0,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,     0,  1483,   317,   318,
+     319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+    1484,   317,   318,   319,     0,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,     0,  1513,   317,   318,   319,     0,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,  1515,   317,   318,   319,
+       0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,     0,  1517,
+     317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,  1519,   317,   318,   319,     0,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,     0,  1520,   317,   318,   319,     0,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,  1521,   317,
+     318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,     0,     0,   331,
+       0,  1543,   317,   318,   319,     0,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,  1652,   317,   318,   319,     0,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,     0,  1810,   317,   318,
+     319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+    1811,   317,   318,   319,     0,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,     0,  1812,   317,   318,   319,     0,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,  1975,   317,   318,   319,
+       0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,     0,  1976,
+     317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,  1977,   317,   318,   319,     0,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,     0,  2098,   317,   318,   319,     0,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,  2099,   317,
+     318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,     0,     0,   331,
+       0,  2100,   317,   318,   319,     0,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,  2101,   317,   318,   319,     0,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,     0,  2102,   317,   318,
+     319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331,     0,
+    2103,   317,   318,   319,     0,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,     0,     0,     0,     0,
+       0,   331,     0,  2213,   317,   318,   319,     0,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,   331,     0,  2214,   317,   318,   319,
+       0,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,     0,     0,     0,     0,     0,   331,     0,  2215,
+     317,   318,   319,     0,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+     331,     0,  2273,   317,   318,   319,     0,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,     0,     0,
+       0,     0,     0,   331,     0,  2274,   317,   318,   319,     0,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,   331,     0,  2275,   317,
+     318,   319,     0,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,     0,     0,     0,     0,     0,   331,
+       0,  2333,   317,   318,   319,     0,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,   331,     0,  2334,   317,   318,   319,     0,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+       0,     0,     0,     0,     0,   331,     0,  2335,   317,   318,
+     319,     0,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,   331
 };
-/* -*-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[] =
+{
+      25,    71,    72,     5,    25,     5,    96,   376,   310,   346,
+     752,   885,  1338,     4,  1340,   187,    47,    48,   190,     4,
+       4,     4,     4,    66,     4,     6,     3,     5,    67,    66,
+      43,     6,     6,    72,     0,     7,     6,     6,  1415,   211,
+     105,   213,  1419,     4,   199,  1422,   201,    67,     6,    67,
+      67,    66,    72,     4,    72,    72,    34,    35,    36,   200,
+      67,     5,   169,  1137,   205,    72,    67,     4,     5,    67,
+       6,    72,  1146,     5,    72,     6,    50,   188,   189,  1153,
+     200,    50,   196,   197,   199,   205,   201,   201,   217,   203,
+      34,    35,    36,   308,   205,   969,   207,    34,    35,    36,
+     188,   189,    34,    35,    36,   188,   189,   200,   133,   134,
+     135,   199,   205,   138,   139,     6,     7,   142,   206,   188,
+     189,   188,   189,   206,   149,     6,   151,   152,   153,     7,
+     155,   346,   157,   158,   199,   160,   205,   199,   207,   206,
+       6,    67,   199,   174,   206,   176,    72,   108,   109,   206,
+     200,   182,   177,   178,     5,   205,   199,   108,   109,   200,
+     188,   189,   199,   206,   205,   200,   196,   197,   207,   911,
+     205,   196,   197,   203,   199,     6,   201,    67,   206,   204,
+     205,     7,    72,    34,    35,    36,   199,   207,   525,   207,
+     207,   206,    67,   188,   189,    39,     7,    72,    42,   501,
+     207,   538,   174,   175,   176,   177,   207,   196,   197,   207,
+     205,   199,   189,   188,   189,   206,     6,   199,   188,   189,
+     201,   206,   206,   206,   255,   397,   206,   252,   206,   299,
+     300,   301,   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,   206,   206,     3,     8,  1352,   408,
+    1657,   207,  1356,   308,  1661,  1611,   199,  1664,  1614,   310,
+    1616,     6,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   188,   189,    66,
+     525,     6,   199,   338,   199,   340,   201,   207,     6,   206,
+     345,   346,    39,   538,    47,    42,    43,  1069,    45,   354,
+     355,   356,   357,   358,   199,   360,   361,   362,   363,   364,
+     365,   366,   373,   374,   199,   196,   197,   199,   174,   175,
+     176,   177,   203,   378,   379,   380,   381,   199,   199,   201,
+     385,    56,   199,   174,   175,   176,   177,   199,   393,     7,
+     196,   197,  1246,   375,   376,   375,   376,   402,  1755,   188,
+     189,   199,  1759,  1709,  1761,   196,   197,  1713,   206,  1715,
+     188,   189,   203,   188,   189,   199,   205,   201,   207,    39,
+     737,    43,    42,    43,   188,   189,   199,   205,   188,   189,
+     205,   188,   189,   140,   141,   142,   143,   144,   145,   146,
+     147,   205,   188,   189,   445,   205,   188,   189,   205,   188,
+     189,   768,   502,  1507,  1508,  1509,  1510,    57,    58,   205,
+    1514,   165,   166,   205,   168,   199,   205,   178,   179,   180,
+      43,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   199,   800,   801,   802,   803,   198,    43,   494,
+     188,   189,   497,     6,     7,     6,   207,  1351,   503,   199,
+     501,   201,   200,   178,   179,   180,    43,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    45,   206,
+     525,   526,   199,   198,   201,   188,   189,   196,   197,    43,
+     535,   536,   201,   538,   203,   540,   541,   200,    42,    43,
+     206,    45,   737,   548,   196,   197,   557,   742,   199,   201,
+     201,   203,     4,   558,   559,   199,   174,   175,   176,   177,
+     199,   199,   567,   201,   190,   191,   192,  1621,  1622,   199,
+       6,  1625,   198,   768,   579,   196,   197,     6,   196,   197,
+     201,   205,   203,   207,   634,   590,     6,   592,   593,   188,
+     189,   190,   191,   192,     4,   199,  1318,   201,     4,   198,
+     125,   126,   127,   128,   129,   800,   801,   802,   803,    60,
+      61,    62,    63,   930,    65,   199,   199,   201,   201,    43,
+     199,   903,   904,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   199,   634,     3,     4,   199,   198,   201,   199,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,   199,  1719,   201,   178,   179,   180,
+      39,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   199,   199,   201,   201,     5,   198,   738,   199,
+       4,    60,    61,    62,    63,    64,    65,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,     6,   714,
+     715,     6,     8,   198,     5,   199,   199,   201,   201,   199,
+     199,   201,   201,   728,   729,   730,   731,   732,   733,   734,
+     199,   199,   737,   201,   201,   930,   203,   742,     6,   205,
+     745,   207,   205,   205,   207,   207,   199,   205,   759,   207,
+     755,   205,   199,   207,  1808,   199,   205,  1106,   207,   205,
+     205,   207,   207,   768,   205,   770,   207,   205,   205,   207,
+     207,   205,   205,   207,   207,   205,   201,   207,     6,   205,
+     199,   207,   852,   206,   206,   796,   797,   798,   205,   205,
+     207,   207,   205,     4,   207,   800,   801,   802,   803,   206,
+     199,   806,   807,   199,   205,   810,   207,   205,     6,   207,
+     199,   205,   823,   207,   199,  1869,   821,   822,   206,   188,
+     189,   832,   205,     6,   207,   194,   205,   205,   207,   207,
+     199,   205,   205,   207,   207,   204,   206,   206,   205,   205,
+     207,   207,   205,   205,   207,   207,   205,   205,   207,   207,
+     206,   203,   857,   858,   859,   860,   861,   862,   863,   864,
+     865,   866,   867,   868,   869,   870,   871,   872,   873,   874,
+     875,   876,   877,   878,   879,   880,   881,   882,   205,   205,
+     207,   207,   178,   179,   180,   206,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   205,   899,   207,
+       8,   111,   198,   904,   200,     6,   205,   912,   207,   199,
+     178,   179,   180,   918,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   930,   205,   932,   207,   934,
+     198,   180,     6,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,     6,   950,   951,   952,     3,   198,
+     178,   179,   180,   199,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   199,   199,   972,   973,   974,
+     198,     5,   199,   199,   199,   199,   199,   199,   199,   199,
+     178,   179,   180,  1332,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   199,   199,   199,   199,  2053,
+     198,   200,   199,   199,   199,   199,   199,   199,   199,   199,
+     199,  1061,   199,   199,  1015,     3,     4,   199,   199,  1128,
+     199,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,   199,   205,   205,     4,   198,
+       7,   203,  1102,     6,   201,     7,   206,  1062,     7,     7,
+     200,     7,     7,   106,  1075,   206,  1077,   108,     5,     5,
+     178,   179,   180,     5,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,  1090,  1091,  1092,  1093,  1159,
+     198,     5,     5,     5,     5,     5,  1107,  1102,  1109,     5,
+    1111,     5,     5,     5,     5,     5,     5,     5,     5,     5,
+       5,     5,  1117,  1118,     5,     5,     5,     5,   158,     5,
+       5,     5,  1127,     3,  1106,  1130,  1106,     5,     5,   205,
+       6,     6,     5,   200,     6,  1140,     4,   202,     7,     6,
+     203,     7,  1147,  1148,  1149,     7,  1255,     7,     7,  1154,
+       7,     7,   206,  1158,   207,   207,   206,  1162,  1163,  1164,
+    1165,  1166,  1167,  1168,  1169,  1170,  1171,  1172,  1173,  1174,
+    1175,  1176,  1177,  1178,  1179,  1180,  1181,  1182,  1183,  1184,
+    1185,  1186,  1187,     7,     7,   199,     7,   203,   170,     5,
+     205,   199,   205,   205,   205,   205,   205,  1202,   205,   205,
+     188,   189,   205,   205,  1209,   205,   194,   205,   205,   205,
+     205,   199,   205,   205,   202,   205,   204,     6,   206,   205,
+     205,   205,   205,  1228,   205,   178,   179,   180,   205,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+    1349,     3,     4,   205,  1249,   198,  1251,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,     3,     4,   200,   205,   205,   205,     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,   178,   179,   180,   199,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   205,   202,
+     199,  1326,  1327,   198,  1335,     6,  1337,     6,  1339,     7,
+    1335,   205,  1337,     6,  1339,   205,  1341,  1342,   199,     7,
+    1345,   199,     7,   206,   199,   199,   199,   199,   199,  1354,
+    1332,   199,  1332,   199,   199,   199,   199,  1362,   199,   199,
+     199,   199,  1367,   199,   199,  1370,   199,  1372,  1373,  1374,
+    1375,  1376,  1377,  1378,  1379,  1380,  1381,  1382,  1383,  1384,
+    1385,  1386,  1387,  1388,  1389,  1390,  1391,  1392,  1393,  1394,
+    1395,  1396,  1397,     6,   199,   199,  1401,  1506,  1409,   199,
+     199,  1406,     7,  1408,  1409,  1410,   201,     7,     7,   178,
+     179,   180,     7,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,     7,     7,   188,   189,     7,   198,
+       7,     7,   194,     7,     4,     7,   205,   199,   207,     7,
+     202,     6,   204,     6,   206,     7,     4,     7,   171,     3,
+       3,     3,   190,     3,     3,     3,   188,   189,     3,  1568,
+       3,     3,   194,     3,     3,     3,     3,   199,     3,     5,
+     202,     5,   204,     3,   206,     3,   200,     6,     4,     6,
+     200,   203,     7,     6,  1489,     6,     6,     6,   199,   199,
+    1495,   206,     6,  1498,   178,   179,   180,     6,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,     6,
+     107,  1620,   206,   167,   198,   205,   200,  1522,  1523,  1524,
+    1525,  1526,  1527,  1528,  1529,  1530,  1531,  1532,  1533,  1534,
+    1535,  1536,  1537,  1538,  1539,  1540,  1541,  1542,   205,  1544,
+    1545,   178,   179,   180,   200,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   205,   200,   205,   200,
+     205,   198,   200,   200,   200,   178,   179,   180,   205,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+       6,   205,   205,   205,   205,   198,   159,   205,   205,   205,
+     205,   200,   165,   205,   205,   205,   200,   205,   205,   205,
+       6,  1651,   205,     6,     6,   203,     6,     4,     6,  1718,
+       6,     6,   202,     6,     6,   188,     6,     6,     6,     6,
+     193,   194,  1627,  1628,  1629,  1630,  1631,  1632,  1633,  1634,
+    1635,  1636,  1637,  1638,  1639,  1640,  1641,  1642,  1643,  1644,
+    1645,  1646,  1647,  1648,  1649,  1650,     6,     6,     6,     6,
+       3,     4,     6,   107,     6,  1764,     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,   178,   179,   180,     6,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,     6,     6,  1807,     6,
+    1750,   198,  1752,     7,     3,     6,     3,   190,     6,     3,
+       6,     6,  1717,     6,     3,     6,     6,     3,  1723,     6,
+    1725,     3,  1727,     3,  1729,  1730,  1731,  1732,  1733,  1734,
+    1735,  1736,  1737,  1738,  1739,  1740,  1741,  1742,  1743,  1744,
+    1745,  1746,  1747,  1748,  1749,     3,     6,     4,     7,   202,
+       6,     6,   178,   179,   180,     6,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   203,     6,   206,
+       6,   206,   198,   207,   206,   206,   206,   104,   178,   179,
+     180,  1831,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   200,   205,   205,   205,   205,   198,   200,
+    1805,  1806,   107,   109,     6,     3,   205,     6,  1813,  1814,
+    1815,  1816,  1817,  1818,  1819,  1820,  1821,  1822,  1823,  1824,
+    1825,  1826,  1827,  1828,  1829,  1830,   200,   200,   205,   200,
+     200,   200,     6,   205,   200,   188,   189,   205,     3,     6,
+       6,   194,     6,     6,     6,     6,   199,     3,     6,     6,
+       5,   204,     5,   206,   205,     6,     8,   207,   206,   206,
+    1865,   207,   205,   205,   167,  1870,  1871,  1872,  1873,  1874,
+    1875,  1876,  1877,  1878,  1879,  1880,  1881,  1882,  1883,  1884,
+    1885,  1886,  1887,  1888,  1889,  1890,     3,     4,   205,   200,
+     205,   205,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,   200,   200,  1923,     6,
+    1925,     6,  1927,   496,  1929,  1930,  1931,  1932,  1933,  1934,
+    1935,  1936,  1937,  1938,  1939,  1940,  1941,  1942,  1943,  1944,
+    1945,  1946,   178,   179,   180,     6,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   205,     6,     6,
+       6,     6,   198,     6,     6,     6,     6,   206,     6,     8,
+       6,     6,     6,  1978,  1979,  1980,  1981,  1982,  1983,  1984,
+    1985,  1986,  1987,  1988,  1989,  1990,  1991,  1992,     5,     5,
+     205,   207,   206,   206,   205,   205,   205,   200,   205,   200,
+     205,     6,   206,     6,     6,     6,   206,     6,  2013,  2014,
+    2015,  2016,  2017,  2018,  2019,  2020,  2021,  2022,  2023,  2024,
+    2025,  2026,  2027,  2028,  2029,  2030,   178,   179,   180,   206,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   104,     6,     6,     5,   205,   198,   206,     6,  2054,
+       5,  2056,   206,  2058,   167,  2060,  2061,  2062,  2063,  2064,
+    2065,  2066,  2067,  2068,  2069,  2070,  2071,  2072,  2073,  2074,
+     206,   188,   189,   206,   205,   207,   206,   194,   205,   200,
+     200,   206,   199,   207,     6,     6,     6,   204,     6,   206,
+     104,     6,     6,     6,     6,     6,     6,     6,   207,  2104,
+    2105,  2106,  2107,  2108,  2109,  2110,  2111,  2112,   206,   205,
+     205,     6,     6,     6,     6,     6,   172,   205,     6,   205,
+     173,   200,   206,   206,  2129,  2130,  2131,  2132,  2133,  2134,
+    2135,  2136,  2137,  2138,  2139,  2140,  2141,  2142,  2143,   178,
+     179,   180,   206,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   205,     6,     6,     6,     6,   198,
+    2165,     6,  2167,     6,  2169,     6,  2171,     6,  2173,   206,
+    2175,   200,  2177,  2178,  2179,  2180,  2181,  2182,  2183,  2184,
+    2185,   205,   205,     6,   206,   206,   205,   760,   761,     6,
+     763,   206,   765,   766,   206,   206,   206,   206,   206,     6,
+       6,     6,  2207,  2208,  2209,  2210,  2211,  2212,     6,     6,
+     206,   206,   206,     6,     6,     6,   206,   206,   206,     6,
+    2225,  2226,  2227,  2228,  2229,  2230,  2231,  2232,  2233,     6,
+       6,   206,   206,   206,     6,   808,   809,     6,     6,   812,
+       5,  2246,  2247,  2248,  2249,  2250,  2251,  2252,     5,  2254,
+     636,  2256,   884,  1065,    -1,    -1,   829,   830,    -1,    -1,
+      -1,    -1,   835,   836,    -1,  2270,  2271,  2272,    -1,   842,
+      -1,   844,    -1,    -1,    -1,    -1,    -1,  2282,  2283,  2284,
+    2285,  2286,  2287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  2297,  2298,  2299,  2300,    -1,  2302,    -1,  2304,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    2315,  2316,  2317,    -1,    -1,    -1,  2321,  2322,  2323,    -1,
+      -1,    -1,  2327,  2328,  2329,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  2339,  2340,  2341,    -1,    -1,    -1,
+      -1,    -1,    -1,  2348,    -1,  2350,    -1,  2352,    -1,   922,
+      -1,   924,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   935,   936,   937,    -1,    -1,    -1,    -1,   942,
+     943,   944,   945,   946,   947,   948,    -1,    -1,    -1,    -1,
+       3,     4,     5,    -1,     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,     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,    -1,   178,   179,   180,
+      39,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
+      -1,    60,    61,    62,    63,    64,    65,    -1,    -1,     8,
+      -1,    -1,     3,     4,     5,    -1,    -1,  1060,     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,     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,
+    1123,   174,   175,   176,   177,    -1,    -1,    -1,  1131,    -1,
+      -1,    -1,    -1,    -1,    -1,   188,   189,    -1,    -1,    -1,
+      -1,   194,    -1,   196,   197,    -1,   199,  1150,   201,    -1,
+     203,   204,    -1,    -1,   178,   179,   180,    -1,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   188,
+     189,    -1,    -1,    -1,   198,   194,    -1,    -1,    -1,    -1,
+     199,     3,     4,   207,    -1,   204,  1189,     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,    -1,    -1,    -1,   178,
+     179,   180,    -1,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,   188,   189,   198,
+      -1,    -1,    -1,   194,    -1,    -1,    -1,    -1,   199,    -1,
+      -1,    -1,    -1,   204,    39,    40,    41,    42,    43,    44,
+      45,    46,    -1,    48,    -1,    50,    51,    52,    -1,    54,
+      55,   188,   189,    -1,    -1,    -1,    -1,   194,    -1,    -1,
+      -1,    -1,   199,    -1,    -1,    -1,    71,   204,   178,   179,
+     180,    -1,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   101,   102,   103,   178,
+     179,   180,    -1,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   119,    -1,    -1,    -1,    -1,   198,
+      -1,  1344,    -1,    -1,    -1,  1348,   205,    -1,   207,    -1,
+       0,     1,    -1,     3,     4,    -1,    -1,    -1,    -1,    -1,
+      -1,  1364,    -1,    -1,    -1,    -1,   188,   189,    -1,    -1,
+      -1,    -1,   194,    -1,    -1,    -1,    -1,   199,    -1,    -1,
+      -1,    -1,   204,    33,    -1,    -1,    -1,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    -1,    48,    49,
+      50,    51,    52,    53,    54,    55,    -1,    -1,    -1,    59,
+      60,    61,    62,    63,    64,    65,    -1,    67,    68,    69,
+      70,    71,   207,    39,    40,    41,    42,    43,    44,    45,
+      46,    -1,    48,    -1,    50,    51,    52,    -1,    54,    55,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     100,   101,   102,   103,    -1,    71,    -1,    -1,   108,    -1,
+     110,    -1,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1483,  1484,    -1,    -1,    -1,   101,   102,   103,  1491,    -1,
+     140,   141,   142,   143,   144,   145,   146,   147,    -1,  1502,
+    1503,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   165,   166,    -1,   168,    39,
+      40,    41,    42,    43,    44,    45,    46,    -1,    48,    -1,
+      50,    51,    52,    -1,    54,    55,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1547,  1548,    -1,    -1,    -1,    -1,
+      -1,    71,    -1,    -1,    39,    40,    41,    42,    43,    44,
+      45,    46,    -1,    48,    -1,    50,    51,    52,    -1,    54,
+      55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   101,   102,   103,    -1,    -1,    71,    -1,    -1,    -1,
+      -1,   207,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1613,    -1,    -1,    -1,    -1,  1618,   101,   102,   103,    -1,
+      39,    40,    41,    42,    43,    44,    45,    46,    -1,    48,
+      -1,    50,    51,    52,   119,    54,    55,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    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,
+      -1,    -1,   101,   102,   103,    -1,    -1,   207,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     119,    42,    -1,    -1,    -1,    -1,    -1,  1710,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1720,    -1,    -1,
+      -1,    -1,   207,    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,
+     178,   179,   180,    -1,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,    -1,    -1,    -1,   205,    -1,   207,
+      -1,   122,   123,   124,    -1,    -1,    -1,   207,   207,   130,
+     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1809,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,    -1,   159,   160,
+     161,   162,   163,   164,    -1,    -1,    -1,    -1,    -1,    -1,
+     178,   179,   180,     4,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,    -1,    -1,    -1,   207,    -1,   207,
+      -1,    -1,    33,    -1,    -1,  1868,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    -1,    48,    49,    50,
+      51,    52,    53,    54,    55,    -1,    -1,    -1,    59,    60,
+      61,    62,    63,    64,    65,    -1,    67,    68,    69,    70,
+      71,    39,    40,    41,    42,    43,    44,    45,    46,    -1,
+      48,    -1,    50,    51,    52,    -1,    54,    55,  1921,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,
+     101,   102,   103,    71,    -1,    -1,    -1,   108,    -1,   110,
+      -1,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   101,   102,   103,    -1,    -1,    -1,    -1,
+      -1,  1974,    -1,    -1,    -1,    -1,    -1,    -1,   178,   179,
+     180,   119,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   207,    -1,  2012,
+     178,   179,   180,    -1,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,    -1,    -1,   178,   179,   180,   207,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+      -1,    -1,   178,   179,   180,   207,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,    -1,    -1,   178,   179,
+     180,   207,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,    -1,    -1,   178,   179,   180,   207,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,    -1,    -1,
+     178,   179,   180,   207,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,    -1,    -1,   178,   179,   180,   207,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+      -1,    -1,   178,   179,   180,   207,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,    -1,    -1,   178,   179,
+     180,   207,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,    -1,    -1,   178,   179,   180,   207,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,    -1,    -1,
+     178,   179,   180,   207,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,    -1,    -1,   178,   179,   180,   207,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+      -1,    -1,   178,   179,   180,   207,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,    -1,    -1,   178,   179,
+     180,   207,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,    -1,    -1,   178,   179,   180,   207,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,    -1,    -1,
+     178,   179,   180,   207,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,    -1,    -1,   178,   179,   180,   207,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+      -1,    -1,   178,   179,   180,   207,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,    -1,    -1,   178,   179,
+     180,   207,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,    -1,    -1,   178,   179,   180,   205,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,   178,   179,
+     180,   205,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+      -1,    -1,   178,   179,   180,   205,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,    -1,    -1,   178,   179,   180,   205,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,    -1,    -1,
+     178,   179,   180,   205,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,   178,   179,   180,   202,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,   178,   179,   180,   202,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,   178,   179,   180,   202,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,   178,   179,   180,   202,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,   178,   179,   180,   202,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,   178,   179,   180,   202,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,   178,   179,   180,
+     202,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,   178,   179,
+     180,   202,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,   178,
+     179,   180,   202,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
+     178,   179,   180,   202,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,   178,   179,   180,   202,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,   178,   179,   180,   202,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,   178,   179,   180,   202,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,   178,   179,   180,   202,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,   178,   179,   180,   202,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,   178,   179,   180,   202,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,   178,   179,   180,
+     202,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,   178,   179,
+     180,   202,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,   178,
+     179,   180,   202,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
+     178,   179,   180,   202,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,   178,   179,   180,   202,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,   178,   179,   180,   202,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,   178,   179,   180,   202,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,   178,   179,   180,   202,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,   178,   179,   180,   202,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,   178,   179,   180,   202,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,   178,   179,   180,
+     202,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,   178,   179,
+     180,   202,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+     200,   178,   179,   180,    -1,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,    -1,   200,   178,   179,   180,    -1,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
+      -1,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
+     178,   179,   180,    -1,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,   200,   178,   179,   180,    -1,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
+     179,   180,    -1,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
+      -1,   200,   178,   179,   180,    -1,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
+     180,    -1,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+     200,   178,   179,   180,    -1,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,    -1,   200,   178,   179,   180,    -1,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
+      -1,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
+     178,   179,   180,    -1,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,   200,   178,   179,   180,    -1,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
+     179,   180,    -1,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
+      -1,   200,   178,   179,   180,    -1,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
+     180,    -1,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+     200,   178,   179,   180,    -1,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,    -1,   200,   178,   179,   180,    -1,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
+      -1,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
+     178,   179,   180,    -1,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,   200,   178,   179,   180,    -1,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
+     179,   180,    -1,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
+      -1,   200,   178,   179,   180,    -1,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
+     180,    -1,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+     200,   178,   179,   180,    -1,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,    -1,   200,   178,   179,   180,    -1,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
+      -1,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
+     178,   179,   180,    -1,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,   200,   178,   179,   180,    -1,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
+     179,   180,    -1,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
+      -1,   200,   178,   179,   180,    -1,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
+     180,    -1,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+     200,   178,   179,   180,    -1,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,    -1,   200,   178,   179,   180,    -1,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
+      -1,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
+     178,   179,   180,    -1,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,   200,   178,   179,   180,    -1,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
+     179,   180,    -1,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
+      -1,   200,   178,   179,   180,    -1,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
+     180,    -1,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+     200,   178,   179,   180,    -1,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,    -1,   200,   178,   179,   180,    -1,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
+      -1,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
+     178,   179,   180,    -1,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,   200,   178,   179,   180,    -1,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
+     179,   180,    -1,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
+      -1,   200,   178,   179,   180,    -1,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
+     180,    -1,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+     200,   178,   179,   180,    -1,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,    -1,   200,   178,   179,   180,    -1,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
+      -1,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
+     178,   179,   180,    -1,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,   200,   178,   179,   180,    -1,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
+     179,   180,    -1,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
+      -1,   200,   178,   179,   180,    -1,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
+     180,    -1,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,
+     200,   178,   179,   180,    -1,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,
+      -1,   198,    -1,   200,   178,   179,   180,    -1,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
+      -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,
+      -1,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,
+     178,   179,   180,    -1,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
+     198,    -1,   200,   178,   179,   180,    -1,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
+      -1,    -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,    -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,
+     179,   180,    -1,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198,
+      -1,   200,   178,   179,   180,    -1,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
+      -1,    -1,   198,    -1,   200,   178,   179,   180,    -1,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      -1,    -1,    -1,    -1,    -1,   198,    -1,   200,   178,   179,
+     180,    -1,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,    -1,    -1,    -1,    -1,    -1,   198
+};
 
-/* 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 short yystos[] =
+{
+       0,     1,   209,   211,   213,   218,     6,     0,   165,   166,
+     168,   212,     3,   140,   141,   142,   143,   144,   145,   146,
+     147,   214,   215,   216,   217,     4,    33,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    48,    49,    50,
+      51,    52,    53,    54,    55,    59,    60,    61,    62,    63,
+      64,    65,    67,    68,    69,    70,    71,   100,   101,   102,
+     103,   108,   110,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   219,   220,   221,   304,   305,   306,   309,
+     310,   311,   312,   313,   314,   315,   327,   328,   169,     7,
+       6,     6,     6,     6,     6,   199,   199,   199,     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,   174,
+     175,   176,   177,   188,   189,   194,   196,   197,   199,   201,
+     203,   204,   302,   303,   330,   331,   344,   199,     6,   206,
+       6,   199,   199,   199,    66,   199,    66,   199,   199,    47,
+     199,    43,    43,    43,    43,    42,    43,    45,    45,    39,
+      42,    43,    45,   199,   206,   188,   189,   199,   206,   332,
+     333,   332,   206,    39,    42,    43,     4,   206,    43,     4,
+     206,     6,     6,    39,    42,     4,   199,   199,    43,   199,
+       4,   206,   341,     4,   199,   199,     6,     4,     4,    43,
+       5,   206,   344,   206,   344,     3,   189,   210,    42,   122,
+     123,   124,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   159,   160,   161,   162,   163,   164,   199,   334,
+     334,     5,   201,   203,   303,     4,   206,   199,   201,   199,
+     201,   199,   201,   199,   201,   199,   201,   199,   201,   199,
+     201,   199,   201,   199,   201,   199,   201,   199,   201,   199,
+     201,   199,   201,   199,   201,   199,   201,   199,   201,   199,
+     201,   199,   201,   199,   201,   199,   201,   199,   201,   199,
+     199,   199,     4,   330,   330,   330,   330,   202,   206,   330,
+       4,   108,   109,     4,   330,     6,     6,   178,   179,   180,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   198,     6,     5,   330,   330,   330,   330,   199,   330,
+     199,   330,   330,     4,    39,   189,   206,   306,   309,   315,
+     330,   338,   339,   330,   206,   199,   199,   199,   206,   338,
+     206,   206,   199,   199,   199,   199,   199,     4,   332,   332,
+     332,   330,   330,   188,   189,   206,   206,   332,   206,   206,
+     206,   201,   308,   338,     6,   201,   308,   338,   338,     6,
+     330,   330,   105,   199,   330,   203,   330,   206,   111,   330,
+     330,     6,   199,   308,     6,   308,     6,     3,   210,   199,
+     199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
+     199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
+     199,   199,   199,   199,   199,   199,   199,   199,   199,     5,
+     335,   205,   200,   205,   330,     4,   332,   222,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+       4,   344,   344,   344,   201,   200,     7,   189,   330,   339,
+     340,   202,     7,   302,   303,   203,     7,   201,     6,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   200,   205,   205,   200,   200,   200,
+     330,   200,   330,   200,   200,   201,   206,     4,   206,   340,
+       8,     7,   200,   330,   330,   330,   330,   330,     7,   330,
+     330,   330,   330,   330,   330,   330,   200,   205,   205,   205,
+     332,   332,   306,   307,   308,   309,   307,   205,   330,   330,
+     330,   330,    39,    42,    43,    45,   207,   305,     6,     7,
+     330,   207,     7,     7,   200,   200,   106,   330,   200,   108,
+     205,   308,   206,     8,   200,   330,   207,   207,   210,     5,
+       5,     5,     5,     5,     5,     5,     5,     5,     5,     5,
+       5,     5,     5,     5,     5,     5,     5,     5,     5,     5,
+       5,     5,   158,     5,     5,     5,     5,     3,     5,   200,
+     205,     5,     6,     5,   202,   303,   206,    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,   207,   224,   227,   230,   233,   236,
+     239,   242,   245,   248,   251,   254,   257,   260,   263,   266,
+     269,   272,   275,   278,   281,   284,   287,   290,   293,   296,
+     299,   301,   200,   202,   200,   202,   200,   202,   200,   202,
+     200,   202,   200,   202,   200,   202,   200,   202,   200,   202,
+     200,   202,   200,   202,   205,   205,   200,   202,   200,   202,
+     200,   202,   200,   202,   200,   202,   200,   202,   205,   205,
+     205,   205,   205,   205,   201,   203,   200,   205,   205,   200,
+     330,   338,   205,   207,   203,   302,   303,   344,   330,     6,
+       4,     4,   206,   342,   202,     8,     6,   340,   330,     7,
+       7,     7,   200,     7,   200,     7,     7,   202,   206,   330,
+     201,   340,   207,   330,   330,     7,   207,   200,   200,   200,
+     207,   330,   207,   207,   200,   200,   200,   200,   200,   203,
+     332,   330,   330,   207,   207,   330,   205,   205,   205,   202,
+     206,   206,   206,   206,   330,   202,   206,   206,     7,     7,
+     199,   200,     7,   203,   330,   207,   330,   330,   200,   170,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+       5,   200,   205,   203,   303,   344,   222,   199,   199,   199,
+     199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
+     199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
+     199,   199,   199,   199,   206,   336,     6,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,     4,   340,   344,   202,
+       6,   330,   339,   202,     4,   108,   109,   330,     6,     6,
+       6,     7,   201,   341,   343,     6,   330,   200,   205,   332,
+     338,   338,     7,   338,     7,   338,   338,   340,   207,   202,
+     206,   207,     8,     6,   206,     7,     7,     7,     7,     7,
+       6,    56,     7,     7,     7,     7,     7,     7,     7,     4,
+     205,   205,   205,   207,   332,   332,   332,     6,   340,   340,
+     340,   340,     6,     6,   330,   330,   338,   338,   330,     7,
+     338,     4,   205,     8,     8,   200,     7,   171,     3,   330,
+     330,   332,     3,     3,   190,     3,     3,   338,   338,     3,
+     332,     3,     3,   338,   338,     3,     3,     3,     3,     3,
+     338,   125,   126,   127,   128,   129,   329,   338,     3,     5,
+       5,     3,     3,     6,   334,     4,     6,   207,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   337,   338,   337,   336,   200,   202,
+     200,   202,   200,   202,   200,   202,   202,   200,   200,   200,
+     302,     7,   302,   303,   203,     7,     6,   341,   330,   205,
+     207,     6,   330,     6,     6,    50,     6,    50,   338,     6,
+     338,     6,     6,   207,   340,   330,   330,   338,   338,   338,
+     199,   199,    57,    58,   338,   338,   338,   338,   338,   338,
+     338,     6,     7,   330,   330,   330,   206,   205,   207,   205,
+     207,   205,   207,   207,   207,   207,   207,   205,   205,     6,
+       6,   200,   336,   107,   330,   330,   330,   206,   167,   205,
+     205,   205,   200,   205,   200,   205,   200,   205,   200,   205,
+     205,   200,   205,   200,   200,   205,   205,   205,   205,   205,
+     205,   200,   205,   205,   205,   205,   205,   200,   205,   205,
+     303,     6,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   200,   205,
+     207,     6,   203,   338,   344,   330,     6,     4,   342,     6,
+     202,   341,   205,   332,   332,     6,     6,   202,   207,   205,
+       6,     6,     6,   330,   330,   330,   330,     6,     6,     6,
+       6,     6,     6,     6,   330,   344,   207,   200,   205,   207,
+     307,   332,     6,   316,   332,     6,   319,   332,     6,   322,
+       6,     6,     6,     6,   330,   330,     7,   107,   338,   205,
+     207,     8,   207,   200,   330,   210,     3,   330,   338,     6,
+       3,     6,   190,     6,   329,     6,     3,   330,     6,     3,
+       6,     6,     3,   329,   330,   330,   330,   338,     6,     3,
+     329,   330,     3,     3,     6,   330,   334,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   338,     4,     6,     6,     6,     7,     6,
+     203,   330,     6,     6,   202,   330,   205,   205,     6,     6,
+       6,     6,   206,   330,   207,   205,   206,   205,   206,   205,
+     206,   205,   205,   336,   206,   104,   330,   330,   205,   210,
+     200,   205,   205,   205,   205,   200,   205,   200,   205,   200,
+     200,   200,   205,   200,   205,   200,   200,   205,   205,   200,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   200,   341,
+     109,   205,   205,   330,   330,   307,   205,   207,   188,   189,
+     199,   330,   332,    67,    72,   325,   326,   330,   332,   325,
+     330,   332,   325,   330,   330,   107,   338,   330,   207,   207,
+     338,   210,     6,   336,   329,     3,   330,     6,   329,     6,
+       3,     6,     6,     6,   330,     6,   338,     6,     6,   330,
+       3,     6,   330,     5,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+       6,   330,     5,   200,   200,   207,   330,   330,   207,   205,
+       6,   206,   207,   326,   207,   205,   207,   207,   205,   207,
+     207,   207,   206,   205,     6,   207,   167,   205,   205,   205,
+     205,   200,   200,   200,   205,   200,   200,   200,   205,   200,
+     200,   200,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   200,   205,   205,   205,   338,   338,   207,
+       6,   317,   330,   338,     6,     6,   320,   330,     6,     6,
+     323,   330,     6,     6,     6,   338,   338,     6,   210,   329,
+     329,   329,   329,     6,     6,     6,   329,     6,     6,     6,
+       5,   225,   228,   231,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   297,   330,   330,     5,   338,
+     338,   206,   207,   205,   206,   207,   206,   207,   205,   207,
+     210,   205,   205,   200,   200,   205,   205,   206,   206,   206,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   206,   200,   207,   205,     6,     6,   325,     6,   318,
+     338,   325,     6,   321,   325,     6,   324,   338,   104,   210,
+     329,   329,     6,     6,   329,     5,   223,   330,   226,   330,
+     229,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   295,   344,   300,     6,     5,   207,   206,
+     205,   207,   207,   206,   207,   206,   207,   206,   167,   205,
+     205,   200,   200,   205,   207,   205,   207,   205,   207,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   207,   206,   207,     6,   325,   338,     6,     6,   325,
+       6,   325,   104,   330,   210,   329,   338,     6,     6,   330,
+       6,   330,     6,   330,     6,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   344,     6,   298,   344,
+       6,   207,   207,   207,   207,   206,   205,   210,   205,   205,
+     200,   200,   200,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   207,     6,     6,     6,     6,   330,   330,   210,
+     329,   338,   234,   237,   240,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   344,     6,   205,   207,   172,   205,   205,
+     206,   206,   206,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   330,     6,   173,   338,   329,   232,   330,   235,   330,
+     238,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     207,   205,   200,   205,   207,   205,   207,   205,   207,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,     6,   338,     6,
+     330,     6,   330,     6,   330,     6,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   205,   200,   200,   200,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   338,   243,   246,   249,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   205,   206,   206,   206,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   338,   241,   330,   244,   330,   247,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   205,   205,   207,   205,   207,   205,   207,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   329,   330,     6,   330,     6,
+     330,     6,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   200,   200,   200,
+     200,   200,   200,   200,   205,   205,   205,   205,   205,   205,
+     205,   205,   205,     6,   252,   255,   258,   261,   264,   267,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   206,
+     206,   206,   206,   206,   206,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   250,   330,   253,   330,   256,   330,
+     259,   330,   262,   330,   265,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   205,   207,   205,   207,   205,
+     207,   205,   207,   205,   207,   205,   207,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   330,     6,   330,     6,
+     330,     6,   330,     6,   330,     6,   330,     6,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   205,   205,   205,
+     205,   205,   205,   200,   200,   200,   330,   330,   330,   330,
+     330,   330,   288,   291,   294,   205,   205,   205,   205,   205,
+     205,   206,   206,   206,   330,   330,   330,   330,   330,   330,
+     286,   330,   289,   330,   292,   330,   205,   205,   205,   205,
+     205,   205,   205,   207,   205,   207,   205,   207,   330,   330,
+     330,   330,   330,   330,   330,     6,   330,     6,   330,     6,
+     205,   205,   205,   200,   200,   200,   330,   330,   330,   279,
+     282,   285,   205,   205,   205,   206,   206,   206,   330,   330,
+     330,   277,   330,   280,   330,   283,   330,   205,   205,   205,
+     205,   207,   205,   207,   205,   207,   330,   330,   330,   330,
+       6,   330,     6,   330,     6,   205,   205,   205,   330,   330,
+     330,   205,   205,   205,   330,   330,   330,   205,   205,   205,
+     330,   330,   330,   200,   200,   200,   270,   273,   276,   206,
+     206,   206,   268,   330,   271,   330,   274,   330,   205,   207,
+     205,   207,   205,   207,   330,     6,   330,     6,   330,     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)
+# define YYLEX yylex ()
 #endif
-#endif /* not YYLSP_NEEDED */
-#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 yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+             yyrule - 1, yylno);
+  /* 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 (*yys++ != '\0')
+    continue;
 
-  while (i-- > 0)
-    *t++ = *f++;
+  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
-__yy_memcpy (char *to, char *from, unsigned int count)
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+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;
 
-  while (i-- > 0)
-    *t++ = *f++;
+  if (yytype < YYNTOKENS)
+    {
+      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+# ifdef YYPRINT
+      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+    }
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+  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(YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
+yyparse (void)
+#else
+int
+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;
@@ -4456,110 +5372,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.  */
@@ -4568,165 +5470,134 @@ 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]);
 
-      /* 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
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
 
+     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 4:
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 5:
 #line 169 "Gmsh.y"
-{ yyerrok; return 1; ;
-    break;}
-case 5:
+    { yyerrok; return 1; ;}
+    break;
+
+  case 6:
 #line 175 "Gmsh.y"
-{ yyval.d = yyvsp[0].d; ;
-    break;}
-case 6:
+    { yyval.d = yyvsp[0].d; ;}
+    break;
+
+  case 7:
 #line 176 "Gmsh.y"
-{ yyval.d = -yyvsp[0].d; ;
-    break;}
-case 9:
+    { yyval.d = -yyvsp[0].d; ;}
+    break;
+
+  case 10:
 #line 186 "Gmsh.y"
-{
+    {
       yymsg(INFO, "Reading STL solid");
       STL_Surf = Create_Surface(NEWSURFACE(), MSH_SURF_STL);
       STL_Surf->STL = new STL_Data;
       return 1;
-    ;
-    break;}
-case 10:
+    ;}
+    break;
+
+  case 11:
 #line 200 "Gmsh.y"
-{
+    {
       STL_Surf->STL->Add_Facet(yyvsp[-12].d, yyvsp[-11].d, yyvsp[-10].d,
 			       yyvsp[-8].d, yyvsp[-7].d, yyvsp[-6].d,
 			       yyvsp[-4].d, yyvsp[-3].d, yyvsp[-2].d, CTX.geom.stl_create_elementary);
       return 1;
-    ;
-    break;}
-case 11:
+    ;}
+    break;
+
+  case 12:
 #line 207 "Gmsh.y"
-{
+    {
       if(CTX.geom.stl_create_elementary){
 	STL_Surf->STL->ReplaceDuplicate();
 	if(CTX.geom.stl_create_physical)
@@ -4737,288 +5608,342 @@ case 11:
       }
       yymsg(INFO, "Read STL solid");
       return 1;
-    ;
-    break;}
-case 14:
+    ;}
+    break;
+
+  case 15:
 #line 229 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 15:
+    { return 1; ;}
+    break;
+
+  case 16:
 #line 230 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 16:
+    { return 1; ;}
+    break;
+
+  case 17:
 #line 231 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 17:
+    { return 1; ;}
+    break;
+
+  case 18:
 #line 236 "Gmsh.y"
-{
+    {
       yymsg(INFO, "Reading Step Iso-10303-21 data");
       Create_Step_Solid_BRep();
-    ;
-    break;}
-case 18:
+    ;}
+    break;
+
+  case 19:
 #line 241 "Gmsh.y"
-{
+    {
       Resolve_BREP ();
       yymsg(INFO, "Read Step Iso-10303-21 data");
-    ;
-    break;}
-case 22:
+    ;}
+    break;
+
+  case 23:
 #line 252 "Gmsh.y"
-{
-    ;
-    break;}
-case 23:
+    {
+    ;}
+    break;
+
+  case 24:
 #line 255 "Gmsh.y"
-{
-    ;
-    break;}
-case 24:
+    {
+    ;}
+    break;
+
+  case 25:
 #line 259 "Gmsh.y"
-{
-   ;
-    break;}
-case 25:
+    {
+   ;}
+    break;
+
+  case 26:
 #line 265 "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 26:
+    ;}
+    break;
+
+  case 27:
 #line 271 "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 27:
+    ;}
+    break;
+
+  case 28:
 #line 278 "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 28:
+    ;}
+    break;
+
+  case 29:
 #line 284 "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 29:
+    ;}
+    break;
+
+  case 30:
 #line 288 "Gmsh.y"
-{
+    {
       Add_Face_Outer_Bound((int)yyvsp[-10].d, yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-2].i, 1);
-    ;
-    break;}
-case 30:
+    ;}
+    break;
+
+  case 31:
 #line 292 "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 31:
+    ;}
+    break;
+
+  case 32:
 #line 299 "Gmsh.y"
-{
+    {
       Add_Oriented_Edge((int)yyvsp[-14].d, yyvsp[-10].c, (int)yyvsp[-4].d, yyvsp[-2].i);
-    ;
-    break;}
-case 32:
+    ;}
+    break;
+
+  case 33:
 #line 303 "Gmsh.y"
-{
+    {
       Add_Edge_Loop((int)yyvsp[-8].d, yyvsp[-4].c, yyvsp[-2].l);
-    ;
-    break;}
-case 33:
+    ;}
+    break;
+
+  case 34:
 #line 308 "Gmsh.y"
-{
+    {
       Add_Advanced_Face((int)yyvsp[-12].d, yyvsp[-8].c, yyvsp[-6].l, (int)yyvsp[-4].d, yyvsp[-2].i);
-    ;
-    break;}
-case 34:
+    ;}
+    break;
+
+  case 35:
 #line 312 "Gmsh.y"
-{
+    {
       Add_Vertex_Point((int)yyvsp[-8].d, yyvsp[-4].c, (int)yyvsp[-2].d);
-    ;
-    break;}
-case 35:
+    ;}
+    break;
+
+  case 36:
 #line 316 "Gmsh.y"
-{
-    ;
-    break;}
-case 36:
+    {
+    ;}
+    break;
+
+  case 37:
 #line 320 "Gmsh.y"
-{
+    {
       Add_Axis2_Placement3D  ((int)yyvsp[-12].d, (int)yyvsp[-4].d, (int)yyvsp[-2].d, (int)yyvsp[-6].d);
-    ;
-    break;}
-case 37:
+    ;}
+    break;
+
+  case 38:
 #line 324 "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 38:
+    ;}
+    break;
+
+  case 39:
 #line 328 "Gmsh.y"
-{
+    {
       Add_Plane((int)yyvsp[-8].d, yyvsp[-4].c, (int)yyvsp[-2].d);
-    ;
-    break;}
-case 39:
+    ;}
+    break;
+
+  case 40:
 #line 332 "Gmsh.y"
-{
+    {
       Add_Line ((int)yyvsp[-10].d, yyvsp[-6].c , (int) yyvsp[-4].d, (int)yyvsp[-2].d);
-    ;
-    break;}
-case 40:
+    ;}
+    break;
+
+  case 41:
 #line 336 "Gmsh.y"
-{
+    {
       yymsg(INFO, "Found a closed shell");
       Add_Closed_Shell((int)yyvsp[-8].d, yyvsp[-4].c , yyvsp[-2].l);
-    ;
-    break;}
-case 41:
+    ;}
+    break;
+
+  case 42:
 #line 342 "Gmsh.y"
-{
-    ;
-    break;}
-case 42:
+    {
+    ;}
+    break;
+
+  case 43:
 #line 345 "Gmsh.y"
-{
-    ;
-    break;}
-case 43:
+    {
+    ;}
+    break;
+
+  case 44:
 #line 348 "Gmsh.y"
-{
+    {
       Add_Cylinder ((int)yyvsp[-10].d, yyvsp[-6].c , (int)yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 44:
+    ;}
+    break;
+
+  case 45:
 #line 352 "Gmsh.y"
-{
+    {
       Add_Cone ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 45:
+    ;}
+    break;
+
+  case 46:
 #line 356 "Gmsh.y"
-{
+    {
       Add_Torus ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 46:
+    ;}
+    break;
+
+  case 47:
 #line 360 "Gmsh.y"
-{
+    {
       Add_Circle((int) yyvsp[-10].d, yyvsp[-6].c, (int) yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 47:
+    ;}
+    break;
+
+  case 48:
 #line 364 "Gmsh.y"
-{
+    {
       Add_Ellipse((int) yyvsp[-12].d, yyvsp[-8].c, (int) yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 48:
+    ;}
+    break;
+
+  case 49:
 #line 369 "Gmsh.y"
-{
-    ;
-    break;}
-case 49:
+    {
+    ;}
+    break;
+
+  case 50:
 #line 372 "Gmsh.y"
-{
-    ;
-    break;}
-case 50:
+    {
+    ;}
+    break;
+
+  case 51:
 #line 376 "Gmsh.y"
-{
-    ;
-    break;}
-case 51:
+    {
+    ;}
+    break;
+
+  case 52:
 #line 379 "Gmsh.y"
-{
-    ;
-    break;}
-case 52:
+    {
+    ;}
+    break;
+
+  case 53:
 #line 383 "Gmsh.y"
-{
-    ;
-    break;}
-case 53:
+    {
+    ;}
+    break;
+
+  case 54:
 #line 386 "Gmsh.y"
-{
-    ;
-    break;}
-case 54:
+    {
+    ;}
+    break;
+
+  case 55:
 #line 389 "Gmsh.y"
-{
-    ;
-    break;}
-case 57:
+    {
+    ;}
+    break;
+
+  case 58:
 #line 401 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 58:
+    { return 1; ;}
+    break;
+
+  case 59:
 #line 402 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 59:
+    { return 1; ;}
+    break;
+
+  case 60:
 #line 403 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 60:
+    { return 1; ;}
+    break;
+
+  case 61:
 #line 404 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 61:
+    { return 1; ;}
+    break;
+
+  case 62:
 #line 405 "Gmsh.y"
-{ List_Delete(yyvsp[0].l); return 1; ;
-    break;}
-case 62:
+    { List_Delete(yyvsp[0].l); return 1; ;}
+    break;
+
+  case 63:
 #line 406 "Gmsh.y"
-{ List_Delete(yyvsp[0].l); return 1; ;
-    break;}
-case 63:
+    { List_Delete(yyvsp[0].l); return 1; ;}
+    break;
+
+  case 64:
 #line 407 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 64:
+    { return 1; ;}
+    break;
+
+  case 65:
 #line 408 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 65:
+    { return 1; ;}
+    break;
+
+  case 66:
 #line 409 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 66:
+    { return 1; ;}
+    break;
+
+  case 67:
 #line 410 "Gmsh.y"
-{ List_Delete(yyvsp[0].l); return 1; ;
-    break;}
-case 67:
+    { List_Delete(yyvsp[0].l); return 1; ;}
+    break;
+
+  case 68:
 #line 411 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 68:
+    { return 1; ;}
+    break;
+
+  case 69:
 #line 412 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 69:
+    { return 1; ;}
+    break;
+
+  case 70:
 #line 413 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 70:
+    { return 1; ;}
+    break;
+
+  case 71:
 #line 414 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 71:
+    { return 1; ;}
+    break;
+
+  case 72:
 #line 419 "Gmsh.y"
-{
+    {
       Msg(DIRECT, yyvsp[-2].c);
-    ;
-    break;}
-case 72:
+    ;}
+    break;
+
+  case 73:
 #line 423 "Gmsh.y"
-{
+    {
       char tmpstring[1024];
       int i = PrintListOfDouble(yyvsp[-4].c, yyvsp[-2].l, tmpstring);
       if(i < 0) 
@@ -5028,186 +5953,216 @@ case 72:
       else
 	Msg(DIRECT, tmpstring);
       List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 73:
+    ;}
+    break;
+
+  case 74:
 #line 440 "Gmsh.y"
-{ 
+    { 
       if(!strcmp(yyvsp[-5].c, "View")) EndView(View, 1, yyname, yyvsp[-4].c); 
-    ;
-    break;}
-case 74:
+    ;}
+    break;
+
+  case 75:
 #line 444 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-7].c, "View")) EndView(View, 1, yyname, yyvsp[-6].c);
-    ;
-    break;}
-case 75:
+    ;}
+    break;
+
+  case 76:
 #line 451 "Gmsh.y"
-{
+    {
       View = BeginView(1); 
-    ;
-    break;}
-case 103:
+    ;}
+    break;
+
+  case 104:
 #line 485 "Gmsh.y"
-{ List_Add(View->SP, &yyvsp[0].d); ;
-    break;}
-case 104:
+    { List_Add(View->SP, &yyvsp[0].d); ;}
+    break;
+
+  case 105:
 #line 487 "Gmsh.y"
-{ List_Add(View->SP, &yyvsp[0].d); ;
-    break;}
-case 105:
+    { List_Add(View->SP, &yyvsp[0].d); ;}
+    break;
+
+  case 106:
 #line 492 "Gmsh.y"
-{ 
+    { 
       List_Add(View->SP, &yyvsp[-5].d); List_Add(View->SP, &yyvsp[-3].d);
       List_Add(View->SP, &yyvsp[-1].d);      
-    ;
-    break;}
-case 106:
+    ;}
+    break;
+
+  case 107:
 #line 497 "Gmsh.y"
-{
+    {
       View->NbSP++;
-    ;
-    break;}
-case 107:
+    ;}
+    break;
+
+  case 108:
 #line 504 "Gmsh.y"
-{ List_Add(View->VP, &yyvsp[0].d); ;
-    break;}
-case 108:
+    { List_Add(View->VP, &yyvsp[0].d); ;}
+    break;
+
+  case 109:
 #line 506 "Gmsh.y"
-{ List_Add(View->VP, &yyvsp[0].d); ;
-    break;}
-case 109:
+    { List_Add(View->VP, &yyvsp[0].d); ;}
+    break;
+
+  case 110:
 #line 511 "Gmsh.y"
-{ 
+    { 
       List_Add(View->VP, &yyvsp[-5].d); List_Add(View->VP, &yyvsp[-3].d);
       List_Add(View->VP, &yyvsp[-1].d); 
       ntmp = List_Nbr(View->VP);
-    ;
-    break;}
-case 110:
+    ;}
+    break;
+
+  case 111:
 #line 517 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->VP) - ntmp) % 3)
 	yymsg(GERROR, "Wrong number of values for vector point "
 	      "(%d is not a multiple of 3)", List_Nbr(View->VP) - ntmp);
       View->NbVP++;
-    ;
-    break;}
-case 111:
+    ;}
+    break;
+
+  case 112:
 #line 527 "Gmsh.y"
-{ List_Add(View->TP, &yyvsp[0].d); ;
-    break;}
-case 112:
+    { List_Add(View->TP, &yyvsp[0].d); ;}
+    break;
+
+  case 113:
 #line 529 "Gmsh.y"
-{ List_Add(View->TP, &yyvsp[0].d); ;
-    break;}
-case 113:
+    { List_Add(View->TP, &yyvsp[0].d); ;}
+    break;
+
+  case 114:
 #line 534 "Gmsh.y"
-{ 
+    { 
       List_Add(View->TP, &yyvsp[-5].d); List_Add(View->TP, &yyvsp[-3].d);
       List_Add(View->TP, &yyvsp[-1].d);
       ntmp = List_Nbr(View->TP);
-    ;
-    break;}
-case 114:
+    ;}
+    break;
+
+  case 115:
 #line 540 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->TP) - ntmp) % 9)
 	yymsg(GERROR, "Wrong number of values for tensor point "
 	      "(%d is not a multiple of 9)", List_Nbr(View->TP) - ntmp);
       View->NbTP++;
-    ;
-    break;}
-case 115:
+    ;}
+    break;
+
+  case 116:
 #line 550 "Gmsh.y"
-{ List_Add(View->SL, &yyvsp[0].d); ;
-    break;}
-case 116:
+    { List_Add(View->SL, &yyvsp[0].d); ;}
+    break;
+
+  case 117:
 #line 552 "Gmsh.y"
-{ List_Add(View->SL, &yyvsp[0].d); ;
-    break;}
-case 117:
+    { List_Add(View->SL, &yyvsp[0].d); ;}
+    break;
+
+  case 118:
 #line 558 "Gmsh.y"
-{ 
+    { 
       List_Add(View->SL, &yyvsp[-11].d); List_Add(View->SL, &yyvsp[-5].d);
       List_Add(View->SL, &yyvsp[-9].d); List_Add(View->SL, &yyvsp[-3].d);
       List_Add(View->SL, &yyvsp[-7].d); List_Add(View->SL, &yyvsp[-1].d);
       ntmp = List_Nbr(View->SL);
-    ;
-    break;}
-case 118:
+    ;}
+    break;
+
+  case 119:
 #line 565 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->SL) - ntmp) % 2)
 	yymsg(GERROR, "Wrong number of values for scalar line "
 	      "(%d is not a multiple of 2)", List_Nbr(View->SL) - ntmp);
       View->NbSL++;
-    ;
-    break;}
-case 119:
+    ;}
+    break;
+
+  case 120:
 #line 575 "Gmsh.y"
-{ List_Add(View->VL, &yyvsp[0].d); ;
-    break;}
-case 120:
+    { List_Add(View->VL, &yyvsp[0].d); ;}
+    break;
+
+  case 121:
 #line 577 "Gmsh.y"
-{ List_Add(View->VL, &yyvsp[0].d); ;
-    break;}
-case 121:
+    { List_Add(View->VL, &yyvsp[0].d); ;}
+    break;
+
+  case 122:
 #line 583 "Gmsh.y"
-{ 
+    { 
       List_Add(View->VL, &yyvsp[-11].d); List_Add(View->VL, &yyvsp[-5].d);
       List_Add(View->VL, &yyvsp[-9].d); List_Add(View->VL, &yyvsp[-3].d);
       List_Add(View->VL, &yyvsp[-7].d); List_Add(View->VL, &yyvsp[-1].d);
       ntmp = List_Nbr(View->VL);
-    ;
-    break;}
-case 122:
+    ;}
+    break;
+
+  case 123:
 #line 590 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->VL) - ntmp) % 6)
 	yymsg(GERROR, "Wrong number of values for vector line "
 	      "(%d is not a multiple of 6)", List_Nbr(View->VL) - ntmp);
       View->NbVL++;
-    ;
-    break;}
-case 123:
+    ;}
+    break;
+
+  case 124:
 #line 600 "Gmsh.y"
-{ List_Add(View->TL, &yyvsp[0].d); ;
-    break;}
-case 124:
+    { List_Add(View->TL, &yyvsp[0].d); ;}
+    break;
+
+  case 125:
 #line 602 "Gmsh.y"
-{ List_Add(View->TL, &yyvsp[0].d); ;
-    break;}
-case 125:
+    { List_Add(View->TL, &yyvsp[0].d); ;}
+    break;
+
+  case 126:
 #line 608 "Gmsh.y"
-{ 
+    { 
       List_Add(View->TL, &yyvsp[-11].d); List_Add(View->TL, &yyvsp[-5].d);
       List_Add(View->TL, &yyvsp[-9].d); List_Add(View->TL, &yyvsp[-3].d);
       List_Add(View->TL, &yyvsp[-7].d); List_Add(View->TL, &yyvsp[-1].d);
       ntmp = List_Nbr(View->TL);
-    ;
-    break;}
-case 126:
+    ;}
+    break;
+
+  case 127:
 #line 615 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->TL) - ntmp) % 18)
 	yymsg(GERROR, "Wrong number of values for tensor line "
 	      "(%d is not a multiple of 18)", List_Nbr(View->TL) - ntmp);
       View->NbTL++;
-    ;
-    break;}
-case 127:
+    ;}
+    break;
+
+  case 128:
 #line 625 "Gmsh.y"
-{ List_Add(View->ST, &yyvsp[0].d); ;
-    break;}
-case 128:
+    { List_Add(View->ST, &yyvsp[0].d); ;}
+    break;
+
+  case 129:
 #line 627 "Gmsh.y"
-{ List_Add(View->ST, &yyvsp[0].d); ;
-    break;}
-case 129:
+    { List_Add(View->ST, &yyvsp[0].d); ;}
+    break;
+
+  case 130:
 #line 634 "Gmsh.y"
-{ 
+    { 
       List_Add(View->ST, &yyvsp[-17].d); List_Add(View->ST, &yyvsp[-11].d);
       List_Add(View->ST, &yyvsp[-5].d);
       List_Add(View->ST, &yyvsp[-15].d); List_Add(View->ST, &yyvsp[-9].d);
@@ -5215,28 +6170,32 @@ case 129:
       List_Add(View->ST, &yyvsp[-13].d); List_Add(View->ST, &yyvsp[-7].d);
       List_Add(View->ST, &yyvsp[-1].d);
       ntmp = List_Nbr(View->ST);
-    ;
-    break;}
-case 130:
+    ;}
+    break;
+
+  case 131:
 #line 644 "Gmsh.y"
-{
-      if((List_Nbr(View->ST) - ntmp) % 3)
-	yymsg(GERROR, "Wrong number of values for scalar triangle "
-	      "(%d is not a multiple of 3)", List_Nbr(View->ST) - ntmp);
+    {
+//     if((List_Nbr(View->ST) - ntmp) % 3)
+//	yymsg(GERROR, "Wrong number of values for scalar triangle "
+//	      "(%d is not a multiple of 3)", List_Nbr(View->ST) - ntmp);
       View->NbST++;
-    ;
-    break;}
-case 131:
+    ;}
+    break;
+
+  case 132:
 #line 654 "Gmsh.y"
-{ List_Add(View->VT, &yyvsp[0].d); ;
-    break;}
-case 132:
+    { List_Add(View->VT, &yyvsp[0].d); ;}
+    break;
+
+  case 133:
 #line 656 "Gmsh.y"
-{ List_Add(View->VT, &yyvsp[0].d); ;
-    break;}
-case 133:
+    { List_Add(View->VT, &yyvsp[0].d); ;}
+    break;
+
+  case 134:
 #line 663 "Gmsh.y"
-{ 
+    { 
       List_Add(View->VT, &yyvsp[-17].d); List_Add(View->VT, &yyvsp[-11].d);
       List_Add(View->VT, &yyvsp[-5].d);
       List_Add(View->VT, &yyvsp[-15].d); List_Add(View->VT, &yyvsp[-9].d);
@@ -5244,28 +6203,32 @@ case 133:
       List_Add(View->VT, &yyvsp[-13].d); List_Add(View->VT, &yyvsp[-7].d);
       List_Add(View->VT, &yyvsp[-1].d);
       ntmp = List_Nbr(View->VT);
-    ;
-    break;}
-case 134:
+    ;}
+    break;
+
+  case 135:
 #line 673 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->VT) - ntmp) % 9)
 	yymsg(GERROR, "Wrong number of values for vector triangle "
 	      "(%d is not a multiple of 9)", List_Nbr(View->VT) - ntmp);
       View->NbVT++;
-    ;
-    break;}
-case 135:
+    ;}
+    break;
+
+  case 136:
 #line 683 "Gmsh.y"
-{ List_Add(View->TT, &yyvsp[0].d); ;
-    break;}
-case 136:
+    { List_Add(View->TT, &yyvsp[0].d); ;}
+    break;
+
+  case 137:
 #line 685 "Gmsh.y"
-{ List_Add(View->TT, &yyvsp[0].d); ;
-    break;}
-case 137:
+    { List_Add(View->TT, &yyvsp[0].d); ;}
+    break;
+
+  case 138:
 #line 692 "Gmsh.y"
-{ 
+    { 
       List_Add(View->TT, &yyvsp[-17].d); List_Add(View->TT, &yyvsp[-11].d);
       List_Add(View->TT, &yyvsp[-5].d);
       List_Add(View->TT, &yyvsp[-15].d); List_Add(View->TT, &yyvsp[-9].d);
@@ -5273,28 +6236,32 @@ case 137:
       List_Add(View->TT, &yyvsp[-13].d); List_Add(View->TT, &yyvsp[-7].d);
       List_Add(View->TT, &yyvsp[-1].d);
       ntmp = List_Nbr(View->TT);
-    ;
-    break;}
-case 138:
+    ;}
+    break;
+
+  case 139:
 #line 702 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->TT) - ntmp) % 27)
 	yymsg(GERROR, "Wrong number of values for tensor triangle "
 	      "(%d is not a multiple of 27)", List_Nbr(View->TT) - ntmp);
       View->NbTT++;
-    ;
-    break;}
-case 139:
+    ;}
+    break;
+
+  case 140:
 #line 712 "Gmsh.y"
-{ List_Add(View->SQ, &yyvsp[0].d); ;
-    break;}
-case 140:
+    { List_Add(View->SQ, &yyvsp[0].d); ;}
+    break;
+
+  case 141:
 #line 714 "Gmsh.y"
-{ List_Add(View->SQ, &yyvsp[0].d); ;
-    break;}
-case 141:
+    { List_Add(View->SQ, &yyvsp[0].d); ;}
+    break;
+
+  case 142:
 #line 722 "Gmsh.y"
-{ 
+    { 
       List_Add(View->SQ, &yyvsp[-23].d);  List_Add(View->SQ, &yyvsp[-17].d);
       List_Add(View->SQ, &yyvsp[-11].d); List_Add(View->SQ, &yyvsp[-5].d);
       List_Add(View->SQ, &yyvsp[-21].d);  List_Add(View->SQ, &yyvsp[-15].d);
@@ -5302,28 +6269,32 @@ case 141:
       List_Add(View->SQ, &yyvsp[-19].d);  List_Add(View->SQ, &yyvsp[-13].d);
       List_Add(View->SQ, &yyvsp[-7].d); List_Add(View->SQ, &yyvsp[-1].d);
       ntmp = List_Nbr(View->SQ);
-    ;
-    break;}
-case 142:
+    ;}
+    break;
+
+  case 143:
 #line 732 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->SQ) - ntmp) % 4)
 	yymsg(GERROR, "Wrong number of values for scalar quadrangle "
 	      "(%d is not a multiple of 4)", List_Nbr(View->SQ) - ntmp);
       View->NbSQ++;
-    ;
-    break;}
-case 143:
+    ;}
+    break;
+
+  case 144:
 #line 742 "Gmsh.y"
-{ List_Add(View->VQ, &yyvsp[0].d); ;
-    break;}
-case 144:
+    { List_Add(View->VQ, &yyvsp[0].d); ;}
+    break;
+
+  case 145:
 #line 744 "Gmsh.y"
-{ List_Add(View->VQ, &yyvsp[0].d); ;
-    break;}
-case 145:
+    { List_Add(View->VQ, &yyvsp[0].d); ;}
+    break;
+
+  case 146:
 #line 752 "Gmsh.y"
-{ 
+    { 
       List_Add(View->VQ, &yyvsp[-23].d);  List_Add(View->VQ, &yyvsp[-17].d);
       List_Add(View->VQ, &yyvsp[-11].d); List_Add(View->VQ, &yyvsp[-5].d);
       List_Add(View->VQ, &yyvsp[-21].d);  List_Add(View->VQ, &yyvsp[-15].d);
@@ -5331,28 +6302,32 @@ case 145:
       List_Add(View->VQ, &yyvsp[-19].d);  List_Add(View->VQ, &yyvsp[-13].d);
       List_Add(View->VQ, &yyvsp[-7].d); List_Add(View->VQ, &yyvsp[-1].d);
       ntmp = List_Nbr(View->VQ);
-    ;
-    break;}
-case 146:
+    ;}
+    break;
+
+  case 147:
 #line 762 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->VQ) - ntmp) % 12)
 	yymsg(GERROR, "Wrong number of values for vector quadrangle "
 	      "(%d is not a multiple of 12)", List_Nbr(View->VQ) - ntmp);
       View->NbVQ++;
-    ;
-    break;}
-case 147:
+    ;}
+    break;
+
+  case 148:
 #line 772 "Gmsh.y"
-{ List_Add(View->TQ, &yyvsp[0].d); ;
-    break;}
-case 148:
+    { List_Add(View->TQ, &yyvsp[0].d); ;}
+    break;
+
+  case 149:
 #line 774 "Gmsh.y"
-{ List_Add(View->TQ, &yyvsp[0].d); ;
-    break;}
-case 149:
+    { List_Add(View->TQ, &yyvsp[0].d); ;}
+    break;
+
+  case 150:
 #line 782 "Gmsh.y"
-{ 
+    { 
       List_Add(View->TQ, &yyvsp[-23].d);  List_Add(View->TQ, &yyvsp[-17].d);
       List_Add(View->TQ, &yyvsp[-11].d); List_Add(View->TQ, &yyvsp[-5].d);
       List_Add(View->TQ, &yyvsp[-21].d);  List_Add(View->TQ, &yyvsp[-15].d);
@@ -5360,28 +6335,32 @@ case 149:
       List_Add(View->TQ, &yyvsp[-19].d);  List_Add(View->TQ, &yyvsp[-13].d);
       List_Add(View->TQ, &yyvsp[-7].d); List_Add(View->TQ, &yyvsp[-1].d);
       ntmp = List_Nbr(View->TQ);
-    ;
-    break;}
-case 150:
+    ;}
+    break;
+
+  case 151:
 #line 792 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->TQ) - ntmp) % 36)
 	yymsg(GERROR, "Wrong number of values for tensor quadrangle "
 	      "(%d is not a multiple of 36)", List_Nbr(View->TQ) - ntmp);
       View->NbTQ++;
-    ;
-    break;}
-case 151:
+    ;}
+    break;
+
+  case 152:
 #line 802 "Gmsh.y"
-{ List_Add(View->SS, &yyvsp[0].d); ;
-    break;}
-case 152:
+    { List_Add(View->SS, &yyvsp[0].d); ;}
+    break;
+
+  case 153:
 #line 804 "Gmsh.y"
-{ List_Add(View->SS, &yyvsp[0].d); ;
-    break;}
-case 153:
+    { List_Add(View->SS, &yyvsp[0].d); ;}
+    break;
+
+  case 154:
 #line 812 "Gmsh.y"
-{ 
+    { 
       List_Add(View->SS, &yyvsp[-23].d);  List_Add(View->SS, &yyvsp[-17].d);
       List_Add(View->SS, &yyvsp[-11].d); List_Add(View->SS, &yyvsp[-5].d);
       List_Add(View->SS, &yyvsp[-21].d);  List_Add(View->SS, &yyvsp[-15].d);
@@ -5389,28 +6368,32 @@ case 153:
       List_Add(View->SS, &yyvsp[-19].d);  List_Add(View->SS, &yyvsp[-13].d);
       List_Add(View->SS, &yyvsp[-7].d); List_Add(View->SS, &yyvsp[-1].d);
       ntmp = List_Nbr(View->SS);
-    ;
-    break;}
-case 154:
+    ;}
+    break;
+
+  case 155:
 #line 822 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->SS) - ntmp) % 4)
 	yymsg(GERROR, "Wrong number of values for scalar tetrahedron "
 	      "(%d is not a multiple of 4)", List_Nbr(View->SS) - ntmp);
       View->NbSS++;
-    ;
-    break;}
-case 155:
+    ;}
+    break;
+
+  case 156:
 #line 832 "Gmsh.y"
-{ List_Add(View->VS, &yyvsp[0].d); ;
-    break;}
-case 156:
+    { List_Add(View->VS, &yyvsp[0].d); ;}
+    break;
+
+  case 157:
 #line 834 "Gmsh.y"
-{ List_Add(View->VS, &yyvsp[0].d); ;
-    break;}
-case 157:
+    { List_Add(View->VS, &yyvsp[0].d); ;}
+    break;
+
+  case 158:
 #line 842 "Gmsh.y"
-{ 
+    { 
       List_Add(View->VS, &yyvsp[-23].d);  List_Add(View->VS, &yyvsp[-17].d);
       List_Add(View->VS, &yyvsp[-11].d); List_Add(View->VS, &yyvsp[-5].d);
       List_Add(View->VS, &yyvsp[-21].d);  List_Add(View->VS, &yyvsp[-15].d);
@@ -5418,28 +6401,32 @@ case 157:
       List_Add(View->VS, &yyvsp[-19].d);  List_Add(View->VS, &yyvsp[-13].d);
       List_Add(View->VS, &yyvsp[-7].d); List_Add(View->VS, &yyvsp[-1].d);
       ntmp = List_Nbr(View->VS);
-    ;
-    break;}
-case 158:
+    ;}
+    break;
+
+  case 159:
 #line 852 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->VS) - ntmp) % 12)
 	yymsg(GERROR, "Wrong number of values for vector tetrahedron "
 	      "(%d is not a multiple of 12)", List_Nbr(View->VS) - ntmp);
       View->NbVS++;
-    ;
-    break;}
-case 159:
+    ;}
+    break;
+
+  case 160:
 #line 862 "Gmsh.y"
-{ List_Add(View->TS, &yyvsp[0].d); ;
-    break;}
-case 160:
+    { List_Add(View->TS, &yyvsp[0].d); ;}
+    break;
+
+  case 161:
 #line 864 "Gmsh.y"
-{ List_Add(View->TS, &yyvsp[0].d); ;
-    break;}
-case 161:
+    { List_Add(View->TS, &yyvsp[0].d); ;}
+    break;
+
+  case 162:
 #line 872 "Gmsh.y"
-{ 
+    { 
       List_Add(View->TS, &yyvsp[-23].d);  List_Add(View->TS, &yyvsp[-17].d);
       List_Add(View->TS, &yyvsp[-11].d); List_Add(View->TS, &yyvsp[-5].d);
       List_Add(View->TS, &yyvsp[-21].d);  List_Add(View->TS, &yyvsp[-15].d);
@@ -5447,28 +6434,32 @@ case 161:
       List_Add(View->TS, &yyvsp[-19].d);  List_Add(View->TS, &yyvsp[-13].d);
       List_Add(View->TS, &yyvsp[-7].d); List_Add(View->TS, &yyvsp[-1].d);
       ntmp = List_Nbr(View->TS);
-    ;
-    break;}
-case 162:
+    ;}
+    break;
+
+  case 163:
 #line 882 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->TS) - ntmp) % 36)
 	yymsg(GERROR, "Wrong number of values for tensor tetrahedron "
 	      "(%d is not a multiple of 36)", List_Nbr(View->TS) - ntmp);
       View->NbTS++;
-    ;
-    break;}
-case 163:
+    ;}
+    break;
+
+  case 164:
 #line 892 "Gmsh.y"
-{ List_Add(View->SH, &yyvsp[0].d); ;
-    break;}
-case 164:
+    { List_Add(View->SH, &yyvsp[0].d); ;}
+    break;
+
+  case 165:
 #line 894 "Gmsh.y"
-{ List_Add(View->SH, &yyvsp[0].d); ;
-    break;}
-case 165:
+    { List_Add(View->SH, &yyvsp[0].d); ;}
+    break;
+
+  case 166:
 #line 906 "Gmsh.y"
-{ 
+    { 
       List_Add(View->SH, &yyvsp[-47].d);  List_Add(View->SH, &yyvsp[-41].d);
       List_Add(View->SH, &yyvsp[-35].d); List_Add(View->SH, &yyvsp[-29].d);
       List_Add(View->SH, &yyvsp[-23].d); List_Add(View->SH, &yyvsp[-17].d);
@@ -5482,28 +6473,32 @@ case 165:
       List_Add(View->SH, &yyvsp[-19].d); List_Add(View->SH, &yyvsp[-13].d);
       List_Add(View->SH, &yyvsp[-7].d); List_Add(View->SH, &yyvsp[-1].d);
       ntmp = List_Nbr(View->SH);
-    ;
-    break;}
-case 166:
+    ;}
+    break;
+
+  case 167:
 #line 922 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->SH) - ntmp) % 8)
 	yymsg(GERROR, "Wrong number of values for scalar hexahedron "
 	      "(%d is not a multiple of 8)", List_Nbr(View->SH) - ntmp);
       View->NbSH++;
-    ;
-    break;}
-case 167:
+    ;}
+    break;
+
+  case 168:
 #line 932 "Gmsh.y"
-{ List_Add(View->VH, &yyvsp[0].d); ;
-    break;}
-case 168:
+    { List_Add(View->VH, &yyvsp[0].d); ;}
+    break;
+
+  case 169:
 #line 934 "Gmsh.y"
-{ List_Add(View->VH, &yyvsp[0].d); ;
-    break;}
-case 169:
+    { List_Add(View->VH, &yyvsp[0].d); ;}
+    break;
+
+  case 170:
 #line 946 "Gmsh.y"
-{ 
+    { 
       List_Add(View->VH, &yyvsp[-47].d);  List_Add(View->VH, &yyvsp[-41].d);
       List_Add(View->VH, &yyvsp[-35].d); List_Add(View->VH, &yyvsp[-29].d);
       List_Add(View->VH, &yyvsp[-23].d); List_Add(View->VH, &yyvsp[-17].d);
@@ -5517,28 +6512,32 @@ case 169:
       List_Add(View->VH, &yyvsp[-19].d); List_Add(View->VH, &yyvsp[-13].d);
       List_Add(View->VH, &yyvsp[-7].d); List_Add(View->VH, &yyvsp[-1].d);
       ntmp = List_Nbr(View->VH);
-    ;
-    break;}
-case 170:
+    ;}
+    break;
+
+  case 171:
 #line 962 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->VH) - ntmp) % 24)
 	yymsg(GERROR, "Wrong number of values for vector hexahedron "
 	      "(%d is not a multiple of 24)", List_Nbr(View->VH) - ntmp);
       View->NbVH++;
-    ;
-    break;}
-case 171:
+    ;}
+    break;
+
+  case 172:
 #line 972 "Gmsh.y"
-{ List_Add(View->TH, &yyvsp[0].d); ;
-    break;}
-case 172:
+    { List_Add(View->TH, &yyvsp[0].d); ;}
+    break;
+
+  case 173:
 #line 974 "Gmsh.y"
-{ List_Add(View->TH, &yyvsp[0].d); ;
-    break;}
-case 173:
+    { List_Add(View->TH, &yyvsp[0].d); ;}
+    break;
+
+  case 174:
 #line 986 "Gmsh.y"
-{ 
+    { 
       List_Add(View->TH, &yyvsp[-47].d);  List_Add(View->TH, &yyvsp[-41].d);
       List_Add(View->TH, &yyvsp[-35].d); List_Add(View->TH, &yyvsp[-29].d);
       List_Add(View->TH, &yyvsp[-23].d); List_Add(View->TH, &yyvsp[-17].d);
@@ -5552,28 +6551,32 @@ case 173:
       List_Add(View->TH, &yyvsp[-19].d); List_Add(View->TH, &yyvsp[-13].d);
       List_Add(View->TH, &yyvsp[-7].d); List_Add(View->TH, &yyvsp[-1].d);
       ntmp = List_Nbr(View->TH);
-    ;
-    break;}
-case 174:
+    ;}
+    break;
+
+  case 175:
 #line 1002 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->TH) - ntmp) % 72)
 	yymsg(GERROR, "Wrong number of values for tensor hexahedron "
 	      "(%d is not a multiple of 72)", List_Nbr(View->TH) - ntmp);
       View->NbTH++;
-    ;
-    break;}
-case 175:
+    ;}
+    break;
+
+  case 176:
 #line 1012 "Gmsh.y"
-{ List_Add(View->SI, &yyvsp[0].d); ;
-    break;}
-case 176:
+    { List_Add(View->SI, &yyvsp[0].d); ;}
+    break;
+
+  case 177:
 #line 1014 "Gmsh.y"
-{ List_Add(View->SI, &yyvsp[0].d); ;
-    break;}
-case 177:
+    { List_Add(View->SI, &yyvsp[0].d); ;}
+    break;
+
+  case 178:
 #line 1024 "Gmsh.y"
-{ 
+    { 
       List_Add(View->SI, &yyvsp[-35].d);  List_Add(View->SI, &yyvsp[-29].d);
       List_Add(View->SI, &yyvsp[-23].d); List_Add(View->SI, &yyvsp[-17].d);
       List_Add(View->SI, &yyvsp[-11].d); List_Add(View->SI, &yyvsp[-5].d);
@@ -5584,28 +6587,32 @@ case 177:
       List_Add(View->SI, &yyvsp[-19].d); List_Add(View->SI, &yyvsp[-13].d);
       List_Add(View->SI, &yyvsp[-7].d); List_Add(View->SI, &yyvsp[-1].d);
       ntmp = List_Nbr(View->SI);
-    ;
-    break;}
-case 178:
+    ;}
+    break;
+
+  case 179:
 #line 1037 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->SI) - ntmp) % 6)
 	yymsg(GERROR, "Wrong number of values for scalar prism "
 	      "(%d is not a multiple of 6)", List_Nbr(View->SI) - ntmp);
       View->NbSI++;
-    ;
-    break;}
-case 179:
+    ;}
+    break;
+
+  case 180:
 #line 1047 "Gmsh.y"
-{ List_Add(View->VI, &yyvsp[0].d); ;
-    break;}
-case 180:
+    { List_Add(View->VI, &yyvsp[0].d); ;}
+    break;
+
+  case 181:
 #line 1049 "Gmsh.y"
-{ List_Add(View->VI, &yyvsp[0].d); ;
-    break;}
-case 181:
+    { List_Add(View->VI, &yyvsp[0].d); ;}
+    break;
+
+  case 182:
 #line 1059 "Gmsh.y"
-{ 
+    { 
       List_Add(View->VI, &yyvsp[-35].d);  List_Add(View->VI, &yyvsp[-29].d);
       List_Add(View->VI, &yyvsp[-23].d); List_Add(View->VI, &yyvsp[-17].d);
       List_Add(View->VI, &yyvsp[-11].d); List_Add(View->VI, &yyvsp[-5].d);
@@ -5616,28 +6623,32 @@ case 181:
       List_Add(View->VI, &yyvsp[-19].d); List_Add(View->VI, &yyvsp[-13].d);
       List_Add(View->VI, &yyvsp[-7].d); List_Add(View->VI, &yyvsp[-1].d);
       ntmp = List_Nbr(View->VI);
-    ;
-    break;}
-case 182:
+    ;}
+    break;
+
+  case 183:
 #line 1072 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->VI) - ntmp) % 18)
 	yymsg(GERROR, "Wrong number of values for vector prism "
 	      "(%d is not a multiple of 18)", List_Nbr(View->VI) - ntmp);
       View->NbVI++;
-    ;
-    break;}
-case 183:
+    ;}
+    break;
+
+  case 184:
 #line 1082 "Gmsh.y"
-{ List_Add(View->TI, &yyvsp[0].d); ;
-    break;}
-case 184:
+    { List_Add(View->TI, &yyvsp[0].d); ;}
+    break;
+
+  case 185:
 #line 1084 "Gmsh.y"
-{ List_Add(View->TI, &yyvsp[0].d); ;
-    break;}
-case 185:
+    { List_Add(View->TI, &yyvsp[0].d); ;}
+    break;
+
+  case 186:
 #line 1094 "Gmsh.y"
-{ 
+    { 
       List_Add(View->TI, &yyvsp[-35].d);  List_Add(View->TI, &yyvsp[-29].d);
       List_Add(View->TI, &yyvsp[-23].d); List_Add(View->TI, &yyvsp[-17].d);
       List_Add(View->TI, &yyvsp[-11].d); List_Add(View->TI, &yyvsp[-5].d);
@@ -5648,28 +6659,32 @@ case 185:
       List_Add(View->TI, &yyvsp[-19].d); List_Add(View->TI, &yyvsp[-13].d);
       List_Add(View->TI, &yyvsp[-7].d); List_Add(View->TI, &yyvsp[-1].d);
       ntmp = List_Nbr(View->TI);
-    ;
-    break;}
-case 186:
+    ;}
+    break;
+
+  case 187:
 #line 1107 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->TI) - ntmp) % 54)
 	yymsg(GERROR, "Wrong number of values for tensor prism "
 	      "(%d is not a multiple of 54)", List_Nbr(View->TI) - ntmp);
       View->NbTI++;
-    ;
-    break;}
-case 187:
+    ;}
+    break;
+
+  case 188:
 #line 1117 "Gmsh.y"
-{ List_Add(View->SY, &yyvsp[0].d); ;
-    break;}
-case 188:
+    { List_Add(View->SY, &yyvsp[0].d); ;}
+    break;
+
+  case 189:
 #line 1119 "Gmsh.y"
-{ List_Add(View->SY, &yyvsp[0].d); ;
-    break;}
-case 189:
+    { List_Add(View->SY, &yyvsp[0].d); ;}
+    break;
+
+  case 190:
 #line 1128 "Gmsh.y"
-{ 
+    { 
       List_Add(View->SY, &yyvsp[-29].d);  List_Add(View->SY, &yyvsp[-23].d);
       List_Add(View->SY, &yyvsp[-17].d); List_Add(View->SY, &yyvsp[-11].d);
       List_Add(View->SY, &yyvsp[-5].d);
@@ -5680,28 +6695,32 @@ case 189:
       List_Add(View->SY, &yyvsp[-13].d); List_Add(View->SY, &yyvsp[-7].d);
       List_Add(View->SY, &yyvsp[-1].d);
       ntmp = List_Nbr(View->SY);
-    ;
-    break;}
-case 190:
+    ;}
+    break;
+
+  case 191:
 #line 1141 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->SY) - ntmp) % 5)
 	yymsg(GERROR, "Wrong number of values for scalar pyramid "
 	      "(%d is not a multiple of 5)", List_Nbr(View->SY) - ntmp);
       View->NbSY++;
-    ;
-    break;}
-case 191:
+    ;}
+    break;
+
+  case 192:
 #line 1151 "Gmsh.y"
-{ List_Add(View->VY, &yyvsp[0].d); ;
-    break;}
-case 192:
+    { List_Add(View->VY, &yyvsp[0].d); ;}
+    break;
+
+  case 193:
 #line 1153 "Gmsh.y"
-{ List_Add(View->VY, &yyvsp[0].d); ;
-    break;}
-case 193:
+    { List_Add(View->VY, &yyvsp[0].d); ;}
+    break;
+
+  case 194:
 #line 1162 "Gmsh.y"
-{ 
+    { 
       List_Add(View->VY, &yyvsp[-29].d);  List_Add(View->VY, &yyvsp[-23].d);
       List_Add(View->VY, &yyvsp[-17].d); List_Add(View->VY, &yyvsp[-11].d);
       List_Add(View->VY, &yyvsp[-5].d);
@@ -5712,28 +6731,32 @@ case 193:
       List_Add(View->VY, &yyvsp[-13].d); List_Add(View->VY, &yyvsp[-7].d);
       List_Add(View->VY, &yyvsp[-1].d);
       ntmp = List_Nbr(View->VY);
-    ;
-    break;}
-case 194:
+    ;}
+    break;
+
+  case 195:
 #line 1175 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->VY) - ntmp) % 15)
 	yymsg(GERROR, "Wrong number of values for vector pyramid "
 	      "(%d is not a multiple of 15)", List_Nbr(View->VY) - ntmp);
       View->NbVY++;
-    ;
-    break;}
-case 195:
+    ;}
+    break;
+
+  case 196:
 #line 1185 "Gmsh.y"
-{ List_Add(View->TY, &yyvsp[0].d); ;
-    break;}
-case 196:
+    { List_Add(View->TY, &yyvsp[0].d); ;}
+    break;
+
+  case 197:
 #line 1187 "Gmsh.y"
-{ List_Add(View->TY, &yyvsp[0].d); ;
-    break;}
-case 197:
+    { List_Add(View->TY, &yyvsp[0].d); ;}
+    break;
+
+  case 198:
 #line 1196 "Gmsh.y"
-{ 
+    { 
       List_Add(View->TY, &yyvsp[-29].d);  List_Add(View->TY, &yyvsp[-23].d);
       List_Add(View->TY, &yyvsp[-17].d); List_Add(View->TY, &yyvsp[-11].d);
       List_Add(View->TY, &yyvsp[-5].d);
@@ -5744,112 +6767,130 @@ case 197:
       List_Add(View->TY, &yyvsp[-13].d); List_Add(View->TY, &yyvsp[-7].d);
       List_Add(View->TY, &yyvsp[-1].d);
       ntmp = List_Nbr(View->TY);
-    ;
-    break;}
-case 198:
+    ;}
+    break;
+
+  case 199:
 #line 1209 "Gmsh.y"
-{
+    {
       if((List_Nbr(View->TY) - ntmp) % 45)
 	yymsg(GERROR, "Wrong number of values for tensor pyramid "
 	      "(%d is not a multiple of 45)", List_Nbr(View->TY) - ntmp);
       View->NbTY++;
-    ;
-    break;}
-case 199:
+    ;}
+    break;
+
+  case 200:
 #line 1219 "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 200:
+    ;}
+    break;
+
+  case 201:
 #line 1224 "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 201:
+    ;}
+    break;
+
+  case 202:
 #line 1232 "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 202:
+    ;}
+    break;
+
+  case 203:
 #line 1239 "Gmsh.y"
-{
+    {
       View->NbT2++;
-    ;
-    break;}
-case 203:
+    ;}
+    break;
+
+  case 204:
 #line 1246 "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 204:
+    ;}
+    break;
+
+  case 205:
 #line 1251 "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 205:
+    ;}
+    break;
+
+  case 206:
 #line 1259 "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 206:
+    ;}
+    break;
+
+  case 207:
 #line 1266 "Gmsh.y"
-{
+    {
       View->NbT3++;
-    ;
-    break;}
-case 207:
+    ;}
+    break;
+
+  case 208:
 #line 1273 "Gmsh.y"
-{
-      View->adaptive = new Adaptive_Post_View (View, yyvsp[-1].l);
-    ;
-    break;}
-case 208:
+    {
+      View -> adaptive = new Adaptive_Post_View ( View , yyvsp[-2].l , yyvsp[-1].l);
+    ;}
+    break;
+
+  case 209:
 #line 1281 "Gmsh.y"
-{ yyval.i = 0; ;
-    break;}
-case 209:
+    { yyval.i = 0; ;}
+    break;
+
+  case 210:
 #line 1282 "Gmsh.y"
-{ yyval.i = 1; ;
-    break;}
-case 210:
+    { yyval.i = 1; ;}
+    break;
+
+  case 211:
 #line 1283 "Gmsh.y"
-{ yyval.i = 2; ;
-    break;}
-case 211:
+    { yyval.i = 2; ;}
+    break;
+
+  case 212:
 #line 1284 "Gmsh.y"
-{ yyval.i = 3; ;
-    break;}
-case 212:
+    { yyval.i = 3; ;}
+    break;
+
+  case 213:
 #line 1285 "Gmsh.y"
-{ yyval.i = 4; ;
-    break;}
-case 213:
+    { yyval.i = 4; ;}
+    break;
+
+  case 214:
 #line 1289 "Gmsh.y"
-{ yyval.i = 1; ;
-    break;}
-case 214:
+    { yyval.i = 1; ;}
+    break;
+
+  case 215:
 #line 1290 "Gmsh.y"
-{ yyval.i = -1; ;
-    break;}
-case 215:
+    { yyval.i = -1; ;}
+    break;
+
+  case 216:
 #line 1298 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-3].c;
       Symbol *pSymbol;
@@ -5875,11 +6916,12 @@ case 215:
 	  break;
 	}
       }
-    ;
-    break;}
-case 216:
+    ;}
+    break;
+
+  case 217:
 #line 1326 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-6].c;
       Symbol *pSymbol;
@@ -5913,11 +6955,12 @@ case 216:
 	    yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-6].c, (int)yyvsp[-4].d);
 	}
       }
-    ;
-    break;}
-case 217:
+    ;}
+    break;
+
+  case 218:
 #line 1362 "Gmsh.y"
-{
+    {
       if(List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-1].l))
 	yymsg(GERROR, "Incompatible array dimensions in affectation");
       else{
@@ -5964,11 +7007,12 @@ case 217:
       }
       List_Delete(yyvsp[-5].l);
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 218:
+    ;}
+    break;
+
+  case 219:
 #line 1411 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-5].c;
       Symbol *pSymbol;
@@ -5982,11 +7026,12 @@ case 218:
 	List_Copy(yyvsp[-1].l, pSymbol->val);
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 219:
+    ;}
+    break;
+
+  case 220:
 #line 1427 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-2].c;
       Symbol *pSymbol;
@@ -5994,11 +7039,12 @@ case 219:
 	yymsg(GERROR, "Unknown variable '%s'", yyvsp[-2].c); 
       else
 	*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[-1].i; 
-    ;
-    break;}
-case 220:
+    ;}
+    break;
+
+  case 221:
 #line 1437 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-5].c;
       Symbol *pSymbol;
@@ -6011,11 +7057,12 @@ case 220:
 	else
 	  yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-5].c, (int)yyvsp[-3].d);
       }
-    ;
-    break;}
-case 221:
+    ;}
+    break;
+
+  case 222:
 #line 1455 "Gmsh.y"
-{ 
+    { 
       char* (*pStrOpt)(int num, int action, char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-5].c)))
@@ -6026,11 +7073,12 @@ case 221:
 	else
 	  pStrOpt(0, GMSH_SET|GMSH_GUI, yyvsp[-1].c);
       }
-    ;
-    break;}
-case 222:
+    ;}
+    break;
+
+  case 223:
 #line 1468 "Gmsh.y"
-{ 
+    { 
       char* (*pStrOpt)(int num, int action, char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-8].c)))
@@ -6041,11 +7089,12 @@ case 222:
 	else
 	  pStrOpt((int)yyvsp[-6].d, GMSH_SET|GMSH_GUI, yyvsp[-1].c);
       }
-    ;
-    break;}
-case 223:
+    ;}
+    break;
+
+  case 224:
 #line 1484 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
@@ -6068,11 +7117,12 @@ case 223:
 	  pNumOpt(0, GMSH_SET|GMSH_GUI, d);
 	}
       }
-    ;
-    break;}
-case 224:
+    ;}
+    break;
+
+  case 225:
 #line 1509 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-8].c)))
@@ -6096,11 +7146,12 @@ case 224:
 	  pNumOpt((int)yyvsp[-6].d, GMSH_SET|GMSH_GUI, d);
 	}
       }
-    ;
-    break;}
-case 225:
+    ;}
+    break;
+
+  case 226:
 #line 1535 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
@@ -6111,11 +7162,12 @@ case 225:
 	else
 	  pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+yyvsp[-1].i);
       }
-    ;
-    break;}
-case 226:
+    ;}
+    break;
+
+  case 227:
 #line 1548 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-7].c)))
@@ -6126,11 +7178,12 @@ case 226:
 	else
 	  pNumOpt((int)yyvsp[-5].d, GMSH_SET|GMSH_GUI, pNumOpt((int)yyvsp[-5].d, GMSH_GET, 0)+yyvsp[-1].i);
       }
-    ;
-    break;}
-case 227:
+    ;}
+    break;
+
+  case 228:
 #line 1564 "Gmsh.y"
-{
+    {
       unsigned int (*pColOpt)(int num, int action, unsigned int value);
       StringXColor *pColCat;
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-7].c)))
@@ -6141,11 +7194,12 @@ case 227:
 	else
 	  pColOpt(0, GMSH_SET|GMSH_GUI, yyvsp[-1].u);
       }
-    ;
-    break;}
-case 228:
+    ;}
+    break;
+
+  case 229:
 #line 1577 "Gmsh.y"
-{
+    {
       unsigned int (*pColOpt)(int num, int action, unsigned int value);
       StringXColor *pColCat;
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-10].c)))
@@ -6156,11 +7210,12 @@ case 228:
 	else
 	  pColOpt((int)yyvsp[-8].d, GMSH_SET|GMSH_GUI, yyvsp[-1].u);
       }
-    ;
-    break;}
-case 229:
+    ;}
+    break;
+
+  case 230:
 #line 1593 "Gmsh.y"
-{
+    {
       GmshColorTable *ct = Get_ColorTable(0);
       if(!ct)
 	yymsg(GERROR, "View[%d] does not exist", 0);
@@ -6177,11 +7232,12 @@ case 229:
 	}
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 230:
+    ;}
+    break;
+
+  case 231:
 #line 1612 "Gmsh.y"
-{
+    {
       GmshColorTable *ct = Get_ColorTable((int)yyvsp[-6].d);
       if(!ct)
 	yymsg(GERROR, "View[%d] does not exist", (int)yyvsp[-6].d);
@@ -6198,33 +7254,36 @@ case 230:
 	}
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 231:
+    ;}
+    break;
+
+  case 232:
 #line 1634 "Gmsh.y"
-{
+    {
       try {
 	GMSH_PluginManager::instance()->setPluginOption(yyvsp[-6].c, yyvsp[-3].c, yyvsp[-1].d); 
       }
       catch (...) {
 	yymsg(GERROR, "Unknown option '%s' or plugin '%s'", yyvsp[-3].c, yyvsp[-6].c);
       }
-    ;
-    break;}
-case 232:
+    ;}
+    break;
+
+  case 233:
 #line 1643 "Gmsh.y"
-{
+    {
       try {
 	GMSH_PluginManager::instance()->setPluginOption(yyvsp[-6].c, yyvsp[-3].c, yyvsp[-1].c); 
       }
       catch (...) {
 	yymsg(GERROR, "Unknown option '%s' or plugin '%s'", yyvsp[-3].c, yyvsp[-6].c);
       }
-    ;
-    break;}
-case 233:
+    ;}
+    break;
+
+  case 234:
 #line 1661 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindPoint(num, THEM)){
 	yymsg(GERROR, "Point %d already exists", num);
@@ -6238,11 +7297,12 @@ case 233:
       }
       yyval.s.Type = MSH_POINT;
       yyval.s.Num = num;
-    ;
-    break;}
-case 234:
+    ;}
+    break;
+
+  case 235:
 #line 1677 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindPhysicalGroup(num, MSH_PHYSICAL_POINT, THEM)){
 	yymsg(GERROR, "Physical point %d already exists", num);
@@ -6256,11 +7316,12 @@ case 234:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_PHYSICAL_POINT;
       yyval.s.Num = num;
-    ;
-    break;}
-case 235:
+    ;}
+    break;
+
+  case 236:
 #line 1693 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-9].l); i++){
 	double p;
       	List_Read(yyvsp[-9].l, i, &p);
@@ -6277,11 +7338,12 @@ case 235:
       // dummy values
       yyval.s.Type = 0;
       yyval.s.Num = 0;
-    ;
-    break;}
-case 236:
+    ;}
+    break;
+
+  case 237:
 #line 1712 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){
 	double d;
 	List_Read(yyvsp[-3].l, i, &d);
@@ -6295,11 +7357,12 @@ case 236:
       // dummy values
       yyval.s.Type = 0;
       yyval.s.Num = 0;
-    ;
-    break;}
-case 237:
+    ;}
+    break;
+
+  case 238:
 #line 1731 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -6315,11 +7378,12 @@ case 237:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_LINE;
       yyval.s.Num = num;
-    ;
-    break;}
-case 238:
+    ;}
+    break;
+
+  case 239:
 #line 1749 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -6335,11 +7399,12 @@ case 238:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_SPLN;
       yyval.s.Num = num;
-    ;
-    break;}
-case 239:
+    ;}
+    break;
+
+  case 240:
 #line 1767 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -6355,11 +7420,12 @@ case 239:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_CIRC;
       yyval.s.Num = num;
-    ;
-    break;}
-case 240:
+    ;}
+    break;
+
+  case 241:
 #line 1785 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-6].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -6383,11 +7449,12 @@ case 240:
       List_Delete(yyvsp[-3].l);
       yyval.s.Type = MSH_SEGM_CIRC;
       yyval.s.Num = num;
-    ;
-    break;}
-case 241:
+    ;}
+    break;
+
+  case 242:
 #line 1811 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -6403,11 +7470,12 @@ case 241:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_ELLI;
       yyval.s.Num = num;
-    ;
-    break;}
-case 242:
+    ;}
+    break;
+
+  case 243:
 #line 1829 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-6].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -6431,11 +7499,12 @@ case 242:
       List_Delete(yyvsp[-3].l);
       yyval.s.Type = MSH_SEGM_ELLI;
       yyval.s.Num = num;
-    ;
-    break;}
-case 243:
+    ;}
+    break;
+
+  case 244:
 #line 1856 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-14].d;
       if(FindCurve(num, THEM)){
 	yymsg(GERROR, "Curve %d already exists", num);
@@ -6451,11 +7520,12 @@ case 243:
       }
       yyval.s.Type = MSH_SEGM_PARAMETRIC;
       yyval.s.Num = num;
-    ;
-    break;}
-case 244:
+    ;}
+    break;
+
+  case 245:
 #line 1874 "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,
@@ -6477,11 +7547,12 @@ case 244:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_BSPLN;
       yyval.s.Num = num;
-    ;
-    break;}
-case 245:
+    ;}
+    break;
+
+  case 246:
 #line 1898 "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,
@@ -6503,11 +7574,12 @@ case 245:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_BEZIER;
       yyval.s.Num = num;
-    ;
-    break;}
-case 246:
+    ;}
+    break;
+
+  case 247:
 #line 1922 "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: "
@@ -6531,11 +7603,12 @@ case 246:
       List_Delete(yyvsp[-3].l);
       yyval.s.Type = MSH_SEGM_NURBS;
       yyval.s.Num = num;
-    ;
-    break;}
-case 247:
+    ;}
+    break;
+
+  case 248:
 #line 1948 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindEdgeLoop(num, THEM)){
 	yymsg(GERROR, "Line loop %d already exists", num);
@@ -6550,11 +7623,12 @@ case 247:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SEGM_LOOP;
       yyval.s.Num = num;
-    ;
-    break;}
-case 248:
+    ;}
+    break;
+
+  case 249:
 #line 1965 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-9].l); i++){
 	double p;
       	List_Read(yyvsp[-9].l, i, &p);
@@ -6570,11 +7644,12 @@ case 248:
       // dummy values
       yyval.s.Type = 0;
       yyval.s.Num = 0;
-    ;
-    break;}
-case 249:
+    ;}
+    break;
+
+  case 250:
 #line 1983 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindPhysicalGroup(num, MSH_PHYSICAL_LINE, THEM)){
 	yymsg(GERROR, "Physical line %d already exists", num);
@@ -6588,11 +7663,12 @@ case 249:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_PHYSICAL_LINE;
       yyval.s.Num = num;
-    ;
-    break;}
-case 250:
+    ;}
+    break;
+
+  case 251:
 #line 2002 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindSurface(num, THEM)){
 	yymsg(GERROR, "Surface %d already exists", num);
@@ -6609,11 +7685,12 @@ case 250:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SURF_PLAN;
       yyval.s.Num = num;
-    ;
-    break;}
-case 251:
+    ;}
+    break;
+
+  case 252:
 #line 2021 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d, type = 0;
       if(FindSurface(num, THEM)){
 	yymsg(GERROR, "Surface %d already exists", num);
@@ -6650,11 +7727,12 @@ case 251:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = type;
       yyval.s.Num = num;
-    ;
-    break;}
-case 252:
+    ;}
+    break;
+
+  case 253:
 #line 2060 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-8].d;
       Surface *support = FindSurface((int)yyvsp[-4].d, THEM);
       if(!support){
@@ -6677,11 +7755,12 @@ case 252:
       List_Delete(yyvsp[-2].l);
       yyval.s.Type = MSH_SURF_TRIMMED;
       yyval.s.Num = num;
-    ;
-    break;}
-case 253:
+    ;}
+    break;
+
+  case 254:
 #line 2086 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-10].d, type = 0;
       Surface *s = FindSurface(num, THEM);
       if(!s) {
@@ -6698,11 +7777,12 @@ case 253:
       //List_Delete($13);
       yyval.s.Type = type;
       yyval.s.Num = (int)yyvsp[-10].d;
-    ;
-    break;}
-case 254:
+    ;}
+    break;
+
+  case 255:
 #line 2108 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-10].d, type = 0;
       Surface *s = FindSurface(num, THEM);
       if(!s) {
@@ -6715,11 +7795,12 @@ case 254:
       }
       yyval.s.Type = type;
       yyval.s.Num = (int)yyvsp[-10].d;
-    ;
-    break;}
-case 255:
+    ;}
+    break;
+
+  case 256:
 #line 2125 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-16].d;
       if(FindSurface(num, THEM)){
 	yymsg(GERROR, "Surface %d already exists", num);
@@ -6734,11 +7815,12 @@ case 255:
       List_Delete(yyvsp[-8].l);
       yyval.s.Type = MSH_SURF_NURBS;
       yyval.s.Num = num;
-    ;
-    break;}
-case 256:
+    ;}
+    break;
+
+  case 257:
 #line 2144 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-16].d;
       if(FindSurface(num, THEM)){
 	yymsg(GERROR, "Surface %d already exists", num);
@@ -6753,11 +7835,12 @@ case 256:
       List_Delete(yyvsp[-8].l);
       yyval.s.Type = MSH_SURF_NURBS;
       yyval.s.Num = num;
-    ;
-    break;}
-case 257:
+    ;}
+    break;
+
+  case 258:
 #line 2161 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindSurfaceLoop(num, THEM)){
 	yymsg(GERROR, "Surface loop %d already exists", num);
@@ -6771,11 +7854,12 @@ case 257:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_SURF_LOOP;
       yyval.s.Num = num;
-    ;
-    break;}
-case 258:
+    ;}
+    break;
+
+  case 259:
 #line 2177 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE, THEM)){
 	yymsg(GERROR, "Physical surface %d already exists", num);
@@ -6789,11 +7873,12 @@ case 258:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_PHYSICAL_SURFACE;
       yyval.s.Num = num;
-    ;
-    break;}
-case 259:
+    ;}
+    break;
+
+  case 260:
 #line 2196 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindVolume(num, THEM)){
 	yymsg(GERROR, "Volume %d already exists", num);
@@ -6808,11 +7893,12 @@ case 259:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_VOLUME;
       yyval.s.Num = num;
-    ;
-    break;}
-case 260:
+    ;}
+    break;
+
+  case 261:
 #line 2213 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindVolume(num, THEM)){
 	yymsg(GERROR, "Volume %d already exists", num);
@@ -6827,11 +7913,12 @@ case 260:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_VOLUME;
       yyval.s.Num = num;
-    ;
-    break;}
-case 261:
+    ;}
+    break;
+
+  case 262:
 #line 2230 "Gmsh.y"
-{
+    {
       int num = (int)yyvsp[-4].d;
       if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME, THEM)){
 	yymsg(GERROR, "Physical volume %d already exists", num);
@@ -6845,63 +7932,73 @@ case 261:
       List_Delete(yyvsp[-1].l);
       yyval.s.Type = MSH_PHYSICAL_VOLUME;
       yyval.s.Num = num;
-    ;
-    break;}
-case 262:
+    ;}
+    break;
+
+  case 263:
 #line 2251 "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 263:
+    ;}
+    break;
+
+  case 264:
 #line 2256 "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 264:
+    ;}
+    break;
+
+  case 265:
 #line 2261 "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 265:
+    ;}
+    break;
+
+  case 266:
 #line 2266 "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 266:
+    ;}
+    break;
+
+  case 267:
 #line 2273 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
-    break;}
-case 267:
+    { yyval.l = yyvsp[0].l; ;}
+    break;
+
+  case 268:
 #line 2274 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
-    break;}
-case 268:
+    { yyval.l = yyvsp[0].l; ;}
+    break;
+
+  case 269:
 #line 2275 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
-    break;}
-case 269:
+    { yyval.l = yyvsp[0].l; ;}
+    break;
+
+  case 270:
 #line 2280 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(3, 3, sizeof(Shape));
-    ;
-    break;}
-case 270:
+    ;}
+    break;
+
+  case 271:
 #line 2284 "Gmsh.y"
-{
+    {
       List_Add(yyval.l, &yyvsp[0].s);
-    ;
-    break;}
-case 271:
+    ;}
+    break;
+
+  case 272:
 #line 2288 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
 	List_Read(yyvsp[-2].l, i, &d);
@@ -6915,11 +8012,12 @@ case 271:
 	  List_Add(yyval.l, &TheShape);
 	}
       }
-    ;
-    break;}
-case 272:
+    ;}
+    break;
+
+  case 273:
 #line 2304 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
 	List_Read(yyvsp[-2].l, i, &d);
@@ -6933,11 +8031,12 @@ case 272:
 	  List_Add(yyval.l, &TheShape);
 	}
       }
-    ;
-    break;}
-case 273:
+    ;}
+    break;
+
+  case 274:
 #line 2320 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
 	List_Read(yyvsp[-2].l, i, &d);
@@ -6951,11 +8050,12 @@ case 273:
 	  List_Add(yyval.l, &TheShape);
 	}
       }
-    ;
-    break;}
-case 274:
+    ;}
+    break;
+
+  case 275:
 #line 2336 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
 	List_Read(yyvsp[-2].l, i, &d);
@@ -6969,11 +8069,12 @@ case 274:
 	  List_Add(yyval.l, &TheShape);
 	}
       }
-    ;
-    break;}
-case 275:
+    ;}
+    break;
+
+  case 276:
 #line 2357 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(3, 3, sizeof(Shape));
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	Shape TheShape;
@@ -6984,29 +8085,32 @@ case 275:
 	List_Add(yyval.l, &TheShape);
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 276:
+    ;}
+    break;
+
+  case 277:
 #line 2370 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-4].c, "View")) DuplicateView((int)yyvsp[-2].d, 0);
       yyval.l = NULL;
-    ;
-    break;}
-case 277:
+    ;}
+    break;
+
+  case 278:
 #line 2381 "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 278:
+    ;}
+    break;
+
+  case 279:
 #line 2390 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-4].c, "View")){
 	RemoveViewByIndex((int)yyvsp[-2].d);
 #if defined(HAVE_FLTK)
@@ -7014,45 +8118,50 @@ case 278:
 	  UpdateViewsInGUI();
 #endif
       }
-    ;
-    break;}
-case 279:
+    ;}
+    break;
+
+  case 280:
 #line 2400 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-1].c, "Meshes") || !strcmp(yyvsp[-1].c, "All"))
 	Init_Mesh(THEM);
-    ;
-    break;}
-case 280:
+    ;}
+    break;
+
+  case 281:
 #line 2410 "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 281:
+    ;}
+    break;
+
+  case 282:
 #line 2424 "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);
-    ;
-    break;}
-case 282:
+    ;}
+    break;
+
+  case 283:
 #line 2431 "Gmsh.y"
-{
+    {
       for(int i = 2; i < 6; i++)
 	SetVisibilityByNumber(yyvsp[-1].c, i, 0);
-    ;
-    break;}
-case 283:
+    ;}
+    break;
+
+  case 284:
 #line 2436 "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++){
@@ -7061,22 +8170,24 @@ case 283:
 	VisibilityShape(TheShape.Type, TheShape.Num, m);
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 284:
+    ;}
+    break;
+
+  case 285:
 #line 2447 "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 285:
+    ;}
+    break;
+
+  case 286:
 #line 2461 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-2].c, "Include")){
 	char tmpstring[1024];
 	FixRelativePath(yyvsp[-1].c, tmpstring);
@@ -7117,11 +8228,12 @@ case 285:
       else{
 	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
       }
-    ;
-    break;}
-case 286:
+    ;}
+    break;
+
+  case 287:
 #line 2504 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-6].c, "Save") && !strcmp(yyvsp[-5].c, "View")){
 	Post_View *v = (Post_View *)List_Pointer_Test(CTX.post.list, (int)yyvsp[-3].d);
 	if(v){
@@ -7133,11 +8245,12 @@ case 286:
       else{
 	yymsg(GERROR, "Unknown command '%s'", yyvsp[-6].c);
       }
-    ;
-    break;}
-case 287:
+    ;}
+    break;
+
+  case 288:
 #line 2518 "Gmsh.y"
-{
+    {
       if(!strcmp(yyvsp[-2].c, "Sleep")){
 	long sleep_time = GetTime();
 	while(1){
@@ -7150,22 +8263,24 @@ case 287:
       else{
 	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
       }
-    ;
-    break;}
-case 288:
+    ;}
+    break;
+
+  case 289:
 #line 2533 "Gmsh.y"
-{
+    {
       try {
 	GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0);
       }
       catch(...) {
 	yymsg(GERROR, "Unknown action '%s' or plugin '%s'", yyvsp[-1].c, yyvsp[-4].c);
       }
-   ;
-    break;}
-case 289:
+   ;}
+    break;
+
+  case 290:
 #line 2542 "Gmsh.y"
-{
+    {
       // for backward compatibility
       if(!strcmp(yyvsp[-1].c, "Views"))
 	CombineViews(0, 1, CTX.post.combine_remove_orig);
@@ -7173,38 +8288,43 @@ case 289:
 	CombineViews(1, 2, CTX.post.combine_remove_orig);
       else
 	yymsg(GERROR, "Unknown 'Combine' command");
-    ;
-    break;}
-case 290:
+    ;}
+    break;
+
+  case 291:
 #line 2552 "Gmsh.y"
-{
+    {
       exit(0);
-    ;
-    break;}
-case 291:
+    ;}
+    break;
+
+  case 292:
 #line 2556 "Gmsh.y"
-{
+    {
       SetBoundingBox();
-    ;
-    break;}
-case 292:
+    ;}
+    break;
+
+  case 293:
 #line 2560 "Gmsh.y"
-{
+    {
       SetBoundingBox(yyvsp[-12].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 293:
+    ;}
+    break;
+
+  case 294:
 #line 2564 "Gmsh.y"
-{
+    {
 #if defined(HAVE_FLTK)
       if(!CTX.batch) // we're in interactive mode
 	Draw();
 #endif
-    ;
-    break;}
-case 294:
+    ;}
+    break;
+
+  case 295:
 #line 2577 "Gmsh.y"
-{
+    {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
       LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
@@ -7216,11 +8336,12 @@ case 294:
 	yymsg(GERROR, "Reached maximum number of imbricated loops");
 	ImbricatedLoop = MAX_RECUR_LOOPS-1;
       }
-    ;
-    break;}
-case 295:
+    ;}
+    break;
+
+  case 296:
 #line 2591 "Gmsh.y"
-{
+    {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
       LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d;
@@ -7232,11 +8353,12 @@ case 295:
 	yymsg(GERROR, "Reached maximum number of imbricated loops");
 	ImbricatedLoop = MAX_RECUR_LOOPS-1;
       }
-    ;
-    break;}
-case 296:
+    ;}
+    break;
+
+  case 297:
 #line 2605 "Gmsh.y"
-{
+    {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
       LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
@@ -7259,11 +8381,12 @@ case 296:
 	yymsg(GERROR, "Reached maximum number of imbricated loops");
 	ImbricatedLoop = MAX_RECUR_LOOPS-1;
       }
-    ;
-    break;}
-case 297:
+    ;}
+    break;
+
+  case 298:
 #line 2630 "Gmsh.y"
-{
+    {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
       LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d;
@@ -7286,11 +8409,12 @@ case 297:
 	yymsg(GERROR, "Reached maximum number of imbricated loops");
 	ImbricatedLoop = MAX_RECUR_LOOPS-1;
       }
-    ;
-    break;}
-case 298:
+    ;}
+    break;
+
+  case 299:
 #line 2655 "Gmsh.y"
-{
+    {
       if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
 	 LoopControlVariablesTab[ImbricatedLoop-1][0]){
 	LoopControlVariablesTab[ImbricatedLoop-1][0] +=
@@ -7315,44 +8439,50 @@ case 298:
 	  ImbricatedLoop = 0;
 	}
       }
-    ;
-    break;}
-case 299:
+    ;}
+    break;
+
+  case 300:
 #line 2682 "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");
-    ;
-    break;}
-case 300:
+    ;}
+    break;
+
+  case 301:
 #line 2688 "Gmsh.y"
-{
+    {
       if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno))
 	yymsg(GERROR, "Error while exiting function");
-    ;
-    break;}
-case 301:
+    ;}
+    break;
+
+  case 302:
 #line 2693 "Gmsh.y"
-{
+    {
       if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c, &yyin, yyname, yylineno))
 	yymsg(GERROR, "Unknown function %s", yyvsp[-1].c);
-    ;
-    break;}
-case 302:
+    ;}
+    break;
+
+  case 303:
 #line 2698 "Gmsh.y"
-{
+    {
       if(!yyvsp[-1].d) skip_until("If", "EndIf");
-    ;
-    break;}
-case 303:
+    ;}
+    break;
+
+  case 304:
 #line 2702 "Gmsh.y"
-{
-    ;
-    break;}
-case 304:
+    {
+    ;}
+    break;
+
+  case 305:
 #line 2713 "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],
@@ -7366,11 +8496,12 @@ case 304:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 305:
+    ;}
+    break;
+
+  case 306:
 #line 2729 "Gmsh.y"
-{
+    {
       Curve *pc, *prc;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
@@ -7384,11 +8515,12 @@ case 305:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 306:
+    ;}
+    break;
+
+  case 307:
 #line 2745 "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],
@@ -7402,18 +8534,20 @@ case 306:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 307:
+    ;}
+    break;
+
+  case 308:
 #line 2761 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 308:
+    ;}
+    break;
+
+  case 309:
 #line 2766 "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],
@@ -7427,18 +8561,20 @@ case 308:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 309:
+    ;}
+    break;
+
+  case 310:
 #line 2782 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 310:
+    ;}
+    break;
+
+  case 311:
 #line 2787 "Gmsh.y"
-{
+    {
       Curve *pc, *prc;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
@@ -7452,18 +8588,20 @@ case 310:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 311:
+    ;}
+    break;
+
+  case 312:
 #line 2803 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 312:
+    ;}
+    break;
+
+  case 313:
 #line 2808 "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],
@@ -7477,11 +8615,12 @@ case 312:
 	TheShape.Type = pc->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 313:
+    ;}
+    break;
+
+  case 314:
 #line 2826 "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],
@@ -7502,11 +8641,12 @@ case 313:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 314:
+    ;}
+    break;
+
+  case 315:
 #line 2849 "Gmsh.y"
-{
+    {
       Surface *ps;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
@@ -7527,11 +8667,12 @@ case 314:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 315:
+    ;}
+    break;
+
+  case 316:
 #line 2872 "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],
@@ -7552,18 +8693,20 @@ case 315:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 316:
+    ;}
+    break;
+
+  case 317:
 #line 2895 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 317:
+    ;}
+    break;
+
+  case 318:
 #line 2900 "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],
@@ -7584,18 +8727,20 @@ case 317:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 318:
+    ;}
+    break;
+
+  case 319:
 #line 2923 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 319:
+    ;}
+    break;
+
+  case 320:
 #line 2928 "Gmsh.y"
-{
+    {
       Surface *ps;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
@@ -7616,18 +8761,20 @@ case 319:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 320:
+    ;}
+    break;
+
+  case 321:
 #line 2951 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 321:
+    ;}
+    break;
+
+  case 322:
 #line 2956 "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],
@@ -7648,11 +8795,12 @@ case 321:
 	TheShape.Type = ps->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 322:
+    ;}
+    break;
+
+  case 323:
 #line 2982 "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],
@@ -7673,11 +8821,12 @@ case 322:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 323:
+    ;}
+    break;
+
+  case 324:
 #line 3005 "Gmsh.y"
-{
+    {
       Volume *pv;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
@@ -7698,11 +8847,12 @@ case 323:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 324:
+    ;}
+    break;
+
+  case 325:
 #line 3028 "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],
@@ -7723,18 +8873,20 @@ case 324:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 325:
+    ;}
+    break;
+
+  case 326:
 #line 3051 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 326:
+    ;}
+    break;
+
+  case 327:
 #line 3056 "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],
@@ -7755,18 +8907,20 @@ case 326:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 327:
+    ;}
+    break;
+
+  case 328:
 #line 3079 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 328:
+    ;}
+    break;
+
+  case 329:
 #line 3085 "Gmsh.y"
-{
+    {
       Volume *pv;
       Shape TheShape;
       TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
@@ -7787,18 +8941,20 @@ case 328:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 329:
+    ;}
+    break;
+
+  case 330:
 #line 3108 "Gmsh.y"
-{
+    {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
-    ;
-    break;}
-case 330:
+    ;}
+    break;
+
+  case 331:
 #line 3114 "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],
@@ -7819,21 +8975,24 @@ case 330:
 	TheShape.Type = pv->Typ;
 	List_Add(yyval.l, &TheShape);
       }
-    ;
-    break;}
-case 331:
+    ;}
+    break;
+
+  case 332:
 #line 3140 "Gmsh.y"
-{
-    ;
-    break;}
-case 332:
+    {
+    ;}
+    break;
+
+  case 333:
 #line 3143 "Gmsh.y"
-{
-    ;
-    break;}
-case 333:
+    {
+    ;}
+    break;
+
+  case 334:
 #line 3149 "Gmsh.y"
-{
+    {
       double d;
       extr.mesh.ExtrudeMesh = true;
       extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l);
@@ -7857,11 +9016,12 @@ case 333:
       List_Delete(yyvsp[-6].l);
       List_Delete(yyvsp[-4].l);
       List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 334:
+    ;}
+    break;
+
+  case 335:
 #line 3175 "Gmsh.y"
-{
+    {
       double d;
       extr.mesh.ExtrudeMesh = true;
       extr.mesh.NbLayer = List_Nbr(yyvsp[-4].l);
@@ -7883,17 +9043,19 @@ case 334:
       }
       List_Delete(yyvsp[-4].l);
       List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 335:
+    ;}
+    break;
+
+  case 336:
 #line 3199 "Gmsh.y"
-{
+    {
       extr.mesh.Recombine = true;
-    ;
-    break;}
-case 336:
+    ;}
+    break;
+
+  case 337:
 #line 3208 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){
 	double d;
 	List_Read(yyvsp[-3].l, i, &d);
@@ -7909,11 +9071,12 @@ case 336:
 	}
       }
       List_Delete(yyvsp[-3].l);
-    ;
-    break;}
-case 337:
+    ;}
+    break;
+
+  case 338:
 #line 3226 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
 	double d;
 	List_Read(yyvsp[-6].l, i, &d);
@@ -7929,11 +9092,12 @@ case 337:
 	}
       }
       List_Delete(yyvsp[-6].l);
-    ;
-    break;}
-case 338:
+    ;}
+    break;
+
+  case 339:
 #line 3244 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
 	double d;
 	List_Read(yyvsp[-6].l, i, &d);
@@ -7949,11 +9113,12 @@ case 338:
 	}
       }
       List_Delete(yyvsp[-6].l);
-    ;
-    break;}
-case 339:
+    ;}
+    break;
+
+  case 340:
 #line 3262 "Gmsh.y"
-{
+    {
       Surface *s = FindSurface((int)yyvsp[-4].d, THEM);
       if(!s)
 	yymsg(WARNING, "Unknown surface %d", (int)yyvsp[-4].d);
@@ -7978,11 +9143,12 @@ case 339:
 	}
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 340:
+    ;}
+    break;
+
+  case 341:
 #line 3289 "Gmsh.y"
-{
+    {
       Surface *s = FindSurface((int)yyvsp[-4].d, THEM);
       if(!s)
 	yymsg(WARNING, "Unknown surface %d", (int)yyvsp[-4].d);
@@ -8006,11 +9172,12 @@ case 340:
 	}
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 341:
+    ;}
+    break;
+
+  case 342:
 #line 3315 "Gmsh.y"
-{
+    {
       Volume *v = FindVolume((int)yyvsp[-4].d, THEM);
       if(!v)
 	yymsg(WARNING, "Unknown volume %d", (int)yyvsp[-4].d);
@@ -8034,11 +9201,12 @@ case 341:
 	}
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 342:
+    ;}
+    break;
+
+  case 343:
 #line 3341 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){
 	double d;
 	List_Read(yyvsp[-3].l, i, &d);
@@ -8050,11 +9218,12 @@ case 342:
 	}
       }
       List_Delete(yyvsp[-3].l);
-    ;
-    break;}
-case 343:
+    ;}
+    break;
+
+  case 344:
 #line 3355 "Gmsh.y"
-{
+    {
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	double d;
 	List_Read(yyvsp[-1].l, i, &d);
@@ -8065,312 +9234,386 @@ case 343:
         }
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 344:
+    ;}
+    break;
+
+  case 345:
 #line 3374 "Gmsh.y"
-{ 
+    { 
       ReplaceAllDuplicates(THEM);
-    ;
-    break;}
-case 345:
+    ;}
+    break;
+
+  case 346:
 #line 3378 "Gmsh.y"
-{ 
+    { 
       IntersectAllSegmentsTogether();
-    ;
-    break;}
-case 346:
+    ;}
+    break;
+
+  case 347:
 #line 3387 "Gmsh.y"
-{yyval.i = 1;;
-    break;}
-case 347:
+    {yyval.i = 1;;}
+    break;
+
+  case 348:
 #line 3388 "Gmsh.y"
-{yyval.i = 0;;
-    break;}
-case 348:
+    {yyval.i = 0;;}
+    break;
+
+  case 349:
 #line 3389 "Gmsh.y"
-{yyval.i = -1;;
-    break;}
-case 349:
+    {yyval.i = -1;;}
+    break;
+
+  case 350:
 #line 3390 "Gmsh.y"
-{yyval.i = -1;;
-    break;}
-case 350:
+    {yyval.i = -1;;}
+    break;
+
+  case 351:
 #line 3391 "Gmsh.y"
-{yyval.i = -1;;
-    break;}
-case 351:
+    {yyval.i = -1;;}
+    break;
+
+  case 352:
 #line 3395 "Gmsh.y"
-{ yyval.d = yyvsp[0].d;           ;
-    break;}
-case 352:
+    { yyval.d = yyvsp[0].d;           ;}
+    break;
+
+  case 353:
 #line 3396 "Gmsh.y"
-{ yyval.d = yyvsp[-1].d;           ;
-    break;}
-case 353:
+    { yyval.d = yyvsp[-1].d;           ;}
+    break;
+
+  case 354:
 #line 3397 "Gmsh.y"
-{ yyval.d = -yyvsp[0].d;          ;
-    break;}
-case 354:
+    { yyval.d = -yyvsp[0].d;          ;}
+    break;
+
+  case 355:
 #line 3398 "Gmsh.y"
-{ yyval.d = yyvsp[0].d;           ;
-    break;}
-case 355:
+    { yyval.d = yyvsp[0].d;           ;}
+    break;
+
+  case 356:
 #line 3399 "Gmsh.y"
-{ yyval.d = !yyvsp[0].d;          ;
-    break;}
-case 356:
+    { yyval.d = !yyvsp[0].d;          ;}
+    break;
+
+  case 357:
 #line 3400 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d - yyvsp[0].d;      ;
-    break;}
-case 357:
+    { yyval.d = yyvsp[-2].d - yyvsp[0].d;      ;}
+    break;
+
+  case 358:
 #line 3401 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d + yyvsp[0].d;      ;
-    break;}
-case 358:
+    { yyval.d = yyvsp[-2].d + yyvsp[0].d;      ;}
+    break;
+
+  case 359:
 #line 3402 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d * yyvsp[0].d;      ;
-    break;}
-case 359:
+    { yyval.d = yyvsp[-2].d * yyvsp[0].d;      ;}
+    break;
+
+  case 360:
 #line 3404 "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 360:
+    ;}
+    break;
+
+  case 361:
 #line 3410 "Gmsh.y"
-{ yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d;  ;
-    break;}
-case 361:
+    { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d;  ;}
+    break;
+
+  case 362:
 #line 3411 "Gmsh.y"
-{ yyval.d = pow(yyvsp[-2].d, yyvsp[0].d);  ;
-    break;}
-case 362:
+    { yyval.d = pow(yyvsp[-2].d, yyvsp[0].d);  ;}
+    break;
+
+  case 363:
 #line 3412 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d < yyvsp[0].d;      ;
-    break;}
-case 363:
+    { yyval.d = yyvsp[-2].d < yyvsp[0].d;      ;}
+    break;
+
+  case 364:
 #line 3413 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d > yyvsp[0].d;      ;
-    break;}
-case 364:
+    { yyval.d = yyvsp[-2].d > yyvsp[0].d;      ;}
+    break;
+
+  case 365:
 #line 3414 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d <= yyvsp[0].d;     ;
-    break;}
-case 365:
+    { yyval.d = yyvsp[-2].d <= yyvsp[0].d;     ;}
+    break;
+
+  case 366:
 #line 3415 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d >= yyvsp[0].d;     ;
-    break;}
-case 366:
+    { yyval.d = yyvsp[-2].d >= yyvsp[0].d;     ;}
+    break;
+
+  case 367:
 #line 3416 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d == yyvsp[0].d;     ;
-    break;}
-case 367:
+    { yyval.d = yyvsp[-2].d == yyvsp[0].d;     ;}
+    break;
+
+  case 368:
 #line 3417 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d != yyvsp[0].d;     ;
-    break;}
-case 368:
+    { yyval.d = yyvsp[-2].d != yyvsp[0].d;     ;}
+    break;
+
+  case 369:
 #line 3418 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d && yyvsp[0].d;     ;
-    break;}
-case 369:
+    { yyval.d = yyvsp[-2].d && yyvsp[0].d;     ;}
+    break;
+
+  case 370:
 #line 3419 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d || yyvsp[0].d;     ;
-    break;}
-case 370:
+    { yyval.d = yyvsp[-2].d || yyvsp[0].d;     ;}
+    break;
+
+  case 371:
 #line 3420 "Gmsh.y"
-{ yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d;  ;
-    break;}
-case 371:
+    { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d;  ;}
+    break;
+
+  case 372:
 #line 3421 "Gmsh.y"
-{ yyval.d = exp(yyvsp[-1].d);      ;
-    break;}
-case 372:
+    { yyval.d = exp(yyvsp[-1].d);      ;}
+    break;
+
+  case 373:
 #line 3422 "Gmsh.y"
-{ yyval.d = log(yyvsp[-1].d);      ;
-    break;}
-case 373:
+    { yyval.d = log(yyvsp[-1].d);      ;}
+    break;
+
+  case 374:
 #line 3423 "Gmsh.y"
-{ yyval.d = log10(yyvsp[-1].d);    ;
-    break;}
-case 374:
+    { yyval.d = log10(yyvsp[-1].d);    ;}
+    break;
+
+  case 375:
 #line 3424 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-1].d);     ;
-    break;}
-case 375:
+    { yyval.d = sqrt(yyvsp[-1].d);     ;}
+    break;
+
+  case 376:
 #line 3425 "Gmsh.y"
-{ yyval.d = sin(yyvsp[-1].d);      ;
-    break;}
-case 376:
+    { yyval.d = sin(yyvsp[-1].d);      ;}
+    break;
+
+  case 377:
 #line 3426 "Gmsh.y"
-{ yyval.d = asin(yyvsp[-1].d);     ;
-    break;}
-case 377:
+    { yyval.d = asin(yyvsp[-1].d);     ;}
+    break;
+
+  case 378:
 #line 3427 "Gmsh.y"
-{ yyval.d = cos(yyvsp[-1].d);      ;
-    break;}
-case 378:
+    { yyval.d = cos(yyvsp[-1].d);      ;}
+    break;
+
+  case 379:
 #line 3428 "Gmsh.y"
-{ yyval.d = acos(yyvsp[-1].d);     ;
-    break;}
-case 379:
+    { yyval.d = acos(yyvsp[-1].d);     ;}
+    break;
+
+  case 380:
 #line 3429 "Gmsh.y"
-{ yyval.d = tan(yyvsp[-1].d);      ;
-    break;}
-case 380:
+    { yyval.d = tan(yyvsp[-1].d);      ;}
+    break;
+
+  case 381:
 #line 3430 "Gmsh.y"
-{ yyval.d = atan(yyvsp[-1].d);     ;
-    break;}
-case 381:
+    { yyval.d = atan(yyvsp[-1].d);     ;}
+    break;
+
+  case 382:
 #line 3431 "Gmsh.y"
-{ yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;
-    break;}
-case 382:
+    { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;}
+    break;
+
+  case 383:
 #line 3432 "Gmsh.y"
-{ yyval.d = sinh(yyvsp[-1].d);     ;
-    break;}
-case 383:
+    { yyval.d = sinh(yyvsp[-1].d);     ;}
+    break;
+
+  case 384:
 #line 3433 "Gmsh.y"
-{ yyval.d = cosh(yyvsp[-1].d);     ;
-    break;}
-case 384:
+    { yyval.d = cosh(yyvsp[-1].d);     ;}
+    break;
+
+  case 385:
 #line 3434 "Gmsh.y"
-{ yyval.d = tanh(yyvsp[-1].d);     ;
-    break;}
-case 385:
+    { yyval.d = tanh(yyvsp[-1].d);     ;}
+    break;
+
+  case 386:
 #line 3435 "Gmsh.y"
-{ yyval.d = fabs(yyvsp[-1].d);     ;
-    break;}
-case 386:
+    { yyval.d = fabs(yyvsp[-1].d);     ;}
+    break;
+
+  case 387:
 #line 3436 "Gmsh.y"
-{ yyval.d = floor(yyvsp[-1].d);    ;
-    break;}
-case 387:
+    { yyval.d = floor(yyvsp[-1].d);    ;}
+    break;
+
+  case 388:
 #line 3437 "Gmsh.y"
-{ yyval.d = ceil(yyvsp[-1].d);     ;
-    break;}
-case 388:
+    { yyval.d = ceil(yyvsp[-1].d);     ;}
+    break;
+
+  case 389:
 #line 3438 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
-    break;}
-case 389:
+    { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;}
+    break;
+
+  case 390:
 #line 3439 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
-    break;}
-case 390:
+    { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;}
+    break;
+
+  case 391:
 #line 3440 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
-    break;}
-case 391:
+    { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;}
+    break;
+
+  case 392:
 #line 3441 "Gmsh.y"
-{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
-    break;}
-case 392:
+    { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;}
+    break;
+
+  case 393:
 #line 3443 "Gmsh.y"
-{ yyval.d = exp(yyvsp[-1].d);      ;
-    break;}
-case 393:
+    { yyval.d = exp(yyvsp[-1].d);      ;}
+    break;
+
+  case 394:
 #line 3444 "Gmsh.y"
-{ yyval.d = log(yyvsp[-1].d);      ;
-    break;}
-case 394:
+    { yyval.d = log(yyvsp[-1].d);      ;}
+    break;
+
+  case 395:
 #line 3445 "Gmsh.y"
-{ yyval.d = log10(yyvsp[-1].d);    ;
-    break;}
-case 395:
+    { yyval.d = log10(yyvsp[-1].d);    ;}
+    break;
+
+  case 396:
 #line 3446 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-1].d);     ;
-    break;}
-case 396:
+    { yyval.d = sqrt(yyvsp[-1].d);     ;}
+    break;
+
+  case 397:
 #line 3447 "Gmsh.y"
-{ yyval.d = sin(yyvsp[-1].d);      ;
-    break;}
-case 397:
+    { yyval.d = sin(yyvsp[-1].d);      ;}
+    break;
+
+  case 398:
 #line 3448 "Gmsh.y"
-{ yyval.d = asin(yyvsp[-1].d);     ;
-    break;}
-case 398:
+    { yyval.d = asin(yyvsp[-1].d);     ;}
+    break;
+
+  case 399:
 #line 3449 "Gmsh.y"
-{ yyval.d = cos(yyvsp[-1].d);      ;
-    break;}
-case 399:
+    { yyval.d = cos(yyvsp[-1].d);      ;}
+    break;
+
+  case 400:
 #line 3450 "Gmsh.y"
-{ yyval.d = acos(yyvsp[-1].d);     ;
-    break;}
-case 400:
+    { yyval.d = acos(yyvsp[-1].d);     ;}
+    break;
+
+  case 401:
 #line 3451 "Gmsh.y"
-{ yyval.d = tan(yyvsp[-1].d);      ;
-    break;}
-case 401:
+    { yyval.d = tan(yyvsp[-1].d);      ;}
+    break;
+
+  case 402:
 #line 3452 "Gmsh.y"
-{ yyval.d = atan(yyvsp[-1].d);     ;
-    break;}
-case 402:
+    { yyval.d = atan(yyvsp[-1].d);     ;}
+    break;
+
+  case 403:
 #line 3453 "Gmsh.y"
-{ yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;
-    break;}
-case 403:
+    { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;}
+    break;
+
+  case 404:
 #line 3454 "Gmsh.y"
-{ yyval.d = sinh(yyvsp[-1].d);     ;
-    break;}
-case 404:
+    { yyval.d = sinh(yyvsp[-1].d);     ;}
+    break;
+
+  case 405:
 #line 3455 "Gmsh.y"
-{ yyval.d = cosh(yyvsp[-1].d);     ;
-    break;}
-case 405:
+    { yyval.d = cosh(yyvsp[-1].d);     ;}
+    break;
+
+  case 406:
 #line 3456 "Gmsh.y"
-{ yyval.d = tanh(yyvsp[-1].d);     ;
-    break;}
-case 406:
+    { yyval.d = tanh(yyvsp[-1].d);     ;}
+    break;
+
+  case 407:
 #line 3457 "Gmsh.y"
-{ yyval.d = fabs(yyvsp[-1].d);     ;
-    break;}
-case 407:
+    { yyval.d = fabs(yyvsp[-1].d);     ;}
+    break;
+
+  case 408:
 #line 3458 "Gmsh.y"
-{ yyval.d = floor(yyvsp[-1].d);    ;
-    break;}
-case 408:
+    { yyval.d = floor(yyvsp[-1].d);    ;}
+    break;
+
+  case 409:
 #line 3459 "Gmsh.y"
-{ yyval.d = ceil(yyvsp[-1].d);     ;
-    break;}
-case 409:
+    { yyval.d = ceil(yyvsp[-1].d);     ;}
+    break;
+
+  case 410:
 #line 3460 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
-    break;}
-case 410:
+    { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;}
+    break;
+
+  case 411:
 #line 3461 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
-    break;}
-case 411:
+    { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;}
+    break;
+
+  case 412:
 #line 3462 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
-    break;}
-case 412:
+    { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;}
+    break;
+
+  case 413:
 #line 3463 "Gmsh.y"
-{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
-    break;}
-case 413:
+    { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;}
+    break;
+
+  case 414:
 #line 3472 "Gmsh.y"
-{ yyval.d = yyvsp[0].d; ;
-    break;}
-case 414:
+    { yyval.d = yyvsp[0].d; ;}
+    break;
+
+  case 415:
 #line 3473 "Gmsh.y"
-{ yyval.d = 3.141592653589793; ;
-    break;}
-case 415:
+    { yyval.d = 3.141592653589793; ;}
+    break;
+
+  case 416:
 #line 3474 "Gmsh.y"
-{ yyval.d = ParUtil::Instance()->rank(); ;
-    break;}
-case 416:
+    { yyval.d = ParUtil::Instance()->rank(); ;}
+    break;
+
+  case 417:
 #line 3475 "Gmsh.y"
-{ yyval.d = ParUtil::Instance()->size(); ;
-    break;}
-case 417:
+    { yyval.d = ParUtil::Instance()->size(); ;}
+    break;
+
+  case 418:
 #line 3480 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[0].c;
       Symbol *pSymbol;
@@ -8380,11 +9623,12 @@ case 417:
       }
       else
 	yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0);
-    ;
-    break;}
-case 418:
+    ;}
+    break;
+
+  case 419:
 #line 3492 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-3].c;
       Symbol *pSymbol;
@@ -8401,11 +9645,12 @@ case 418:
 	  yyval.d = 0.;
 	}
       }
-    ;
-    break;}
-case 419:
+    ;}
+    break;
+
+  case 420:
 #line 3511 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-2].c;
       Symbol *pSymbol;
@@ -8416,11 +9661,12 @@ case 419:
       else{
 	yyval.d = List_Nbr(pSymbol->val);
       }
-    ;
-    break;}
-case 420:
+    ;}
+    break;
+
+  case 421:
 #line 3524 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-1].c;
       Symbol *pSymbol;
@@ -8430,11 +9676,12 @@ case 420:
       }
       else
 	yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i);
-    ;
-    break;}
-case 421:
+    ;}
+    break;
+
+  case 422:
 #line 3536 "Gmsh.y"
-{
+    {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-4].c;
       Symbol *pSymbol;
@@ -8451,11 +9698,12 @@ case 421:
 	  yyval.d = 0.;
 	}
       }
-    ;
-    break;}
-case 422:
+    ;}
+    break;
+
+  case 423:
 #line 3558 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){
@@ -8470,11 +9718,12 @@ case 422:
 	else
 	  yyval.d = pNumOpt(0, GMSH_GET, 0);
       }
-    ;
-    break;}
-case 423:
+    ;}
+    break;
+
+  case 424:
 #line 3575 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){
@@ -8489,11 +9738,12 @@ case 423:
 	else
 	  yyval.d = pNumOpt((int)yyvsp[-3].d, GMSH_GET, 0);
       }
-    ;
-    break;}
-case 424:
+    ;}
+    break;
+
+  case 425:
 #line 3592 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){
@@ -8508,11 +9758,12 @@ case 424:
 	else
 	  yyval.d = pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+yyvsp[0].i);
       }
-    ;
-    break;}
-case 425:
+    ;}
+    break;
+
+  case 426:
 #line 3609 "Gmsh.y"
-{
+    {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){
@@ -8527,153 +9778,177 @@ case 425:
 	else
 	  yyval.d = pNumOpt((int)yyvsp[-4].d, GMSH_SET|GMSH_GUI, pNumOpt((int)yyvsp[-4].d, GMSH_GET, 0)+yyvsp[0].i);
       }
-    ;
-    break;}
-case 426:
+    ;}
+    break;
+
+  case 427:
 #line 3629 "Gmsh.y"
-{
+    {
       memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double));
-    ;
-    break;}
-case 427:
+    ;}
+    break;
+
+  case 428:
 #line 3633 "Gmsh.y"
-{
+    {
       for(int i = 0; i < 5; i++) yyval.v[i] = -yyvsp[0].v[i];
-    ;
-    break;}
-case 428:
+    ;}
+    break;
+
+  case 429:
 #line 3637 "Gmsh.y"
-{ 
+    { 
       for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[0].v[i];
-    ;
-    break;}
-case 429:
+    ;}
+    break;
+
+  case 430:
 #line 3641 "Gmsh.y"
-{ 
+    { 
       for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i];
-    ;
-    break;}
-case 430:
+    ;}
+    break;
+
+  case 431:
 #line 3645 "Gmsh.y"
-{
+    {
       for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i];
-    ;
-    break;}
-case 431:
+    ;}
+    break;
+
+  case 432:
 #line 3652 "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 432:
+    ;}
+    break;
+
+  case 433:
 #line 3656 "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 433:
+    ;}
+    break;
+
+  case 434:
 #line 3660 "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 434:
+    ;}
+    break;
+
+  case 435:
 #line 3664 "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 435:
+    ;}
+    break;
+
+  case 436:
 #line 3671 "Gmsh.y"
-{
-    ;
-    break;}
-case 436:
+    {
+    ;}
+    break;
+
+  case 437:
 #line 3674 "Gmsh.y"
-{
-    ;
-    break;}
-case 437:
+    {
+    ;}
+    break;
+
+  case 438:
 #line 3680 "Gmsh.y"
-{
-    ;
-    break;}
-case 438:
+    {
+    ;}
+    break;
+
+  case 439:
 #line 3683 "Gmsh.y"
-{
-    ;
-    break;}
-case 439:
+    {
+    ;}
+    break;
+
+  case 440:
 #line 3689 "Gmsh.y"
-{
-    ;
-    break;}
-case 440:
+    {
+    ;}
+    break;
+
+  case 441:
 #line 3692 "Gmsh.y"
-{
+    {
        yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 441:
+    ;}
+    break;
+
+  case 442:
 #line 3696 "Gmsh.y"
-{
+    {
        yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 442:
+    ;}
+    break;
+
+  case 443:
 #line 3703 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(2, 1, sizeof(List_T*));
       List_Add(yyval.l, &(yyvsp[0].l));
-    ;
-    break;}
-case 443:
+    ;}
+    break;
+
+  case 444:
 #line 3708 "Gmsh.y"
-{
+    {
       List_Add(yyval.l, &(yyvsp[0].l));
-    ;
-    break;}
-case 444:
+    ;}
+    break;
+
+  case 445:
 #line 3716 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       List_Add(yyval.l, &(yyvsp[0].d));
-    ;
-    break;}
-case 445:
+    ;}
+    break;
+
+  case 446:
 #line 3721 "Gmsh.y"
-{
+    {
       yyval.l = yyvsp[0].l;
-    ;
-    break;}
-case 446:
+    ;}
+    break;
+
+  case 447:
 #line 3725 "Gmsh.y"
-{
+    {
       yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 447:
+    ;}
+    break;
+
+  case 448:
 #line 3729 "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 448:
+    ;}
+    break;
+
+  case 449:
 #line 3741 "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 449:
+    ;}
+    break;
+
+  case 450:
 #line 3747 "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);
@@ -8682,11 +9957,12 @@ case 449:
       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 450:
+   ;}
+    break;
+
+  case 451:
 #line 3758 "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
@@ -8704,11 +9980,12 @@ case 450:
 	List_Add(yyval.l, &v->Pos.Y);
 	List_Add(yyval.l, &v->Pos.Z);
       }
-    ;
-    break;}
-case 451:
+    ;}
+    break;
+
+  case 452:
 #line 3778 "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);
@@ -8716,11 +9993,12 @@ case 451:
 	List_Add(yyval.l, &d);
       }
       List_Delete(yyvsp[0].l);
-    ;
-    break;}
-case 452:
+    ;}
+    break;
+
+  case 453:
 #line 3788 "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);
@@ -8728,11 +10006,12 @@ case 452:
 	List_Add(yyval.l, &d);
       }
       List_Delete(yyvsp[0].l);
-    ;
-    break;}
-case 453:
+    ;}
+    break;
+
+  case 454:
 #line 3798 "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));
@@ -8742,11 +10021,12 @@ case 453:
 	List_Add(yyval.l, &d);
       }
       List_Delete(yyvsp[0].l);
-    ;
-    break;}
-case 454:
+    ;}
+    break;
+
+  case 455:
 #line 3810 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-2].c;
@@ -8760,11 +10040,12 @@ case 454:
 	for(int i = 0; i < List_Nbr(pSymbol->val); i++)
 	  List_Add(yyval.l, (double*)List_Pointer_Fast(pSymbol->val, i));
       }
-    ;
-    break;}
-case 455:
+    ;}
+    break;
+
+  case 456:
 #line 3826 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-2].c;
@@ -8780,11 +10061,12 @@ case 455:
 	  List_Add(yyval.l, &d);
 	}
       }
-    ;
-    break;}
-case 456:
+    ;}
+    break;
+
+  case 457:
 #line 3844 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-5].c;
@@ -8805,11 +10087,12 @@ case 456:
 	}
       }
       List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 457:
+    ;}
+    break;
+
+  case 458:
 #line 3867 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-5].c;
@@ -8832,61 +10115,69 @@ case 457:
 	}
       }
       List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 458:
+    ;}
+    break;
+
+  case 459:
 #line 3895 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(2, 1, sizeof(double));
       List_Add(yyval.l, &(yyvsp[0].d));
-    ;
-    break;}
-case 459:
+    ;}
+    break;
+
+  case 460:
 #line 3900 "Gmsh.y"
-{
+    {
       yyval.l = yyvsp[0].l;
-    ;
-    break;}
-case 460:
+    ;}
+    break;
+
+  case 461:
 #line 3904 "Gmsh.y"
-{
+    {
       List_Add(yyval.l, &(yyvsp[0].d));
-    ;
-    break;}
-case 461:
+    ;}
+    break;
+
+  case 462:
 #line 3908 "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 462:
+    ;}
+    break;
+
+  case 463:
 #line 3921 "Gmsh.y"
-{
+    {
       yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d);
-    ;
-    break;}
-case 463:
+    ;}
+    break;
+
+  case 464:
 #line 3925 "Gmsh.y"
-{
+    {
       yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255);
-    ;
-    break;}
-case 464:
+    ;}
+    break;
+
+  case 465:
 #line 3937 "Gmsh.y"
-{
+    {
       int flag;
       yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag);
       if(flag) yymsg(GERROR, "Unknown color '%s'", yyvsp[0].c);
-    ;
-    break;}
-case 465:
+    ;}
+    break;
+
+  case 466:
 #line 3943 "Gmsh.y"
-{
+    {
       unsigned int (*pColOpt)(int num, int action, unsigned int value);
       StringXColor *pColCat;
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){
@@ -8902,17 +10193,19 @@ case 465:
 	  yyval.u = pColOpt(0, GMSH_GET, 0);
 	}
       }
-    ;
-    break;}
-case 466:
+    ;}
+    break;
+
+  case 467:
 #line 3964 "Gmsh.y"
-{
+    {
       yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 467:
+    ;}
+    break;
+
+  case 468:
 #line 3968 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(256, 10, sizeof(unsigned int));
       GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d);
       if(!ct)
@@ -8921,40 +10214,45 @@ case 467:
 	for(int i = 0; i < ct->size; i++) 
 	  List_Add(yyval.l, &ct->table[i]);
       }
-    ;
-    break;}
-case 468:
+    ;}
+    break;
+
+  case 469:
 #line 3982 "Gmsh.y"
-{
+    {
       yyval.l = List_Create(256, 10, sizeof(unsigned int));
       List_Add(yyval.l, &(yyvsp[0].u));
-    ;
-    break;}
-case 469:
+    ;}
+    break;
+
+  case 470:
 #line 3987 "Gmsh.y"
-{
+    {
       List_Add(yyval.l, &(yyvsp[0].u));
-    ;
-    break;}
-case 470:
+    ;}
+    break;
+
+  case 471:
 #line 3994 "Gmsh.y"
-{
+    {
       yyval.c = yyvsp[0].c;
-    ;
-    break;}
-case 471:
+    ;}
+    break;
+
+  case 472:
 #line 3998 "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 472:
+    ;}
+    break;
+
+  case 473:
 #line 4006 "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--){
@@ -8966,17 +10264,19 @@ case 472:
       }
       if(i <= 0) strcpy(yyval.c, yyvsp[-1].c);
       Free(yyvsp[-1].c);
-    ;
-    break;}
-case 473:
+    ;}
+    break;
+
+  case 474:
 #line 4020 "Gmsh.y"
-{
+    {
       yyval.c = yyvsp[-1].c;
-    ;
-    break;}
-case 474:
+    ;}
+    break;
+
+  case 475:
 #line 4024 "Gmsh.y"
-{
+    {
       char tmpstring[1024];
       int i = PrintListOfDouble(yyvsp[-3].c, yyvsp[-1].l, tmpstring);
       if(i < 0){
@@ -8993,11 +10293,12 @@ case 474:
 	Free(yyvsp[-3].c);
       }
       List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 475:
+    ;}
+    break;
+
+  case 476:
 #line 4043 "Gmsh.y"
-{ 
+    { 
       char* (*pStrOpt)(int num, int action, char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-3].c)))
@@ -9011,11 +10312,12 @@ case 475:
 	  strcpy(yyval.c, str);
 	}
       }
-    ;
-    break;}
-case 476:
+    ;}
+    break;
+
+  case 477:
 #line 4059 "Gmsh.y"
-{ 
+    { 
       char* (*pStrOpt)(int num, int action, char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-6].c)))
@@ -9029,230 +10331,219 @@ case 476:
 	  strcpy(yyval.c, str);
 	}
       }
-    ;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/share/bison.simple"
+    ;}
+    break;
+
+
+    }
+
+/* Line 999 of yacc.c.  */
+#line 10342 "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);
+	  const char* yyprefix;
+	  char *yymsg;
+	  int yyx;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 0;
+
+	  yyprefix = ", expecting ";
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+		yycount += 1;
+		if (yycount == 5)
+		  {
+		    yysize = 0;
+		    break;
+		  }
+	      }
+	  yysize += (sizeof ("syntax error, unexpected ")
+		     + 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)
+		  yyprefix = ", expecting ";
+		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
 		      {
-			strcat(msg, count == 0 ? ", expecting `" : " or `");
-			strcat(msg, yytname[x]);
-			strcat(msg, "'");
-			count++;
+			yyp = yystpcpy (yyp, yyprefix);
+			yyp = yystpcpy (yyp, yytname[yyx]);
+			yyprefix = " or ";
 		      }
 		}
-	      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 */
 
-  goto yyerrhandle;
-
-yyerrdefault:  /* current state does not do anything special for the error token. */
+    }
 
-#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;
-#endif
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
 
-yyerrpop:   /* pop the current state because it cannot handle the error token */
 
-  if (yyssp == yyss) YYABORT;
-  yyvsp--;
-  yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
-  yylsp--;
-#endif
+/*----------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action.  |
+`----------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
 
-#if YYDEBUG != 0
-  if (yydebug)
+  for (;;)
     {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-yyerrhandle:
+      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 = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yyerrdefault;
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
 
-  yyn += YYTERROR;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-    goto yyerrdefault;
+      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+      yydestruct (yystos[yystate], yyvsp);
+      yyvsp--;
+      yystate = *--yyssp;
 
-  yyn = yytable[yyn];
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-	goto yyerrpop;
-      yyn = -yyn;
-      goto yyreduce;
+      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 4076 "Gmsh.y"
 
 
@@ -9326,3 +10617,4 @@ void yymsg(int type, char *fmt, ...){
 
   if(type == GERROR) yyerrorstate++;
 }
+
diff --git a/Parser/Gmsh.tab.hpp b/Parser/Gmsh.tab.hpp
index 8b5738306444e5d9a0f560bb9500983b15f2946c..f8bb8e7ac44342c3387b0e8d80e0fb997074b2d6 100644
--- a/Parser/Gmsh.tab.hpp
+++ b/Parser/Gmsh.tab.hpp
@@ -1,4 +1,415 @@
-typedef union {
+/* A Bison parser, made by GNU Bison 1.875b.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 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,
+     tBoundingBox = 292,
+     tDraw = 293,
+     tPoint = 294,
+     tCircle = 295,
+     tEllipse = 296,
+     tLine = 297,
+     tSurface = 298,
+     tSpline = 299,
+     tVolume = 300,
+     tCharacteristic = 301,
+     tLength = 302,
+     tParametric = 303,
+     tElliptic = 304,
+     tPlane = 305,
+     tRuled = 306,
+     tTriangulation = 307,
+     tTransfinite = 308,
+     tComplex = 309,
+     tPhysical = 310,
+     tUsing = 311,
+     tBump = 312,
+     tProgression = 313,
+     tPlugin = 314,
+     tRotate = 315,
+     tTranslate = 316,
+     tSymmetry = 317,
+     tDilate = 318,
+     tExtrude = 319,
+     tDuplicata = 320,
+     tLoop = 321,
+     tRecombine = 322,
+     tDelete = 323,
+     tCoherence = 324,
+     tIntersect = 325,
+     tAttractor = 326,
+     tLayers = 327,
+     tScalarPoint = 328,
+     tVectorPoint = 329,
+     tTensorPoint = 330,
+     tScalarLine = 331,
+     tVectorLine = 332,
+     tTensorLine = 333,
+     tScalarTriangle = 334,
+     tVectorTriangle = 335,
+     tTensorTriangle = 336,
+     tScalarQuadrangle = 337,
+     tVectorQuadrangle = 338,
+     tTensorQuadrangle = 339,
+     tScalarTetrahedron = 340,
+     tVectorTetrahedron = 341,
+     tTensorTetrahedron = 342,
+     tScalarHexahedron = 343,
+     tVectorHexahedron = 344,
+     tTensorHexahedron = 345,
+     tScalarPrism = 346,
+     tVectorPrism = 347,
+     tTensorPrism = 348,
+     tScalarPyramid = 349,
+     tVectorPyramid = 350,
+     tTensorPyramid = 351,
+     tText2D = 352,
+     tText3D = 353,
+     tInterpolationScheme = 354,
+     tCombine = 355,
+     tBSpline = 356,
+     tBezier = 357,
+     tNurbs = 358,
+     tOrder = 359,
+     tWith = 360,
+     tBounds = 361,
+     tKnots = 362,
+     tColor = 363,
+     tColorTable = 364,
+     tFor = 365,
+     tIn = 366,
+     tEndFor = 367,
+     tIf = 368,
+     tEndIf = 369,
+     tExit = 370,
+     tReturn = 371,
+     tCall = 372,
+     tFunction = 373,
+     tTrimmed = 374,
+     tShow = 375,
+     tHide = 376,
+     tB_SPLINE_SURFACE_WITH_KNOTS = 377,
+     tB_SPLINE_CURVE_WITH_KNOTS = 378,
+     tCARTESIAN_POINT = 379,
+     tTRUE = 380,
+     tFALSE = 381,
+     tUNSPECIFIED = 382,
+     tU = 383,
+     tV = 384,
+     tEDGE_CURVE = 385,
+     tVERTEX_POINT = 386,
+     tORIENTED_EDGE = 387,
+     tPLANE = 388,
+     tFACE_OUTER_BOUND = 389,
+     tEDGE_LOOP = 390,
+     tADVANCED_FACE = 391,
+     tVECTOR = 392,
+     tDIRECTION = 393,
+     tAXIS2_PLACEMENT_3D = 394,
+     tISO = 395,
+     tENDISO = 396,
+     tENDSEC = 397,
+     tDATA = 398,
+     tHEADER = 399,
+     tFILE_DESCRIPTION = 400,
+     tFILE_SCHEMA = 401,
+     tFILE_NAME = 402,
+     tMANIFOLD_SOLID_BREP = 403,
+     tCLOSED_SHELL = 404,
+     tADVANCED_BREP_SHAPE_REPRESENTATION = 405,
+     tFACE_BOUND = 406,
+     tCYLINDRICAL_SURFACE = 407,
+     tCONICAL_SURFACE = 408,
+     tCIRCLE = 409,
+     tTRIMMED_CURVE = 410,
+     tGEOMETRIC_SET = 411,
+     tCOMPOSITE_CURVE_SEGMENT = 412,
+     tCONTINUOUS = 413,
+     tCOMPOSITE_CURVE = 414,
+     tTOROIDAL_SURFACE = 415,
+     tPRODUCT_DEFINITION = 416,
+     tPRODUCT_DEFINITION_SHAPE = 417,
+     tSHAPE_DEFINITION_REPRESENTATION = 418,
+     tELLIPSE = 419,
+     tSolid = 420,
+     tEndSolid = 421,
+     tVertex = 422,
+     tFacet = 423,
+     tNormal = 424,
+     tOuter = 425,
+     tLoopSTL = 426,
+     tEndLoop = 427,
+     tEndFacet = 428,
+     tAFFECTDIVIDE = 429,
+     tAFFECTTIMES = 430,
+     tAFFECTMINUS = 431,
+     tAFFECTPLUS = 432,
+     tOR = 433,
+     tAND = 434,
+     tAPPROXEQUAL = 435,
+     tNOTEQUAL = 436,
+     tEQUAL = 437,
+     tGREATEROREQUAL = 438,
+     tLESSOREQUAL = 439,
+     tCROSSPRODUCT = 440,
+     UNARYPREC = 441,
+     tMINUSMINUS = 442,
+     tPLUSPLUS = 443
+   };
+#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 tBoundingBox 292
+#define tDraw 293
+#define tPoint 294
+#define tCircle 295
+#define tEllipse 296
+#define tLine 297
+#define tSurface 298
+#define tSpline 299
+#define tVolume 300
+#define tCharacteristic 301
+#define tLength 302
+#define tParametric 303
+#define tElliptic 304
+#define tPlane 305
+#define tRuled 306
+#define tTriangulation 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 tScalarPoint 328
+#define tVectorPoint 329
+#define tTensorPoint 330
+#define tScalarLine 331
+#define tVectorLine 332
+#define tTensorLine 333
+#define tScalarTriangle 334
+#define tVectorTriangle 335
+#define tTensorTriangle 336
+#define tScalarQuadrangle 337
+#define tVectorQuadrangle 338
+#define tTensorQuadrangle 339
+#define tScalarTetrahedron 340
+#define tVectorTetrahedron 341
+#define tTensorTetrahedron 342
+#define tScalarHexahedron 343
+#define tVectorHexahedron 344
+#define tTensorHexahedron 345
+#define tScalarPrism 346
+#define tVectorPrism 347
+#define tTensorPrism 348
+#define tScalarPyramid 349
+#define tVectorPyramid 350
+#define tTensorPyramid 351
+#define tText2D 352
+#define tText3D 353
+#define tInterpolationScheme 354
+#define tCombine 355
+#define tBSpline 356
+#define tBezier 357
+#define tNurbs 358
+#define tOrder 359
+#define tWith 360
+#define tBounds 361
+#define tKnots 362
+#define tColor 363
+#define tColorTable 364
+#define tFor 365
+#define tIn 366
+#define tEndFor 367
+#define tIf 368
+#define tEndIf 369
+#define tExit 370
+#define tReturn 371
+#define tCall 372
+#define tFunction 373
+#define tTrimmed 374
+#define tShow 375
+#define tHide 376
+#define tB_SPLINE_SURFACE_WITH_KNOTS 377
+#define tB_SPLINE_CURVE_WITH_KNOTS 378
+#define tCARTESIAN_POINT 379
+#define tTRUE 380
+#define tFALSE 381
+#define tUNSPECIFIED 382
+#define tU 383
+#define tV 384
+#define tEDGE_CURVE 385
+#define tVERTEX_POINT 386
+#define tORIENTED_EDGE 387
+#define tPLANE 388
+#define tFACE_OUTER_BOUND 389
+#define tEDGE_LOOP 390
+#define tADVANCED_FACE 391
+#define tVECTOR 392
+#define tDIRECTION 393
+#define tAXIS2_PLACEMENT_3D 394
+#define tISO 395
+#define tENDISO 396
+#define tENDSEC 397
+#define tDATA 398
+#define tHEADER 399
+#define tFILE_DESCRIPTION 400
+#define tFILE_SCHEMA 401
+#define tFILE_NAME 402
+#define tMANIFOLD_SOLID_BREP 403
+#define tCLOSED_SHELL 404
+#define tADVANCED_BREP_SHAPE_REPRESENTATION 405
+#define tFACE_BOUND 406
+#define tCYLINDRICAL_SURFACE 407
+#define tCONICAL_SURFACE 408
+#define tCIRCLE 409
+#define tTRIMMED_CURVE 410
+#define tGEOMETRIC_SET 411
+#define tCOMPOSITE_CURVE_SEGMENT 412
+#define tCONTINUOUS 413
+#define tCOMPOSITE_CURVE 414
+#define tTOROIDAL_SURFACE 415
+#define tPRODUCT_DEFINITION 416
+#define tPRODUCT_DEFINITION_SHAPE 417
+#define tSHAPE_DEFINITION_REPRESENTATION 418
+#define tELLIPSE 419
+#define tSolid 420
+#define tEndSolid 421
+#define tVertex 422
+#define tFacet 423
+#define tNormal 424
+#define tOuter 425
+#define tLoopSTL 426
+#define tEndLoop 427
+#define tEndFacet 428
+#define tAFFECTDIVIDE 429
+#define tAFFECTTIMES 430
+#define tAFFECTMINUS 431
+#define tAFFECTPLUS 432
+#define tOR 433
+#define tAND 434
+#define tAPPROXEQUAL 435
+#define tNOTEQUAL 436
+#define tEQUAL 437
+#define tGREATEROREQUAL 438
+#define tLESSOREQUAL 439
+#define tCROSSPRODUCT 440
+#define UNARYPREC 441
+#define tMINUSMINUS 442
+#define tPLUSPLUS 443
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 79 "Gmsh.y"
+typedef union YYSTYPE {
   char *c;
   int i;
   unsigned int u;
@@ -7,192 +418,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	tBoundingBox	291
-#define	tDraw	292
-#define	tPoint	293
-#define	tCircle	294
-#define	tEllipse	295
-#define	tLine	296
-#define	tSurface	297
-#define	tSpline	298
-#define	tVolume	299
-#define	tCharacteristic	300
-#define	tLength	301
-#define	tParametric	302
-#define	tElliptic	303
-#define	tPlane	304
-#define	tRuled	305
-#define	tTriangulation	306
-#define	tTransfinite	307
-#define	tComplex	308
-#define	tPhysical	309
-#define	tUsing	310
-#define	tBump	311
-#define	tProgression	312
-#define	tPlugin	313
-#define	tRotate	314
-#define	tTranslate	315
-#define	tSymmetry	316
-#define	tDilate	317
-#define	tExtrude	318
-#define	tDuplicata	319
-#define	tLoop	320
-#define	tRecombine	321
-#define	tDelete	322
-#define	tCoherence	323
-#define	tIntersect	324
-#define	tAttractor	325
-#define	tLayers	326
-#define	tScalarPoint	327
-#define	tVectorPoint	328
-#define	tTensorPoint	329
-#define	tScalarLine	330
-#define	tVectorLine	331
-#define	tTensorLine	332
-#define	tScalarTriangle	333
-#define	tVectorTriangle	334
-#define	tTensorTriangle	335
-#define	tScalarQuadrangle	336
-#define	tVectorQuadrangle	337
-#define	tTensorQuadrangle	338
-#define	tScalarTetrahedron	339
-#define	tVectorTetrahedron	340
-#define	tTensorTetrahedron	341
-#define	tScalarHexahedron	342
-#define	tVectorHexahedron	343
-#define	tTensorHexahedron	344
-#define	tScalarPrism	345
-#define	tVectorPrism	346
-#define	tTensorPrism	347
-#define	tScalarPyramid	348
-#define	tVectorPyramid	349
-#define	tTensorPyramid	350
-#define	tText2D	351
-#define	tText3D	352
-#define	tInterpolationMatrix	353
-#define	tCombine	354
-#define	tBSpline	355
-#define	tBezier	356
-#define	tNurbs	357
-#define	tOrder	358
-#define	tWith	359
-#define	tBounds	360
-#define	tKnots	361
-#define	tColor	362
-#define	tColorTable	363
-#define	tFor	364
-#define	tIn	365
-#define	tEndFor	366
-#define	tIf	367
-#define	tEndIf	368
-#define	tExit	369
-#define	tReturn	370
-#define	tCall	371
-#define	tFunction	372
-#define	tTrimmed	373
-#define	tShow	374
-#define	tHide	375
-#define	tB_SPLINE_SURFACE_WITH_KNOTS	376
-#define	tB_SPLINE_CURVE_WITH_KNOTS	377
-#define	tCARTESIAN_POINT	378
-#define	tTRUE	379
-#define	tFALSE	380
-#define	tUNSPECIFIED	381
-#define	tU	382
-#define	tV	383
-#define	tEDGE_CURVE	384
-#define	tVERTEX_POINT	385
-#define	tORIENTED_EDGE	386
-#define	tPLANE	387
-#define	tFACE_OUTER_BOUND	388
-#define	tEDGE_LOOP	389
-#define	tADVANCED_FACE	390
-#define	tVECTOR	391
-#define	tDIRECTION	392
-#define	tAXIS2_PLACEMENT_3D	393
-#define	tISO	394
-#define	tENDISO	395
-#define	tENDSEC	396
-#define	tDATA	397
-#define	tHEADER	398
-#define	tFILE_DESCRIPTION	399
-#define	tFILE_SCHEMA	400
-#define	tFILE_NAME	401
-#define	tMANIFOLD_SOLID_BREP	402
-#define	tCLOSED_SHELL	403
-#define	tADVANCED_BREP_SHAPE_REPRESENTATION	404
-#define	tFACE_BOUND	405
-#define	tCYLINDRICAL_SURFACE	406
-#define	tCONICAL_SURFACE	407
-#define	tCIRCLE	408
-#define	tTRIMMED_CURVE	409
-#define	tGEOMETRIC_SET	410
-#define	tCOMPOSITE_CURVE_SEGMENT	411
-#define	tCONTINUOUS	412
-#define	tCOMPOSITE_CURVE	413
-#define	tTOROIDAL_SURFACE	414
-#define	tPRODUCT_DEFINITION	415
-#define	tPRODUCT_DEFINITION_SHAPE	416
-#define	tSHAPE_DEFINITION_REPRESENTATION	417
-#define	tELLIPSE	418
-#define	tSolid	419
-#define	tEndSolid	420
-#define	tVertex	421
-#define	tFacet	422
-#define	tNormal	423
-#define	tOuter	424
-#define	tLoopSTL	425
-#define	tEndLoop	426
-#define	tEndFacet	427
-#define	tAFFECTPLUS	428
-#define	tAFFECTMINUS	429
-#define	tAFFECTTIMES	430
-#define	tAFFECTDIVIDE	431
-#define	tOR	432
-#define	tAND	433
-#define	tEQUAL	434
-#define	tNOTEQUAL	435
-#define	tAPPROXEQUAL	436
-#define	tLESSOREQUAL	437
-#define	tGREATEROREQUAL	438
-#define	tCROSSPRODUCT	439
-#define	tPLUSPLUS	440
-#define	tMINUSMINUS	441
-#define	UNARYPREC	442
-
+/* Line 1252 of yacc.c.  */
+#line 423 "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 378e7f1555b70117712064e1b9c66f032a920d5e..f15ac211ecb337db83c676233d2b1fa86bfbe7ca 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,5 +1,5 @@
 %{
-// $Id: Gmsh.y,v 1.181 2004-10-20 15:33:00 geuzaine Exp $
+// $Id: Gmsh.y,v 1.182 2004-11-09 16:27:53 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -109,7 +109,7 @@ int PrintListOfDouble (char *format, List_T *list, char *buffer);
 %token tScalarHexahedron tVectorHexahedron tTensorHexahedron
 %token tScalarPrism tVectorPrism tTensorPrism
 %token tScalarPyramid tVectorPyramid tTensorPyramid
-%token tText2D tText3D tInterpolationMatrix tCombine
+%token tText2D tText3D tInterpolationScheme tCombine
 %token tBSpline tBezier tNurbs tOrder tWith tBounds tKnots
 %token tColor tColorTable tFor tIn tEndFor tIf tEndIf tExit
 %token tReturn tCall tFunction tTrimmed tShow tHide
@@ -642,9 +642,9 @@ ScalarTriangle :
     }
     '{' ScalarTriangleValues '}' tEND
     {
-      if((List_Nbr(View->ST) - ntmp) % 3)
-	yymsg(GERROR, "Wrong number of values for scalar triangle "
-	      "(%d is not a multiple of 3)", List_Nbr(View->ST) - ntmp);
+//     if((List_Nbr(View->ST) - ntmp) % 3)
+//	yymsg(GERROR, "Wrong number of values for scalar triangle "
+//	      "(%d is not a multiple of 3)", List_Nbr(View->ST) - ntmp);
       View->NbST++;
     }
 ;
@@ -1269,9 +1269,9 @@ Text3D :
 ;
 
 InterpolationMatrix :
-    tInterpolationMatrix ListOfListOfDouble tEND
+    tInterpolationScheme ListOfListOfDouble  ListOfListOfDouble  tEND
     {
-      View->adaptive = new Adaptive_Post_View (View, $2);
+      View -> adaptive = new Adaptive_Post_View ( View , $2 , $3);
     }
 ;
 
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 6a9bdd0d9d2b9cfc1743dd85f81cad47c19f09fa..0a77848c9a46e502ab187249f2de27280cdcc131 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.205 2004-11-01 14:49:01 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.206 2004-11-09 16:27:53 remacle Exp $
  */
 
 #define FLEX_SCANNER
@@ -10,7 +10,7 @@
 #define YY_FLEX_MINOR_VERSION 5
 
 #include <stdio.h>
-
+#include <errno.h>
 
 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
 #ifdef c_plusplus
@@ -23,7 +23,9 @@
 #ifdef __cplusplus
 
 #include <stdlib.h>
+#ifndef _WIN32
 #include <unistd.h>
+#endif
 
 /* Use prototypes in function declarations. */
 #define YY_USE_PROTOS
@@ -63,6 +65,7 @@
 #define YY_PROTO(proto) ()
 #endif
 
+
 /* Returned upon end-of-file. */
 #define YY_NULL 0
 
@@ -557,14 +560,14 @@ static yyconst short int yy_base[1077] =
       630,    0,    0,  644,  654,  659,  647,  640,  660,  643,
       635,  682,  660,  673,    0,  656,  680,    0,  676,  682,
       691,    0,    0,  674,  674,  668,  693,  677,  693,  694,
-      682,    0,  708,  688,  688,  691,  678,  686,  692,  705,
+      682,    0,  708,  688,  688,  685,  678,  686,  692,  705,
       701,  683,  688,  707,    0,  686,    0,  708,  723,  713,
-      704,  718,  718,  712,  708,  718,  723,  731,  717,  700,
-      709,  728, 1337,    0,    0,  710,  713,  717,  706,    0,
-      718,  731,  716,  714,  733,  736,  722,  736,  728,  727,
+      704,  716,  718,  712,  708,  718,  723,  731,  717,  700,
+      709,  728, 1337,    0,    0,  722,  713,  717,  706,    0,
+      718,  731,  716,  714,  733,  736,  735,  736,  728,  727,
 
-      741,    0,  739,  739,  742,  745,  742,  736,  726,  749,
-      728,  729,  737,  745,    0,  735,    0,  741,  745,  744,
+      741,    0,  739,  739,  742,  745,  738,  736,  726,  749,
+      728,  729,  737,  745,    0,  754,    0,  741,  745,  744,
       752,  756,  760,    0,  758,  749,  763,  755,  743,  757,
       771,  768,  758,  760,  765,  757,  762,  760,  762,  761,
       768,    0,  778,  779,  780,  767,  772,    0,  774,  770,
@@ -1029,7 +1032,7 @@ char *yytext;
 #line 1 "Gmsh.l"
 #define INITIAL 0
 #line 2 "Gmsh.l"
-// $Id: Gmsh.yy.cpp,v 1.205 2004-11-01 14:49:01 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.206 2004-11-09 16:27:53 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -1090,7 +1093,7 @@ void   skipline(void);
 	     && ferror( yyin ) )					\
      YY_FATAL_ERROR( "input in flex scanner failed" );
 
-#line 1094 "Gmsh.yy.cpp"
+#line 1097 "Gmsh.yy.cpp"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1190,9 +1193,20 @@ YY_MALLOC_DECL
 			YY_FATAL_ERROR( "input in flex scanner failed" ); \
 		result = n; \
 		} \
-	else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
-		  && ferror( yyin ) ) \
-		YY_FATAL_ERROR( "input in flex scanner failed" );
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}
 #endif
 
 /* No semi-colon after return; correct usage is to write "yyterminate();" -
@@ -1244,7 +1258,7 @@ YY_DECL
 #line 80 "Gmsh.l"
 
 
-#line 1248 "Gmsh.yy.cpp"
+#line 1262 "Gmsh.yy.cpp"
 
 	if ( yy_init )
 		{
@@ -2070,7 +2084,7 @@ return tText3D;
 case 149:
 YY_RULE_SETUP
 #line 251 "Gmsh.l"
-return tInterpolationMatrix;
+return tInterpolationScheme;
 	YY_BREAK
 case 150:
 YY_RULE_SETUP
@@ -2368,7 +2382,7 @@ YY_RULE_SETUP
 #line 320 "Gmsh.l"
 ECHO;
 	YY_BREAK
-#line 2372 "Gmsh.yy.cpp"
+#line 2386 "Gmsh.yy.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2932,11 +2946,15 @@ YY_BUFFER_STATE b;
 	}
 
 
+#ifndef _WIN32
+#include <unistd.h>
+#else
 #ifndef YY_ALWAYS_INTERACTIVE
 #ifndef YY_NEVER_INTERACTIVE
 extern int isatty YY_PROTO(( int ));
 #endif
 #endif
+#endif
 
 #ifdef YY_USE_PROTOS
 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
diff --git a/Plugin/CutMap.cpp b/Plugin/CutMap.cpp
index f287fa08ec9a15e40e41bb2078dec62be6f3f453..c12b81bc4a70a141504190dd84d46496a6d5942d 100644
--- a/Plugin/CutMap.cpp
+++ b/Plugin/CutMap.cpp
@@ -1,4 +1,4 @@
-// $Id: CutMap.cpp,v 1.40 2004-10-30 15:23:23 geuzaine Exp $
+// $Id: CutMap.cpp,v 1.41 2004-11-09 16:27:53 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -29,7 +29,8 @@ StringXNumber CutMapOptions_Number[] = {
   {GMSH_FULLRC, "A", GMSH_CutMapPlugin::callbackA, 1.},
   {GMSH_FULLRC, "dTimeStep", NULL, -1.},
   {GMSH_FULLRC, "dView", NULL, -1.},
-  {GMSH_FULLRC, "iView", NULL, -1.}
+  {GMSH_FULLRC, "iView", NULL, -1.},
+  {GMSH_FULLRC, "recurLevel", NULL, 4}
 };
 
 extern "C"
@@ -119,17 +120,20 @@ Post_View *GMSH_CutMapPlugin::execute(Post_View * v)
   _valueIndependent = 0;
   _valueView = (int)CutMapOptions_Number[2].def;
   _valueTimeStep = (int)CutMapOptions_Number[1].def;
+  _recurLevel = (int)CutMapOptions_Number[4].def;
   _orientation = GMSH_LevelsetPlugin::MAP;
-
+  
   if(iView < 0)
     iView = v ? v->Index : 0;
-
+  
   if(!List_Pointer_Test(CTX.post.list, iView)) {
     Msg(GERROR, "View[%d] does not exist", iView);
     return v;
   }
-
+  
   Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView);
-
+  
   return GMSH_LevelsetPlugin::execute(v1);
 }
+
+
diff --git a/Plugin/CutMap.h b/Plugin/CutMap.h
index 95efab52994bb9d797ef2689219137ef476e1dca..124823e9166e2ae75b057443d8dd20c72754971a 100644
--- a/Plugin/CutMap.h
+++ b/Plugin/CutMap.h
@@ -38,7 +38,6 @@ class GMSH_CutMapPlugin : public GMSH_LevelsetPlugin
   int getNbOptions() const;
   StringXNumber* getOption (int iopt);  
   Post_View *execute (Post_View *);
-
   static double callbackA(int, int, double);
 };
 
diff --git a/Plugin/CutPlane.cpp b/Plugin/CutPlane.cpp
index 1f2513bff7f2c67d2fa85ef38172804dac7d68ef..dbb51afcacd5c2b81eaaeed20d5fcbf5343f4bfb 100644
--- a/Plugin/CutPlane.cpp
+++ b/Plugin/CutPlane.cpp
@@ -1,4 +1,4 @@
-// $Id: CutPlane.cpp,v 1.36 2004-10-30 15:23:23 geuzaine Exp $
+// $Id: CutPlane.cpp,v 1.37 2004-11-09 16:27:53 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -37,7 +37,8 @@ StringXNumber CutPlaneOptions_Number[] = {
   {GMSH_FULLRC, "B", GMSH_CutPlanePlugin::callbackB, 0.},
   {GMSH_FULLRC, "C", GMSH_CutPlanePlugin::callbackC, 0.},
   {GMSH_FULLRC, "D", GMSH_CutPlanePlugin::callbackD, -0.01},
-  {GMSH_FULLRC, "iView", NULL, -1.}
+  {GMSH_FULLRC, "iView", NULL, -1.},
+  {GMSH_FULLRC, "recurLevel", NULL, 4}
 };
 
 extern "C"
@@ -195,6 +196,7 @@ Post_View *GMSH_CutPlanePlugin::execute(Post_View * v)
   _valueView = -1;
   _valueTimeStep = -1;
   _orientation = GMSH_LevelsetPlugin::PLANE;
+  _recurLevel = (int)CutPlaneOptions_Number[5].def;
 
   if(iView < 0)
     iView = v ? v->Index : 0;
diff --git a/Plugin/CutSphere.cpp b/Plugin/CutSphere.cpp
index 41c524ef2945f22cb564914350821c21c4d0c7db..e71694f1529692982ce8bc64dcf4a36306777ad7 100644
--- a/Plugin/CutSphere.cpp
+++ b/Plugin/CutSphere.cpp
@@ -1,4 +1,4 @@
-// $Id: CutSphere.cpp,v 1.34 2004-10-30 04:23:18 geuzaine Exp $
+// $Id: CutSphere.cpp,v 1.35 2004-11-09 16:27:53 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -36,7 +36,8 @@ StringXNumber CutSphereOptions_Number[] = {
   {GMSH_FULLRC, "Yc", GMSH_CutSpherePlugin::callbackY, 0.},
   {GMSH_FULLRC, "Zc", GMSH_CutSpherePlugin::callbackZ, 0.},
   {GMSH_FULLRC, "R", GMSH_CutSpherePlugin::callbackR, 0.25},
-  {GMSH_FULLRC, "iView", NULL, -1.}
+  {GMSH_FULLRC, "iView", NULL, -1.},
+  {GMSH_FULLRC, "recurLevel", NULL, 4}
 };
 
 extern "C"
@@ -193,6 +194,8 @@ Post_View *GMSH_CutSpherePlugin::execute(Post_View * v)
   _ref[0] = CutSphereOptions_Number[0].def;
   _ref[1] = CutSphereOptions_Number[1].def;
   _ref[2] = CutSphereOptions_Number[2].def;
+  _recurLevel = (int)CutSphereOptions_Number[5].def;
+
   _valueIndependent = 1;
   _valueView = -1;
   _valueTimeStep = -1;
diff --git a/Plugin/Levelset.cpp b/Plugin/Levelset.cpp
index 3af76c07398fa78a19933d3675767ebdde6394e0..6ddf3c8155c01e685471e972fbaddfb8a9716d43 100644
--- a/Plugin/Levelset.cpp
+++ b/Plugin/Levelset.cpp
@@ -1,4 +1,4 @@
-// $Id: Levelset.cpp,v 1.15 2004-09-16 19:15:27 geuzaine Exp $
+// $Id: Levelset.cpp,v 1.16 2004-11-09 16:27:53 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -38,6 +38,7 @@ GMSH_LevelsetPlugin::GMSH_LevelsetPlugin()
   _valueIndependent = 0; // "moving" levelset
   _valueView = -1; // use same view for levelset and field data
   _valueTimeStep = -1; // use same time step in levelset and field data views
+  _recurLevel = 4;
   _orientation = GMSH_LevelsetPlugin::NONE;
 }
 
@@ -338,6 +339,10 @@ Post_View *GMSH_LevelsetPlugin::execute(Post_View * v)
   Post_View *w;
   vector<Post_View *> out;
 
+  if (v->adaptive && v->NbST)
+    v->setAdaptiveResolutionLevel ( _recurLevel , this );
+
+
   if(_valueView < 0) {
     w = v;
   }
@@ -531,3 +536,48 @@ Post_View *GMSH_LevelsetPlugin::execute(Post_View * v)
 
   return 0;
 }
+
+/*
+  On high order maps, we draw only the elements that have a 
+  cut with the levelset, this is as accurate as it should be
+*/
+
+
+static bool recur_sign_change (_triangle *t, double val, const GMSH_LevelsetPlugin *plug)
+{
+
+  if (!t->t[0])
+    {
+      double v1 = plug->levelset (t->p[0]->X,t->p[0]->Y,t->p[0]->Z,t->p[0]->val);
+      double v2 = plug->levelset (t->p[1]->X,t->p[1]->Y,t->p[1]->Z,t->p[1]->val);
+      double v3 = plug->levelset (t->p[2]->X,t->p[2]->Y,t->p[2]->Z,t->p[2]->val);
+      if ( v1 * v2 > 0 && v1 * v3 > 0)
+	t->visible = false;
+      else
+	t->visible = true;
+      return t->visible;
+    }
+  else
+    {
+      bool sc1= recur_sign_change(t->t[0],val,plug);
+      bool sc2= recur_sign_change(t->t[1],val,plug);
+      bool sc3= recur_sign_change(t->t[2],val,plug);
+      bool sc4= recur_sign_change(t->t[3],val,plug);
+      if (sc1 || sc2 || sc3 || sc4)
+	{
+	  if (!sc1) t->t[0]->visible = true;
+	  if (!sc2) t->t[1]->visible = true;
+	  if (!sc3) t->t[2]->visible = true;
+	  if (!sc4) t->t[3]->visible = true;
+	  return true;
+	}
+      t->visible = false;
+      return false;
+    }      
+}
+
+void GMSH_LevelsetPlugin::assign_specific_visibility () const
+{
+  _triangle *t  = *_triangle::all_triangles.begin();
+  t->visible = !recur_sign_change (t, _valueView, this);
+}
diff --git a/Plugin/Levelset.h b/Plugin/Levelset.h
index 9e95f0caa2c2cbb50ef14a9cea69a17c6021a491..3e496954d89a5774951687eb8b82ed1838383780 100644
--- a/Plugin/Levelset.h
+++ b/Plugin/Levelset.h
@@ -29,13 +29,13 @@ class GMSH_LevelsetPlugin : public GMSH_Post_Plugin
 {
 public:
   typedef enum {NONE, PLANE, SPHERE, MAP} ORIENTATION ;
+  virtual double levelset(double x, double y, double z, double val) const = 0;
 protected:
   double _ref[3];
-  int _valueTimeStep, _valueView, _valueIndependent;
+  int _valueTimeStep, _valueView, _valueIndependent, _recurLevel;
   ORIENTATION _orientation;
 private:
   double _invert;
-  virtual double levelset(double x, double y, double z, double val) const = 0;
   int zeroLevelset(int timeStep, int nbVert, int nbEdg, int exn[12][2],
 		   double *x, double *y, double *z, 
 		   double *iVal, int iNbComp, double *dVal, int dNbComp,
@@ -46,6 +46,7 @@ private:
 		   int dNbElm, int dNbComp,
 		   int nbVert, int nbEdg, int exn[12][2], 
 		   vector<Post_View *> out);
+  virtual void assign_specific_visibility () const;
 public:
   GMSH_LevelsetPlugin();
   virtual Post_View *execute(Post_View *);
diff --git a/Plugin/Makefile b/Plugin/Makefile
index e805d036393edb22e2018010851e2fc19f1b4bdd..3fb428e3f112d6b404841f3353f2d985bfaeaf9b 100644
--- a/Plugin/Makefile
+++ b/Plugin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.58 2004-10-30 15:23:45 geuzaine Exp $
+# $Id: Makefile,v 1.59 2004-11-09 16:27:53 remacle Exp $
 #
 # Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 #
@@ -87,11 +87,19 @@ Levelset.o: Levelset.cpp Levelset.h Plugin.h ../Common/Options.h \
 CutPlane.o: CutPlane.cpp CutPlane.h Levelset.h Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
   ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h ../Common/GmshMatrix.h ../Common/Context.h
+  ../Common/SmoothNormals.h ../Common/GmshMatrix.h ../Common/Context.h \
+  ../Common/GmshUI.h ../Graphics/Draw.h ../Mesh/Mesh.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Simplex.h \
+  ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/STL.h \
+  ../Mesh/Metric.h ../Mesh/Matrix.h
 CutSphere.o: CutSphere.cpp CutSphere.h Levelset.h Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
   ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h ../Common/GmshMatrix.h ../Common/Context.h
+  ../Common/SmoothNormals.h ../Common/GmshMatrix.h ../Common/Context.h \
+  ../Common/GmshUI.h ../Graphics/Draw.h ../Mesh/Mesh.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Simplex.h \
+  ../Mesh/Face.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/STL.h \
+  ../Mesh/Metric.h ../Mesh/Matrix.h
 CutMap.o: CutMap.cpp CutMap.h Levelset.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
diff --git a/Plugin/Plugin.cpp b/Plugin/Plugin.cpp
index 3629af39ae48771f907f7c0712bb463f49f87569..423c05de93b9db6a0f5c8724a15c6241e4d6a81b 100644
--- a/Plugin/Plugin.cpp
+++ b/Plugin/Plugin.cpp
@@ -1,4 +1,4 @@
-// $Id: Plugin.cpp,v 1.62 2004-10-30 15:23:45 geuzaine Exp $
+// $Id: Plugin.cpp,v 1.63 2004-11-09 16:27:53 remacle Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -156,6 +156,7 @@ GMSH_PluginManager *GMSH_PluginManager::instance()
 void GMSH_PluginManager::registerDefaultPlugins()
 {
   // SOLVE PLUGINS
+  char *homeplugins = getenv("GMSHPLUGINSHOME");
   if(CTX.solver.plugins){
     allPlugins.insert(std::pair < char *, GMSH_Plugin * >
 		      ("StructuralSolver", GMSH_RegisterStructuralSolverPlugin()));
@@ -204,7 +205,6 @@ void GMSH_PluginManager::registerDefaultPlugins()
 #if defined(HAVE_FLTK)
   struct dirent **list;
   char ext[6];
-  char *homeplugins = getenv("GMSHPLUGINSHOME");
   if(!homeplugins)
     return;
   int nbFiles = fl_filename_list(homeplugins, &list);
diff --git a/Plugin/Plugin.h b/Plugin/Plugin.h
index c5d64c1c766577cff4f758d01323eb85f39e7eb2..2182d11b09f5569017b7255d4af01654454d39a2 100644
--- a/Plugin/Plugin.h
+++ b/Plugin/Plugin.h
@@ -95,6 +95,7 @@ public:
   // If returned pointer is the same as the argument, then view is
   // simply modified, else, a new view is added in the view list
   virtual Post_View *execute(Post_View *) = 0;
+  virtual void assign_specific_visibility () const {}
 };
 
 /*
diff --git a/Plugin/StructuralSolver.cpp b/Plugin/StructuralSolver.cpp
index 1eea1bd5d65af4b4422363ad244facf89b3a5383..9758d71f2bd7bd15353b15ef284f118edc25d6e2 100644
--- a/Plugin/StructuralSolver.cpp
+++ b/Plugin/StructuralSolver.cpp
@@ -978,6 +978,9 @@ bool StructuralSolver :: GL_enhanceLine ( int CurveId, Vertex *v1, Vertex *v2)
 	      double pinit [3] = {v1->Pos.X,v1->Pos.Y,v1->Pos.Z};
 	      double dir [3] = {v2->Pos.X-v1->Pos.X,v2->Pos.Y-v1->Pos.Y,v2->Pos.Z-v1->Pos.Z};
 	      Structural_BeamSection *section =  GetBeamSection (it->second.section);
+
+	      //	      printf ("%g,%g,%g\n",it->second.dirz[0],it->second.dirz[1],it->second.dirz[2]);
+
 	      if (section)
 		{
 		  section -> GL_DrawBeam (pinit,dir,it->second.dirz,textures[it->second.material]);