Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/DeclarationNode.cc	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jun  3 11:54:32 2015
-// Update Count     : 14
+// Last Modified On : Sat Jun  6 23:29:13 2015
+// Update Count     : 23
 //
 
@@ -74,5 +74,5 @@
 
 void DeclarationNode::print( std::ostream &os, int indent ) const {
-	os << string(indent, ' ' );
+	os << string( indent, ' ' );
 	if ( name == "" ) {
 		os << "unnamed: ";
@@ -93,10 +93,10 @@
 
 	if ( bitfieldWidth ) {
-		os << endl << string(indent+2,  ' ') << "with bitfield width ";
+		os << endl << string( indent + 2, ' ' ) << "with bitfield width ";
 		bitfieldWidth->printOneLine( os );
 	}
 
 	if ( initializer != 0 ) {
-		os << endl << string(indent+2,  ' ') << "with initializer ";
+		os << endl << string( indent + 2, ' ' ) << "with initializer ";
 		initializer->printOneLine( os );
 	}
@@ -161,5 +161,5 @@
 }
 
-DeclarationNode *DeclarationNode::newForall( DeclarationNode* forall ) {
+DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::Unknown );
@@ -168,5 +168,5 @@
 }
 
-DeclarationNode *DeclarationNode::newFromTypedef( std::string* name ) {
+DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::SymbolicInst );
@@ -177,5 +177,5 @@
 }
 
-DeclarationNode *DeclarationNode::newAggregate( TyCon kind, std::string* name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields ) {
+DeclarationNode *DeclarationNode::newAggregate( TyCon kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::Aggregate );
@@ -203,5 +203,5 @@
 }
 
-DeclarationNode *DeclarationNode::newEnumConstant( std::string* name, ExpressionNode *constant ) {
+DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->name = assign_strptr( name );
@@ -210,5 +210,5 @@
 }
 
-DeclarationNode *DeclarationNode::newName( std::string* name ) {
+DeclarationNode *DeclarationNode::newName( std::string *name ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->name = assign_strptr( name );
@@ -216,5 +216,5 @@
 }
 
-DeclarationNode *DeclarationNode::newFromTypeGen( std::string* name, ExpressionNode *params ) {
+DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::SymbolicInst );
@@ -225,5 +225,5 @@
 }
 
-DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string* name ) {
+DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->name = assign_strptr( name );
@@ -467,5 +467,5 @@
 }
 
-DeclarationNode *DeclarationNode::addAssertions( DeclarationNode* assertions ) {
+DeclarationNode *DeclarationNode::addAssertions( DeclarationNode *assertions ) {
 	assert( type );
 	switch ( type->kind ) {
@@ -493,5 +493,5 @@
 }
 
-DeclarationNode *DeclarationNode::addName( std::string* newname ) {
+DeclarationNode *DeclarationNode::addName( std::string *newname ) {
 	name = assign_strptr( newname );
 	return this;
@@ -758,5 +758,5 @@
 void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< Declaration* > > out( outputList );
+	std::back_insert_iterator< std::list< Declaration *> > out( outputList );
 	const DeclarationNode *cur = firstNode;
 	while ( cur ) {
@@ -776,5 +776,5 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast< DeclarationNode* >( cur->get_link() );
+		cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
 	} // while
 	if ( ! errors.isEmpty() ) {
@@ -783,7 +783,7 @@
 }
 
-void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType* > &outputList ) {
+void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< DeclarationWithType* > > out( outputList );
+	std::back_insert_iterator< std::list< DeclarationWithType *> > out( outputList );
 	const DeclarationNode *cur = firstNode;
 	while ( cur ) {
@@ -799,11 +799,11 @@
 			Declaration *decl = cur->build();
 			if ( decl ) {
-				if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType* >( decl ) ) {
+				if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType *>( decl ) ) {
 					*out++ = dwt;
-				} else if ( StructDecl *agg = dynamic_cast< StructDecl* >( decl ) ) {
+				} else if ( StructDecl *agg = dynamic_cast< StructDecl *>( decl ) ) {
 					StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
 					*out++ = new ObjectDecl( "", Declaration::NoStorageClass, linkage, 0, inst, 0 );
 					delete agg;
-				} else if ( UnionDecl *agg = dynamic_cast< UnionDecl* >( decl ) ) {
+				} else if ( UnionDecl *agg = dynamic_cast< UnionDecl *>( decl ) ) {
 					UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
 					*out++ = new ObjectDecl( "", Declaration::NoStorageClass, linkage, 0, inst, 0 );
@@ -813,5 +813,5 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast< DeclarationNode* >( cur->get_link() );
+		cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
 	} // while
 	if ( ! errors.isEmpty() ) {
@@ -820,7 +820,7 @@
 }
 
-void buildTypeList( const DeclarationNode *firstNode, std::list< Type* > &outputList ) {
+void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< Type* > > out( outputList );
+	std::back_insert_iterator< std::list< Type *> > out( outputList );
 	const DeclarationNode *cur = firstNode;
 	while ( cur ) {
@@ -830,5 +830,5 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast< DeclarationNode* >( cur->get_link() );
+		cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
 	} // while
 	if ( ! errors.isEmpty() ) {
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/ExpressionNode.cc	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jun  5 07:44:47 2015
-// Update Count     : 10
+// Last Modified On : Sat Jun  6 23:18:19 2015
+// Update Count     : 128
 // 
 
@@ -17,10 +17,11 @@
 #include <cctype>
 #include <algorithm>
+#include <sstream>
+#include <cstdio>
+#include <climits>
 
 #include "ParseNode.h"
-#include "SynTree/Type.h"
 #include "SynTree/Constant.h"
 #include "SynTree/Expression.h"
-#include "SynTree/Declaration.h"
 #include "UnimplementedError.h"
 #include "parseutility.h"
@@ -31,7 +32,5 @@
 ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
 
-ExpressionNode::ExpressionNode( string *name_) : ParseNode( *name_ ), argName( 0 ) {
-	delete name_;
-}
+ExpressionNode::ExpressionNode( const string *name_ ) : ParseNode( name_ ), argName( 0 ) {}
 
 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
@@ -43,5 +42,5 @@
 }
 
-ExpressionNode * ExpressionNode::set_asArgName( std::string *aName ) {
+ExpressionNode * ExpressionNode::set_asArgName( const std::string *aName ) {
 	argName = new VarRefNode( aName );
 	return this;
@@ -55,5 +54,5 @@
 void ExpressionNode::printDesignation( std::ostream &os, int indent ) const {
 	if ( argName ) {
-		os << string(' ', indent ) << "(designated by:  ";
+		os << string( indent, ' ' ) << "(designated by:  ";
 		argName->printOneLine( os, indent );
 		os << ")" << std::endl;
@@ -85,75 +84,104 @@
 }
 
-//  enum ConstantNode::Type =  { Integer, Float, Character, String, Range }
-
-ConstantNode::ConstantNode( void ) : ExpressionNode(), sign( true ), longs(0), size(0) {}
-
-ConstantNode::ConstantNode( string *name_) : ExpressionNode( name_), sign( true ), longs(0), size(0) {}
-
-ConstantNode::ConstantNode( Type t, string *inVal ) : type( t ), sign( true ), longs(0), size(0) {
-	if ( inVal ) {
-		value = *inVal;
-		delete inVal;
-	} else {
-		value = "";
-	} // if
-
-	classify( value );
-}
-
-ConstantNode::ConstantNode( const ConstantNode &other ) : ExpressionNode( other ), type( other.type ), value( other.value ), sign( other.sign ),
-														  base( other.base ), longs( other.longs ), size( other.size ) {
-}
-
-// for some reason, std::tolower doesn't work as an argument to std::transform in g++ 3.1
-inline char tolower_hack( char c ) {
-	return std::tolower( c );
-}
-
-void ConstantNode::classify( std::string &str ) {
+static inline bool checku( char c ) { return c == 'u' || c == 'U'; }
+static inline bool checkl( char c ) { return c == 'l' || c == 'L'; }
+static inline bool checkf( char c ) { return c == 'f' || c == 'F'; }
+static inline bool checkx( char c ) { return c == 'x' || c == 'X'; }
+
+ConstantNode::ConstantNode( Type t, string *inVal ) : type( t ), value( *inVal ) {
 	switch ( type ) {
-	  case Integer:
 	  case Float:
 		{
-			std::string sfx("");
-			char c;
-			int i = str.length() - 1;
-
-			while ( i >= 0 && ! isxdigit( c = str.at( i--)) )
-				sfx += c;
-
-			value = str.substr( 0, i + 2 );
-
-			// get rid of underscores
-			value.erase( remove( value.begin(), value.end(), '_'), value.end());
-
-			std::transform( sfx.begin(), sfx.end(), sfx.begin(), tolower_hack );
-
-			if ( sfx.find("ll") != string::npos ) {
-				longs = 2;
-			} else if ( sfx.find("l") != string::npos ) {
-				longs = 1;
+			size_t len = value.length() - 1;
+
+			btype = BasicType::Double;					// default
+			if ( checkf( value[len] ) ) {
+				btype = BasicType::Float;
 			} // if
-
-			assert(( longs >= 0) && ( longs <= 2));
-
-			if ( sfx.find("u") != string::npos )
-				sign = false;
-
+			if ( checkl( value[len] ) ) {
+				btype = BasicType::LongDouble;
+			} // if
+			break;
+		}
+	  case Integer:
+		{
+			static const BasicType::Kind kind[2][3] = {
+				{ BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
+				{ BasicType::UnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt },
+			};
+			size_t last = value.length() - 1;			// last character of constant
+			unsigned long long v;						// converted integral value
+			bool dec = true, Unsigned = false;			// decimal, unsigned constant
+			int size;									// 0 => int, 1 => long, 2 => long long
+
+			if ( value[0] == '0' ) {					// octal ?
+				dec = false;
+				if ( last != 0 && checkx( value[1] ) ) { // hex ?
+					sscanf( (char *)value.c_str(), "%llx", &v );
+					//printf( "%llx %llu\n", v, v );
+				} else {
+					sscanf( (char *)value.c_str(), "%llo", &v );
+					//printf( "%llo %llu\n", v, v );
+				} // if
+			} else {									// decimal ?
+				sscanf( (char *)value.c_str(), "%lld", &v );
+				//printf( "%llu %llu\n", v, v );
+			} // if
+
+			if ( v <= INT_MAX ) {						// signed int
+				size = 0;
+			} else if ( v <= UINT_MAX ) {				// unsigned int
+				size = 0;
+				if ( ! dec ) Unsigned = true;			// unsigned
+			} else if ( v <= LONG_MAX ) {				// signed long int
+				size = 1;
+			} else if ( v <= ULONG_MAX ) {				// signed long int
+				size = 1;
+				if ( ! dec ) Unsigned = true;			// unsigned long int
+			} else if ( v <= LLONG_MAX ) {				// signed long long int
+				size = 2;
+			} else {									// signed long long int
+				size = 2;
+				if ( ! dec ) Unsigned = true;			// unsigned long long int
+			} // if
+
+			if ( checku( value[last] ) ) {				// suffix 'u' ?
+				Unsigned = true;
+				if ( checkl( value[ last - 1 ] ) ) {	// suffix 'l' ?
+					size = 1;
+					if ( checkl( value[ last - 1 ] ) ) { // suffix 'll' ?
+						size = 2;
+					} // if
+				} // if
+			} else if ( checkl( value[ last ] ) ) {		// suffix 'l' ?
+				size = 1;
+				if ( checkl( value[ last - 1 ] ) ) {	// suffix 'll' ?
+					size = 2;
+				} // if
+				if ( checku( value[ last - 1 ] ) ) {	// suffix 'u' ?
+					Unsigned = true;
+				} // if
+			} // if
+			btype = kind[Unsigned][size];				// loopup type of constant
 			break;
 		}
 	  case Character:
-		{
-			// remove underscores from hex and oct escapes
-			if ( str.substr(1,2) == "\\x")
-				value.erase( remove( value.begin(), value.end(), '_'), value.end());
-
-			break;
-		}
-	  default:
-		// shouldn't be here
-		;
-	}
-}
+		btype = BasicType::Char;						// default
+		if ( string( "LUu" ).find( value[0] ) != string::npos ) {
+			// ???
+		} // if
+		break;
+	  case String:
+		// array of char
+		if ( string( "LUu" ).find( value[0] ) != string::npos ) {
+			if ( value[0] == 'u' && value[1] == '8' ) {
+				// ???
+			} else {
+				// ???
+			} // if
+		} // if
+		break;
+	} // switch
+} // ConstantNode::ConstantNode
 
 ConstantNode::Type ConstantNode::get_type( void ) const {
@@ -161,26 +189,21 @@
 }
 
-ConstantNode *ConstantNode::append( std::string *newValue ) {
-	if ( newValue ) {
-		if ( type == String ) {
-			std::string temp = *newValue;
-			value.resize( value.size() - 1 );
-			value += newValue->substr(1, newValue->size());
-		} else
-			value += *newValue;
-
-		delete newValue;
-	} // if
+ConstantNode *ConstantNode::appendstr( const std::string *newValue ) {
+	assert( newValue != 0 );
+	assert( type == String );
+
+	//printf( "%lu \"%s\" \"%s\"\n", value.length() - 1, value.c_str(), newValue->substr( 1, newValue->length() - 2 ).c_str() );
+	value.insert( value.length() - 1, newValue->substr( 1, newValue->length() - 2 ) );
+	
+	delete newValue;									// allocated by yacc
 	return this;
 }
 
 void ConstantNode::printOneLine( std::ostream &os, int indent ) const {
-	os << string( indent, ' ');
+	os << string( indent, ' ' );
 	printDesignation( os );
 
 	switch ( type ) {
 	  case Integer:
-		os << value ;
-		break;
 	  case Float:
 		os << value ;
@@ -206,33 +229,24 @@
 	BasicType *bt;
 
-	switch ( get_type()) {
-	  case Integer:
-		/* Cfr. standard 6.4.4.1 */
-		//bt.set_kind( BasicType::SignedInt );
-		bt = new BasicType( q, BasicType::SignedInt );
-		break;
-	  case Float:
-		// floating-point constants are type double
-		bt = new BasicType( q, BasicType::Double );
-		break;
-	  case Character:
-		bt = new BasicType( q, BasicType::Char );
-		break;
+	switch ( get_type() ) {
 	  case String:
-		// string should probably be a primitive type
-		ArrayType *at;
-		std::string value = get_value();
-		at = new ArrayType( q, new BasicType( q, BasicType::Char ),
-							new ConstantExpr( Constant( new BasicType( q, BasicType::SignedInt ),
-														toString( value.size() - 1 ) ) ),  // account for '\0'
-							false, false );
-		return new ConstantExpr( Constant( at, value ), maybeBuild< Expression >( get_argName() ) );
+		{
+			// string should probably be a primitive type
+			ArrayType *at = new ArrayType( q, new BasicType( q, BasicType::Char ),
+										   new ConstantExpr(
+											   Constant( new BasicType( q, BasicType::UnsignedInt ),
+														 toString( value.size() + 1 ) ) ),  // account for '\0'
+										   false, false );
+			return new ConstantExpr( Constant( at, value ), maybeBuild< Expression >( get_argName() ) );
+		}
+	  default:
+	   	bt = new BasicType( q, btype );
+		return new ConstantExpr( Constant( bt, get_value() ), maybeBuild< Expression >( get_argName() ) );
 	}
-	return new ConstantExpr(  Constant( bt, get_value()),  maybeBuild< Expression >( get_argName() ) );
 }
 
 VarRefNode::VarRefNode() : isLabel( false ) {}
 
-VarRefNode::VarRefNode( string *name_, bool labelp ) : ExpressionNode( name_), isLabel( labelp ) {}
+VarRefNode::VarRefNode( const string *name_, bool labelp ) : ExpressionNode( name_ ), isLabel( labelp ) {}
 
 VarRefNode::VarRefNode( const VarRefNode &other ) : ExpressionNode( other ), isLabel( other.isLabel ) {
@@ -277,6 +291,6 @@
 }
 
-std::string OperatorNode::get_typename( void ) const{
-	return string( OpName[ type ]);
+const char *OperatorNode::get_typename( void ) const{
+	return OpName[ type ];
 }
 
@@ -298,5 +312,5 @@
 }
 
-CompositeExprNode::CompositeExprNode( string *name_) : ExpressionNode( name_), function( 0 ), arguments( 0 ) {
+CompositeExprNode::CompositeExprNode( const string *name_ ) : ExpressionNode( name_ ), function( 0 ), arguments( 0 ) {
 }
 
@@ -612,5 +626,5 @@
 void ValofExprNode::print( std::ostream &os, int indent ) const {
 	printDesignation( os );
-	os << string( indent, ' ') << "Valof Expression:" << std::endl;
+	os << string( indent, ' ' ) << "Valof Expression:" << std::endl;
 	get_body()->print( os, indent + 4);
 }
@@ -657,7 +671,7 @@
 
 void ForCtlExprNode::print( std::ostream &os, int indent ) const{
-	os << string( indent,' ') << "For Control Expression -- :" << endl;
-
-	os << string( indent + 2,' ' ) << "initialization:" << endl;
+	os << string( indent,' ' ) << "For Control Expression -- :" << endl;
+
+	os << string( indent + 2, ' ' ) << "initialization:" << endl;
 	if ( init != 0 )
 		init->printList( os, indent + 4 );
@@ -666,5 +680,5 @@
 	if ( condition != 0 )
 		condition->print( os, indent + 4 );
-	os << string( indent + 2,' ' ) << "increment: " << endl;
+	os << string( indent + 2, ' ' ) << "increment: " << endl;
 	if ( change != 0 )
 		change->print( os, indent + 4 );
Index: src/Parser/InitializerNode.cc
===================================================================
--- src/Parser/InitializerNode.cc	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/InitializerNode.cc	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:20:24 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 13:21:40 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun  6 15:49:42 2015
+// Update Count     : 3
 // 
 
@@ -48,5 +48,5 @@
 
 void InitializerNode::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Initializer expression" << std::endl;
+	os << std::string( indent, ' ' ) << "Initializer expression" << std::endl;
 }
 
Index: src/Parser/ParseNode.cc
===================================================================
--- src/Parser/ParseNode.cc	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/ParseNode.cc	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:26:29 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jun  3 11:17:58 2015
-// Update Count     : 4
+// Last Modified On : Sat Jun  6 20:17:58 2015
+// Update Count     : 23
 // 
 
@@ -20,32 +20,16 @@
 int ParseNode::indent_by = 4;
 
-ParseNode::ParseNode( void ) : next( 0 ) {};
-ParseNode::ParseNode( string _name ) : name( _name ), next( 0 ) {}
+ParseNode::ParseNode() : name( 0 ), next( 0 ) {};
+ParseNode::ParseNode( const string *name_ ) : name( name_ ), next( 0 ) {}
 
-ParseNode *ParseNode::set_name( string _name ) {
-	name = _name;
-	return this;
-}
-
-ParseNode *ParseNode::set_name( string *_name ) {
-	name = *_name; // deep copy
-	delete _name;
-
-	return this;
-}
-
-ParseNode::~ParseNode( void ) {
+ParseNode::~ParseNode() {
 	delete next;
 };
 
-string ParseNode::get_name( void ) {
-	return name;
-}
-
-ParseNode *ParseNode::get_link( void ) const {
+ParseNode *ParseNode::get_link() const {
 	return next;
 }
 
-ParseNode *ParseNode::get_last(void) {
+ParseNode *ParseNode::get_last() {
 	ParseNode *current = this;
 
@@ -56,17 +40,13 @@
 }
 
-ParseNode *ParseNode::set_link( ParseNode *_next ) {
+ParseNode *ParseNode::set_link( ParseNode *next_ ) {
 	ParseNode *follow;
 
-	if ( _next == 0 ) return this;
+	if ( next_ == 0 ) return this;
 
 	for ( follow = this; follow->next != 0; follow = follow->next );
-	follow->next = _next;
+	follow->next = next_;
 
 	return this;
-}
-
-const string ParseNode::get_name( void ) const {
-	return name;
 }
 
@@ -79,5 +59,5 @@
 	if ( next ) {
 		next->printList( os, indent );
-	}
+	} // if
 }
 
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/ParseNode.h	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 13:30:24 2015
-// Update Count     : 3
+// Last Modified On : Sat Jun  6 23:35:33 2015
+// Update Count     : 60
 //
 
@@ -22,4 +22,5 @@
 
 #include "utility.h"
+#include "SynTree/Type.h"
 #include "SynTree/Declaration.h"
 #include "UniqueName.h"
@@ -36,15 +37,10 @@
 class ParseNode {
   public:
-	ParseNode( void );
-	ParseNode ( std::string );
-	virtual ~ParseNode( void );
-
-	ParseNode *set_name ( std::string ) ;
-	ParseNode *set_name ( std::string * ) ;
-
-	std::string get_name( void );
-
-	ParseNode *get_link( void ) const;
-	ParseNode *get_last( void );
+	ParseNode();
+	ParseNode( const std::string * );
+	virtual ~ParseNode();
+
+	ParseNode *get_link() const;
+	ParseNode *get_last();
 	ParseNode *set_link( ParseNode * );
 	void set_next( ParseNode *newlink ) { next = newlink; }
@@ -52,5 +48,5 @@
 	virtual ParseNode *clone() const { return 0; };
 
-	const std::string get_name( void ) const;
+	const std::string &get_name() const { return *name; }
 	virtual void print( std::ostream &, int indent = 0 ) const;
 	virtual void printList( std::ostream &, int indent = 0 ) const;
@@ -58,5 +54,5 @@
 	ParseNode &operator,( ParseNode &);
   protected:
-	std::string name;
+	const std::string *name;
 	ParseNode *next;
 	static int indent_by;
@@ -68,5 +64,5 @@
   public:
 	ExpressionNode();
-	ExpressionNode( std::string * );
+	ExpressionNode( const std::string * );
 	ExpressionNode( const ExpressionNode &other );
 	virtual ~ExpressionNode() {} // cannot delete asArgName because it might be referenced elsewhere
@@ -77,5 +73,5 @@
 
 	ExpressionNode *get_argName() const { return argName; }
-	ExpressionNode *set_asArgName( std::string *aName );
+	ExpressionNode *set_asArgName( const std::string *aName );
 	ExpressionNode *set_asArgName( ExpressionNode *aDesignator );
 
@@ -109,26 +105,20 @@
 	};
 
-	ConstantNode( void );
-	ConstantNode( std::string * );
 	ConstantNode( Type, std::string * );
-	ConstantNode( const ConstantNode &other );
 
 	virtual ConstantNode *clone() const { return new ConstantNode( *this ); }
 
-	Type get_type( void ) const ;
+	Type get_type() const ;
 	virtual void print( std::ostream &, int indent = 0) const;
 	virtual void printOneLine( std::ostream &, int indent = 0) const;
 
-	std::string get_value() const { return value; }
-	ConstantNode *append( std::string *newValue );
+	const std::string &get_value() const { return value; }
+	ConstantNode *appendstr( const std::string *newValue );
 
 	Expression *build() const;
   private:
-	void classify( std::string &);
 	Type type;
-	std::string value;
-	bool sign;
-	short base;
-	int longs, size;
+	BasicType::Kind btype;
+	std::string &value;
 };
 
@@ -136,5 +126,5 @@
   public:
 	VarRefNode();
-	VarRefNode( std::string *, bool isLabel = false );
+	VarRefNode( const std::string *, bool isLabel = false );
 	VarRefNode( const VarRefNode &other );
 
@@ -143,6 +133,6 @@
 	virtual VarRefNode *clone() const { return new VarRefNode( *this ); }
 
-	virtual void print( std::ostream &, int indent = 0) const;
-	virtual void printOneLine( std::ostream &, int indent = 0) const;
+	virtual void print( std::ostream &, int indent = 0 ) const;
+	virtual void printOneLine( std::ostream &, int indent = 0 ) const;
   private:
 	bool isLabel;
@@ -183,6 +173,6 @@
 	virtual OperatorNode *clone() const { return new OperatorNode( *this ); }
 
-	Type get_type( void ) const;
-	std::string get_typename( void ) const;
+	Type get_type() const;
+	const char *get_typename() const;
 
 	virtual void print( std::ostream &, int indent = 0) const;
@@ -198,6 +188,6 @@
 class CompositeExprNode : public ExpressionNode {
   public:
-	CompositeExprNode( void );
-	CompositeExprNode( std::string * );
+	CompositeExprNode();
+	CompositeExprNode( const std::string * );
 	CompositeExprNode( ExpressionNode *f, ExpressionNode *args = 0 );
 	CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2 );
@@ -302,5 +292,5 @@
 	static DeclarationNode *newEnumConstant( std::string *name, ExpressionNode *constant );
 	static DeclarationNode *newName( std::string *);
-	static DeclarationNode *newFromTypeGen( std::string*, ExpressionNode *params );
+	static DeclarationNode *newFromTypeGen( std::string *, ExpressionNode *params );
 	static DeclarationNode *newTypeParam( TypeClass, std::string *);
 	static DeclarationNode *newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
@@ -313,6 +303,6 @@
 	static DeclarationNode *newTuple( DeclarationNode *members );
 	static DeclarationNode *newTypeof( ExpressionNode *expr );
-	static DeclarationNode *newAttr( std::string*, ExpressionNode *expr );
-	static DeclarationNode *newAttr( std::string*, DeclarationNode *type );
+	static DeclarationNode *newAttr( std::string *, ExpressionNode *expr );
+	static DeclarationNode *newAttr( std::string *, DeclarationNode *type );
 
 	DeclarationNode *addQualifiers( DeclarationNode *);
@@ -380,6 +370,6 @@
 	};
 
-	StatementNode( void );
-	StatementNode( std::string );
+	StatementNode();
+	StatementNode( const std::string * );
 	StatementNode( Type, ExpressionNode *e = 0, StatementNode *s = 0 );
 	StatementNode( Type, std::string *target );
@@ -387,7 +377,7 @@
 
 
-	~StatementNode( void );
-
-	static StatementNode  *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
+	~StatementNode();
+
+	static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
 
 	void set_control( ExpressionNode * );
@@ -396,7 +386,7 @@
 	ExpressionNode *get_control() const ;
 	StatementNode *get_block() const;
-	StatementNode::Type get_type( void ) const;
-
-	StatementNode *add_label( std::string * );
+	StatementNode::Type get_type() const;
+
+	StatementNode *add_label( const std::string * );
 	std::list<std::string> *get_labels() const;
 
@@ -429,6 +419,6 @@
 class CompoundStmtNode : public StatementNode {
   public:
-	CompoundStmtNode( void );
-	CompoundStmtNode( std::string * );
+	CompoundStmtNode();
+	CompoundStmtNode( const std::string * );
 	CompoundStmtNode( StatementNode * );
 	~CompoundStmtNode();
@@ -499,7 +489,7 @@
 
 // in DeclarationNode.cc
-void buildList( const DeclarationNode *firstNode, std::list< Declaration *> &outputList );
+void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList );
 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList );
-void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList );
+void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList );
 
 // in ExpressionNode.cc
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/StatementNode.cc	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jun  5 07:43:40 2015
-// Update Count     : 10
+// Last Modified On : Sat Jun  6 23:25:41 2015
+// Update Count     : 19
 //
 
@@ -36,5 +36,5 @@
 StatementNode::StatementNode() : ParseNode(), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
 
-StatementNode::StatementNode( string name_) : ParseNode( name_), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
+StatementNode::StatementNode( const string *name_ ) : ParseNode( name_ ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
 
 StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), isCatchRest ( false ) {
@@ -67,5 +67,5 @@
 
 StatementNode::StatementNode( Type t, string *_target ) :
-		type( t ), control( 0 ), block( 0 ),   labels( 0 ), target(_target ), decl( 0 ), isCatchRest ( false ) {}
+		type( t ), control( 0 ), block( 0 ), labels( 0 ), target(_target ), decl( 0 ), isCatchRest ( false ) {}
 
 StatementNode::~StatementNode() {
@@ -125,5 +125,5 @@
 }
 
-StatementNode *StatementNode::add_label( std::string *l ) {
+StatementNode *StatementNode::add_label( const std::string *l ) {
 	if ( l != 0 ) {
 		if ( labels == 0 )
@@ -346,11 +346,9 @@
 }
 
-CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {
-}
-
-CompoundStmtNode::CompoundStmtNode( string *name_) : StatementNode(*name_), first( 0 ), last( 0 ) {
-}
-
-CompoundStmtNode::CompoundStmtNode( StatementNode *stmt ): first( stmt ) {
+CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {}
+
+CompoundStmtNode::CompoundStmtNode( const string *name_ ) : StatementNode( name_ ), first( 0 ), last( 0 ) {}
+
+CompoundStmtNode::CompoundStmtNode( StatementNode *stmt ) : first( stmt ) {
 	if ( first ) {
 		last = ( StatementNode *)( stmt->get_last());
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/TypeData.cc	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 15:17:56 2015
-// Update Count     : 4
+// Last Modified On : Sat Jun  6 12:26:02 2015
+// Update Count     : 8
 //
 
@@ -691,5 +691,5 @@
 			} else {
 				switch ( ret ) {
-				  case BasicType::LongLongSignedInt:	// PAB
+				  case BasicType::LongLongSignedInt:
 					ret = BasicType::LongLongUnsignedInt;
 					break;
@@ -716,5 +716,5 @@
 			} else {
 				switch ( ret ) {
-				  case BasicType::LongLongSignedInt:	// PAB
+				  case BasicType::LongLongSignedInt:
 					ret = BasicType::LongLongUnsignedInt;
 					break;
Index: src/Parser/lex.cc
===================================================================
--- src/Parser/lex.cc	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/lex.cc	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -382,6 +382,6 @@
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 170
-#define YY_END_OF_BUFFER 171
+#define YY_NUM_RULES 171
+#define YY_END_OF_BUFFER 172
 /* This struct is not used in this scanner,
    but its presence is necessary. */
@@ -391,97 +391,97 @@
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[822] =
+static yyconst flex_int16_t yy_accept[826] =
     {   0,
         0,    0,    0,    0,    0,    0,  108,  108,  111,  111,
-      171,  169,    7,    9,    8,  130,  110,   95,  135,  138,
-      107,  117,  118,  133,  131,  121,  132,  124,  134,  100,
-      101,  102,  122,  123,  140,  142,  141,  143,  169,   95,
-      115,  169,  116,  136,   95,   97,   95,   95,   95,   95,
+      172,  170,    7,    9,    8,  131,  110,   95,  136,  139,
+      107,  118,  119,  134,  132,  122,  133,  125,  135,  100,
+      101,  102,  123,  124,  141,  143,  142,  144,  170,   95,
+      116,  170,  117,  137,   95,   97,   95,   95,   95,   95,
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,  119,  139,  120,  137,    7,  169,    4,    4,  170,
-       98,  170,   99,  108,  109,  114,  111,  112,    7,    9,
-        0,    8,  147,  165,   95,    0,  159,  129,  152,  160,
-      157,  144,  155,  145,  156,  154,    0,  105,    3,    0,
-
-      158,  105,  103,    0,    0,  103,  103,    0,    0,  103,
-      102,  102,  102,    0,  102,  127,  128,  126,  148,  150,
-      146,  151,  149,    0,    0,    0,    0,    0,    0,    0,
+       95,  120,  140,  121,  138,    7,  170,    4,    4,  171,
+       98,  171,   99,  108,  109,  115,  111,  112,    7,    9,
+        0,    8,  148,  166,   95,    0,  160,  130,  153,  161,
+      158,  145,  156,  146,  157,  155,    0,  105,    3,    0,
+
+      159,  105,  103,    0,    0,  103,  103,    0,    0,  103,
+      102,  102,  102,    0,  102,  128,  129,  127,  149,  151,
+      147,  152,  150,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
-      110,  107,   95,    0,    0,  162,   95,   95,   95,   95,
+      110,  107,   95,    0,    0,  163,   95,   95,   95,   95,
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
        95,   95,   36,   95,   95,   95,   95,   95,   95,   95,
        95,   95,   95,   53,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,  161,  153,
-        7,    0,    0,    0,    2,    0,    5,   98,    0,    0,
-
-        0,  108,  113,  113,    0,    0,    0,  111,    0,    0,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,  162,
+      154,    7,    0,    0,    0,    2,    0,    5,   98,    0,
+
+        0,    0,  108,    0,  114,  113,  113,    0,    0,    0,
+      111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  126,  105,    0,  105,
+        0,    0,    6,    0,  103,    0,    0,    0,  105,    0,
+      103,  103,  103,  103,    0,  104,    0,    0,  102,  102,
+      102,  102,    0,  164,  165,    0,  168,  167,    0,    0,
+        0,   96,    0,    0,    0,    0,    0,    0,    0,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   14,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+
+       95,   95,   95,   95,   95,   47,   95,   95,   95,   60,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   82,   95,   95,   95,   95,   95,   95,   95,
+        0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
+        0,    0,    0,    0,  113,    0,    0,  169,    0,    0,
+        0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
+      105,    0,  103,  103,    0,    0,  104,  104,    0,  104,
+        0,  104,  102,  102,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+
+       95,   95,   95,   95,   95,   95,   20,   95,   23,   95,
+       25,   95,   95,   95,   95,   95,   95,   39,   40,   95,
+       95,   95,   95,   95,   95,   95,   52,   95,   63,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       83,   95,   95,   90,   95,   95,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  125,  105,    0,  105,    0,    0,    6,
-        0,  103,    0,    0,    0,  105,    0,  103,  103,  103,
-      103,    0,  104,    0,    0,  102,  102,  102,  102,    0,
-      163,  164,    0,  167,  166,    0,    0,    0,   96,    0,
-        0,    0,    0,    0,    0,    0,   95,   95,   95,   95,
+      113,    0,    0,    0,    0,    0,  105,    0,    0,    0,
+        0,    0,    0,  104,  104,    0,  106,    0,  104,  104,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   95,   95,   21,   95,   95,   95,   95,
+
+       95,   95,   95,   15,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   22,   24,   95,
+       30,   95,   95,   95,   95,   38,   95,   95,   95,   45,
+       95,   95,   50,   95,   95,   95,   95,   95,   71,   95,
+       95,   95,   95,   95,   81,   95,   95,   88,   95,   95,
+       94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      106,    0,    0,  104,  106,  106,    0,  104,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   95,    0,
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   14,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-
-       95,   95,   47,   95,   95,   95,   60,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   82,
-       95,   95,   95,   95,   95,   95,    0,    0,    0,    0,
-        0,    0,    0,    0,  113,    0,    0,    0,    0,    0,
-      113,    0,    0,  168,    0,    0,    0,    0,    0,    0,
-        0,    0,  105,    0,    0,    0,  105,    0,  103,  103,
-        0,    0,  104,  104,    0,  104,    0,  104,  102,  102,
+
+       95,   95,   95,   95,   95,   55,   95,   95,   95,   95,
+       95,   95,   95,   26,   95,   95,   95,   37,   42,   95,
+       95,   48,   95,   57,   64,   95,   95,   70,   72,   75,
+       76,   78,   79,   95,   85,   95,   95,    0,    1,    0,
+        0,    0,    0,    0,    0,   98,    0,    0,    0,  113,
+        0,    0,    0,    0,  106,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   95,   95,   17,   95,   95,
+       95,   95,   95,   95,   95,   16,   95,   95,   31,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   33,
+       95,   35,   95,   44,   49,   95,   95,   84,   95,   95,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-
-       95,   95,   20,   95,   23,   95,   25,   95,   95,   95,
-       95,   95,   95,   39,   40,   95,   95,   95,   95,   95,
-       95,   95,   52,   95,   63,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   83,   95,   95,   90,
-       95,   95,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  113,    0,    0,    0,
-        0,    0,  105,    0,    0,    0,    0,    0,    0,  104,
-      104,    0,  106,    0,  104,  104,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
-       95,   21,   95,   95,   95,   95,   95,   95,   95,   15,
-
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   22,   24,   95,   30,   95,   95,   95,
-       95,   38,   95,   95,   95,   45,   95,   95,   50,   95,
-       95,   95,   95,   95,   71,   95,   95,   95,   95,   95,
-       81,   95,   95,   88,   95,   95,   94,    0,    0,    0,
+        0,    0,    0,   10,   11,   27,   51,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   56,   58,   61,
+       95,   95,   73,   86,   95,   34,   43,   66,   67,   89,
+       91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   95,   65,   95,   95,   12,   95,   28,
+       32,   95,   95,   95,   62,   95,   95,   95,   95,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  106,    0,    0,  104,
-      106,  106,    0,  104,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   95,    0,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-
-       95,   55,   95,   95,   95,   95,   95,   95,   95,   26,
-       95,   95,   95,   37,   42,   95,   95,   48,   95,   57,
-       64,   95,   95,   70,   72,   75,   76,   78,   79,   95,
-       85,   95,   95,    0,    1,    0,    0,    0,    0,    0,
-        0,   98,    0,    0,    0,  113,    0,    0,    0,    0,
-      106,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   95,   95,   17,   95,   95,   95,   95,   95,   95,
-       95,   16,   95,   95,   31,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   33,   95,   35,   95,   44,
-       49,   95,   95,   84,   95,   95,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
-       11,   27,   51,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   56,   58,   61,   95,   95,   73,   86,
-       95,   34,   43,   66,   67,   89,   91,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
-       65,   95,   95,   12,   95,   28,   32,   95,   95,   95,
-       62,   95,   95,   95,   95,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   54,   95,
-       95,   95,   95,   95,   95,   46,   59,   68,   74,   87,
-       92,    0,    0,    0,    0,    0,    0,    0,    0,   95,
-
-       95,   13,   18,   29,   95,   95,   95,    0,    0,   95,
-       95,   95,   95,   69,   93,   95,   80,   19,   41,   77,
-        0
+        0,    0,   54,   95,   95,   95,   95,   95,   95,   46,
+       59,   68,   74,   87,   92,    0,    0,    0,    0,    0,
+
+        0,    0,    0,   95,   95,   13,   18,   29,   95,   95,
+       95,    0,    0,   95,   95,   95,   95,   69,   93,   95,
+       80,   19,   41,   77,    0
     } ;
 
@@ -522,242 +522,242 @@
         1,    1,    2,    1,    1,    1,    1,    1,    3,    1,
         4,    1,    1,    5,    1,    1,    1,    1,    1,    1,
-        6,    1,    7,    7,    7,    7,    8,    8,    1,    1,
-        1,    1,    1,    9,    1,   10,   10,   10,   10,   10,
-       10,    4,    4,   11,    4,   12,    4,    4,   13,    4,
-        1,   14,    1,    1,   15,    1,   16,   16,   10,   10,
-       16,   16,    4,    4,    4,    4,   11,    4,   17,    4,
-       12,   17,    4,   17,   13,   17,    4,   17,    4,    4,
+        6,    1,    7,    7,    7,    7,    7,    7,    1,    1,
+        1,    1,    1,    1,    1,    8,    8,    8,    8,    8,
+        8,    4,    4,    9,    4,   10,    4,    4,    9,    4,
+        1,   11,    1,    1,   12,    1,    8,    8,    8,    8,
+        8,    8,    4,    4,    4,    4,    9,    4,    4,    4,
+       10,    4,    4,    4,    9,    4,    4,    4,    4,    4,
         1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[996] =
+static yyconst flex_int16_t yy_base[999] =
     {   0,
-        0,   83, 2185, 2183,   93,    0,  175,  176,  177,  178,
-     2195, 3520,  189, 3520,  195,   54, 3520, 2142,   59,  171,
-     3520, 3520, 3520,   55,  186, 3520,  189,  187,  202,  214,
-      272,    0, 2160, 3520,  214, 2160,  150,  340, 2138,  222,
-     3520,  157, 3520, 2154,  277, 3520,  192,  133,  196,  198,
-      204,  271,  155,  218,  181,  200,  266,  238,  210,  224,
-      282, 3520,  223, 3520, 2151,  372,  361, 3520, 2162, 3520,
-     2131,  229, 3520,    0, 3520,  374,    0, 3520,  399, 3520,
-      405,  411, 3520,  445, 2130,  234, 3520, 3520, 3520, 3520,
-     3520, 2146, 3520, 2141, 3520, 3520, 2153,  505, 3520, 2170,
-
-     3520,  550,  401,  414,  462,  262,  240,  280,  443,  380,
-        0,  305,  241,  335,  399, 3520, 3520, 3520, 2140, 3520,
-     3520, 3520, 2138, 2134,  215,  310, 2149,  327,  333,  349,
-      361,  399,  400,  411, 2130,  427, 2080,  436, 2110,  317,
-     3520, 3520,  483, 2105, 2100, 3520,  439,  376,  431,  420,
-      368,  432,  421,  448,  557,  442,  451,  453,  463,  452,
-      455,  398,  251,  459,  466,  344,  467,  456,  474,  464,
-      298,  468,  488, 2102,  490,  492,  496,  506,  498,  502,
-      499,  518,  529,  507,  532,  533,  535,  543, 3520, 3520,
-      632,  625, 2150,  638, 3520,  665, 3520, 2100,  514, 2095,
-
-     2091,    0, 3520,  631, 2090, 2089, 2088,    0, 2110,  565,
-      581,  589,  626,  639,  643,  647,  648,  651, 2106,  662,
-      663, 2080, 2079, 3520,  675,  686, 3520, 2078, 2129, 3520,
-      677,    0,  571,  700,  722,  739,  750,  571, 3520, 2086,
-     2059,    0,  738, 2104,  772,  594, 3520, 2080, 2056,  791,
-     3520, 3520, 2088, 3520, 3520,  673,  688, 2067, 2063,  659,
-     2059, 2058, 2057,    0, 2055,    0,  691,  555,  681,  536,
-      541,  700,  717,  701,  719,  755,  702,  708,  736,  752,
-      733,  750,  727,  729,  760, 2053,  771,  774,  772,  773,
-      782,  783,  784,  785,  618,  788,  786,  787,  791,  793,
-
-      792,  799,  809,  796,  798,  810, 2052,  811,  812,  813,
-      817,  818,  820,  819,  821,  824,  825,  828,  829, 2051,
-      833,  834,  832,  835,  844,  838,  904,  726, 2047, 2045,
-     2040,    0, 2039,    0,  891,  895, 2038,    0, 2037,    0,
-     2035,    0, 2011, 3520,  876,  890, 1989, 1986,    0, 1983,
-        0,  902,  908,  930,  914,  953,  959,  965, 3520, 3520,
-      952,  958,  973,  922, 1027,  845, 1012,  898, 3520, 3520,
-     1982, 1981, 1980,    0, 1979,    0, 1977,    0, 1972,    0,
-      899,  891,  893,  944,  949,  909,  950,  960,  964,  953,
-      978,  983,  991,  989,  972,  979,  997,  851,  871, 1010,
-
-     1013, 1014, 1974, 1020, 1973, 1016, 1972,  922, 1017, 1024,
-     1018, 1023, 1036, 1970, 1966, 1022, 1025, 1040, 1026, 1043,
-     1044, 1050, 1965, 1046, 1964, 1049, 1052, 1051, 1054, 1053,
-     1056, 1060, 1057, 1061, 1062, 1066, 1076, 1079, 1077, 1963,
-     1067, 1081, 1129, 1959,    0, 1957,    0, 1952,    0, 1951,
-        0, 1126, 1950,    0, 1949,    0, 1947, 1942, 1941,    0,
-     1940,    0, 1130, 1136, 1181, 1123, 1192, 1124, 1101, 1090,
-     3520, 1198, 1204, 1215, 1950, 1925, 1932, 1931,    0, 1930,
-        0, 1929,    0, 1927,    0, 1923,    0, 1922,    0, 1114,
-     1116, 1924, 1115, 1121, 1123, 1137, 1134, 1144, 1082,  500,
-
-     1162, 1185, 1192, 1083, 1194, 1124, 1148,  164, 1197, 1198,
-     1200, 1201, 1203, 1923, 1922, 1202, 1920, 1205, 1209, 1212,
-     1215, 1914, 1216, 1138, 1221, 1909, 1222, 1218, 1904, 1225,
-     1229, 1228, 1230, 1232, 1903, 1239, 1235, 1241, 1240, 1242,
-     1902, 1244, 1246, 1901, 1251, 1252, 1900, 1947, 1873,    0,
-     1872,    0, 1871,    0, 1870,    0, 1868,    0, 1863,    0,
-     1862,    0, 1861,    0, 1298, 1304, 1310, 1321, 1860, 3520,
-     1332, 3520, 1356, 3520, 1858,    0, 1853,    0, 1852,    0,
-     1851,    0,    0,    0, 1853,    0, 1318, 1257, 1258, 1298,
-     1300, 1291, 1259, 1255, 1309,  912, 1333, 1319, 1288, 1322,
-
-     1290, 1337, 1338, 1343, 1341, 1344, 1349, 1350, 1351, 1851,
-     1352, 1353, 1357, 1846, 1845, 1360, 1354, 1844, 1361, 1843,
-     1841, 1363, 1362, 1836, 1835, 1834, 1833, 1831, 1826, 1365,
-     1825, 1377, 1367, 1873, 3520, 1820,    0, 1818,    0,    0,
-        0, 1816,    0,    0,    0, 3520,    0,    0,    0,    0,
-     1416, 1422, 1467, 1812,    0, 1811,    0,    0,    0,    0,
-     1810, 1383, 1399, 1811, 1384, 1400, 1401, 1402, 1412, 1413,
-     1385, 1806, 1417, 1418, 1421, 1428, 1448, 1430, 1435, 1454,
-     1447, 1445, 1451, 1436, 1452, 1805, 1453, 1804, 1434, 1803,
-     1801, 1455, 1456, 1796, 1460, 1463,    0,    0, 1792, 1791,
-
-     1790, 1788, 1508,    0, 1777, 1774, 1773, 1769, 1768, 1770,
-     1769, 1767, 1743, 1466, 1471, 1464, 1461, 1467, 1473, 1474,
-     1487, 1485, 1516, 1732, 1491, 1731, 1492, 1497, 1499, 1503,
-     1493, 1727, 1724, 1723, 1722, 1720, 1718, 1713, 1708, 1699,
-     1696, 1686, 1683, 1682, 1655, 1654, 1653, 1652, 1651, 1501,
-     1644, 1505, 1507, 1509, 1510, 1514, 1641, 1513, 1540, 1518,
-     1640, 1519, 1520, 1524, 1529, 1583, 1582, 1581, 1580, 1579,
-     1578, 1577, 1576, 1575, 1574, 1573, 1572, 1571, 1573, 1522,
-     1530, 1533, 1535, 1539, 1534, 1571, 1570, 1545, 1370, 1315,
-     1546, 1258, 1257, 1129, 1082,  984,  983,  982,  944, 1547,
-
-     1550,  916, 1554,  758, 1558, 1559, 1560,  677,  676, 1552,
-     1553, 1564, 1566,  635,  595, 1565,  544,  419,  236,  165,
-     3520, 1639, 1656, 1673, 1687, 1701, 1718, 1732, 1749, 1764,
-     1781, 1798, 1810, 1823, 1834, 1844, 1854, 1864, 1874, 1884,
-     1894, 1904, 1914, 1930, 1941, 1952, 1963, 1973, 1983, 1993,
-     2003, 2013, 2023, 2036, 2053, 2070, 2081, 2091, 2101, 2111,
-     2121, 2131, 2141, 2151, 2161, 2171, 2181, 2191, 2201, 2211,
-     2221, 2231, 2241, 2251, 2262, 2272, 2282, 2292, 2302, 2312,
-     2322, 2332, 2342, 2352, 2362, 2375, 2392, 2403, 2413, 2423,
-     2433, 2443, 2453, 2463, 2473, 2483, 2493, 2503, 2513, 2523,
-
-     2533, 2543, 2553, 2563, 2573, 2583, 2593, 2603, 2613, 2623,
-     2633, 2643, 2653, 2663, 2673, 2683, 2693, 2703, 2716, 2733,
-     2744, 2754, 2764, 2774, 2784, 2794, 2804, 2814, 2824, 2834,
-     2844, 2854, 2864, 2874, 2884, 2894, 2904, 2914, 2924, 2934,
-     2944, 2954, 2964, 2974, 2984, 2994, 3004, 3017, 3028, 3044,
-     3055, 3065, 3075, 3085, 3095, 3105, 3118, 3129, 3139, 3149,
-     3159, 3169, 3179, 3189, 3199, 3209, 3219, 3229, 3239, 3249,
-     3259, 3269, 3282, 3293, 3303, 3313, 3323, 3333, 3343, 3353,
-     3363, 3373, 3383, 3393, 3403, 3413, 3423, 3433, 3443, 3453,
-     3463, 3473, 3483, 3493, 3503
+        0,   83, 2266, 2265,   93,    0,  175,  176,  177,  178,
+     2281, 2568,  189, 2568,  195,   54, 2568, 2223,   59,  171,
+     2568, 2568, 2568,   55,  186, 2568,  189,  187,  202,  214,
+      272,    0, 2241, 2568,  214, 2241,  150,  340, 2215,  222,
+     2568,  157, 2568, 2234,  277, 2568,  192,  133,  196,  198,
+      204,  271,  155,  218,  181,  200,  266,  238,  337,  224,
+      227, 2568,  223, 2568, 2231,  372,  400, 2568, 2237, 2568,
+     2206,  213, 2568,    0, 2568,  427,    0, 2568,  363, 2568,
+      381,  393, 2568,  498, 2205,  229, 2568, 2568, 2568, 2568,
+     2568, 2217, 2568, 2216, 2568, 2568, 2228,  558, 2568, 2240,
+
+     2568,  603,  385,  443,  419,  259,  239,  280,  399,  406,
+        0,  305,  240,  335,  411, 2568, 2568, 2568, 2210, 2568,
+     2568, 2568, 2209, 2188,  215,  277, 2203,  310,  383,  384,
+      327,  425,  380,  399, 2180,  448, 2130,  458, 2160,  288,
+     2568, 2568,  486, 2151, 2150, 2568,  420,  423,  439,  456,
+      445,  455,  460,  329,  483,  469,  462,  467,  480,  494,
+      396,  471,  472,  487,  470,  513,  489,  506,  508,  509,
+      386,  510,  516, 2152,  520,  522,  518,  541,  526,  543,
+      540,  551,  549,  553,  565,  598,  572,  581,  557, 2568,
+     2568,  669,  659, 2195,  686, 2568,  692, 2568, 2145,  559,
+
+     2141, 2135,    0,  649, 2568, 2568,  679, 2134, 2133, 2127,
+        0, 2149,  535,  606,  607,  674,  635,  625,  646,  664,
+      689, 2146,  692,  693, 2119, 2118, 2568,  712,  723, 2568,
+     2117, 2165, 2568,  714,    0,  555,  705,  759,  765,  776,
+      593, 2568, 2123, 2099,    0,  784, 2141,  787,  632, 2568,
+     2116, 2087,  798, 2568, 2568, 2119, 2568, 2568,  710,  725,
+     2099, 2094,  720, 2090, 2089, 2085,    0, 2084,    0,  712,
+      548,  710,  766,  767,  597,  745,  711,  777,  764,  788,
+      720,  783,  792,  713,  639,  789,  611,  793, 2086,  794,
+      791,  795,  810,  800,  805,  813,  814,  361,  818,  815,
+
+      816,  821,  825,  822,  826,  828,  829,  836,  838, 2080,
+      841,  842,  843,  839,  844,  845,  846,  849,  847,  853,
+      855,  860, 2079,  859,  905,  864,  866,  872,  870,  871,
+      933,  930, 2075, 2069, 2068,    0, 2067,    0,  920,  924,
+     2061,    0, 2060,    0, 2059,    0, 2074, 2568,  919,  920,
+     2054, 2051,    0, 2045,    0,  935,  941,  953,  963,  974,
+      986,  996, 2568, 2568,  960,  961, 1013,  989, 1047,  926,
+     1045,  968, 2568, 2568, 2044, 2043, 2037,    0, 2036,    0,
+     2035,    0, 2014,    0,  874,  873,  987,  903,  931,  932,
+      984,  920,  994,  995,  974,  976, 1009, 1024, 1017,  992,
+
+     1029, 1027,  952, 1030, 1034, 1040, 2016, 1031, 2011, 1047,
+     2010, 1049, 1043, 1054, 1038, 1056, 1057, 2009, 2003, 1052,
+     1058, 1062, 1069, 1073, 1074, 1075, 2002, 1076, 2001, 1078,
+     1079, 1082, 1083, 1085, 1081, 1086, 1092, 1089, 1099,  583,
+     1108, 1095, 1087, 1995, 1097, 1109, 1160, 1991,    0, 1990,
+        0, 1984,    0, 1983,    0, 1149, 1982,    0, 1978,    0,
+     1977, 1976, 1972,    0, 1971,    0, 1156, 1162, 1207, 1121,
+     1218, 1149, 1120, 1144, 2568, 1224, 1230, 1241, 1981, 1954,
+     1959, 1957,    0, 1953,    0, 1951,    0, 1945,    0, 1944,
+        0, 1943,    0, 1125, 1144, 1940, 1146, 1149, 1147, 1153,
+
+     1150, 1218, 1162, 1110, 1156, 1155, 1164, 1211, 1224, 1225,
+     1226,  164, 1228, 1208, 1170, 1232, 1238, 1939, 1938, 1235,
+     1932, 1227, 1231, 1234, 1242, 1931, 1246, 1247, 1250, 1930,
+     1252, 1255, 1924, 1257, 1261, 1254, 1256, 1258, 1923, 1264,
+      709, 1271, 1262, 1268, 1922, 1273, 1277, 1916, 1274, 1279,
+     1915, 1963, 1905,    0, 1904,    0, 1903,    0, 1897,    0,
+     1896,    0, 1895,    0, 1891,    0, 1890,    0, 1322, 1328,
+     1334, 1345, 1889, 2568, 1356, 2568, 1380, 2568, 1885,    0,
+     1884,    0, 1883,    0, 1850,    0,    0,    0, 1852,    0,
+     1342, 1281, 1315, 1322, 1333, 1289, 1283, 1338, 1340, 1336,
+
+     1361, 1343, 1341, 1362, 1364, 1365, 1367, 1397, 1373, 1314,
+     1376, 1375, 1377, 1847, 1378, 1380, 1382, 1846, 1845, 1381,
+     1387, 1839, 1389, 1838, 1837, 1396, 1391, 1833, 1832, 1831,
+     1827, 1826, 1825, 1392, 1818, 1407, 1394, 1846, 2568, 1793,
+        0, 1792,    0,    0,    0, 1791,    0,    0,    0, 2568,
+        0,    0,    0,    0, 1446, 1452, 1497, 1787,    0, 1786,
+        0,    0,    0,    0, 1782, 1408, 1430, 1784, 1410, 1432,
+     1437, 1411, 1412, 1443, 1433, 1783, 1447, 1445, 1457, 1413,
+     1476, 1463, 1450, 1477, 1475, 1474, 1480, 1479, 1481, 1779,
+     1482, 1778, 1483, 1777, 1773, 1464, 1485, 1772, 1490, 1486,
+
+        0,    0, 1768, 1764, 1763, 1762, 1537,    0, 1758, 1757,
+     1756, 1752, 1751, 1753, 1749, 1748, 1747, 1496, 1497, 1499,
+     1502, 1493, 1492, 1501, 1518, 1519, 1547, 1738, 1522, 1737,
+     1523, 1458, 1528, 1530, 1524, 1734, 1733, 1732, 1715, 1707,
+     1706, 1700, 1694, 1691, 1683, 1682, 1663, 1662, 1661, 1653,
+     1652, 1613, 1612, 1529, 1614, 1534, 1535, 1538, 1536, 1542,
+     1613, 1543, 1562, 1546, 1612, 1544, 1548, 1554, 1550, 1608,
+     1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1598, 1597,
+     1567, 1566, 1505, 1552, 1560, 1565, 1563, 1571, 1564, 1286,
+     1285, 1575, 1188, 1158, 1576, 1001,  997,  950,  901,  753,
+
+      752,  642,  556, 1577, 1580,  519, 1584,  475, 1588, 1589,
+     1590,  471,  407, 1582, 1583, 1594, 1596,  353,  298, 1595,
+      274,  234,  233,  165, 2568, 1669, 1681, 1693, 1702, 1711,
+     1723, 1732, 1744, 1756, 1768, 1775, 1784, 1790, 1796, 1802,
+     1808, 1814, 1820, 1826, 1832, 1838, 1850, 1856, 1859, 1866,
+     1868, 1874, 1880, 1886, 1888, 1894, 1899, 1911, 1923, 1929,
+     1935, 1941, 1947, 1949, 1955, 1957, 1963, 1965, 1971, 1973,
+     1979, 1981, 1987, 1989, 1995, 1997, 2003, 2010, 2016, 2022,
+     2028, 2034, 2036, 2042, 2044, 2050, 2052, 2058, 2063, 2075,
+     2081, 2087, 2089, 2095, 2097, 2103, 2105, 2111, 2113, 2119,
+
+     2121, 2127, 2129, 2135, 2141, 2143, 2149, 2151, 2157, 2163,
+     2169, 2171, 2177, 2179, 2185, 2187, 2193, 2195, 2201, 2203,
+     2209, 2214, 2226, 2232, 2238, 2240, 2246, 2248, 2254, 2256,
+     2262, 2264, 2270, 2272, 2278, 2280, 2286, 2288, 2294, 2296,
+     2302, 2308, 2310, 2316, 2318, 2324, 2326, 2332, 2334, 2336,
+     2341, 2347, 2355, 2361, 2367, 2369, 2375, 2377, 2379, 2384,
+     2390, 2392, 2394, 2396, 2398, 2400, 2402, 2404, 2410, 2412,
+     2418, 2420, 2422, 2424, 2426, 2435, 2441, 2443, 2445, 2451,
+     2457, 2463, 2465, 2471, 2477, 2483, 2489, 2495, 2501, 2507,
+     2513, 2519, 2525, 2531, 2537, 2543, 2549, 2555
 
     } ;
 
-static yyconst flex_int16_t yy_def[996] =
+static yyconst flex_int16_t yy_def[999] =
     {   0,
-      821,    1,  822,  822,  821,    5,  823,  823,  824,  824,
-      821,  821,  821,  821,  821,  821,  821,  825,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,   31,  821,  821,  821,  821,  821,  821,  826,  825,
-      821,  821,  821,  821,  825,  821,  825,  825,  825,  825,
+      825,    1,  826,  826,  825,    5,  827,  827,  828,  828,
+      825,  825,  825,  825,  825,  825,  825,  829,  825,  825,
       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
-      825,  821,  821,  821,  821,  821,  827,  821,  821,  821,
-      828,  821,  821,  829,  821,  830,  831,  821,  821,  821,
-      821,  821,  821,  821,  825,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  832,
-
-      821,  821,   30,  821,  821,  821,  821,  833,   30,  821,
-       31,  821,  821,   31,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  834,  821,
-      821,  821,  825,  835,  836,  821,  825,  825,  825,  825,
+      825,   31,  825,  825,  825,  825,  825,  825,  830,  829,
+      825,  825,  825,  825,  829,  825,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
+      829,  825,  825,  825,  825,  825,  831,  825,  825,  825,
+      832,  825,  825,  833,  825,  825,  834,  825,  825,  825,
+      825,  825,  825,  825,  829,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  835,
+
+      825,  825,   30,  825,  825,  825,  825,  836,   30,  825,
+       31,  825,  825,   31,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  837,  825,
+      825,  825,  829,  838,  839,  825,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  825,
+      825,  825,  831,  831,  831,  825,  831,  825,  832,  825,
+
+      840,  841,  833,  825,  825,  825,  825,  842,  843,  844,
+      834,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  845,  846,  825,  825,  825,  825,
+      228,  847,  825,  825,  103,  103,  825,  825,  825,  825,
+      825,  825,  825,  825,  848,  849,  850,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  837,  825,  851,  852,  853,  854,  855,  856,  857,
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+      858,  859,  860,  861,  862,  863,  864,  865,  825,  825,
+      866,  867,  868,  869,  870,  871,  825,  825,  825,  825,
+      825,  872,  873,  874,  875,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  876,  877,  878,  825,  825,  825,
+      878,  825,  825,  825,  879,  880,  881,  882,  883,  884,
+      885,  886,  887,  888,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  890,  891,  892,  893,
+      894,  895,  896,  897,  898,  825,  899,  900,  901,  902,
+      903,  903,  904,  905,  906,  907,  825,  825,  825,  908,
+      825,  908,  825,  825,  825,  825,  825,  825,  825,  825,
+      909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
+      919,  920,  921,  922,  922,  922,  922,  922,  922,  922,
+
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,  923,  924,  925,  926,  927,  928,  929,  930,  931,
+      932,  933,  934,  935,  936,  937,  938,  939,  825,  825,
+      825,  825,  940,  825,  825,  825,  825,  825,  941,  942,
+      943,  944,  945,  946,  947,  948,  949,  950,  951,  952,
+      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
+
+      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
+      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
+      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
+      951,  951,  951,  951,  951,  951,  951,  953,  825,  954,
+      955,  956,  957,  958,  959,  960,  961,  962,  963,  825,
+      964,  965,  966,  967,  825,  825,  825,  968,  969,  970,
+      971,  972,  973,  974,  975,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+
+      977,  978,  956,  979,  980,  981,  825,  982,  968,  970,
+      983,  984,  975,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  985,  986,  979,  987,  980,  988,  981,  989,  990,
+      983,  991,  984,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  992,
+      985,  993,  986,  994,  987,  995,  988,  996,  989,  997,
+      990,  991,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  998,  992,  993,  994,  995,
+
+      970,  996,  997,  976,  976,  976,  976,  976,  976,  976,
+      976,  998,  970,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,    0,  825,  825,  825,  825,  825,
       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
-      825,  825,  825,  825,  825,  825,  825,  825,  821,  821,
-      821,  827,  827,  827,  821,  827,  821,  828,  821,  837,
-
-      838,  829,  821,  821,  839,  840,  841,  831,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  842,  843,  821,  821,  821,  821,  225,  844,  821,
-      821,  103,  103,  821,  821,  821,  821,  821,  821,  821,
-      821,  845,  846,  847,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  834,  821,
-      848,  849,  850,  851,  852,  853,  854,  854,  854,  854,
-      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
-      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
-      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
-
-      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
-      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
-      854,  854,  854,  854,  854,  854,  855,  856,  857,  858,
-      859,  860,  861,  862,  821,  821,  863,  864,  865,  866,
-      867,  868,  821,  821,  821,  821,  821,  869,  870,  871,
-      872,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      873,  874,  875,  821,  821,  821,  875,  821,  821,  821,
-      876,  877,  878,  879,  880,  881,  882,  883,  884,  885,
-      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
-      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
-
-      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
-      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
-      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
-      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
-      886,  886,  887,  888,  889,  890,  891,  892,  893,  894,
-      895,  821,  896,  897,  898,  899,  900,  900,  901,  902,
-      903,  904,  821,  821,  821,  905,  821,  905,  821,  821,
-      821,  821,  821,  821,  821,  821,  906,  907,  908,  909,
-      910,  911,  912,  913,  914,  915,  916,  917,  918,  919,
-      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
-
-      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
-      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
-      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
-      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
-      919,  919,  919,  919,  919,  919,  919,  920,  921,  922,
-      923,  924,  925,  926,  927,  928,  929,  930,  931,  932,
-      933,  934,  935,  936,  821,  821,  821,  821,  937,  821,
-      821,  821,  821,  821,  938,  939,  940,  941,  942,  943,
-      944,  945,  946,  947,  948,  949,  948,  948,  948,  948,
-      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
-
-      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
-      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
-      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
-      948,  948,  948,  950,  821,  951,  952,  953,  954,  955,
-      956,  957,  958,  959,  960,  821,  961,  962,  963,  964,
-      821,  821,  821,  965,  966,  967,  968,  969,  970,  971,
-      972,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  974,  975,  953,  976,
-
-      977,  978,  821,  979,  965,  967,  980,  981,  972,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  982,  983,  976,
-      984,  977,  985,  978,  986,  987,  980,  988,  981,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  989,  982,  990,  983,  991,
-      984,  992,  985,  993,  986,  994,  987,  988,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  995,  989,  990,  991,  992,  967,  993,  994,  973,
-
-      973,  973,  973,  973,  973,  973,  973,  995,  967,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-        0,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825
 
     } ;
 
-static yyconst flex_int16_t yy_nxt[3605] =
+static yyconst flex_int16_t yy_nxt[2653] =
     {   0,
        12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
@@ -765,5 +765,5 @@
        28,   29,   30,   31,   32,   32,   32,   32,   33,   34,
        35,   36,   37,   38,   39,   18,   18,   18,   18,   18,
-       18,   18,   18,   40,   18,   18,   18,   18,   18,   18,
+       18,   18,   18,   40,   18,   18,   18,   18,   40,   18,
        41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
        51,   52,   53,   18,   54,   18,   55,   18,   18,   18,
@@ -780,5 +780,5 @@
        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
        71,   71,   71,   70,   70,   70,   70,   75,   75,   78,
-       78,  122,  123,   89,   86,   78,   78,  604,   75,   75,
+       78,  122,  123,   89,   86,   78,   78,  608,   75,   75,
        79,   80,   81,   81,   81,   79,   81,   80,   82,   82,
 
@@ -787,378 +787,273 @@
        95,   96,   84,  100,  173,  117,   76,   76,   76,   76,
       141,  145,   86,  101,  102,  142,  103,  103,  103,  103,
-      104,  104,  118,   86,  119,  120,  253,   86,  254,   86,
-      176,   86,  159,  105,  189,   86,  177,  106,  162,  160,
-      178,   86,  107,  108,  156,  161,  157,  163,  109,   86,
-      165,  164,  166,   86,  105,   86,  143,  200,  186,  174,
-      110,  167,  222,  240,  248,  141,  175,   86,  107,   86,
-      142,  108,  102,  187,  111,  111,  111,  111,  111,  111,
-
-      242,  183,   86,  201,  190,  238,  241,  249,  223,  184,
-      239,  105,  147,  148,  149,  112,  185,   86,  150,  151,
-      113,  152,   86,  153,  154,  295,  114,  168,   86,  179,
-      180,  155,  105,   86,  244,  169,  239,  170,  115,  181,
-      171,  253,  182,  254,  172,  188,  113,  124,  246,   86,
-      255,  125,  126,  247,  127,  821,  128,  129,  253,  130,
-      254,  131,  194,  195,  253,  261,  254,  194,  255,  303,
-      132,  133,  134,  191,   80,   81,   81,   81,  191,  247,
-      253,  192,  254,  196,  196,  196,  196,  196,  196,  250,
-      135,  262,  253,  136,  254,   86,  204,  204,  204,  204,
-
-       79,   80,   81,   81,   81,   79,   81,   80,   81,   81,
-       81,   81,   81,   80,   82,   82,   82,   81,  298,   86,
-      137,  138,  205,  232,  232,  232,  232,   86,  239,  256,
-      253,  253,  254,  254,  102,  272,  104,  104,  104,  104,
-      104,  104,  253,  257,  254,  269,  238,  247,  206,   86,
-      821,  207,  209,  105,  239,  233,  210,  211,  253,  294,
-      254,  212,  213,  821,  214,  246,  215,  253,  234,  254,
-       86,   86,   86,  247,  105,  216,  217,  218,  821,  235,
-      271,  235,   86,   86,  236,  236,  236,  236,  236,  236,
-       86,  141,  821,   86,  274,  219,  142,  245,  220,   86,
-
-      270,  273,   86,   86,   86,  267,   86,   86,  291,  286,
-       86,  275,  268,  288,   86,   86,  237,   86,   86,   86,
-      821,  292,  300,  293,  287,   86,  221,  225,  225,  225,
-      225,  225,  225,  302,   86,  289,  290,  296,  297,   86,
-      299,   86,  301,   86,  226,  227,  304,   86,  227,   86,
-       86,   86,  309,   86,  596,  316,  306,   86,   86,  228,
-      308,  305,  329,  307,  314,  226,  227,  313,  310,   86,
-      317,  227,   98,   98,   98,   98,   98,   98,  311,  312,
-       86,  315,  318,   86,   86,  320,   86,   86,  330,  226,
-      227,  821,   86,  227,   86,   86,  343,  322,  344,  324,
-
-      319,  325,  321,  384,  231,  323,   86,  326,   86,  385,
-      226,  227,  343,  276,  344,  277,  227,  278,  279,  359,
-      343,  280,  344,  281,  382,  356,  194,  195,  282,  283,
-      284,  194,  285,  191,   80,   81,   81,   81,  191,  194,
-      195,  192,  369,  344,  194,  359,   86,  196,  196,  196,
-      196,  196,  196,  335,  335,  335,  335,  343,  344,  344,
-      196,  196,  196,  196,  196,  196,  327,  195,  369,   86,
-      343,  327,  344,  328,  343,  412,  344,  345,  343,  343,
-      344,  344,  343,  346,  344,  336,   86,  196,  196,  196,
-      196,  196,  196,  343,  343,  344,  344,  225,  225,  225,
-
-      225,  225,  225,  352,  253,  352,  254,  371,  353,  353,
-      353,  353,  353,  353,  226,  227,  226,  227,  227,  253,
-      227,  254,  104,  104,  104,  104,  104,  104,  195,  228,
-      821,  821,   86,  372,  193,  226,  227,  226,  227,  105,
-      354,  227,   86,  227,  236,  236,  236,  236,  236,  236,
-      383,   86,   86,   86,  245,  381,  386,  388,  362,   86,
-      105,  357,  357,  357,  357,  357,  357,  235,   86,  235,
-       86,  393,  236,  236,  236,  236,  236,  236,   86,  227,
-       86,  364,  227,  365,   86,  394,  366,   86,  387,  398,
-      389,  400,  367,  358,  104,  104,  104,  104,  104,  104,
-
-      227,   86,  395,   86,  368,  227,   86,  401,  365,   86,
-      399,   86,  366,  111,  111,  111,  111,  111,  111,  396,
-      397,  390,   86,   86,   86,   86,  245,  391,  392,  402,
-      404,  406,  405,   86,   86,   86,   86,   86,   86,   86,
-      403,  411,   86,   86,   86,  250,  414,   86,  418,   86,
-       86,  416,  408,  407,  415,  419,  409,  410,  413,  417,
-       86,   86,   86,   86,   86,  420,  422,  423,   86,   86,
-       86,   86,   86,  425,  424,   86,   86,  427,  426,   86,
-       86,  432,  421,   86,   86,   86,   86,  431,  475,   86,
-      428,  430,  429,  437,  440,   86,  439,  433,  436,  434,
-
-      441,  435,   86,  438,  442,  327,  195,  343,  509,  344,
-      327,  476,  328,  203,  203,  203,  203,  335,  335,  335,
-      335,  343,   86,  344,  353,  353,  353,  353,  353,  353,
-      463,  463,  463,  463,  463,  463,  225,  225,  225,  225,
-      225,  225,   86,  510,   86,  452,  471,  352,  227,  352,
-       86,  227,  353,  353,  353,  353,  353,  353,  491,  492,
-       86,  490,  464,   86,  470,  470,  672,   86,  355,  227,
-      471,  495,  471,   86,  227,  232,  232,  232,  232,  104,
-      104,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  362,  516,   86,  471,  467,  821,  227,
-
-       86,   86,  227,  467,   86,  227,  468,  356,  227,  494,
-      496,   86,  469,  358,  493,   86,  364,  499,  365,  465,
-      227,  366,  467,   86,  498,  227,  227,  367,  467,   86,
-       86,  227,  821,  497,   86,  506,  821,  809,  821,  368,
-       86,  505,   86,  365,  472,  500,  472,  366,   86,  473,
-      473,  473,  473,  473,  473,  364,  501,  365,  502,  503,
-      366,   86,  504,  507,   86,   86,  477,   86,   86,   86,
-      508,   86,  511,   86,   86,   86,   86,   86,  368,  515,
-      513,  474,  365,  512,  518,  514,  366,   86,  519,  521,
-      517,   86,  520,  523,   86,   86,  522,   86,  524,  526,
-
-       86,   86,   86,   86,   86,   86,  525,   86,   86,  527,
-      529,   86,   86,   86,  530,  528,  536,   86,   86,  539,
-      540,  538,  533,  531,  532,  534,  535,   86,   86,  537,
-       86,  195,   86,   86,   86,  542,  821,  548,  570,  545,
-      546,  547,  541,  600,  595,  543,  467,  544,  203,  203,
-      203,  203,  463,  463,  463,  463,  463,  463,  463,  463,
-      463,  463,  463,  463,  570,   86,   86,   86,  467,  467,
-      227,  467,   86,  227,   86,   86,  227,  468,  569,  227,
-      588,  589,  587,  821,  464,   86,  602,  591,   86,   86,
-      565,  227,  590,  467,  467,   86,  227,  227,  593,   86,
-
-      594,  616,  227,  357,  357,  357,  357,  357,  357,  566,
-      592,  566,  603,   86,  567,  567,  567,  567,  567,  567,
-      473,  473,  473,  473,  473,  473,  571,  571,  571,  571,
-      571,  571,  472,  597,  472,  465,   86,  473,  473,  473,
-      473,  473,  473,   86,  572,   86,  568,  572,   86,   86,
-      601,   86,   86,   86,   86,  598,   86,  605,  573,  609,
-       86,  608,  610,   86,  599,  572,   86,   86,  607,   86,
-      572,  606,   86,   86,  619,  614,   86,  612,  613,   86,
-       86,   86,  611,   86,  615,  620,   86,  617,  618,  621,
-       86,   86,   86,   86,  623,   86,  626,   86,  625,  627,
-
-      624,  622,   86,   86,  630,  629,   86,  631,   86,   86,
-       86,  821,  808,  628,  670,  664,  633,  669,  665,  632,
-      463,  463,  463,  463,  463,  463,  567,  567,  567,  567,
-      567,  567,  651,  651,  651,  651,  651,  651,  566,   86,
-      566,   86,   86,  567,  567,  567,  567,  567,  567,   86,
-      572,   86,  565,  572,  571,  571,  571,  571,  571,  571,
-       86,  675,  666,  677,  652,  668,   86,  680,  667,   86,
-       86,  572,  572,   86,  662,  572,  572,  671,  571,  571,
-      571,  571,  571,  571,   86,  674,  573,  663,   86,   86,
-      676,  678,   86,  572,   86,   86,  572,  673,  572,  572,
-
-       86,   86,   86,   86,   86,   86,  679,  681,   86,  683,
-      653,   86,   86,   86,   86,  682,   86,  572,   86,  684,
-      693,   86,  572,  692,  685,  686,  694,  687,   86,  691,
-      688,  689,  690,  696,   86,   86,   86,  695,  651,  651,
-      651,  651,  651,  651,  651,  651,  651,  651,  651,  651,
-       86,   86,   86,   86,  718,  710,  572,  714,  713,  572,
-      711,  712,  572,   86,   86,  572,  716,  717,   86,   86,
-      652,  723,   86,  715,  719,  721,  703,  572,  720,   86,
-      726,   86,  572,  572,  724,   86,   86,   86,  572,  571,
-      571,  571,  571,  571,  571,  725,   86,  730,   86,   86,
-
-      722,  727,   86,   86,   86,   86,   86,   86,  733,  728,
-      729,   86,   86,  732,   86,   86,  731,   86,   86,  736,
-      752,  653,   86,  737,   86,   86,  734,  753,  754,  735,
-      651,  651,  651,  651,  651,  651,   86,  750,   86,  751,
-      759,  757,   86,   86,   86,  760,  761,  755,   86,  758,
-       86,  756,   86,  763,   86,  762,   86,  764,   86,  765,
-       86,   86,  703,  782,   86,   86,  786,   86,  784,   86,
-       86,   86,  787,   86,  789,   86,  781,  780,  790,  779,
-       86,   86,  785,  783,   86,   86,   86,  802,  801,  791,
-       86,   86,  788,  804,  800,  803,   86,   86,   86,  806,
-
-      807,   86,  805,   86,   86,   86,  811,  810,  812,   86,
-       86,   86,  813,  814,  815,   86,   86,   86,  818,  817,
-      819,   86,   86,  816,   86,  821,  821,  799,  821,  798,
-      821,  796,  821,  795,  821,  794,  821,  793,  820,   68,
+      104,  104,  118,   86,  119,  120,  256,   86,  257,   86,
+      176,   86,  159,  105,  190,   86,  177,  106,  162,  160,
+      178,  201,  107,  108,  156,  161,  157,  163,  109,   86,
+      165,  164,  166,   86,  105,   86,  143,  225,   86,  174,
+      110,  167,  243,  251,   86,   86,  175,  202,  107,   86,
+      189,  108,  102,  188,  111,  111,  111,  111,  111,  111,
+
+      245,  183,  241,  226,  191,  244,  252,  242,  256,  184,
+      257,  105,  147,  148,  149,  112,  185,   86,  150,  151,
+      113,  152,   86,  153,  154,   86,  114,  168,   86,  179,
+      180,  155,  105,  242,  247,  169,  264,  170,  115,  181,
+      171,  256,  182,  257,  172,  141,  113,  124,  249,   86,
+      142,  125,  126,  250,  127,  825,  128,  129,  256,  130,
+      257,  131,  265,  186,   79,   80,   81,   81,   81,   79,
+      132,  133,  134,  192,   80,   81,   81,   81,  192,  250,
+       86,  193,   81,   80,   81,   81,   81,   81,   86,  253,
+      135,  143,  278,  136,   81,   80,   82,   82,   82,   81,
+
+      258,  195,  196,  258,   86,  187,  195,  235,  235,  235,
+      235,  256,   86,  257,  256,  256,  257,  257,  416,  825,
+      137,  138,  197,  197,  197,  197,  197,  197,  204,  205,
+      256,  260,  257,  204,  825,  206,  238,   86,  238,  236,
+      206,  239,  239,  239,  239,  239,  239,   86,  825,  207,
+      207,  207,  207,  248,  242,  259,  256,  306,  257,  250,
+      206,  825,  825,  102,  296,  104,  104,  104,  104,  104,
+      104,   86,  241,  240,   86,  208,  825,  249,  206,  256,
+      242,  257,  105,  206,  206,  250,  270,  206,  206,  256,
+       86,  257,  272,  271,  141,  206,   86,  237,  206,  142,
+
+      206,  209,  206,  105,  210,  212,   86,   86,  273,  213,
+      214,   86,  275,   86,  215,  216,  274,  217,   86,  218,
+       86,   86,   86,   86,  276,  825,   86,  291,  219,  220,
+      221,   86,  297,  277,   86,  290,  289,   86,   86,  279,
+       86,  280,  300,  281,  282,   86,  298,  283,  222,  284,
+      294,  223,  292,  293,  285,  286,  287,   86,  288,   86,
+       86,   86,  302,  295,   86,  299,  347,   86,  348,   86,
+       86,   86,  303,   86,  312,  825,  304,   86,  305,  224,
+      228,  228,  228,  228,  228,  228,  309,  301,  307,  308,
+      311,   86,   86,  310,   86,  316,  319,  229,  230,   86,
+
+       86,  230,   86,  313,   86,  317,  141,  333,   86,  360,
+      825,  320,  231,  314,  315,  321,   86,  386,  229,  230,
+      322,  330,  318,   86,  230,   98,   98,   98,   98,   98,
+       98,  323,   86,  334,   86,  324,  326,  347,  347,  348,
+      348,  363,  229,  230,  327,  328,  230,  329,   86,   86,
+      204,  205,  325,  390,  348,  204,  347,  234,  348,  545,
+      195,  196,   86,  229,  230,  195,  347,  363,  348,  230,
+      192,   80,   81,   81,   81,  192,  349,  347,  193,  348,
+      373,  197,  197,  197,  197,  197,  197,  195,  196,  405,
+       86,  348,  195,  331,  196,  347,  825,  348,  331,  403,
+
+      332,  339,  339,  339,  339,  347,  373,  348,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      347,  350,  348,  347,  347,  348,  348,  104,  104,  104,
+      104,  104,  104,  340,  228,  228,  228,  228,  228,  228,
+      356,  256,  356,  257,  105,  357,  357,  357,  357,  357,
+      357,  229,  230,  229,  230,  230,  256,  230,  257,  248,
+       86,   86,   86,   86,   86,  105,  231,  392,  375,  402,
+      630,   86,  229,  230,  229,  230,  385,  358,  230,  387,
+      230,  239,  239,  239,  239,  239,  239,  361,  361,  361,
+      361,  361,  361,  238,  376,  238,   86,  398,  239,  239,
+
+      239,  239,  239,  239,  366,  230,  813,  825,  230,  104,
+      104,  104,  104,  104,  104,   86,  391,   86,   86,  362,
+      111,  111,  111,  111,  111,  111,  230,  368,   86,  369,
+      394,  230,  370,  388,   86,  389,  395,  396,  371,   86,
+       86,  248,   86,   86,   86,   86,   86,  408,  393,  399,
+      372,   86,  253,  404,  369,  409,   86,  397,  370,  400,
+      401,   86,  406,  407,   86,   86,   86,   86,  410,   86,
+      415,  411,   86,   86,  412,  418,   86,   86,  422,   86,
+       86,  420,  423,  419,  424,  413,  414,   86,  417,   86,
+       86,  421,   86,   86,   86,   86,   86,   86,   86,  426,
+
+       86,  425,  428,  429,   86,  427,   86,  431,  430,  436,
+       86,   86,  432,  141,  435,   86,  434,   86,  433,  441,
+      437,   86,   86,   86,   86,   86,  445,  438,  439,  440,
+      443,  444,  196,  442,  331,  196,  494,  446,  194,  331,
+      495,  332,  206,  206,  206,  206,  339,  339,  339,  339,
+      347,  347,  348,  348,   86,  825,   86,  357,  357,  357,
+      357,  357,  357,  467,  467,  467,  467,  467,  467,  479,
+      356,   86,  356,  497,  456,  357,  357,  357,  357,  357,
+      357,  230,   86,   86,  230,  228,  228,  228,  228,  228,
+      228,  498,  480,  501,  499,  468,  235,  235,  235,  235,
+
+      104,  104,  230,   86,  825,  471,  471,  230,  361,  361,
+      361,  361,  361,  361,  472,  473,  475,  359,  361,  361,
+      361,  361,  361,  361,  514,   86,  230,   86,  360,  230,
+      471,  471,  474,  366,  474,   86,  230,  475,   86,  230,
+      362,  504,  475,   86,  500,   86,   86,  230,  510,  505,
+      469,  825,  230,  496,  502,  812,  368,  230,  369,  503,
+       86,  370,  230,  475,  476,  825,  476,  371,   86,  477,
+      477,  477,  477,  477,  477,   86,  506,  507,   86,  372,
+       86,   86,   86,  369,  513,   86,  509,  370,  368,   86,
+      369,   86,  515,  370,   86,  511,  518,  508,   86,  481,
+
+       86,  478,  512,   86,  516,   86,  517,   86,   86,   86,
+      519,  372,  524,   86,  522,  369,  521,  526,  523,  370,
+       86,  520,  525,  527,   86,   86,   86,   86,  529,   86,
+       86,  528,   86,   86,   86,  533,   86,   86,   86,  531,
+       86,  540,  530,   86,  534,  532,   86,  543,   86,  549,
+       86,  536,  535,  537,  538,  541,  542,  544,  539,   86,
+       86,   86,  196,  548,  600,  471,  471,  546,  552,  551,
+      550,  206,  206,  206,  206,  472,   86,  547,  467,  467,
+      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
+      471,  471,  574,  591,  471,   86,  230,   86,   86,  230,
+
+       86,   86,  230,  573,   86,  230,   86,   86,  592,   86,
+      468,  595,  593,   86,  597,   86,  569,  230,  574,  471,
+      594,   86,  230,  230,  599,  602,  596,  601,  230,  361,
+      361,  361,  361,  361,  361,  570,  603,  570,  611,   86,
+      571,  571,  571,  571,  571,  571,  477,  477,  477,  477,
+      477,  477,  575,  575,  575,  575,  575,  575,  476,   86,
+      476,  469,   86,  477,  477,  477,  477,  477,  477,   86,
+      576,  604,  572,  576,  598,   86,   86,   86,   86,   86,
+      605,  610,   86,   86,  577,   86,   86,  606,  609,   86,
+      607,  576,  612,   86,  613,  614,  576,   86,   86,  616,
+
+      617,   86,  618,   86,  615,   86,   86,   86,   86,   86,
+      620,  623,   86,   86,  619,   86,  621,  624,  622,   86,
+      627,  625,   86,  629,   86,   86,  628,  626,   86,  631,
+       86,  633,   86,  634,   86,  632,   86,   86,  635,  668,
+       86,  673,  636,  637,  467,  467,  467,  467,  467,  467,
+      571,  571,  571,  571,  571,  571,  655,  655,  655,  655,
+      655,  655,  570,  672,  570,   86,   86,  571,  571,  571,
+      571,  571,  571,   86,  576,  669,  569,  576,  575,  575,
+      575,  575,  575,  575,   86,  686,  670,   86,  656,   86,
+      676,   86,   86,   86,   86,  576,  576,  674,  666,  576,
+
+      576,  671,  575,  575,  575,  575,  575,  575,  675,  678,
+      577,  667,   86,   86,  679,   86,   86,  576,   86,  682,
+      576,  684,  576,  576,   86,  677,   86,   86,   86,   86,
+      680,   86,   86,   86,  657,  683,  687,  681,   86,  685,
+       86,  576,   86,   86,  688,   86,  576,   86,   86,  697,
+      689,  690,  693,  698,  691,  692,  696,  695,   86,   86,
+      700,   86,   86,   86,   86,  694,  720,  699,  655,  655,
+      655,  655,  655,  655,  655,  655,  655,  655,  655,  655,
+      714,   86,  719,   86,   86,  726,  576,  716,   86,  576,
+      717,  715,  576,  718,   86,  576,   86,  721,   86,  727,
+
+      656,   86,  722,  730,  723,  724,  707,  576,   86,   86,
+      729,  725,  576,  576,   86,   86,  766,  728,  576,  575,
+      575,  575,  575,  575,  575,   86,   86,   86,   86,  731,
+       86,   86,   86,   86,   86,  738,   86,   86,  732,  733,
+      734,   86,  736,   86,   86,  735,  741,   86,   86,  740,
+       86,  657,   86,   86,  758,  756,   86,  737,  739,  655,
+      655,  655,  655,  655,  655,  755,  759,  754,  757,   86,
+       86,  763,  761,   86,   86,   86,  764,  765,  760,   86,
+       86,   86,  767,  762,  768,   86,   86,   86,  790,   86,
+      769,  707,  786,   86,   86,   86,  788,   86,   86,   86,
+
+      791,   86,  793,   86,  785,   86,  784,  783,  794,  787,
+      795,   86,  789,   86,   86,   86,   86,  792,  805,  806,
+      825,  825,   86,  807,  804,  808,   86,   86,   86,  810,
+      811,   86,  809,   86,   86,   86,  815,  814,  816,   86,
+       86,   86,  817,  818,  819,   86,   86,   86,  822,  821,
+      823,  803,  825,  820,  802,  825,  800,  825,  799,  825,
+      798,  825,  797,   86,   86,   86,  825,  782,  824,   68,
        68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   74,   74,   74,   74,
-       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       68,   74,   74,   74,   74,   74,   74,   74,   74,   74,
        74,   74,   74,   77,   77,   77,   77,   77,   77,   77,
-       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
-       85,   86,   86,   85,   85,   86,   85,   85,   85,   85,
-
-       85,   85,   85,   85,  139,  821,  778,  821,  777,  775,
-      139,  139,  139,  139,  139,  139,  139,  139,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  198,  821,  773,  198,  198,
-      821,  198,  198,  198,  198,  198,  198,  198,  198,  202,
-      771,  202,  202,  821,  202,  202,  202,  202,  202,  202,
-      202,  202,  769,  202,  202,  202,  203,  767,  203,   86,
-      203,   86,  203,   86,   86,   86,  203,  203,   86,  203,
-      203,  208,   86,   86,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,   86,  208,  208,  208,  229,  229,
-
-      229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
-      229,  229,  229,  229,  229,  243,  243,  243,   86,  243,
-       86,   86,  821,  749,  243,  243,  259,  747,  821,  259,
-      259,  821,  259,  259,  259,  259,  259,  259,  259,  259,
-      263,  263,  744,  263,  742,  740,  821,   86,  263,  263,
-      265,  265,   86,  265,   86,   86,   86,   86,  265,  265,
-      331,  331,   86,  331,  709,  706,  705,  199,  331,  331,
-      333,  333,  699,  333,  698,  635,   86,   86,  333,  333,
-      337,  337,   86,  337,   86,   86,   86,   86,  337,  337,
-      339,  339,   86,  339,   86,   86,   86,   86,  339,  339,
-
-      341,  341,   86,  341,   86,  660,  659,  657,  341,  341,
-      348,  348,  655,  348,  569,  650,  649,  647,  348,  348,
-      350,  350,  645,  350,  643,  641,  639,  637,  350,  350,
-      229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
-      229,  229,  229,  229,  229,  229,  229,  361,  361,  635,
-      361,   86,   86,   86,   86,   86,  361,  363,  363,  363,
-       86,  363,  363,  363,  363,   86,  363,  363,  243,  243,
-      243,   86,  243,   86,   86,   86,  586,  584,  243,  373,
-      373,  582,  373,  580,  578,  576,  477,  373,  373,  375,
-      375,  574,  375,  574,  564,  562,  458,  375,  375,  377,
-
-      377,  458,  377,  560,  558,  556,  554,  377,  377,  263,
-      263,  552,  263,  550,   86,   86,   86,   86,  263,  379,
-      379,   86,  379,   86,   86,   86,  489,  379,  379,  265,
-      265,  487,  265,  485,  483,  481,  479,  462,  265,   85,
-      460,  344,   85,   85,  344,   85,   85,   85,   85,   85,
-       85,   85,   85,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
-      443,  443,  443,  443,  443,  443,  443,  444,  444,  458,
-      444,  456,  454,  451,  449,  444,  444,  446,  446,  447,
-
-      446,  445,   86,   86,   86,  446,  446,  448,  448,  380,
-      448,  378,  376,  374,  260,  448,  448,  331,  331,  255,
-      331,  254,  370,  370,  242,  360,  331,  450,  450,  360,
-      450,  230,  355,  351,  349,  450,  450,  333,  333,  347,
-      333,  343,  342,  340,  338,  334,  333,  453,  453,  332,
-      453,  199,  195,   86,  266,  453,  453,  337,  337,  264,
-      337,  260,  255,  258,  255,  253,  337,  455,  455,  252,
-      455,  251,  230,  224,   84,  455,  455,  339,  339,   84,
-      339,   86,  199,  197,   84,  146,  339,  457,  457,  140,
-      457,  121,  116,   86,  821,  457,  457,  341,  341,   69,
-
-      341,   69,  821,  821,  821,  821,  341,  459,  459,  821,
-      459,  821,  821,  821,  821,  459,  459,  348,  348,  821,
-      348,  821,  821,  821,  821,  821,  348,  461,  461,  821,
-      461,  821,  821,  821,  821,  461,  461,  350,  350,  821,
-      350,  821,  821,  821,  821,  821,  350,  466,  466,  821,
-      466,  821,  466,  821,  821,  466,  466,  361,  361,  821,
-      361,  821,  361,  821,  821,  361,  361,  363,  363,  363,
-      821,  363,  363,  363,  363,  821,  363,  363,  478,  478,
-      821,  478,  821,  821,  821,  821,  478,  478,  480,  480,
-      821,  480,  821,  821,  821,  821,  480,  480,  482,  482,
-
-      821,  482,  821,  821,  821,  821,  482,  482,  373,  373,
-      821,  373,  821,  821,  821,  821,  821,  373,  484,  484,
-      821,  484,  821,  821,  821,  821,  484,  484,  375,  375,
-      821,  375,  821,  821,  821,  821,  821,  375,  486,  486,
-      821,  486,  821,  821,  821,  821,  486,  486,  377,  377,
-      821,  377,  821,  821,  821,  821,  821,  377,  488,  488,
-      821,  488,  821,  821,  821,  821,  488,  488,  379,  379,
-      821,  379,  821,  821,  821,  821,  821,  379,   85,  821,
-      821,   85,   85,  821,   85,   85,   85,   85,   85,   85,
-       85,   85,  443,  443,  443,  443,  443,  443,  443,  443,
-
-      443,  443,  443,  443,  443,  443,  443,  443,  443,  549,
-      549,  821,  549,  821,  821,  821,  821,  549,  549,  444,
-      444,  821,  444,  821,  821,  821,  821,  821,  444,  551,
-      551,  821,  551,  821,  821,  821,  821,  551,  551,  446,
-      446,  821,  446,  821,  821,  821,  821,  821,  446,  553,
-      553,  821,  553,  821,  821,  821,  821,  553,  553,  448,
-      448,  821,  448,  821,  821,  821,  821,  821,  448,  555,
-      555,  821,  555,  821,  821,  821,  821,  555,  555,  450,
-      450,  821,  450,  821,  821,  821,  821,  821,  450,  557,
-      557,  821,  557,  821,  821,  821,  821,  557,  557,  453,
-
-      453,  821,  453,  821,  821,  821,  821,  821,  453,  559,
-      559,  821,  559,  821,  821,  821,  821,  559,  559,  455,
-      455,  821,  455,  821,  821,  821,  821,  821,  455,  457,
-      457,  821,  457,  821,  821,  821,  821,  457,  457,  561,
-      561,  821,  561,  821,  821,  821,  821,  561,  561,  459,
-      459,  821,  459,  821,  821,  821,  821,  821,  459,  563,
-      563,  821,  563,  821,  821,  821,  821,  563,  563,  461,
-      461,  821,  461,  821,  821,  821,  821,  821,  461,  466,
-      466,  821,  466,  821,  466,  821,  821,  466,  466,  363,
-      363,  821,  363,  821,  821,  821,  821,  363,  363,  575,
-
-      575,  821,  575,  821,  821,  821,  821,  575,  575,  478,
-      478,  821,  478,  821,  821,  821,  821,  821,  478,  577,
-      577,  821,  577,  821,  821,  821,  821,  577,  577,  480,
-      480,  821,  480,  821,  821,  821,  821,  821,  480,  579,
-      579,  821,  579,  821,  821,  821,  821,  579,  579,  482,
-      482,  821,  482,  821,  821,  821,  821,  821,  482,  581,
-      581,  821,  581,  821,  821,  821,  821,  581,  581,  484,
-      484,  821,  484,  821,  821,  821,  821,  821,  484,  583,
-      583,  821,  583,  821,  821,  821,  821,  583,  583,  486,
-      486,  821,  486,  821,  821,  821,  821,  821,  486,  585,
-
-      585,  821,  585,  821,  821,  821,  821,  585,  585,  488,
-      488,  821,  488,  821,  821,  821,  821,  821,  488,   85,
-      821,  821,   85,   85,  821,   85,   85,   85,   85,   85,
-       85,   85,   85,  634,  634,  634,  634,  634,  634,  634,
-      634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
-      636,  636,  821,  636,  821,  821,  821,  821,  636,  636,
-      549,  549,  821,  549,  821,  821,  821,  821,  821,  549,
-      638,  638,  821,  638,  821,  821,  821,  821,  638,  638,
-      551,  551,  821,  551,  821,  821,  821,  821,  821,  551,
-      640,  640,  821,  640,  821,  821,  821,  821,  640,  640,
-
-      553,  553,  821,  553,  821,  821,  821,  821,  821,  553,
-      642,  642,  821,  642,  821,  821,  821,  821,  642,  642,
-      555,  555,  821,  555,  821,  821,  821,  821,  821,  555,
-      644,  644,  821,  644,  821,  821,  821,  821,  644,  644,
-      557,  557,  821,  557,  821,  821,  821,  821,  821,  557,
-      646,  646,  821,  646,  821,  821,  821,  821,  646,  646,
-      559,  559,  821,  559,  821,  821,  821,  821,  821,  559,
-      648,  648,  821,  648,  821,  821,  821,  821,  648,  648,
-      561,  561,  821,  561,  821,  821,  821,  821,  821,  561,
-       85,   85,  821,   85,  821,  821,  821,  821,   85,   85,
-
-      563,  563,  821,  563,  821,  821,  821,  821,  821,  563,
-      466,  466,  821,  466,  821,  821,  821,  821,  466,  466,
-      654,  654,  821,  654,  821,  821,  821,  821,  654,  654,
-      575,  575,  821,  575,  821,  821,  821,  821,  821,  575,
-      656,  656,  821,  656,  821,  821,  821,  821,  656,  656,
-      577,  577,  821,  577,  821,  821,  821,  821,  821,  577,
-      658,  658,  821,  658,  821,  821,  821,  821,  658,  658,
-      579,  579,  821,  579,  821,  821,  821,  821,  821,  579,
-      139,  139,  821,  139,  821,  821,  821,  821,  139,  139,
-      581,  581,  821,  581,  821,  821,  821,  821,  821,  581,
-
-      661,  661,  821,  661,  821,  821,  821,  821,  821,  661,
-      583,  583,  821,  583,  821,  821,  821,  821,  821,  583,
-       85,  821,  821,   85,   85,  821,   85,   85,   85,   85,
-       85,   85,   85,   85,  585,  585,  821,  585,  821,  821,
-      821,  821,  821,  585,  634,  634,  634,  634,  634,  634,
-      634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
-      634,  697,  697,  821,  697,  821,  821,  821,  821,  697,
-      697,  636,  636,  821,  636,  821,  821,  821,  821,  821,
-      636,  198,  198,  821,  198,  821,  821,  821,  821,  198,
-      198,  638,  638,  821,  638,  821,  821,  821,  821,  821,
-
-      638,  700,  700,  821,  700,  821,  821,  821,  821,  821,
-      700,  640,  640,  821,  640,  821,  821,  821,  821,  821,
-      640,  198,  821,  821,  198,  198,  821,  198,  198,  198,
-      198,  198,  198,  198,  198,  642,  642,  821,  642,  821,
-      821,  821,  821,  821,  642,  701,  701,  821,  701,  821,
-      821,  821,  821,  821,  701,  644,  644,  821,  644,  821,
-      821,  821,  821,  821,  644,  646,  646,  821,  646,  821,
-      821,  821,  821,  821,  646,  702,  702,  821,  702,  821,
-      821,  821,  821,  821,  702,  648,  648,  821,  648,  821,
-      821,  821,  821,  821,  648,   85,   85,  821,   85,  821,
-
-      821,  821,  821,  821,   85,  704,  704,  821,  704,  821,
-      821,  821,  821,  704,  704,  654,  654,  821,  654,  821,
-      821,  821,  821,  821,  654,  259,  259,  821,  259,  821,
-      821,  821,  821,  259,  259,  656,  656,  821,  656,  821,
-      821,  821,  821,  821,  656,  707,  707,  821,  707,  821,
-      821,  821,  821,  821,  707,  658,  658,  821,  658,  821,
-      821,  821,  821,  821,  658,  139,  139,  821,  139,  821,
-      821,  821,  821,  821,  139,  708,  708,  821,  708,  821,
-      821,  821,  821,  708,  708,   85,  821,  821,   85,   85,
-      821,   85,   85,   85,   85,   85,   85,   85,   85,  738,
-
-      738,  821,  738,  821,  821,  821,  821,  821,  738,  697,
-      697,  821,  697,  821,  821,  821,  821,  821,  697,  739,
-      739,  821,  739,  821,  821,  821,  821,  739,  739,  741,
-      741,  821,  741,  821,  821,  821,  821,  741,  741,  743,
-      743,  821,  743,  821,  821,  821,  821,  743,  743,  745,
-      745,  821,  745,  821,  821,  821,  821,  821,  745,  746,
-      746,  821,  746,  821,  821,  821,  821,  746,  746,  748,
-      748,  821,  748,  821,  821,  821,  821,  748,  748,  766,
-      766,  821,  766,  821,  821,  821,  821,  766,  766,  768,
-      768,  821,  768,  821,  821,  821,  821,  768,  768,  770,
-
-      770,  821,  770,  821,  821,  821,  821,  770,  770,  772,
-      772,  821,  772,  821,  821,  821,  821,  772,  772,  774,
-      774,  821,  774,  821,  821,  821,  821,  774,  774,  776,
-      776,  821,  776,  821,  821,  821,  821,  776,  776,  585,
-      585,  821,  585,  821,  821,  821,  821,  585,  585,  792,
-      792,  821,  792,  821,  821,  821,  821,  792,  792,  642,
-      642,  821,  642,  821,  821,  821,  821,  642,  642,  646,
-      646,  821,  646,  821,  821,  821,  821,  646,  646,   85,
-       85,  821,   85,  821,  821,  821,  821,   85,   85,  797,
-      797,  821,  797,  821,  821,  821,  821,  797,  797,  139,
-
-      139,  821,  139,  821,  821,  821,  821,  139,  139,  198,
-      198,  821,  198,  821,  821,  821,  821,  198,  198,   11,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-
-      821,  821,  821,  821
+
+       77,   77,   77,   77,   77,   85,  825,  781,   85,   85,
+       85,   85,   85,   85,  139,  779,  825,  777,  139,  139,
+      139,  139,  139,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  199,  825,  775,  199,  199,
+      199,  199,  199,  199,  203,  825,  203,  203,  773,  203,
+      203,  203,  203,  203,  771,  203,  211,   86,   86,  211,
+      211,  211,  211,  211,  211,  211,   86,  211,  232,  232,
+      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
+      246,  246,  246,   86,   86,   86,  246,  262,   86,   86,
+      262,  262,  262,  262,  262,  262,  266,  266,   86,   86,
+
+       86,  266,  268,  268,   86,  825,  753,  268,  335,  335,
+      751,  825,  825,  335,  337,  337,  748,  746,  744,  337,
+      341,  341,  825,   86,   86,  341,  343,  343,   86,   86,
+       86,  343,  345,  345,   86,   86,  713,  345,  352,  352,
+      710,  709,  200,  352,  354,  354,  703,  702,  639,  354,
+      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
+      232,  232,  365,  365,  367,  367,  367,  367,  367,   86,
+      367,  246,  246,  246,  377,  377,   86,   86,   86,  377,
+      379,  379,   86,   86,   86,  379,  381,  381,   86,   86,
+       86,  381,  266,  266,  383,  383,   86,   86,   86,  383,
+
+      268,  268,   85,   86,  664,   85,   85,   85,   85,   85,
+       85,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  447,  447,  447,  447,  447,  447,  447,
+      447,  447,  447,  447,  447,  448,  448,  663,  661,  659,
+      448,  450,  450,  573,  654,  653,  450,  452,  452,  651,
+      649,  647,  452,  335,  335,  454,  454,  645,  643,  641,
+      454,  337,  337,  457,  457,  639,   86,   86,  457,  341,
+      341,  459,  459,   86,   86,   86,  459,  343,  343,  461,
+      461,   86,   86,   86,  461,  345,  345,  463,  463,   86,
+       86,   86,  463,  352,  352,  465,  465,  590,  588,  586,
+
+      465,  354,  354,  470,  470,  584,  470,  582,  470,  365,
+      365,  580,  365,  481,  365,  367,  367,  367,  367,  367,
+      578,  367,  482,  482,  578,  568,  566,  482,  484,  484,
+      462,  462,  564,  484,  486,  486,  562,  560,  558,  486,
+      377,  377,  488,  488,  556,  554,   86,  488,  379,  379,
+      490,  490,   86,   86,   86,  490,  381,  381,  492,  492,
+       86,   86,   86,  492,  383,  383,   85,   86,  493,   85,
+       85,   85,   85,   85,   85,  447,  447,  447,  447,  447,
+      447,  447,  447,  447,  447,  447,  447,  553,  553,  491,
+      489,  487,  553,  448,  448,  555,  555,  485,  483,  466,
+
+      555,  450,  450,  557,  557,  464,  348,  348,  557,  452,
+      452,  559,  559,  462,  460,  458,  559,  454,  454,  561,
+      561,  455,  453,  451,  561,  457,  457,  563,  563,  449,
+       86,   86,  563,  459,  459,  461,  461,   86,  384,  382,
+      461,  565,  565,  380,  378,  263,  565,  463,  463,  567,
+      567,  258,  257,  374,  567,  465,  465,  470,  470,  374,
+      470,  245,  470,  367,  367,  364,  364,  233,  367,  579,
+      579,  359,  355,  353,  579,  482,  482,  581,  581,  351,
+      347,  346,  581,  484,  484,  583,  583,  344,  342,  338,
+      583,  486,  486,  585,  585,  336,  200,  196,  585,  488,
+
+      488,  587,  587,   86,  269,  267,  587,  490,  490,  589,
+      589,  263,  258,  261,  589,  492,  492,   85,  258,  256,
+       85,   85,   85,   85,   85,   85,  638,  638,  638,  638,
+      638,  638,  638,  638,  638,  638,  638,  638,  640,  640,
+      255,  254,  233,  640,  553,  553,  642,  642,  227,   84,
+       84,  642,  555,  555,  644,  644,   86,  200,  198,  644,
+      557,  557,  646,  646,   84,  146,  140,  646,  559,  559,
+      648,  648,  121,  116,   86,  648,  561,  561,  650,  650,
+      825,   69,   69,  650,  563,  563,  652,  652,  825,  825,
+      825,  652,  565,  565,   85,   85,  825,  825,  825,   85,
+
+      567,  567,  470,  470,  825,  825,  825,  470,  658,  658,
+      825,  825,  825,  658,  579,  579,  660,  660,  825,  825,
+      825,  660,  581,  581,  662,  662,  825,  825,  825,  662,
+      583,  583,  139,  139,  825,  825,  825,  139,  585,  585,
+      665,  665,  587,  587,   85,  825,  825,   85,   85,   85,
+       85,   85,   85,  589,  589,  638,  638,  638,  638,  638,
+      638,  638,  638,  638,  638,  638,  638,  701,  701,  825,
+      825,  825,  701,  640,  640,  199,  199,  825,  825,  825,
+      199,  642,  642,  704,  704,  644,  644,  199,  825,  825,
+      199,  199,  199,  199,  199,  199,  646,  646,  705,  705,
+
+      648,  648,  650,  650,  706,  706,  652,  652,   85,   85,
+      708,  708,  825,  825,  825,  708,  658,  658,  262,  262,
+      825,  825,  825,  262,  660,  660,  711,  711,  662,  662,
+      139,  139,  712,  712,  825,  825,  825,  712,   85,  825,
+      825,   85,   85,   85,   85,   85,   85,  742,  742,  701,
+      701,  743,  743,  825,  825,  825,  743,  745,  745,  825,
+      825,  825,  745,  747,  747,  825,  825,  825,  747,  749,
+      749,  750,  750,  825,  825,  825,  750,  752,  752,  825,
+      825,  825,  752,  770,  770,  825,  825,  825,  770,  772,
+      772,  825,  825,  825,  772,  774,  774,  825,  825,  825,
+
+      774,  776,  776,  825,  825,  825,  776,  778,  778,  825,
+      825,  825,  778,  780,  780,  825,  825,  825,  780,  589,
+      589,  825,  825,  825,  589,  796,  796,  825,  825,  825,
+      796,  646,  646,  825,  825,  825,  646,  650,  650,  825,
+      825,  825,  650,   85,   85,  825,  825,  825,   85,  801,
+      801,  825,  825,  825,  801,  139,  139,  825,  825,  825,
+      139,  199,  199,  825,  825,  825,  199,   11,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825
     } ;
 
-static yyconst flex_int16_t yy_chk[3605] =
+static yyconst flex_int16_t yy_chk[2653] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1181,386 +1076,281 @@
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
-       10,   37,   37,   20,   48,    9,   10,  508,    7,    8,
+       10,   37,   37,   20,   48,    9,   10,  512,    7,    8,
        13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
 
        15,   15,   20,   25,   48,   42,   53,   28,   27,   28,
-       28,   28,   28,   28,   28,  508,  820,   25,   29,   25,
+       28,   28,   28,   28,   28,  512,  824,   25,   29,   25,
        27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
        40,   42,   55,   29,   30,   40,   30,   30,   30,   30,
        30,   30,   35,   47,   35,   35,  125,   49,  125,   50,
        55,   56,   49,   30,   63,   51,   55,   30,   50,   49,
-       56,   59,   30,   30,   47,   49,   47,   50,   30,   54,
-       51,   50,   51,   40,   30,   60,   40,   72,   59,   54,
-       30,   51,   86,  107,  113,   45,   54,  819,   30,   58,
-       45,   30,   31,   60,   31,   31,   31,   31,   31,   31,
-
-      108,   58,  163,   72,   63,  106,  107,  113,   86,   58,
-      106,   31,   45,   45,   45,   31,   58,   57,   45,   45,
-       31,   45,   52,   45,   45,  163,   31,   52,   45,   57,
-       57,   45,   31,   61,  108,   52,  106,   52,   31,   57,
-       52,  126,   57,  126,   52,   61,   31,   38,  112,  171,
-      129,   38,   38,  112,   38,  114,   38,   38,  128,   38,
-      128,   38,   67,   67,  129,  140,  129,   67,  130,  171,
+       56,   72,   30,   30,   47,   49,   47,   50,   30,   54,
+       51,   50,   51,   40,   30,   60,   40,   86,   61,   54,
+       30,   51,  107,  113,  823,  822,   54,   72,   30,   58,
+       61,   30,   31,   60,   31,   31,   31,   31,   31,   31,
+
+      108,   58,  106,   86,   63,  107,  113,  106,  126,   58,
+      126,   31,   45,   45,   45,   31,   58,   57,   45,   45,
+       31,   45,   52,   45,   45,  821,   31,   52,   45,   57,
+       57,   45,   31,  106,  108,   52,  140,   52,   31,   57,
+       52,  128,   57,  128,   52,   59,   31,   38,  112,  819,
+       59,   38,   38,  112,   38,  114,   38,   38,  131,   38,
+      131,   38,  140,   59,   79,   79,   79,   79,   79,   79,
        38,   38,   38,   66,   66,   66,   66,   66,   66,  112,
-      130,   66,  130,   67,   67,   67,   67,   67,   67,  114,
-       38,  140,  131,   38,  131,  166,   76,   76,   76,   76,
-
-       79,   79,   79,   79,   79,   79,   81,   81,   81,   81,
-       81,   81,   82,   82,   82,   82,   82,   82,  166,  151,
-       38,   38,   76,  103,  103,  103,  103,  148,  110,  132,
-      132,  133,  132,  133,  104,  151,  104,  104,  104,  104,
-      104,  104,  134,  134,  134,  148,  110,  115,   76,  162,
-      103,   76,   84,  104,  110,  103,   84,   84,  136,  162,
-      136,   84,   84,  109,   84,  115,   84,  138,  104,  138,
-      818,  150,  153,  115,  104,   84,   84,   84,  103,  105,
-      150,  105,  149,  152,  105,  105,  105,  105,  105,  105,
-      147,  143,  109,  156,  153,   84,  143,  109,   84,  154,
-
-      149,  152,  157,  160,  158,  147,  161,  168,  160,  156,
-      164,  154,  147,  158,  159,  170,  105,  165,  167,  172,
-      109,  160,  168,  161,  157,  169,   84,   98,   98,   98,
-       98,   98,   98,  170,  143,  159,  159,  164,  165,  173,
-      167,  175,  169,  176,   98,   98,  172,  177,   98,  179,
-      181,  500,  177,  180,  500,  181,  175,  178,  184,   98,
-      176,  173,  199,  175,  180,   98,   98,  179,  178,  182,
-      181,   98,  102,  102,  102,  102,  102,  102,  178,  178,
-      183,  180,  182,  185,  186,  184,  187,  270,  199,  102,
-      102,  233,  271,  102,  188,  817,  210,  186,  210,  187,
-
-      183,  187,  185,  270,  102,  186,  268,  188,  155,  271,
-      102,  102,  211,  155,  211,  155,  102,  155,  155,  238,
-      212,  155,  212,  155,  268,  233,  192,  192,  155,  155,
-      155,  192,  155,  191,  191,  191,  191,  191,  191,  194,
-      194,  191,  246,  213,  194,  238,  815,  192,  192,  192,
-      192,  192,  192,  204,  204,  204,  204,  213,  214,  213,
-      194,  194,  194,  194,  194,  194,  196,  196,  246,  295,
-      214,  196,  214,  196,  215,  295,  215,  216,  216,  217,
-      216,  217,  218,  218,  218,  204,  814,  196,  196,  196,
-      196,  196,  196,  220,  221,  220,  221,  225,  225,  225,
-
-      225,  225,  225,  226,  256,  226,  256,  260,  226,  226,
-      226,  226,  226,  226,  225,  225,  231,  231,  225,  257,
-      231,  257,  234,  234,  234,  234,  234,  234,  328,  225,
-      809,  808,  269,  260,  328,  225,  225,  231,  231,  234,
-      226,  225,  267,  231,  235,  235,  235,  235,  235,  235,
-      269,  272,  274,  277,  234,  267,  272,  274,  243,  278,
-      234,  236,  236,  236,  236,  236,  236,  237,  273,  237,
-      275,  277,  237,  237,  237,  237,  237,  237,  283,  236,
-      284,  243,  236,  243,  281,  278,  243,  279,  273,  281,
-      275,  283,  243,  236,  245,  245,  245,  245,  245,  245,
-
-      236,  282,  279,  280,  243,  236,  276,  284,  243,  804,
-      282,  285,  243,  250,  250,  250,  250,  250,  250,  280,
-      280,  276,  287,  289,  290,  288,  245,  276,  276,  285,
-      288,  290,  289,  291,  292,  293,  294,  297,  298,  296,
-      287,  294,  299,  301,  300,  250,  297,  304,  301,  305,
-      302,  299,  292,  291,  298,  302,  293,  293,  296,  300,
-      303,  306,  308,  309,  310,  303,  304,  305,  311,  312,
-      314,  313,  315,  308,  306,  316,  317,  310,  309,  318,
-      319,  315,  303,  323,  321,  322,  324,  314,  366,  326,
-      311,  313,  312,  321,  324,  325,  323,  316,  319,  317,
-
-      325,  318,  398,  322,  326,  327,  327,  345,  398,  345,
-      327,  366,  327,  335,  335,  335,  335,  336,  336,  336,
-      336,  346,  399,  346,  352,  352,  352,  352,  352,  352,
-      353,  353,  353,  353,  353,  353,  355,  355,  355,  355,
-      355,  355,  382,  399,  383,  335,  368,  354,  353,  354,
-      381,  353,  354,  354,  354,  354,  354,  354,  382,  383,
-      386,  381,  353,  596,  368,  364,  596,  802,  355,  353,
-      364,  386,  368,  408,  353,  356,  356,  356,  356,  356,
-      356,  357,  357,  357,  357,  357,  357,  358,  358,  358,
-      358,  358,  358,  363,  408,  384,  364,  361,  799,  357,
-
-      385,  387,  357,  362,  390,  358,  361,  356,  358,  385,
-      387,  388,  362,  357,  384,  389,  363,  390,  363,  358,
-      357,  363,  361,  395,  389,  357,  358,  363,  362,  391,
-      396,  358,  367,  388,  392,  396,  798,  797,  796,  363,
-      394,  395,  393,  363,  365,  391,  365,  363,  397,  365,
-      365,  365,  365,  365,  365,  367,  392,  367,  393,  393,
-      367,  400,  394,  397,  401,  402,  367,  406,  409,  411,
-      397,  404,  400,  416,  412,  410,  417,  419,  367,  406,
-      402,  365,  367,  401,  410,  404,  367,  413,  410,  412,
-      409,  418,  411,  416,  420,  421,  413,  424,  417,  419,
-
-      426,  422,  428,  427,  430,  429,  418,  431,  433,  420,
-      422,  432,  434,  435,  424,  421,  431,  436,  441,  434,
-      435,  433,  428,  426,  427,  429,  430,  437,  439,  432,
-      438,  443,  442,  499,  504,  437,  795,  443,  470,  439,
-      441,  442,  436,  504,  499,  437,  469,  438,  452,  452,
-      452,  452,  463,  463,  463,  463,  463,  463,  464,  464,
-      464,  464,  464,  464,  470,  490,  493,  491,  466,  468,
-      463,  469,  494,  463,  495,  506,  464,  466,  468,  464,
-      491,  493,  490,  794,  463,  497,  506,  495,  496,  524,
-      464,  463,  494,  466,  468,  498,  463,  464,  497,  507,
-
-      498,  524,  464,  465,  465,  465,  465,  465,  465,  467,
-      496,  467,  507,  501,  467,  467,  467,  467,  467,  467,
-      472,  472,  472,  472,  472,  472,  473,  473,  473,  473,
-      473,  473,  474,  501,  474,  465,  502,  474,  474,  474,
-      474,  474,  474,  503,  473,  505,  467,  473,  509,  510,
-      505,  511,  512,  516,  513,  502,  518,  509,  473,  513,
-      519,  512,  516,  520,  503,  473,  521,  523,  511,  528,
-      473,  510,  525,  527,  528,  521,  530,  519,  520,  532,
-      531,  533,  518,  534,  523,  530,  537,  525,  527,  531,
-      536,  539,  538,  540,  533,  542,  537,  543,  536,  538,
-
-      534,  532,  545,  546,  542,  540,  594,  543,  588,  589,
-      593,  793,  792,  539,  594,  588,  546,  593,  589,  545,
-      565,  565,  565,  565,  565,  565,  566,  566,  566,  566,
-      566,  566,  567,  567,  567,  567,  567,  567,  568,  599,
-      568,  601,  592,  568,  568,  568,  568,  568,  568,  590,
-      567,  591,  565,  567,  571,  571,  571,  571,  571,  571,
-      595,  599,  590,  601,  567,  592,  790,  604,  591,  587,
-      598,  567,  571,  600,  587,  571,  567,  595,  573,  573,
-      573,  573,  573,  573,  597,  598,  571,  587,  602,  603,
-      600,  602,  605,  571,  604,  606,  573,  597,  571,  573,
-
-      607,  608,  609,  611,  612,  617,  603,  605,  613,  607,
-      573,  616,  619,  623,  622,  606,  630,  573,  633,  608,
-      623,  789,  573,  622,  609,  611,  630,  612,  632,  619,
-      613,  616,  617,  633,  662,  665,  671,  632,  651,  651,
-      651,  651,  651,  651,  652,  652,  652,  652,  652,  652,
-      663,  666,  667,  668,  671,  662,  651,  667,  666,  651,
-      663,  665,  652,  669,  670,  652,  669,  670,  673,  674,
-      651,  677,  675,  668,  673,  675,  652,  651,  674,  676,
-      680,  678,  651,  652,  678,  689,  679,  684,  652,  653,
-      653,  653,  653,  653,  653,  679,  682,  684,  681,  677,
-
-      676,  681,  683,  685,  687,  680,  692,  693,  689,  682,
-      683,  695,  717,  687,  696,  716,  685,  714,  718,  695,
-      716,  653,  715,  696,  719,  720,  692,  717,  718,  693,
-      703,  703,  703,  703,  703,  703,  722,  714,  721,  715,
-      723,  721,  725,  727,  731,  725,  727,  719,  728,  722,
-      729,  720,  750,  729,  730,  728,  752,  730,  753,  731,
-      754,  755,  703,  754,  758,  756,  759,  723,  756,  760,
-      762,  763,  760,  780,  763,  764,  753,  752,  764,  750,
-      765,  781,  758,  755,  782,  785,  783,  782,  781,  765,
-      784,  759,  762,  784,  780,  783,  788,  791,  800,  788,
-
-      791,  801,  785,  810,  811,  803,  801,  800,  803,  805,
-      806,  807,  805,  806,  807,  812,  816,  813,  812,  811,
-      813,  787,  786,  810,  779,  778,  777,  776,  775,  774,
-      773,  772,  771,  770,  769,  768,  767,  766,  816,  822,
-      822,  822,  822,  822,  822,  822,  822,  822,  822,  822,
-      822,  822,  822,  822,  822,  822,  823,  823,  823,  823,
-      823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
-      823,  823,  823,  824,  824,  824,  824,  824,  824,  824,
-      824,  824,  824,  824,  824,  824,  824,  824,  824,  824,
-      825,  761,  757,  825,  825,  751,  825,  825,  825,  825,
-
-      825,  825,  825,  825,  826,  749,  748,  747,  746,  745,
-      826,  826,  826,  826,  826,  826,  826,  826,  827,  827,
-      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
-      827,  827,  827,  827,  827,  828,  744,  743,  828,  828,
-      742,  828,  828,  828,  828,  828,  828,  828,  828,  829,
-      741,  829,  829,  740,  829,  829,  829,  829,  829,  829,
-      829,  829,  739,  829,  829,  829,  830,  738,  830,  737,
-      830,  736,  830,  735,  734,  733,  830,  830,  732,  830,
-      830,  831,  726,  724,  831,  831,  831,  831,  831,  831,
-      831,  831,  831,  831,  713,  831,  831,  831,  832,  832,
-
-      832,  832,  832,  832,  832,  832,  832,  832,  832,  832,
-      832,  832,  832,  832,  832,  833,  833,  833,  712,  833,
-      711,  710,  709,  708,  833,  833,  834,  707,  706,  834,
-      834,  705,  834,  834,  834,  834,  834,  834,  834,  834,
-      835,  835,  702,  835,  701,  700,  699,  694,  835,  835,
-      836,  836,  691,  836,  690,  688,  686,  672,  836,  836,
-      837,  837,  664,  837,  661,  656,  654,  642,  837,  837,
-      838,  838,  638,  838,  636,  634,  631,  629,  838,  838,
-      839,  839,  628,  839,  627,  626,  625,  624,  839,  839,
-      840,  840,  621,  840,  620,  618,  615,  614,  840,  840,
-
-      841,  841,  610,  841,  585,  581,  579,  577,  841,  841,
-      842,  842,  575,  842,  569,  563,  561,  559,  842,  842,
-      843,  843,  557,  843,  555,  553,  551,  549,  843,  843,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  845,  845,  548,
-      845,  547,  544,  541,  535,  529,  845,  846,  846,  846,
-      526,  846,  846,  846,  846,  522,  846,  846,  847,  847,
-      847,  517,  847,  515,  514,  492,  488,  486,  847,  848,
-      848,  484,  848,  482,  480,  478,  477,  848,  848,  849,
-      849,  476,  849,  475,  461,  459,  458,  849,  849,  850,
-
-      850,  457,  850,  455,  453,  450,  448,  850,  850,  851,
-      851,  446,  851,  444,  440,  425,  423,  415,  851,  852,
-      852,  414,  852,  407,  405,  403,  379,  852,  852,  853,
-      853,  377,  853,  375,  373,  372,  371,  350,  853,  854,
-      348,  347,  854,  854,  343,  854,  854,  854,  854,  854,
-      854,  854,  854,  855,  855,  855,  855,  855,  855,  855,
-      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
-      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
-      856,  856,  856,  856,  856,  856,  856,  857,  857,  341,
-      857,  339,  337,  333,  331,  857,  857,  858,  858,  330,
-
-      858,  329,  320,  307,  286,  858,  858,  859,  859,  265,
-      859,  263,  262,  261,  259,  859,  859,  860,  860,  258,
-      860,  253,  249,  248,  244,  241,  860,  861,  861,  240,
-      861,  229,  228,  223,  222,  861,  861,  862,  862,  219,
-      862,  209,  207,  206,  205,  201,  862,  863,  863,  200,
-      863,  198,  193,  174,  145,  863,  863,  864,  864,  144,
-      864,  139,  137,  135,  127,  124,  864,  865,  865,  123,
-      865,  119,  100,   97,   94,  865,  865,  866,  866,   92,
-      866,   85,   71,   69,   65,   44,  866,  867,  867,   39,
-      867,   36,   33,   18,   11,  867,  867,  868,  868,    4,
-
-      868,    3,    0,    0,    0,    0,  868,  869,  869,    0,
-      869,    0,    0,    0,    0,  869,  869,  870,  870,    0,
-      870,    0,    0,    0,    0,    0,  870,  871,  871,    0,
-      871,    0,    0,    0,    0,  871,  871,  872,  872,    0,
-      872,    0,    0,    0,    0,    0,  872,  873,  873,    0,
-      873,    0,  873,    0,    0,  873,  873,  874,  874,    0,
-      874,    0,  874,    0,    0,  874,  874,  875,  875,  875,
-        0,  875,  875,  875,  875,    0,  875,  875,  876,  876,
-        0,  876,    0,    0,    0,    0,  876,  876,  877,  877,
-        0,  877,    0,    0,    0,    0,  877,  877,  878,  878,
-
-        0,  878,    0,    0,    0,    0,  878,  878,  879,  879,
-        0,  879,    0,    0,    0,    0,    0,  879,  880,  880,
-        0,  880,    0,    0,    0,    0,  880,  880,  881,  881,
-        0,  881,    0,    0,    0,    0,    0,  881,  882,  882,
-        0,  882,    0,    0,    0,    0,  882,  882,  883,  883,
-        0,  883,    0,    0,    0,    0,    0,  883,  884,  884,
-        0,  884,    0,    0,    0,    0,  884,  884,  885,  885,
-        0,  885,    0,    0,    0,    0,    0,  885,  886,    0,
-        0,  886,  886,    0,  886,  886,  886,  886,  886,  886,
-      886,  886,  887,  887,  887,  887,  887,  887,  887,  887,
-
-      887,  887,  887,  887,  887,  887,  887,  887,  887,  888,
-      888,    0,  888,    0,    0,    0,    0,  888,  888,  889,
-      889,    0,  889,    0,    0,    0,    0,    0,  889,  890,
-      890,    0,  890,    0,    0,    0,    0,  890,  890,  891,
-      891,    0,  891,    0,    0,    0,    0,    0,  891,  892,
-      892,    0,  892,    0,    0,    0,    0,  892,  892,  893,
-      893,    0,  893,    0,    0,    0,    0,    0,  893,  894,
-      894,    0,  894,    0,    0,    0,    0,  894,  894,  895,
-      895,    0,  895,    0,    0,    0,    0,    0,  895,  896,
-      896,    0,  896,    0,    0,    0,    0,  896,  896,  897,
-
-      897,    0,  897,    0,    0,    0,    0,    0,  897,  898,
-      898,    0,  898,    0,    0,    0,    0,  898,  898,  899,
-      899,    0,  899,    0,    0,    0,    0,    0,  899,  900,
-      900,    0,  900,    0,    0,    0,    0,  900,  900,  901,
-      901,    0,  901,    0,    0,    0,    0,  901,  901,  902,
-      902,    0,  902,    0,    0,    0,    0,    0,  902,  903,
-      903,    0,  903,    0,    0,    0,    0,  903,  903,  904,
-      904,    0,  904,    0,    0,    0,    0,    0,  904,  905,
-      905,    0,  905,    0,  905,    0,    0,  905,  905,  906,
-      906,    0,  906,    0,    0,    0,    0,  906,  906,  907,
-
-      907,    0,  907,    0,    0,    0,    0,  907,  907,  908,
-      908,    0,  908,    0,    0,    0,    0,    0,  908,  909,
-      909,    0,  909,    0,    0,    0,    0,  909,  909,  910,
-      910,    0,  910,    0,    0,    0,    0,    0,  910,  911,
-      911,    0,  911,    0,    0,    0,    0,  911,  911,  912,
-      912,    0,  912,    0,    0,    0,    0,    0,  912,  913,
-      913,    0,  913,    0,    0,    0,    0,  913,  913,  914,
-      914,    0,  914,    0,    0,    0,    0,    0,  914,  915,
-      915,    0,  915,    0,    0,    0,    0,  915,  915,  916,
-      916,    0,  916,    0,    0,    0,    0,    0,  916,  917,
-
-      917,    0,  917,    0,    0,    0,    0,  917,  917,  918,
-      918,    0,  918,    0,    0,    0,    0,    0,  918,  919,
-        0,    0,  919,  919,    0,  919,  919,  919,  919,  919,
-      919,  919,  919,  920,  920,  920,  920,  920,  920,  920,
-      920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
-      921,  921,    0,  921,    0,    0,    0,    0,  921,  921,
-      922,  922,    0,  922,    0,    0,    0,    0,    0,  922,
-      923,  923,    0,  923,    0,    0,    0,    0,  923,  923,
-      924,  924,    0,  924,    0,    0,    0,    0,    0,  924,
-      925,  925,    0,  925,    0,    0,    0,    0,  925,  925,
-
-      926,  926,    0,  926,    0,    0,    0,    0,    0,  926,
-      927,  927,    0,  927,    0,    0,    0,    0,  927,  927,
-      928,  928,    0,  928,    0,    0,    0,    0,    0,  928,
-      929,  929,    0,  929,    0,    0,    0,    0,  929,  929,
-      930,  930,    0,  930,    0,    0,    0,    0,    0,  930,
-      931,  931,    0,  931,    0,    0,    0,    0,  931,  931,
-      932,  932,    0,  932,    0,    0,    0,    0,    0,  932,
-      933,  933,    0,  933,    0,    0,    0,    0,  933,  933,
-      934,  934,    0,  934,    0,    0,    0,    0,    0,  934,
-      935,  935,    0,  935,    0,    0,    0,    0,  935,  935,
-
-      936,  936,    0,  936,    0,    0,    0,    0,    0,  936,
-      937,  937,    0,  937,    0,    0,    0,    0,  937,  937,
-      938,  938,    0,  938,    0,    0,    0,    0,  938,  938,
-      939,  939,    0,  939,    0,    0,    0,    0,    0,  939,
-      940,  940,    0,  940,    0,    0,    0,    0,  940,  940,
-      941,  941,    0,  941,    0,    0,    0,    0,    0,  941,
-      942,  942,    0,  942,    0,    0,    0,    0,  942,  942,
-      943,  943,    0,  943,    0,    0,    0,    0,    0,  943,
-      944,  944,    0,  944,    0,    0,    0,    0,  944,  944,
-      945,  945,    0,  945,    0,    0,    0,    0,    0,  945,
-
-      946,  946,    0,  946,    0,    0,    0,    0,    0,  946,
-      947,  947,    0,  947,    0,    0,    0,    0,    0,  947,
-      948,    0,    0,  948,  948,    0,  948,  948,  948,  948,
-      948,  948,  948,  948,  949,  949,    0,  949,    0,    0,
-        0,    0,    0,  949,  950,  950,  950,  950,  950,  950,
-      950,  950,  950,  950,  950,  950,  950,  950,  950,  950,
-      950,  951,  951,    0,  951,    0,    0,    0,    0,  951,
-      951,  952,  952,    0,  952,    0,    0,    0,    0,    0,
-      952,  953,  953,    0,  953,    0,    0,    0,    0,  953,
-      953,  954,  954,    0,  954,    0,    0,    0,    0,    0,
-
-      954,  955,  955,    0,  955,    0,    0,    0,    0,    0,
-      955,  956,  956,    0,  956,    0,    0,    0,    0,    0,
-      956,  957,    0,    0,  957,  957,    0,  957,  957,  957,
-      957,  957,  957,  957,  957,  958,  958,    0,  958,    0,
-        0,    0,    0,    0,  958,  959,  959,    0,  959,    0,
-        0,    0,    0,    0,  959,  960,  960,    0,  960,    0,
-        0,    0,    0,    0,  960,  961,  961,    0,  961,    0,
-        0,    0,    0,    0,  961,  962,  962,    0,  962,    0,
-        0,    0,    0,    0,  962,  963,  963,    0,  963,    0,
-        0,    0,    0,    0,  963,  964,  964,    0,  964,    0,
-
-        0,    0,    0,    0,  964,  965,  965,    0,  965,    0,
-        0,    0,    0,  965,  965,  966,  966,    0,  966,    0,
-        0,    0,    0,    0,  966,  967,  967,    0,  967,    0,
-        0,    0,    0,  967,  967,  968,  968,    0,  968,    0,
-        0,    0,    0,    0,  968,  969,  969,    0,  969,    0,
-        0,    0,    0,    0,  969,  970,  970,    0,  970,    0,
-        0,    0,    0,    0,  970,  971,  971,    0,  971,    0,
-        0,    0,    0,    0,  971,  972,  972,    0,  972,    0,
-        0,    0,    0,  972,  972,  973,    0,    0,  973,  973,
-        0,  973,  973,  973,  973,  973,  973,  973,  973,  974,
-
-      974,    0,  974,    0,    0,    0,    0,    0,  974,  975,
-      975,    0,  975,    0,    0,    0,    0,    0,  975,  976,
-      976,    0,  976,    0,    0,    0,    0,  976,  976,  977,
-      977,    0,  977,    0,    0,    0,    0,  977,  977,  978,
-      978,    0,  978,    0,    0,    0,    0,  978,  978,  979,
-      979,    0,  979,    0,    0,    0,    0,    0,  979,  980,
-      980,    0,  980,    0,    0,    0,    0,  980,  980,  981,
-      981,    0,  981,    0,    0,    0,    0,  981,  981,  982,
-      982,    0,  982,    0,    0,    0,    0,  982,  982,  983,
-      983,    0,  983,    0,    0,    0,    0,  983,  983,  984,
-
-      984,    0,  984,    0,    0,    0,    0,  984,  984,  985,
-      985,    0,  985,    0,    0,    0,    0,  985,  985,  986,
-      986,    0,  986,    0,    0,    0,    0,  986,  986,  987,
-      987,    0,  987,    0,    0,    0,    0,  987,  987,  988,
-      988,    0,  988,    0,    0,    0,    0,  988,  988,  989,
-      989,    0,  989,    0,    0,    0,    0,  989,  989,  990,
-      990,    0,  990,    0,    0,    0,    0,  990,  990,  991,
-      991,    0,  991,    0,    0,    0,    0,  991,  991,  992,
-      992,    0,  992,    0,    0,    0,    0,  992,  992,  993,
-      993,    0,  993,    0,    0,    0,    0,  993,  993,  994,
-
-      994,    0,  994,    0,    0,    0,    0,  994,  994,  995,
-      995,    0,  995,    0,    0,    0,    0,  995,  995,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-
-      821,  821,  821,  821
+      154,   66,   81,   81,   81,   81,   81,   81,   59,  114,
+       38,   59,  154,   38,   82,   82,   82,   82,   82,   82,
+
+      129,   67,   67,  130,  818,   59,   67,  103,  103,  103,
+      103,  133,  298,  133,  129,  130,  129,  130,  298,  109,
+       38,   38,   67,   67,   67,   67,   67,   67,   76,   76,
+      134,  134,  134,   76,  103,   76,  105,  171,  105,  103,
+       76,  105,  105,  105,  105,  105,  105,  161,  109,   76,
+       76,   76,   76,  109,  110,  132,  132,  171,  132,  115,
+       76,  813,  103,  104,  161,  104,  104,  104,  104,  104,
+      104,  147,  110,  105,  148,   76,  109,  115,   76,  136,
+      110,  136,  104,   76,   76,  115,  147,   76,   76,  138,
+      149,  138,  148,  147,  143,   76,  151,  104,   76,  143,
+
+       76,   76,   76,  104,   76,   84,  152,  150,  149,   84,
+       84,  153,  151,  157,   84,   84,  150,   84,  158,   84,
+      156,  165,  162,  163,  152,  812,  808,  158,   84,   84,
+       84,  159,  162,  153,  155,  157,  156,  143,  164,  155,
+      167,  155,  165,  155,  155,  160,  163,  155,   84,  155,
+      160,   84,  159,  159,  155,  155,  155,  168,  155,  169,
+      170,  172,  167,  160,  166,  164,  213,  173,  213,  177,
+      806,  175,  168,  176,  177,  236,  169,  179,  170,   84,
+       98,   98,   98,   98,   98,   98,  175,  166,  172,  173,
+      176,  181,  178,  175,  180,  179,  181,   98,   98,  271,
+
+      183,   98,  182,  178,  184,  180,  186,  200,  189,  236,
+      803,  181,   98,  178,  178,  182,  185,  271,   98,   98,
+      183,  189,  180,  187,   98,  102,  102,  102,  102,  102,
+      102,  184,  188,  200,  440,  185,  187,  214,  215,  214,
+      215,  241,  102,  102,  187,  188,  102,  188,  275,  186,
+      204,  204,  186,  275,  217,  204,  218,  102,  218,  440,
+      193,  193,  287,  102,  102,  193,  217,  241,  217,  102,
+      192,  192,  192,  192,  192,  192,  219,  219,  192,  219,
+      249,  193,  193,  193,  193,  193,  193,  195,  195,  287,
+      285,  216,  195,  197,  197,  220,  802,  220,  197,  285,
+
+      197,  207,  207,  207,  207,  216,  249,  216,  195,  195,
+      195,  195,  195,  195,  197,  197,  197,  197,  197,  197,
+      221,  221,  221,  223,  224,  223,  224,  237,  237,  237,
+      237,  237,  237,  207,  228,  228,  228,  228,  228,  228,
+      229,  259,  229,  259,  237,  229,  229,  229,  229,  229,
+      229,  228,  228,  234,  234,  228,  260,  234,  260,  237,
+      541,  272,  277,  270,  284,  237,  228,  277,  263,  284,
+      541,  281,  228,  228,  234,  234,  270,  229,  228,  272,
+      234,  238,  238,  238,  238,  238,  238,  239,  239,  239,
+      239,  239,  239,  240,  263,  240,  276,  281,  240,  240,
+
+      240,  240,  240,  240,  246,  239,  801,  800,  239,  248,
+      248,  248,  248,  248,  248,  279,  276,  273,  274,  239,
+      253,  253,  253,  253,  253,  253,  239,  246,  278,  246,
+      279,  239,  246,  273,  282,  274,  279,  279,  246,  280,
+      286,  248,  291,  283,  288,  290,  292,  291,  278,  282,
+      246,  294,  253,  286,  246,  292,  295,  280,  246,  283,
+      283,  293,  288,  290,  296,  297,  300,  301,  293,  299,
+      297,  294,  302,  304,  295,  300,  303,  305,  304,  306,
+      307,  302,  305,  301,  306,  296,  296,  308,  299,  309,
+      314,  303,  311,  312,  313,  315,  316,  317,  319,  307,
+
+      318,  306,  309,  311,  320,  308,  321,  313,  312,  318,
+      324,  322,  314,  325,  317,  326,  316,  327,  315,  324,
+      319,  329,  330,  328,  386,  385,  329,  320,  321,  322,
+      327,  328,  332,  326,  331,  331,  385,  330,  332,  331,
+      386,  331,  339,  339,  339,  339,  340,  340,  340,  340,
+      349,  350,  349,  350,  388,  799,  325,  356,  356,  356,
+      356,  356,  356,  357,  357,  357,  357,  357,  357,  370,
+      358,  392,  358,  388,  339,  358,  358,  358,  358,  358,
+      358,  357,  389,  390,  357,  359,  359,  359,  359,  359,
+      359,  389,  370,  392,  390,  357,  360,  360,  360,  360,
+
+      360,  360,  357,  403,  798,  365,  366,  357,  361,  361,
+      361,  361,  361,  361,  365,  366,  372,  359,  362,  362,
+      362,  362,  362,  362,  403,  395,  361,  396,  360,  361,
+      365,  366,  368,  367,  372,  391,  362,  368,  387,  362,
+      361,  395,  372,  400,  391,  393,  394,  361,  400,  396,
+      362,  797,  361,  387,  393,  796,  367,  362,  367,  394,
+      397,  367,  362,  368,  369,  371,  369,  367,  399,  369,
+      369,  369,  369,  369,  369,  398,  397,  397,  402,  367,
+      401,  404,  408,  367,  402,  405,  399,  367,  371,  415,
+      371,  406,  404,  371,  413,  401,  408,  398,  410,  371,
+
+      412,  369,  401,  420,  405,  414,  406,  416,  417,  421,
+      410,  371,  415,  422,  414,  371,  413,  417,  414,  371,
+      423,  412,  416,  420,  424,  425,  426,  428,  422,  430,
+      431,  421,  435,  432,  433,  426,  434,  436,  443,  424,
+      438,  435,  423,  437,  428,  425,  442,  438,  445,  443,
+      439,  431,  430,  432,  433,  436,  437,  439,  434,  441,
+      446,  504,  447,  442,  504,  473,  470,  441,  447,  446,
+      445,  456,  456,  456,  456,  470,  494,  441,  467,  467,
+      467,  467,  467,  467,  468,  468,  468,  468,  468,  468,
+      473,  470,  474,  494,  472,  495,  467,  497,  499,  467,
+
+      498,  501,  468,  472,  500,  468,  506,  505,  495,  794,
+      467,  499,  497,  503,  501,  507,  468,  467,  474,  472,
+      498,  515,  467,  468,  503,  506,  500,  505,  468,  469,
+      469,  469,  469,  469,  469,  471,  507,  471,  515,  793,
+      471,  471,  471,  471,  471,  471,  476,  476,  476,  476,
+      476,  476,  477,  477,  477,  477,  477,  477,  478,  514,
+      478,  469,  508,  478,  478,  478,  478,  478,  478,  502,
+      477,  508,  471,  477,  502,  509,  510,  511,  522,  513,
+      509,  514,  523,  516,  477,  524,  520,  510,  513,  517,
+      511,  477,  516,  525,  517,  520,  477,  527,  528,  523,
+
+      524,  529,  525,  531,  522,  536,  532,  537,  534,  538,
+      528,  532,  535,  543,  527,  540,  529,  534,  531,  544,
+      537,  535,  542,  540,  546,  549,  538,  536,  547,  542,
+      550,  544,  592,  546,  597,  543,  791,  790,  547,  592,
+      596,  597,  549,  550,  569,  569,  569,  569,  569,  569,
+      570,  570,  570,  570,  570,  570,  571,  571,  571,  571,
+      571,  571,  572,  596,  572,  610,  593,  572,  572,  572,
+      572,  572,  572,  594,  571,  593,  569,  571,  575,  575,
+      575,  575,  575,  575,  595,  610,  594,  600,  571,  598,
+      600,  599,  603,  591,  602,  571,  575,  598,  591,  575,
+
+      571,  595,  577,  577,  577,  577,  577,  577,  599,  602,
+      575,  591,  601,  604,  603,  605,  606,  575,  607,  606,
+      577,  608,  575,  577,  609,  601,  612,  611,  613,  615,
+      604,  616,  620,  617,  577,  607,  611,  605,  621,  609,
+      623,  577,  627,  634,  612,  637,  577,  626,  608,  627,
+      613,  615,  620,  634,  616,  617,  626,  623,  636,  666,
+      637,  669,  672,  673,  680,  621,  673,  636,  655,  655,
+      655,  655,  655,  655,  656,  656,  656,  656,  656,  656,
+      666,  667,  672,  670,  675,  680,  655,  669,  671,  655,
+      670,  667,  656,  671,  674,  656,  678,  674,  677,  681,
+
+      655,  683,  675,  684,  677,  678,  656,  655,  679,  732,
+      683,  679,  655,  656,  682,  696,  732,  682,  656,  657,
+      657,  657,  657,  657,  657,  686,  685,  681,  684,  685,
+      688,  687,  689,  691,  693,  696,  697,  700,  686,  687,
+      688,  699,  691,  723,  722,  689,  700,  718,  719,  699,
+      720,  657,  724,  721,  722,  720,  783,  693,  697,  707,
+      707,  707,  707,  707,  707,  719,  723,  718,  721,  725,
+      726,  727,  725,  729,  731,  735,  729,  731,  724,  733,
+      754,  734,  733,  726,  734,  756,  757,  759,  763,  758,
+      735,  707,  758,  760,  762,  766,  760,  764,  727,  767,
+
+      764,  769,  767,  784,  757,  768,  756,  754,  768,  759,
+      769,  785,  762,  763,  787,  789,  786,  766,  785,  786,
+      782,  781,  788,  787,  784,  788,  792,  795,  804,  792,
+      795,  805,  789,  814,  815,  807,  805,  804,  807,  809,
+      810,  811,  809,  810,  811,  816,  820,  817,  816,  815,
+      817,  780,  779,  814,  778,  777,  776,  775,  774,  773,
+      772,  771,  770,  765,  761,  755,  753,  752,  820,  826,
+      826,  826,  826,  826,  826,  826,  826,  826,  826,  826,
+      826,  827,  827,  827,  827,  827,  827,  827,  827,  827,
+      827,  827,  827,  828,  828,  828,  828,  828,  828,  828,
+
+      828,  828,  828,  828,  828,  829,  751,  750,  829,  829,
+      829,  829,  829,  829,  830,  749,  748,  747,  830,  830,
+      830,  830,  830,  831,  831,  831,  831,  831,  831,  831,
+      831,  831,  831,  831,  831,  832,  746,  745,  832,  832,
+      832,  832,  832,  832,  833,  744,  833,  833,  743,  833,
+      833,  833,  833,  833,  742,  833,  834,  741,  740,  834,
+      834,  834,  834,  834,  834,  834,  739,  834,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      836,  836,  836,  738,  737,  736,  836,  837,  730,  728,
+      837,  837,  837,  837,  837,  837,  838,  838,  717,  716,
+
+      715,  838,  839,  839,  714,  713,  712,  839,  840,  840,
+      711,  710,  709,  840,  841,  841,  706,  705,  704,  841,
+      842,  842,  703,  698,  695,  842,  843,  843,  694,  692,
+      690,  843,  844,  844,  676,  668,  665,  844,  845,  845,
+      660,  658,  646,  845,  846,  846,  642,  640,  638,  846,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  848,  848,  849,  849,  849,  849,  849,  635,
+      849,  850,  850,  850,  851,  851,  633,  632,  631,  851,
+      852,  852,  630,  629,  628,  852,  853,  853,  625,  624,
+      622,  853,  854,  854,  855,  855,  619,  618,  614,  855,
+
+      856,  856,  857,  589,  585,  857,  857,  857,  857,  857,
+      857,  858,  858,  858,  858,  858,  858,  858,  858,  858,
+      858,  858,  858,  859,  859,  859,  859,  859,  859,  859,
+      859,  859,  859,  859,  859,  860,  860,  583,  581,  579,
+      860,  861,  861,  573,  567,  565,  861,  862,  862,  563,
+      561,  559,  862,  863,  863,  864,  864,  557,  555,  553,
+      864,  865,  865,  866,  866,  552,  551,  548,  866,  867,
+      867,  868,  868,  545,  539,  533,  868,  869,  869,  870,
+      870,  530,  526,  521,  870,  871,  871,  872,  872,  519,
+      518,  496,  872,  873,  873,  874,  874,  492,  490,  488,
+
+      874,  875,  875,  876,  876,  486,  876,  484,  876,  877,
+      877,  482,  877,  481,  877,  878,  878,  878,  878,  878,
+      480,  878,  879,  879,  479,  465,  463,  879,  880,  880,
+      462,  461,  459,  880,  881,  881,  457,  454,  452,  881,
+      882,  882,  883,  883,  450,  448,  444,  883,  884,  884,
+      885,  885,  429,  427,  419,  885,  886,  886,  887,  887,
+      418,  411,  409,  887,  888,  888,  889,  407,  383,  889,
+      889,  889,  889,  889,  889,  890,  890,  890,  890,  890,
+      890,  890,  890,  890,  890,  890,  890,  891,  891,  381,
+      379,  377,  891,  892,  892,  893,  893,  376,  375,  354,
+
+      893,  894,  894,  895,  895,  352,  351,  347,  895,  896,
+      896,  897,  897,  345,  343,  341,  897,  898,  898,  899,
+      899,  337,  335,  334,  899,  900,  900,  901,  901,  333,
+      323,  310,  901,  902,  902,  903,  903,  289,  268,  266,
+      903,  904,  904,  265,  264,  262,  904,  905,  905,  906,
+      906,  261,  256,  252,  906,  907,  907,  908,  908,  251,
+      908,  247,  908,  909,  909,  244,  243,  232,  909,  910,
+      910,  231,  226,  225,  910,  911,  911,  912,  912,  222,
+      212,  210,  912,  913,  913,  914,  914,  209,  208,  202,
+      914,  915,  915,  916,  916,  201,  199,  194,  916,  917,
+
+      917,  918,  918,  174,  145,  144,  918,  919,  919,  920,
+      920,  139,  137,  135,  920,  921,  921,  922,  127,  124,
+      922,  922,  922,  922,  922,  922,  923,  923,  923,  923,
+      923,  923,  923,  923,  923,  923,  923,  923,  924,  924,
+      123,  119,  100,  924,  925,  925,  926,  926,   97,   94,
+       92,  926,  927,  927,  928,  928,   85,   71,   69,  928,
+      929,  929,  930,  930,   65,   44,   39,  930,  931,  931,
+      932,  932,   36,   33,   18,  932,  933,  933,  934,  934,
+       11,    4,    3,  934,  935,  935,  936,  936,    0,    0,
+        0,  936,  937,  937,  938,  938,    0,    0,    0,  938,
+
+      939,  939,  940,  940,    0,    0,    0,  940,  941,  941,
+        0,    0,    0,  941,  942,  942,  943,  943,    0,    0,
+        0,  943,  944,  944,  945,  945,    0,    0,    0,  945,
+      946,  946,  947,  947,    0,    0,    0,  947,  948,  948,
+      949,  949,  950,  950,  951,    0,    0,  951,  951,  951,
+      951,  951,  951,  952,  952,  953,  953,  953,  953,  953,
+      953,  953,  953,  953,  953,  953,  953,  954,  954,    0,
+        0,    0,  954,  955,  955,  956,  956,    0,    0,    0,
+      956,  957,  957,  958,  958,  959,  959,  960,    0,    0,
+      960,  960,  960,  960,  960,  960,  961,  961,  962,  962,
+
+      963,  963,  964,  964,  965,  965,  966,  966,  967,  967,
+      968,  968,    0,    0,    0,  968,  969,  969,  970,  970,
+        0,    0,    0,  970,  971,  971,  972,  972,  973,  973,
+      974,  974,  975,  975,    0,    0,    0,  975,  976,    0,
+        0,  976,  976,  976,  976,  976,  976,  977,  977,  978,
+      978,  979,  979,    0,    0,    0,  979,  980,  980,    0,
+        0,    0,  980,  981,  981,    0,    0,    0,  981,  982,
+      982,  983,  983,    0,    0,    0,  983,  984,  984,    0,
+        0,    0,  984,  985,  985,    0,    0,    0,  985,  986,
+      986,    0,    0,    0,  986,  987,  987,    0,    0,    0,
+
+      987,  988,  988,    0,    0,    0,  988,  989,  989,    0,
+        0,    0,  989,  990,  990,    0,    0,    0,  990,  991,
+      991,    0,    0,    0,  991,  992,  992,    0,    0,    0,
+      992,  993,  993,    0,    0,    0,  993,  994,  994,    0,
+        0,    0,  994,  995,  995,    0,    0,    0,  995,  996,
+      996,    0,    0,    0,  996,  997,  997,    0,    0,    0,
+      997,  998,  998,    0,    0,    0,  998,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[171] =
+static yyconst flex_int32_t yy_rule_can_match_eol[172] =
     {   0,
 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
@@ -1569,8 +1359,8 @@
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
 
 static yy_state_type yy_last_accepting_state;
@@ -1600,6 +1390,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Wed Jun  3 22:24:07 2015
- * Update Count     : 336
+ * Last Modified On : Fri Jun  5 17:50:17 2015
+ * Update Count     : 373
  */
 #line 19 "lex.ll"
@@ -1614,5 +1404,5 @@
 #include "lex.h"
 #include "ParseNode.h"
-#include "parser.h"									// YACC generated definitions based on C++ grammar
+#include "parser.h"										// YACC generated definitions based on C++ grammar
 
 char *yyfilename;
@@ -1621,5 +1411,5 @@
 #define WHITE_RETURN(x)									// do nothing
 #define NEWLINE_RETURN()	WHITE_RETURN('\n')
-#define RETURN_VAL(x)		yylval.tok.str = new std::string(yytext); \
+#define RETURN_VAL(x)		yylval.tok.str = new std::string( yytext ); \
 		                        yylval.tok.loc.file = yyfilename; \
 		                        yylval.tok.loc.line = yylineno; \
@@ -1665,5 +1455,5 @@
 
 
-#line 1668 "Parser/lex.cc"
+#line 1458 "Parser/lex.cc"
 
 #define INITIAL 0
@@ -1859,8 +1649,8 @@
 	register int yy_act;
     
-#line 140 "lex.ll"
+#line 142 "lex.ll"
 
 				   /* line directives */
-#line 1865 "Parser/lex.cc"
+#line 1655 "Parser/lex.cc"
 
 	if ( !(yy_init) )
@@ -1916,5 +1706,5 @@
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 822 )
+				if ( yy_current_state >= 826 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
@@ -1922,5 +1712,5 @@
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 3520 );
+		while ( yy_base[yy_current_state] != 2568 );
 
 yy_find_action:
@@ -1959,5 +1749,5 @@
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 142 "lex.ll"
+#line 144 "lex.ll"
 {
 	/* " stop highlighting */
@@ -1986,5 +1776,5 @@
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 165 "lex.ll"
+#line 167 "lex.ll"
 ;
 	YY_BREAK
@@ -1992,5 +1782,5 @@
 case 3:
 YY_RULE_SETUP
-#line 168 "lex.ll"
+#line 170 "lex.ll"
 { BEGIN COMMENT; }
 	YY_BREAK
@@ -1998,10 +1788,10 @@
 /* rule 4 can match eol */
 YY_RULE_SETUP
-#line 169 "lex.ll"
+#line 171 "lex.ll"
 ;
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 170 "lex.ll"
+#line 172 "lex.ll"
 { BEGIN 0; }
 	YY_BREAK
@@ -2010,5 +1800,5 @@
 /* rule 6 can match eol */
 YY_RULE_SETUP
-#line 173 "lex.ll"
+#line 175 "lex.ll"
 ;
 	YY_BREAK
@@ -2016,10 +1806,10 @@
 case 7:
 YY_RULE_SETUP
-#line 176 "lex.ll"
+#line 178 "lex.ll"
 { WHITE_RETURN(' '); }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 177 "lex.ll"
+#line 179 "lex.ll"
 { WHITE_RETURN(' '); }
 	YY_BREAK
@@ -2027,5 +1817,5 @@
 /* rule 9 can match eol */
 YY_RULE_SETUP
-#line 178 "lex.ll"
+#line 180 "lex.ll"
 { NEWLINE_RETURN(); }
 	YY_BREAK
@@ -2033,425 +1823,425 @@
 case 10:
 YY_RULE_SETUP
-#line 181 "lex.ll"
+#line 183 "lex.ll"
 { KEYWORD_RETURN(ALIGNAS); }			// C11
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 182 "lex.ll"
+#line 184 "lex.ll"
 { KEYWORD_RETURN(ALIGNOF); }			// C11
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 183 "lex.ll"
+#line 185 "lex.ll"
 { KEYWORD_RETURN(ALIGNOF); }			// GCC
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 184 "lex.ll"
+#line 186 "lex.ll"
 { KEYWORD_RETURN(ALIGNOF); }			// GCC
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 185 "lex.ll"
+#line 187 "lex.ll"
 { KEYWORD_RETURN(ASM); }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 186 "lex.ll"
+#line 188 "lex.ll"
 { KEYWORD_RETURN(ASM); }				// GCC
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 187 "lex.ll"
+#line 189 "lex.ll"
 { KEYWORD_RETURN(ASM); }				// GCC
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 188 "lex.ll"
+#line 190 "lex.ll"
 { KEYWORD_RETURN(ATOMIC); }				// C11
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 189 "lex.ll"
+#line 191 "lex.ll"
 { KEYWORD_RETURN(ATTRIBUTE); }			// GCC
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 190 "lex.ll"
+#line 192 "lex.ll"
 { KEYWORD_RETURN(ATTRIBUTE); }			// GCC
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 191 "lex.ll"
+#line 193 "lex.ll"
 { KEYWORD_RETURN(AUTO); }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 192 "lex.ll"
+#line 194 "lex.ll"
 { KEYWORD_RETURN(BOOL); }				// C99
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 193 "lex.ll"
+#line 195 "lex.ll"
 { KEYWORD_RETURN(BREAK); }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 194 "lex.ll"
+#line 196 "lex.ll"
 { KEYWORD_RETURN(CASE); }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 195 "lex.ll"
+#line 197 "lex.ll"
 { KEYWORD_RETURN(CATCH); }				// CFA
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 196 "lex.ll"
+#line 198 "lex.ll"
 { KEYWORD_RETURN(CHAR); }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 197 "lex.ll"
+#line 199 "lex.ll"
 { KEYWORD_RETURN(CHOOSE); }				// CFA
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 198 "lex.ll"
+#line 200 "lex.ll"
 { KEYWORD_RETURN(COMPLEX); }			// C99
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 199 "lex.ll"
+#line 201 "lex.ll"
 { KEYWORD_RETURN(COMPLEX); }			// GCC
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 200 "lex.ll"
+#line 202 "lex.ll"
 { KEYWORD_RETURN(COMPLEX); }			// GCC
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 201 "lex.ll"
+#line 203 "lex.ll"
 { KEYWORD_RETURN(CONST); }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 202 "lex.ll"
+#line 204 "lex.ll"
 { KEYWORD_RETURN(CONST); }				// GCC
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 203 "lex.ll"
+#line 205 "lex.ll"
 { KEYWORD_RETURN(CONST); }				// GCC
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 204 "lex.ll"
+#line 206 "lex.ll"
 { KEYWORD_RETURN(CONTEXT); }			// CFA
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 205 "lex.ll"
+#line 207 "lex.ll"
 { KEYWORD_RETURN(CONTINUE); }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 206 "lex.ll"
+#line 208 "lex.ll"
 { KEYWORD_RETURN(DEFAULT); }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 207 "lex.ll"
+#line 209 "lex.ll"
 { KEYWORD_RETURN(DO); }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 208 "lex.ll"
+#line 210 "lex.ll"
 { KEYWORD_RETURN(DOUBLE); }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 209 "lex.ll"
+#line 211 "lex.ll"
 { KEYWORD_RETURN(DTYPE); }				// CFA
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 210 "lex.ll"
+#line 212 "lex.ll"
 { KEYWORD_RETURN(ELSE); }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 211 "lex.ll"
+#line 213 "lex.ll"
 { KEYWORD_RETURN(ENUM); }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 212 "lex.ll"
+#line 214 "lex.ll"
 { KEYWORD_RETURN(EXTENSION); }			// GCC
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 213 "lex.ll"
+#line 215 "lex.ll"
 { KEYWORD_RETURN(EXTERN); }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 214 "lex.ll"
+#line 216 "lex.ll"
 { KEYWORD_RETURN(FALLTHRU); }			// CFA
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 215 "lex.ll"
+#line 217 "lex.ll"
 { KEYWORD_RETURN(FINALLY); }			// CFA
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 216 "lex.ll"
+#line 218 "lex.ll"
 { KEYWORD_RETURN(FLOAT); }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 217 "lex.ll"
+#line 219 "lex.ll"
 { KEYWORD_RETURN(FLOAT); }				// GCC
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 218 "lex.ll"
+#line 220 "lex.ll"
 { KEYWORD_RETURN(FOR); }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 219 "lex.ll"
+#line 221 "lex.ll"
 { KEYWORD_RETURN(FORALL); }				// CFA
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 220 "lex.ll"
+#line 222 "lex.ll"
 { KEYWORD_RETURN(FORTRAN); }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 221 "lex.ll"
+#line 223 "lex.ll"
 { KEYWORD_RETURN(FTYPE); }				// CFA
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 222 "lex.ll"
+#line 224 "lex.ll"
 { KEYWORD_RETURN(GENERIC); }			// C11
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 223 "lex.ll"
+#line 225 "lex.ll"
 { KEYWORD_RETURN(GOTO); }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 224 "lex.ll"
+#line 226 "lex.ll"
 { KEYWORD_RETURN(IF); }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 225 "lex.ll"
+#line 227 "lex.ll"
 { KEYWORD_RETURN(IMAGINARY); }			// C99
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 226 "lex.ll"
+#line 228 "lex.ll"
 { KEYWORD_RETURN(IMAGINARY); }			// GCC
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 227 "lex.ll"
+#line 229 "lex.ll"
 { KEYWORD_RETURN(IMAGINARY); }			// GCC
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 228 "lex.ll"
+#line 230 "lex.ll"
 { KEYWORD_RETURN(INLINE); }				// C99
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 229 "lex.ll"
+#line 231 "lex.ll"
 { KEYWORD_RETURN(INLINE); }				// GCC
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 230 "lex.ll"
+#line 232 "lex.ll"
 { KEYWORD_RETURN(INLINE); }				// GCC
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 231 "lex.ll"
+#line 233 "lex.ll"
 { KEYWORD_RETURN(INT); }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 232 "lex.ll"
+#line 234 "lex.ll"
 { KEYWORD_RETURN(INT); }				// GCC
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 233 "lex.ll"
+#line 235 "lex.ll"
 { KEYWORD_RETURN(LABEL); }				// GCC
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 234 "lex.ll"
+#line 236 "lex.ll"
 { KEYWORD_RETURN(LONG); }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 235 "lex.ll"
+#line 237 "lex.ll"
 { KEYWORD_RETURN(LVALUE); }				// CFA
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 236 "lex.ll"
+#line 238 "lex.ll"
 { KEYWORD_RETURN(NORETURN); }			// C11
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 237 "lex.ll"
+#line 239 "lex.ll"
 { KEYWORD_RETURN(REGISTER); }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 238 "lex.ll"
+#line 240 "lex.ll"
 { KEYWORD_RETURN(RESTRICT); }			// C99
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 239 "lex.ll"
+#line 241 "lex.ll"
 { KEYWORD_RETURN(RESTRICT); }			// GCC
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 240 "lex.ll"
+#line 242 "lex.ll"
 { KEYWORD_RETURN(RESTRICT); }			// GCC
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 241 "lex.ll"
+#line 243 "lex.ll"
 { KEYWORD_RETURN(RETURN); }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 242 "lex.ll"
+#line 244 "lex.ll"
 { KEYWORD_RETURN(SHORT); }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 243 "lex.ll"
+#line 245 "lex.ll"
 { KEYWORD_RETURN(SIGNED); }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 244 "lex.ll"
+#line 246 "lex.ll"
 { KEYWORD_RETURN(SIGNED); }				// GCC
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 245 "lex.ll"
+#line 247 "lex.ll"
 { KEYWORD_RETURN(SIGNED); }				// GCC
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 246 "lex.ll"
+#line 248 "lex.ll"
 { KEYWORD_RETURN(SIZEOF); }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 247 "lex.ll"
+#line 249 "lex.ll"
 { KEYWORD_RETURN(STATIC); }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 248 "lex.ll"
+#line 250 "lex.ll"
 { KEYWORD_RETURN(STATICASSERT); }		// C11
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 249 "lex.ll"
+#line 251 "lex.ll"
 { KEYWORD_RETURN(STRUCT); }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 250 "lex.ll"
+#line 252 "lex.ll"
 { KEYWORD_RETURN(SWITCH); }
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 251 "lex.ll"
+#line 253 "lex.ll"
 { KEYWORD_RETURN(THREADLOCAL); }		// C11
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 252 "lex.ll"
+#line 254 "lex.ll"
 { KEYWORD_RETURN(THROW); }				// CFA
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 253 "lex.ll"
+#line 255 "lex.ll"
 { KEYWORD_RETURN(TRY); }				// CFA
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 254 "lex.ll"
+#line 256 "lex.ll"
 { KEYWORD_RETURN(TYPE); }				// CFA
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 255 "lex.ll"
+#line 257 "lex.ll"
 { KEYWORD_RETURN(TYPEDEF); }
 	YY_BREAK
 case 85:
-YY_RULE_SETUP
-#line 256 "lex.ll"
-{ KEYWORD_RETURN(TYPEOF); }				// GCC
-	YY_BREAK
-case 86:
-YY_RULE_SETUP
-#line 257 "lex.ll"
-{ KEYWORD_RETURN(TYPEOF); }				// GCC
-	YY_BREAK
-case 87:
 YY_RULE_SETUP
 #line 258 "lex.ll"
 { KEYWORD_RETURN(TYPEOF); }				// GCC
 	YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 259 "lex.ll"
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 260 "lex.ll"
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 259 "lex.ll"
+#line 261 "lex.ll"
 { KEYWORD_RETURN(UNION); }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 260 "lex.ll"
+#line 262 "lex.ll"
 { KEYWORD_RETURN(UNSIGNED); }
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 261 "lex.ll"
+#line 263 "lex.ll"
 { KEYWORD_RETURN(VOID); }
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 262 "lex.ll"
+#line 264 "lex.ll"
 { KEYWORD_RETURN(VOLATILE); }
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 263 "lex.ll"
+#line 265 "lex.ll"
 { KEYWORD_RETURN(VOLATILE); }			// GCC
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 264 "lex.ll"
+#line 266 "lex.ll"
 { KEYWORD_RETURN(VOLATILE); }			// GCC
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 265 "lex.ll"
+#line 267 "lex.ll"
 { KEYWORD_RETURN(WHILE); }
 	YY_BREAK
@@ -2459,25 +2249,25 @@
 case 95:
 YY_RULE_SETUP
-#line 268 "lex.ll"
+#line 270 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 269 "lex.ll"
+#line 271 "lex.ll"
 { ATTRIBUTE_RETURN(); }
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 270 "lex.ll"
+#line 272 "lex.ll"
 { BEGIN BKQUOTE; }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 271 "lex.ll"
+#line 273 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 272 "lex.ll"
+#line 274 "lex.ll"
 { BEGIN 0; }
 	YY_BREAK
@@ -2485,35 +2275,35 @@
 case 100:
 YY_RULE_SETUP
-#line 275 "lex.ll"
+#line 277 "lex.ll"
 { NUMERIC_RETURN(ZERO); }				// CFA
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 276 "lex.ll"
+#line 278 "lex.ll"
 { NUMERIC_RETURN(ONE); }				// CFA
 	YY_BREAK
 case 102:
-YY_RULE_SETUP
-#line 277 "lex.ll"
-{ NUMERIC_RETURN(INTEGERconstant); }
-	YY_BREAK
-case 103:
-YY_RULE_SETUP
-#line 278 "lex.ll"
-{ NUMERIC_RETURN(INTEGERconstant); }
-	YY_BREAK
-case 104:
 YY_RULE_SETUP
 #line 279 "lex.ll"
 { NUMERIC_RETURN(INTEGERconstant); }
 	YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 280 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 281 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 280 "lex.ll"
+#line 282 "lex.ll"
 { NUMERIC_RETURN(FLOATINGconstant); }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 281 "lex.ll"
+#line 283 "lex.ll"
 { NUMERIC_RETURN(FLOATINGconstant); }
 	YY_BREAK
@@ -2521,10 +2311,10 @@
 case 107:
 YY_RULE_SETUP
-#line 284 "lex.ll"
+#line 286 "lex.ll"
 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 285 "lex.ll"
+#line 287 "lex.ll"
 { *strtext += std::string( yytext ); }
 	YY_BREAK
@@ -2532,5 +2322,5 @@
 /* rule 109 can match eol */
 YY_RULE_SETUP
-#line 286 "lex.ll"
+#line 288 "lex.ll"
 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
 	YY_BREAK
@@ -2539,10 +2329,10 @@
 case 110:
 YY_RULE_SETUP
-#line 290 "lex.ll"
+#line 292 "lex.ll"
 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 291 "lex.ll"
+#line 293 "lex.ll"
 { *strtext += std::string( yytext ); }
 	YY_BREAK
@@ -2550,285 +2340,292 @@
 /* rule 112 can match eol */
 YY_RULE_SETUP
-#line 292 "lex.ll"
-{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(STRINGliteral); }
+#line 294 "lex.ll"
+{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
 	YY_BREAK
 /* " stop highlighting */
+/* common character/string constant */
 case 113:
 YY_RULE_SETUP
-#line 295 "lex.ll"
+#line 298 "lex.ll"
 { rm_underscore(); *strtext += std::string( yytext ); }
 	YY_BREAK
 case 114:
-YY_RULE_SETUP
-#line 296 "lex.ll"
+/* rule 114 can match eol */
+YY_RULE_SETUP
+#line 299 "lex.ll"
+{}						// continuation
+	YY_BREAK
+case 115:
+YY_RULE_SETUP
+#line 300 "lex.ll"
 { *strtext += std::string( yytext ); } // unknown escape character
 	YY_BREAK
 /* punctuation */
-case 115:
-YY_RULE_SETUP
-#line 299 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
 case 116:
-YY_RULE_SETUP
-#line 300 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 117:
-YY_RULE_SETUP
-#line 301 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 118:
-YY_RULE_SETUP
-#line 302 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 119:
 YY_RULE_SETUP
 #line 303 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 120:
+case 117:
 YY_RULE_SETUP
 #line 304 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 121:
+case 118:
 YY_RULE_SETUP
 #line 305 "lex.ll"
-{ ASCIIOP_RETURN(); }					// also operator
-	YY_BREAK
-case 122:
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 119:
 YY_RULE_SETUP
 #line 306 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 123:
+case 120:
 YY_RULE_SETUP
 #line 307 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
+case 121:
+YY_RULE_SETUP
+#line 308 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 122:
+YY_RULE_SETUP
+#line 309 "lex.ll"
+{ ASCIIOP_RETURN(); }					// also operator
+	YY_BREAK
+case 123:
+YY_RULE_SETUP
+#line 310 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 308 "lex.ll"
+#line 311 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 125:
+YY_RULE_SETUP
+#line 312 "lex.ll"
 { ASCIIOP_RETURN(); }					// also operator
 	YY_BREAK
-case 125:
-YY_RULE_SETUP
-#line 309 "lex.ll"
+case 126:
+YY_RULE_SETUP
+#line 313 "lex.ll"
 { NAMEDOP_RETURN(ELLIPSIS); }
 	YY_BREAK
 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
-case 126:
-YY_RULE_SETUP
-#line 312 "lex.ll"
+case 127:
+YY_RULE_SETUP
+#line 316 "lex.ll"
 { RETURN_VAL('['); }
 	YY_BREAK
-case 127:
-YY_RULE_SETUP
-#line 313 "lex.ll"
+case 128:
+YY_RULE_SETUP
+#line 317 "lex.ll"
 { RETURN_VAL(']'); }
 	YY_BREAK
-case 128:
-YY_RULE_SETUP
-#line 314 "lex.ll"
+case 129:
+YY_RULE_SETUP
+#line 318 "lex.ll"
 { RETURN_VAL('{'); }
 	YY_BREAK
-case 129:
-YY_RULE_SETUP
-#line 315 "lex.ll"
+case 130:
+YY_RULE_SETUP
+#line 319 "lex.ll"
 { RETURN_VAL('}'); }
 	YY_BREAK
 /* operators */
-case 130:
-YY_RULE_SETUP
-#line 318 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
 case 131:
-YY_RULE_SETUP
-#line 319 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 132:
-YY_RULE_SETUP
-#line 320 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 133:
-YY_RULE_SETUP
-#line 321 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 134:
 YY_RULE_SETUP
 #line 322 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 135:
+case 132:
 YY_RULE_SETUP
 #line 323 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 136:
+case 133:
 YY_RULE_SETUP
 #line 324 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 137:
+case 134:
 YY_RULE_SETUP
 #line 325 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 138:
+case 135:
 YY_RULE_SETUP
 #line 326 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 139:
+case 136:
 YY_RULE_SETUP
 #line 327 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 140:
+case 137:
 YY_RULE_SETUP
 #line 328 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 141:
+case 138:
 YY_RULE_SETUP
 #line 329 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 142:
+case 139:
 YY_RULE_SETUP
 #line 330 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 143:
+case 140:
 YY_RULE_SETUP
 #line 331 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
+case 141:
+YY_RULE_SETUP
+#line 332 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 142:
+YY_RULE_SETUP
+#line 333 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 143:
+YY_RULE_SETUP
+#line 334 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 333 "lex.ll"
+#line 335 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 145:
+YY_RULE_SETUP
+#line 337 "lex.ll"
 { NAMEDOP_RETURN(ICR); }
 	YY_BREAK
-case 145:
-YY_RULE_SETUP
-#line 334 "lex.ll"
+case 146:
+YY_RULE_SETUP
+#line 338 "lex.ll"
 { NAMEDOP_RETURN(DECR); }
 	YY_BREAK
-case 146:
-YY_RULE_SETUP
-#line 335 "lex.ll"
+case 147:
+YY_RULE_SETUP
+#line 339 "lex.ll"
 { NAMEDOP_RETURN(EQ); }
 	YY_BREAK
-case 147:
-YY_RULE_SETUP
-#line 336 "lex.ll"
+case 148:
+YY_RULE_SETUP
+#line 340 "lex.ll"
 { NAMEDOP_RETURN(NE); }
 	YY_BREAK
-case 148:
-YY_RULE_SETUP
-#line 337 "lex.ll"
+case 149:
+YY_RULE_SETUP
+#line 341 "lex.ll"
 { NAMEDOP_RETURN(LS); }
 	YY_BREAK
-case 149:
-YY_RULE_SETUP
-#line 338 "lex.ll"
+case 150:
+YY_RULE_SETUP
+#line 342 "lex.ll"
 { NAMEDOP_RETURN(RS); }
 	YY_BREAK
-case 150:
-YY_RULE_SETUP
-#line 339 "lex.ll"
+case 151:
+YY_RULE_SETUP
+#line 343 "lex.ll"
 { NAMEDOP_RETURN(LE); }
 	YY_BREAK
-case 151:
-YY_RULE_SETUP
-#line 340 "lex.ll"
+case 152:
+YY_RULE_SETUP
+#line 344 "lex.ll"
 { NAMEDOP_RETURN(GE); }
 	YY_BREAK
-case 152:
-YY_RULE_SETUP
-#line 341 "lex.ll"
+case 153:
+YY_RULE_SETUP
+#line 345 "lex.ll"
 { NAMEDOP_RETURN(ANDAND); }
 	YY_BREAK
-case 153:
-YY_RULE_SETUP
-#line 342 "lex.ll"
+case 154:
+YY_RULE_SETUP
+#line 346 "lex.ll"
 { NAMEDOP_RETURN(OROR); }
 	YY_BREAK
-case 154:
-YY_RULE_SETUP
-#line 343 "lex.ll"
+case 155:
+YY_RULE_SETUP
+#line 347 "lex.ll"
 { NAMEDOP_RETURN(ARROW); }
 	YY_BREAK
-case 155:
-YY_RULE_SETUP
-#line 344 "lex.ll"
+case 156:
+YY_RULE_SETUP
+#line 348 "lex.ll"
 { NAMEDOP_RETURN(PLUSassign); }
 	YY_BREAK
-case 156:
-YY_RULE_SETUP
-#line 345 "lex.ll"
+case 157:
+YY_RULE_SETUP
+#line 349 "lex.ll"
 { NAMEDOP_RETURN(MINUSassign); }
 	YY_BREAK
-case 157:
-YY_RULE_SETUP
-#line 346 "lex.ll"
+case 158:
+YY_RULE_SETUP
+#line 350 "lex.ll"
 { NAMEDOP_RETURN(MULTassign); }
 	YY_BREAK
-case 158:
-YY_RULE_SETUP
-#line 347 "lex.ll"
+case 159:
+YY_RULE_SETUP
+#line 351 "lex.ll"
 { NAMEDOP_RETURN(DIVassign); }
 	YY_BREAK
-case 159:
-YY_RULE_SETUP
-#line 348 "lex.ll"
+case 160:
+YY_RULE_SETUP
+#line 352 "lex.ll"
 { NAMEDOP_RETURN(MODassign); }
 	YY_BREAK
-case 160:
-YY_RULE_SETUP
-#line 349 "lex.ll"
+case 161:
+YY_RULE_SETUP
+#line 353 "lex.ll"
 { NAMEDOP_RETURN(ANDassign); }
 	YY_BREAK
-case 161:
-YY_RULE_SETUP
-#line 350 "lex.ll"
+case 162:
+YY_RULE_SETUP
+#line 354 "lex.ll"
 { NAMEDOP_RETURN(ORassign); }
 	YY_BREAK
-case 162:
-YY_RULE_SETUP
-#line 351 "lex.ll"
+case 163:
+YY_RULE_SETUP
+#line 355 "lex.ll"
 { NAMEDOP_RETURN(ERassign); }
 	YY_BREAK
-case 163:
-YY_RULE_SETUP
-#line 352 "lex.ll"
+case 164:
+YY_RULE_SETUP
+#line 356 "lex.ll"
 { NAMEDOP_RETURN(LSassign); }
 	YY_BREAK
-case 164:
-YY_RULE_SETUP
-#line 353 "lex.ll"
+case 165:
+YY_RULE_SETUP
+#line 357 "lex.ll"
 { NAMEDOP_RETURN(RSassign); }
 	YY_BREAK
 /* CFA, operator identifier */
-case 165:
-YY_RULE_SETUP
-#line 356 "lex.ll"
+case 166:
+YY_RULE_SETUP
+#line 360 "lex.ll"
 { IDENTIFIER_RETURN(); }				// unary
 	YY_BREAK
-case 166:
-YY_RULE_SETUP
-#line 357 "lex.ll"
+case 167:
+YY_RULE_SETUP
+#line 361 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
-case 167:
-YY_RULE_SETUP
-#line 358 "lex.ll"
+case 168:
+YY_RULE_SETUP
+#line 362 "lex.ll"
 { IDENTIFIER_RETURN(); }		// binary
 	YY_BREAK
@@ -2859,7 +2656,7 @@
 	  an argument list.
 	*/
-case 168:
-YY_RULE_SETUP
-#line 385 "lex.ll"
+case 169:
+YY_RULE_SETUP
+#line 389 "lex.ll"
 {
 	// 1 or 2 character unary operator ?
@@ -2874,15 +2671,15 @@
 	YY_BREAK
 /* unknown characters */
-case 169:
-YY_RULE_SETUP
-#line 397 "lex.ll"
+case 170:
+YY_RULE_SETUP
+#line 401 "lex.ll"
 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
 	YY_BREAK
-case 170:
-YY_RULE_SETUP
-#line 399 "lex.ll"
+case 171:
+YY_RULE_SETUP
+#line 403 "lex.ll"
 ECHO;
 	YY_BREAK
-#line 2887 "Parser/lex.cc"
+#line 2684 "Parser/lex.cc"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(COMMENT):
@@ -3181,5 +2978,5 @@
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 822 )
+			if ( yy_current_state >= 826 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
@@ -3209,9 +3006,9 @@
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 822 )
+		if ( yy_current_state >= 826 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 821);
+	yy_is_jam = (yy_current_state == 825);
 
 	return yy_is_jam ? 0 : yy_current_state;
@@ -3900,5 +3697,5 @@
 #define YYTABLES_NAME "yytables"
 
-#line 399 "lex.ll"
+#line 403 "lex.ll"
 
 
Index: src/Parser/lex.h
===================================================================
--- src/Parser/lex.h	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/lex.h	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep 22 08:58:10 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jun  3 21:53:39 2015
-// Update Count     : 335
+// Last Modified On : Sat Jun  6 07:44:39 2015
+// Update Count     : 338
 //
 
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/lex.ll	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Wed Jun  3 22:24:07 2015
- * Update Count     : 336
+ * Last Modified On : Fri Jun  5 17:50:17 2015
+ * Update Count     : 373
  */
 
@@ -27,5 +27,5 @@
 #include "lex.h"
 #include "ParseNode.h"
-#include "parser.h"									// YACC generated definitions based on C++ grammar
+#include "parser.h"										// YACC generated definitions based on C++ grammar
 
 char *yyfilename;
@@ -34,5 +34,5 @@
 #define WHITE_RETURN(x)									// do nothing
 #define NEWLINE_RETURN()	WHITE_RETURN('\n')
-#define RETURN_VAL(x)		yylval.tok.str = new std::string(yytext); \
+#define RETURN_VAL(x)		yylval.tok.str = new std::string( yytext ); \
 		                        yylval.tok.loc.file = yyfilename; \
 		                        yylval.tok.loc.line = yylineno; \
@@ -114,4 +114,6 @@
 hex_escape "\\""x""_"?{hex_digits}
 escape_seq {simple_escape}|{octal_escape}|{hex_escape}|{universal_char}
+cwide_prefix "L"|"U"|"u"
+swide_prefix {cwide_prefix}|"u8"
 
 				// display/white-space characters
@@ -275,12 +277,12 @@
 "0"				{ NUMERIC_RETURN(ZERO); }				// CFA
 "1"				{ NUMERIC_RETURN(ONE); }				// CFA
-{decimal_constant}	{ NUMERIC_RETURN(INTEGERconstant); }
-{octal_constant}	{ NUMERIC_RETURN(INTEGERconstant); }
-{hex_constant}		{ NUMERIC_RETURN(INTEGERconstant); }
+{decimal_constant} { NUMERIC_RETURN(INTEGERconstant); }
+{octal_constant} { NUMERIC_RETURN(INTEGERconstant); }
+{hex_constant}	{ NUMERIC_RETURN(INTEGERconstant); }
 {floating_constant}	{ NUMERIC_RETURN(FLOATINGconstant); }
 {hex_floating_constant}	{ NUMERIC_RETURN(FLOATINGconstant); }
 
 				/* character constant, allows empty value */
-"L"?"_"?[']		{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
+({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
 <QUOTE>[^'\\\n]* { *strtext += std::string( yytext ); }
 <QUOTE>['\n]	{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
@@ -288,11 +290,13 @@
 
 				/* string constant */
-"L"?"_"?["]		{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
+({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
 <STRING>[^"\\\n]* { *strtext += std::string( yytext ); }
-<STRING>["\n]	{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(STRINGliteral); }
+<STRING>["\n]	{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
 				/* " stop highlighting */
 
+				/* common character/string constant */
 <QUOTE,STRING>{escape_seq} { rm_underscore(); *strtext += std::string( yytext ); }
-<QUOTE,STRING>[\\]	{ *strtext += std::string( yytext ); } // unknown escape character
+<QUOTE,STRING>"\\"{h_white}*"\n" {}						// continuation
+<QUOTE,STRING>"\\" { *strtext += std::string( yytext ); } // unknown escape character
 
 				/* punctuation */
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/parser.cc	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -5190,5 +5190,5 @@
 /* Line 1806 of yacc.c  */
 #line 297 "parser.yy"
-    { (yyval.constant) = new ConstantNode(ConstantNode::Integer, (yyvsp[(1) - (1)].tok)); }
+    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
     break;
 
@@ -5197,5 +5197,5 @@
 /* Line 1806 of yacc.c  */
 #line 298 "parser.yy"
-    { (yyval.constant) = new ConstantNode(ConstantNode::Float, (yyvsp[(1) - (1)].tok)); }
+    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
     break;
 
@@ -5204,5 +5204,5 @@
 /* Line 1806 of yacc.c  */
 #line 299 "parser.yy"
-    { (yyval.constant) = new ConstantNode(ConstantNode::Character, (yyvsp[(1) - (1)].tok)); }
+    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
     break;
 
@@ -5211,5 +5211,5 @@
 /* Line 1806 of yacc.c  */
 #line 323 "parser.yy"
-    { (yyval.constant) = new ConstantNode(ConstantNode::String, (yyvsp[(1) - (1)].tok)); }
+    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
     break;
 
@@ -5218,5 +5218,5 @@
 /* Line 1806 of yacc.c  */
 #line 324 "parser.yy"
-    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->append( (yyvsp[(2) - (2)].tok) ); }
+    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
     break;
 
@@ -5659,5 +5659,5 @@
 /* Line 1806 of yacc.c  */
 #line 538 "parser.yy"
-    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList((*(yyvsp[(1) - (5)].en),*(yyvsp[(3) - (5)].en),*(yyvsp[(5) - (5)].en)))); }
+    { (yyval.en) = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en)) ) ); }
     break;
 
@@ -5673,5 +5673,5 @@
 /* Line 1806 of yacc.c  */
 #line 542 "parser.yy"
-    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList(( *(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ))); }
+    { (yyval.en) = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en)) ) ); }
     break;
 
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 44b5ca043a6e8e4574929a092ba5d3004b59264d)
+++ src/Parser/parser.yy	(revision 59db6897195376150fdc27245cae3d51cc615cd4)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun  4 21:38:06 2015
-// Update Count     : 1021
+// Last Modified On : Sat Jun  6 20:18:36 2015
+// Update Count     : 1026
 // 
 
@@ -295,7 +295,7 @@
 		// ENUMERATIONconstant is not included here; it is treated as a variable with type
 		// "enumeration constant".
-	INTEGERconstant								{ $$ = new ConstantNode(ConstantNode::Integer, $1); }
-	| FLOATINGconstant							{ $$ = new ConstantNode(ConstantNode::Float, $1); }
-	| CHARACTERconstant							{ $$ = new ConstantNode(ConstantNode::Character, $1); }
+	INTEGERconstant								{ $$ = new ConstantNode( ConstantNode::Integer, $1 ); }
+	| FLOATINGconstant							{ $$ = new ConstantNode( ConstantNode::Float, $1 ); }
+	| CHARACTERconstant							{ $$ = new ConstantNode( ConstantNode::Character, $1 ); }
 	;
 
@@ -321,6 +321,6 @@
 
 string_literal_list:									// juxtaposed strings are concatenated
-	STRINGliteral								{ $$ = new ConstantNode(ConstantNode::String, $1); }
-	| string_literal_list STRINGliteral			{ $$ = $1->append( $2 ); }
+	STRINGliteral								{ $$ = new ConstantNode( ConstantNode::String, $1 ); }
+	| string_literal_list STRINGliteral			{ $$ = $1->appendstr( $2 ); }
 	;
 
@@ -536,9 +536,9 @@
 	logical_OR_expression
 	| logical_OR_expression '?' comma_expression ':' conditional_expression
-		{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList((*$1,*$3,*$5))); }
+		{ $$ = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*$1, *$3, *$5) ) ); }
 	| logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
 		{ $$=new CompositeExprNode(new OperatorNode(OperatorNode::NCond),$1,$4); }
 	| logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
-		{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList(( *$1, *$3, *$5 ))); }
+		{ $$ = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*$1, *$3, *$5) ) ); }
 	;
 
