Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/CodeGen/CodeGenerator.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug  4 13:35:30 2016
-// Update Count     : 352
+// Last Modified On : Tue Dec 13 14:51:27 2016
+// Update Count     : 362
 //
 
@@ -57,4 +57,10 @@
 		if ( decl->get_extension() ) {
 			output << "__extension__ ";
+		} // if
+	} // extension
+
+	void CodeGenerator::asmName( DeclarationWithType * decl ) {
+		if ( ConstantExpr * asmName = decl->get_asmName() ) {
+			output << " asm ( " << asmName->get_constant()->get_value() << " )";
 		} // if
 	} // extension
@@ -141,4 +147,6 @@
 		} // if
 
+		asmName( functionDecl );
+
 		// acceptAll( functionDecl->get_oldDecls(), *this );
 		if ( functionDecl->get_statements() ) {
@@ -153,4 +161,6 @@
 		handleStorageClass( objectDecl );
 		output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
+
+		asmName( objectDecl );
 
 		if ( objectDecl->get_init() ) {
Index: src/CodeGen/CodeGenerator.h
===================================================================
--- src/CodeGen/CodeGenerator.h	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/CodeGen/CodeGenerator.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug  4 13:37:07 2016
-// Update Count     : 38
+// Last Modified On : Tue Dec 13 13:51:53 2016
+// Update Count     : 39
 //
 
@@ -108,4 +108,6 @@
 		};
 
+		void asmName( DeclarationWithType *decl );
+
 		void extension( Expression *expr );
 		void extension( Declaration *decl );
Index: src/CodeGen/GenType.cc
===================================================================
--- src/CodeGen/GenType.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/CodeGen/GenType.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -204,5 +204,5 @@
 	void GenType::visit( ZeroType *zeroType ) {
 		// ideally these wouldn't hit codegen at all, but should be safe to make them ints
-		typeString = "int " + typeString;
+		typeString = "long int " + typeString;
 		handleQualifiers( zeroType );
 	}
@@ -210,5 +210,5 @@
 	void GenType::visit( OneType *oneType ) {
 		// ideally these wouldn't hit codegen at all, but should be safe to make them ints
-		typeString = "int " + typeString;
+		typeString = "long int " + typeString;
 		handleQualifiers( oneType );
 	}
Index: src/CodeGen/OperatorTable.cc
===================================================================
--- src/CodeGen/OperatorTable.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/CodeGen/OperatorTable.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Thu Apr 14 16:48:27 2016
-// Update Count     : 9
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Dec 13 14:33:05 2016
+// Update Count     : 10
 //
 
@@ -21,5 +21,5 @@
 		const OperatorInfo tableValues[] = {
 			{	"?[?]",		"",		"_operator_index",				OT_INDEX			},
-			{	"?{}",		"=",		"_constructor",					OT_CTOR				},
+			{	"?{}",		"=",	"_constructor",					OT_CTOR				},
 			{	"^?{}",		"",		"_destructor",					OT_DTOR				},
 			{	"?()",		"",		"_operator_call",				OT_CALL				},
Index: src/Common/Assert.cc
===================================================================
--- src/Common/Assert.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Common/Assert.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -1,10 +1,10 @@
-// 
+//
 // Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
 //
 // The contents of this file are covered under the licence agreement in the
 // file "LICENCE" distributed with Cforall.
-// 
-// Assert.cc -- 
-// 
+//
+// Assert.cc --
+//
 // Author           : Peter A. Buhr
 // Created On       : Thu Aug 18 13:26:59 2016
@@ -12,5 +12,5 @@
 // Last Modified On : Fri Aug 19 17:07:08 2016
 // Update Count     : 10
-// 
+//
 
 #include <assert.h>
@@ -35,4 +35,6 @@
 	va_start( args, fmt );
 	vfprintf( stderr, fmt, args );
+	va_end( args );
+	fprintf( stderr, "\n" );
 	abort();
 }
@@ -43,3 +45,2 @@
 // compile-command: "make install" //
 // End:  //
-
Index: src/Common/utility.h
===================================================================
--- src/Common/utility.h	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Common/utility.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Sep 23 11:46:47 2016
-// Update Count     : 28
+// Last Modified On : Wed Dec 14 21:25:25 2016
+// Update Count     : 31
 //
 
@@ -36,5 +36,5 @@
 }
 
-template<typename T, typename U>
+template< typename T, typename U >
 struct maybeBuild_t {
 	static T * doit( const U *orig ) {
Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/InitTweak/FixInit.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -346,5 +346,5 @@
 
 			if ( VariableExpr * function = dynamic_cast< VariableExpr * > ( appExpr->get_function() ) ) {
-				if ( function->get_var()->get_linkage() == LinkageSpec::Intrinsic ) {
+				if ( LinkageSpec::isBuiltin( function->get_var()->get_linkage() ) ) {
 					// optimization: don't need to copy construct in order to call intrinsic functions
 					return appExpr;
Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/InitTweak/InitTweak.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -304,4 +304,15 @@
 
 	namespace {
+		DeclarationWithType * getCalledFunction( Expression * expr );
+
+		template<typename CallExpr>
+		DeclarationWithType * handleDerefCalledFunction( CallExpr * expr ) {
+			// (*f)(x) => should get "f"
+			std::string name = getFunctionName( expr );
+			assertf( name == "*?", "Unexpected untyped expression: %s", name.c_str() );
+			assertf( ! expr->get_args().empty(), "Can't get called function from dereference with no arguments" );
+			return getCalledFunction( expr->get_args().front() );
+		}
+
 		DeclarationWithType * getCalledFunction( Expression * expr ) {
 			assert( expr );
@@ -312,4 +323,8 @@
 			} else if ( CastExpr * castExpr = dynamic_cast< CastExpr * >( expr ) ) {
 				return getCalledFunction( castExpr->get_arg() );
+			} else if ( UntypedExpr * untypedExpr = dynamic_cast< UntypedExpr * >( expr ) ) {
+				return handleDerefCalledFunction( untypedExpr );
+			} else if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * > ( expr ) ) {
+				return handleDerefCalledFunction( appExpr );
 			}
 			return nullptr;
@@ -377,4 +392,15 @@
 
 	namespace {
+		std::string funcName( Expression * func );
+
+		template<typename CallExpr>
+		std::string handleDerefName( CallExpr * expr ) {
+			// (*f)(x) => should get name "f"
+			std::string name = getFunctionName( expr );
+			assertf( name == "*?", "Unexpected untyped expression: %s", name.c_str() );
+			assertf( ! expr->get_args().empty(), "Can't get function name from dereference with no arguments" );
+			return funcName( expr->get_args().front() );
+		}
+
 		std::string funcName( Expression * func ) {
 			if ( NameExpr * nameExpr = dynamic_cast< NameExpr * >( func ) ) {
@@ -388,4 +414,8 @@
 			} else if ( UntypedMemberExpr * memberExpr = dynamic_cast< UntypedMemberExpr * > ( func ) ) {
 				return funcName( memberExpr->get_member() );
+			} else if ( UntypedExpr * untypedExpr = dynamic_cast< UntypedExpr * >( func ) ) {
+				return handleDerefName( untypedExpr );
+			} else if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( func ) ) {
+				return handleDerefName( appExpr );
 			} else {
 				assertf( false, "Unexpected expression type being called as a function in call expression" );
@@ -395,4 +425,7 @@
 
 	std::string getFunctionName( Expression * expr ) {
+		// there's some unforunate overlap here with getCalledFunction. Ideally this would be able to use getCalledFunction and
+		// return the name of the DeclarationWithType, but this needs to work for NameExpr and UntypedMemberExpr, where getCalledFunction
+		// can't possibly do anything reasonable.
 		if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( expr ) ) {
 			return funcName( appExpr->get_function() );
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Makefile.am	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -41,5 +41,5 @@
 driver_cfa_cpp_SOURCES = ${SRC}
 driver_cfa_cpp_LDADD = ${LEXLIB} -ldl			# yywrap
-driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT
+driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT -O2
 driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
 
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Makefile.in	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -69,4 +69,6 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
 DIST_COMMON = $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk \
 	$(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \
@@ -259,4 +261,7 @@
 BACKEND_CC = @BACKEND_CC@
 CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
 CCDEPMODE = @CCDEPMODE@
 CFA_BACKEND_CC = @CFA_BACKEND_CC@
@@ -293,4 +298,5 @@
 LIBS = @LIBS@
 LTLIBOBJS = @LTLIBOBJS@
+MACHINE_TYPE = @MACHINE_TYPE@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -324,5 +330,9 @@
 am__untar = @am__untar@
 bindir = @bindir@
+build = @build@
 build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
 builddir = @builddir@
 datadir = @datadir@
@@ -331,5 +341,9 @@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+host = @host@
 host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
 htmldir = @htmldir@
 includedir = @includedir@
@@ -418,5 +432,5 @@
 driver_cfa_cpp_SOURCES = ${SRC}
 driver_cfa_cpp_LDADD = ${LEXLIB} -ldl			# yywrap
-driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT
+driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT -O2
 driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
 all: $(BUILT_SOURCES)
Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/DeclarationNode.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct  3 18:03:08 2016
-// Update Count     : 651
+// Last Modified On : Tue Dec 13 14:43:38 2016
+// Update Count     : 660
 //
 
@@ -48,10 +48,11 @@
 		type( nullptr ),
 		storageClass( NoStorageClass ),
+		bitfieldWidth( nullptr ),
 		isInline( false ),
 		isNoreturn( false ),
-		bitfieldWidth( nullptr ),
-		initializer( nullptr ),
 		hasEllipsis( false ),
 		linkage( ::linkage ),
+		asmName( nullptr ),
+		initializer( nullptr ),
 		extension( false ) {
 
@@ -75,4 +76,5 @@
 	delete type;
 	delete bitfieldWidth;
+	// asmName, no delete, passed to next stage
 	delete initializer;
 }
@@ -90,4 +92,5 @@
 	newnode->set_next( maybeClone( get_next() ) );
 	newnode->linkage = linkage;
+	newnode->asmName = maybeClone( asmName );
 
 //	newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
@@ -283,5 +286,5 @@
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->type = nullptr;
-	assert( ! newnode->name ); 
+	assert( ! newnode->name );
 //	newnode->variable.name = name;
 	newnode->name = name;
@@ -372,4 +375,5 @@
 	newnode->type = new TypeData( TypeData::Builtin );
 	newnode->builtin = bt;
+	newnode->type->builtintype = newnode->builtin;
 	return newnode;
 } // DeclarationNode::newBuiltinType
@@ -640,4 +644,10 @@
 }
 
+DeclarationNode * DeclarationNode::addAsmName( ConstantExpr * newname ) {
+	assert( ! asmName );
+	asmName = newname;
+	return this;
+}
+
 DeclarationNode * DeclarationNode::addBitfield( ExpressionNode * size ) {
 	bitfieldWidth = size;
@@ -946,10 +956,10 @@
 
 	if ( type ) {
-		return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
+		return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, asmName, maybeBuild< Initializer >(initializer) )->set_extension( extension );
 	} // if
 
 	if ( ! isInline && ! isNoreturn ) {
 		assertf( name, "ObjectDecl are assumed to have names\n" );
-		return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
+		return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_asmName( asmName )->set_extension( extension );
 	} // if
 
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/ExpressionNode.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -46,5 +46,5 @@
 // type.
 
-static Type::Qualifiers emptyQualifiers;				// no qualifiers on constants
+Type::Qualifiers emptyQualifiers;				// no qualifiers on constants
 
 static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
@@ -172,4 +172,10 @@
 } // build_constantStr
 
+Expression *build_constantZeroOne( const std::string & str ) {
+	Expression * ret = new ConstantExpr( Constant( str == "0" ? (Type*)new ZeroType( emptyQualifiers ) : (Type*)new OneType( emptyQualifiers ), str ) );
+	delete &str;										// created by lex
+	return ret;
+} // build_constantChar
+
 Expression * build_field_name_FLOATINGconstant( const std::string & str ) {
 	// str is of the form A.B -> separate at the . and return member expression
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/ParseNode.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct  3 18:03:08 2016
-// Update Count     : 636
+// Last Modified On : Tue Dec 13 15:37:33 2016
+// Update Count     : 643
 //
 
@@ -154,4 +154,5 @@
 Expression * build_constantFloat( const std::string &str );
 Expression * build_constantChar( const std::string &str );
+Expression * build_constantZeroOne( const std::string &str );
 ConstantExpr * build_constantStr( const std::string &str );
 Expression * build_field_name_FLOATINGconstant( const std::string & str );
@@ -204,5 +205,5 @@
 	enum Aggregate { Struct, Union, Trait, NoAggregate };
 	enum TypeClass { Otype, Dtype, Ftype, NoTypeClass };
-	enum BuiltinType { Valist };
+	enum BuiltinType { Valist, Zero, One, NoBuiltinType };
 
 	static const char * storageName[];
@@ -256,4 +257,5 @@
 	DeclarationNode * addAssertions( DeclarationNode * );
 	DeclarationNode * addName( std::string * );
+	DeclarationNode * addAsmName( ConstantExpr * );
 	DeclarationNode * addBitfield( ExpressionNode * size );
 	DeclarationNode * addVarArgs();
@@ -308,11 +310,12 @@
 	TypeData * type;
 	StorageClass storageClass;
+	ExpressionNode * bitfieldWidth;
 	bool isInline, isNoreturn;
-	std::list< std::string > attributes;
-	ExpressionNode * bitfieldWidth;
 	std::unique_ptr<ExpressionNode> enumeratorValue;
-	InitializerNode * initializer;
 	bool hasEllipsis;
 	LinkageSpec::Spec linkage;
+	ConstantExpr *asmName;
+	std::list< std::string > attributes;
+	InitializerNode * initializer;
 	bool extension = false;
 	std::string error;
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/TypeData.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Sep 24 11:14:26 2016
-// Update Count     : 415
+// Last Modified On : Tue Dec 13 13:40:33 2016
+// Update Count     : 420
 //
 
@@ -215,6 +215,6 @@
 		break;
 	  case Builtin:
-		assert( false );
-		// newtype->builtin = builtin;
+		assert( builtintype == DeclarationNode::Zero || builtintype == DeclarationNode::One );
+		newtype->builtintype = builtintype;
 		break;
 	} // switch
@@ -444,5 +444,13 @@
 		return buildTypeof( td );
 	  case TypeData::Builtin:
-		return new VarArgsType( buildQualifiers( td ) );
+		if(td->builtintype == DeclarationNode::Zero) {
+			return new ZeroType( emptyQualifiers );
+		}
+		else if(td->builtintype == DeclarationNode::One) {
+			return new OneType( emptyQualifiers );
+		}
+		else {
+			return new VarArgsType( buildQualifiers( td ) );
+		}
 	  case TypeData::Symbolic:
 	  case TypeData::Enum:
@@ -574,4 +582,7 @@
 		const_cast<TypeData *>(td)->basictype = DeclarationNode::Int;
 		goto Integral;
+	  default:
+	  	assert(false);
+		return nullptr;
 	} // switch
 
@@ -710,5 +721,5 @@
 } // buildTypeof
 
-Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) {
+Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, ConstantExpr *asmName, Initializer * init ) {
 	if ( td->kind == TypeData::Function ) {
 		FunctionDecl * decl;
@@ -732,5 +743,5 @@
 		} // for
 		buildList( td->function.oldDeclList, decl->get_oldDecls() );
-		return decl;
+		return decl->set_asmName( asmName );
 	} else if ( td->kind == TypeData::Aggregate ) {
 		return buildAggregate( td );
@@ -740,5 +751,5 @@
 		return buildSymbolic( td, name, sc );
 	} else {
-		return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn );
+		return (new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn ))->set_asmName( asmName );
 	} // if
 	return nullptr;
@@ -758,5 +769,5 @@
 			break;
 		  default:
-			ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall ) ) );
+			ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall, nullptr ) ) );
 		} // switch
 	} else {
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/TypeData.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -5,11 +5,11 @@
 // file "LICENCE" distributed with Cforall.
 //
-// TypeData.h -- 
+// TypeData.h --
 //
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct  3 12:34:08 2016
-// Update Count     : 142
+// Last Modified On : Tue Dec 13 13:39:39 2016
+// Update Count     : 143
 //
 
@@ -74,4 +74,5 @@
 	DeclarationNode::Signedness signedness = DeclarationNode::NoSignedness;
 	DeclarationNode::Length length = DeclarationNode::NoLength;
+	DeclarationNode::BuiltinType builtintype = DeclarationNode::NoBuiltinType;
 	typedef std::bitset< DeclarationNode::NoQualifier > Qualifiers;
 	Qualifiers qualifiers;
@@ -110,5 +111,5 @@
 TupleType * buildTuple( const TypeData * );
 TypeofType * buildTypeof( const TypeData * );
-Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = nullptr );
+Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, ConstantExpr *asmName, Initializer * init = nullptr );
 FunctionType * buildFunction( const TypeData * );
 
Index: src/Parser/lex.cc
===================================================================
--- src/Parser/lex.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/lex.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -382,6 +382,6 @@
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 183
-#define YY_END_OF_BUFFER 184
+#define YY_NUM_RULES 185
+#define YY_END_OF_BUFFER 186
 /* This struct is not used in this scanner,
    but its presence is necessary. */
@@ -391,105 +391,106 @@
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[895] =
+static yyconst flex_int16_t yy_accept[905] =
     {   0,
-        0,    0,    0,    0,    0,    0,  118,  118,  121,  121,
-      184,  182,    7,    9,    8,  141,  120,  103,  146,  149,
-      117,  128,  129,  144,  142,  132,  143,  135,  145,  108,
-      109,  110,  133,  134,  151,  153,  152,  154,  182,  103,
-      126,  182,  127,  147,  103,  105,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  130,  150,  131,  148,    7,  182,    4,    4,
-      183,  106,  183,  107,  118,  119,  125,  121,  122,    7,
-        9,    0,    8,  158,  177,  103,    0,  170,  140,  163,
-      171,  168,  155,  166,  156,  167,  165,    0,  114,    3,
-
-        0,  169,  113,  111,    0,    0,  111,  111,    0,    0,
-      111,  110,  110,  110,    0,  110,  138,  139,  137,  159,
-      161,  157,  162,  160,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  104,
-      176,    0,  120,  117,  103,    0,    0,  173,    0,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,   38,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,   57,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  172,  164,    7,    0,    0,    0,
-
-        2,    0,    5,  106,    0,    0,    0,  118,    0,  124,
-      123,  123,    0,    0,    0,  121,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  120,  120,  123,  123,
+      186,  184,    7,    9,    8,  143,  122,  105,  148,  151,
+      119,  130,  131,  146,  144,  134,  145,  137,  147,  110,
+      111,  112,  135,  136,  153,  155,  154,  156,  184,  105,
+      128,  184,  129,  149,  105,  107,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  132,  152,  133,  150,    7,  184,    4,
+        4,  185,  108,  185,  109,  120,  121,  127,  123,  124,
+        7,    9,    0,    8,  160,  179,  105,    0,  172,  142,
+      165,  173,  170,  157,  168,  158,  169,  167,    0,  116,
+
+        3,    0,  171,  115,  113,    0,    0,  113,  113,    0,
+        0,  113,  112,  112,  112,    0,  112,  140,  141,  139,
+      161,  163,  159,  164,  162,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  136,  114,  115,    0,  115,  115,    0,    0,    6,
-      115,  111,    0,    0,    0,  115,    0,  111,  111,  111,
-      111,    0,  112,    0,    0,  110,  110,  110,  110,    0,
-      174,  175,    0,  180,  178,    0,    0,    0,  104,    0,
-        0,    0,    0,    0,    0,    0,    0,  103,   17,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,   14,  103,  103,
-
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,   51,  103,  103,  103,
-       64,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,   90,  103,  103,  103,  103,
-      103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
-        0,  123,    0,    0,    0,    0,    0,  123,    0,    0,
-      181,    0,    0,    0,    0,    0,    0,    0,  115,    0,
-      115,    0,  115,    0,  115,    0,    0,  115,    0,  111,
-      111,    0,    0,  112,  112,    0,  112,    0,  112,  110,
-      110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,  179,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,   21,  103,   24,  103,   27,
-      103,  103,  103,  103,  103,  103,  103,   41,  103,   43,
-      103,  103,  103,  103,  103,  103,  103,   56,  103,   67,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,   98,  103,  103,    0,
+      106,  178,    0,  122,  119,  105,    0,    0,  175,    0,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,   38,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,   57,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  174,  166,    7,
+
+        0,    0,    0,    2,    0,    5,  108,    0,    0,    0,
+      120,    0,  126,  125,  125,    0,    0,    0,  123,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  123,    0,    0,    0,    0,    0,  115,
-        0,    0,    0,    0,    0,    0,    0,  112,  112,    0,
-
-      116,    0,  112,  112,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  103,  103,   22,
-      103,  103,  103,  103,  103,  103,  103,   15,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,   23,   25,  103,   32,  103,  103,  103,  103,
-       40,  103,  103,  103,  103,   49,  103,  103,   54,  103,
-      103,   71,  103,  103,  103,   77,  103,  103,  103,  103,
-      103,   87,   89,  103,  103,   95,  103,  103,  102,    0,
+        0,    0,    0,    0,  138,  116,  117,    0,  117,  117,
+        0,    0,    6,  117,  113,    0,    0,    0,  117,    0,
+      113,  113,  113,  113,    0,  114,    0,    0,  112,  112,
+      112,  112,    0,  176,  177,    0,  182,  180,    0,    0,
+        0,  106,    0,    0,    0,    0,    0,    0,    0,    0,
+      105,   17,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+
+       14,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,   51,
+      105,  105,  105,   64,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,   91,
+      105,  105,  105,  105,  105,  105,  105,  105,    0,    0,
+        0,    0,    0,    0,    0,    0,  125,    0,    0,    0,
+        0,    0,  125,    0,    0,  183,    0,    0,    0,    0,
+        0,    0,    0,  117,    0,  117,    0,  117,    0,  117,
+        0,    0,  117,    0,  113,  113,    0,    0,  114,  114,
+        0,  114,    0,  114,  112,  112,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,  181,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+       21,  105,   24,  105,   27,  105,  105,  105,  105,  105,
+      105,  105,   41,  105,   43,  105,  105,  105,  105,  105,
+      105,  105,   56,  105,   67,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,   99,  105,  105,  105,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  116,    0,
-
-        0,  112,  116,  116,  116,  116,    0,  112,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  103,    0,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,   59,  103,  103,  103,
-      103,  103,  103,  103,  103,   28,  103,  103,  103,   39,
-       42,   45,  103,  103,   52,  103,   61,   68,  103,  103,
-       76,   78,   81,   82,   84,   85,  103,  103,   92,  103,
-      103,    0,    1,    0,    0,    0,    0,    0,    0,  106,
-        0,    0,    0,  123,    0,    0,    0,    0,  116,    0,
-      116,  116,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,  103,  103,   18,  103,  103,  103,  103,  103,  103,
-      103,   16,  103,  103,  103,   33,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,   36,   37,
-      103,   48,   53,  103,  103,  103,   91,  103,  103,    0,
+      125,    0,    0,    0,    0,    0,  117,    0,    0,    0,
+
+        0,    0,    0,    0,  114,  114,    0,  118,    0,  114,
+      114,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  105,  105,   22,  105,  105,  105,
+      105,  105,  105,  105,   15,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,   23,
+       25,  105,   32,  105,  105,  105,  105,   40,  105,  105,
+      105,  105,   49,  105,  105,   54,  105,  105,   71,   72,
+      105,  105,  105,   78,  105,  105,  105,  105,  105,   88,
+       90,  105,  105,   96,  105,  105,  103,  105,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   10,   11,   29,   55,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,   60,   62,   65,
-      103,  103,   79,   93,  103,  103,   35,  103,   47,   72,
-       73,  103,   96,   99,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  103,   69,  103,  103,
-
-       12,  103,  103,   30,   34,  103,  103,  103,   66,  103,
-      103,  103,  103,  103,  103,  103,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,  118,    0,    0,
+      114,  118,  118,  118,  118,    0,  114,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  105,    0,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,   59,  105,  105,  105,  105,
+      105,  105,  105,  105,   28,  105,  105,  105,   39,   42,
+       45,  105,  105,   52,  105,   61,   68,  105,  105,   77,
+       79,   82,   83,   85,   86,  105,  105,   93,  105,  105,
+      104,    0,    1,    0,    0,    0,    0,    0,    0,  108,
+        0,    0,    0,  125,    0,    0,    0,    0,  118,    0,
+
+      118,  118,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  105,  105,   18,  105,  105,  105,  105,  105,  105,
+      105,   16,  105,  105,  105,   33,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,   36,   37,
+      105,   48,   53,  105,  105,  105,   92,  105,  105,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   10,   11,   29,   55,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,   60,   62,   65,
+      105,  105,   80,   94,  105,  105,   35,  105,   47,   73,
+       74,  105,   97,  100,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,  105,   69,  105,  105,
+       12,  105,  105,   30,   34,  105,  105,  105,   66,  105,
+      105,  105,  105,  105,  105,  105,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
-      103,  103,  103,  103,  103,  103,  103,   50,   63,   74,
-       80,   94,  100,  103,  103,  103,    0,    0,    0,    0,
-        0,    0,    0,    0,  103,  103,   13,   19,  103,  103,
-       31,  103,  103,  103,   26,   46,   88,    0,    0,  103,
-      103,  103,  103,  103,  103,   75,  101,  103,   86,   20,
-      103,  103,   44,   83,  103,  103,  103,  103,  103,  103,
-      103,   97,   70,    0
-
+      105,  105,  105,  105,  105,  105,  105,   50,   63,   75,
+       81,   95,  101,  105,  105,  105,    0,    0,    0,    0,
+        0,    0,    0,    0,  105,  105,   13,   19,  105,  105,
+       31,  105,  105,  105,   26,   46,   89,    0,    0,  105,
+      105,  105,  105,  105,  105,   76,  102,  105,   87,   20,
+      105,  105,   44,   84,  105,  105,  105,  105,  105,  105,
+
+      105,   98,   70,    0
     } ;
 
@@ -539,247 +540,249 @@
     } ;
 
-static yyconst flex_int16_t yy_base[1069] =
+static yyconst flex_int16_t yy_base[1079] =
     {   0,
-        0,   84, 2307, 2305,   94,    0,  177,  178,  179,  180,
-     2319, 2845,  191, 2845,  197,   55, 2845, 2265,   60,  173,
-     2845, 2845, 2845,   56,  188, 2845,  191,  189,  204,  216,
-      275,    0, 2284, 2845,  216, 2283,  152,  344,  155,  220,
-     2845,  159, 2845,  217,  226, 2845,  185,  154,  212,  251,
-      237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
-      238,  228, 2845,  225, 2845, 2278,  402,  390, 2845, 2287,
-     2845, 2255,  235, 2845,    0, 2845,  426,    0, 2845,  417,
-     2845,  439,  451, 2845,  498, 2254,  264, 2845, 2845, 2845,
-     2845, 2845, 2271, 2845, 2268, 2845, 2845, 2278,  559, 2845,
-
-     2295, 2845,  438,  444,  511,  534,  289,  253,  197,  380,
-      305,    0,  319,  280,  198,  322, 2845, 2845, 2845, 2265,
-     2845, 2845, 2845, 2263, 2260,  218,  255, 2273,  298,  350,
-      368,  312,  440,  398,  405, 2254,  441, 2203,  446, 2232,
-     2845,  335, 2845, 2845,  468, 2226, 2223, 2845, 2196,  439,
-      282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
-      464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
-      489,  503,  496,  521,  276,  515,  516, 2224,  526,  510,
-      519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
-      599,  582,  593,  584, 2845, 2845,  660,  651, 2272,  666,
-
-     2845,  678, 2845, 2219,  607, 2213, 2212,    0,  693, 2845,
-     2845,  684, 2211, 2209, 2206,    0, 2227,  578,  608,  617,
-      654,  679,  650,  683,  684,  687, 2224,  690,  691, 2201,
-     2199, 2845,    0,  683,  710,  686,  700, 2179, 2230, 2845,
-      730,  722,  427,  747,  756,  787,  770,  621, 2845, 2188,
-     2161,    0,  795, 2205,  796,  700, 2845, 2181, 2156,  809,
-     2845, 2845, 2188, 2845, 2845,  728,  733, 2165, 2163,  701,
-     2159, 2158, 2156,    0, 2153,    0, 2122,  736,  746,  747,
-      716,  689,  748,  566,  789,  659,  801,  751,  754,  785,
-      776,  787,  808,  796,  739,  711,  806, 2152,  807,  815,
-
-      817,  821,  809,  819,  827,  830,  831,  832,  833,  834,
-      839,  840,  841,  842,  846,  853,  854,  844,  847,  855,
-     2151,  860,  862,  861,  866,  864,  867,  869,  870,  872,
-      873,  874,  878,  875,  883, 2149,  882,  928,  885,  888,
-      894,  899,  892,  956,  958, 2143, 2140, 2139,    0, 2138,
-        0,  945,  949, 2136,    0, 2133,    0, 2132,    0, 2153,
-     2845,  930,  944, 2131, 2126,    0, 2125,    0, 2845,  959,
-      979,  970, 2845,  985, 1025, 2124, 1001, 1047, 2122, 2845,
-     2845,  943,  987, 1033,  986, 1072,  310, 1064,  987, 2845,
-     2845, 2119, 2115, 2111,    0, 2109,    0, 2107,    0, 2104,
-
-        0, 2845,  913,  947,  964,  966, 1005,  927, 1049,  939,
-     1051,  968,  991,  986, 1041, 1053, 1003, 1059, 1063, 1066,
-     1023, 1064, 1062, 1065,  978, 2105, 1072, 2103, 1078, 2100,
-     1071, 1074, 1076, 1080, 1091, 1093, 1095, 2097, 1094, 2096,
-     1082, 1098, 1099, 1100, 1101, 1105, 1106, 2095, 1107, 2093,
-     1110, 1112, 1111, 1117, 1118, 1113, 1119, 1123, 1126, 1127,
-     1129, 1130, 1131, 1140, 1142, 1143, 2090, 1144, 1147, 1195,
-     2084,    0, 2083,    0, 2082,    0, 2080,    0, 1190, 2077,
-        0, 2074,    0, 2073, 2072, 2070,    0, 2067,    0, 1197,
-     2064, 1203, 1219, 1205, 1244, 1210, 1202, 1200, 2845, 1260,
-
-     1278, 1271, 2075, 2050, 2060, 2057,    0, 2054,    0, 2053,
-        0, 2052,    0, 2050,    0, 2047,    0, 1164, 1152, 2047,
-     1184, 1182, 1226, 1157, 1227, 1196, 1254, 1146, 1237, 1255,
-     1256, 1204, 1258, 1271, 1261, 1260, 1292, 1274, 1262, 1277,
-     1278, 1280, 2046, 1186, 1289, 2045, 1279, 1282, 1290, 1295,
-     2043, 1299, 1300, 1301, 1303, 2040, 1306, 1302, 2037, 1310,
-     1311, 2036, 1309, 1312, 1315, 2035, 1220, 1314, 1316, 1322,
-     1326, 1333, 2033, 1328, 1329, 2030, 1330, 1335, 2029, 2078,
-     2023,    0, 2020,    0, 2019,    0, 2018,    0, 2016,    0,
-     1983,    0, 1981,    0, 1980,    0, 1379, 1385, 1413, 1396,
-
-     1977, 2845, 1402, 1351, 1389, 1403, 1974, 2845, 1973,    0,
-     1972,    0, 1970,    0, 1967,    0,    0,    0, 1967,    0,
-     1390, 1336, 1397, 1365, 1345, 1392, 1393, 1409, 1381, 1407,
-     1412, 1414, 1419, 1420, 1422, 1424, 1427, 1431,  926, 1429,
-     1432, 1438, 1433, 1435, 1440, 1966, 1437, 1441, 1445, 1965,
-     1963, 1960, 1450, 1453, 1959, 1455, 1958, 1956, 1456, 1459,
-     1953, 1952, 1951, 1949, 1942, 1940, 1458, 1461, 1939, 1464,
-     1462, 1986, 2845, 1929,    0, 1925,    0,    0,    0, 1924,
-        0,    0,    0, 2845,    0,    0,    0,    0, 1511, 1918,
-     2845, 2845, 1517, 1917,    0, 1916,    0,    0,    0,    0,
-
-     1914, 1474, 1468, 1914, 1443, 1493, 1498, 1476, 1504, 1505,
-     1494, 1913, 1334, 1509, 1506, 1510, 1511, 1545, 1525, 1518,
-     1543, 1530, 1523, 1529, 1531, 1534, 1535, 1539, 1912, 1910,
-     1540, 1907, 1906, 1542, 1538, 1544, 1905, 1546, 1550,    0,
-        0,    0, 1900, 1897, 1896, 1596,    0, 1895, 1893, 1890,
-     1889, 1888, 1889, 1886, 1885, 1884, 1552, 1557, 1573, 1549,
-     1551, 1553, 1575, 1555, 1577, 1582, 1607, 1882, 1583, 1879,
-     1584, 1589, 1585, 1590, 1591, 1594, 1878, 1597, 1877, 1875,
-     1872, 1598, 1871, 1870, 1865, 1862, 1861, 1860, 1858, 1851,
-     1849, 1848, 1845, 1844, 1843, 1841, 1600, 1827, 1601, 1605,
-
-     1608, 1602, 1609, 1610, 1818, 1614, 1629, 1615, 1817, 1604,
-     1616, 1625, 1630, 1380, 1631, 1633, 1811, 1804, 1801, 1794,
-     1792, 1791, 1770, 1769, 1768, 1761, 1759, 1758, 1716, 1716,
-     1634, 1636, 1635, 1637, 1640, 1641, 1645, 1715, 1713, 1647,
-     1712, 1711, 1648, 1652, 1653, 1654, 1703, 1701, 1700, 1698,
-     1696, 1476, 1472, 1343, 1657, 1667, 1259, 1656, 1660, 1668,
-     1150, 1671, 1675, 1676, 1031, 1027,  793,  752,  675, 1669,
-     1677, 1680, 1681, 1682, 1684,  645,  607, 1686,  487,  441,
-     1688, 1690,  394,  357, 1693, 1694, 1695, 1697, 1696, 1698,
-     1700,  233,  137, 2845, 1773, 1786, 1799, 1809, 1819, 1832,
-
-     1842, 1855, 1868, 1881, 1889, 1899, 1906, 1913, 1920, 1927,
-     1934, 1941, 1948, 1955, 1962, 1969, 1973, 1981, 1987, 1994,
-     2001, 2008, 2015, 2018, 2025, 2031, 2044, 2057, 2064, 2071,
-     2078, 2085, 2088, 2095, 2098, 2105, 2108, 2115, 2118, 2125,
-     2128, 2135, 2138, 2145, 2148, 2155, 2163, 2170, 2177, 2184,
-     2191, 2194, 2201, 2204, 2211, 2214, 2221, 2227, 2240, 2247,
-     2254, 2257, 2264, 2267, 2274, 2277, 2284, 2287, 2294, 2297,
-     2304, 2307, 2314, 2321, 2324, 2331, 2334, 2341, 2348, 2355,
-     2358, 2365, 2368, 2375, 2378, 2385, 2388, 2395, 2398, 2405,
-     2411, 2424, 2431, 2438, 2441, 2448, 2451, 2458, 2461, 2468,
-
-     2471, 2478, 2481, 2488, 2491, 2498, 2501, 2508, 2511, 2518,
-     2525, 2528, 2535, 2538, 2545, 2548, 2555, 2558, 2561, 2567,
-     2574, 2583, 2590, 2597, 2600, 2607, 2610, 2613, 2619, 2626,
-     2629, 2632, 2635, 2638, 2641, 2644, 2647, 2654, 2657, 2664,
-     2667, 2670, 2673, 2676, 2686, 2693, 2696, 2699, 2702, 2709,
-     2716, 2723, 2726, 2733, 2740, 2747, 2754, 2761, 2768, 2775,
-     2782, 2789, 2796, 2803, 2810, 2817, 2824, 2831
+        0,   84, 2323, 2322,   94,    0,  177,  178,  179,  180,
+     2338, 2866,  191, 2866,  197,   55, 2866, 2283,   60,  173,
+     2866, 2866, 2866,   56,  188, 2866,  191,  189,  204,  216,
+      275,    0, 2300, 2866,  216, 2298,  152,  344,  155,  220,
+     2866,  159, 2866,  217,  226, 2866,  185,  154,  212,  251,
+      237,  270,  235,  257,  241,  279,  193,  305,  314,  333,
+      238,  228,  227, 2866,  225, 2866, 2295,  402,  390, 2866,
+     2306, 2866, 2273,  235, 2866,    0, 2866,  426,    0, 2866,
+      417, 2866,  439,  451, 2866,  498, 2270,  264, 2866, 2866,
+     2866, 2866, 2866, 2286, 2866, 2285, 2866, 2866, 2297,  559,
+
+     2866, 2313, 2866,  438,  444,  511,  534,  289,  253,  197,
+      380,  305,    0,  319,  280,  198,  322, 2866, 2866, 2866,
+     2281, 2866, 2866, 2866, 2278, 2277,  218,  312, 2292,  350,
+      459,  368,  398,  440,  405,  448, 2272,  441, 2219,  458,
+     2247, 2866,  335, 2866, 2866,  321, 2243, 2242, 2866, 2214,
+      444,  297,  433,  372,  425,  454,  434,  461,  570,  455,
+      468,  385,  474,  475,  494,  492,  489,  464,  488,  491,
+      513,  503,  430,  521,  517,  519,  516,  522, 2240,  526,
+      523,  276,  460,  524,  542,  555,  554,  561,  325,  558,
+      584,  552,  600,  586,  593,  588,  595, 2866, 2866,  667,
+
+      655, 2287,  682, 2866,  688, 2866, 2236,  590, 2232, 2230,
+        0,  648, 2866, 2866,  675, 2227, 2224, 2223,    0, 2246,
+      578,  631,  654,  685,  698,  660,  689,  670,  692, 2242,
+      695,  701, 2200, 2198, 2866,    0,  693,  720,  685,  711,
+     2197, 2247, 2866,  737,  745,  666,  757,  763,  797,  780,
+      599, 2866, 2203, 2178,    0,  805, 2224,  806,  617, 2866,
+     2199, 2172,  819, 2866, 2866, 2203, 2866, 2866,  707,  722,
+     2182, 2182,  699, 2177, 2174, 2171,    0, 2170,    0, 2141,
+      743,  724,  739,  689,  741,  720,  623,  759,  762,  804,
+      681,  795,  749,  746,  799,  801,  765,  784,  803,  811,
+
+     2170,  814,  818,  827,  831,  817,  821,  833,  835,  841,
+      842,  834,  843,  844,  845,  847,  849,  857,  858,  860,
+      851,  859,  866, 2167,  867,  868,  869,  871,  873,  874,
+      763,  875,  876,  880,  881,  884,  887,  888,  885, 2164,
+      891,  936,  894,  897,  905,  899,  901,  902,  965,  961,
+     2160, 2159, 2157,    0, 2154,    0,  952,  956, 2153,    0,
+     2152,    0, 2150,    0, 2169, 2866,  951,  952, 2148, 2145,
+        0, 2143,    0, 2866,  967,  986,  978, 2866,  992, 1032,
+     2140, 1008, 1054, 2136, 2866, 2866,  915,  951, 1040,  993,
+     1079,  956, 1071,  994, 2866, 2866, 2132, 2130, 2128,    0,
+
+     2125,    0, 2123,    0, 2121,    0, 2866,  935,  969,  973,
+      968, 1012,  975, 1056,  992, 1058,  997, 1032,  993, 1000,
+     1060, 1061, 1066, 1070, 1073, 1030, 1071, 1069, 1072, 1078,
+     2121,  700, 2118, 1085, 2117, 1079, 1081, 1089, 1087, 1098,
+     1096, 1099, 2116, 1101, 2114, 1105, 1106, 1107, 1109, 1112,
+     1113, 1114, 2111, 1115, 2108, 1117, 1119, 1120, 1118, 1124,
+     1126, 1121, 1136, 1130, 1134, 1135, 1149, 1137, 1138, 1150,
+     1152, 1153, 2107, 1151, 1154, 1167, 1205, 2103,    0, 2101,
+        0, 2098,    0, 2095,    0, 1204, 2094,    0, 2093,    0,
+     2091, 2088, 2085,    0, 2084,    0, 1208, 2083, 1214, 1230,
+
+     1216, 1255, 1221, 1172, 1169, 2866, 1271, 1289, 1282, 2093,
+     2066, 2075, 2074,    0, 2073,    0, 2071,    0, 2068,    0,
+     2065,    0, 2064,    0, 1190, 1159, 2066, 1193, 1195, 1197,
+     1212, 1237, 1231, 1265, 1248, 1266, 1267, 1213, 1268, 1269,
+     1283, 1270, 1271,  234, 1285, 1273, 1274, 1287, 1293, 2064,
+     1306, 1301, 2061, 1290, 1303, 1305, 1308, 2058, 1312, 1309,
+     1311, 1313, 2057, 1314, 1319, 2056, 1316, 1322, 2054, 2051,
+     1315, 1327, 1330, 2050, 1333, 1332, 1336, 1334, 1338, 1345,
+     2049, 1335, 1348, 2047, 1346, 1349, 2044, 1351, 2093, 2039,
+        0, 2037,    0, 2004,    0, 2002,    0, 2001,    0, 1998,
+
+        0, 1995,    0, 1994,    0, 1394, 1404, 1428, 1415, 1993,
+     2866, 1421, 1370, 1391, 1419, 1991, 2866, 1988,    0, 1985,
+        0, 1984,    0, 1983,    0,    0,    0, 1984,    0, 1352,
+     1406, 1408, 1359, 1354, 1409, 1415, 1412, 1411, 1423, 1433,
+     1425, 1430, 1435, 1437, 1439, 1448, 1442, 1449, 1440, 1444,
+     1453, 1450, 1452, 1456, 1981, 1458, 1460, 1463, 1980, 1979,
+     1977, 1466, 1467, 1974, 1470, 1973, 1972, 1469, 1473, 1970,
+     1963, 1961, 1960, 1957, 1953, 1475, 1479, 1949, 1476, 1477,
+     1945, 1992, 2866, 1938,    0, 1937,    0,    0,    0, 1938,
+        0,    0,    0, 2866,    0,    0,    0,    0, 1525, 1932,
+
+     2866, 2866, 1531, 1931,    0, 1930,    0,    0,    0,    0,
+     1928, 1488, 1483, 1928, 1491, 1507, 1518, 1490, 1519, 1521,
+     1508, 1927, 1525, 1529, 1527, 1541, 1530, 1384, 1543, 1539,
+     1558, 1547, 1549, 1512, 1545, 1552, 1553, 1554, 1926, 1924,
+     1557, 1921, 1920, 1556, 1537, 1560, 1919, 1561, 1564,    0,
+        0,    0, 1914, 1911, 1910, 1612,    0, 1909, 1907, 1904,
+     1903, 1902, 1903, 1900, 1899, 1898, 1568, 1572, 1566, 1577,
+     1590, 1570, 1578, 1579, 1591, 1596, 1625, 1896, 1598, 1893,
+     1599, 1603, 1604, 1608, 1606, 1612, 1892, 1613, 1891, 1889,
+     1886, 1614, 1885, 1884, 1879, 1872, 1870, 1869, 1866, 1865,
+
+     1864, 1862, 1845, 1836, 1835, 1832, 1616, 1828, 1617, 1622,
+     1620, 1619, 1624, 1626, 1825, 1628, 1644, 1630, 1818, 1631,
+     1639, 1645, 1647, 1634, 1649, 1651, 1813, 1812, 1791, 1790,
+     1789, 1782, 1780, 1779, 1737, 1735, 1733, 1732, 1730, 1732,
+     1652, 1654, 1655, 1657, 1659, 1662, 1663, 1731, 1729, 1668,
+     1727, 1724, 1669, 1670, 1664, 1675, 1719, 1718, 1671, 1629,
+     1564, 1468, 1350, 1269, 1678, 1681, 1239, 1682, 1688, 1689,
+     1238, 1690, 1692, 1696, 1206, 1171, 1157, 1035, 1031, 1691,
+     1697, 1700, 1704, 1702, 1706,  998,  560, 1701,  527,  395,
+     1707, 1710,  357,  300, 1708, 1713, 1715, 1718, 1716, 1719,
+
+     1720,  233,  137, 2866, 1794, 1807, 1820, 1830, 1840, 1853,
+     1863, 1876, 1889, 1902, 1910, 1920, 1927, 1934, 1941, 1948,
+     1955, 1962, 1969, 1976, 1983, 1990, 1994, 2002, 2008, 2015,
+     2022, 2029, 2036, 2039, 2046, 2052, 2065, 2078, 2085, 2092,
+     2099, 2106, 2109, 2116, 2119, 2126, 2129, 2136, 2139, 2146,
+     2149, 2156, 2159, 2166, 2169, 2176, 2184, 2191, 2198, 2205,
+     2212, 2215, 2222, 2225, 2232, 2235, 2242, 2248, 2261, 2268,
+     2275, 2278, 2285, 2288, 2295, 2298, 2305, 2308, 2315, 2318,
+     2325, 2328, 2335, 2342, 2345, 2352, 2355, 2362, 2369, 2376,
+     2379, 2386, 2389, 2396, 2399, 2406, 2409, 2416, 2419, 2426,
+
+     2432, 2445, 2452, 2459, 2462, 2469, 2472, 2479, 2482, 2489,
+     2492, 2499, 2502, 2509, 2512, 2519, 2522, 2529, 2532, 2539,
+     2546, 2549, 2556, 2559, 2566, 2569, 2576, 2579, 2582, 2588,
+     2595, 2604, 2611, 2618, 2621, 2628, 2631, 2634, 2640, 2647,
+     2650, 2653, 2656, 2659, 2662, 2665, 2668, 2675, 2678, 2685,
+     2688, 2691, 2694, 2697, 2707, 2714, 2717, 2720, 2723, 2730,
+     2737, 2744, 2747, 2754, 2761, 2768, 2775, 2782, 2789, 2796,
+     2803, 2810, 2817, 2824, 2831, 2838, 2845, 2852
     } ;
 
-static yyconst flex_int16_t yy_def[1069] =
+static yyconst flex_int16_t yy_def[1079] =
     {   0,
-      894,    1,  895,  895,  894,    5,  896,  896,  897,  897,
-      894,  894,  894,  894,  894,  894,  894,  898,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,   31,  894,  894,  894,  894,  894,  894,  899,  898,
-      894,  894,  894,  894,  898,  894,  898,  898,  898,  898,
-      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
-      898,  898,  894,  894,  894,  894,  894,  900,  894,  894,
-      894,  901,  894,  894,  902,  894,  894,  903,  894,  894,
-      894,  894,  894,  894,  894,  898,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-
-      904,  894,  894,   30,  894,  894,  894,  894,  905,   30,
-      894,   31,  894,  894,   31,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  906,
-      894,  894,  894,  894,  898,  907,  908,  894,  894,  898,
-      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
-      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
-      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
-      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
-      898,  898,  898,  898,  894,  894,  894,  900,  900,  900,
-
-      894,  900,  894,  901,  894,  909,  910,  902,  894,  894,
-      894,  894,  911,  912,  913,  903,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  914,
-      915,  894,   99,  894,  894,  894,  894,   99,  904,  894,
-       99,  110,  242,  894,  894,  894,  894,  894,  894,  894,
-      894,  916,  917,  918,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  919,  894,
-      920,  921,  922,  923,  924,  925,  894,  926,  926,  926,
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
-
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
-      926,  926,  926,  927,  928,  929,  930,  931,  932,  933,
-      934,  894,  894,  935,  936,  937,  938,  939,  940,  894,
-      894,  894,  894,  894,  941,  942,  943,  944,  894,  894,
-      894,  894,  894,  894,  894,  375,  894,  371,  378,  894,
-      894,  945,  946,  947,  894,  894,  894,  947,  894,  894,
-      894,  948,  949,  950,  951,  952,  953,  954,  955,  956,
-
-      957,  894,  958,  958,  958,  958,  958,  958,  958,  958,
-      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
-      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
-      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
-      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
-      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
-      958,  958,  958,  958,  958,  958,  958,  958,  958,  959,
-      960,  961,  962,  963,  964,  965,  966,  967,  894,  968,
-      969,  970,  971,  972,  972,  973,  974,  975,  976,  894,
-      490,  894,  894,  977,  894,  977,  894,  894,  894,  894,
-
-      894,  894,  894,  894,  978,  979,  980,  981,  982,  983,
-      984,  985,  986,  987,  988,  989,  990,  991,  991,  991,
-      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
-      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
-      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
-      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
-      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
-      991,  991,  991,  991,  991,  991,  991,  991,  991,  992,
-      993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
-     1003, 1004, 1005, 1006, 1007, 1008,  894,  894,  894,  894,
-
-     1009,  894,  599,  894,  894,  894,  603,  894, 1010, 1011,
-     1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
-     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
-     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
-     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
-     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
-     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
-     1020, 1022,  894, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
-     1030, 1031, 1032,  894, 1033, 1034, 1035, 1036,  894,  689,
-      894,  894,  894, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
-
-     1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046,
-     1047, 1048, 1049, 1050, 1051,  894, 1052, 1037, 1039, 1053,
-     1054, 1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1055, 1056, 1049, 1057, 1050, 1058,
-     1051, 1059, 1060, 1053, 1061, 1054, 1045, 1045, 1045, 1045,
-
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1062, 1055, 1063, 1056,
-     1064, 1057, 1065, 1058, 1066, 1059, 1067, 1060, 1061, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1068, 1062, 1063, 1064,
-     1065, 1039, 1066, 1067, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1068, 1039, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045,    0,  894,  894,  894,  894,  894,  894,
-
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894
+      904,    1,  905,  905,  904,    5,  906,  906,  907,  907,
+      904,  904,  904,  904,  904,  904,  904,  908,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,   31,  904,  904,  904,  904,  904,  904,  909,  908,
+      904,  904,  904,  904,  908,  904,  908,  908,  908,  908,
+      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
+      908,  908,  908,  904,  904,  904,  904,  904,  910,  904,
+      904,  904,  911,  904,  904,  912,  904,  904,  913,  904,
+      904,  904,  904,  904,  904,  904,  908,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+
+      904,  914,  904,  904,   30,  904,  904,  904,  904,  915,
+       30,  904,   31,  904,  904,   31,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      916,  904,  904,  904,  904,  908,  917,  918,  904,  904,
+      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
+      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
+      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
+      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
+      908,  908,  908,  908,  908,  908,  908,  904,  904,  904,
+
+      910,  910,  910,  904,  910,  904,  911,  904,  919,  920,
+      912,  904,  904,  904,  904,  921,  922,  923,  913,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  924,  925,  904,  100,  904,  904,  904,  904,
+      100,  914,  904,  100,  111,  245,  904,  904,  904,  904,
+      904,  904,  904,  904,  926,  927,  928,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  929,  904,  930,  931,  932,  933,  934,  935,  904,
+      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
+      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
+
+      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
+      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
+      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
+      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
+      936,  936,  936,  936,  936,  936,  936,  936,  937,  938,
+      939,  940,  941,  942,  943,  944,  904,  904,  945,  946,
+      947,  948,  949,  950,  904,  904,  904,  904,  904,  951,
+      952,  953,  954,  904,  904,  904,  904,  904,  904,  904,
+      380,  904,  376,  383,  904,  904,  955,  956,  957,  904,
+      904,  904,  957,  904,  904,  904,  958,  959,  960,  961,
+
+      962,  963,  964,  965,  966,  967,  904,  968,  968,  968,
+      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
+      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
+      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
+      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
+      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
+      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
+      968,  968,  968,  968,  968,  968,  969,  970,  971,  972,
+      973,  974,  975,  976,  977,  904,  978,  979,  980,  981,
+      982,  982,  983,  984,  985,  986,  904,  497,  904,  904,
+
+      987,  904,  987,  904,  904,  904,  904,  904,  904,  904,
+      904,  988,  989,  990,  991,  992,  993,  994,  995,  996,
+      997,  998,  999, 1000, 1001, 1001, 1001, 1001, 1001, 1001,
+     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
+     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
+     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
+     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
+     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
+     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1002, 1003,
+     1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
+
+     1014, 1015, 1016, 1017, 1018,  904,  904,  904,  904, 1019,
+      904,  608,  904,  904,  904,  612,  904, 1020, 1021, 1022,
+     1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1030,
+     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
+     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
+     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
+     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
+     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
+     1030, 1032,  904, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
+     1040, 1041, 1042,  904, 1043, 1044, 1045, 1046,  904,  699,
+
+      904,  904,  904, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
+     1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1056,
+     1057, 1058, 1059, 1060, 1061,  904, 1062, 1047, 1049, 1063,
+     1064, 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1065, 1066, 1059, 1067, 1060, 1068,
+
+     1061, 1069, 1070, 1063, 1071, 1064, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1072, 1065, 1073, 1066,
+     1074, 1067, 1075, 1068, 1076, 1069, 1077, 1070, 1071, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1078, 1072, 1073, 1074,
+     1075, 1049, 1076, 1077, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1078, 1049, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+
+     1055, 1055, 1055,    0,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904
     } ;
 
-static yyconst flex_int16_t yy_nxt[2931] =
+static yyconst flex_int16_t yy_nxt[2952] =
     {   0,
        12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
@@ -791,321 +794,324 @@
        50,   51,   52,   53,   18,   54,   18,   55,   18,   18,
        56,   18,   57,   58,   59,   60,   61,   62,   18,   18,
-       18,   63,   64,   65,   66,   67,   84,   92,   85,   85,
-       67,   88,   89,   68,   71,   71,   71,   71,   71,   71,
-
-       71,   71,   71,   71,   72,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   72,
+       63,   64,   65,   66,   67,   68,   85,   93,   86,   86,
+       68,   89,   90,   69,   72,   72,   72,   72,   72,   72,
+
+       72,   72,   72,   72,   73,   72,   72,   72,   72,   72,
        72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
-       72,   72,   72,   72,   72,   71,   73,   71,   71,   72,
-       74,   72,   72,   72,   72,   72,   72,   72,   72,   72,
-       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
-       72,   72,   72,   72,   72,   71,   71,   71,   71,   76,
-       76,   79,   79,  123,  124,   90,  141,   79,   79,   87,
-       76,   76,   80,   81,   82,   82,   82,   80,   82,   81,
-
-       83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
-       95,   99,   99,   99,   99,   99,   99,  252,  894,   94,
-      100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
-       77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
-      104,  104,  105,  105,  119,   87,  120,  121,  148,  263,
-      149,  264,  254,  260,  183,  106,  195,   87,  159,  107,
-      160,  150,  151,  152,   87,  108,  109,  153,  154,  162,
-      155,  110,   87,  156,  157,  145,  163,  106,   87,  182,
-       87,  158,  164,  111,  206,   87,  263,   87,  264,   87,
-       87,  108,  194,   87,  109,  103,  250,  112,  112,  112,
-
-      112,  112,  112,   87,  169,  177,  170,  196,  193,   87,
-      207,  180,  165,  230,  106,  171,  166,  181,  113,  178,
-      251,  167,   87,  258,  114,  168,  179,  172,   87,  263,
-      115,  264,  248,   87,   87,  173,  106,  174,  249,  231,
-      175,  143,  116,  263,  176,  264,  144,  259,  317,  283,
-      114,  125,  280,  503,  249,  126,  127,   87,  128,  191,
-      129,  130,  256,  131,  249,  132,   87,  265,  257,  184,
-      185,  257,  248,   87,  133,  134,  135,  504,  188,  186,
-      249,  263,  187,  264,  271,   87,  189,  265,  145,  256,
-      305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
-
-      894,  264,  192,  197,   81,   82,   82,   82,  197,   87,
-      272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
-       82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
-      894,  264,  209,  282,  211,  255,  263,  267,  264,  211,
-       82,   81,   82,   82,   82,   82,   87,  894,  212,  212,
-      212,  212,   82,   81,   83,   83,   83,   82,  894,  211,
-      241,  241,  241,  241,  241,  241,  242,  242,  242,  242,
-      266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
-       87,  144,  377,  211,  211,   87,   87,  211,  211,   87,
-       87,   87,  286,   87,  894,  211,   87,   87,  211,  243,
-
-      211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
-      219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
-       87,   87,  894,   87,  309,  300,   87,   87,  224,  225,
-      226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
-      299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
-      106,  245,  228,  245,  306,   87,  246,  246,  246,  246,
-      246,  246,   87,  313,   87,  315,  244,   87,   87,  311,
-      314,   87,  106,   87,   87,   87,  323,   87,   87,  322,
-      229,  233,  233,  233,  233,  233,  233,  312,  333,  247,
-      319,  316,  328,  320,  318,   87,   87,  234,  235,  236,
-
-      321,  237,  236,   87,  324,   87,  325,  143,  335,  360,
-      331,  361,   87,   87,  238,  337,  326,  327,   87,  236,
-      235,  236,   87,  329,  237,  332,  236,  287,  288,  289,
-      336,  290,  291,  334,   87,  292,   87,  293,  409,  360,
-      330,  361,  294,  295,  296,   87,  297,  339,  360,  343,
-      361,   87,  200,  201,  338,  340,  346,  200,  341,   87,
-      342,  197,   81,   82,   82,   82,  197,  200,  201,  198,
-      380,  361,  200,  202,  202,  202,  202,  202,  202,  344,
-      201,  360,  347,  361,  344,  360,  345,  361,  202,  202,
-      202,  202,  202,  202,  209,  210,  380,   87,  361,  209,
-
-      202,  202,  202,  202,  202,  202,  352,  352,  352,  352,
-      360,   87,  361,  362,  360,  360,  361,  361,  360,  363,
-      361,  360,  360,  361,  361,  369,  369,  370,  369,  370,
-      894,  411,  371,  371,  371,  371,  371,  371,  373,  353,
-      373,   87,  103,  373,  242,  242,  242,  242,  369,  390,
-      392,  369,  375,  375,  375,  375,  375,  375,  407,  263,
-      373,  264,  373,   87,  263,  372,  264,  373,   87,  105,
-      105,  105,  105,  105,  105,  390,  393,  243,  246,  246,
-      246,  246,  246,  246,  406,  376,  106,  245,   87,  245,
-      424,   87,  246,  246,  246,  246,  246,  246,   87,   87,
-
-       87,  403,  255,   87,  423,  408,   87,  894,  106,  378,
-      378,  378,  378,  378,  378,  383,  404,  405,  105,  105,
-      105,  105,  105,  105,  416,  234,  415,  236,   87,  237,
-      236,  112,  112,  112,  112,  112,  112,   87,  385,   87,
-      386,   87,  379,  418,  387,   87,  410,  236,   87,  236,
-      388,  255,  237,   87,  236,  419,  420,  422,   87,   87,
-       87,   87,  389,  417,  260,  421,  386,   87,  412,   87,
-      387,   87,  427,   87,  413,  414,  425,  426,  428,   87,
-      429,  430,   87,   87,   87,   87,   87,  434,  435,  431,
-      436,   87,   87,   87,   87,  438,   87,  439,   87,   87,
-
-      432,  433,  441,  443,  437,   87,   87,   87,  440,  442,
-      444,  445,   87,   87,   87,  447,   87,  448,   87,   87,
-      449,   87,   87,  450,   87,   87,   87,   87,  446,  451,
-       87,  453,  452,  458,   87,   87,  143,   87,  454,  457,
-       87,  456,  455,  464,   87,  462,   87,  459,  463,  460,
-      721,   87,  461,  466,  467,  465,  468,  344,  201,  469,
-      201,  360,  344,  361,  345,   87,  199,  211,  211,  211,
-      211,  352,  352,  352,  352,  360,  518,  361,   87,   87,
-       87,  371,  371,  371,  371,  371,  371,  370,  495,  370,
-      523,   87,  371,  371,  371,  371,  371,  371,  496,   87,
-
-      479,  490,  490,  490,  490,  490,  490,  233,  233,  233,
-      233,  233,  233,  525,  495,  519,   87,  234,   87,  236,
-       87,  237,  236,  242,  242,  242,  242,  105,  105,  498,
-       87,  520,  495,  527,  491,  499,  499,  521,   87,  236,
-      374,  236,  497,   87,  237,  542,  236,  375,  375,  375,
-      375,  375,  375,  383,  498,   87,  377,   87,  495,  528,
-      529,  499,  499,  234,  235,  236,  522,  237,  236,  378,
-      378,  378,  378,  378,  378,   87,  385,  533,  386,   87,
-      376,  538,  387,   87,  894,  236,  235,  236,  388,  500,
-      237,  500,  236,   87,  501,  501,  501,  501,  501,  501,
-
-      389,   87,  379,   87,  386,   87,  530,  385,  387,  386,
-      524,   87,  526,  387,   87,   87,   87,   87,   87,  505,
-      535,  531,  532,   87,   87,  540,   87,  502,   87,  534,
-       87,  389,   87,  536,   87,  386,  541,  539,  543,  387,
-      537,  547,  544,   87,  545,   87,   87,   87,  546,  549,
-       87,   87,   87,   87,  553,  548,  551,   87,   87,   87,
-      550,  552,   87,   87,   87,   87,  555,  559,  557,   87,
-       87,   87,  554,  562,  556,   87,  560,  558,   87,   87,
-      567,   87,   87,   87,  563,  561,  570,  566,  571,  564,
-      565,  569,   87,  568,   87,   87,   87,  201,   87,   87,
-
-      574,  630,   87,  580,   87,  573,  577,  572,  579,   87,
-      575,  576,  211,  211,  211,  211,   87,  622,  578,  490,
-      490,  490,  490,  490,  490,  375,  375,  375,  375,  375,
-      375,  626,  645,  621,   87,  234,   87,  236,   87,  237,
-      236,  378,  378,  378,  378,  378,  378,  495,   87,  602,
-      495,  623,  491,  628,  624,  495,   87,  236,  492,  236,
-      496,  598,  237,  598,  236,  601,  599,  599,  599,  599,
-      599,  599,   87,  495,  493,  602,  495,  634,   87,   87,
-      662,  495,  501,  501,  501,  501,  501,  501,  500,   87,
-      500,  625,  627,  501,  501,  501,  501,  501,  501,  600,
-
-      603,  603,  603,  603,  603,  603,   87,   87,   87,  631,
-       87,   87,   87,   87,   87,  639,  604,  629,  605,  635,
-      606,  605,  632,   87,  637,  638,   87,  633,  636,   87,
-       87,   87,   87,  607,   87,  640,  641,  644,  605,  643,
-      605,   87,   87,  606,   87,  605,  642,   87,  647,  648,
-      646,   87,   87,   87,   87,   87,  650,  649,   87,  656,
-      651,   87,   87,   87,   87,  653,   87,   87,   87,  652,
-      654,  657,  658,  655,   87,  664,  663,  660,   87,  667,
-       87,   87,   87,  659,  661,   87,   87,   87,   87,  668,
-      666,  669,  762,  691,  691,  704,  665,   87,  894,  670,
-
-      671,  490,  490,  490,  490,  490,  490,  599,  599,  599,
-      599,  599,  599,  598,  707,  598,  691,   87,  599,  599,
-      599,  599,  599,  599,  603,  603,  603,  603,  603,  603,
-      706,  691,   87,   87,  597,  689,  689,  689,  689,  689,
-      689,  692,   87,  692,   87,   87,  692,  702,  844,   87,
-      711,  604,  709,  605,  691,  606,  605,  607,  705,   87,
-      703,   87,  712,  692,   87,  692,   87,  708,  690,  710,
-      692,   87,   87,  605,   87,  605,   87,  713,  606,   87,
-      605,   87,  719,   87,   87,   87,  715,   87,  714,   87,
-       87,  717,   87,   87,  716,   87,  722,   87,  718,  724,
-
-      720,  727,   87,  725,  723,   87,  730,   87,   87,  726,
-       87,   87,  728,   87,   87,  729,   87,  734,  735,  736,
-       87,  755,  731,  737,  733,  738,   87,  894,   87,  739,
-      754,  869,  732,  689,  689,  689,  689,  689,  689,  603,
-      603,  603,  603,  603,  603,   87,   87,  753,  758,  604,
-       87,  605,  756,  606,  605,  757,   87,   87,   87,  759,
-      760,   87,   87,   87,  761,  765,  690,  764,  767,  770,
-       87,  605,  693,  605,  763,   87,  606,   87,  605,  769,
-      768,   87,   87,   87,  766,  771,   87,   87,  772,  773,
-       87,   87,   87,  774,   87,   87,   87,   87,   87,  775,
-
-      777,   87,   87,   87,   87,   87,  783,   87,  776,   87,
-      778,  784,  781,  801,  780,  779,  800,  782,  689,  689,
-      689,  689,  689,  689,  797,   87,  798,   87,  802,   87,
-      799,  807,  805,  804,   87,   87,   87,   87,  808,  809,
-      811,   87,   87,   87,  803,  812,   87,  806,  810,   87,
-       87,  746,   87,   87,   87,  838,   87,   87,  813,   87,
-       87,   87,   87,  833,  835,  836,   87,   87,   87,  814,
-      839,  841,  815,  816,  831,  832,  834,   87,  840,  830,
-      842,   87,   87,   87,  837,   87,   87,   87,   87,   87,
-      857,  843,   87,   87,  845,  856,  861,   87,  858,   87,
-
-       87,  846,  863,  864,   87,   87,   87,  855,   87,   87,
-      859,  872,   87,  865,  862,  867,  860,  866,  870,   87,
-       87,   87,  873,   87,  871,  874,  875,   87,   87,   87,
-      876,  877,   87,   87,   87,  880,   87,  882,   87,  883,
-       87,  878,   87,  881,  879,   87,   87,   87,   87,   87,
-       87,  894,   87,  894,  887,  894,  894,  886,  868,  888,
-      884,  885,  893,   87,   87,   87,  891,   87,   87,  889,
-      890,  894,  892,   69,   69,   69,   69,   69,   69,   69,
-       69,   69,   69,   69,   69,   69,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   78,
-
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   86,  894,  854,   86,  894,   86,   86,   86,
-       86,   86,  140,  853,  894,  851,  140,  140,  140,  140,
-      140,  140,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  204,  894,  850,  204,  894,
-      204,  204,  204,  204,  204,  208,  849,  208,  208,  894,
-      208,  208,  208,  208,  208,  208,  848,  208,  216,   87,
-       87,  216,  216,  216,  216,  216,  216,  216,  216,   87,
-      216,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  253,  253,  894,  253,  829,  894,
-
-      828,  253,  269,  826,  894,  269,  824,  269,  269,  269,
-      269,  269,  273,  894,  273,  822,  894,  820,  273,  275,
-      818,  275,   87,   87,   87,  275,  348,   87,  348,   87,
-       87,   87,  348,  350,   87,  350,   87,   87,   87,  350,
-      354,   87,  354,  894,  796,  794,  354,  356,  894,  356,
-      894,  791,  789,  356,  358,  787,  358,   87,   87,   87,
-      358,  365,   87,  365,   87,   87,   87,  365,  367,  752,
-      367,  749,  748,  746,  367,  382,  205,  382,  384,  384,
-      742,  384,  384,  384,  741,  384,  253,  253,  673,  253,
-      269,   87,   87,  269,   87,  269,  269,  269,  269,  269,
-
-      394,   87,  394,   87,   87,   87,  394,  396,   87,  396,
-       87,   87,   87,  396,  398,   87,  398,   87,   87,   87,
-      398,  273,  700,  273,  400,  699,  400,  697,  695,  693,
-      400,  275,  601,  275,   86,  688,  687,   86,  685,   86,
-       86,   86,   86,   86,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  470,  470,  470,
-      470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
-      471,  683,  471,  681,  679,  677,  471,  473,  675,  473,
-      673,   87,   87,  473,  475,   87,  475,   87,   87,   87,
-      475,  348,   87,  348,  477,   87,  477,   87,   87,   87,
-
-      477,  350,  620,  350,  480,  618,  480,  616,  614,  612,
-      480,  354,  610,  354,  482,  505,  482,  608,  608,  597,
-      482,  356,  596,  356,  484,  594,  484,  485,  485,  592,
-      484,  358,  590,  358,  486,  588,  486,  586,  584,  582,
-      486,  365,   87,  365,  488,   87,  488,   87,   87,   87,
-      488,  367,   87,  367,  494,   87,  494,   87,  494,  517,
-      494,  382,  515,  382,  513,  382,  511,  382,  384,  384,
-      509,  384,  384,  384,  507,  384,  506,  493,  506,  492,
-      489,  487,  506,  508,  361,  508,  361,  485,  483,  508,
-      510,  481,  510,  478,  476,  474,  510,  394,  472,  394,
-
-      512,   87,  512,   87,   87,  402,  512,  396,  401,  396,
-      514,  399,  514,  397,  395,  270,  514,  398,  265,  398,
-      516,  264,  516,  391,  391,  252,  516,  400,  381,  400,
-       86,  381,  240,   86,  374,   86,   86,   86,   86,   86,
-      470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
-      470,  470,  470,  581,  368,  581,  366,  364,  360,  581,
-      471,  359,  471,  583,  357,  583,  355,  351,  349,  583,
-      473,  205,  473,  585,  201,  585,   87,  277,  276,  585,
-      475,  274,  475,  587,  270,  587,  265,  268,  265,  587,
-      477,  263,  477,  589,  262,  589,  261,  240,  232,  589,
-
-      480,   85,  480,  591,   85,  591,   87,  205,  203,  591,
-      482,   85,  482,  484,  122,  484,  117,   87,  894,  484,
-      593,   70,  593,   70,  894,  894,  593,  486,  894,  486,
-      595,  894,  595,  894,  894,  894,  595,  488,  894,  488,
-      494,  894,  494,  894,  494,  894,  494,  384,  894,  384,
-      894,  894,  894,  384,  609,  894,  609,  894,  894,  894,
-      609,  506,  894,  506,  611,  894,  611,  894,  894,  894,
-      611,  508,  894,  508,  613,  894,  613,  894,  894,  894,
-      613,  510,  894,  510,  615,  894,  615,  894,  894,  894,
-      615,  512,  894,  512,  617,  894,  617,  894,  894,  894,
-
-      617,  514,  894,  514,  619,  894,  619,  894,  894,  894,
-      619,  516,  894,  516,   86,  894,  894,   86,  894,   86,
-       86,   86,   86,   86,  672,  672,  672,  672,  672,  672,
-      672,  672,  672,  672,  672,  672,  672,  674,  894,  674,
-      894,  894,  894,  674,  581,  894,  581,  676,  894,  676,
-      894,  894,  894,  676,  583,  894,  583,  678,  894,  678,
-      894,  894,  894,  678,  585,  894,  585,  680,  894,  680,
-      894,  894,  894,  680,  587,  894,  587,  682,  894,  682,
-      894,  894,  894,  682,  589,  894,  589,  684,  894,  684,
-      894,  894,  894,  684,  591,  894,  591,  686,  894,  686,
-
-      894,  894,  894,  686,  593,  894,  593,   86,  894,   86,
-      894,  894,  894,   86,  595,  894,  595,  494,  894,  494,
-      894,  894,  894,  494,  694,  894,  694,  894,  894,  894,
-      694,  609,  894,  609,  696,  894,  696,  894,  894,  894,
-      696,  611,  894,  611,  698,  894,  698,  894,  894,  894,
-      698,  613,  894,  613,  140,  894,  140,  894,  894,  894,
-      140,  615,  894,  615,  701,  894,  701,  617,  894,  617,
-       86,  894,  894,   86,  894,   86,   86,   86,   86,   86,
-      619,  894,  619,  672,  672,  672,  672,  672,  672,  672,
-      672,  672,  672,  672,  672,  672,  740,  894,  740,  894,
-
-      894,  894,  740,  674,  894,  674,  204,  894,  204,  894,
-      894,  894,  204,  676,  894,  676,  743,  894,  743,  678,
-      894,  678,  204,  894,  894,  204,  894,  204,  204,  204,
-      204,  204,  680,  894,  680,  744,  894,  744,  682,  894,
-      682,  684,  894,  684,  745,  894,  745,  686,  894,  686,
-       86,  894,   86,  747,  894,  747,  894,  894,  894,  747,
-      694,  894,  694,  269,  894,  269,  894,  894,  894,  269,
-      696,  894,  696,  750,  894,  750,  698,  894,  698,  140,
-      894,  140,  751,  894,  751,  894,  894,  894,  751,   86,
-      894,  894,   86,  894,   86,   86,   86,   86,   86,  785,
-
-      894,  785,  740,  894,  740,  204,  894,  204,  786,  894,
-      786,  894,  894,  894,  786,  788,  894,  788,  894,  894,
-      894,  788,  790,  894,  790,  894,  894,  894,  790,  792,
-      894,  792,  793,  894,  793,  894,  894,  894,  793,  795,
-      894,  795,  894,  894,  894,  795,  817,  894,  817,  894,
-      894,  894,  817,  819,  894,  819,  894,  894,  894,  819,
-      821,  894,  821,  894,  894,  894,  821,  823,  894,  823,
-      894,  894,  894,  823,  825,  894,  825,  894,  894,  894,
-      825,  827,  894,  827,  894,  894,  894,  827,  619,  894,
-      619,  894,  894,  894,  619,  847,  894,  847,  894,  894,
-
-      894,  847,  680,  894,  680,  894,  894,  894,  680,  684,
-      894,  684,  894,  894,  894,  684,   86,  894,   86,  894,
-      894,  894,   86,  852,  894,  852,  894,  894,  894,  852,
-      140,  894,  140,  894,  894,  894,  140,  204,  894,  204,
-      894,  894,  894,  204,   11,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894
+       72,   72,   72,   72,   72,   72,   72,   72,   72,   73,
+       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   73,   73,   73,   73,   72,   74,   72,   72,   73,
+       75,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   73,   73,   73,   73,   72,   72,   72,   72,   77,
+       77,   80,   80,  124,  125,   91,  142,   80,   80,   88,
+       77,   77,   81,   82,   83,   83,   83,   81,   83,   82,
+
+       84,   84,   84,   83,   92,   94,   88,  143,  147,   99,
+       96,  100,  100,  100,  100,  100,  100,  255,  904,   95,
+      101,   86,   97,   98,   86,  102,  162,  119,  144,   78,
+       78,   78,   78,  145,  148,  103,  104,   88,  105,  105,
+      105,  105,  106,  106,  120,   88,  121,  122,  149,  266,
+      150,  267,  257,  263,  185,  107,  198,  648,  160,  108,
+      161,  151,  152,  153,   88,  109,  110,  154,  155,  163,
+      156,  111,   88,  157,  158,  146,  164,  107,   88,   88,
+       88,  159,  165,  112,  209,   88,   88,   88,  197,   88,
+       88,  109,  196,   88,  110,  104,  253,  113,  113,  113,
+
+      113,  113,  113,   88,  170,  178,  171,  199,  195,   88,
+      210,  181,  166,  233,  107,  172,  167,  182,  114,  179,
+      254,  168,   88,  261,  115,  169,  180,  173,   88,  144,
+      116,   88,  251,  326,  145,  174,  107,  175,  252,  234,
+      176,  144,  117,  266,  177,  267,  145,  262,  183,   88,
+      115,  126,   88,  184,  252,  127,  128,   88,  129,  193,
+      130,  131,  259,  132,  252,  133,   88,  283,  260,  186,
+      187,  260,  251,   88,  134,  135,  136,   88,  190,  188,
+      252,  266,  189,  267,  274,   88,  191,  268,  146,  259,
+      337,  203,  204,  192,  260,  137,  203,  260,  138,  266,
+
+      904,  267,  194,  200,   82,   83,   83,   83,  200,   88,
+      275,  201,  205,  205,  205,  205,  205,  205,   81,   82,
+       83,   83,   83,   81,   88,  139,  140,  212,  213,  266,
+      904,  267,  212,  285,  214,  258,  266,   88,  267,  214,
+       83,   82,   83,   83,   83,   83,  303,   88,  215,  215,
+      215,  215,   83,   82,   84,   84,   84,   83,  904,  214,
+      244,  244,  244,  244,  244,  244,  245,  245,  245,  245,
+      269,  266,  266,  267,  267,  216,  268,   88,  214,  266,
+      270,  267,   88,  214,  214,   88,   88,  214,  214,  266,
+      266,  267,  267,  286,  904,  214,   88,  317,  214,  246,
+
+      214,  217,  214,  284,  218,  220,   88,   88,  288,  221,
+      222,  281,   88,   88,  223,  224,   88,  225,  282,  226,
+       88,  327,  904,  301,  287,  289,   88,   88,  227,  228,
+      229,  104,  306,  106,  106,  106,  106,  106,  106,  311,
+       88,   88,  302,   88,   88,  307,   88,  304,  305,  230,
+      107,  248,  231,  248,  309,   88,  249,  249,  249,  249,
+      249,  249,  310,  308,  313,   88,  247,  312,   88,   88,
+      314,   88,  107,   88,   88,   88,   88,  316,   88,   88,
+      232,  236,  236,  236,  236,  236,  236,  319,  315,  250,
+      318,  320,  325,  323,   88,  321,  322,  237,  238,  239,
+
+      324,  240,  239,  328,   88,  329,   88,   88,  144,  365,
+       88,  366,   88,   88,  241,  330,  331,  333,  335,  239,
+      238,  239,   88,  341,  240,  332,  239,  290,  291,  292,
+      338,  293,  294,  336,  334,  295,   88,  296,   88,  351,
+       88,  339,  297,  298,  299,   88,  300,   88,  385,  212,
+      213,  343,   88,  347,  212,  342,  203,  204,  345,  344,
+      346,  203,  365,  340,  366,  352,  395,  348,  200,   82,
+       83,   83,   83,  200,  385,   88,  201,  205,  205,  205,
+      205,  205,  205,  203,  204,  365,  904,  366,  203,  349,
+      204,  365,  395,  366,  349,  414,  350,  357,  357,  357,
+
+      357,  365,  366,  366,  205,  205,  205,  205,  205,  205,
+      205,  205,  205,  205,  205,  205,  365,  366,  366,  367,
+      365,  382,  366,  365,  368,  366,  365,  374,  366,  365,
+      358,  366,  365,   88,  366,  374,  374,  375,  266,  375,
+      267,   88,  376,  376,  376,  376,  376,  376,  397,  378,
+      374,  378,   88,  266,  378,  267,  420,  411,  374,  380,
+      380,  380,  380,  380,  380,  104,  550,  245,  245,  245,
+      245,  378,   88,  378,  398,  377,   88,  413,  378,  106,
+      106,  106,  106,  106,  106,  249,  249,  249,  249,  249,
+      249,   88,  381,   88,  409,   88,  107,  248,   88,  248,
+
+      246,   88,  249,  249,  249,  249,  249,  249,  408,  410,
+      412,   88,  258,  423,   88,   88,  415,   88,  107,  383,
+      383,  383,  383,  383,  383,  388,  427,  422,  106,  106,
+      106,  106,  106,  106,  416,  237,   88,  239,  461,  240,
+      239,  113,  113,  113,  113,  113,  113,   88,  390,  428,
+      391,   88,  384,   88,  392,   88,   88,  239,  426,  239,
+      393,  258,  240,   88,  239,  421,   88,  424,  425,   88,
+       88,  417,  394,   88,  263,  432,  391,  418,  419,   88,
+      392,  430,  429,   88,  431,   88,   88,   88,  433,  435,
+      434,  436,  439,   88,   88,   88,   88,   88,  440,   88,
+
+      441,   88,  444,   88,  443,  442,  437,  438,  446,   88,
+       88,   88,   88,  445,  448,  449,  447,  450,   88,   88,
+       88,   88,  452,   88,  457,   88,   88,   88,   88,  453,
+      455,  454,   88,   88,  451,  456,   88,   88,  459,   88,
+       88,  464,  458,   88,  144,  463,   88,  462,  460,   88,
+      469,   88,  470,   88,   88,  465,  474,   88,  468,  466,
+      502,  467,  472,  204,  471,  473,  349,  204,  475,  202,
+      503,  349,  476,  350,  214,  214,  214,  214,  357,  357,
+      357,  357,  365,  365,  366,  366,  502,   88,   88,  376,
+      376,  376,  376,  376,  376,  375,  502,  375,  525,  510,
+
+      376,  376,  376,  376,  376,  376,  504,  486,  497,  497,
+      497,  497,  497,  497,  236,  236,  236,  236,  236,  236,
+       88,   88,  502,  511,  237,   88,  239,   88,  240,  239,
+      245,  245,  245,  245,  106,  106,  505,  526,  530,  528,
+      527,  498,  506,  506,   88,   88,  239,  379,  239,   88,
+       88,  240,   88,  239,  380,  380,  380,  380,  380,  380,
+      388,  505,  534,  382,   88,  537,  532,  536,  506,  506,
+      237,  238,  239,  529,  240,  239,  383,  383,  383,  383,
+      383,  383,   88,  390,   88,  391,  904,  381,  545,  392,
+      904,  904,  239,  238,  239,  393,  507,  240,  507,  239,
+
+      535,  508,  508,  508,  508,  508,  508,  394,   88,  384,
+       88,  391,   88,   88,  390,  392,  391,  531,   88,  533,
+      392,   88,   88,   88,   88,   88,  512,  542,  538,  539,
+       88,   88,  547,   88,  509,  540,  541,   88,  394,   88,
+      543,   88,  391,  548,  546,  549,  392,  544,   88,  551,
+       88,   88,  552,   88,  554,  553,  556,   88,   88,   88,
+      558,   88,  555,  557,   88,   88,   88,   88,  559,   88,
+       88,   88,   88,   88,  562,  566,   88,  560,   88,  564,
+      561,  570,   88,  563,  567,  565,   88,   88,   88,   88,
+       88,  571,  568,  569,  578,  574,  572,  575,  573,  577,
+
+      576,   88,   88,   88,   88,   88,   88,  204,  579,   88,
+      582,   88,  581,  589,  580,  587,  585,  502,  611,   88,
+      583,  584,  588,   88,  631,  586,  214,  214,  214,  214,
+      497,  497,  497,  497,  497,  497,  380,  380,  380,  380,
+      380,  380,   88,  502,  611,   88,  237,   88,  239,   88,
+      240,  239,  383,  383,  383,  383,  383,  383,   88,  630,
+      632,  502,  634,  498,   88,   88,  502,  633,  239,  499,
+      239,  503,  607,  240,  607,  239,  610,  608,  608,  608,
+      608,  608,  608,   88,  642,  500,  635,  502,  637,   88,
+       88,   88,  502,  508,  508,  508,  508,  508,  508,  507,
+
+       88,  507,  636,  639,  508,  508,  508,  508,  508,  508,
+      609,  612,  612,  612,  612,  612,  612,   88,   88,   88,
+       88,   88,   88,   88,  904,   88,   88,  613,  638,  614,
+      644,  615,  614,  646,  641,   88,  647,   88,  640,   88,
+      645,  643,   88,  651,  616,   88,  649,  650,  652,  614,
+      653,  614,  654,   88,  615,   88,  614,   88,   88,  656,
+       88,   88,  655,   88,   88,   88,   88,   88,   88,  659,
+      657,   88,  658,  660,   88,  662,  665,  666,  661,   88,
+      663,  664,   88,  667,   88,   88,   88,   88,   88,  668,
+       88,  676,  669,  671,  672,  673,  677,   88,   88,  670,
+
+       88,   88,  675,   88,   88,  904,   88,  777,  674,  712,
+      678,   88,  701,  701,  680,  679,  497,  497,  497,  497,
+      497,  497,  713,  717,  716,  681,  608,  608,  608,  608,
+      608,  608,  607,  701,  607,  701,   88,  608,  608,  608,
+      608,  608,  608,  612,  612,  612,  612,  612,  612,  606,
+      699,  699,  699,  699,  699,  699,  701,  702,   88,  702,
+       88,   88,  702,   88,   88,  714,  613,   88,  614,  715,
+      615,  614,  720,  731,  719,   88,  616,   88,  722,  702,
+      721,  702,   88,  700,  718,   88,  702,   88,  614,   88,
+      614,   88,   88,  615,   88,  614,   88,  725,  723,  724,
+
+       88,   88,   88,  729,   88,   88,  727,  732,   88,  726,
+       88,  730,   88,  728,  734,   88,  733,  737,   88,   88,
+      735,   88,   88,  879,  740,   88,  736,   88,   88,   88,
+      744,   88,  745,  738,  739,   88,  746,  748,  741,  743,
+       88,  747,   88,   88,  749,  764,  742,  699,  699,  699,
+      699,  699,  699,  612,  612,  612,  612,  612,  612,   88,
+       88,  763,  768,  613,   88,  614,  766,  615,  614,  765,
+       88,   88,  783,   88,  769,  767,  770,   88,  771,   88,
+      700,   88,   88,  772,  780,  614,  703,  614,  774,   88,
+      615,   88,  614,   88,  773,   88,  775,   88,  778,   88,
+
+      779,   88,  781,  776,   88,   88,   88,  784,   88,   88,
+       88,  791,   88,   88,  782,  787,   88,  785,   88,  904,
+       88,  793,   88,  809,   88,  794,  786,  788,  790,   88,
+       88,   88,  789,  792,  699,  699,  699,  699,  699,  699,
+      807,  808,   88,   88,  810,  812,  815,  813,   88,  817,
+       88,   88,  811,  818,  819,   88,   88,  814,   88,  821,
+       88,  816,  820,  822,   88,   88,   88,  756,   88,   88,
+      848,   88,   88,  823,   88,  843,   88,   88,   88,  845,
+       88,  846,   88,   88,  904,  849,   88,  824,  825,  826,
+      841,   88,  842,  844,  851,  840,   88,   88,  847,   88,
+
+      852,   88,  854,   88,   88,  850,   88,   88,  853,   88,
+      867,   88,  855,  866,   88,   88,   88,  871,  868,  856,
+       88,   88,   88,  873,  874,  865,  904,   88,  876,  869,
+       88,  875,  872,   88,   88,  870,  877,  882,  881,  880,
+       88,   88,   88,   88,   88,  885,  884,  886,   88,   88,
+      883,  887,   88,   88,   88,  890,   88,  892,   88,   88,
+       88,  893,   88,  888,  889,   88,  891,   88,   88,  897,
+       88,   88,   88,  904,  878,  894,   88,  896,  898,   88,
+      895,   88,  903,   88,   88,  904,  901,  904,  864,  899,
+      904,  900,  863,  902,   70,   70,   70,   70,   70,   70,
+
+       70,   70,   70,   70,   70,   70,   70,   76,   76,   76,
+       76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
+       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
+       79,   79,   79,   87,  904,  861,   87,  904,   87,   87,
+       87,   87,   87,  141,  860,  904,  859,  141,  141,  141,
+      141,  141,  141,  202,  202,  202,  202,  202,  202,  202,
+      202,  202,  202,  202,  202,  202,  207,  904,  858,  207,
+       88,  207,  207,  207,  207,  207,  211,   88,  211,  211,
+       88,  211,  211,  211,  211,  211,  211,  904,  211,  219,
+      839,  904,  219,  219,  219,  219,  219,  219,  219,  219,
+
+      838,  219,  242,  242,  242,  242,  242,  242,  242,  242,
+      242,  242,  242,  242,  242,  256,  256,  836,  256,  904,
+      834,  904,  256,  272,  832,  904,  272,  830,  272,  272,
+      272,  272,  272,  276,  828,  276,   88,   88,   88,  276,
+      278,   88,  278,   88,   88,   88,  278,  353,   88,  353,
+       88,   88,   88,  353,  355,   88,  355,  904,  806,  804,
+      355,  359,  904,  359,  904,  801,  799,  359,  361,  797,
+      361,   88,   88,   88,  361,  363,   88,  363,   88,   88,
+       88,  363,  370,  762,  370,  759,  758,  756,  370,  372,
+      208,  372,  752,  751,  683,  372,  387,   88,  387,  389,
+
+      389,   88,  389,  389,  389,   88,  389,  256,  256,   88,
+      256,  272,   88,   88,  272,   88,  272,  272,  272,  272,
+      272,  399,   88,  399,   88,   88,   88,  399,  401,   88,
+      401,   88,   88,   88,  401,  403,   88,  403,  710,  709,
+      707,  403,  276,  705,  276,  405,  703,  405,  610,  698,
+      697,  405,  278,  695,  278,   87,  693,  691,   87,  689,
+       87,   87,   87,   87,   87,  202,  202,  202,  202,  202,
+      202,  202,  202,  202,  202,  202,  202,  202,  477,  477,
+      477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
+      477,  478,  687,  478,  685,  683,   88,  478,  480,   88,
+
+      480,   88,   88,   88,  480,  482,   88,  482,   88,   88,
+       88,  482,  353,   88,  353,  484,   88,  484,   88,  629,
+      627,  484,  355,  625,  355,  487,  623,  487,  621,  619,
+      512,  487,  359,  617,  359,  489,  617,  489,  606,  605,
+      603,  489,  361,  492,  361,  491,  492,  491,  601,  599,
+      597,  491,  363,  595,  363,  493,  593,  493,  591,   88,
+       88,  493,  370,   88,  370,  495,   88,  495,   88,   88,
+       88,  495,  372,   88,  372,  501,  524,  501,  522,  501,
+      520,  501,  387,  518,  387,  516,  387,  514,  387,  389,
+      389,  500,  389,  389,  389,  499,  389,  513,  496,  513,
+
+      494,  366,  366,  513,  515,  492,  515,  490,  488,  485,
+      515,  517,  483,  517,  481,  479,   88,  517,  399,   88,
+      399,  519,   88,  519,  407,  406,  404,  519,  401,  402,
+      401,  521,  400,  521,  273,  268,  267,  521,  403,  396,
+      403,  523,  396,  523,  255,  386,  386,  523,  405,  243,
+      405,   87,  379,  373,   87,  371,   87,   87,   87,   87,
+       87,  477,  477,  477,  477,  477,  477,  477,  477,  477,
+      477,  477,  477,  477,  590,  369,  590,  365,  364,  362,
+      590,  478,  360,  478,  592,  356,  592,  354,  208,  204,
+      592,  480,   88,  480,  594,  280,  594,  279,  277,  273,
+
+      594,  482,  268,  482,  596,  271,  596,  268,  266,  265,
+      596,  484,  264,  484,  598,  243,  598,  235,   86,   86,
+      598,  487,   88,  487,  600,  208,  600,  206,   86,  123,
+      600,  489,  118,  489,  491,   88,  491,  904,   71,   71,
+      491,  602,  904,  602,  904,  904,  904,  602,  493,  904,
+      493,  604,  904,  604,  904,  904,  904,  604,  495,  904,
+      495,  501,  904,  501,  904,  501,  904,  501,  389,  904,
+      389,  904,  904,  904,  389,  618,  904,  618,  904,  904,
+      904,  618,  513,  904,  513,  620,  904,  620,  904,  904,
+      904,  620,  515,  904,  515,  622,  904,  622,  904,  904,
+
+      904,  622,  517,  904,  517,  624,  904,  624,  904,  904,
+      904,  624,  519,  904,  519,  626,  904,  626,  904,  904,
+      904,  626,  521,  904,  521,  628,  904,  628,  904,  904,
+      904,  628,  523,  904,  523,   87,  904,  904,   87,  904,
+       87,   87,   87,   87,   87,  682,  682,  682,  682,  682,
+      682,  682,  682,  682,  682,  682,  682,  682,  684,  904,
+      684,  904,  904,  904,  684,  590,  904,  590,  686,  904,
+      686,  904,  904,  904,  686,  592,  904,  592,  688,  904,
+      688,  904,  904,  904,  688,  594,  904,  594,  690,  904,
+      690,  904,  904,  904,  690,  596,  904,  596,  692,  904,
+
+      692,  904,  904,  904,  692,  598,  904,  598,  694,  904,
+      694,  904,  904,  904,  694,  600,  904,  600,  696,  904,
+      696,  904,  904,  904,  696,  602,  904,  602,   87,  904,
+       87,  904,  904,  904,   87,  604,  904,  604,  501,  904,
+      501,  904,  904,  904,  501,  704,  904,  704,  904,  904,
+      904,  704,  618,  904,  618,  706,  904,  706,  904,  904,
+      904,  706,  620,  904,  620,  708,  904,  708,  904,  904,
+      904,  708,  622,  904,  622,  141,  904,  141,  904,  904,
+      904,  141,  624,  904,  624,  711,  904,  711,  626,  904,
+      626,   87,  904,  904,   87,  904,   87,   87,   87,   87,
+
+       87,  628,  904,  628,  682,  682,  682,  682,  682,  682,
+      682,  682,  682,  682,  682,  682,  682,  750,  904,  750,
+      904,  904,  904,  750,  684,  904,  684,  207,  904,  207,
+      904,  904,  904,  207,  686,  904,  686,  753,  904,  753,
+      688,  904,  688,  207,  904,  904,  207,  904,  207,  207,
+      207,  207,  207,  690,  904,  690,  754,  904,  754,  692,
+      904,  692,  694,  904,  694,  755,  904,  755,  696,  904,
+      696,   87,  904,   87,  757,  904,  757,  904,  904,  904,
+      757,  704,  904,  704,  272,  904,  272,  904,  904,  904,
+      272,  706,  904,  706,  760,  904,  760,  708,  904,  708,
+
+      141,  904,  141,  761,  904,  761,  904,  904,  904,  761,
+       87,  904,  904,   87,  904,   87,   87,   87,   87,   87,
+      795,  904,  795,  750,  904,  750,  207,  904,  207,  796,
+      904,  796,  904,  904,  904,  796,  798,  904,  798,  904,
+      904,  904,  798,  800,  904,  800,  904,  904,  904,  800,
+      802,  904,  802,  803,  904,  803,  904,  904,  904,  803,
+      805,  904,  805,  904,  904,  904,  805,  827,  904,  827,
+      904,  904,  904,  827,  829,  904,  829,  904,  904,  904,
+      829,  831,  904,  831,  904,  904,  904,  831,  833,  904,
+      833,  904,  904,  904,  833,  835,  904,  835,  904,  904,
+
+      904,  835,  837,  904,  837,  904,  904,  904,  837,  628,
+      904,  628,  904,  904,  904,  628,  857,  904,  857,  904,
+      904,  904,  857,  690,  904,  690,  904,  904,  904,  690,
+      694,  904,  694,  904,  904,  904,  694,   87,  904,   87,
+      904,  904,  904,   87,  862,  904,  862,  904,  904,  904,
+      862,  141,  904,  141,  904,  904,  904,  141,  207,  904,
+      207,  904,  904,  904,  207,   11,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904
     } ;
 
-static yyconst flex_int16_t yy_chk[2931] =
+static yyconst flex_int16_t yy_chk[2952] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1128,311 +1134,314 @@
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
-        8,    9,   10,   37,   37,   20,   39,    9,   10,  893,
+        8,    9,   10,   37,   37,   20,   39,    9,   10,  903,
         7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
 
        15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
-       27,   28,   28,   28,   28,   28,   28,  109,  115,   25,
+       27,   28,   28,   28,   28,   28,   28,  110,  116,   25,
        29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
         8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
-       30,   30,   30,   30,   35,   57,   35,   35,   44,  126,
-       44,  126,  109,  115,   57,   30,   64,   56,   47,   30,
+       30,   30,   30,   30,   35,   57,   35,   35,   44,  127,
+       44,  127,  110,  116,   57,   30,   65,  544,   47,   30,
        47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
-       45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
-       62,   45,   49,   30,   73,  892,  127,   53,  127,   51,
-       61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
-
-       31,   31,   31,   50,   51,   53,   51,   64,   61,   54,
-       73,   55,   50,   87,   31,   51,   50,   55,   31,   54,
-      108,   50,   52,  114,   31,   50,   54,   52,  175,  129,
-       31,  129,  107,  154,  151,   52,   31,   52,  107,   87,
-       52,   60,   31,  132,   52,  132,   60,  114,  175,  154,
-       31,   38,  151,  387,  111,   38,   38,   58,   38,   60,
-       38,   38,  113,   38,  107,   38,   59,  130,  113,   58,
-       58,  116,  111,  164,   38,   38,   38,  387,   59,   58,
-      111,  130,   58,  130,  142,   60,   59,  131,   60,  116,
-      164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
-
-      110,  131,   60,   67,   67,   67,   67,   67,   67,  884,
-      142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
-       80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
-      110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
-       82,   82,   82,   82,   82,   82,  883,  243,   77,   77,
-       77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
-      103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
-      133,  133,  137,  133,  137,   77,  145,  139,   77,  139,
-      157,  145,  243,   77,   77,  152,  156,   77,   77,  155,
-      166,  150,  157,  880,  104,   77,  159,  168,   77,  104,
-
-       77,   77,   77,  152,   77,   85,  150,  155,  156,   85,
-       85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
-      145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
-       85,  105,  163,  105,  105,  105,  105,  105,  105,  879,
-      160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
-      105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
-      106,  106,  180,  171,  170,  173,  105,  176,  177,  170,
-      172,  181,  105,  174,  184,  187,  181,  182,  179,  180,
-       85,   99,   99,   99,   99,   99,   99,  170,  187,  106,
-      177,  174,  184,  179,  176,  183,  190,   99,   99,   99,
-
-      179,   99,   99,  189,  182,  186,  183,  191,  189,  218,
-      186,  218,  185,  188,   99,  190,  183,  183,  284,   99,
-       99,   99,  158,  185,   99,  186,   99,  158,  158,  158,
-      189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
-      185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
-      220,  191,  198,  198,  191,  192,  205,  198,  193,  877,
-      193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
-      248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
-      202,  223,  205,  223,  202,  221,  202,  221,  200,  200,
-      200,  200,  200,  200,  209,  209,  248,  876,  222,  209,
-
-      202,  202,  202,  202,  202,  202,  212,  212,  212,  212,
-      222,  286,  222,  224,  224,  225,  224,  225,  226,  226,
-      226,  228,  229,  228,  229,  234,  234,  235,  236,  235,
-      869,  286,  235,  235,  235,  235,  235,  235,  237,  212,
-      237,  282,  242,  237,  242,  242,  242,  242,  234,  256,
-      270,  236,  241,  241,  241,  241,  241,  241,  282,  266,
-      237,  266,  237,  296,  267,  235,  267,  237,  281,  244,
-      244,  244,  244,  244,  244,  256,  270,  242,  245,  245,
-      245,  245,  245,  245,  281,  241,  244,  247,  278,  247,
-      296,  295,  247,  247,  247,  247,  247,  247,  279,  280,
-
-      283,  278,  244,  288,  295,  283,  289,  868,  244,  246,
-      246,  246,  246,  246,  246,  253,  279,  280,  255,  255,
-      255,  255,  255,  255,  289,  246,  288,  246,  291,  246,
-      246,  260,  260,  260,  260,  260,  260,  290,  253,  292,
-      253,  285,  246,  291,  253,  867,  285,  246,  294,  246,
-      253,  255,  246,  287,  246,  292,  292,  294,  297,  299,
-      293,  303,  253,  290,  260,  293,  253,  300,  287,  301,
-      253,  304,  300,  302,  287,  287,  297,  299,  301,  305,
-      302,  303,  306,  307,  308,  309,  310,  306,  307,  304,
-      308,  311,  312,  313,  314,  310,  318,  311,  315,  319,
-
-      305,  305,  313,  315,  309,  316,  317,  320,  312,  314,
-      316,  317,  322,  324,  323,  318,  326,  319,  325,  327,
-      320,  328,  329,  322,  330,  331,  332,  334,  317,  323,
-      333,  325,  324,  330,  337,  335,  338,  339,  326,  329,
-      340,  328,  327,  337,  343,  334,  341,  331,  335,  332,
-      639,  342,  333,  340,  341,  339,  342,  344,  344,  343,
-      345,  362,  344,  362,  344,  403,  345,  352,  352,  352,
-      352,  353,  353,  353,  353,  363,  403,  363,  639,  408,
-      338,  370,  370,  370,  370,  370,  370,  372,  382,  372,
-      408,  410,  372,  372,  372,  372,  372,  372,  382,  404,
-
-      352,  371,  371,  371,  371,  371,  371,  374,  374,  374,
-      374,  374,  374,  410,  382,  404,  405,  371,  406,  371,
-      412,  371,  371,  377,  377,  377,  377,  377,  377,  385,
-      425,  405,  383,  412,  371,  385,  389,  406,  414,  371,
-      374,  371,  383,  413,  371,  425,  371,  375,  375,  375,
-      375,  375,  375,  384,  389,  417,  377,  407,  383,  413,
-      414,  385,  389,  375,  375,  375,  407,  375,  375,  378,
-      378,  378,  378,  378,  378,  421,  384,  417,  384,  866,
-      375,  421,  384,  865,  388,  375,  375,  375,  384,  386,
-      375,  386,  375,  415,  386,  386,  386,  386,  386,  386,
-
-      384,  409,  378,  411,  384,  416,  415,  388,  384,  388,
-      409,  418,  411,  388,  423,  419,  422,  424,  420,  388,
-      419,  416,  416,  431,  427,  423,  432,  386,  433,  418,
-      429,  388,  434,  420,  441,  388,  424,  422,  427,  388,
-      420,  433,  429,  435,  431,  436,  439,  437,  432,  435,
-      442,  443,  444,  445,  441,  434,  437,  446,  447,  449,
-      436,  439,  451,  453,  452,  456,  443,  447,  445,  454,
-      455,  457,  442,  452,  444,  458,  449,  446,  459,  460,
-      457,  461,  462,  463,  453,  451,  460,  456,  461,  454,
-      455,  459,  464,  458,  465,  466,  468,  470,  528,  469,
-
-      464,  528,  861,  470,  519,  463,  466,  462,  469,  524,
-      464,  465,  479,  479,  479,  479,  518,  519,  468,  490,
-      490,  490,  490,  490,  490,  492,  492,  492,  492,  492,
-      492,  524,  544,  518,  522,  490,  521,  490,  544,  490,
-      490,  493,  493,  493,  493,  493,  493,  497,  526,  498,
-      494,  521,  490,  526,  522,  496,  532,  490,  492,  490,
-      494,  495,  490,  495,  490,  496,  495,  495,  495,  495,
-      495,  495,  567,  497,  493,  498,  494,  532,  523,  525,
-      567,  496,  500,  500,  500,  500,  500,  500,  502,  529,
-      502,  523,  525,  502,  502,  502,  502,  502,  502,  495,
-
-      501,  501,  501,  501,  501,  501,  527,  530,  531,  529,
-      533,  857,  536,  535,  539,  537,  501,  527,  501,  533,
-      501,  501,  530,  534,  535,  536,  538,  531,  534,  540,
-      541,  547,  542,  501,  548,  538,  539,  542,  501,  541,
-      501,  545,  549,  501,  537,  501,  540,  550,  547,  548,
-      545,  552,  553,  554,  558,  555,  550,  549,  557,  558,
-      552,  563,  560,  561,  564,  554,  568,  565,  569,  553,
-      555,  560,  561,  557,  570,  569,  568,  564,  571,  572,
-      574,  575,  577,  563,  565,  572,  713,  578,  622,  574,
-      571,  575,  713,  604,  604,  622,  570,  625,  854,  577,
-
-      578,  597,  597,  597,  597,  597,  597,  598,  598,  598,
-      598,  598,  598,  600,  625,  600,  604,  624,  600,  600,
-      600,  600,  600,  600,  603,  603,  603,  603,  603,  603,
-      624,  605,  814,  629,  597,  599,  599,  599,  599,  599,
-      599,  606,  621,  606,  626,  627,  606,  621,  814,  623,
-      629,  599,  627,  599,  605,  599,  599,  603,  623,  630,
-      621,  628,  630,  606,  631,  606,  632,  626,  599,  628,
-      606,  633,  634,  599,  635,  599,  636,  631,  599,  637,
-      599,  640,  637,  638,  641,  643,  633,  644,  632,  647,
-      642,  635,  645,  648,  634,  705,  640,  649,  636,  642,
-
-      638,  645,  653,  643,  641,  654,  649,  656,  659,  644,
-      667,  660,  647,  668,  671,  648,  670,  659,  660,  667,
-      703,  705,  653,  668,  656,  670,  702,  853,  708,  671,
-      703,  852,  654,  689,  689,  689,  689,  689,  689,  693,
-      693,  693,  693,  693,  693,  706,  711,  702,  708,  689,
-      707,  689,  706,  689,  689,  707,  709,  710,  715,  709,
-      710,  714,  716,  717,  711,  716,  689,  715,  718,  721,
-      720,  689,  693,  689,  714,  723,  689,  719,  689,  720,
-      719,  724,  722,  725,  717,  722,  726,  727,  723,  724,
-      735,  728,  731,  725,  734,  721,  736,  718,  738,  726,
-
-      728,  760,  739,  761,  757,  762,  738,  764,  727,  758,
-      731,  739,  735,  761,  734,  731,  760,  736,  746,  746,
-      746,  746,  746,  746,  757,  759,  758,  763,  762,  765,
-      759,  767,  765,  764,  766,  769,  771,  773,  769,  771,
-      773,  772,  774,  775,  763,  774,  776,  766,  772,  778,
-      782,  746,  797,  799,  802,  807,  810,  800,  775,  767,
-      801,  803,  804,  801,  803,  804,  806,  808,  811,  776,
-      808,  811,  778,  782,  799,  800,  802,  812,  810,  797,
-      812,  807,  813,  815,  806,  816,  831,  833,  832,  834,
-      833,  813,  835,  836,  815,  832,  836,  837,  834,  840,
-
-      843,  816,  840,  843,  844,  845,  846,  831,  858,  855,
-      835,  858,  859,  844,  837,  846,  835,  845,  855,  856,
-      860,  870,  859,  862,  856,  860,  862,  863,  864,  871,
-      863,  864,  872,  873,  874,  872,  875,  874,  878,  875,
-      881,  870,  882,  873,  871,  885,  886,  887,  889,  888,
-      890,  851,  891,  850,  885,  849,  848,  882,  847,  886,
-      878,  881,  891,  842,  841,  839,  889,  838,  830,  887,
-      888,  829,  890,  895,  895,  895,  895,  895,  895,  895,
-      895,  895,  895,  895,  895,  895,  896,  896,  896,  896,
-      896,  896,  896,  896,  896,  896,  896,  896,  896,  897,
-
-      897,  897,  897,  897,  897,  897,  897,  897,  897,  897,
-      897,  897,  898,  828,  827,  898,  826,  898,  898,  898,
-      898,  898,  899,  825,  824,  823,  899,  899,  899,  899,
-      899,  899,  900,  900,  900,  900,  900,  900,  900,  900,
-      900,  900,  900,  900,  900,  901,  822,  821,  901,  820,
-      901,  901,  901,  901,  901,  902,  819,  902,  902,  818,
-      902,  902,  902,  902,  902,  902,  817,  902,  903,  809,
-      805,  903,  903,  903,  903,  903,  903,  903,  903,  798,
-      903,  904,  904,  904,  904,  904,  904,  904,  904,  904,
-      904,  904,  904,  904,  905,  905,  796,  905,  795,  794,
-
-      793,  905,  906,  792,  791,  906,  790,  906,  906,  906,
-      906,  906,  907,  789,  907,  788,  787,  786,  907,  908,
-      785,  908,  784,  783,  781,  908,  909,  780,  909,  779,
-      777,  770,  909,  910,  768,  910,  756,  755,  754,  910,
-      911,  753,  911,  752,  751,  750,  911,  912,  749,  912,
-      748,  745,  744,  912,  913,  743,  913,  737,  733,  732,
-      913,  914,  730,  914,  729,  712,  704,  914,  915,  701,
-      915,  696,  694,  690,  915,  916,  680,  916,  917,  917,
-      676,  917,  917,  917,  674,  917,  918,  918,  672,  918,
-      919,  669,  666,  919,  665,  919,  919,  919,  919,  919,
-
-      920,  664,  920,  663,  662,  661,  920,  921,  658,  921,
-      657,  655,  652,  921,  922,  651,  922,  650,  646,  619,
-      922,  923,  615,  923,  924,  613,  924,  611,  609,  607,
-      924,  925,  601,  925,  926,  595,  593,  926,  591,  926,
-      926,  926,  926,  926,  927,  927,  927,  927,  927,  927,
-      927,  927,  927,  927,  927,  927,  927,  928,  928,  928,
-      928,  928,  928,  928,  928,  928,  928,  928,  928,  928,
-      929,  589,  929,  587,  585,  583,  929,  930,  581,  930,
-      580,  579,  576,  930,  931,  573,  931,  566,  562,  559,
-      931,  932,  556,  932,  933,  551,  933,  546,  543,  520,
-
-      933,  934,  516,  934,  935,  514,  935,  512,  510,  508,
-      935,  936,  506,  936,  937,  505,  937,  504,  503,  491,
-      937,  938,  488,  938,  939,  486,  939,  485,  484,  482,
-      939,  940,  480,  940,  941,  477,  941,  475,  473,  471,
-      941,  942,  467,  942,  943,  450,  943,  448,  440,  438,
-      943,  944,  430,  944,  945,  428,  945,  426,  945,  400,
-      945,  946,  398,  946,  396,  946,  394,  946,  947,  947,
-      393,  947,  947,  947,  392,  947,  948,  379,  948,  376,
-      367,  365,  948,  949,  364,  949,  360,  358,  356,  949,
-      950,  354,  950,  350,  348,  347,  950,  951,  346,  951,
-
-      952,  336,  952,  321,  298,  277,  952,  953,  275,  953,
-      954,  273,  954,  272,  271,  269,  954,  955,  268,  955,
-      956,  263,  956,  259,  258,  254,  956,  957,  251,  957,
-      958,  250,  239,  958,  238,  958,  958,  958,  958,  958,
-      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
-      959,  959,  959,  960,  231,  960,  230,  227,  217,  960,
-      961,  215,  961,  962,  214,  962,  213,  207,  206,  962,
-      963,  204,  963,  964,  199,  964,  178,  149,  147,  964,
-      965,  146,  965,  966,  140,  966,  138,  136,  128,  966,
-      967,  125,  967,  968,  124,  968,  120,  101,   98,  968,
-
-      969,   95,  969,  970,   93,  970,   86,   72,   70,  970,
-      971,   66,  971,  972,   36,  972,   33,   18,   11,  972,
-      973,    4,  973,    3,    0,    0,  973,  974,    0,  974,
-      975,    0,  975,    0,    0,    0,  975,  976,    0,  976,
-      977,    0,  977,    0,  977,    0,  977,  978,    0,  978,
-        0,    0,    0,  978,  979,    0,  979,    0,    0,    0,
-      979,  980,    0,  980,  981,    0,  981,    0,    0,    0,
-      981,  982,    0,  982,  983,    0,  983,    0,    0,    0,
-      983,  984,    0,  984,  985,    0,  985,    0,    0,    0,
-      985,  986,    0,  986,  987,    0,  987,    0,    0,    0,
-
-      987,  988,    0,  988,  989,    0,  989,    0,    0,    0,
-      989,  990,    0,  990,  991,    0,    0,  991,    0,  991,
-      991,  991,  991,  991,  992,  992,  992,  992,  992,  992,
-      992,  992,  992,  992,  992,  992,  992,  993,    0,  993,
-        0,    0,    0,  993,  994,    0,  994,  995,    0,  995,
-        0,    0,    0,  995,  996,    0,  996,  997,    0,  997,
-        0,    0,    0,  997,  998,    0,  998,  999,    0,  999,
-        0,    0,    0,  999, 1000,    0, 1000, 1001,    0, 1001,
-        0,    0,    0, 1001, 1002,    0, 1002, 1003,    0, 1003,
-        0,    0,    0, 1003, 1004,    0, 1004, 1005,    0, 1005,
-
-        0,    0,    0, 1005, 1006,    0, 1006, 1007,    0, 1007,
-        0,    0,    0, 1007, 1008,    0, 1008, 1009,    0, 1009,
-        0,    0,    0, 1009, 1010,    0, 1010,    0,    0,    0,
-     1010, 1011,    0, 1011, 1012,    0, 1012,    0,    0,    0,
-     1012, 1013,    0, 1013, 1014,    0, 1014,    0,    0,    0,
-     1014, 1015,    0, 1015, 1016,    0, 1016,    0,    0,    0,
-     1016, 1017,    0, 1017, 1018,    0, 1018, 1019,    0, 1019,
-     1020,    0,    0, 1020,    0, 1020, 1020, 1020, 1020, 1020,
-     1021,    0, 1021, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
-     1022, 1022, 1022, 1022, 1022, 1022, 1023,    0, 1023,    0,
-
-        0,    0, 1023, 1024,    0, 1024, 1025,    0, 1025,    0,
-        0,    0, 1025, 1026,    0, 1026, 1027,    0, 1027, 1028,
-        0, 1028, 1029,    0,    0, 1029,    0, 1029, 1029, 1029,
-     1029, 1029, 1030,    0, 1030, 1031,    0, 1031, 1032,    0,
-     1032, 1033,    0, 1033, 1034,    0, 1034, 1035,    0, 1035,
-     1036,    0, 1036, 1037,    0, 1037,    0,    0,    0, 1037,
-     1038,    0, 1038, 1039,    0, 1039,    0,    0,    0, 1039,
-     1040,    0, 1040, 1041,    0, 1041, 1042,    0, 1042, 1043,
-        0, 1043, 1044,    0, 1044,    0,    0,    0, 1044, 1045,
-        0,    0, 1045,    0, 1045, 1045, 1045, 1045, 1045, 1046,
-
-        0, 1046, 1047,    0, 1047, 1048,    0, 1048, 1049,    0,
-     1049,    0,    0,    0, 1049, 1050,    0, 1050,    0,    0,
-        0, 1050, 1051,    0, 1051,    0,    0,    0, 1051, 1052,
-        0, 1052, 1053,    0, 1053,    0,    0,    0, 1053, 1054,
-        0, 1054,    0,    0,    0, 1054, 1055,    0, 1055,    0,
-        0,    0, 1055, 1056,    0, 1056,    0,    0,    0, 1056,
-     1057,    0, 1057,    0,    0,    0, 1057, 1058,    0, 1058,
-        0,    0,    0, 1058, 1059,    0, 1059,    0,    0,    0,
-     1059, 1060,    0, 1060,    0,    0,    0, 1060, 1061,    0,
-     1061,    0,    0,    0, 1061, 1062,    0, 1062,    0,    0,
-
-        0, 1062, 1063,    0, 1063,    0,    0,    0, 1063, 1064,
-        0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,    0,
-        0,    0, 1065, 1066,    0, 1066,    0,    0,    0, 1066,
-     1067,    0, 1067,    0,    0,    0, 1067, 1068,    0, 1068,
-        0,    0,    0, 1068,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
-      894,  894,  894,  894,  894,  894,  894,  894,  894,  894
+       45,   30,   40,   45,   45,   40,   49,   30,   45,   63,
+       62,   45,   49,   30,   74,  902,  544,   53,   63,   51,
+       61,   30,   62,   55,   30,   31,  109,   31,   31,   31,
+
+       31,   31,   31,   50,   51,   53,   51,   65,   61,   54,
+       74,   55,   50,   88,   31,   51,   50,   55,   31,   54,
+      109,   50,   52,  115,   31,   50,   54,   52,  182,  146,
+       31,   56,  108,  182,  146,   52,   31,   52,  108,   88,
+       52,   60,   31,  128,   52,  128,   60,  115,   56,  152,
+       31,   38,  894,   56,  112,   38,   38,   58,   38,   60,
+       38,   38,  114,   38,  108,   38,   59,  152,  114,   58,
+       58,  117,  112,  146,   38,   38,   38,  189,   59,   58,
+      112,  130,   58,  130,  143,   60,   59,  132,   60,  117,
+      189,   69,   69,   59,  114,   38,   69,  117,   38,  132,
+
+      111,  132,   60,   68,   68,   68,   68,   68,   68,  893,
+      143,   68,   69,   69,   69,   69,   69,   69,   81,   81,
+       81,   81,   81,   81,  154,   38,   38,   78,   78,  133,
+      111,  133,   78,  154,   78,  111,  135,  162,  135,   78,
+       83,   83,   83,   83,   83,   83,  162,  890,   78,   78,
+       78,   78,   84,   84,   84,   84,   84,   84,  111,   78,
+      104,  104,  104,  104,  104,  104,  105,  105,  105,  105,
+      134,  134,  138,  134,  138,   78,  131,  155,   78,  136,
+      136,  136,  173,   78,   78,  153,  157,   78,   78,  140,
+      131,  140,  131,  155,  105,   78,  151,  173,   78,  105,
+
+       78,   78,   78,  153,   78,   86,  156,  160,  157,   86,
+       86,  151,  183,  158,   86,   86,  168,   86,  151,   86,
+      161,  183,  105,  160,  156,  158,  163,  164,   86,   86,
+       86,  106,  164,  106,  106,  106,  106,  106,  106,  168,
+      169,  167,  161,  170,  166,  164,  165,  163,  163,   86,
+      106,  107,   86,  107,  166,  172,  107,  107,  107,  107,
+      107,  107,  167,  165,  170,  171,  106,  169,  177,  175,
+      171,  176,  106,  174,  178,  181,  184,  172,  180,  889,
+       86,  100,  100,  100,  100,  100,  100,  175,  171,  107,
+      174,  176,  181,  180,  185,  177,  178,  100,  100,  100,
+
+      180,  100,  100,  184,  192,  185,  187,  186,  193,  221,
+      190,  221,  887,  188,  100,  185,  185,  187,  188,  100,
+      100,  100,  159,  192,  100,  186,  100,  159,  159,  159,
+      190,  159,  159,  188,  187,  159,  191,  159,  194,  208,
+      196,  191,  159,  159,  159,  195,  159,  197,  251,  212,
+      212,  194,  193,  196,  212,  193,  201,  201,  195,  194,
+      195,  201,  222,  191,  222,  208,  259,  197,  200,  200,
+      200,  200,  200,  200,  251,  287,  200,  201,  201,  201,
+      201,  201,  201,  203,  203,  223,  246,  223,  203,  205,
+      205,  226,  259,  226,  205,  287,  205,  215,  215,  215,
+
+      215,  228,  224,  228,  203,  203,  203,  203,  203,  203,
+      205,  205,  205,  205,  205,  205,  224,  225,  224,  227,
+      227,  246,  227,  229,  229,  229,  231,  239,  231,  225,
+      215,  225,  232,  291,  232,  237,  237,  238,  269,  238,
+      269,  284,  238,  238,  238,  238,  238,  238,  273,  240,
+      239,  240,  432,  270,  240,  270,  291,  284,  237,  244,
+      244,  244,  244,  244,  244,  245,  432,  245,  245,  245,
+      245,  240,  286,  240,  273,  238,  282,  286,  240,  247,
+      247,  247,  247,  247,  247,  248,  248,  248,  248,  248,
+      248,  283,  244,  285,  282,  281,  247,  250,  294,  250,
+
+      245,  293,  250,  250,  250,  250,  250,  250,  281,  283,
+      285,  288,  247,  294,  289,  331,  288,  297,  247,  249,
+      249,  249,  249,  249,  249,  256,  297,  293,  258,  258,
+      258,  258,  258,  258,  289,  249,  298,  249,  331,  249,
+      249,  263,  263,  263,  263,  263,  263,  292,  256,  298,
+      256,  295,  249,  296,  256,  299,  290,  249,  296,  249,
+      256,  258,  249,  300,  249,  292,  302,  295,  295,  306,
+      303,  290,  256,  307,  263,  303,  256,  290,  290,  304,
+      256,  300,  299,  305,  302,  308,  312,  309,  304,  306,
+      305,  307,  309,  310,  311,  313,  314,  315,  310,  316,
+
+      311,  317,  314,  321,  313,  312,  308,  308,  316,  318,
+      319,  322,  320,  315,  318,  319,  317,  320,  323,  325,
+      326,  327,  321,  328,  327,  329,  330,  332,  333,  322,
+      325,  323,  334,  335,  320,  326,  336,  339,  329,  337,
+      338,  334,  328,  341,  342,  333,  343,  332,  330,  344,
+      339,  346,  341,  347,  348,  335,  346,  345,  338,  336,
+      387,  337,  344,  350,  343,  345,  349,  349,  347,  350,
+      387,  349,  348,  349,  357,  357,  357,  357,  358,  358,
+      358,  358,  367,  368,  367,  368,  387,  408,  342,  375,
+      375,  375,  375,  375,  375,  377,  388,  377,  408,  392,
+
+      377,  377,  377,  377,  377,  377,  388,  357,  376,  376,
+      376,  376,  376,  376,  379,  379,  379,  379,  379,  379,
+      411,  409,  388,  392,  376,  410,  376,  413,  376,  376,
+      382,  382,  382,  382,  382,  382,  390,  409,  413,  411,
+      410,  376,  390,  394,  415,  419,  376,  379,  376,  417,
+      886,  376,  420,  376,  380,  380,  380,  380,  380,  380,
+      389,  394,  417,  382,  412,  420,  415,  419,  390,  394,
+      380,  380,  380,  412,  380,  380,  383,  383,  383,  383,
+      383,  383,  426,  389,  418,  389,  879,  380,  426,  389,
+      878,  393,  380,  380,  380,  389,  391,  380,  391,  380,
+
+      418,  391,  391,  391,  391,  391,  391,  389,  414,  383,
+      416,  389,  421,  422,  393,  389,  393,  414,  423,  416,
+      393,  428,  424,  427,  429,  425,  393,  424,  421,  421,
+      430,  436,  428,  437,  391,  422,  423,  434,  393,  439,
+      425,  438,  393,  429,  427,  430,  393,  425,  441,  434,
+      440,  442,  436,  444,  438,  437,  440,  446,  447,  448,
+      442,  449,  439,  441,  450,  451,  452,  454,  444,  456,
+      459,  457,  458,  462,  448,  452,  460,  446,  461,  450,
+      447,  458,  464,  449,  454,  451,  465,  466,  463,  468,
+      469,  459,  456,  457,  466,  462,  460,  463,  461,  465,
+
+      464,  467,  470,  474,  471,  472,  475,  477,  467,  877,
+      470,  526,  469,  477,  468,  475,  472,  504,  505,  476,
+      470,  471,  476,  876,  526,  474,  486,  486,  486,  486,
+      497,  497,  497,  497,  497,  497,  499,  499,  499,  499,
+      499,  499,  525,  504,  505,  528,  497,  529,  497,  530,
+      497,  497,  500,  500,  500,  500,  500,  500,  875,  525,
+      528,  501,  530,  497,  531,  538,  503,  529,  497,  499,
+      497,  501,  502,  497,  502,  497,  503,  502,  502,  502,
+      502,  502,  502,  533,  538,  500,  531,  501,  533,  532,
+      871,  867,  503,  507,  507,  507,  507,  507,  507,  509,
+
+      535,  509,  532,  535,  509,  509,  509,  509,  509,  509,
+      502,  508,  508,  508,  508,  508,  508,  534,  536,  537,
+      539,  540,  542,  543,  864,  546,  547,  508,  534,  508,
+      540,  508,  508,  542,  537,  541,  543,  545,  536,  548,
+      541,  539,  554,  547,  508,  549,  545,  546,  548,  508,
+      549,  508,  551,  552,  508,  555,  508,  556,  551,  554,
+      557,  560,  552,  561,  559,  562,  564,  571,  567,  557,
+      555,  565,  556,  559,  568,  561,  565,  567,  560,  572,
+      562,  564,  573,  568,  576,  575,  578,  582,  577,  571,
+      579,  580,  572,  575,  576,  577,  582,  580,  585,  573,
+
+      583,  586,  579,  588,  630,  863,  634,  728,  578,  630,
+      583,  633,  613,  613,  586,  585,  606,  606,  606,  606,
+      606,  606,  630,  634,  633,  588,  607,  607,  607,  607,
+      607,  607,  609,  614,  609,  613,  728,  609,  609,  609,
+      609,  609,  609,  612,  612,  612,  612,  612,  612,  606,
+      608,  608,  608,  608,  608,  608,  614,  615,  631,  615,
+      632,  635,  615,  638,  637,  631,  608,  636,  608,  632,
+      608,  608,  637,  648,  636,  639,  612,  641,  639,  615,
+      638,  615,  642,  608,  635,  640,  615,  643,  608,  644,
+      608,  645,  649,  608,  647,  608,  650,  642,  640,  641,
+
+      646,  648,  652,  646,  653,  651,  644,  649,  654,  643,
+      656,  647,  657,  645,  651,  658,  650,  654,  662,  663,
+      652,  668,  665,  862,  658,  669,  653,  676,  679,  680,
+      668,  677,  669,  656,  657,  713,  676,  679,  662,  665,
+      712,  677,  718,  715,  680,  713,  663,  699,  699,  699,
+      699,  699,  699,  703,  703,  703,  703,  703,  703,  716,
+      721,  712,  718,  699,  734,  699,  716,  699,  699,  715,
+      717,  719,  734,  720,  719,  717,  720,  723,  721,  725,
+      699,  724,  727,  723,  731,  699,  703,  699,  725,  745,
+      699,  730,  699,  726,  724,  729,  726,  735,  729,  732,
+
+      730,  733,  732,  727,  736,  737,  738,  735,  744,  741,
+      731,  745,  746,  748,  733,  738,  749,  736,  769,  861,
+      767,  748,  772,  769,  768,  749,  737,  741,  744,  770,
+      773,  774,  741,  746,  756,  756,  756,  756,  756,  756,
+      767,  768,  771,  775,  770,  772,  775,  773,  776,  777,
+      779,  781,  771,  779,  781,  782,  783,  774,  785,  783,
+      784,  776,  782,  784,  786,  788,  792,  756,  807,  809,
+      817,  812,  811,  785,  810,  811,  813,  777,  814,  813,
+      816,  814,  818,  820,  860,  818,  824,  786,  788,  792,
+      809,  821,  810,  812,  821,  807,  817,  822,  816,  823,
+
+      822,  825,  824,  826,  841,  820,  842,  843,  823,  844,
+      843,  845,  825,  842,  846,  847,  855,  846,  844,  826,
+      850,  853,  854,  850,  853,  841,  859,  856,  855,  845,
+      865,  854,  847,  866,  868,  845,  856,  868,  866,  865,
+      869,  870,  872,  880,  873,  872,  870,  873,  874,  881,
+      869,  874,  882,  888,  884,  882,  883,  884,  885,  891,
+      895,  885,  892,  880,  881,  896,  883,  897,  899,  895,
+      898,  900,  901,  858,  857,  888,  852,  892,  896,  851,
+      891,  849,  901,  848,  840,  839,  899,  838,  837,  897,
+      836,  898,  835,  900,  905,  905,  905,  905,  905,  905,
+
+      905,  905,  905,  905,  905,  905,  905,  906,  906,  906,
+      906,  906,  906,  906,  906,  906,  906,  906,  906,  906,
+      907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
+      907,  907,  907,  908,  834,  833,  908,  832,  908,  908,
+      908,  908,  908,  909,  831,  830,  829,  909,  909,  909,
+      909,  909,  909,  910,  910,  910,  910,  910,  910,  910,
+      910,  910,  910,  910,  910,  910,  911,  828,  827,  911,
+      819,  911,  911,  911,  911,  911,  912,  815,  912,  912,
+      808,  912,  912,  912,  912,  912,  912,  806,  912,  913,
+      805,  804,  913,  913,  913,  913,  913,  913,  913,  913,
+
+      803,  913,  914,  914,  914,  914,  914,  914,  914,  914,
+      914,  914,  914,  914,  914,  915,  915,  802,  915,  801,
+      800,  799,  915,  916,  798,  797,  916,  796,  916,  916,
+      916,  916,  916,  917,  795,  917,  794,  793,  791,  917,
+      918,  790,  918,  789,  787,  780,  918,  919,  778,  919,
+      766,  765,  764,  919,  920,  763,  920,  762,  761,  760,
+      920,  921,  759,  921,  758,  755,  754,  921,  922,  753,
+      922,  747,  743,  742,  922,  923,  740,  923,  739,  722,
+      714,  923,  924,  711,  924,  706,  704,  700,  924,  925,
+      690,  925,  686,  684,  682,  925,  926,  681,  926,  927,
+
+      927,  678,  927,  927,  927,  675,  927,  928,  928,  674,
+      928,  929,  673,  672,  929,  671,  929,  929,  929,  929,
+      929,  930,  670,  930,  667,  666,  664,  930,  931,  661,
+      931,  660,  659,  655,  931,  932,  628,  932,  624,  622,
+      620,  932,  933,  618,  933,  934,  616,  934,  610,  604,
+      602,  934,  935,  600,  935,  936,  598,  596,  936,  594,
+      936,  936,  936,  936,  936,  937,  937,  937,  937,  937,
+      937,  937,  937,  937,  937,  937,  937,  937,  938,  938,
+      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
+      938,  939,  592,  939,  590,  589,  587,  939,  940,  584,
+
+      940,  581,  574,  570,  940,  941,  569,  941,  566,  563,
+      558,  941,  942,  553,  942,  943,  550,  943,  527,  523,
+      521,  943,  944,  519,  944,  945,  517,  945,  515,  513,
+      512,  945,  946,  511,  946,  947,  510,  947,  498,  495,
+      493,  947,  948,  492,  948,  949,  491,  949,  489,  487,
+      484,  949,  950,  482,  950,  951,  480,  951,  478,  473,
+      455,  951,  952,  453,  952,  953,  445,  953,  443,  435,
+      433,  953,  954,  431,  954,  955,  405,  955,  403,  955,
+      401,  955,  956,  399,  956,  398,  956,  397,  956,  957,
+      957,  384,  957,  957,  957,  381,  957,  958,  372,  958,
+
+      370,  369,  365,  958,  959,  363,  959,  361,  359,  355,
+      959,  960,  353,  960,  352,  351,  340,  960,  961,  324,
+      961,  962,  301,  962,  280,  278,  276,  962,  963,  275,
+      963,  964,  274,  964,  272,  271,  266,  964,  965,  262,
+      965,  966,  261,  966,  257,  254,  253,  966,  967,  242,
+      967,  968,  241,  234,  968,  233,  968,  968,  968,  968,
+      968,  969,  969,  969,  969,  969,  969,  969,  969,  969,
+      969,  969,  969,  969,  970,  230,  970,  220,  218,  217,
+      970,  971,  216,  971,  972,  210,  972,  209,  207,  202,
+      972,  973,  179,  973,  974,  150,  974,  148,  147,  141,
+
+      974,  975,  139,  975,  976,  137,  976,  129,  126,  125,
+      976,  977,  121,  977,  978,  102,  978,   99,   96,   94,
+      978,  979,   87,  979,  980,   73,  980,   71,   67,   36,
+      980,  981,   33,  981,  982,   18,  982,   11,    4,    3,
+      982,  983,    0,  983,    0,    0,    0,  983,  984,    0,
+      984,  985,    0,  985,    0,    0,    0,  985,  986,    0,
+      986,  987,    0,  987,    0,  987,    0,  987,  988,    0,
+      988,    0,    0,    0,  988,  989,    0,  989,    0,    0,
+        0,  989,  990,    0,  990,  991,    0,  991,    0,    0,
+        0,  991,  992,    0,  992,  993,    0,  993,    0,    0,
+
+        0,  993,  994,    0,  994,  995,    0,  995,    0,    0,
+        0,  995,  996,    0,  996,  997,    0,  997,    0,    0,
+        0,  997,  998,    0,  998,  999,    0,  999,    0,    0,
+        0,  999, 1000,    0, 1000, 1001,    0,    0, 1001,    0,
+     1001, 1001, 1001, 1001, 1001, 1002, 1002, 1002, 1002, 1002,
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003,    0,
+     1003,    0,    0,    0, 1003, 1004,    0, 1004, 1005,    0,
+     1005,    0,    0,    0, 1005, 1006,    0, 1006, 1007,    0,
+     1007,    0,    0,    0, 1007, 1008,    0, 1008, 1009,    0,
+     1009,    0,    0,    0, 1009, 1010,    0, 1010, 1011,    0,
+
+     1011,    0,    0,    0, 1011, 1012,    0, 1012, 1013,    0,
+     1013,    0,    0,    0, 1013, 1014,    0, 1014, 1015,    0,
+     1015,    0,    0,    0, 1015, 1016,    0, 1016, 1017,    0,
+     1017,    0,    0,    0, 1017, 1018,    0, 1018, 1019,    0,
+     1019,    0,    0,    0, 1019, 1020,    0, 1020,    0,    0,
+        0, 1020, 1021,    0, 1021, 1022,    0, 1022,    0,    0,
+        0, 1022, 1023,    0, 1023, 1024,    0, 1024,    0,    0,
+        0, 1024, 1025,    0, 1025, 1026,    0, 1026,    0,    0,
+        0, 1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0,
+     1029, 1030,    0,    0, 1030,    0, 1030, 1030, 1030, 1030,
+
+     1030, 1031,    0, 1031, 1032, 1032, 1032, 1032, 1032, 1032,
+     1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033,    0, 1033,
+        0,    0,    0, 1033, 1034,    0, 1034, 1035,    0, 1035,
+        0,    0,    0, 1035, 1036,    0, 1036, 1037,    0, 1037,
+     1038,    0, 1038, 1039,    0,    0, 1039,    0, 1039, 1039,
+     1039, 1039, 1039, 1040,    0, 1040, 1041,    0, 1041, 1042,
+        0, 1042, 1043,    0, 1043, 1044,    0, 1044, 1045,    0,
+     1045, 1046,    0, 1046, 1047,    0, 1047,    0,    0,    0,
+     1047, 1048,    0, 1048, 1049,    0, 1049,    0,    0,    0,
+     1049, 1050,    0, 1050, 1051,    0, 1051, 1052,    0, 1052,
+
+     1053,    0, 1053, 1054,    0, 1054,    0,    0,    0, 1054,
+     1055,    0,    0, 1055,    0, 1055, 1055, 1055, 1055, 1055,
+     1056,    0, 1056, 1057,    0, 1057, 1058,    0, 1058, 1059,
+        0, 1059,    0,    0,    0, 1059, 1060,    0, 1060,    0,
+        0,    0, 1060, 1061,    0, 1061,    0,    0,    0, 1061,
+     1062,    0, 1062, 1063,    0, 1063,    0,    0,    0, 1063,
+     1064,    0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,
+        0,    0,    0, 1065, 1066,    0, 1066,    0,    0,    0,
+     1066, 1067,    0, 1067,    0,    0,    0, 1067, 1068,    0,
+     1068,    0,    0,    0, 1068, 1069,    0, 1069,    0,    0,
+
+        0, 1069, 1070,    0, 1070,    0,    0,    0, 1070, 1071,
+        0, 1071,    0,    0,    0, 1071, 1072,    0, 1072,    0,
+        0,    0, 1072, 1073,    0, 1073,    0,    0,    0, 1073,
+     1074,    0, 1074,    0,    0,    0, 1074, 1075,    0, 1075,
+        0,    0,    0, 1075, 1076,    0, 1076,    0,    0,    0,
+     1076, 1077,    0, 1077,    0,    0,    0, 1077, 1078,    0,
+     1078,    0,    0,    0, 1078,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[184] =
+static yyconst flex_int32_t yy_rule_can_match_eol[186] =
     {   0,
 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
@@ -1441,9 +1450,9 @@
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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,     };
 
 static yy_state_type yy_last_accepting_state;
@@ -1473,6 +1482,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Wed Oct 26 17:32:30 2016
- * Update Count     : 499
+ * Last Modified On : Tue Nov 29 11:32:00 2016
+ * Update Count     : 501
  */
 #line 20 "lex.ll"
@@ -1535,5 +1544,5 @@
 
 
-#line 1538 "Parser/lex.cc"
+#line 1547 "Parser/lex.cc"
 
 #define INITIAL 0
@@ -1730,5 +1739,5 @@
 
 				   /* line directives */
-#line 1733 "Parser/lex.cc"
+#line 1742 "Parser/lex.cc"
 
 	if ( !(yy_init) )
@@ -1784,5 +1793,5 @@
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 895 )
+				if ( yy_current_state >= 905 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
@@ -1790,5 +1799,5 @@
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 2845 );
+		while ( yy_base[yy_current_state] != 2866 );
 
 yy_find_action:
@@ -2206,20 +2215,20 @@
 YY_RULE_SETUP
 #line 239 "lex.ll"
+{ NUMERIC_RETURN(ONE_T); }				// CFA
+	YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 240 "lex.ll"
 { KEYWORD_RETURN(OTYPE); }				// CFA
 	YY_BREAK
-case 72:
-YY_RULE_SETUP
-#line 240 "lex.ll"
+case 73:
+YY_RULE_SETUP
+#line 241 "lex.ll"
 { KEYWORD_RETURN(REGISTER); }
 	YY_BREAK
-case 73:
-YY_RULE_SETUP
-#line 241 "lex.ll"
+case 74:
+YY_RULE_SETUP
+#line 242 "lex.ll"
 { KEYWORD_RETURN(RESTRICT); }			// C99
-	YY_BREAK
-case 74:
-YY_RULE_SETUP
-#line 242 "lex.ll"
-{ KEYWORD_RETURN(RESTRICT); }			// GCC
 	YY_BREAK
 case 75:
@@ -2231,20 +2240,20 @@
 YY_RULE_SETUP
 #line 244 "lex.ll"
+{ KEYWORD_RETURN(RESTRICT); }			// GCC
+	YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 245 "lex.ll"
 { KEYWORD_RETURN(RETURN); }
 	YY_BREAK
-case 77:
-YY_RULE_SETUP
-#line 245 "lex.ll"
+case 78:
+YY_RULE_SETUP
+#line 246 "lex.ll"
 { KEYWORD_RETURN(SHORT); }
 	YY_BREAK
-case 78:
-YY_RULE_SETUP
-#line 246 "lex.ll"
+case 79:
+YY_RULE_SETUP
+#line 247 "lex.ll"
 { KEYWORD_RETURN(SIGNED); }
-	YY_BREAK
-case 79:
-YY_RULE_SETUP
-#line 247 "lex.ll"
-{ KEYWORD_RETURN(SIGNED); }				// GCC
 	YY_BREAK
 case 80:
@@ -2256,60 +2265,60 @@
 YY_RULE_SETUP
 #line 249 "lex.ll"
+{ KEYWORD_RETURN(SIGNED); }				// GCC
+	YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 250 "lex.ll"
 { KEYWORD_RETURN(SIZEOF); }
 	YY_BREAK
-case 82:
-YY_RULE_SETUP
-#line 250 "lex.ll"
+case 83:
+YY_RULE_SETUP
+#line 251 "lex.ll"
 { KEYWORD_RETURN(STATIC); }
 	YY_BREAK
-case 83:
-YY_RULE_SETUP
-#line 251 "lex.ll"
+case 84:
+YY_RULE_SETUP
+#line 252 "lex.ll"
 { KEYWORD_RETURN(STATICASSERT); }		// C11
 	YY_BREAK
-case 84:
-YY_RULE_SETUP
-#line 252 "lex.ll"
+case 85:
+YY_RULE_SETUP
+#line 253 "lex.ll"
 { KEYWORD_RETURN(STRUCT); }
 	YY_BREAK
-case 85:
-YY_RULE_SETUP
-#line 253 "lex.ll"
+case 86:
+YY_RULE_SETUP
+#line 254 "lex.ll"
 { KEYWORD_RETURN(SWITCH); }
 	YY_BREAK
-case 86:
-YY_RULE_SETUP
-#line 254 "lex.ll"
+case 87:
+YY_RULE_SETUP
+#line 255 "lex.ll"
 { KEYWORD_RETURN(THREADLOCAL); }		// C11
 	YY_BREAK
-case 87:
-YY_RULE_SETUP
-#line 255 "lex.ll"
+case 88:
+YY_RULE_SETUP
+#line 256 "lex.ll"
 { KEYWORD_RETURN(THROW); }				// CFA
 	YY_BREAK
-case 88:
-YY_RULE_SETUP
-#line 256 "lex.ll"
+case 89:
+YY_RULE_SETUP
+#line 257 "lex.ll"
 { KEYWORD_RETURN(THROWRESUME); }		// CFA
 	YY_BREAK
-case 89:
-YY_RULE_SETUP
-#line 257 "lex.ll"
+case 90:
+YY_RULE_SETUP
+#line 258 "lex.ll"
 { KEYWORD_RETURN(TRAIT); }				// CFA
 	YY_BREAK
-case 90:
-YY_RULE_SETUP
-#line 258 "lex.ll"
+case 91:
+YY_RULE_SETUP
+#line 259 "lex.ll"
 { KEYWORD_RETURN(TRY); }				// CFA
 	YY_BREAK
-case 91:
-YY_RULE_SETUP
-#line 259 "lex.ll"
+case 92:
+YY_RULE_SETUP
+#line 260 "lex.ll"
 { KEYWORD_RETURN(TYPEDEF); }
-	YY_BREAK
-case 92:
-YY_RULE_SETUP
-#line 260 "lex.ll"
-{ KEYWORD_RETURN(TYPEOF); }				// GCC
 	YY_BREAK
 case 93:
@@ -2326,30 +2335,30 @@
 YY_RULE_SETUP
 #line 263 "lex.ll"
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 264 "lex.ll"
 { KEYWORD_RETURN(UNION); }
 	YY_BREAK
-case 96:
-YY_RULE_SETUP
-#line 264 "lex.ll"
+case 97:
+YY_RULE_SETUP
+#line 265 "lex.ll"
 { KEYWORD_RETURN(UNSIGNED); }
 	YY_BREAK
-case 97:
-YY_RULE_SETUP
-#line 265 "lex.ll"
+case 98:
+YY_RULE_SETUP
+#line 266 "lex.ll"
 { KEYWORD_RETURN(VALIST); }			// GCC
 	YY_BREAK
-case 98:
-YY_RULE_SETUP
-#line 266 "lex.ll"
+case 99:
+YY_RULE_SETUP
+#line 267 "lex.ll"
 { KEYWORD_RETURN(VOID); }
 	YY_BREAK
-case 99:
-YY_RULE_SETUP
-#line 267 "lex.ll"
+case 100:
+YY_RULE_SETUP
+#line 268 "lex.ll"
 { KEYWORD_RETURN(VOLATILE); }
-	YY_BREAK
-case 100:
-YY_RULE_SETUP
-#line 268 "lex.ll"
-{ KEYWORD_RETURN(VOLATILE); }			// GCC
 	YY_BREAK
 case 101:
@@ -2361,52 +2370,52 @@
 YY_RULE_SETUP
 #line 270 "lex.ll"
+{ KEYWORD_RETURN(VOLATILE); }			// GCC
+	YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 271 "lex.ll"
 { KEYWORD_RETURN(WHILE); }
 	YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 272 "lex.ll"
+{ NUMERIC_RETURN(ZERO_T); }				// CFA
+	YY_BREAK
 /* identifier */
-case 103:
-YY_RULE_SETUP
-#line 273 "lex.ll"
+case 105:
+YY_RULE_SETUP
+#line 275 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
-case 104:
-YY_RULE_SETUP
-#line 274 "lex.ll"
+case 106:
+YY_RULE_SETUP
+#line 276 "lex.ll"
 { ATTRIBUTE_RETURN(); }
 	YY_BREAK
-case 105:
-YY_RULE_SETUP
-#line 275 "lex.ll"
+case 107:
+YY_RULE_SETUP
+#line 277 "lex.ll"
 { BEGIN BKQUOTE; }
 	YY_BREAK
-case 106:
-YY_RULE_SETUP
-#line 276 "lex.ll"
+case 108:
+YY_RULE_SETUP
+#line 278 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
-case 107:
-YY_RULE_SETUP
-#line 277 "lex.ll"
+case 109:
+YY_RULE_SETUP
+#line 279 "lex.ll"
 { BEGIN 0; }
 	YY_BREAK
 /* numeric constants */
-case 108:
-YY_RULE_SETUP
-#line 280 "lex.ll"
+case 110:
+YY_RULE_SETUP
+#line 282 "lex.ll"
 { NUMERIC_RETURN(ZERO); }				// CFA
 	YY_BREAK
-case 109:
-YY_RULE_SETUP
-#line 281 "lex.ll"
+case 111:
+YY_RULE_SETUP
+#line 283 "lex.ll"
 { NUMERIC_RETURN(ONE); }				// CFA
-	YY_BREAK
-case 110:
-YY_RULE_SETUP
-#line 282 "lex.ll"
-{ NUMERIC_RETURN(INTEGERconstant); }
-	YY_BREAK
-case 111:
-YY_RULE_SETUP
-#line 283 "lex.ll"
-{ NUMERIC_RETURN(INTEGERconstant); }
 	YY_BREAK
 case 112:
@@ -2418,85 +2427,85 @@
 YY_RULE_SETUP
 #line 285 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
+case 114:
+YY_RULE_SETUP
+#line 286 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
+case 115:
+YY_RULE_SETUP
+#line 287 "lex.ll"
 { NUMERIC_RETURN(REALDECIMALconstant); } // must appear before floating_constant
 	YY_BREAK
-case 114:
-YY_RULE_SETUP
-#line 286 "lex.ll"
+case 116:
+YY_RULE_SETUP
+#line 288 "lex.ll"
 { NUMERIC_RETURN(REALFRACTIONconstant); } // must appear before floating_constant
 	YY_BREAK
-case 115:
-YY_RULE_SETUP
-#line 287 "lex.ll"
+case 117:
+YY_RULE_SETUP
+#line 289 "lex.ll"
 { NUMERIC_RETURN(FLOATINGconstant); }
 	YY_BREAK
-case 116:
-YY_RULE_SETUP
-#line 288 "lex.ll"
+case 118:
+YY_RULE_SETUP
+#line 290 "lex.ll"
 { NUMERIC_RETURN(FLOATINGconstant); }
 	YY_BREAK
 /* character constant, allows empty value */
-case 117:
-YY_RULE_SETUP
-#line 291 "lex.ll"
+case 119:
+YY_RULE_SETUP
+#line 293 "lex.ll"
 { BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
 	YY_BREAK
-case 118:
-YY_RULE_SETUP
-#line 292 "lex.ll"
+case 120:
+YY_RULE_SETUP
+#line 294 "lex.ll"
 { strtext->append( yytext, yyleng ); }
 	YY_BREAK
-case 119:
-/* rule 119 can match eol */
-YY_RULE_SETUP
-#line 293 "lex.ll"
+case 121:
+/* rule 121 can match eol */
+YY_RULE_SETUP
+#line 295 "lex.ll"
 { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
 	YY_BREAK
 /* ' stop highlighting */
 /* string constant */
-case 120:
-YY_RULE_SETUP
-#line 297 "lex.ll"
+case 122:
+YY_RULE_SETUP
+#line 299 "lex.ll"
 { BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
 	YY_BREAK
-case 121:
-YY_RULE_SETUP
-#line 298 "lex.ll"
+case 123:
+YY_RULE_SETUP
+#line 300 "lex.ll"
 { strtext->append( yytext, yyleng ); }
 	YY_BREAK
-case 122:
-/* rule 122 can match eol */
-YY_RULE_SETUP
-#line 299 "lex.ll"
+case 124:
+/* rule 124 can match eol */
+YY_RULE_SETUP
+#line 301 "lex.ll"
 { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
 	YY_BREAK
 /* " stop highlighting */
 /* common character/string constant */
-case 123:
-YY_RULE_SETUP
-#line 303 "lex.ll"
+case 125:
+YY_RULE_SETUP
+#line 305 "lex.ll"
 { rm_underscore(); strtext->append( yytext, yyleng ); }
 	YY_BREAK
-case 124:
-/* rule 124 can match eol */
-YY_RULE_SETUP
-#line 304 "lex.ll"
+case 126:
+/* rule 126 can match eol */
+YY_RULE_SETUP
+#line 306 "lex.ll"
 {}						// continuation (ALSO HANDLED BY CPP)
 	YY_BREAK
-case 125:
-YY_RULE_SETUP
-#line 305 "lex.ll"
+case 127:
+YY_RULE_SETUP
+#line 307 "lex.ll"
 { strtext->append( yytext, yyleng ); } // unknown escape character
 	YY_BREAK
 /* punctuation */
-case 126:
-YY_RULE_SETUP
-#line 308 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 127:
-YY_RULE_SETUP
-#line 309 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
 case 128:
 YY_RULE_SETUP
@@ -2522,5 +2531,5 @@
 YY_RULE_SETUP
 #line 314 "lex.ll"
-{ ASCIIOP_RETURN(); }					// also operator
+{ ASCIIOP_RETURN(); }
 	YY_BREAK
 case 133:
@@ -2532,48 +2541,48 @@
 YY_RULE_SETUP
 #line 316 "lex.ll"
+{ ASCIIOP_RETURN(); }					// also operator
+	YY_BREAK
+case 135:
+YY_RULE_SETUP
+#line 317 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 135:
-YY_RULE_SETUP
-#line 317 "lex.ll"
+case 136:
+YY_RULE_SETUP
+#line 318 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 137:
+YY_RULE_SETUP
+#line 319 "lex.ll"
 { ASCIIOP_RETURN(); }					// also operator
 	YY_BREAK
-case 136:
-YY_RULE_SETUP
-#line 318 "lex.ll"
+case 138:
+YY_RULE_SETUP
+#line 320 "lex.ll"
 { NAMEDOP_RETURN(ELLIPSIS); }
 	YY_BREAK
 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
-case 137:
-YY_RULE_SETUP
-#line 321 "lex.ll"
+case 139:
+YY_RULE_SETUP
+#line 323 "lex.ll"
 { RETURN_VAL('['); }
 	YY_BREAK
-case 138:
-YY_RULE_SETUP
-#line 322 "lex.ll"
+case 140:
+YY_RULE_SETUP
+#line 324 "lex.ll"
 { RETURN_VAL(']'); }
 	YY_BREAK
-case 139:
-YY_RULE_SETUP
-#line 323 "lex.ll"
+case 141:
+YY_RULE_SETUP
+#line 325 "lex.ll"
 { RETURN_VAL('{'); }
 	YY_BREAK
-case 140:
-YY_RULE_SETUP
-#line 324 "lex.ll"
+case 142:
+YY_RULE_SETUP
+#line 326 "lex.ll"
 { RETURN_VAL('}'); }
 	YY_BREAK
 /* operators */
-case 141:
-YY_RULE_SETUP
-#line 327 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 142:
-YY_RULE_SETUP
-#line 328 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
 case 143:
 YY_RULE_SETUP
@@ -2638,131 +2647,141 @@
 case 155:
 YY_RULE_SETUP
+#line 341 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 156:
+YY_RULE_SETUP
 #line 342 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 157:
+YY_RULE_SETUP
+#line 344 "lex.ll"
 { NAMEDOP_RETURN(ICR); }
 	YY_BREAK
-case 156:
-YY_RULE_SETUP
-#line 343 "lex.ll"
+case 158:
+YY_RULE_SETUP
+#line 345 "lex.ll"
 { NAMEDOP_RETURN(DECR); }
 	YY_BREAK
-case 157:
-YY_RULE_SETUP
-#line 344 "lex.ll"
+case 159:
+YY_RULE_SETUP
+#line 346 "lex.ll"
 { NAMEDOP_RETURN(EQ); }
 	YY_BREAK
-case 158:
-YY_RULE_SETUP
-#line 345 "lex.ll"
+case 160:
+YY_RULE_SETUP
+#line 347 "lex.ll"
 { NAMEDOP_RETURN(NE); }
 	YY_BREAK
-case 159:
-YY_RULE_SETUP
-#line 346 "lex.ll"
+case 161:
+YY_RULE_SETUP
+#line 348 "lex.ll"
 { NAMEDOP_RETURN(LS); }
 	YY_BREAK
-case 160:
-YY_RULE_SETUP
-#line 347 "lex.ll"
+case 162:
+YY_RULE_SETUP
+#line 349 "lex.ll"
 { NAMEDOP_RETURN(RS); }
 	YY_BREAK
-case 161:
-YY_RULE_SETUP
-#line 348 "lex.ll"
+case 163:
+YY_RULE_SETUP
+#line 350 "lex.ll"
 { NAMEDOP_RETURN(LE); }
 	YY_BREAK
-case 162:
-YY_RULE_SETUP
-#line 349 "lex.ll"
+case 164:
+YY_RULE_SETUP
+#line 351 "lex.ll"
 { NAMEDOP_RETURN(GE); }
 	YY_BREAK
-case 163:
-YY_RULE_SETUP
-#line 350 "lex.ll"
+case 165:
+YY_RULE_SETUP
+#line 352 "lex.ll"
 { NAMEDOP_RETURN(ANDAND); }
 	YY_BREAK
-case 164:
-YY_RULE_SETUP
-#line 351 "lex.ll"
+case 166:
+YY_RULE_SETUP
+#line 353 "lex.ll"
 { NAMEDOP_RETURN(OROR); }
 	YY_BREAK
-case 165:
-YY_RULE_SETUP
-#line 352 "lex.ll"
+case 167:
+YY_RULE_SETUP
+#line 354 "lex.ll"
 { NAMEDOP_RETURN(ARROW); }
 	YY_BREAK
-case 166:
-YY_RULE_SETUP
-#line 353 "lex.ll"
+case 168:
+YY_RULE_SETUP
+#line 355 "lex.ll"
 { NAMEDOP_RETURN(PLUSassign); }
 	YY_BREAK
-case 167:
-YY_RULE_SETUP
-#line 354 "lex.ll"
+case 169:
+YY_RULE_SETUP
+#line 356 "lex.ll"
 { NAMEDOP_RETURN(MINUSassign); }
 	YY_BREAK
-case 168:
-YY_RULE_SETUP
-#line 355 "lex.ll"
+case 170:
+YY_RULE_SETUP
+#line 357 "lex.ll"
 { NAMEDOP_RETURN(MULTassign); }
 	YY_BREAK
-case 169:
-YY_RULE_SETUP
-#line 356 "lex.ll"
+case 171:
+YY_RULE_SETUP
+#line 358 "lex.ll"
 { NAMEDOP_RETURN(DIVassign); }
 	YY_BREAK
-case 170:
-YY_RULE_SETUP
-#line 357 "lex.ll"
+case 172:
+YY_RULE_SETUP
+#line 359 "lex.ll"
 { NAMEDOP_RETURN(MODassign); }
 	YY_BREAK
-case 171:
-YY_RULE_SETUP
-#line 358 "lex.ll"
+case 173:
+YY_RULE_SETUP
+#line 360 "lex.ll"
 { NAMEDOP_RETURN(ANDassign); }
 	YY_BREAK
-case 172:
-YY_RULE_SETUP
-#line 359 "lex.ll"
+case 174:
+YY_RULE_SETUP
+#line 361 "lex.ll"
 { NAMEDOP_RETURN(ORassign); }
 	YY_BREAK
-case 173:
-YY_RULE_SETUP
-#line 360 "lex.ll"
+case 175:
+YY_RULE_SETUP
+#line 362 "lex.ll"
 { NAMEDOP_RETURN(ERassign); }
 	YY_BREAK
-case 174:
-YY_RULE_SETUP
-#line 361 "lex.ll"
+case 176:
+YY_RULE_SETUP
+#line 363 "lex.ll"
 { NAMEDOP_RETURN(LSassign); }
 	YY_BREAK
-case 175:
-YY_RULE_SETUP
-#line 362 "lex.ll"
+case 177:
+YY_RULE_SETUP
+#line 364 "lex.ll"
 { NAMEDOP_RETURN(RSassign); }
 	YY_BREAK
-case 176:
-YY_RULE_SETUP
-#line 364 "lex.ll"
+case 178:
+YY_RULE_SETUP
+#line 366 "lex.ll"
 { NAMEDOP_RETURN(ATassign); }			// CFA
 	YY_BREAK
 /* CFA, operator identifier */
-case 177:
-YY_RULE_SETUP
-#line 367 "lex.ll"
+case 179:
+YY_RULE_SETUP
+#line 369 "lex.ll"
 { IDENTIFIER_RETURN(); }				// unary
 	YY_BREAK
-case 178:
-YY_RULE_SETUP
-#line 368 "lex.ll"
+case 180:
+YY_RULE_SETUP
+#line 370 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
-case 179:
-YY_RULE_SETUP
-#line 369 "lex.ll"
+case 181:
+YY_RULE_SETUP
+#line 371 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
-case 180:
-YY_RULE_SETUP
-#line 370 "lex.ll"
+case 182:
+YY_RULE_SETUP
+#line 372 "lex.ll"
 { IDENTIFIER_RETURN(); }		// binary
 	YY_BREAK
@@ -2793,7 +2812,7 @@
 	  an argument list.
 	*/
-case 181:
-YY_RULE_SETUP
-#line 397 "lex.ll"
+case 183:
+YY_RULE_SETUP
+#line 399 "lex.ll"
 {
 	// 1 or 2 character unary operator ?
@@ -2808,15 +2827,15 @@
 	YY_BREAK
 /* unknown characters */
-case 182:
-YY_RULE_SETUP
-#line 409 "lex.ll"
+case 184:
+YY_RULE_SETUP
+#line 411 "lex.ll"
 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
 	YY_BREAK
-case 183:
-YY_RULE_SETUP
-#line 411 "lex.ll"
+case 185:
+YY_RULE_SETUP
+#line 413 "lex.ll"
 ECHO;
 	YY_BREAK
-#line 2821 "Parser/lex.cc"
+#line 2840 "Parser/lex.cc"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(COMMENT):
@@ -3115,5 +3134,5 @@
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 895 )
+			if ( yy_current_state >= 905 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
@@ -3143,9 +3162,9 @@
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 895 )
+		if ( yy_current_state >= 905 )
 			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 == 894);
+	yy_is_jam = (yy_current_state == 904);
 
 	return yy_is_jam ? 0 : yy_current_state;
@@ -3793,5 +3812,5 @@
 #define YYTABLES_NAME "yytables"
 
-#line 411 "lex.ll"
+#line 413 "lex.ll"
 
 
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/lex.ll	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Wed Oct 26 17:32:30 2016
- * Update Count     : 499
+ * Last Modified On : Tue Nov 29 11:32:00 2016
+ * Update Count     : 501
  */
 
@@ -237,4 +237,5 @@
 _Noreturn		{ KEYWORD_RETURN(NORETURN); }			// C11
 __builtin_offsetof { KEYWORD_RETURN(OFFSETOF); }		// GCC
+one_t			{ NUMERIC_RETURN(ONE_T); }				// CFA
 otype			{ KEYWORD_RETURN(OTYPE); }				// CFA
 register		{ KEYWORD_RETURN(REGISTER); }
@@ -269,4 +270,5 @@
 __volatile__	{ KEYWORD_RETURN(VOLATILE); }			// GCC
 while			{ KEYWORD_RETURN(WHILE); }
+zero_t			{ NUMERIC_RETURN(ZERO_T); }				// CFA
 
 				/* identifier */
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/parser.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -145,91 +145,93 @@
      SIGNED = 277,
      UNSIGNED = 278,
-     VALIST = 279,
-     BOOL = 280,
-     COMPLEX = 281,
-     IMAGINARY = 282,
-     TYPEOF = 283,
-     LABEL = 284,
-     ENUM = 285,
-     STRUCT = 286,
-     UNION = 287,
-     OTYPE = 288,
-     FTYPE = 289,
-     DTYPE = 290,
-     TRAIT = 291,
-     SIZEOF = 292,
-     OFFSETOF = 293,
-     ATTRIBUTE = 294,
-     EXTENSION = 295,
-     IF = 296,
-     ELSE = 297,
-     SWITCH = 298,
-     CASE = 299,
-     DEFAULT = 300,
-     DO = 301,
-     WHILE = 302,
-     FOR = 303,
-     BREAK = 304,
-     CONTINUE = 305,
-     GOTO = 306,
-     RETURN = 307,
-     CHOOSE = 308,
-     DISABLE = 309,
-     ENABLE = 310,
-     FALLTHRU = 311,
-     TRY = 312,
-     CATCH = 313,
-     CATCHRESUME = 314,
-     FINALLY = 315,
-     THROW = 316,
-     THROWRESUME = 317,
-     AT = 318,
-     ASM = 319,
-     ALIGNAS = 320,
-     ALIGNOF = 321,
-     ATOMIC = 322,
-     GENERIC = 323,
-     NORETURN = 324,
-     STATICASSERT = 325,
-     THREADLOCAL = 326,
-     IDENTIFIER = 327,
-     QUOTED_IDENTIFIER = 328,
-     TYPEDEFname = 329,
-     TYPEGENname = 330,
-     ATTR_IDENTIFIER = 331,
-     ATTR_TYPEDEFname = 332,
-     ATTR_TYPEGENname = 333,
-     INTEGERconstant = 334,
-     CHARACTERconstant = 335,
-     STRINGliteral = 336,
-     REALDECIMALconstant = 337,
-     REALFRACTIONconstant = 338,
-     FLOATINGconstant = 339,
-     ZERO = 340,
-     ONE = 341,
-     ARROW = 342,
-     ICR = 343,
-     DECR = 344,
-     LS = 345,
-     RS = 346,
-     LE = 347,
-     GE = 348,
-     EQ = 349,
-     NE = 350,
-     ANDAND = 351,
-     OROR = 352,
-     ELLIPSIS = 353,
-     MULTassign = 354,
-     DIVassign = 355,
-     MODassign = 356,
-     PLUSassign = 357,
-     MINUSassign = 358,
-     LSassign = 359,
-     RSassign = 360,
-     ANDassign = 361,
-     ERassign = 362,
-     ORassign = 363,
-     ATassign = 364,
-     THEN = 365
+     ZERO_T = 279,
+     ONE_T = 280,
+     VALIST = 281,
+     BOOL = 282,
+     COMPLEX = 283,
+     IMAGINARY = 284,
+     TYPEOF = 285,
+     LABEL = 286,
+     ENUM = 287,
+     STRUCT = 288,
+     UNION = 289,
+     OTYPE = 290,
+     FTYPE = 291,
+     DTYPE = 292,
+     TRAIT = 293,
+     SIZEOF = 294,
+     OFFSETOF = 295,
+     ATTRIBUTE = 296,
+     EXTENSION = 297,
+     IF = 298,
+     ELSE = 299,
+     SWITCH = 300,
+     CASE = 301,
+     DEFAULT = 302,
+     DO = 303,
+     WHILE = 304,
+     FOR = 305,
+     BREAK = 306,
+     CONTINUE = 307,
+     GOTO = 308,
+     RETURN = 309,
+     CHOOSE = 310,
+     DISABLE = 311,
+     ENABLE = 312,
+     FALLTHRU = 313,
+     TRY = 314,
+     CATCH = 315,
+     CATCHRESUME = 316,
+     FINALLY = 317,
+     THROW = 318,
+     THROWRESUME = 319,
+     AT = 320,
+     ASM = 321,
+     ALIGNAS = 322,
+     ALIGNOF = 323,
+     ATOMIC = 324,
+     GENERIC = 325,
+     NORETURN = 326,
+     STATICASSERT = 327,
+     THREADLOCAL = 328,
+     IDENTIFIER = 329,
+     QUOTED_IDENTIFIER = 330,
+     TYPEDEFname = 331,
+     TYPEGENname = 332,
+     ATTR_IDENTIFIER = 333,
+     ATTR_TYPEDEFname = 334,
+     ATTR_TYPEGENname = 335,
+     INTEGERconstant = 336,
+     CHARACTERconstant = 337,
+     STRINGliteral = 338,
+     REALDECIMALconstant = 339,
+     REALFRACTIONconstant = 340,
+     FLOATINGconstant = 341,
+     ZERO = 342,
+     ONE = 343,
+     ARROW = 344,
+     ICR = 345,
+     DECR = 346,
+     LS = 347,
+     RS = 348,
+     LE = 349,
+     GE = 350,
+     EQ = 351,
+     NE = 352,
+     ANDAND = 353,
+     OROR = 354,
+     ELLIPSIS = 355,
+     MULTassign = 356,
+     DIVassign = 357,
+     MODassign = 358,
+     PLUSassign = 359,
+     MINUSassign = 360,
+     LSassign = 361,
+     RSassign = 362,
+     ANDassign = 363,
+     ERassign = 364,
+     ORassign = 365,
+     ATassign = 366,
+     THEN = 367
    };
 #endif
@@ -256,91 +258,93 @@
 #define SIGNED 277
 #define UNSIGNED 278
-#define VALIST 279
-#define BOOL 280
-#define COMPLEX 281
-#define IMAGINARY 282
-#define TYPEOF 283
-#define LABEL 284
-#define ENUM 285
-#define STRUCT 286
-#define UNION 287
-#define OTYPE 288
-#define FTYPE 289
-#define DTYPE 290
-#define TRAIT 291
-#define SIZEOF 292
-#define OFFSETOF 293
-#define ATTRIBUTE 294
-#define EXTENSION 295
-#define IF 296
-#define ELSE 297
-#define SWITCH 298
-#define CASE 299
-#define DEFAULT 300
-#define DO 301
-#define WHILE 302
-#define FOR 303
-#define BREAK 304
-#define CONTINUE 305
-#define GOTO 306
-#define RETURN 307
-#define CHOOSE 308
-#define DISABLE 309
-#define ENABLE 310
-#define FALLTHRU 311
-#define TRY 312
-#define CATCH 313
-#define CATCHRESUME 314
-#define FINALLY 315
-#define THROW 316
-#define THROWRESUME 317
-#define AT 318
-#define ASM 319
-#define ALIGNAS 320
-#define ALIGNOF 321
-#define ATOMIC 322
-#define GENERIC 323
-#define NORETURN 324
-#define STATICASSERT 325
-#define THREADLOCAL 326
-#define IDENTIFIER 327
-#define QUOTED_IDENTIFIER 328
-#define TYPEDEFname 329
-#define TYPEGENname 330
-#define ATTR_IDENTIFIER 331
-#define ATTR_TYPEDEFname 332
-#define ATTR_TYPEGENname 333
-#define INTEGERconstant 334
-#define CHARACTERconstant 335
-#define STRINGliteral 336
-#define REALDECIMALconstant 337
-#define REALFRACTIONconstant 338
-#define FLOATINGconstant 339
-#define ZERO 340
-#define ONE 341
-#define ARROW 342
-#define ICR 343
-#define DECR 344
-#define LS 345
-#define RS 346
-#define LE 347
-#define GE 348
-#define EQ 349
-#define NE 350
-#define ANDAND 351
-#define OROR 352
-#define ELLIPSIS 353
-#define MULTassign 354
-#define DIVassign 355
-#define MODassign 356
-#define PLUSassign 357
-#define MINUSassign 358
-#define LSassign 359
-#define RSassign 360
-#define ANDassign 361
-#define ERassign 362
-#define ORassign 363
-#define ATassign 364
-#define THEN 365
+#define ZERO_T 279
+#define ONE_T 280
+#define VALIST 281
+#define BOOL 282
+#define COMPLEX 283
+#define IMAGINARY 284
+#define TYPEOF 285
+#define LABEL 286
+#define ENUM 287
+#define STRUCT 288
+#define UNION 289
+#define OTYPE 290
+#define FTYPE 291
+#define DTYPE 292
+#define TRAIT 293
+#define SIZEOF 294
+#define OFFSETOF 295
+#define ATTRIBUTE 296
+#define EXTENSION 297
+#define IF 298
+#define ELSE 299
+#define SWITCH 300
+#define CASE 301
+#define DEFAULT 302
+#define DO 303
+#define WHILE 304
+#define FOR 305
+#define BREAK 306
+#define CONTINUE 307
+#define GOTO 308
+#define RETURN 309
+#define CHOOSE 310
+#define DISABLE 311
+#define ENABLE 312
+#define FALLTHRU 313
+#define TRY 314
+#define CATCH 315
+#define CATCHRESUME 316
+#define FINALLY 317
+#define THROW 318
+#define THROWRESUME 319
+#define AT 320
+#define ASM 321
+#define ALIGNAS 322
+#define ALIGNOF 323
+#define ATOMIC 324
+#define GENERIC 325
+#define NORETURN 326
+#define STATICASSERT 327
+#define THREADLOCAL 328
+#define IDENTIFIER 329
+#define QUOTED_IDENTIFIER 330
+#define TYPEDEFname 331
+#define TYPEGENname 332
+#define ATTR_IDENTIFIER 333
+#define ATTR_TYPEDEFname 334
+#define ATTR_TYPEGENname 335
+#define INTEGERconstant 336
+#define CHARACTERconstant 337
+#define STRINGliteral 338
+#define REALDECIMALconstant 339
+#define REALFRACTIONconstant 340
+#define FLOATINGconstant 341
+#define ZERO 342
+#define ONE 343
+#define ARROW 344
+#define ICR 345
+#define DECR 346
+#define LS 347
+#define RS 348
+#define LE 349
+#define GE 350
+#define EQ 351
+#define NE 352
+#define ANDAND 353
+#define OROR 354
+#define ELLIPSIS 355
+#define MULTassign 356
+#define DIVassign 357
+#define MODassign 358
+#define PLUSassign 359
+#define MINUSassign 360
+#define LSassign 361
+#define RSassign 362
+#define ANDassign 363
+#define ERassign 364
+#define ORassign 365
+#define ATassign 366
+#define THEN 367
 
 
@@ -372,5 +376,5 @@
 
 /* Line 293 of yacc.c  */
-#line 375 "Parser/parser.cc"
+#line 379 "Parser/parser.cc"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
@@ -384,5 +388,5 @@
 
 /* Line 343 of yacc.c  */
-#line 387 "Parser/parser.cc"
+#line 391 "Parser/parser.cc"
 
 #ifdef short
@@ -601,20 +605,20 @@
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  249
+#define YYFINAL  251
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   10266
+#define YYLAST   10624
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  135
+#define YYNTOKENS  137
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  243
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  755
+#define YYNRULES  757
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  1538
+#define YYNSTATES  1540
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   365
+#define YYMAXUTOK   367
 
 #define YYTRANSLATE(YYX)						\
@@ -627,14 +631,14 @@
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   123,     2,     2,     2,   126,   120,     2,
-     111,   112,   119,   121,   118,   122,   115,   125,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   132,   134,
-     127,   133,   128,   131,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   125,     2,     2,     2,   128,   122,     2,
+     113,   114,   121,   123,   120,   124,   117,   127,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   134,   136,
+     129,   135,   130,   133,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   113,     2,   114,   129,     2,     2,     2,     2,     2,
+       2,   115,     2,   116,   131,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   116,   130,   117,   124,     2,     2,     2,
+       2,     2,     2,   118,   132,   119,   126,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -660,5 +664,5 @@
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110
+     105,   106,   107,   108,   109,   110,   111,   112
 };
 
@@ -701,47 +705,47 @@
     1119,  1125,  1127,  1130,  1134,  1136,  1139,  1141,  1143,  1145,
     1147,  1149,  1151,  1153,  1155,  1157,  1159,  1161,  1163,  1165,
-    1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1186,
-    1189,  1193,  1197,  1199,  1203,  1205,  1208,  1211,  1214,  1219,
-    1224,  1229,  1234,  1236,  1239,  1242,  1246,  1248,  1251,  1254,
-    1256,  1259,  1262,  1266,  1268,  1271,  1274,  1276,  1278,  1283,
-    1286,  1287,  1294,  1302,  1305,  1308,  1311,  1312,  1315,  1318,
-    1322,  1325,  1329,  1331,  1334,  1338,  1341,  1344,  1349,  1350,
-    1352,  1355,  1358,  1360,  1361,  1363,  1366,  1369,  1375,  1378,
-    1379,  1387,  1390,  1395,  1396,  1399,  1400,  1402,  1404,  1406,
-    1412,  1418,  1424,  1426,  1432,  1438,  1448,  1450,  1456,  1457,
-    1459,  1461,  1467,  1469,  1471,  1477,  1483,  1485,  1489,  1493,
-    1498,  1500,  1502,  1504,  1506,  1509,  1511,  1515,  1519,  1521,
-    1524,  1526,  1530,  1532,  1534,  1536,  1538,  1540,  1542,  1544,
-    1546,  1548,  1550,  1552,  1555,  1557,  1559,  1561,  1564,  1565,
-    1568,  1571,  1573,  1578,  1579,  1581,  1584,  1588,  1593,  1596,
-    1599,  1601,  1604,  1607,  1613,  1619,  1627,  1634,  1636,  1639,
-    1642,  1646,  1648,  1651,  1654,  1659,  1662,  1667,  1668,  1673,
-    1676,  1678,  1680,  1682,  1683,  1686,  1692,  1698,  1712,  1714,
-    1716,  1720,  1724,  1727,  1731,  1735,  1738,  1743,  1745,  1752,
-    1762,  1763,  1775,  1777,  1781,  1785,  1789,  1791,  1793,  1799,
-    1802,  1808,  1809,  1811,  1813,  1817,  1818,  1820,  1822,  1824,
-    1826,  1827,  1834,  1837,  1839,  1842,  1847,  1850,  1854,  1858,
-    1862,  1867,  1873,  1879,  1885,  1892,  1894,  1896,  1898,  1902,
-    1903,  1909,  1910,  1912,  1914,  1917,  1924,  1926,  1930,  1931,
-    1933,  1938,  1940,  1942,  1944,  1946,  1949,  1951,  1954,  1957,
-    1959,  1963,  1966,  1970,  1974,  1977,  1982,  1987,  1991,  2000,
-    2004,  2007,  2009,  2012,  2019,  2028,  2032,  2035,  2039,  2043,
-    2048,  2053,  2057,  2059,  2061,  2063,  2068,  2075,  2079,  2082,
-    2086,  2090,  2095,  2100,  2104,  2107,  2109,  2112,  2115,  2117,
-    2121,  2124,  2128,  2132,  2135,  2140,  2145,  2149,  2156,  2165,
-    2169,  2172,  2174,  2177,  2180,  2183,  2187,  2191,  2194,  2199,
-    2204,  2208,  2215,  2224,  2228,  2231,  2233,  2236,  2239,  2241,
-    2243,  2246,  2250,  2254,  2257,  2262,  2269,  2278,  2280,  2283,
-    2286,  2288,  2291,  2294,  2298,  2302,  2304,  2309,  2314,  2318,
-    2324,  2333,  2337,  2340,  2344,  2346,  2352,  2358,  2365,  2372,
-    2374,  2377,  2380,  2382,  2385,  2388,  2392,  2396,  2398,  2403,
-    2408,  2412,  2418,  2427,  2431,  2433,  2436,  2438,  2441,  2448,
-    2454,  2461,  2469,  2477,  2479,  2482,  2485,  2487,  2490,  2493,
-    2497,  2501,  2503,  2508,  2513,  2517,  2526,  2530,  2532,  2534,
-    2537,  2539,  2541,  2544,  2548,  2551,  2555,  2558,  2562,  2566,
-    2569,  2574,  2578,  2581,  2585,  2588,  2593,  2597,  2600,  2607,
-    2614,  2621,  2629,  2631,  2634,  2636,  2638,  2640,  2643,  2647,
-    2650,  2654,  2657,  2661,  2665,  2670,  2673,  2677,  2682,  2685,
-    2691,  2698,  2705,  2706,  2708,  2709
+    1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1185,
+    1187,  1190,  1193,  1197,  1201,  1203,  1207,  1209,  1212,  1215,
+    1218,  1223,  1228,  1233,  1238,  1240,  1243,  1246,  1250,  1252,
+    1255,  1258,  1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,
+    1282,  1287,  1290,  1291,  1298,  1306,  1309,  1312,  1315,  1316,
+    1319,  1322,  1326,  1329,  1333,  1335,  1338,  1342,  1345,  1348,
+    1353,  1354,  1356,  1359,  1362,  1364,  1365,  1367,  1370,  1373,
+    1379,  1382,  1383,  1391,  1394,  1399,  1400,  1403,  1404,  1406,
+    1408,  1410,  1416,  1422,  1428,  1430,  1436,  1442,  1452,  1454,
+    1460,  1461,  1463,  1465,  1471,  1473,  1475,  1481,  1487,  1489,
+    1493,  1497,  1502,  1504,  1506,  1508,  1510,  1513,  1515,  1519,
+    1523,  1525,  1528,  1530,  1534,  1536,  1538,  1540,  1542,  1544,
+    1546,  1548,  1550,  1552,  1554,  1556,  1559,  1561,  1563,  1565,
+    1568,  1569,  1572,  1575,  1577,  1582,  1583,  1585,  1588,  1592,
+    1597,  1600,  1603,  1605,  1608,  1611,  1617,  1623,  1631,  1638,
+    1640,  1643,  1646,  1650,  1652,  1655,  1658,  1663,  1666,  1671,
+    1672,  1677,  1680,  1682,  1684,  1686,  1687,  1690,  1696,  1702,
+    1716,  1718,  1720,  1724,  1728,  1731,  1735,  1739,  1742,  1747,
+    1749,  1756,  1766,  1767,  1779,  1781,  1785,  1789,  1793,  1795,
+    1797,  1803,  1806,  1812,  1813,  1815,  1817,  1821,  1822,  1824,
+    1826,  1828,  1830,  1831,  1838,  1841,  1843,  1846,  1851,  1854,
+    1858,  1862,  1866,  1871,  1877,  1883,  1889,  1896,  1898,  1900,
+    1902,  1906,  1907,  1913,  1914,  1916,  1918,  1921,  1928,  1930,
+    1934,  1935,  1937,  1942,  1944,  1946,  1948,  1950,  1953,  1955,
+    1958,  1961,  1963,  1967,  1970,  1974,  1978,  1981,  1986,  1991,
+    1995,  2004,  2008,  2011,  2013,  2016,  2023,  2032,  2036,  2039,
+    2043,  2047,  2052,  2057,  2061,  2063,  2065,  2067,  2072,  2079,
+    2083,  2086,  2090,  2094,  2099,  2104,  2108,  2111,  2113,  2116,
+    2119,  2121,  2125,  2128,  2132,  2136,  2139,  2144,  2149,  2153,
+    2160,  2169,  2173,  2176,  2178,  2181,  2184,  2187,  2191,  2195,
+    2198,  2203,  2208,  2212,  2219,  2228,  2232,  2235,  2237,  2240,
+    2243,  2245,  2247,  2250,  2254,  2258,  2261,  2266,  2273,  2282,
+    2284,  2287,  2290,  2292,  2295,  2298,  2302,  2306,  2308,  2313,
+    2318,  2322,  2328,  2337,  2341,  2344,  2348,  2350,  2356,  2362,
+    2369,  2376,  2378,  2381,  2384,  2386,  2389,  2392,  2396,  2400,
+    2402,  2407,  2412,  2416,  2422,  2431,  2435,  2437,  2440,  2442,
+    2445,  2452,  2458,  2465,  2473,  2481,  2483,  2486,  2489,  2491,
+    2494,  2497,  2501,  2505,  2507,  2512,  2517,  2521,  2530,  2534,
+    2536,  2538,  2541,  2543,  2545,  2548,  2552,  2555,  2559,  2562,
+    2566,  2570,  2573,  2578,  2582,  2585,  2589,  2592,  2597,  2601,
+    2604,  2611,  2618,  2625,  2633,  2635,  2638,  2640,  2642,  2644,
+    2647,  2651,  2654,  2658,  2661,  2665,  2669,  2674,  2677,  2681,
+    2686,  2689,  2695,  2702,  2709,  2710,  2712,  2713
 };
 
@@ -749,276 +753,276 @@
 static const yytype_int16 yyrhs[] =
 {
-     306,     0,    -1,    -1,    -1,    79,    -1,    82,    -1,    83,
-      -1,    84,    -1,    80,    -1,    72,    -1,    76,    -1,   142,
-      -1,    72,    -1,    76,    -1,    72,    -1,   142,    -1,    85,
-      -1,    86,    -1,   144,    -1,    81,    -1,   144,    81,    -1,
-      72,    -1,   142,    -1,   172,    -1,   111,   174,   112,    -1,
-     111,   178,   112,    -1,   145,    -1,   146,   113,   136,   169,
-     137,   114,    -1,   146,   111,   147,   112,    -1,   146,   115,
-     141,    -1,   146,   115,   113,   136,   149,   137,   114,    -1,
-     146,    83,    -1,   146,    87,   141,    -1,   146,    87,   113,
-     136,   149,   137,   114,    -1,   146,    88,    -1,   146,    89,
-      -1,   111,   279,   112,   116,   283,   376,   117,    -1,   146,
-     116,   147,   117,    -1,   148,    -1,   147,   118,   148,    -1,
-      -1,   169,    -1,   150,    -1,   149,   118,   150,    -1,   151,
-      -1,    82,   150,    -1,    82,   113,   136,   149,   137,   114,
-      -1,   151,   115,   150,    -1,   151,   115,   113,   136,   149,
-     137,   114,    -1,   151,    87,   150,    -1,   151,    87,   113,
-     136,   149,   137,   114,    -1,    79,   152,    -1,    84,   152,
-      -1,   141,   152,    -1,    -1,   152,    83,    -1,   146,    -1,
-     138,    -1,   143,    -1,    40,   156,    -1,   154,   156,    -1,
-     155,   156,    -1,    88,   153,    -1,    89,   153,    -1,    37,
-     153,    -1,    37,   111,   279,   112,    -1,    66,   153,    -1,
-      66,   111,   279,   112,    -1,    38,   111,   279,   118,   141,
-     112,    -1,    76,    -1,    76,   111,   148,   112,    -1,    76,
-     111,   280,   112,    -1,   119,    -1,   120,    -1,   121,    -1,
-     122,    -1,   123,    -1,   124,    -1,   153,    -1,   111,   279,
-     112,   156,    -1,   156,    -1,   157,   119,   156,    -1,   157,
-     125,   156,    -1,   157,   126,   156,    -1,   157,    -1,   158,
-     121,   157,    -1,   158,   122,   157,    -1,   158,    -1,   159,
-      90,   158,    -1,   159,    91,   158,    -1,   159,    -1,   160,
-     127,   159,    -1,   160,   128,   159,    -1,   160,    92,   159,
-      -1,   160,    93,   159,    -1,   160,    -1,   161,    94,   160,
-      -1,   161,    95,   160,    -1,   161,    -1,   162,   120,   161,
-      -1,   162,    -1,   163,   129,   162,    -1,   163,    -1,   164,
-     130,   163,    -1,   164,    -1,   165,    96,   164,    -1,   165,
-      -1,   166,    97,   165,    -1,   166,    -1,   166,   131,   174,
-     132,   167,    -1,   166,   131,   132,   167,    -1,   167,    -1,
-     167,    -1,   153,   171,   169,    -1,    -1,   169,    -1,   133,
-      -1,   109,    -1,    99,    -1,   100,    -1,   101,    -1,   102,
-      -1,   103,    -1,   104,    -1,   105,    -1,   106,    -1,   107,
-      -1,   108,    -1,   113,   136,   118,   173,   137,   114,    -1,
-     113,   136,   169,   118,   173,   137,   114,    -1,   170,    -1,
-     173,   118,   170,    -1,   169,    -1,   174,   118,   169,    -1,
-      -1,   174,    -1,   177,    -1,   178,    -1,   182,    -1,   183,
-      -1,   195,    -1,   197,    -1,   198,    -1,   203,    -1,   129,
-     146,   116,   147,   117,   134,    -1,    72,   132,   316,   176,
-      -1,   116,   117,    -1,   116,   136,   136,   214,   179,   137,
-     117,    -1,   180,    -1,   179,   136,   180,    -1,   217,    -1,
-      40,   217,    -1,   312,    -1,   176,   137,    -1,   176,    -1,
-     181,   176,    -1,   175,   134,    -1,    41,   111,   174,   112,
-     176,    -1,    41,   111,   174,   112,   176,    42,   176,    -1,
-      43,   111,   174,   112,   188,    -1,    43,   111,   174,   112,
-     116,   136,   210,   189,   117,    -1,    53,   111,   174,   112,
-     188,    -1,    53,   111,   174,   112,   116,   136,   210,   191,
-     117,    -1,   168,    -1,   168,    98,   168,    -1,   314,    -1,
-     184,    -1,   185,   118,   184,    -1,    44,   185,   132,    -1,
-      45,   132,    -1,   186,    -1,   187,   186,    -1,   187,   176,
-      -1,    -1,   190,    -1,   187,   181,    -1,   190,   187,   181,
-      -1,    -1,   192,    -1,   187,   194,    -1,   187,   181,   193,
-      -1,   192,   187,   194,    -1,   192,   187,   181,   193,    -1,
-      -1,   194,    -1,    56,    -1,    56,   134,    -1,    47,   111,
-     174,   112,   176,    -1,    46,   176,    47,   111,   174,   112,
-     134,    -1,    48,   111,   136,   196,   112,   176,    -1,   175,
-     137,   134,   175,   134,   175,    -1,   217,   175,   134,   175,
-      -1,    51,    72,   134,    -1,    51,   119,   174,   134,    -1,
-      50,   134,    -1,    50,    72,   134,    -1,    49,   134,    -1,
-      49,    72,   134,    -1,    52,   175,   134,    -1,    61,   170,
-     134,    -1,    62,   170,   134,    -1,    62,   170,    63,   169,
-     134,    -1,    57,   178,   199,    -1,    57,   178,   201,    -1,
-      57,   178,   199,   201,    -1,   200,    -1,    58,   111,    98,
-     112,   178,    -1,   200,    58,   111,    98,   112,   178,    -1,
-      59,   111,    98,   112,   178,    -1,   200,    59,   111,    98,
-     112,   178,    -1,    58,   111,   136,   136,   202,   137,   112,
-     178,   137,    -1,   200,    58,   111,   136,   136,   202,   137,
-     112,   178,   137,    -1,    59,   111,   136,   136,   202,   137,
-     112,   178,   137,    -1,   200,    59,   111,   136,   136,   202,
-     137,   112,   178,   137,    -1,    60,   178,    -1,   230,    -1,
-     230,   313,    -1,   230,   361,    -1,   370,   141,    -1,   370,
-      -1,    64,   204,   111,   143,   112,   134,    -1,    64,   204,
-     111,   143,   132,   205,   112,   134,    -1,    64,   204,   111,
-     143,   132,   205,   132,   205,   112,   134,    -1,    64,   204,
-     111,   143,   132,   205,   132,   205,   132,   208,   112,   134,
-      -1,    64,   204,    51,   111,   143,   132,   132,   205,   132,
-     208,   132,   209,   112,   134,    -1,    -1,    11,    -1,    -1,
-     206,    -1,   207,    -1,   206,   118,   207,    -1,   143,   111,
-     168,   112,    -1,   113,   168,   114,   143,   111,   168,   112,
-      -1,    -1,   143,    -1,   208,   118,   143,    -1,   141,    -1,
-     209,   118,   141,    -1,   137,    -1,   211,    -1,   217,    -1,
-     211,   136,   217,    -1,   137,    -1,   213,    -1,   227,    -1,
-     213,   136,   227,    -1,    -1,   215,    -1,    29,   216,   134,
-      -1,   215,    29,   216,   134,    -1,   278,    -1,   216,   118,
-     278,    -1,   218,    -1,   227,    -1,   219,   137,   134,    -1,
-     224,   137,   134,    -1,   221,   137,   134,    -1,   297,   137,
-     134,    -1,   300,   137,   134,    -1,   220,   281,    -1,   236,
-     220,   281,    -1,   219,   137,   118,   136,   276,   281,    -1,
-     371,   276,   315,    -1,   374,   276,   315,    -1,   232,   374,
-     276,   315,    -1,   222,    -1,   232,   222,    -1,   236,   222,
-      -1,   236,   232,   222,    -1,   221,   137,   118,   136,   276,
-      -1,   374,   276,   111,   136,   264,   137,   112,    -1,   223,
-     276,   111,   136,   264,   137,   112,    -1,   113,   136,   266,
-     137,   114,    -1,   113,   136,   266,   137,   118,   136,   267,
-     137,   114,    -1,     3,   220,    -1,     3,   222,    -1,   224,
-     137,   118,   136,   141,    -1,     3,   230,   313,    -1,   225,
-     137,   118,   136,   313,    -1,   232,     3,   230,   313,    -1,
-     230,     3,   313,    -1,   230,     3,   232,   313,    -1,     3,
-     141,   133,   169,    -1,   226,   137,   118,   136,   141,   133,
-     169,    -1,   228,   137,   134,    -1,   225,   137,   134,    -1,
-     226,   137,   134,    -1,   244,   137,   134,    -1,   229,   313,
-     315,   281,    -1,   228,   118,   316,   313,   315,   281,    -1,
-     240,    -1,   244,    -1,   246,    -1,   287,    -1,   241,    -1,
-     245,    -1,   247,    -1,   288,    -1,    -1,   232,    -1,   233,
-      -1,   232,   233,    -1,   234,    -1,   318,    -1,    10,    -1,
-      12,    -1,    11,    -1,    14,    -1,    67,    -1,    -1,    13,
-     111,   235,   290,   112,    -1,   237,    -1,   232,   237,    -1,
-     236,   232,   237,    -1,   238,    -1,   237,   238,    -1,     5,
+     308,     0,    -1,    -1,    -1,    81,    -1,    84,    -1,    85,
+      -1,    86,    -1,    82,    -1,    74,    -1,    78,    -1,   144,
+      -1,    74,    -1,    78,    -1,    74,    -1,   144,    -1,    87,
+      -1,    88,    -1,   146,    -1,    83,    -1,   146,    83,    -1,
+      74,    -1,   144,    -1,   174,    -1,   113,   176,   114,    -1,
+     113,   180,   114,    -1,   147,    -1,   148,   115,   138,   171,
+     139,   116,    -1,   148,   113,   149,   114,    -1,   148,   117,
+     143,    -1,   148,   117,   115,   138,   151,   139,   116,    -1,
+     148,    85,    -1,   148,    89,   143,    -1,   148,    89,   115,
+     138,   151,   139,   116,    -1,   148,    90,    -1,   148,    91,
+      -1,   113,   281,   114,   118,   285,   378,   119,    -1,   148,
+     118,   149,   119,    -1,   150,    -1,   149,   120,   150,    -1,
+      -1,   171,    -1,   152,    -1,   151,   120,   152,    -1,   153,
+      -1,    84,   152,    -1,    84,   115,   138,   151,   139,   116,
+      -1,   153,   117,   152,    -1,   153,   117,   115,   138,   151,
+     139,   116,    -1,   153,    89,   152,    -1,   153,    89,   115,
+     138,   151,   139,   116,    -1,    81,   154,    -1,    86,   154,
+      -1,   143,   154,    -1,    -1,   154,    85,    -1,   148,    -1,
+     140,    -1,   145,    -1,    42,   158,    -1,   156,   158,    -1,
+     157,   158,    -1,    90,   155,    -1,    91,   155,    -1,    39,
+     155,    -1,    39,   113,   281,   114,    -1,    68,   155,    -1,
+      68,   113,   281,   114,    -1,    40,   113,   281,   120,   143,
+     114,    -1,    78,    -1,    78,   113,   150,   114,    -1,    78,
+     113,   282,   114,    -1,   121,    -1,   122,    -1,   123,    -1,
+     124,    -1,   125,    -1,   126,    -1,   155,    -1,   113,   281,
+     114,   158,    -1,   158,    -1,   159,   121,   158,    -1,   159,
+     127,   158,    -1,   159,   128,   158,    -1,   159,    -1,   160,
+     123,   159,    -1,   160,   124,   159,    -1,   160,    -1,   161,
+      92,   160,    -1,   161,    93,   160,    -1,   161,    -1,   162,
+     129,   161,    -1,   162,   130,   161,    -1,   162,    94,   161,
+      -1,   162,    95,   161,    -1,   162,    -1,   163,    96,   162,
+      -1,   163,    97,   162,    -1,   163,    -1,   164,   122,   163,
+      -1,   164,    -1,   165,   131,   164,    -1,   165,    -1,   166,
+     132,   165,    -1,   166,    -1,   167,    98,   166,    -1,   167,
+      -1,   168,    99,   167,    -1,   168,    -1,   168,   133,   176,
+     134,   169,    -1,   168,   133,   134,   169,    -1,   169,    -1,
+     169,    -1,   155,   173,   171,    -1,    -1,   171,    -1,   135,
+      -1,   111,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
+      -1,   105,    -1,   106,    -1,   107,    -1,   108,    -1,   109,
+      -1,   110,    -1,   115,   138,   120,   175,   139,   116,    -1,
+     115,   138,   171,   120,   175,   139,   116,    -1,   172,    -1,
+     175,   120,   172,    -1,   171,    -1,   176,   120,   171,    -1,
+      -1,   176,    -1,   179,    -1,   180,    -1,   184,    -1,   185,
+      -1,   197,    -1,   199,    -1,   200,    -1,   205,    -1,   131,
+     148,   118,   149,   119,   136,    -1,    74,   134,   318,   178,
+      -1,   118,   119,    -1,   118,   138,   138,   216,   181,   139,
+     119,    -1,   182,    -1,   181,   138,   182,    -1,   219,    -1,
+      42,   219,    -1,   314,    -1,   178,   139,    -1,   178,    -1,
+     183,   178,    -1,   177,   136,    -1,    43,   113,   176,   114,
+     178,    -1,    43,   113,   176,   114,   178,    44,   178,    -1,
+      45,   113,   176,   114,   190,    -1,    45,   113,   176,   114,
+     118,   138,   212,   191,   119,    -1,    55,   113,   176,   114,
+     190,    -1,    55,   113,   176,   114,   118,   138,   212,   193,
+     119,    -1,   170,    -1,   170,   100,   170,    -1,   316,    -1,
+     186,    -1,   187,   120,   186,    -1,    46,   187,   134,    -1,
+      47,   134,    -1,   188,    -1,   189,   188,    -1,   189,   178,
+      -1,    -1,   192,    -1,   189,   183,    -1,   192,   189,   183,
+      -1,    -1,   194,    -1,   189,   196,    -1,   189,   183,   195,
+      -1,   194,   189,   196,    -1,   194,   189,   183,   195,    -1,
+      -1,   196,    -1,    58,    -1,    58,   136,    -1,    49,   113,
+     176,   114,   178,    -1,    48,   178,    49,   113,   176,   114,
+     136,    -1,    50,   113,   138,   198,   114,   178,    -1,   177,
+     139,   136,   177,   136,   177,    -1,   219,   177,   136,   177,
+      -1,    53,    74,   136,    -1,    53,   121,   176,   136,    -1,
+      52,   136,    -1,    52,    74,   136,    -1,    51,   136,    -1,
+      51,    74,   136,    -1,    54,   177,   136,    -1,    63,   172,
+     136,    -1,    64,   172,   136,    -1,    64,   172,    65,   171,
+     136,    -1,    59,   180,   201,    -1,    59,   180,   203,    -1,
+      59,   180,   201,   203,    -1,   202,    -1,    60,   113,   100,
+     114,   180,    -1,   202,    60,   113,   100,   114,   180,    -1,
+      61,   113,   100,   114,   180,    -1,   202,    61,   113,   100,
+     114,   180,    -1,    60,   113,   138,   138,   204,   139,   114,
+     180,   139,    -1,   202,    60,   113,   138,   138,   204,   139,
+     114,   180,   139,    -1,    61,   113,   138,   138,   204,   139,
+     114,   180,   139,    -1,   202,    61,   113,   138,   138,   204,
+     139,   114,   180,   139,    -1,    62,   180,    -1,   232,    -1,
+     232,   315,    -1,   232,   363,    -1,   372,   143,    -1,   372,
+      -1,    66,   206,   113,   145,   114,   136,    -1,    66,   206,
+     113,   145,   134,   207,   114,   136,    -1,    66,   206,   113,
+     145,   134,   207,   134,   207,   114,   136,    -1,    66,   206,
+     113,   145,   134,   207,   134,   207,   134,   210,   114,   136,
+      -1,    66,   206,    53,   113,   145,   134,   134,   207,   134,
+     210,   134,   211,   114,   136,    -1,    -1,    11,    -1,    -1,
+     208,    -1,   209,    -1,   208,   120,   209,    -1,   145,   113,
+     170,   114,    -1,   115,   170,   116,   145,   113,   170,   114,
+      -1,    -1,   145,    -1,   210,   120,   145,    -1,   143,    -1,
+     211,   120,   143,    -1,   139,    -1,   213,    -1,   219,    -1,
+     213,   138,   219,    -1,   139,    -1,   215,    -1,   229,    -1,
+     215,   138,   229,    -1,    -1,   217,    -1,    31,   218,   136,
+      -1,   217,    31,   218,   136,    -1,   280,    -1,   218,   120,
+     280,    -1,   220,    -1,   229,    -1,   221,   139,   136,    -1,
+     226,   139,   136,    -1,   223,   139,   136,    -1,   299,   139,
+     136,    -1,   302,   139,   136,    -1,   222,   283,    -1,   238,
+     222,   283,    -1,   221,   139,   120,   138,   278,   283,    -1,
+     373,   278,   317,    -1,   376,   278,   317,    -1,   234,   376,
+     278,   317,    -1,   224,    -1,   234,   224,    -1,   238,   224,
+      -1,   238,   234,   224,    -1,   223,   139,   120,   138,   278,
+      -1,   376,   278,   113,   138,   266,   139,   114,    -1,   225,
+     278,   113,   138,   266,   139,   114,    -1,   115,   138,   268,
+     139,   116,    -1,   115,   138,   268,   139,   120,   138,   269,
+     139,   116,    -1,     3,   222,    -1,     3,   224,    -1,   226,
+     139,   120,   138,   143,    -1,     3,   232,   315,    -1,   227,
+     139,   120,   138,   315,    -1,   234,     3,   232,   315,    -1,
+     232,     3,   315,    -1,   232,     3,   234,   315,    -1,     3,
+     143,   135,   171,    -1,   228,   139,   120,   138,   143,   135,
+     171,    -1,   230,   139,   136,    -1,   227,   139,   136,    -1,
+     228,   139,   136,    -1,   246,   139,   136,    -1,   231,   315,
+     317,   283,    -1,   230,   120,   318,   315,   317,   283,    -1,
+     242,    -1,   246,    -1,   248,    -1,   289,    -1,   243,    -1,
+     247,    -1,   249,    -1,   290,    -1,    -1,   234,    -1,   235,
+      -1,   234,   235,    -1,   236,    -1,   320,    -1,    10,    -1,
+      12,    -1,    11,    -1,    14,    -1,    69,    -1,    -1,    13,
+     113,   237,   292,   114,    -1,   239,    -1,   234,   239,    -1,
+     238,   234,   239,    -1,   240,    -1,   239,   240,    -1,     5,
       -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
-      -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
+      -1,    71,    -1,    73,    -1,    16,    -1,    21,    -1,    20,
       -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
-      -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
-      -1,   241,    -1,   236,   241,    -1,   240,   238,    -1,   240,
-     238,   232,    -1,   240,   238,   241,    -1,   242,    -1,   231,
-     243,   231,    -1,   239,    -1,   232,   239,    -1,   242,   233,
-      -1,   242,   239,    -1,    28,   111,   280,   112,    -1,    28,
-     111,   174,   112,    -1,    78,   111,   280,   112,    -1,    78,
-     111,   174,   112,    -1,   245,    -1,   236,   245,    -1,   244,
-     238,    -1,   244,   238,   232,    -1,   248,    -1,   232,   248,
-      -1,   245,   233,    -1,   247,    -1,   236,   247,    -1,   246,
-     238,    -1,   246,   238,   232,    -1,    74,    -1,   232,    74,
-      -1,   247,   233,    -1,   249,    -1,   260,    -1,   251,   116,
-     252,   117,    -1,   251,   278,    -1,    -1,   251,   278,   250,
-     116,   252,   117,    -1,   251,   111,   296,   112,   116,   252,
-     117,    -1,   251,   289,    -1,    31,   316,    -1,    32,   316,
-      -1,    -1,   252,   253,    -1,   254,   134,    -1,    40,   254,
-     134,    -1,   255,   134,    -1,    40,   255,   134,    -1,   370,
-      -1,   370,   278,    -1,   254,   118,   278,    -1,   254,   118,
-      -1,   230,   256,    -1,   255,   118,   316,   256,    -1,    -1,
-     258,    -1,   322,   257,    -1,   335,   257,    -1,   361,    -1,
-      -1,   258,    -1,   132,   168,    -1,    30,   316,    -1,   259,
-     116,   262,   376,   117,    -1,   259,   278,    -1,    -1,   259,
-     278,   261,   116,   262,   376,   117,    -1,   278,   263,    -1,
-     262,   118,   278,   263,    -1,    -1,   133,   168,    -1,    -1,
-     265,    -1,   267,    -1,   266,    -1,   266,   137,   118,   136,
-     267,    -1,   267,   137,   118,   136,    98,    -1,   266,   137,
-     118,   136,    98,    -1,   271,    -1,   267,   137,   118,   136,
-     271,    -1,   266,   137,   118,   136,   271,    -1,   266,   137,
-     118,   136,   267,   137,   118,   136,   271,    -1,   272,    -1,
-     267,   137,   118,   136,   272,    -1,    -1,   269,    -1,   270,
-      -1,   270,   137,   118,   136,    98,    -1,   274,    -1,   273,
-      -1,   270,   137,   118,   136,   274,    -1,   270,   137,   118,
-     136,   273,    -1,   273,    -1,   366,   276,   377,    -1,   374,
-     276,   377,    -1,   232,   374,   276,   377,    -1,   222,    -1,
-     274,    -1,   366,    -1,   374,    -1,   232,   374,    -1,   375,
-      -1,   229,   340,   377,    -1,   229,   344,   377,    -1,   229,
-      -1,   229,   355,    -1,   141,    -1,   275,   118,   141,    -1,
-     139,    -1,    74,    -1,    75,    -1,   140,    -1,    74,    -1,
-      75,    -1,   141,    -1,    74,    -1,    75,    -1,   370,    -1,
-     230,    -1,   230,   361,    -1,   370,    -1,   375,    -1,   230,
-      -1,   230,   349,    -1,    -1,   133,   282,    -1,   109,   282,
-      -1,   169,    -1,   116,   283,   376,   117,    -1,    -1,   282,
-      -1,   284,   282,    -1,   283,   118,   282,    -1,   283,   118,
-     284,   282,    -1,   285,   132,    -1,   278,   132,    -1,   286,
-      -1,   285,   286,    -1,   115,   278,    -1,   113,   136,   169,
-     137,   114,    -1,   113,   136,   314,   137,   114,    -1,   113,
-     136,   168,    98,   168,   137,   114,    -1,   115,   113,   136,
-     149,   137,   114,    -1,   288,    -1,   236,   288,    -1,   287,
-     238,    -1,   287,   238,   232,    -1,   289,    -1,   232,   289,
-      -1,   288,   233,    -1,    75,   111,   296,   112,    -1,   291,
-     377,    -1,   290,   118,   291,   377,    -1,    -1,   293,   278,
-     292,   294,    -1,   230,   340,    -1,    33,    -1,    35,    -1,
-      34,    -1,    -1,   294,   295,    -1,   130,   278,   111,   296,
-     112,    -1,   130,   116,   136,   302,   117,    -1,   130,   111,
-     136,   290,   137,   112,   116,   136,   302,   117,   111,   296,
-     112,    -1,   280,    -1,   169,    -1,   296,   118,   280,    -1,
-     296,   118,   169,    -1,    33,   298,    -1,   237,    33,   298,
-      -1,   297,   118,   298,    -1,   299,   294,    -1,   299,   294,
-     133,   280,    -1,   278,    -1,   277,   111,   136,   290,   137,
-     112,    -1,    36,   278,   111,   136,   290,   137,   112,   116,
-     117,    -1,    -1,    36,   278,   111,   136,   290,   137,   112,
-     116,   301,   302,   117,    -1,   303,    -1,   302,   136,   303,
-      -1,   304,   137,   134,    -1,   305,   137,   134,    -1,   220,
-      -1,   222,    -1,   304,   137,   118,   136,   276,    -1,   230,
-     313,    -1,   305,   137,   118,   136,   313,    -1,    -1,   307,
-      -1,   309,    -1,   307,   136,   309,    -1,    -1,   307,    -1,
-     217,    -1,   311,    -1,   203,    -1,    -1,     5,    81,   310,
-     116,   308,   117,    -1,    40,   309,    -1,   312,    -1,   327,
-     178,    -1,   331,   136,   212,   178,    -1,   221,   178,    -1,
-     229,   327,   178,    -1,   232,   327,   178,    -1,   236,   327,
-     178,    -1,   236,   232,   327,   178,    -1,   229,   331,   136,
-     212,   178,    -1,   232,   331,   136,   212,   178,    -1,   236,
-     331,   136,   212,   178,    -1,   236,   232,   331,   136,   212,
-     178,    -1,   322,    -1,   335,    -1,   327,    -1,   168,   124,
-     168,    -1,    -1,    64,   111,   144,   112,   316,    -1,    -1,
-     317,    -1,   318,    -1,   317,   318,    -1,    39,   111,   111,
-     319,   112,   112,    -1,   320,    -1,   319,   118,   320,    -1,
-      -1,   321,    -1,   321,   111,   175,   112,    -1,   276,    -1,
-     238,    -1,   239,    -1,   233,    -1,   323,   316,    -1,   324,
-      -1,   325,   316,    -1,   326,   316,    -1,   139,    -1,   111,
-     323,   112,    -1,   154,   322,    -1,   154,   232,   322,    -1,
-     111,   324,   112,    -1,   323,   353,    -1,   111,   324,   112,
-     353,    -1,   111,   325,   112,   354,    -1,   111,   325,   112,
-      -1,   111,   324,   112,   111,   136,   268,   137,   112,    -1,
-     111,   326,   112,    -1,   328,   316,    -1,   329,    -1,   330,
-     316,    -1,   323,   111,   136,   268,   137,   112,    -1,   111,
-     329,   112,   111,   136,   268,   137,   112,    -1,   111,   328,
-     112,    -1,   154,   327,    -1,   154,   232,   327,    -1,   111,
-     329,   112,    -1,   111,   329,   112,   353,    -1,   111,   330,
-     112,   354,    -1,   111,   330,   112,    -1,   332,    -1,   333,
-      -1,   334,    -1,   323,   111,   275,   112,    -1,   111,   333,
-     112,   111,   275,   112,    -1,   111,   332,   112,    -1,   154,
-     331,    -1,   154,   232,   331,    -1,   111,   333,   112,    -1,
-     111,   333,   112,   353,    -1,   111,   334,   112,   354,    -1,
-     111,   334,   112,    -1,   336,   316,    -1,   337,    -1,   338,
-     316,    -1,   339,   316,    -1,   345,    -1,   111,   336,   112,
-      -1,   154,   335,    -1,   154,   232,   335,    -1,   111,   337,
-     112,    -1,   336,   353,    -1,   111,   337,   112,   353,    -1,
-     111,   338,   112,   354,    -1,   111,   338,   112,    -1,   336,
-     111,   136,   268,   137,   112,    -1,   111,   337,   112,   111,
-     136,   268,   137,   112,    -1,   111,   339,   112,    -1,   323,
-     316,    -1,   341,    -1,   342,   316,    -1,   343,   316,    -1,
-     154,   340,    -1,   154,   232,   340,    -1,   111,   341,   112,
-      -1,   323,   359,    -1,   111,   341,   112,   353,    -1,   111,
-     342,   112,   354,    -1,   111,   342,   112,    -1,   323,   111,
-     136,   268,   137,   112,    -1,   111,   341,   112,   111,   136,
-     268,   137,   112,    -1,   111,   343,   112,    -1,   345,   316,
-      -1,   346,    -1,   347,   316,    -1,   348,   316,    -1,    74,
-      -1,    75,    -1,   154,   344,    -1,   154,   232,   344,    -1,
-     111,   346,   112,    -1,   345,   359,    -1,   111,   346,   112,
-     359,    -1,   345,   111,   136,   268,   137,   112,    -1,   111,
-     346,   112,   111,   136,   268,   137,   112,    -1,   350,    -1,
-     351,   316,    -1,   352,   316,    -1,   154,    -1,   154,   232,
-      -1,   154,   349,    -1,   154,   232,   349,    -1,   111,   350,
-     112,    -1,   353,    -1,   111,   350,   112,   353,    -1,   111,
-     351,   112,   354,    -1,   111,   351,   112,    -1,   111,   136,
-     268,   137,   112,    -1,   111,   350,   112,   111,   136,   268,
-     137,   112,    -1,   111,   352,   112,    -1,   113,   114,    -1,
-     113,   114,   354,    -1,   354,    -1,   113,   136,   169,   137,
-     114,    -1,   113,   136,   119,   137,   114,    -1,   354,   113,
-     136,   169,   137,   114,    -1,   354,   113,   136,   119,   137,
-     114,    -1,   356,    -1,   357,   316,    -1,   358,   316,    -1,
-     154,    -1,   154,   232,    -1,   154,   355,    -1,   154,   232,
-     355,    -1,   111,   356,   112,    -1,   359,    -1,   111,   356,
-     112,   359,    -1,   111,   357,   112,   354,    -1,   111,   357,
-     112,    -1,   111,   136,   268,   137,   112,    -1,   111,   356,
-     112,   111,   136,   268,   137,   112,    -1,   111,   358,   112,
-      -1,   360,    -1,   360,   354,    -1,   354,    -1,   113,   114,
-      -1,   113,   136,   232,   119,   137,   114,    -1,   113,   136,
-     232,   137,   114,    -1,   113,   136,   232,   169,   137,   114,
-      -1,   113,   136,     7,   231,   169,   137,   114,    -1,   113,
-     136,   232,     7,   169,   137,   114,    -1,   362,    -1,   363,
-     316,    -1,   364,   316,    -1,   154,    -1,   154,   232,    -1,
-     154,   361,    -1,   154,   232,   361,    -1,   111,   362,   112,
-      -1,   353,    -1,   111,   362,   112,   353,    -1,   111,   363,
-     112,   354,    -1,   111,   363,   112,    -1,   111,   362,   112,
-     111,   136,   268,   137,   112,    -1,   111,   364,   112,    -1,
-     366,    -1,   374,    -1,   232,   374,    -1,   367,    -1,   368,
-      -1,   154,   230,    -1,   232,   154,   230,    -1,   154,   375,
-      -1,   232,   154,   375,    -1,   154,   365,    -1,   232,   154,
-     365,    -1,   113,   114,   230,    -1,   369,   230,    -1,   113,
-     114,   354,   230,    -1,   369,   354,   230,    -1,   354,   230,
-      -1,   113,   114,   367,    -1,   369,   367,    -1,   113,   114,
-     354,   367,    -1,   369,   354,   367,    -1,   354,   367,    -1,
-     113,   136,   232,   119,   137,   114,    -1,   113,   136,   232,
-     169,   137,   114,    -1,   113,   136,   236,   169,   137,   114,
-      -1,   113,   136,   236,   232,   169,   137,   114,    -1,   374,
-      -1,   232,   374,    -1,   371,    -1,   372,    -1,   373,    -1,
-     154,   230,    -1,   232,   154,   230,    -1,   154,   375,    -1,
-     232,   154,   375,    -1,   154,   370,    -1,   232,   154,   370,
-      -1,   113,   114,   230,    -1,   113,   114,   354,   230,    -1,
-     354,   230,    -1,   113,   114,   372,    -1,   113,   114,   354,
-     372,    -1,   354,   372,    -1,   113,   136,   267,   137,   114,
-      -1,   374,   111,   136,   264,   137,   112,    -1,   223,   111,
-     136,   264,   137,   112,    -1,    -1,   118,    -1,    -1,   133,
-     169,    -1
+      -1,    15,    -1,    27,    -1,    28,    -1,    29,    -1,    26,
+      -1,    24,    -1,    25,    -1,   243,    -1,   238,   243,    -1,
+     242,   240,    -1,   242,   240,   234,    -1,   242,   240,   243,
+      -1,   244,    -1,   233,   245,   233,    -1,   241,    -1,   234,
+     241,    -1,   244,   235,    -1,   244,   241,    -1,    30,   113,
+     282,   114,    -1,    30,   113,   176,   114,    -1,    80,   113,
+     282,   114,    -1,    80,   113,   176,   114,    -1,   247,    -1,
+     238,   247,    -1,   246,   240,    -1,   246,   240,   234,    -1,
+     250,    -1,   234,   250,    -1,   247,   235,    -1,   249,    -1,
+     238,   249,    -1,   248,   240,    -1,   248,   240,   234,    -1,
+      76,    -1,   234,    76,    -1,   249,   235,    -1,   251,    -1,
+     262,    -1,   253,   118,   254,   119,    -1,   253,   280,    -1,
+      -1,   253,   280,   252,   118,   254,   119,    -1,   253,   113,
+     298,   114,   118,   254,   119,    -1,   253,   291,    -1,    33,
+     318,    -1,    34,   318,    -1,    -1,   254,   255,    -1,   256,
+     136,    -1,    42,   256,   136,    -1,   257,   136,    -1,    42,
+     257,   136,    -1,   372,    -1,   372,   280,    -1,   256,   120,
+     280,    -1,   256,   120,    -1,   232,   258,    -1,   257,   120,
+     318,   258,    -1,    -1,   260,    -1,   324,   259,    -1,   337,
+     259,    -1,   363,    -1,    -1,   260,    -1,   134,   170,    -1,
+      32,   318,    -1,   261,   118,   264,   378,   119,    -1,   261,
+     280,    -1,    -1,   261,   280,   263,   118,   264,   378,   119,
+      -1,   280,   265,    -1,   264,   120,   280,   265,    -1,    -1,
+     135,   170,    -1,    -1,   267,    -1,   269,    -1,   268,    -1,
+     268,   139,   120,   138,   269,    -1,   269,   139,   120,   138,
+     100,    -1,   268,   139,   120,   138,   100,    -1,   273,    -1,
+     269,   139,   120,   138,   273,    -1,   268,   139,   120,   138,
+     273,    -1,   268,   139,   120,   138,   269,   139,   120,   138,
+     273,    -1,   274,    -1,   269,   139,   120,   138,   274,    -1,
+      -1,   271,    -1,   272,    -1,   272,   139,   120,   138,   100,
+      -1,   276,    -1,   275,    -1,   272,   139,   120,   138,   276,
+      -1,   272,   139,   120,   138,   275,    -1,   275,    -1,   368,
+     278,   379,    -1,   376,   278,   379,    -1,   234,   376,   278,
+     379,    -1,   224,    -1,   276,    -1,   368,    -1,   376,    -1,
+     234,   376,    -1,   377,    -1,   231,   342,   379,    -1,   231,
+     346,   379,    -1,   231,    -1,   231,   357,    -1,   143,    -1,
+     277,   120,   143,    -1,   141,    -1,    76,    -1,    77,    -1,
+     142,    -1,    76,    -1,    77,    -1,   143,    -1,    76,    -1,
+      77,    -1,   372,    -1,   232,    -1,   232,   363,    -1,   372,
+      -1,   377,    -1,   232,    -1,   232,   351,    -1,    -1,   135,
+     284,    -1,   111,   284,    -1,   171,    -1,   118,   285,   378,
+     119,    -1,    -1,   284,    -1,   286,   284,    -1,   285,   120,
+     284,    -1,   285,   120,   286,   284,    -1,   287,   134,    -1,
+     280,   134,    -1,   288,    -1,   287,   288,    -1,   117,   280,
+      -1,   115,   138,   171,   139,   116,    -1,   115,   138,   316,
+     139,   116,    -1,   115,   138,   170,   100,   170,   139,   116,
+      -1,   117,   115,   138,   151,   139,   116,    -1,   290,    -1,
+     238,   290,    -1,   289,   240,    -1,   289,   240,   234,    -1,
+     291,    -1,   234,   291,    -1,   290,   235,    -1,    77,   113,
+     298,   114,    -1,   293,   379,    -1,   292,   120,   293,   379,
+      -1,    -1,   295,   280,   294,   296,    -1,   232,   342,    -1,
+      35,    -1,    37,    -1,    36,    -1,    -1,   296,   297,    -1,
+     132,   280,   113,   298,   114,    -1,   132,   118,   138,   304,
+     119,    -1,   132,   113,   138,   292,   139,   114,   118,   138,
+     304,   119,   113,   298,   114,    -1,   282,    -1,   171,    -1,
+     298,   120,   282,    -1,   298,   120,   171,    -1,    35,   300,
+      -1,   239,    35,   300,    -1,   299,   120,   300,    -1,   301,
+     296,    -1,   301,   296,   135,   282,    -1,   280,    -1,   279,
+     113,   138,   292,   139,   114,    -1,    38,   280,   113,   138,
+     292,   139,   114,   118,   119,    -1,    -1,    38,   280,   113,
+     138,   292,   139,   114,   118,   303,   304,   119,    -1,   305,
+      -1,   304,   138,   305,    -1,   306,   139,   136,    -1,   307,
+     139,   136,    -1,   222,    -1,   224,    -1,   306,   139,   120,
+     138,   278,    -1,   232,   315,    -1,   307,   139,   120,   138,
+     315,    -1,    -1,   309,    -1,   311,    -1,   309,   138,   311,
+      -1,    -1,   309,    -1,   219,    -1,   313,    -1,   205,    -1,
+      -1,     5,    83,   312,   118,   310,   119,    -1,    42,   311,
+      -1,   314,    -1,   329,   180,    -1,   333,   138,   214,   180,
+      -1,   223,   180,    -1,   231,   329,   180,    -1,   234,   329,
+     180,    -1,   238,   329,   180,    -1,   238,   234,   329,   180,
+      -1,   231,   333,   138,   214,   180,    -1,   234,   333,   138,
+     214,   180,    -1,   238,   333,   138,   214,   180,    -1,   238,
+     234,   333,   138,   214,   180,    -1,   324,    -1,   337,    -1,
+     329,    -1,   170,   126,   170,    -1,    -1,    66,   113,   145,
+     114,   318,    -1,    -1,   319,    -1,   320,    -1,   319,   320,
+      -1,    41,   113,   113,   321,   114,   114,    -1,   322,    -1,
+     321,   120,   322,    -1,    -1,   323,    -1,   323,   113,   177,
+     114,    -1,   278,    -1,   240,    -1,   241,    -1,   235,    -1,
+     325,   318,    -1,   326,    -1,   327,   318,    -1,   328,   318,
+      -1,   141,    -1,   113,   325,   114,    -1,   156,   324,    -1,
+     156,   234,   324,    -1,   113,   326,   114,    -1,   325,   355,
+      -1,   113,   326,   114,   355,    -1,   113,   327,   114,   356,
+      -1,   113,   327,   114,    -1,   113,   326,   114,   113,   138,
+     270,   139,   114,    -1,   113,   328,   114,    -1,   330,   318,
+      -1,   331,    -1,   332,   318,    -1,   325,   113,   138,   270,
+     139,   114,    -1,   113,   331,   114,   113,   138,   270,   139,
+     114,    -1,   113,   330,   114,    -1,   156,   329,    -1,   156,
+     234,   329,    -1,   113,   331,   114,    -1,   113,   331,   114,
+     355,    -1,   113,   332,   114,   356,    -1,   113,   332,   114,
+      -1,   334,    -1,   335,    -1,   336,    -1,   325,   113,   277,
+     114,    -1,   113,   335,   114,   113,   277,   114,    -1,   113,
+     334,   114,    -1,   156,   333,    -1,   156,   234,   333,    -1,
+     113,   335,   114,    -1,   113,   335,   114,   355,    -1,   113,
+     336,   114,   356,    -1,   113,   336,   114,    -1,   338,   318,
+      -1,   339,    -1,   340,   318,    -1,   341,   318,    -1,   347,
+      -1,   113,   338,   114,    -1,   156,   337,    -1,   156,   234,
+     337,    -1,   113,   339,   114,    -1,   338,   355,    -1,   113,
+     339,   114,   355,    -1,   113,   340,   114,   356,    -1,   113,
+     340,   114,    -1,   338,   113,   138,   270,   139,   114,    -1,
+     113,   339,   114,   113,   138,   270,   139,   114,    -1,   113,
+     341,   114,    -1,   325,   318,    -1,   343,    -1,   344,   318,
+      -1,   345,   318,    -1,   156,   342,    -1,   156,   234,   342,
+      -1,   113,   343,   114,    -1,   325,   361,    -1,   113,   343,
+     114,   355,    -1,   113,   344,   114,   356,    -1,   113,   344,
+     114,    -1,   325,   113,   138,   270,   139,   114,    -1,   113,
+     343,   114,   113,   138,   270,   139,   114,    -1,   113,   345,
+     114,    -1,   347,   318,    -1,   348,    -1,   349,   318,    -1,
+     350,   318,    -1,    76,    -1,    77,    -1,   156,   346,    -1,
+     156,   234,   346,    -1,   113,   348,   114,    -1,   347,   361,
+      -1,   113,   348,   114,   361,    -1,   347,   113,   138,   270,
+     139,   114,    -1,   113,   348,   114,   113,   138,   270,   139,
+     114,    -1,   352,    -1,   353,   318,    -1,   354,   318,    -1,
+     156,    -1,   156,   234,    -1,   156,   351,    -1,   156,   234,
+     351,    -1,   113,   352,   114,    -1,   355,    -1,   113,   352,
+     114,   355,    -1,   113,   353,   114,   356,    -1,   113,   353,
+     114,    -1,   113,   138,   270,   139,   114,    -1,   113,   352,
+     114,   113,   138,   270,   139,   114,    -1,   113,   354,   114,
+      -1,   115,   116,    -1,   115,   116,   356,    -1,   356,    -1,
+     115,   138,   171,   139,   116,    -1,   115,   138,   121,   139,
+     116,    -1,   356,   115,   138,   171,   139,   116,    -1,   356,
+     115,   138,   121,   139,   116,    -1,   358,    -1,   359,   318,
+      -1,   360,   318,    -1,   156,    -1,   156,   234,    -1,   156,
+     357,    -1,   156,   234,   357,    -1,   113,   358,   114,    -1,
+     361,    -1,   113,   358,   114,   361,    -1,   113,   359,   114,
+     356,    -1,   113,   359,   114,    -1,   113,   138,   270,   139,
+     114,    -1,   113,   358,   114,   113,   138,   270,   139,   114,
+      -1,   113,   360,   114,    -1,   362,    -1,   362,   356,    -1,
+     356,    -1,   115,   116,    -1,   115,   138,   234,   121,   139,
+     116,    -1,   115,   138,   234,   139,   116,    -1,   115,   138,
+     234,   171,   139,   116,    -1,   115,   138,     7,   233,   171,
+     139,   116,    -1,   115,   138,   234,     7,   171,   139,   116,
+      -1,   364,    -1,   365,   318,    -1,   366,   318,    -1,   156,
+      -1,   156,   234,    -1,   156,   363,    -1,   156,   234,   363,
+      -1,   113,   364,   114,    -1,   355,    -1,   113,   364,   114,
+     355,    -1,   113,   365,   114,   356,    -1,   113,   365,   114,
+      -1,   113,   364,   114,   113,   138,   270,   139,   114,    -1,
+     113,   366,   114,    -1,   368,    -1,   376,    -1,   234,   376,
+      -1,   369,    -1,   370,    -1,   156,   232,    -1,   234,   156,
+     232,    -1,   156,   377,    -1,   234,   156,   377,    -1,   156,
+     367,    -1,   234,   156,   367,    -1,   115,   116,   232,    -1,
+     371,   232,    -1,   115,   116,   356,   232,    -1,   371,   356,
+     232,    -1,   356,   232,    -1,   115,   116,   369,    -1,   371,
+     369,    -1,   115,   116,   356,   369,    -1,   371,   356,   369,
+      -1,   356,   369,    -1,   115,   138,   234,   121,   139,   116,
+      -1,   115,   138,   234,   171,   139,   116,    -1,   115,   138,
+     238,   171,   139,   116,    -1,   115,   138,   238,   234,   171,
+     139,   116,    -1,   376,    -1,   234,   376,    -1,   373,    -1,
+     374,    -1,   375,    -1,   156,   232,    -1,   234,   156,   232,
+      -1,   156,   377,    -1,   234,   156,   377,    -1,   156,   372,
+      -1,   234,   156,   372,    -1,   115,   116,   232,    -1,   115,
+     116,   356,   232,    -1,   356,   232,    -1,   115,   116,   374,
+      -1,   115,   116,   356,   374,    -1,   356,   374,    -1,   115,
+     138,   269,   139,   116,    -1,   376,   113,   138,   266,   139,
+     114,    -1,   225,   113,   138,   266,   139,   114,    -1,    -1,
+     120,    -1,    -1,   135,   171,    -1
 };
 
@@ -1026,80 +1030,80 @@
 static const yytype_uint16 yyrline[] =
 {
-       0,   305,   305,   309,   316,   317,   318,   319,   320,   324,
-     325,   326,   330,   331,   335,   336,   340,   341,   345,   349,
-     350,   361,   363,   365,   366,   368,   373,   374,   380,   382,
-     384,   386,   388,   390,   392,   394,   396,   398,   407,   408,
-     414,   415,   419,   420,   424,   425,   427,   429,   431,   433,
-     435,   440,   442,   444,   450,   451,   459,   462,   464,   466,
-     471,   484,   486,   488,   490,   492,   494,   496,   498,   500,
-     502,   504,   511,   512,   518,   519,   520,   521,   525,   526,
-     533,   534,   536,   538,   543,   544,   546,   551,   552,   554,
-     559,   560,   562,   564,   566,   571,   572,   574,   579,   580,
-     585,   586,   591,   592,   597,   598,   603,   604,   609,   610,
-     613,   620,   625,   626,   634,   635,   639,   640,   641,   642,
-     643,   644,   645,   646,   647,   648,   649,   650,   660,   662,
-     667,   668,   673,   674,   680,   681,   687,   688,   689,   690,
-     691,   692,   693,   694,   695,   705,   712,   714,   724,   725,
-     730,   732,   738,   740,   744,   745,   750,   755,   758,   760,
-     762,   772,   774,   785,   786,   788,   792,   794,   798,   799,
-     804,   805,   809,   814,   815,   819,   821,   827,   828,   832,
-     834,   836,   838,   844,   845,   849,   851,   856,   858,   860,
-     865,   867,   872,   874,   878,   881,   885,   888,   892,   894,
-     896,   898,   903,   905,   907,   912,   914,   916,   918,   920,
-     925,   927,   929,   931,   936,   948,   949,   954,   956,   961,
-     965,   967,   969,   971,   973,   979,   980,   986,   987,   991,
-     992,   997,   999,  1005,  1006,  1008,  1013,  1018,  1028,  1030,
-    1034,  1035,  1040,  1042,  1046,  1047,  1051,  1053,  1057,  1058,
-    1062,  1063,  1067,  1068,  1083,  1084,  1085,  1086,  1087,  1091,
-    1096,  1103,  1113,  1118,  1123,  1131,  1136,  1141,  1146,  1151,
-    1181,  1186,  1193,  1195,  1202,  1207,  1212,  1223,  1228,  1233,
-    1238,  1243,  1252,  1257,  1265,  1266,  1267,  1268,  1274,  1279,
-    1287,  1288,  1289,  1290,  1294,  1295,  1296,  1297,  1302,  1303,
-    1312,  1313,  1318,  1319,  1324,  1326,  1328,  1330,  1332,  1335,
-    1334,  1346,  1347,  1349,  1359,  1360,  1365,  1367,  1369,  1371,
-    1373,  1376,  1378,  1381,  1386,  1388,  1390,  1392,  1394,  1396,
-    1398,  1400,  1402,  1404,  1406,  1408,  1410,  1416,  1417,  1419,
-    1421,  1423,  1428,  1429,  1435,  1436,  1438,  1440,  1445,  1447,
-    1449,  1451,  1456,  1457,  1459,  1461,  1466,  1467,  1469,  1474,
-    1475,  1477,  1479,  1484,  1486,  1488,  1493,  1494,  1498,  1500,
-    1506,  1505,  1509,  1511,  1516,  1518,  1524,  1525,  1530,  1531,
-    1533,  1534,  1543,  1544,  1546,  1548,  1553,  1555,  1561,  1562,
-    1564,  1567,  1570,  1575,  1576,  1581,  1586,  1590,  1592,  1598,
-    1597,  1604,  1606,  1612,  1613,  1621,  1622,  1626,  1627,  1628,
-    1630,  1632,  1639,  1640,  1642,  1644,  1649,  1650,  1656,  1657,
-    1661,  1662,  1667,  1668,  1669,  1671,  1679,  1680,  1682,  1685,
-    1687,  1691,  1692,  1693,  1695,  1697,  1701,  1706,  1714,  1715,
-    1724,  1726,  1731,  1732,  1733,  1737,  1738,  1739,  1743,  1744,
-    1745,  1749,  1750,  1751,  1756,  1757,  1758,  1759,  1765,  1766,
-    1768,  1773,  1774,  1779,  1780,  1781,  1782,  1783,  1798,  1799,
-    1804,  1805,  1811,  1813,  1816,  1818,  1820,  1843,  1844,  1846,
-    1848,  1853,  1854,  1856,  1861,  1866,  1867,  1873,  1872,  1876,
-    1880,  1882,  1884,  1890,  1891,  1896,  1901,  1903,  1908,  1910,
-    1911,  1913,  1918,  1920,  1922,  1927,  1929,  1934,  1939,  1947,
-    1953,  1952,  1966,  1967,  1972,  1973,  1977,  1982,  1987,  1995,
-    2000,  2011,  2012,  2017,  2018,  2024,  2025,  2029,  2030,  2031,
-    2034,  2033,  2044,  2053,  2059,  2065,  2074,  2080,  2086,  2092,
-    2098,  2106,  2112,  2120,  2126,  2135,  2136,  2137,  2141,  2145,
-    2147,  2152,  2153,  2157,  2158,  2163,  2169,  2170,  2173,  2175,
-    2176,  2180,  2181,  2182,  2183,  2217,  2219,  2220,  2222,  2227,
-    2232,  2237,  2239,  2241,  2246,  2248,  2250,  2252,  2257,  2259,
-    2268,  2270,  2271,  2276,  2278,  2280,  2285,  2287,  2289,  2294,
-    2296,  2298,  2307,  2308,  2309,  2313,  2315,  2317,  2322,  2324,
-    2326,  2331,  2333,  2335,  2350,  2352,  2353,  2355,  2360,  2361,
-    2366,  2368,  2370,  2375,  2377,  2379,  2381,  2386,  2388,  2390,
-    2400,  2402,  2403,  2405,  2410,  2412,  2414,  2419,  2421,  2423,
-    2425,  2430,  2432,  2434,  2465,  2467,  2468,  2470,  2475,  2480,
-    2488,  2490,  2492,  2497,  2499,  2504,  2506,  2520,  2521,  2523,
-    2528,  2530,  2532,  2534,  2536,  2541,  2542,  2544,  2546,  2551,
-    2553,  2555,  2561,  2563,  2565,  2569,  2571,  2573,  2575,  2589,
-    2590,  2592,  2597,  2599,  2601,  2603,  2605,  2610,  2611,  2613,
-    2615,  2620,  2622,  2624,  2630,  2631,  2633,  2642,  2645,  2647,
-    2650,  2652,  2654,  2667,  2668,  2670,  2675,  2677,  2679,  2681,
-    2683,  2688,  2689,  2691,  2693,  2698,  2700,  2708,  2709,  2710,
-    2715,  2716,  2720,  2722,  2724,  2726,  2728,  2730,  2737,  2739,
-    2741,  2743,  2745,  2748,  2750,  2752,  2754,  2756,  2761,  2763,
-    2765,  2770,  2796,  2797,  2799,  2803,  2804,  2808,  2810,  2812,
-    2814,  2816,  2818,  2825,  2827,  2829,  2831,  2833,  2835,  2840,
-    2847,  2849,  2867,  2869,  2874,  2875
+       0,   306,   306,   310,   317,   318,   319,   320,   321,   325,
+     326,   327,   331,   332,   336,   337,   341,   342,   346,   350,
+     351,   362,   364,   366,   367,   369,   374,   375,   381,   383,
+     385,   387,   389,   391,   393,   395,   397,   399,   408,   409,
+     415,   416,   420,   421,   425,   426,   428,   430,   432,   434,
+     436,   441,   443,   445,   457,   458,   466,   469,   471,   473,
+     478,   491,   493,   495,   497,   499,   501,   503,   505,   507,
+     509,   511,   518,   519,   525,   526,   527,   528,   532,   533,
+     540,   541,   543,   545,   550,   551,   553,   558,   559,   561,
+     566,   567,   569,   571,   573,   578,   579,   581,   586,   587,
+     592,   593,   598,   599,   604,   605,   610,   611,   616,   617,
+     620,   627,   632,   633,   641,   642,   646,   647,   648,   649,
+     650,   651,   652,   653,   654,   655,   656,   657,   667,   669,
+     674,   675,   680,   681,   687,   688,   694,   695,   696,   697,
+     698,   699,   700,   701,   702,   712,   719,   721,   731,   732,
+     737,   739,   745,   747,   751,   752,   757,   762,   765,   767,
+     769,   779,   781,   792,   793,   795,   799,   801,   805,   806,
+     811,   812,   816,   821,   822,   826,   828,   834,   835,   839,
+     841,   843,   845,   851,   852,   856,   858,   863,   865,   867,
+     872,   874,   879,   881,   885,   888,   892,   895,   899,   901,
+     903,   905,   910,   912,   914,   919,   921,   923,   925,   927,
+     932,   934,   936,   938,   943,   955,   956,   961,   963,   968,
+     972,   974,   976,   978,   980,   986,   987,   993,   994,   998,
+     999,  1004,  1006,  1012,  1013,  1015,  1021,  1026,  1036,  1038,
+    1042,  1043,  1048,  1050,  1054,  1055,  1059,  1061,  1065,  1066,
+    1070,  1071,  1075,  1076,  1091,  1092,  1093,  1094,  1095,  1099,
+    1104,  1111,  1121,  1126,  1131,  1139,  1144,  1149,  1154,  1159,
+    1189,  1194,  1201,  1203,  1210,  1215,  1220,  1231,  1236,  1241,
+    1246,  1251,  1260,  1265,  1273,  1274,  1275,  1276,  1282,  1287,
+    1295,  1296,  1297,  1298,  1302,  1303,  1304,  1305,  1310,  1311,
+    1320,  1321,  1326,  1327,  1332,  1334,  1336,  1338,  1340,  1343,
+    1342,  1354,  1355,  1357,  1367,  1368,  1373,  1375,  1377,  1379,
+    1381,  1384,  1386,  1389,  1394,  1396,  1398,  1400,  1402,  1404,
+    1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,  1422,  1428,
+    1429,  1431,  1433,  1435,  1440,  1441,  1447,  1448,  1450,  1452,
+    1457,  1459,  1461,  1463,  1468,  1469,  1471,  1473,  1478,  1479,
+    1481,  1486,  1487,  1489,  1491,  1496,  1498,  1500,  1505,  1506,
+    1510,  1512,  1518,  1517,  1521,  1523,  1528,  1530,  1536,  1537,
+    1542,  1543,  1545,  1546,  1555,  1556,  1558,  1560,  1565,  1567,
+    1573,  1574,  1576,  1579,  1582,  1587,  1588,  1593,  1598,  1602,
+    1604,  1610,  1609,  1616,  1618,  1624,  1625,  1633,  1634,  1638,
+    1639,  1640,  1642,  1644,  1651,  1652,  1654,  1656,  1661,  1662,
+    1668,  1669,  1673,  1674,  1679,  1680,  1681,  1683,  1691,  1692,
+    1694,  1697,  1699,  1703,  1704,  1705,  1707,  1709,  1713,  1718,
+    1726,  1727,  1736,  1738,  1743,  1744,  1745,  1749,  1750,  1751,
+    1755,  1756,  1757,  1761,  1762,  1763,  1768,  1769,  1770,  1771,
+    1777,  1778,  1780,  1785,  1786,  1791,  1792,  1793,  1794,  1795,
+    1810,  1811,  1816,  1817,  1823,  1825,  1828,  1830,  1832,  1855,
+    1856,  1858,  1860,  1865,  1866,  1868,  1873,  1878,  1879,  1885,
+    1884,  1888,  1892,  1894,  1896,  1902,  1903,  1908,  1913,  1915,
+    1920,  1922,  1923,  1925,  1930,  1932,  1934,  1939,  1941,  1946,
+    1951,  1959,  1965,  1964,  1978,  1979,  1984,  1985,  1989,  1994,
+    1999,  2007,  2012,  2023,  2024,  2029,  2030,  2036,  2037,  2041,
+    2042,  2043,  2046,  2045,  2056,  2065,  2071,  2077,  2086,  2092,
+    2098,  2104,  2110,  2118,  2124,  2132,  2138,  2147,  2148,  2149,
+    2153,  2159,  2160,  2166,  2167,  2171,  2172,  2177,  2183,  2184,
+    2187,  2189,  2190,  2194,  2195,  2196,  2197,  2231,  2233,  2234,
+    2236,  2241,  2246,  2251,  2253,  2255,  2260,  2262,  2264,  2266,
+    2271,  2273,  2282,  2284,  2285,  2290,  2292,  2294,  2299,  2301,
+    2303,  2308,  2310,  2312,  2321,  2322,  2323,  2327,  2329,  2331,
+    2336,  2338,  2340,  2345,  2347,  2349,  2364,  2366,  2367,  2369,
+    2374,  2375,  2380,  2382,  2384,  2389,  2391,  2393,  2395,  2400,
+    2402,  2404,  2414,  2416,  2417,  2419,  2424,  2426,  2428,  2433,
+    2435,  2437,  2439,  2444,  2446,  2448,  2479,  2481,  2482,  2484,
+    2489,  2494,  2502,  2504,  2506,  2511,  2513,  2518,  2520,  2534,
+    2535,  2537,  2542,  2544,  2546,  2548,  2550,  2555,  2556,  2558,
+    2560,  2565,  2567,  2569,  2575,  2577,  2579,  2583,  2585,  2587,
+    2589,  2603,  2604,  2606,  2611,  2613,  2615,  2617,  2619,  2624,
+    2625,  2627,  2629,  2634,  2636,  2638,  2644,  2645,  2647,  2656,
+    2659,  2661,  2664,  2666,  2668,  2681,  2682,  2684,  2689,  2691,
+    2693,  2695,  2697,  2702,  2703,  2705,  2707,  2712,  2714,  2722,
+    2723,  2724,  2729,  2730,  2734,  2736,  2738,  2740,  2742,  2744,
+    2751,  2753,  2755,  2757,  2759,  2762,  2764,  2766,  2768,  2770,
+    2775,  2777,  2779,  2784,  2810,  2811,  2813,  2817,  2818,  2822,
+    2824,  2826,  2828,  2830,  2832,  2839,  2841,  2843,  2845,  2847,
+    2849,  2854,  2861,  2863,  2881,  2883,  2888,  2889
 };
 #endif
@@ -1113,23 +1117,24 @@
   "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL",
   "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
-  "SIGNED", "UNSIGNED", "VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF",
-  "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", "FTYPE", "DTYPE", "TRAIT",
-  "SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH",
-  "CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO",
-  "RETURN", "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH",
-  "CATCHRESUME", "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS",
-  "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
-  "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
-  "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
-  "INTEGERconstant", "CHARACTERconstant", "STRINGliteral",
-  "REALDECIMALconstant", "REALFRACTIONconstant", "FLOATINGconstant",
-  "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE", "GE", "EQ",
-  "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign", "DIVassign",
-  "MODassign", "PLUSassign", "MINUSassign", "LSassign", "RSassign",
-  "ANDassign", "ERassign", "ORassign", "ATassign", "THEN", "'('", "')'",
-  "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'", "'+'", "'-'",
-  "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'", "':'",
-  "'='", "';'", "$accept", "push", "pop", "constant", "identifier",
-  "no_01_identifier", "no_attr_identifier", "zero_one", "string_literal",
+  "SIGNED", "UNSIGNED", "ZERO_T", "ONE_T", "VALIST", "BOOL", "COMPLEX",
+  "IMAGINARY", "TYPEOF", "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE",
+  "FTYPE", "DTYPE", "TRAIT", "SIZEOF", "OFFSETOF", "ATTRIBUTE",
+  "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "DO", "WHILE",
+  "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE", "DISABLE",
+  "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME", "FINALLY", "THROW",
+  "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF", "ATOMIC", "GENERIC",
+  "NORETURN", "STATICASSERT", "THREADLOCAL", "IDENTIFIER",
+  "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname", "ATTR_IDENTIFIER",
+  "ATTR_TYPEDEFname", "ATTR_TYPEGENname", "INTEGERconstant",
+  "CHARACTERconstant", "STRINGliteral", "REALDECIMALconstant",
+  "REALFRACTIONconstant", "FLOATINGconstant", "ZERO", "ONE", "ARROW",
+  "ICR", "DECR", "LS", "RS", "LE", "GE", "EQ", "NE", "ANDAND", "OROR",
+  "ELLIPSIS", "MULTassign", "DIVassign", "MODassign", "PLUSassign",
+  "MINUSassign", "LSassign", "RSassign", "ANDassign", "ERassign",
+  "ORassign", "ATassign", "THEN", "'('", "')'", "'['", "']'", "'.'", "'{'",
+  "'}'", "','", "'*'", "'&'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'",
+  "'<'", "'>'", "'^'", "'|'", "'?'", "':'", "'='", "';'", "$accept",
+  "push", "pop", "constant", "identifier", "no_01_identifier",
+  "no_attr_identifier", "zero_one", "string_literal",
   "string_literal_list", "primary_expression", "postfix_expression",
   "argument_expression_list", "argument_expression", "field_list", "field",
@@ -1235,7 +1240,7 @@
      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,    40,    41,    91,    93,    46,   123,   125,    44,    42,
-      38,    43,    45,    33,   126,    47,    37,    60,    62,    94,
-     124,    63,    58,    61,    59
+     365,   366,   367,    40,    41,    91,    93,    46,   123,   125,
+      44,    42,    38,    43,    45,    33,   126,    47,    37,    60,
+      62,    94,   124,    63,    58,    61,    59
 };
 # endif
@@ -1244,80 +1249,80 @@
 static const yytype_uint16 yyr1[] =
 {
-       0,   135,   136,   137,   138,   138,   138,   138,   138,   139,
-     139,   139,   140,   140,   141,   141,   142,   142,   143,   144,
-     144,   145,   145,   145,   145,   145,   146,   146,   146,   146,
-     146,   146,   146,   146,   146,   146,   146,   146,   147,   147,
-     148,   148,   149,   149,   150,   150,   150,   150,   150,   150,
-     150,   151,   151,   151,   152,   152,   153,   153,   153,   153,
-     153,   153,   153,   153,   153,   153,   153,   153,   153,   153,
-     153,   153,   154,   154,   155,   155,   155,   155,   156,   156,
-     157,   157,   157,   157,   158,   158,   158,   159,   159,   159,
-     160,   160,   160,   160,   160,   161,   161,   161,   162,   162,
-     163,   163,   164,   164,   165,   165,   166,   166,   167,   167,
-     167,   168,   169,   169,   170,   170,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   172,   172,
-     173,   173,   174,   174,   175,   175,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   177,   178,   178,   179,   179,
-     180,   180,   180,   180,   181,   181,   182,   183,   183,   183,
-     183,   183,   183,   184,   184,   184,   185,   185,   186,   186,
-     187,   187,   188,   189,   189,   190,   190,   191,   191,   192,
-     192,   192,   192,   193,   193,   194,   194,   195,   195,   195,
-     196,   196,   197,   197,   197,   197,   197,   197,   197,   197,
-     197,   197,   198,   198,   198,   199,   199,   199,   199,   199,
-     200,   200,   200,   200,   201,   202,   202,   202,   202,   202,
-     203,   203,   203,   203,   203,   204,   204,   205,   205,   206,
-     206,   207,   207,   208,   208,   208,   209,   209,   210,   210,
-     211,   211,   212,   212,   213,   213,   214,   214,   215,   215,
-     216,   216,   217,   217,   218,   218,   218,   218,   218,   219,
-     219,   219,   220,   220,   220,   221,   221,   221,   221,   221,
-     222,   222,   223,   223,   224,   224,   224,   225,   225,   225,
-     225,   225,   226,   226,   227,   227,   227,   227,   228,   228,
-     229,   229,   229,   229,   230,   230,   230,   230,   231,   231,
-     232,   232,   233,   233,   234,   234,   234,   234,   234,   235,
-     234,   236,   236,   236,   237,   237,   238,   238,   238,   238,
-     238,   238,   238,   238,   239,   239,   239,   239,   239,   239,
-     239,   239,   239,   239,   239,   239,   239,   240,   240,   240,
-     240,   240,   241,   241,   242,   242,   242,   242,   243,   243,
-     243,   243,   244,   244,   244,   244,   245,   245,   245,   246,
-     246,   246,   246,   247,   247,   247,   248,   248,   249,   249,
-     250,   249,   249,   249,   251,   251,   252,   252,   253,   253,
-     253,   253,   254,   254,   254,   254,   255,   255,   256,   256,
-     256,   256,   256,   257,   257,   258,   259,   260,   260,   261,
-     260,   262,   262,   263,   263,   264,   264,   265,   265,   265,
-     265,   265,   266,   266,   266,   266,   267,   267,   268,   268,
-     269,   269,   270,   270,   270,   270,   271,   271,   271,   271,
-     271,   272,   272,   272,   272,   272,   273,   273,   274,   274,
-     275,   275,   276,   276,   276,   277,   277,   277,   278,   278,
-     278,   279,   279,   279,   280,   280,   280,   280,   281,   281,
-     281,   282,   282,   283,   283,   283,   283,   283,   284,   284,
-     285,   285,   286,   286,   286,   286,   286,   287,   287,   287,
-     287,   288,   288,   288,   289,   290,   290,   292,   291,   291,
-     293,   293,   293,   294,   294,   295,   295,   295,   296,   296,
-     296,   296,   297,   297,   297,   298,   298,   299,   299,   300,
-     301,   300,   302,   302,   303,   303,   304,   304,   304,   305,
-     305,   306,   306,   307,   307,   308,   308,   309,   309,   309,
-     310,   309,   309,   311,   311,   311,   312,   312,   312,   312,
-     312,   312,   312,   312,   312,   313,   313,   313,   314,   315,
-     315,   316,   316,   317,   317,   318,   319,   319,   320,   320,
-     320,   321,   321,   321,   321,   322,   322,   322,   322,   323,
-     323,   324,   324,   324,   325,   325,   325,   325,   326,   326,
-     327,   327,   327,   328,   328,   328,   329,   329,   329,   330,
-     330,   330,   331,   331,   331,   332,   332,   332,   333,   333,
-     333,   334,   334,   334,   335,   335,   335,   335,   336,   336,
-     337,   337,   337,   338,   338,   338,   338,   339,   339,   339,
-     340,   340,   340,   340,   341,   341,   341,   342,   342,   342,
-     342,   343,   343,   343,   344,   344,   344,   344,   345,   345,
-     346,   346,   346,   347,   347,   348,   348,   349,   349,   349,
-     350,   350,   350,   350,   350,   351,   351,   351,   351,   352,
-     352,   352,   353,   353,   353,   354,   354,   354,   354,   355,
-     355,   355,   356,   356,   356,   356,   356,   357,   357,   357,
-     357,   358,   358,   358,   359,   359,   359,   360,   360,   360,
-     360,   360,   360,   361,   361,   361,   362,   362,   362,   362,
-     362,   363,   363,   363,   363,   364,   364,   365,   365,   365,
-     366,   366,   367,   367,   367,   367,   367,   367,   368,   368,
-     368,   368,   368,   368,   368,   368,   368,   368,   369,   369,
-     369,   369,   370,   370,   370,   371,   371,   372,   372,   372,
-     372,   372,   372,   373,   373,   373,   373,   373,   373,   374,
-     375,   375,   376,   376,   377,   377
+       0,   137,   138,   139,   140,   140,   140,   140,   140,   141,
+     141,   141,   142,   142,   143,   143,   144,   144,   145,   146,
+     146,   147,   147,   147,   147,   147,   148,   148,   148,   148,
+     148,   148,   148,   148,   148,   148,   148,   148,   149,   149,
+     150,   150,   151,   151,   152,   152,   152,   152,   152,   152,
+     152,   153,   153,   153,   154,   154,   155,   155,   155,   155,
+     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
+     155,   155,   156,   156,   157,   157,   157,   157,   158,   158,
+     159,   159,   159,   159,   160,   160,   160,   161,   161,   161,
+     162,   162,   162,   162,   162,   163,   163,   163,   164,   164,
+     165,   165,   166,   166,   167,   167,   168,   168,   169,   169,
+     169,   170,   171,   171,   172,   172,   173,   173,   173,   173,
+     173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
+     175,   175,   176,   176,   177,   177,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   179,   180,   180,   181,   181,
+     182,   182,   182,   182,   183,   183,   184,   185,   185,   185,
+     185,   185,   185,   186,   186,   186,   187,   187,   188,   188,
+     189,   189,   190,   191,   191,   192,   192,   193,   193,   194,
+     194,   194,   194,   195,   195,   196,   196,   197,   197,   197,
+     198,   198,   199,   199,   199,   199,   199,   199,   199,   199,
+     199,   199,   200,   200,   200,   201,   201,   201,   201,   201,
+     202,   202,   202,   202,   203,   204,   204,   204,   204,   204,
+     205,   205,   205,   205,   205,   206,   206,   207,   207,   208,
+     208,   209,   209,   210,   210,   210,   211,   211,   212,   212,
+     213,   213,   214,   214,   215,   215,   216,   216,   217,   217,
+     218,   218,   219,   219,   220,   220,   220,   220,   220,   221,
+     221,   221,   222,   222,   222,   223,   223,   223,   223,   223,
+     224,   224,   225,   225,   226,   226,   226,   227,   227,   227,
+     227,   227,   228,   228,   229,   229,   229,   229,   230,   230,
+     231,   231,   231,   231,   232,   232,   232,   232,   233,   233,
+     234,   234,   235,   235,   236,   236,   236,   236,   236,   237,
+     236,   238,   238,   238,   239,   239,   240,   240,   240,   240,
+     240,   240,   240,   240,   241,   241,   241,   241,   241,   241,
+     241,   241,   241,   241,   241,   241,   241,   241,   241,   242,
+     242,   242,   242,   242,   243,   243,   244,   244,   244,   244,
+     245,   245,   245,   245,   246,   246,   246,   246,   247,   247,
+     247,   248,   248,   248,   248,   249,   249,   249,   250,   250,
+     251,   251,   252,   251,   251,   251,   253,   253,   254,   254,
+     255,   255,   255,   255,   256,   256,   256,   256,   257,   257,
+     258,   258,   258,   258,   258,   259,   259,   260,   261,   262,
+     262,   263,   262,   264,   264,   265,   265,   266,   266,   267,
+     267,   267,   267,   267,   268,   268,   268,   268,   269,   269,
+     270,   270,   271,   271,   272,   272,   272,   272,   273,   273,
+     273,   273,   273,   274,   274,   274,   274,   274,   275,   275,
+     276,   276,   277,   277,   278,   278,   278,   279,   279,   279,
+     280,   280,   280,   281,   281,   281,   282,   282,   282,   282,
+     283,   283,   283,   284,   284,   285,   285,   285,   285,   285,
+     286,   286,   287,   287,   288,   288,   288,   288,   288,   289,
+     289,   289,   289,   290,   290,   290,   291,   292,   292,   294,
+     293,   293,   295,   295,   295,   296,   296,   297,   297,   297,
+     298,   298,   298,   298,   299,   299,   299,   300,   300,   301,
+     301,   302,   303,   302,   304,   304,   305,   305,   306,   306,
+     306,   307,   307,   308,   308,   309,   309,   310,   310,   311,
+     311,   311,   312,   311,   311,   313,   313,   313,   314,   314,
+     314,   314,   314,   314,   314,   314,   314,   315,   315,   315,
+     316,   317,   317,   318,   318,   319,   319,   320,   321,   321,
+     322,   322,   322,   323,   323,   323,   323,   324,   324,   324,
+     324,   325,   325,   326,   326,   326,   327,   327,   327,   327,
+     328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
+     331,   332,   332,   332,   333,   333,   333,   334,   334,   334,
+     335,   335,   335,   336,   336,   336,   337,   337,   337,   337,
+     338,   338,   339,   339,   339,   340,   340,   340,   340,   341,
+     341,   341,   342,   342,   342,   342,   343,   343,   343,   344,
+     344,   344,   344,   345,   345,   345,   346,   346,   346,   346,
+     347,   347,   348,   348,   348,   349,   349,   350,   350,   351,
+     351,   351,   352,   352,   352,   352,   352,   353,   353,   353,
+     353,   354,   354,   354,   355,   355,   355,   356,   356,   356,
+     356,   357,   357,   357,   358,   358,   358,   358,   358,   359,
+     359,   359,   359,   360,   360,   360,   361,   361,   361,   362,
+     362,   362,   362,   362,   362,   363,   363,   363,   364,   364,
+     364,   364,   364,   365,   365,   365,   365,   366,   366,   367,
+     367,   367,   368,   368,   369,   369,   369,   369,   369,   369,
+     370,   370,   370,   370,   370,   370,   370,   370,   370,   370,
+     371,   371,   371,   371,   372,   372,   372,   373,   373,   374,
+     374,   374,   374,   374,   374,   375,   375,   375,   375,   375,
+     375,   376,   377,   377,   378,   378,   379,   379
 };
 
@@ -1358,47 +1363,47 @@
        5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
-       3,     3,     1,     3,     1,     2,     2,     2,     4,     4,
-       4,     4,     1,     2,     2,     3,     1,     2,     2,     1,
-       2,     2,     3,     1,     2,     2,     1,     1,     4,     2,
-       0,     6,     7,     2,     2,     2,     0,     2,     2,     3,
-       2,     3,     1,     2,     3,     2,     2,     4,     0,     1,
-       2,     2,     1,     0,     1,     2,     2,     5,     2,     0,
-       7,     2,     4,     0,     2,     0,     1,     1,     1,     5,
-       5,     5,     1,     5,     5,     9,     1,     5,     0,     1,
-       1,     5,     1,     1,     5,     5,     1,     3,     3,     4,
-       1,     1,     1,     1,     2,     1,     3,     3,     1,     2,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     1,     1,     1,     2,     0,     2,
-       2,     1,     4,     0,     1,     2,     3,     4,     2,     2,
-       1,     2,     2,     5,     5,     7,     6,     1,     2,     2,
-       3,     1,     2,     2,     4,     2,     4,     0,     4,     2,
-       1,     1,     1,     0,     2,     5,     5,    13,     1,     1,
-       3,     3,     2,     3,     3,     2,     4,     1,     6,     9,
-       0,    11,     1,     3,     3,     3,     1,     1,     5,     2,
-       5,     0,     1,     1,     3,     0,     1,     1,     1,     1,
-       0,     6,     2,     1,     2,     4,     2,     3,     3,     3,
-       4,     5,     5,     5,     6,     1,     1,     1,     3,     0,
-       5,     0,     1,     1,     2,     6,     1,     3,     0,     1,
-       4,     1,     1,     1,     1,     2,     1,     2,     2,     1,
-       3,     2,     3,     3,     2,     4,     4,     3,     8,     3,
-       2,     1,     2,     6,     8,     3,     2,     3,     3,     4,
-       4,     3,     1,     1,     1,     4,     6,     3,     2,     3,
-       3,     4,     4,     3,     2,     1,     2,     2,     1,     3,
-       2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
-       2,     1,     2,     2,     2,     3,     3,     2,     4,     4,
-       3,     6,     8,     3,     2,     1,     2,     2,     1,     1,
-       2,     3,     3,     2,     4,     6,     8,     1,     2,     2,
-       1,     2,     2,     3,     3,     1,     4,     4,     3,     5,
-       8,     3,     2,     3,     1,     5,     5,     6,     6,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     2,     3,     3,     1,     3,     1,     2,     2,     2,
+       4,     4,     4,     4,     1,     2,     2,     3,     1,     2,
+       2,     1,     2,     2,     3,     1,     2,     2,     1,     1,
+       4,     2,     0,     6,     7,     2,     2,     2,     0,     2,
+       2,     3,     2,     3,     1,     2,     3,     2,     2,     4,
+       0,     1,     2,     2,     1,     0,     1,     2,     2,     5,
+       2,     0,     7,     2,     4,     0,     2,     0,     1,     1,
+       1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
+       0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
+       3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
+       1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
+       0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
+       2,     2,     1,     2,     2,     5,     5,     7,     6,     1,
+       2,     2,     3,     1,     2,     2,     4,     2,     4,     0,
+       4,     2,     1,     1,     1,     0,     2,     5,     5,    13,
+       1,     1,     3,     3,     2,     3,     3,     2,     4,     1,
+       6,     9,     0,    11,     1,     3,     3,     3,     1,     1,
+       5,     2,     5,     0,     1,     1,     3,     0,     1,     1,
+       1,     1,     0,     6,     2,     1,     2,     4,     2,     3,
+       3,     3,     4,     5,     5,     5,     6,     1,     1,     1,
+       3,     0,     5,     0,     1,     1,     2,     6,     1,     3,
+       0,     1,     4,     1,     1,     1,     1,     2,     1,     2,
+       2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
+       8,     3,     2,     1,     2,     6,     8,     3,     2,     3,
+       3,     4,     4,     3,     1,     1,     1,     4,     6,     3,
+       2,     3,     3,     4,     4,     3,     2,     1,     2,     2,
+       1,     3,     2,     3,     3,     2,     4,     4,     3,     6,
+       8,     3,     2,     1,     2,     2,     2,     3,     3,     2,
+       4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
+       1,     1,     2,     3,     3,     2,     4,     6,     8,     1,
        2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
-       3,     5,     8,     3,     1,     2,     1,     2,     6,     5,
-       6,     7,     7,     1,     2,     2,     1,     2,     2,     3,
-       3,     1,     4,     4,     3,     8,     3,     1,     1,     2,
-       1,     1,     2,     3,     2,     3,     2,     3,     3,     2,
-       4,     3,     2,     3,     2,     4,     3,     2,     6,     6,
-       6,     7,     1,     2,     1,     1,     1,     2,     3,     2,
-       3,     2,     3,     3,     4,     2,     3,     4,     2,     5,
-       6,     6,     0,     1,     0,     2
+       3,     5,     8,     3,     2,     3,     1,     5,     5,     6,
+       6,     1,     2,     2,     1,     2,     2,     3,     3,     1,
+       4,     4,     3,     5,     8,     3,     1,     2,     1,     2,
+       6,     5,     6,     7,     7,     1,     2,     2,     1,     2,
+       2,     3,     3,     1,     4,     4,     3,     8,     3,     1,
+       1,     2,     1,     1,     2,     3,     2,     3,     2,     3,
+       3,     2,     4,     3,     2,     3,     2,     4,     3,     2,
+       6,     6,     6,     7,     1,     2,     1,     1,     1,     2,
+       3,     2,     3,     2,     3,     3,     4,     2,     3,     4,
+       2,     5,     6,     6,     0,     1,     0,     2
 };
 
@@ -1410,156 +1415,156 @@
      298,   298,   318,   316,   319,   317,   320,   321,   304,   306,
      305,     0,   307,   332,   324,   329,   327,   328,   326,   325,
-     330,   331,   336,   333,   334,   335,   551,   551,   551,     0,
-       0,     0,   298,   225,   308,   322,   323,     9,   363,     0,
-      10,    16,    17,     0,     2,    72,    73,   569,    11,   298,
-     529,   527,   252,     3,   458,     3,   265,     0,     3,     3,
-       3,   253,     3,     0,     0,     0,   299,   300,   302,   298,
-     311,   314,   344,   290,   337,   342,   291,   352,   292,   359,
-     356,   366,     0,     0,   367,   293,   477,   481,     3,     3,
-       0,     2,   523,   528,   533,   303,     0,     0,   551,   581,
-     551,     2,   592,   593,   594,   298,     0,   735,   736,     0,
-      14,     0,    15,   298,   274,   275,     0,   299,   294,   295,
-     296,   297,   530,   309,   396,   552,   553,   374,   375,    14,
-     449,   450,    13,   445,   448,     0,   507,   502,   493,   449,
-     450,     0,     0,   532,   226,     0,   298,     0,     0,     0,
-       0,     0,     0,     0,     0,   298,   298,     0,   737,   299,
-     586,   598,   741,   734,   732,   739,     0,     0,     0,   259,
-       2,     0,   536,   443,   444,   442,     0,     0,     0,     0,
-     551,     0,   638,   639,     0,     0,   549,   545,   551,   566,
-     551,   551,   547,     2,   546,   551,   605,   551,   551,   608,
-       0,     0,     0,   298,   298,   316,   364,     2,   298,   266,
-     301,   312,   345,   357,   482,     0,     2,     0,   458,   267,
-     299,   338,   353,   360,   478,     0,     2,     0,   315,   339,
-     346,   347,     0,   354,   358,   361,   365,   450,   298,   376,
-     369,   373,     0,   398,   479,   483,     0,     0,     0,     1,
-     298,     2,   534,   580,   582,   298,     2,   745,   299,   748,
-     549,   549,     0,   299,     0,     0,   277,   551,   547,     2,
-     298,     0,     0,   298,   554,     2,   505,     2,   558,     0,
-       0,     0,     0,     0,     0,    21,    69,     4,     8,    19,
-       5,     6,     7,     0,     0,   298,     2,    74,    75,    76,
-      77,    57,    22,    58,    18,    26,    56,    78,   298,     0,
-      80,    84,    87,    90,    95,    98,   100,   102,   104,   106,
-     108,   112,   499,    23,   456,   498,     0,   454,   455,     0,
-     570,   585,   588,   591,   597,   600,   603,     2,   743,   298,
-     746,     2,    72,   298,     3,   430,     0,   438,   299,   298,
-     311,   337,   291,   352,   359,     3,     3,   412,   416,   426,
-     431,   477,   298,   432,   710,   711,   298,   433,   435,     2,
-     587,   599,   733,     2,     2,   254,     2,   463,     0,   461,
-     460,   459,   146,     2,     2,   256,     2,     2,   255,     2,
-     285,     2,   286,     0,   284,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   571,   610,     0,   458,     2,   565,
-     574,   664,   567,   568,   537,   298,     2,   604,   613,   606,
-     607,     0,   280,   298,   298,   343,   299,     0,   299,   298,
-     738,   742,   740,   538,   298,   549,   260,   268,   313,     0,
-       2,   539,   298,   503,   340,   341,   287,   355,   362,     0,
-     298,     0,   752,   403,     0,   480,   504,   257,   258,   524,
-     298,   440,     0,   298,   242,     0,     2,   244,     0,   299,
-       0,   262,     2,   263,   282,     0,     0,     2,   298,   549,
-     298,   490,   492,   491,     0,     0,   754,     0,   298,     0,
-     298,   494,   298,   564,   562,   563,   561,     0,   556,   559,
-       0,     0,   298,    64,   298,    78,    59,   298,    66,   298,
-     298,    62,    63,     2,   132,     0,     0,   452,     0,   451,
-     732,   298,    20,    31,     0,    34,    35,    40,     2,     0,
-      40,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   117,   116,     0,    60,    61,     0,     0,     0,     0,
+     330,   331,   337,   338,   336,   333,   334,   335,   553,   553,
+     553,     0,     0,     0,   298,   225,   308,   322,   323,     9,
+     365,     0,    10,    16,    17,     0,     2,    72,    73,   571,
+      11,   298,   531,   529,   252,     3,   460,     3,   265,     0,
+       3,     3,     3,   253,     3,     0,     0,     0,   299,   300,
+     302,   298,   311,   314,   346,   290,   339,   344,   291,   354,
+     292,   361,   358,   368,     0,     0,   369,   293,   479,   483,
+       3,     3,     0,     2,   525,   530,   535,   303,     0,     0,
+     553,   583,   553,     2,   594,   595,   596,   298,     0,   737,
+     738,     0,    14,     0,    15,   298,   274,   275,     0,   299,
+     294,   295,   296,   297,   532,   309,   398,   554,   555,   376,
+     377,    14,   451,   452,    13,   447,   450,     0,   509,   504,
+     495,   451,   452,     0,     0,   534,   226,     0,   298,     0,
+       0,     0,     0,     0,     0,     0,     0,   298,   298,     0,
+     739,   299,   588,   600,   743,   736,   734,   741,     0,     0,
+       0,   259,     2,     0,   538,   445,   446,   444,     0,     0,
+       0,     0,   553,     0,   640,   641,     0,     0,   551,   547,
+     553,   568,   553,   553,   549,     2,   548,   553,   607,   553,
+     553,   610,     0,     0,     0,   298,   298,   316,   366,     2,
+     298,   266,   301,   312,   347,   359,   484,     0,     2,     0,
+     460,   267,   299,   340,   355,   362,   480,     0,     2,     0,
+     315,   341,   348,   349,     0,   356,   360,   363,   367,   452,
+     298,   378,   371,   375,     0,   400,   481,   485,     0,     0,
+       0,     1,   298,     2,   536,   582,   584,   298,     2,   747,
+     299,   750,   551,   551,     0,   299,     0,     0,   277,   553,
+     549,     2,   298,     0,     0,   298,   556,     2,   507,     2,
+     560,     0,     0,     0,     0,     0,     0,    21,    69,     4,
+       8,    19,     5,     6,     7,     0,     0,   298,     2,    74,
+      75,    76,    77,    57,    22,    58,    18,    26,    56,    78,
+     298,     0,    80,    84,    87,    90,    95,    98,   100,   102,
+     104,   106,   108,   112,   501,    23,   458,   500,     0,   456,
+     457,     0,   572,   587,   590,   593,   599,   602,   605,     2,
+     745,   298,   748,     2,    72,   298,     3,   432,     0,   440,
+     299,   298,   311,   339,   291,   354,   361,     3,     3,   414,
+     418,   428,   433,   479,   298,   434,   712,   713,   298,   435,
+     437,     2,   589,   601,   735,     2,     2,   254,     2,   465,
+       0,   463,   462,   461,   146,     2,     2,   256,     2,     2,
+     255,     2,   285,     2,   286,     0,   284,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   573,   612,     0,   460,
+       2,   567,   576,   666,   569,   570,   539,   298,     2,   606,
+     615,   608,   609,     0,   280,   298,   298,   345,   299,     0,
+     299,   298,   740,   744,   742,   540,   298,   551,   260,   268,
+     313,     0,     2,   541,   298,   505,   342,   343,   287,   357,
+     364,     0,   298,     0,   754,   405,     0,   482,   506,   257,
+     258,   526,   298,   442,     0,   298,   242,     0,     2,   244,
+       0,   299,     0,   262,     2,   263,   282,     0,     0,     2,
+     298,   551,   298,   492,   494,   493,     0,     0,   756,     0,
+     298,     0,   298,   496,   298,   566,   564,   565,   563,     0,
+     558,   561,     0,     0,   298,    64,   298,    78,    59,   298,
+      66,   298,   298,    62,    63,     2,   132,     0,     0,   454,
+       0,   453,   734,   298,    20,    31,     0,    34,    35,    40,
+       2,     0,    40,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   117,   116,     0,    60,    61,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     2,   650,   457,   647,   551,
-     551,   655,   484,   298,     2,   589,   590,     0,   601,   602,
-       0,   744,   747,   298,   298,     0,   712,   299,   716,   707,
-     708,   714,     0,     2,     2,   672,   551,   754,   621,   551,
-     551,   754,   551,   635,   551,   551,   686,   439,   669,   551,
-     551,   677,   684,   298,   434,   299,     0,     0,   298,   722,
-     299,   727,   754,   719,   298,   724,   754,   298,   298,     0,
-       0,    21,     2,     0,    22,     0,   464,   752,     0,     0,
-     470,   246,     0,   298,     0,     0,     0,   549,   573,   577,
-     579,   609,   612,   616,   619,   572,   611,     0,   288,   662,
-       0,   298,   281,     0,     0,     0,     0,   279,     2,     0,
-     264,   540,   298,     0,     0,   298,     2,   368,   388,   377,
-       0,     0,   382,   376,   753,     0,     0,   401,     0,   299,
-       3,   419,     3,   423,   422,   595,     0,   535,   298,    72,
-       3,   298,   438,   299,     3,   432,   433,     2,     0,     0,
-       0,   489,   310,   298,     0,   485,   487,     3,     2,     2,
-       0,   506,     3,     0,   558,   134,     0,     0,   227,     0,
-       0,     0,     0,    41,     0,     0,   298,    24,     0,    25,
-       0,   696,   701,   453,   693,   551,   551,     0,   114,     3,
-       2,    32,     0,    38,     0,     2,    29,     0,   113,    81,
-      82,    83,    85,    86,    88,    89,    93,    94,    91,    92,
-      96,    97,    99,   101,   103,   105,   107,     0,     0,   298,
-       0,     0,     0,   651,   652,   648,   649,   501,   500,   298,
-       0,   718,   298,   723,   299,   298,   666,   709,   665,     2,
-     298,     0,     0,     0,     0,     0,     0,     0,     0,   687,
-       0,   673,   624,   640,   674,     2,   620,   627,   436,   622,
-     623,   437,     2,   634,   643,   636,   637,   670,   671,   685,
-     713,   717,   715,   754,   272,     2,   749,     2,   427,   721,
-     726,   428,     3,   406,     3,     3,     3,   458,     0,     0,
-       2,   472,   469,   753,     0,   465,     2,   468,   471,     0,
-     298,   247,   269,     3,   276,   278,     0,   458,     2,   575,
-     576,     2,   614,   615,     0,   663,   541,     3,   349,   348,
-     351,   350,   298,   542,     0,   543,   376,     0,     0,   298,
-       0,     0,   696,   386,   389,   393,   551,   393,   392,   385,
-     378,   551,   380,   383,   298,   403,   397,   111,   404,   752,
-       0,     0,   441,   245,     0,     0,     3,     2,   672,   434,
-       0,   531,     0,   754,   755,   493,     0,   298,   298,   298,
-       0,   555,   557,   135,     0,     0,   220,     0,     0,     0,
-     228,   229,    65,     0,    67,    70,    71,     0,   133,     0,
-       0,     0,   697,   698,   694,   695,   463,    79,   115,   130,
-       3,   114,     0,    28,    40,     3,     0,    37,   110,     0,
-       3,   654,   658,   661,   653,     3,   596,   720,   725,     2,
-      72,   298,     3,     3,   299,     0,     3,   626,   630,   633,
-     642,   676,   680,   683,   298,     3,   625,   641,   675,   298,
-     298,   429,   298,   298,     0,     0,     0,     0,   261,   111,
-       0,     3,     3,     0,   466,     0,   462,     0,     0,   250,
-     298,     0,     0,   134,     0,     0,     0,     0,     0,   134,
-       0,     0,   114,   114,    21,     0,     0,     3,   136,   137,
-       2,   148,   138,   139,   140,   141,   142,   143,   150,   152,
-       0,     0,     0,   289,   298,   298,   551,     0,   544,   298,
-     379,   381,     0,   395,   697,   390,   394,   391,   384,   388,
-     371,   402,     0,   583,     2,   668,   667,     0,   673,     2,
-     486,   488,   508,     3,   516,   517,     0,     2,   512,     3,
-       3,     0,     0,   560,   227,     0,     0,     0,   227,     0,
-       0,   700,   704,   706,   699,   752,   114,     0,     3,    54,
-       0,    54,    54,     3,    42,    44,    39,     0,     3,   109,
-       0,     2,   656,   657,     0,   298,     0,     0,     0,     3,
-     642,     0,     2,   628,   629,     2,   644,     2,   678,   679,
-       0,     0,    72,     0,     3,     3,     3,     3,   414,   413,
-     417,   751,     2,     2,   750,     0,     0,     0,     0,     3,
-     467,     3,     0,   248,   151,     3,   299,   298,     0,     0,
-       0,     0,     2,     0,   196,     0,   194,     0,     0,     0,
-       0,     0,     0,     0,   551,     0,   156,   153,   298,     0,
-       0,   271,   283,     3,     3,   550,   617,   372,   387,   400,
-     298,   270,   298,     0,   519,   496,   298,     0,     0,   495,
-     510,     0,     0,     0,   221,     0,   230,    68,     2,   702,
-     703,     0,   131,   128,     0,    51,     2,    45,    52,    53,
-       0,     0,     0,     0,    27,     0,   659,   298,   584,   728,
-     729,   730,     0,   681,   298,   298,   298,     3,     3,     0,
-     689,     0,     0,     0,     0,   298,   298,     3,   548,   473,
-     474,     0,   251,   299,     0,     0,     0,     0,   298,   197,
-     195,   192,     0,   198,     0,     0,     0,     0,   202,   205,
-     203,   199,     0,   200,   134,    40,   149,   147,   249,     0,
-       0,   421,   425,   424,     0,   513,     2,   514,     2,   515,
-     509,   298,   233,     0,   231,     0,   233,   298,    36,   129,
-      55,     0,    43,    33,     2,    49,     2,    47,    30,     3,
-     731,     3,     3,     3,     0,     0,   688,   690,   631,   645,
-     273,     2,   411,     3,   410,     0,   476,   134,     0,     0,
-     134,     3,     0,   134,   193,     0,     2,     2,   214,   204,
-       0,     0,     0,   145,     0,   578,   618,     2,     0,     0,
-       2,   234,     0,     0,   222,     0,     3,     3,     0,     0,
-       0,     0,     0,     0,   691,   692,   298,     0,   475,   157,
-       0,     0,     2,   170,   134,   159,     0,   187,     0,   134,
-       0,     2,   161,     0,     2,     0,     2,     2,     2,   201,
-      37,   298,   518,   520,   511,     0,     0,     0,     0,     0,
-       0,     3,     3,   660,   632,   646,   682,   415,   134,   163,
-     166,     0,   165,   169,     3,   172,   171,     0,   134,   189,
-     134,     3,     0,   298,     0,   298,     0,     2,     0,     2,
-     144,     2,   235,   236,     0,   232,   223,   705,    46,     0,
-       0,   158,     0,     0,   168,   238,   173,     2,   240,   188,
-       0,   191,   177,   206,     3,   215,   219,   208,     3,     0,
-     298,     0,   298,     0,     0,     0,    50,    48,   164,   167,
-     134,     0,   174,   298,   134,   134,     0,   178,     0,     0,
-     696,   216,   217,   218,     0,   207,     3,   209,     3,   298,
-     224,   237,   154,   175,   160,   134,   241,   190,   185,   183,
-     179,   162,   134,     0,   697,     0,     0,     0,     0,   155,
-     176,   186,   180,   184,   183,   181,     3,     3,     0,     0,
-     497,   182,   210,   212,     3,     3,   211,   213
+       0,     0,     0,     0,     0,     0,     0,     2,   652,   459,
+     649,   553,   553,   657,   486,   298,     2,   591,   592,     0,
+     603,   604,     0,   746,   749,   298,   298,     0,   714,   299,
+     718,   709,   710,   716,     0,     2,     2,   674,   553,   756,
+     623,   553,   553,   756,   553,   637,   553,   553,   688,   441,
+     671,   553,   553,   679,   686,   298,   436,   299,     0,     0,
+     298,   724,   299,   729,   756,   721,   298,   726,   756,   298,
+     298,     0,     0,    21,     2,     0,    22,     0,   466,   754,
+       0,     0,   472,   246,     0,   298,     0,     0,     0,   551,
+     575,   579,   581,   611,   614,   618,   621,   574,   613,     0,
+     288,   664,     0,   298,   281,     0,     0,     0,     0,   279,
+       2,     0,   264,   542,   298,     0,     0,   298,     2,   370,
+     390,   379,     0,     0,   384,   378,   755,     0,     0,   403,
+       0,   299,     3,   421,     3,   425,   424,   597,     0,   537,
+     298,    72,     3,   298,   440,   299,     3,   434,   435,     2,
+       0,     0,     0,   491,   310,   298,     0,   487,   489,     3,
+       2,     2,     0,   508,     3,     0,   560,   134,     0,     0,
+     227,     0,     0,     0,     0,    41,     0,     0,   298,    24,
+       0,    25,     0,   698,   703,   455,   695,   553,   553,     0,
+     114,     3,     2,    32,     0,    38,     0,     2,    29,     0,
+     113,    81,    82,    83,    85,    86,    88,    89,    93,    94,
+      91,    92,    96,    97,    99,   101,   103,   105,   107,     0,
+       0,   298,     0,     0,     0,   653,   654,   650,   651,   503,
+     502,   298,     0,   720,   298,   725,   299,   298,   668,   711,
+     667,     2,   298,     0,     0,     0,     0,     0,     0,     0,
+       0,   689,     0,   675,   626,   642,   676,     2,   622,   629,
+     438,   624,   625,   439,     2,   636,   645,   638,   639,   672,
+     673,   687,   715,   719,   717,   756,   272,     2,   751,     2,
+     429,   723,   728,   430,     3,   408,     3,     3,     3,   460,
+       0,     0,     2,   474,   471,   755,     0,   467,     2,   470,
+     473,     0,   298,   247,   269,     3,   276,   278,     0,   460,
+       2,   577,   578,     2,   616,   617,     0,   665,   543,     3,
+     351,   350,   353,   352,   298,   544,     0,   545,   378,     0,
+       0,   298,     0,     0,   698,   388,   391,   395,   553,   395,
+     394,   387,   380,   553,   382,   385,   298,   405,   399,   111,
+     406,   754,     0,     0,   443,   245,     0,     0,     3,     2,
+     674,   436,     0,   533,     0,   756,   757,   495,     0,   298,
+     298,   298,     0,   557,   559,   135,     0,     0,   220,     0,
+       0,     0,   228,   229,    65,     0,    67,    70,    71,     0,
+     133,     0,     0,     0,   699,   700,   696,   697,   465,    79,
+     115,   130,     3,   114,     0,    28,    40,     3,     0,    37,
+     110,     0,     3,   656,   660,   663,   655,     3,   598,   722,
+     727,     2,    72,   298,     3,     3,   299,     0,     3,   628,
+     632,   635,   644,   678,   682,   685,   298,     3,   627,   643,
+     677,   298,   298,   431,   298,   298,     0,     0,     0,     0,
+     261,   111,     0,     3,     3,     0,   468,     0,   464,     0,
+       0,   250,   298,     0,     0,   134,     0,     0,     0,     0,
+       0,   134,     0,     0,   114,   114,    21,     0,     0,     3,
+     136,   137,     2,   148,   138,   139,   140,   141,   142,   143,
+     150,   152,     0,     0,     0,   289,   298,   298,   553,     0,
+     546,   298,   381,   383,     0,   397,   699,   392,   396,   393,
+     386,   390,   373,   404,     0,   585,     2,   670,   669,     0,
+     675,     2,   488,   490,   510,     3,   518,   519,     0,     2,
+     514,     3,     3,     0,     0,   562,   227,     0,     0,     0,
+     227,     0,     0,   702,   706,   708,   701,   754,   114,     0,
+       3,    54,     0,    54,    54,     3,    42,    44,    39,     0,
+       3,   109,     0,     2,   658,   659,     0,   298,     0,     0,
+       0,     3,   644,     0,     2,   630,   631,     2,   646,     2,
+     680,   681,     0,     0,    72,     0,     3,     3,     3,     3,
+     416,   415,   419,   753,     2,     2,   752,     0,     0,     0,
+       0,     3,   469,     3,     0,   248,   151,     3,   299,   298,
+       0,     0,     0,     0,     2,     0,   196,     0,   194,     0,
+       0,     0,     0,     0,     0,     0,   553,     0,   156,   153,
+     298,     0,     0,   271,   283,     3,     3,   552,   619,   374,
+     389,   402,   298,   270,   298,     0,   521,   498,   298,     0,
+       0,   497,   512,     0,     0,     0,   221,     0,   230,    68,
+       2,   704,   705,     0,   131,   128,     0,    51,     2,    45,
+      52,    53,     0,     0,     0,     0,    27,     0,   661,   298,
+     586,   730,   731,   732,     0,   683,   298,   298,   298,     3,
+       3,     0,   691,     0,     0,     0,     0,   298,   298,     3,
+     550,   475,   476,     0,   251,   299,     0,     0,     0,     0,
+     298,   197,   195,   192,     0,   198,     0,     0,     0,     0,
+     202,   205,   203,   199,     0,   200,   134,    40,   149,   147,
+     249,     0,     0,   423,   427,   426,     0,   515,     2,   516,
+       2,   517,   511,   298,   233,     0,   231,     0,   233,   298,
+      36,   129,    55,     0,    43,    33,     2,    49,     2,    47,
+      30,     3,   733,     3,     3,     3,     0,     0,   690,   692,
+     633,   647,   273,     2,   413,     3,   412,     0,   478,   134,
+       0,     0,   134,     3,     0,   134,   193,     0,     2,     2,
+     214,   204,     0,     0,     0,   145,     0,   580,   620,     2,
+       0,     0,     2,   234,     0,     0,   222,     0,     3,     3,
+       0,     0,     0,     0,     0,     0,   693,   694,   298,     0,
+     477,   157,     0,     0,     2,   170,   134,   159,     0,   187,
+       0,   134,     0,     2,   161,     0,     2,     0,     2,     2,
+       2,   201,    37,   298,   520,   522,   513,     0,     0,     0,
+       0,     0,     0,     3,     3,   662,   634,   648,   684,   417,
+     134,   163,   166,     0,   165,   169,     3,   172,   171,     0,
+     134,   189,   134,     3,     0,   298,     0,   298,     0,     2,
+       0,     2,   144,     2,   235,   236,     0,   232,   223,   707,
+      46,     0,     0,   158,     0,     0,   168,   238,   173,     2,
+     240,   188,     0,   191,   177,   206,     3,   215,   219,   208,
+       3,     0,   298,     0,   298,     0,     0,     0,    50,    48,
+     164,   167,   134,     0,   174,   298,   134,   134,     0,   178,
+       0,     0,   698,   216,   217,   218,     0,   207,     3,   209,
+       3,   298,   224,   237,   154,   175,   160,   134,   241,   190,
+     185,   183,   179,   162,   134,     0,   699,     0,     0,     0,
+       0,   155,   176,   186,   180,   184,   183,   181,     3,     3,
+       0,     0,   499,   182,   210,   212,     3,     3,   211,   213
 };
 
@@ -1567,190 +1572,190 @@
 static const yytype_int16 yydefgoto[] =
 {
-      -1,   800,   464,   301,    47,   133,   134,   302,   303,   304,
-     305,   306,   752,   753,  1113,  1114,  1115,  1225,   307,   378,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,  1010,   514,   959,   543,   323,   960,   933,
-    1036,  1502,  1038,  1039,  1040,  1041,  1503,  1042,  1043,  1420,
-    1421,  1383,  1384,  1385,  1481,  1482,  1486,  1487,  1522,  1523,
-    1044,  1342,  1045,  1046,  1278,  1279,  1280,  1464,  1047,   145,
-     939,   940,   941,  1362,  1444,  1456,  1457,   465,   466,   860,
-     861,  1018,    51,    52,    53,    54,    55,   345,   157,    58,
-      59,    60,    61,    62,   347,    64,    65,   263,    67,    68,
-     273,   349,   350,    71,    72,    73,   118,    75,   203,   352,
-     119,    78,   120,    80,    81,   451,    82,   450,   679,   680,
-     681,   893,  1065,   894,    83,    84,   454,   452,   687,   842,
-     843,   355,   356,   690,   691,   692,   357,   358,   359,   360,
-     462,   176,   135,   136,   518,   325,   169,   636,   637,   638,
-     639,   640,    85,   121,    87,   485,   486,   925,   487,   276,
-     491,   326,    88,   137,   138,    89,  1301,  1087,  1088,  1089,
-    1090,    90,    91,   708,    92,   272,    93,    94,   186,  1012,
-     670,   409,   125,    95,   497,   498,   499,   187,   267,   189,
-     190,   191,   268,    98,    99,   100,   101,   102,   103,   104,
-     194,   195,   196,   197,   198,   812,   598,   599,   600,   601,
-     199,   603,   604,   605,   567,   568,   569,   570,   742,   105,
-     607,   608,   609,   610,   611,   612,   953,   744,   745,   746,
-     588,   363,   364,   365,   366,   327,   163,   107,   108,   109,
-     368,   685,   715
+      -1,   802,   466,   303,    49,   135,   136,   304,   305,   306,
+     307,   308,   754,   755,  1115,  1116,  1117,  1227,   309,   380,
+     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
+     321,   322,   323,  1012,   516,   961,   545,   325,   962,   935,
+    1038,  1504,  1040,  1041,  1042,  1043,  1505,  1044,  1045,  1422,
+    1423,  1385,  1386,  1387,  1483,  1484,  1488,  1489,  1524,  1525,
+    1046,  1344,  1047,  1048,  1280,  1281,  1282,  1466,  1049,   147,
+     941,   942,   943,  1364,  1446,  1458,  1459,   467,   468,   862,
+     863,  1020,    53,    54,    55,    56,    57,   347,   159,    60,
+      61,    62,    63,    64,   349,    66,    67,   265,    69,    70,
+     275,   351,   352,    73,    74,    75,   120,    77,   205,   354,
+     121,    80,   122,    82,    83,   453,    84,   452,   681,   682,
+     683,   895,  1067,   896,    85,    86,   456,   454,   689,   844,
+     845,   357,   358,   692,   693,   694,   359,   360,   361,   362,
+     464,   178,   137,   138,   520,   327,   171,   638,   639,   640,
+     641,   642,    87,   123,    89,   487,   488,   927,   489,   278,
+     493,   328,    90,   139,   140,    91,  1303,  1089,  1090,  1091,
+    1092,    92,    93,   710,    94,   274,    95,    96,   188,  1014,
+     672,   411,   127,    97,   499,   500,   501,   189,   269,   191,
+     192,   193,   270,   100,   101,   102,   103,   104,   105,   106,
+     196,   197,   198,   199,   200,   814,   600,   601,   602,   603,
+     201,   605,   606,   607,   569,   570,   571,   572,   744,   107,
+     609,   610,   611,   612,   613,   614,   955,   746,   747,   748,
+     590,   365,   366,   367,   368,   329,   165,   109,   110,   111,
+     370,   687,   717
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -1333
+#define YYPACT_NINF -1267
 static const yytype_int16 yypact[] =
 {
-    6694,  7975, -1333,   -14, -1333, -1333, -1333, -1333, -1333, -1333,
-   -1333,    26, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
-   -1333, -1333, -1333, -1333, -1333, -1333,   109,   109,   109,   759,
-     860,    66,  6930,   241, -1333, -1333, -1333, -1333, -1333,   199,
-   -1333, -1333, -1333,  1264,   207, -1333, -1333, -1333, -1333,  8320,
-   -1333, -1333, -1333, -1333,     3,   216, -1333,  1096, -1333, -1333,
-   -1333, -1333,   265,  1996,   389,    54,  5394, -1333, -1333,  8320,
-     780, -1333, -1333,   554,   416,  3688,   749,   995,   554,  1130,
-   -1333, -1333,   768,   826, -1333,   554,  1144, -1333,   313, -1333,
-     443,   462, -1333, -1333, -1333, -1333,   358,   216,   109, -1333,
-     109, -1333, -1333, -1333, -1333,  8461,  1096, -1333, -1333,  1096,
-   -1333,   414, -1333,  8545, -1333, -1333,  2376,  8575, -1333,  1138,
-    1138,  1138, -1333, -1333, -1333,   109, -1333, -1333, -1333,   370,
-     444,   488, -1333, -1333, -1333,   518, -1333, -1333, -1333, -1333,
-   -1333,   525,   576, -1333, -1333,    50,  8059,  1902,   238,   538,
-     578,   604,   613,   618,   635,  8659,  6327,   649, -1333,  8431,
-   -1333, -1333, -1333, -1333,   661, -1333,   -10,  9338,  9338, -1333,
-     662,   181, -1333, -1333, -1333, -1333,   680,   348,   393,   400,
-     109,   685, -1333, -1333,  1996,  2098,   801, -1333,    51, -1333,
-     109,   109,   216, -1333, -1333,   180, -1333,   109,   109, -1333,
-    2242,   712,   751,  1138,  6116, -1333, -1333, -1333,  8320, -1333,
-   -1333,   554, -1333, -1333, -1333,   216, -1333,  1096,     3, -1333,
-    7196, -1333,  1138,  1138,  1138,   216, -1333,   759, -1333,  4572,
-   -1333, -1333,   739,  1138, -1333,  1138, -1333,   199,  8059, -1333,
-     775, -1333,   860,   777,  1138, -1333,   759,   771,   804, -1333,
-    6930,   594, -1333, -1333, -1333,  4461, -1333, -1333,  5315, -1333,
-     801,   101,  9515,  8575,  2376,  2242, -1333,   187, -1333, -1333,
-    8545,  1096,   786, 10191, -1333, -1333,   434, -1333,  9931,   803,
-     866,  9574,   842,  9515,  9633, -1333,   845, -1333, -1333, -1333,
-   -1333, -1333, -1333,  9692,  9692,  7829,   207, -1333, -1333, -1333,
-   -1333, -1333, -1333, -1333,   885, -1333,  1691,  2462,  8059,  9515,
-   -1333,   558,   367,   614,   669,   742,   852,   846,   858,   883,
-     -13, -1333, -1333, -1333,   737, -1333,   269, -1333, -1333,  1902,
-   -1333, -1333,   465,   880, -1333,   586,   880, -1333, -1333,  8461,
-   -1333,   890,   897,  8174, -1333, -1333,  1514,  1088,  7619,  6116,
-     554, -1333,   554,  1138,  1138, -1333, -1333, -1333, -1333, -1333,
-   -1333,  1138,  8461,  1096, -1333, -1333,  8659,  1872, -1333, -1333,
-   -1333, -1333, -1333, -1333, -1333, -1333, -1333,  9279,  9515, -1333,
-   -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
-   -1333, -1333, -1333,  2376, -1333,   105,   903,   926,   928,   796,
-     931,   941,   943,  2098, -1333, -1333,   952,     3,   954, -1333,
-   -1333,   961, -1333, -1333, -1333,  4461, -1333, -1333, -1333, -1333,
-   -1333,  2242, -1333,  8059,  8059, -1333,  1138,  2376,  6237,  7691,
-   -1333, -1333, -1333, -1333,  4461,   101, -1333, -1333,   554,   216,
-   -1333, -1333,  4461, -1333,  5995, -1333, -1333,  1138,  1138,   394,
-    7535,   966,   959,   955,   974,  1138, -1333, -1333, -1333, -1333,
-    5606, -1333,   424,  5852, -1333,   216,   977, -1333,  2376, 10015,
-    9751, -1333, -1333, -1333, -1333,   884,  2242, -1333,  7691,   801,
-    6812, -1333, -1333, -1333,  1296,   456,   986,   860, 10191,  1468,
-    8545, -1333, 10191, -1333, -1333, -1333, -1333,   473, -1333,   988,
-     866,   242,  7829, -1333,  8689, -1333, -1333,  7829, -1333,  7944,
-    7829, -1333, -1333,   207, -1333,   485,  1009,   881,  1014, -1333,
-   -1333,  6085, -1333, -1333,   360, -1333, -1333,  9515, -1333,   362,
-    9515, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
-   -1333, -1333, -1333,  9515, -1333, -1333,  9515,  9515,  9515,  9515,
-    9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,
-    9515,  9515,  9515,  9515,  3091,   737,  1207, -1333, -1333,   109,
-     109, -1333, -1333,  8059, -1333, -1333,   961,   594, -1333,   961,
-    9810, -1333, -1333,  8659,  6085,   993, -1333,  8575, -1333, -1333,
-     661, -1333,  1039,   587,  1045,  2359,   209,   986, -1333,   109,
-     109,   986,   212, -1333,   109,   109,   961, -1333, -1333,   109,
-     109, -1333,   880,  8773,  1096, 10160,   415,   496,  8773, -1333,
-    5315, -1333,   986, -1333,  8461, -1333,   126,  7313,  7313,  1096,
-    9397,  1029, -1333,  1354,  1033,  1043, -1333,  1060,  9338,   407,
-   -1333,  1151,  1096,  7313,   594,  2376,   594,   801,   631,   880,
-   -1333, -1333,   692,   880, -1333, -1333, -1333,   866, -1333,   880,
-     216,  5606, -1333,   494,  1073,   520,  1074, -1333,   890,   216,
-   -1333, -1333,  4461,   216,  1071,  8689,   207, -1333,   972, -1333,
-     401,   438,   860, -1333,   860,  1075,  9515, -1333,   860, 10160,
-   -1333, -1333,  1079, -1333, -1333, -1333,   594, -1333, 10088,   897,
-   -1333,  7313,   960,  7619, -1333, -1333,   661,  1076,  1081,  1296,
-    2130, -1333, -1333, 10191,  9515, -1333, -1333,  1085, -1333, -1333,
-    1093, -1333,  1085,  1098,  9931,  9515,  1097,  1094,    38,  1119,
-    1115,  1124,  1125, -1333,  1126,  1127,  6085, -1333,  9515, -1333,
-     881,  1631, -1333, -1333, -1333,   109,   109,  9456,  9515,  1132,
-   -1333, -1333,   577, -1333,  9515, -1333, -1333,   843, -1333, -1333,
-   -1333, -1333,   558,   558,   367,   367,   614,   614,   614,   614,
-     669,   669,   742,   852,   846,   858,   883,  9515,   296,  5606,
-    1131,  1133,  1136,  1207, -1333, -1333, -1333, -1333, -1333,  5606,
-     616, -1333,  8461, -1333,  6448,  8289, -1333, -1333, -1333,   587,
-    5606,   990,  1140,  1141,  1142,  1145,  1146,  1147,  1149, -1333,
-    2845,  2359, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
-   -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   961,
-   -1333, -1333, -1333,   986, -1333, -1333, -1333, -1333, -1333, -1333,
-   -1333, -1333, -1333, -1333,  1150,  1152, -1333,     3,  1132,  9397,
-   -1333, -1333, -1333,  9279,  1154, -1333, -1333, -1333, -1333,   860,
-    5689,  1243, -1333, -1333, -1333, -1333,  1143,     3, -1333, -1333,
-     961, -1333, -1333,   961,    14,   961, -1333, -1333, -1333, -1333,
-   -1333, -1333,  6327, -1333,   216, -1333, -1333,   452,   487,  6327,
-    1790,  9515,  2983, -1333, -1333,  1153,    20,  1153, -1333,   860,
-   -1333,   109, -1333, -1333,  8090,   955, -1333, -1333, -1333,   959,
-    1161,  1157, -1333, -1333,  1163,  1164, -1333,   960,  1700, -1333,
-     539, -1333,  2130,   986, -1333, -1333,  1167, 10191,  8545,  8059,
-    1169, -1333, -1333,  1165,  1170,  1171, -1333,  9515,  1173,   310,
-    1177, -1333,  1180,   594,  1180, -1333, -1333,  1180, -1333,  1195,
-    1197,  1201,  1631, -1333, -1333, -1333,  9279, -1333, -1333, -1333,
-    1196,  9515,   730, -1333,  9515, -1333,   730, -1333, -1333,  9515,
-   -1333,   748,   880, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
-     897,  8174, -1333, -1333,  6569,  1203, -1333,   758,   880, -1333,
-     763,   830,   880, -1333,  1138,  4995, -1333, -1333, -1333,  5606,
-    5606, -1333,  7691,  7691,  1205,  1210,  1223,  1209, -1333,   551,
-     162,  1132, -1333,   730, -1333,  9338, -1333,  9515,   513, -1333,
-    5964,  1214,  1227,  9220,  1234,  1235,    42,   160,   163,  9515,
-    1237,   216,  9515,  9515,  1226,   304,  1229, -1333, -1333, -1333,
-    1244, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
-     860,  1248,  9515, -1333,  5606,  5606,   109,  1254, -1333,  8205,
-   -1333, -1333,   773, -1333,  2983, -1333, -1333, -1333, -1333,   972,
-   -1333, -1333,  1250, -1333, -1333, -1333, -1333,  1257,  1700, -1333,
-   -1333,  1241, -1333,  1085, -1333, -1333,  2376,  1256, -1333, -1333,
-   -1333,   617,  1258, -1333,    38,  1266,  9515,  1245,    38,    38,
-    1274,   878,   880, -1333, -1333,  1060,  9515,  1276,  1196, -1333,
-     841, -1333, -1333,  1270, -1333,   215, -1333,  1279,  1270, -1333,
-    1282, -1333, -1333,   961,  1283,  6206,  1284,  1285,  1286, -1333,
-   -1333,  1290, -1333, -1333,   961, -1333, -1333, -1333, -1333,   961,
-    9515,  9515,   897,  1291, -1333, -1333, -1333, -1333, -1333, -1333,
-   -1333, -1333, -1333, -1333, -1333,  9515,  9515,  1295,  1297,  1270,
-   -1333, -1333,   860, -1333, -1333, -1333,  7124,  8545,  9515,  9515,
-    1350,  9515, -1333,  1278, -1333,  1280, -1333,  1288,  9515,  1293,
-    9515,  1056,  1298,    72,   109,  2402, -1333, -1333,  5689,  1287,
-     521, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
-    9036, -1333,  7691,  1305, -1333, -1333,  8545,   522,   524, -1333,
-    1308,  1302,   866,  1318, -1333,   325, -1333, -1333, -1333, -1333,
-     961,  1324, -1333, -1333,  1328,  1363, -1333, -1333,  1363,  1363,
-     730,  1333,  1026,  1220, -1333,  1339, -1333,  5606, -1333, -1333,
-   -1333, -1333,  1340, -1333,  5606,  5606,  5606, -1333, -1333,  1341,
-   -1333,  1342,  1345,  1347,   600,  7385,  7502, -1333, -1333, -1333,
-   -1333,  1352, -1333,  7763,   633,   634,  1353,   658,  5821, -1333,
-   -1333, -1333,   528, -1333,   659,  1362,  1364,   216,  1401,   965,
-   -1333, -1333,  9515, -1333,  9220,  9515, -1333, -1333, -1333,  1365,
-    1367, -1333, -1333, -1333,  1358, -1333, -1333, -1333, -1333, -1333,
-   -1333,  8545,   866,  1373, -1333,  1368,   866,  5606, -1333, -1333,
-   -1333,   730, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
-   -1333, -1333, -1333, -1333,  1384,  1391, -1333, -1333, -1333, -1333,
-   -1333, -1333, -1333,  1404, -1333,  1408, -1333,  9220,   198,  9515,
-    9220, -1333,  1406,  9515, -1333,   323,  1378,  1427, -1333, -1333,
-    1416,  1417,  1395, -1333,   910, -1333, -1333, -1333,  1096,  2376,
-    1413, -1333,   326,  9515, -1333,   663, -1333,  1270,   730,   730,
-    1420,  1424,  1425,  1434, -1333, -1333,  7691,  1429, -1333,  1489,
-    9515,  1426, -1333, -1333,  9130, -1333,   689, -1333,  1414,  9220,
-    1418, -1333, -1333,  1445, -1333,  1449, -1333,  1467,  1469, -1333,
-    1435,  8545, -1333, -1333, -1333,   866,   594,  1456,  1436,  1460,
-    1466,  1270,  1270, -1333, -1333, -1333, -1333, -1333,  9220,   194,
-   -1333,   376, -1333, -1333,  7048, -1333, -1333,  1447,  9515, -1333,
-    9515,  7048,   216,  8689,   216,  8689,  1470, -1333,  1471, -1333,
-   -1333,  1477, -1333, -1333,   720, -1333, -1333, -1333, -1333,  1473,
-    1481, -1333,  9515,  9515, -1333, -1333,   991,    94, -1333, -1333,
-    1462, -1333,   991, -1333, -1333,  2158,   594, -1333, -1333,   216,
-    8689,   216,  8689,  1487,  1463,   594, -1333, -1333, -1333, -1333,
-    9130,  1484,   991,  5522,  9515,  9040,  1485,   991,  1493,  2158,
-    3005, -1333, -1333, -1333,  1494, -1333, -1333, -1333, -1333,  8059,
-   -1333, -1333, -1333,  8905, -1333,  9130, -1333, -1333,  1474,  8815,
-   -1333, -1333,  9040,   216,  3005,   216,  1498,  1500,   729, -1333,
-    8905, -1333, -1333, -1333,  8815, -1333, -1333, -1333,   216,   216,
-   -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333
+    5235,  8510, -1267,   -14, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267,   -27, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,    84,    84,
+      84,  1541,   905,   123,  6677,   163, -1267, -1267, -1267, -1267,
+   -1267,   157, -1267, -1267, -1267,  1043,    81, -1267, -1267, -1267,
+   -1267,  4048, -1267, -1267, -1267, -1267,   225,   198, -1267,  1956,
+   -1267, -1267, -1267, -1267,   217,  1716,   371,    37,  6797, -1267,
+   -1267,  4048,   829, -1267, -1267,  1101,   380,  3172,   661,   839,
+    1101,   977, -1267, -1267,  1289,   340, -1267,  1101,  1140, -1267,
+     273, -1267,   439,   447, -1267, -1267, -1267, -1267,   337,   198,
+      84, -1267,    84, -1267, -1267, -1267, -1267,  7269,  1956, -1267,
+   -1267,  1956, -1267,   325, -1267,  7582, -1267, -1267,  2178,  8744,
+   -1267,   675,   675,   675, -1267, -1267, -1267,    84, -1267, -1267,
+   -1267,   360,   395,   436, -1267, -1267, -1267,   466, -1267, -1267,
+   -1267, -1267, -1267,   503,   515, -1267, -1267,   272,  8119,  1675,
+     307,   370,   377,   524,   565,   568,   580,  8828,  6307,   594,
+   -1267,  4677, -1267, -1267, -1267, -1267,   613, -1267,   271,  9583,
+    9583, -1267,   610,   339, -1267, -1267, -1267, -1267,   618,   379,
+     421,   468,    84,   603, -1267, -1267,  1716,  2591,   687, -1267,
+      90, -1267,    84,    84,   198, -1267, -1267,    91, -1267,    84,
+      84, -1267,  2973,   652,   657,   675,  6831, -1267, -1267, -1267,
+    4048, -1267, -1267,  1101, -1267, -1267, -1267,   198, -1267,  1956,
+     225, -1267,  7235, -1267,   675,   675,   675,   198, -1267,  1541,
+   -1267,  3826, -1267, -1267,   642,   675, -1267,   675, -1267,   157,
+    8119, -1267,   665, -1267,   905,   685,   675, -1267,  1541,   689,
+     710, -1267,  6677,   291, -1267, -1267, -1267,  8477, -1267, -1267,
+    4354, -1267,   687,     8,  9760,  8744,  2178,  2973, -1267,   101,
+   -1267, -1267,  7582,  1956,   740, 10515, -1267, -1267,   378, -1267,
+   10178,   730,   705,  9819,   773,  9760,  9878, -1267,   794, -1267,
+   -1267, -1267, -1267, -1267, -1267,  9937,  9937,  7885,    81, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267,   834, -1267,  1184,  2546,
+    8119,  9760, -1267,   525,   415,   844,   338,   853,   823,   831,
+     841,   886,    56, -1267, -1267, -1267,   518, -1267,   528, -1267,
+   -1267,  1675, -1267, -1267,   456,   900, -1267,   490,   900, -1267,
+   -1267,  7269, -1267,   940,   946,  8236, -1267, -1267,   536,  1525,
+    7667,  6831,  1101, -1267,  1101,   675,   675, -1267, -1267, -1267,
+   -1267, -1267, -1267,   675,  7269,  1956, -1267, -1267,  8828,  1786,
+   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9524,
+    9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267,  2178, -1267,   446,   945,   961,
+     968,   800,   973,   976,   981,  2591, -1267, -1267,   939,   225,
+     982, -1267, -1267,   987, -1267, -1267, -1267,  8477, -1267, -1267,
+   -1267, -1267, -1267,  2973, -1267,  8119,  8119, -1267,   675,  2178,
+   10547,  7742, -1267, -1267, -1267, -1267,  8477,     8, -1267, -1267,
+    1101,   198, -1267, -1267,  8477, -1267,  5404, -1267, -1267,   675,
+     675,   579,  8594,   994,   993,   983,   998,   675, -1267, -1267,
+   -1267, -1267,  9019, -1267,   616, 10212, -1267,   198,  1004, -1267,
+    2178, 10298,  9996, -1267, -1267, -1267, -1267,   843,  2973, -1267,
+    7742,   687,  5806, -1267, -1267, -1267,  1900,   626,   990,   905,
+   10515,  1647,  7582, -1267, 10515, -1267, -1267, -1267, -1267,   627,
+   -1267,  1013,   705,   154,  7885, -1267,  8860, -1267, -1267,  7885,
+   -1267,  8002,  7885, -1267, -1267,    81, -1267,   640,  1015,   658,
+    1021, -1267, -1267,  6061, -1267, -1267,   315, -1267, -1267,  9760,
+   -1267,   368,  9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267,  9760, -1267, -1267,  9760,  9760,
+    9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,
+    9760,  9760,  9760,  9760,  9760,  9760,  3432,   518,  1212, -1267,
+   -1267,    84,    84, -1267, -1267,  8119, -1267, -1267,   987,   291,
+   -1267,   987, 10055, -1267, -1267,  8828,  6061,  1020, -1267,  8744,
+   -1267, -1267,   613, -1267,  1023,  1793,  1025,  1950,   136,   990,
+   -1267,    84,    84,   990,   407, -1267,    84,    84,   987, -1267,
+   -1267,    84,    84, -1267,   900,  8944,  1956, 10447,   356,   541,
+    8944, -1267,  4354, -1267,   990, -1267,  7269, -1267,   126,  7354,
+    7354,  1956,  9642,  1003, -1267,   789,  1008,  1010, -1267,  1026,
+    9583,   449, -1267,  1114,  1956,  7354,   291,  2178,   291,   687,
+     707,   900, -1267, -1267,   766,   900, -1267, -1267, -1267,   705,
+   -1267,   900,   198,  9019, -1267,   643,  1041,   647,  1045, -1267,
+     940,   198, -1267, -1267,  8477,   198,  1042,  8860,    81, -1267,
+    1307, -1267,   471,   481,   905, -1267,   905,  1047,  9760, -1267,
+     905, 10447, -1267, -1267,  1056, -1267, -1267, -1267,   291, -1267,
+   10373,   946, -1267,  7354,   694,  7667, -1267, -1267,   613,  1052,
+    1057,  1900,  2267, -1267, -1267, 10515,  9760, -1267, -1267,  1055,
+   -1267, -1267,  1048, -1267,  1055,  1063, 10178,  9760,  1046,  1051,
+     117,  1065,  1062,  1070,  1074, -1267,  1081,  1082,  6061, -1267,
+    9760, -1267,   658,  1520, -1267, -1267, -1267,    84,    84,  9701,
+    9760,  1077, -1267, -1267,   679, -1267,  9760, -1267, -1267,   821,
+   -1267, -1267, -1267, -1267,   525,   525,   415,   415,   844,   844,
+     844,   844,   338,   338,   853,   823,   831,   841,   886,  9760,
+     397,  9019,  1085,  1086,  1087,  1212, -1267, -1267, -1267, -1267,
+   -1267,  9019,   691, -1267,  7269, -1267,  6430,  8353, -1267, -1267,
+   -1267,  1793,  9019,   856,  1089,  1091,  1092,  1093,  1096,  1098,
+    1104, -1267,  3291,  1950, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267,   987, -1267, -1267, -1267,   990, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267,  1105,  1106, -1267,   225,
+    1077,  9642, -1267, -1267, -1267,  9524,  1108, -1267, -1267, -1267,
+   -1267,   905,  5524,  1197, -1267, -1267, -1267, -1267,  1095,   225,
+   -1267, -1267,   987, -1267, -1267,   987,  1117,   987, -1267, -1267,
+   -1267, -1267, -1267, -1267,  6307, -1267,   198, -1267, -1267,   505,
+     507,  6307,  1549,  9760,  2098, -1267, -1267,  1099,    38,  1099,
+   -1267,   905, -1267,    84, -1267, -1267,  8627,   983, -1267, -1267,
+   -1267,   993,  1120,  1115, -1267, -1267,  1122,  1123, -1267,   694,
+    1698, -1267,   576, -1267,  2267,   990, -1267, -1267,  1126, 10515,
+    7582,  8119,  1129, -1267, -1267,  1125,  1135,  1118, -1267,  9760,
+    1141,   190,  1136, -1267,  1142,   291,  1142, -1267, -1267,  1142,
+   -1267,  1147,  1152,  1154,  1520, -1267, -1267, -1267,  9524, -1267,
+   -1267, -1267,  1163,  9760,   986, -1267,  9760, -1267,   986, -1267,
+   -1267,  9760, -1267,   894,   900, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267,   946,  8236, -1267, -1267,  6553,  1171, -1267,   898,
+     900, -1267,   920,   936,   900, -1267,   675,  7112, -1267, -1267,
+   -1267,  9019,  9019, -1267,  7742,  7742,  1172,  1167,  1168,  1175,
+   -1267,   670,   111,  1077, -1267,   986, -1267,  9583, -1267,  9760,
+     540, -1267,  5932,  1180,  1181,  9465,  1182,  1185,    -8,    40,
+      86,  9760,  1191,   198,  9760,  9760,  1177,   585,  1169, -1267,
+   -1267, -1267,  1187, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267,   905,  1195,  9760, -1267,  9019,  9019,    84,  1201,
+   -1267,  8711, -1267, -1267,   862, -1267,  2098, -1267, -1267, -1267,
+   -1267,  1307, -1267, -1267,  1198, -1267, -1267, -1267, -1267,  1202,
+    1698, -1267, -1267,  1196, -1267,  1055, -1267, -1267,  2178,  1210,
+   -1267, -1267, -1267,   704,  1217, -1267,   117,  1214,  9760,  1200,
+     117,   117,  1224,   950,   900, -1267, -1267,  1026,  9760,  1230,
+    1163, -1267,   943, -1267, -1267,  1220, -1267,    78, -1267,  1231,
+    1220, -1267,  1234, -1267, -1267,   987,  1236,  6184,  1235,  1239,
+    1241, -1267, -1267,  1238, -1267, -1267,   987, -1267, -1267, -1267,
+   -1267,   987,  9760,  9760,   946,  1243, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9760,  9760,  1244,
+    1248,  1220, -1267, -1267,   905, -1267, -1267, -1267,  7070,  7582,
+    9760,  9760,  1318,  9760, -1267,  1233, -1267,  1246, -1267,  1250,
+    9760,  1254,  9760,   938,  1255,    47,    84,  1805, -1267, -1267,
+    5524,  1256,   554, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267,  9281, -1267,  7742,  1260, -1267, -1267,  7582,   555,
+     561, -1267,  1273,  1262,   705,  1283, -1267,   256, -1267, -1267,
+   -1267, -1267,   987,  1282, -1267, -1267,  1288,  1321, -1267, -1267,
+    1321,  1321,   986,  1292,  1699,  1866, -1267,  1295, -1267,  9019,
+   -1267, -1267, -1267, -1267,  1298, -1267,  9019,  9019,  9019, -1267,
+   -1267,  1300, -1267,  1301,  1310,  1311,   725,  7429,  7548, -1267,
+   -1267, -1267, -1267,  1305, -1267,  7817,   709,   755,  1317,   758,
+    5667, -1267, -1267, -1267,   582, -1267,   768,  1319,  1323,   198,
+    1369,   935, -1267, -1267,  9760, -1267,  9465,  9760, -1267, -1267,
+   -1267,  1320,  1326, -1267, -1267, -1267,  1324, -1267, -1267, -1267,
+   -1267, -1267, -1267,  7582,   705,  1330, -1267,  1313,   705,  9019,
+   -1267, -1267, -1267,   986, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267,  1337,  1340, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267,  1343, -1267,  1342, -1267,  9465,
+     276,  9760,  9465, -1267,  1346,  9760, -1267,   281,  1361,  1363,
+   -1267, -1267,  1355,  1356,  1339, -1267,   901, -1267, -1267, -1267,
+    1956,  2178,  1347, -1267,   401,  9760, -1267,   783, -1267,  1220,
+     986,   986,  1362,  1364,  1365,  1367, -1267, -1267,  7742,  1357,
+   -1267,  1438,  9760,  1352, -1267, -1267,  9375, -1267,   791, -1267,
+    1360,  9465,  1368, -1267, -1267,  1386, -1267,  1389, -1267,  1407,
+    1409, -1267,  1376,  7582, -1267, -1267, -1267,   705,   291,  1403,
+    1382,  1405,  1404,  1220,  1220, -1267, -1267, -1267, -1267, -1267,
+    9465,   240, -1267,   474, -1267, -1267,  6917, -1267, -1267,  1385,
+    9760, -1267,  9760,  6917,   198,  8860,   198,  8860,  1410, -1267,
+    1411, -1267, -1267,  1408, -1267, -1267,   802, -1267, -1267, -1267,
+   -1267,  1422,  1423, -1267,  9760,  9760, -1267, -1267,   979,    59,
+   -1267, -1267,  1390, -1267,   979, -1267, -1267,  2042,   291, -1267,
+   -1267,   198,  8860,   198,  8860,  1427,  1412,   291, -1267, -1267,
+   -1267, -1267,  9375,  1425,   979,  6995,  9760,  9285,  1426,   979,
+    1435,  2042,  2360, -1267, -1267, -1267,  1436, -1267, -1267, -1267,
+   -1267,  8119, -1267, -1267, -1267,  9148, -1267,  9375, -1267, -1267,
+    1416,  9058, -1267, -1267,  9285,   198,  2360,   198,  1441,  1445,
+     814, -1267,  9148, -1267, -1267, -1267,  9058, -1267, -1267, -1267,
+     198,   198, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267
 };
 
@@ -1758,29 +1763,29 @@
 static const yytype_int16 yypgoto[] =
 {
-   -1333,  3826,  2645, -1333,   849, -1333,   762,   867,  -112,   956,
-   -1333,   580,  -517,  -490,  -904,  -999, -1333,   -62,  4003,     0,
-   -1333,   676,   547,   572,   581,   571,  1057,  1058,  1059,  1055,
-    1061, -1333,   963,  -485,  4467,  -910, -1333, -1333,   665,   184,
-    -691,   319, -1333,   356, -1333,   440, -1283, -1333, -1333,   176,
-   -1333, -1072, -1062,   285, -1333, -1333, -1333, -1333,   107, -1332,
-   -1333, -1333, -1333, -1333, -1333, -1333,   359, -1109,    16, -1333,
-    -288, -1333,   535,   330, -1333,   208, -1333,  -237, -1333, -1333,
-   -1333,   596,  -693, -1333, -1333,     9,  -933,   372,  2238, -1333,
-   -1333, -1333,   -57, -1333,   110,    36,  -194,  1419,  3198, -1333,
-   -1333,    12,    61,  1486,  1572, -1333,  1265, -1333, -1333,    21,
-    1950, -1333,  2034,  1735, -1333, -1333, -1333,  -611, -1333,   975,
-     976,   584,   761,   136, -1333, -1333, -1333,   967,   755,  -456,
-   -1333,  -528,  -433,   832, -1333, -1333,  -922,  -915,  -420,  1560,
-    1084,    19, -1333,   388,   467,  -359,  -203,  -145,   706,   811,
-   -1333,  1028, -1333,  2348,   798,  -442,   958, -1333, -1333,   740,
-   -1333,  -233, -1333,   118, -1333, -1333, -1333, -1243,   466, -1333,
-   -1333, -1333,  1188, -1333,    -1, -1333, -1333,  -832,  -108, -1152,
-    -131,  3669, -1333,  4255, -1333,   951, -1333,  -125,   120,  -178,
-    -173,  -170,     7,   -41,   -40,   -39,   619,    -5,    25,    46,
-      -4,  -167,  -166,  -158,  -157,  -296,  -519,  -516,  -510,  -538,
-    -311,  -552, -1333, -1333,  -514,  1111,  1112,  1114,  1610,  4174,
-    -565,  -560,  -546,  -522,  -389, -1333,  -475,  -720,  -716,  -715,
-    -584,  -222,  -287, -1333, -1333,    47,   102,   -51, -1333,  3453,
-     108,  -602,  -196
+   -1267,  4051,  2784, -1267,   133, -1267,  1353,   867,  -240, -1267,
+   -1267,   504,  -528,  -489,  -834, -1001, -1267,   -77,  4776,     0,
+   -1267,   793,   489,   531,   722,   534,   999,  1001,  1005,  1007,
+    1002, -1267,   711,  -584,  4023,  -739, -1267, -1267,   606,  -227,
+    -674,  -263, -1267,   335, -1267,   382,  -963, -1267, -1267,   119,
+   -1267,  -732, -1049,   228, -1267, -1267, -1267, -1267,    54, -1266,
+   -1267, -1267, -1267, -1267, -1267, -1267,   302, -1050,    23, -1267,
+    -171, -1267,   482,   277, -1267,   153, -1267,  -355, -1267, -1267,
+   -1267,   538,  -612, -1267, -1267,     9,  -990,   219,  2319, -1267,
+   -1267, -1267,  -124, -1267,   110,    36,  -188,  1213,  3869, -1267,
+   -1267,    12,    61,   970,  1623, -1267,  1495, -1267, -1267,    21,
+    1827, -1267,  2153,  1937, -1267, -1267, -1267,  -641, -1267,   911,
+     914,   521,   695,   -93, -1267, -1267, -1267,   906,   690,  -521,
+   -1267,  -507,  -417,  -420, -1267, -1267,  -914,  -941,  -147,   -54,
+    1019,    19, -1267,  2311,   381,  -366,  -185,  -122,   649,   745,
+   -1267,   964, -1267,  2435,  1823,  -463,   895, -1267, -1267,   693,
+   -1267,  -225, -1267,   103, -1267, -1267, -1267, -1263,   408, -1267,
+   -1267, -1267,  1139, -1267,    42, -1267, -1267,  -832,   -94, -1230,
+    -162,  2364, -1267,  3117, -1267,   908, -1267,  -103,   120,  -184,
+    -183,  -178,     7,   -40,   -39,   -36,  1505,     4,    32,    71,
+      92,  -173,  -172,  -170,  -168,  -306,  -510,  -503,  -496,  -559,
+    -313,  -498, -1267, -1267,  -514,  1064,  1072,  1076,  1925,  4399,
+    -524,  -566,  -556,  -543,  -548, -1267,  -508,  -723,  -722,  -717,
+    -582,  -166,  -229, -1267, -1267,   283,   102,     6, -1267,  3380,
+     108,  -611,  -462
 };
 
@@ -1788,2071 +1793,2143 @@
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -527
+#define YYTABLE_NINF -529
 static const yytype_int16 yytable[] =
 {
-      49,   113,   149,   150,   151,   449,   396,    97,   266,   425,
-     114,   397,    69,   757,   398,   436,    50,   399,   400,   732,
-     949,    76,   380,   381,   950,   951,   401,   402,  1049,   831,
-     814,   143,    49,   806,   934,   854,   602,   116,   152,    97,
-     693,   805,   743,   147,    69,   704,   717,   807,    50,    49,
-     722,   597,   784,    76,   259,   407,   160,   813,  1360,    31,
-     404,    70,  1118,   185,   664,   666,   208,   122,   153,    49,
-     192,   808,   904,   215,   802,   621,   225,   803,   218,   625,
-    1148,  1149,   201,   804,   563,   158,   396,  1165,  1150,   154,
-      31,   397,   422,    70,   398,   522,   162,   399,   400,   844,
-     844,   279,   106,   106,   340,   113,   401,   402,   374,  1159,
-      63,  1227,   167,   113,  1173,   844,   265,   270,   564,   289,
-      96,   589,  1182,  1183,   375,   260,  1056,   211,   261,   471,
-     473,   721,   202,   408,   106,  1282,   168,   123,  -239,  -239,
-     404,   257,    63,   149,   150,   151,   308,   147,    31,   158,
-     734,   937,    96,  1510,   160,   113,   343,   165,  1441,   208,
-     162,   280,   251,   148,   408,   406,   370,  1048,   501,    96,
-     949,   106,   846,   844,   950,   951,  1174,   142,   660,   152,
-    1525,   405,   324,   188,   185,   185,    96,   863,   711,    96,
-     802,   338,   160,   803,   845,   845,  1222,   669,   467,   804,
-     265,   908,  1509,   898,   658,   673,  1283,   817,    49,   153,
-     845,  -239,   472,   824,   788,   160,   251,   330,   408,    31,
-     208,   165,  1520,   149,   150,   151,    31,   439,  1422,  1524,
-     154,  1312,  1175,  1315,  1317,  1177,   435,   472,   308,   806,
-     427,   693,  1380,  1381,   430,   916,   998,   985,    31,   459,
-      49,    31,   144,   807,   328,   431,   705,    97,   270,   714,
-    1155,   405,    69,   270,   265,   265,    50,    96,   845,   974,
-     113,    76,   160,   997,   324,  1059,    76,   808,   655,    96,
-     802,   438,  1178,   803,   602,   647,  1156,  1150,   582,   804,
-     479,   416,  1452,   408,  1176,   308,   793,   496,   477,   384,
-     408,  1422,  1232,   704,   395,   188,   430,  1072,   308,   484,
-     146,    70,  1426,   662,  1382,   385,   432,   431,  1156,   667,
-     815,   155,   594,   822,   566,   594,  1468,  1164,    96,   147,
-    1233,   517,   170,  1148,  1149,  1165,   370,   840,  1179,   113,
-      96,  1150,   519,   343,   158,   443,   328,   595,   613,   251,
-     330,   655,   106,   814,   727,   162,  1049,   806,   467,   693,
-      63,  1496,   618,  1498,   456,   468,   618,  1380,  1381,   693,
-      96,   807,    56,   115,   728,   581,   285,   467,   432,   586,
-     693,   572,   622,   180,   475,   467,   626,   573,   726,    41,
-      42,   589,   200,   265,  1480,   808,   589,   831,   619,   656,
-    1485,   818,   623,   185,    56,   821,  1063,  1367,  1426,   211,
-     370,   172,   817,  1426,   738,   510,   165,   376,   141,  -294,
-    1505,   265,  1097,   308,   308,  1512,   838,   265,   969,   618,
-     841,   246,   110,  1426,   110,   884,    76,  1305,   209,  1391,
-    1426,   219,  1098,   249,  1405,    41,    42,    41,    42,    96,
-     113,   591,  1095,   252,  1417,    76,   704,  1306,  1406,   324,
-     324,  1150,  -522,    76,  1411,  1412,   387,   596,   265,   251,
-     240,   243,   656,   750,  1116,   755,   265,  1104,   618,   515,
-      49,   -12,   388,   370,   710,  1083,   678,    97,   549,   550,
-     113,  1165,    69,   855,  1453,  1048,    50,   682,  1165,   116,
-     602,    76,   308,  1221,   113,   978,   674,   308,  1454,   308,
-     308,   389,   573,   998,   705,   996,   867,   741,   391,   899,
-     856,   343,   633,   188,   484,   468,   324,   390,   484,   834,
-     211,   328,   328,   835,   392,   900,   695,   865,   517,   857,
-     517,    70,   696,   517,   468,   324,   517,   262,   414,   519,
-    1165,   519,   468,   895,   519,  -446,   901,   519,     2,   205,
-       4,     5,     6,     7,   489,   566,   566,   490,   712,  1147,
-     899,   433,   902,   308,   713,  1343,   574,  1341,   408,   693,
-     693,   441,   106,   618,   343,   723,  1060,   613,   702,  1104,
-      63,   724,   437,   595,   898,   595,   795,   737,   328,  -447,
-      96,  1136,  1138,   738,   596,   901,   878,   663,   665,   324,
-     836,  1213,   738,   618,   837,   467,   938,   328,   618,   791,
-     613,  1061,    56,    35,   618,    36,   996,   618,   618,   275,
-     453,  1162,   880,   833,   693,   693,   277,  1001,   738,  1162,
-    1296,   913,  1298,   618,  1008,   265,   738,  1163,   847,   830,
-     331,   516,  1390,   836,   586,  1288,  1297,  1079,  1299,    37,
-     839,   862,  1344,    40,  1053,  -112,   110,   705,   161,  -112,
-    1257,  1258,    41,    42,   897,   113,   438,   546,   892,    41,
-      42,   328,   193,   547,   548,   216,   515,   278,   226,   963,
-     332,   515,   704,    76,   515,   964,  1091,   577,   799,   408,
-     594,   618,   918,   613,   551,   552,    45,    46,  1014,   710,
-     710,   678,   396,   801,  1330,   596,   333,   397,  1331,    76,
-     398,   832,   682,   399,   400,   334,   591,  1080,   976,  1209,
-     335,  1458,   401,   402,   696,   573,   343,  1460,  1458,  1461,
-     741,   741,   868,   496,   408,  1337,  1338,   336,   778,   484,
-     211,   738,   738,     2,   205,     4,     5,     6,     7,   589,
-     369,   553,   554,   111,   211,   635,   161,   404,  1354,   949,
-    1340,  1345,   373,   950,   951,  1408,   738,   738,   371,   382,
-    1292,  1405,   468,   566,     2,   205,     4,     5,     6,     7,
-    1506,   386,   618,  1507,   981,   671,   555,   556,   896,   595,
-    1140,  1427,   110,   871,   161,   408,  1211,   738,   468,  1109,
-    1215,   595,  1110,   227,  1111,    41,    42,   693,    35,   394,
-      36,   697,  1333,   423,   693,   693,   693,   161,   977,   801,
-     596,   129,  1474,   130,   131,   132,   557,   558,  1475,   440,
-     110,  1530,   139,   237,    41,    42,   702,   573,   565,    35,
-     408,    36,    56,    41,    42,   211,    45,    46,   516,  1121,
-     308,   408,   424,   516,   214,   406,   516,    48,   112,  1132,
-    1160,   408,    69,   446,  1135,   716,   594,   720,  1407,   238,
-     241,    76,   343,    -3,   239,   330,   408,   693,   405,   343,
-     892,  -370,   892,  -399,   795,  1419,   112,   112,   110,    48,
-     139,   140,   480,   705,   113,   457,   175,   416,   651,   408,
-      48,    41,    42,   110,   500,   214,    48,   918,   918,   801,
-    1109,    70,   710,  1110,    48,  1111,    41,    42,   113,   308,
-      48,   596,   110,    48,   139,   140,    48,  1084,   458,   655,
-     678,  1137,   242,   594,   895,    41,    42,   289,   371,   112,
-     112,   682,   741,   504,  1226,   175,   509,   214,   175,   506,
-     967,   964,   106,   484,  1086,   324,   522,  1478,  1419,   729,
-      63,   730,   559,    48,   731,   560,    48,   735,  1204,   562,
-     705,   343,   938,    48,   544,   545,   938,   938,   561,  1218,
-    1492,   408,   740,   337,   408,   477,   330,   408,  -295,   702,
-      45,    46,   618,   618,   583,     8,     9,    10,    11,    12,
-    1062,    -3,   896,   461,    48,   648,   876,   830,   214,   544,
-     308,   851,   371,  1350,  1351,   883,    48,  1400,   964,   885,
-     106,  1066,  1167,  1066,    31,  1380,  1381,   328,   649,  1104,
-     650,    76,   596,   652,    37,   438,   182,   183,    40,  1228,
-    1229,    48,    48,   653,   544,   654,   214,    41,    42,   113,
-     656,   214,    34,   657,   892,   897,   175,    48,   659,   892,
-     903,   917,   905,   594,   256,    48,   453,   684,   918,    45,
-      46,    70,   683,   890,    48,   408,   265,    48,   686,   832,
-     688,    45,    46,  -243,   112,   678,   762,   763,   110,   725,
-    1303,   815,   330,   594,   891,  1109,   682,   796,  1110,   112,
-    1111,    41,    42,   112,  1275,  1276,  1277,    48,   112,   714,
-     175,   739,   106,   764,   765,   343,   747,   175,   770,   771,
-     468,    48,    48,  -296,   766,   767,   768,   769,    48,  1314,
-       8,     9,    10,    11,    12,    48,   214,  -297,     8,     9,
-      10,    11,    12,   798,     8,     9,    10,    11,    12,   809,
-      37,   -14,   182,   183,    40,   -15,   270,   113,    37,    31,
-     173,   174,    40,    41,    42,   852,   218,    31,   853,  1037,
-     859,    41,    42,    31,   896,   879,   881,   886,   308,   896,
-    1361,  -420,   906,  -526,  1361,   175,    48,    34,   921,   593,
-      69,   594,   618,   713,   929,    34,   113,    45,    46,    76,
-     931,    34,   175,    48,    48,  1084,   175,     8,     9,    10,
-      11,    12,   759,   760,   761,   111,   214,   211,   936,   935,
-      48,   942,    56,   943,    48,   702,   944,   945,   946,   947,
-    1058,   635,  1086,   971,   634,   972,    31,  1019,   973,    70,
-     961,  1403,   987,   988,   989,   618,   618,   990,   991,   992,
-      48,   993,  -408,   270,  -407,    74,  1518,   214,   308,   106,
-      48,  1016,  1050,  1073,    34,  1074,  1052,  1075,  1076,  1082,
-    1167,  1092,  1093,   738,  1096,   891,   751,  1068,    48,    76,
-     106,   756,   110,  1442,    48,  1099,   956,    74,    63,  1109,
-    1085,   113,  1110,  1094,  1111,    41,    42,  1101,   106,  1102,
-    1084,   396,   702,  1103,  1106,  1130,   397,  1151,   565,   398,
-     408,  1154,   399,   400,   438,  1168,    45,    46,  1152,    70,
-     112,   401,   402,  1316,   221,    48,    37,  1086,  1169,   461,
-      40,  1153,  1170,    48,   635,  1171,  1172,    48,  1180,    41,
-      42,    48,  1264,  1265,   112,  1267,   112,  1491,  1184,   265,
-    1191,    -3,  1272,  1186,  1274,   404,  1196,  1199,    37,  1201,
-     106,   489,    40,  1205,  1210,    43,   618,  1402,   468,  1214,
-    1212,    41,    42,    45,    46,   214,  1217,  1181,  1230,   655,
-    1223,   112,    56,  1234,  1236,  1238,   112,  1266,  1239,  1240,
-    1241,   113,  1243,   106,  1287,  1250,   864,   709,   866,  1259,
-    1084,  1260,  1269,   214,  1270,    45,    46,  1294,   214,    66,
-     117,   351,  1271,   957,   113,  1300,   110,  1273,   139,   140,
-    1304,   113,  1281,   113,  1302,   113,  1167,  1086,  1019,    41,
-      42,  1308,  1309,  1167,   112,    76,  1310,  1313,   149,   150,
-     151,    66,    76,  1318,  1320,  1326,  1327,  1328,   912,  1329,
-      48,  1277,    48,   175,  1339,  1490,  1336,   850,   159,  1465,
-     113,  1465,   113,  1346,  1357,  1347,  1393,  1355,   175,  1356,
-    1466,    48,  1466,   113,  1363,    70,   405,   214,   220,  1490,
-    1490,   175,    70,   877,   445,  1167,    48,   160,  1374,   308,
-     112,   214,  1364,   106,    76,  1375,  1465,  1037,  1465,    48,
-     656,   112,    48,   112,  1490,    74,  -409,  1466,  1389,  1466,
-      74,   370,  1378,  1386,   258,  1395,   106,  1397,  1398,  1399,
-    1404,  1418,  1413,   106,   468,   324,  1414,  1415,   209,   219,
-     110,   468,   139,   140,    70,    48,  1416,  1331,  1428,   112,
-    1262,   112,  1430,    41,    42,   112,   228,  1432,  1423,   229,
-      56,  1434,   233,   112,   235,  1436,   329,  1438,  1445,  1440,
-    1446,   244,  1447,   175,   258,   348,    48,    48,  1085,   718,
-    1448,  1459,  1469,  1471,   719,   106,    37,  1476,   173,   174,
-      40,    48,   214,   468,  1473,  1477,  1484,  1500,  1499,    41,
-      42,  1504,  1511,  1353,   403,  1513,  1515,   328,  1521,   475,
-    1528,   970,  1529,   874,   221,  1185,   772,   775,   773,   421,
-     774,   975,   426,   428,   776,   369,  1108,   159,  1286,  1479,
-    1392,  1531,   986,  1348,  1216,   437,  1365,  1349,   212,  1462,
-      56,     8,     9,    10,    11,    12,  1190,   231,   444,   907,
-     887,   888,   447,  1198,   448,   909,  1379,   544,  1067,  1387,
-    1071,   790,  1105,   455,  1015,  1081,    48,   858,   707,    66,
-      31,   923,  1295,  1085,   469,   932,   780,   781,    48,   782,
-      74,     0,     0,     0,   476,     0,     0,     0,     0,   212,
-       0,     0,   428,     0,   351,     0,   506,   228,    34,    74,
-       0,     0,     0,  1425,     0,  1100,     0,    74,  1429,     0,
+      51,   115,   398,   399,   759,   151,   152,    99,   400,   153,
+     116,   745,    71,   401,   402,   451,   403,   427,   404,   951,
+     952,    78,   734,    52,   268,   953,   409,   719,   856,   808,
+    1051,   724,  1167,   833,    51,   438,   604,   118,   815,   809,
+    1362,    99,   503,   599,   906,   149,    71,   382,   383,   154,
+     819,    51,   810,   936,   786,    78,   826,    52,   162,   666,
+     668,    72,   662,   706,  1152,   187,  1175,   203,   210,   124,
+     517,    51,   194,   816,   408,   217,   145,   155,   227,    33,
+     220,   671,   398,   399,   406,   804,   125,   160,   400,   675,
+    1150,  1151,   805,   401,   402,    72,   403,   807,   404,   806,
+     473,   475,   108,   108,   910,  -239,  -239,   115,   424,   848,
+      65,  1229,  1284,   261,  1177,   115,   156,   204,   267,   272,
+      98,   474,   846,   846,   865,    33,   723,   262,  1176,   213,
+     263,    33,    33,   469,  1120,   623,   108,   820,   846,   627,
+    1443,   823,    33,   259,    65,   736,   151,   152,   310,   149,
+     153,   160,  1424,   410,    98,   565,   162,   115,   345,   167,
+    1179,   210,   840,   342,   406,   150,   843,  1234,   372,   951,
+     952,    98,   900,   108,   146,   953,  1178,    33,  -239,   591,
+     713,  1161,   918,  1285,   326,   190,   187,   187,    98,   566,
+     154,    98,   177,   340,   162,  1235,   846,   157,   665,   667,
+     291,   804,   267,   253,   418,   410,   410,  1180,   805,   790,
+      51,  1157,   847,   847,   479,   806,   410,   162,   155,    58,
+     117,  1512,   210,   167,   660,  1424,   151,   152,   847,   441,
+     153,  1314,   939,  1317,  1319,   808,   144,  1158,   437,   474,
+     310,   177,   429,   879,   177,   809,   432,  1061,  1527,   817,
+    1050,   596,    51,    58,   999,   819,   330,   156,   810,    99,
+     272,   716,   728,  1152,    71,   272,   267,   267,   729,    98,
+     148,   976,   115,    78,   162,    52,   326,   517,    78,   407,
+    1167,    98,   517,   440,   604,   517,   847,   211,   730,  1000,
+     221,   804,   481,   469,   461,  1184,  1185,   310,   805,   498,
+    1074,   649,   657,   987,  1099,   806,   397,   190,   432,  1065,
+     310,   486,   469,    72,   707,   695,   172,  1152,   434,   886,
+     469,   706,  1382,  1383,  1100,   281,   568,  1382,  1383,   664,
+      98,   149,   445,   519,   164,   669,   169,   182,   372,   780,
+    1454,   115,    98,  1150,  1151,   345,   160,   584,   330,   597,
+     615,   458,   177,   808,   108,  1097,   795,  1181,  1051,   407,
+     170,   972,    65,   809,   620,   112,  1158,   470,   620,  1224,
+    1307,   977,    98,  1003,   202,   657,   810,   583,    43,    44,
+     434,   588,   988,  -294,   624,   282,   477,  1470,   628,   112,
+    1308,   376,   174,   248,  1384,   267,   816,   842,   164,  1393,
+     621,   833,    43,    44,   625,   187,   177,   377,   696,  1482,
+    1166,   213,   372,   177,   112,  1487,   141,   142,   167,   876,
+     253,   332,  1498,   267,  1500,   310,   310,    43,    44,   267,
+     752,   620,   555,   556,   254,  1507,  1167,  1152,    78,   251,
+    1514,   439,   112,  1167,  1138,  1140,  1106,  -524,    33,   591,
+     253,    98,   115,   593,   591,    43,    44,    78,   244,   386,
+     264,   326,   326,  1082,  1419,    78,  1085,   557,   558,   598,
+     267,    58,   836,   -12,   706,   387,   837,  1118,   267,  1369,
+     620,   177,    51,   757,   333,   372,   712,   869,   680,    99,
+     940,   334,   115,   433,    71,  1167,  1223,   658,   177,   389,
+     604,   118,   177,    78,   310,    52,   115,   998,  -448,   310,
+     491,   310,   310,   492,  1215,   390,   695,   740,   857,   743,
+     824,  1407,   596,   345,  1511,   190,   486,   470,   326,   416,
+     486,   971,   213,   330,   330,  1408,  1413,  1414,   551,   552,
+     519,   391,   519,    72,  1522,   519,   470,   326,   519,  -449,
+     469,  1526,   435,   867,   470,   433,  1000,   392,  1106,   253,
+     332,   410,   443,   900,   858,   980,   635,   568,   568,   576,
+     658,   410,   707,  1259,  1260,   310,   915,   897,  1050,   277,
+     521,  1147,  1148,   859,   108,   620,   345,  1149,   393,   615,
+     704,   901,    65,   164,  1455,   597,  1343,   597,   797,  1039,
+     330,   903,    98,   579,   394,   410,   598,   902,  1456,   696,
+      39,   326,   175,   176,    42,   620,   279,   904,   998,   330,
+     620,   793,   615,    43,    44,   901,   620,   903,   280,   620,
+     620,   567,   518,   410,   695,   835,  1195,  1196,   335,    47,
+      48,  1062,   574,  1063,   695,   620,   548,   267,   575,   371,
+     849,   832,   549,   550,  1428,   695,   588,   838,  1345,   287,
+    1164,   839,   841,   864,  1010,     2,   207,     4,     5,     6,
+       7,  1392,    43,    44,  1164,  1298,  1165,   115,   440,   336,
+     894,  1300,   337,   330,  1055,     8,     9,    10,    11,    12,
+    1290,  1299,   838,   676,   338,    78,  1081,  1301,   512,   575,
+     378,    58,   740,   620,   920,   615,  1093,   371,   398,   399,
+     706,   712,   712,   680,   400,   803,    33,   598,  1346,   401,
+     402,    78,   403,   834,   404,   707,   375,   696,   593,   384,
+     697,   388,    37,  1016,    38,   684,   698,   696,   345,   396,
+     714,   725,   743,   743,    36,   498,   715,   726,   696,   177,
+    1428,   486,   213,   408,   739,  1428,  1462,   880,  1463,  1356,
+     740,   882,  1172,   740,   177,   425,   213,   740,   951,   952,
+     426,   742,   899,   410,   953,  1428,   673,   177,   448,    47,
+      48,  1409,  1428,  -372,   470,   568,  -112,   521,   291,   521,
+    -112,   406,   521,   965,   620,   521,   983,    -3,  1421,   966,
+     898,   597,   699,  -401,  1068,   978,  1068,   919,  1142,   596,
+     470,   698,  1509,   597,  1460,    47,    48,   591,  1211,  1321,
+     870,  1460,   410,  1339,   575,   459,  1323,  1324,  1325,   740,
+     979,   803,   598,     2,   207,     4,     5,     6,     7,   518,
+    1335,  1332,  -295,   502,   518,  1333,   460,   518,   704,     8,
+       9,    10,    11,    12,   695,   695,   940,   213,   482,   177,
+     940,   940,   310,   112,   229,   141,   142,    50,   114,  1340,
+    1480,  1421,  1342,  1508,    71,   740,    43,    44,   740,   873,
+      33,   410,  1347,    78,   345,   731,   506,   732,   740,  1368,
+     733,   345,   894,   737,   894,  1162,   797,  1410,   114,   114,
+      37,    50,    38,  1407,   852,  1429,   115,   511,    36,   695,
+     695,   740,    50,   418,   653,   410,  1476,   524,    50,   920,
+     920,   803,  1477,    72,   712,  1213,    50,  1039,  1532,  1217,
+     115,   310,    50,   598,   575,    50,   553,   554,    50,  1086,
+     969,   966,   680,  1266,  1267,   561,  1269,   696,   696,   559,
+     560,   114,   114,  1274,   743,  1276,   479,   332,   410,  1494,
+     684,   707,   562,   657,   108,   486,  1088,   326,   897,   817,
+     332,   596,    65,   563,  1305,    50,   332,   410,    50,   112,
+    -296,   141,   142,   345,   564,    50,   407,     8,     9,    10,
+      11,    12,    43,    44,  1206,  1352,  1353,   878,  1277,  1278,
+    1279,   704,   696,   696,   620,   620,   885,  1123,  1106,   410,
+     887,  1134,  1064,   410,   898,   339,    50,   112,    33,   832,
+    1402,   966,   310,  1355,  1111,  1382,  1383,  1112,    50,  1113,
+      43,    44,   108,  1137,  1169,   596,  1230,  1231,   707,   330,
+     764,   765,   230,    78,   598,   231,    36,   440,   235,  1139,
+     237,   596,   659,    50,    50,  1294,   585,   246,  1228,   650,
+     112,   115,    -3,  1220,  1363,   410,   894,  1111,  1363,    50,
+    1112,   894,  1113,    43,    44,   651,  1381,    50,   508,  1389,
+     920,    58,   652,    72,   766,   767,    50,   654,   267,    50,
+     655,   834,   695,   772,   773,   656,   114,   680,   661,   695,
+     695,   695,   258,   546,   547,     2,   207,     4,     5,     6,
+       7,   114,   685,   686,  1388,   114,   690,    39,   688,    50,
+     114,    42,  -243,  1427,   108,   716,   727,   345,  1431,   741,
+      43,    44,   470,    50,    50,   749,   798,   -14,   546,   800,
+      50,   811,   -15,  -297,   854,   861,   855,    50,  1295,  1087,
+       8,     9,    10,    11,    12,   881,    45,  1453,   658,   883,
+     888,   931,   695,   899,    47,    48,   908,  1444,   272,   115,
+    -422,  -528,    37,   546,    38,   715,   923,   933,   220,   944,
+     937,    33,   945,   230,   946,   696,   898,   938,   947,   684,
+     310,   898,   696,   696,   696,   948,   949,   963,    50,   973,
+     974,   975,    71,   989,   620,   990,   991,   992,   115,    36,
+     993,    78,   994,    68,   119,    50,    50,  1086,   995,  -410,
+    -409,  1060,     8,     9,    10,    11,    12,  1018,  1052,   213,
+    1054,  1058,    50,   893,  1075,  1076,    50,   704,  1077,  1078,
+    1084,    58,  1521,  1094,  1088,   740,   636,    68,  1521,  1095,
+     496,    72,  1096,    33,  1098,   696,  1101,   620,   620,  1521,
+     958,  1103,    50,  1521,   161,   272,  1104,  1405,  1105,   525,
+     310,   108,    50,   526,   527,   528,  1520,   768,   769,   770,
+     771,    36,  1169,  1108,   222,  1132,  1153,  1154,  1155,  1156,
+      50,    78,   108,  1170,  1171,  1173,    50,   529,  1174,   530,
+      65,   531,   532,   115,  1182,  1188,    -3,   398,   399,  1193,
+     108,  1186,  1086,   400,   704,  1198,  1203,  1201,   401,   402,
+     260,   403,   230,   404,   235,   567,   440,   410,   491,  1207,
+    1214,    72,   114,    47,    48,  1212,  1216,    50,  1219,  1088,
+    1232,   761,   762,   763,   684,    50,  1225,  1236,  1238,    50,
+    1240,  1241,  1245,    50,   113,  1242,   114,  1243,   114,  1252,
+    1261,   267,   331,   112,  1262,   141,   239,  1268,  1183,  1271,
+     260,   350,   108,  1493,  1296,  1289,    43,    44,   620,  1404,
+     470,    39,  1272,   184,   185,    42,  1273,   211,   221,   406,
+    1275,  1283,  1302,   114,    43,    44,  1304,  1306,   114,   909,
+     405,  1310,   240,   115,  1311,   108,  1312,   241,  1315,    58,
+     230,  1320,  1086,   657,  1322,   423,  1328,  1329,   428,   430,
+     892,  1338,   410,   161,  1330,  1331,   115,  1087,    47,    48,
+    1341,  1279,  1348,   115,  1357,   115,  1349,   115,  1169,  1088,
+    1358,   893,  1359,  1365,   446,  1169,   114,    78,   449,  1366,
+     450,   151,   152,  1376,    78,   153,  1377,  -411,  1380,   457,
+    1391,  1395,    50,  1397,    50,    68,  1406,  1492,  1399,  1400,
+     471,  1467,   115,  1467,   115,  1401,  1415,  1333,  1416,  1417,
+     478,  1418,  1420,    50,   439,   115,  1425,    72,   430,    58,
+     970,  1492,  1492,   177,    72,    76,  1430,  1169,    50,   162,
+    1434,   310,   114,  1436,  1432,   108,    78,  1438,  1467,  1440,
+    1467,    50,  1442,   114,    50,   114,  1492,  1447,  1448,  1449,
+    1450,  1461,  1087,   372,  1471,  1473,  1486,  1475,   108,    76,
+       8,     9,    10,    11,    12,   108,   470,   326,  1478,  1479,
+    1501,  1187,   959,   470,  1506,  1513,    72,    50,  1502,  1515,
+    1517,   114,  1523,   114,   260,  1530,   163,   114,   589,  1531,
+     774,    33,  1011,   775,   617,   114,   223,   778,   776,  1110,
+     195,   777,  1288,   218,  1481,  1394,   228,   622,    50,    50,
+    1533,   622,  1351,  1218,   407,  1367,  1464,   108,   889,    36,
+    1192,   890,  1200,    50,  1069,   470,   911,  1073,   792,    39,
+    1017,   184,   185,    42,   909,   860,   463,  1107,   658,   330,
+     925,   477,    43,    44,  1350,   131,  1297,   132,   133,   134,
+    1083,   709,  1087,    39,     0,   184,   185,    42,    43,    44,
+     471,   782,     0,   742,   934,   410,    43,    44,   595,   783,
+     596,    47,    48,   784,   350,    58,    47,    48,     0,   471,
+     909,     0,    58,   353,   163,     0,     0,   471,     0,     0,
+       0,     0,   892,     0,   410,     0,   373,     0,    50,     0,
+      47,    48,     0,     0,     0,   691,     0,     0,   430,     0,
+      50,     0,  1121,     0,     0,     8,     9,    10,    11,    12,
+       0,   214,   163,   705,     0,    68,   496,     0,     0,     0,
+     233,     0,     0,   430,    58,     0,     0,   430,     8,     9,
+      10,    11,    12,     0,     0,   163,    33,     0,  1468,     0,
+    1468,   112,   636,   141,   142,     0,   447,   442,   114,     0,
+    1011,     0,     0,     0,    43,    44,   350,     0,     0,    33,
+       0,     0,   214,     0,    36,     0,     0,    76,     0,    39,
+       0,     0,    76,    42,     0,  1468,     0,  1468,     0,    50,
+     720,    50,    43,    44,     0,   721,     0,    36,   114,  1465,
+       0,  1469,     0,   112,     0,     0,   546,     0,     0,     0,
+    1111,   785,     0,  1112,   214,  1113,    43,    44,    45,     0,
+      39,    50,   184,   185,    42,     0,    47,    48,   622,   796,
+       0,     0,     0,    43,    44,     0,  1497,     0,  1499,   909,
+     813,   919,   114,   596,  1316,   508,     0,     0,   113,    47,
+      48,     0,     0,     0,     0,   636,     0,    79,   589,   186,
+       0,   114,     0,   589,     0,   114,   373,    47,    48,   622,
+       0,     0,   350,   350,     0,   214,   223,     0,     0,     0,
+    1528,     0,  1529,     0,     0,     0,     0,     0,   350,     0,
+      39,    79,   175,   176,    42,  1536,  1537,    39,   909,   909,
+       0,    42,     0,    43,    44,     0,   691,     0,     0,   753,
+      43,    44,   114,   214,   758,     0,     0,   471,   214,     0,
+     525,   216,     0,     0,   526,   527,   528,     0,   224,   375,
+       0,     0,     0,   497,     0,     0,   801,   243,   596,     0,
+     373,     0,    76,   471,    47,    48,   350,     0,   529,   114,
+     530,     0,   531,  1287,     0,   924,   353,     0,   430,     0,
+       0,    76,   463,    50,     0,     0,     0,     0,    50,    76,
+     112,     0,   216,     0,     0,     0,     0,  1111,     0,     0,
+    1112,   705,  1113,    43,    44,    50,   954,   353,     0,     0,
        8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
-     634,     0,     0,     0,  1112,   351,   112,     0,  1112,     0,
-       0,   212,     0,     0,     0,     0,     0,  1451,     0,    31,
-     968,     0,   740,   351,   408,    74,     0,     0,     0,     0,
-      45,    46,     0,     0,     0,     0,     0,    48,   258,    48,
-       0,     0,   587,     0,   494,     0,   112,    34,   615,     0,
-       0,     0,     0,  1085,   523,  1112,     0,     0,   524,   525,
-     526,   620,   214,     0,     0,   620,   351,     0,  1463,    48,
-    1467,     0,   212,     0,     0,     0,    56,     0,   410,     0,
-       0,   213,   527,    56,   528,   418,   529,   530,     0,     0,
-     112,   917,  1009,   594,     0,     0,     0,     0,     0,    45,
-      46,     0,  1519,   634,     0,  1495,     0,  1497,  1519,   112,
-     212,  1145,  1146,   112,   469,   212,   228,     0,   233,  1519,
-       0,     0,     0,  1519,     0,     0,     0,     0,   348,   351,
-     495,     0,   213,   469,   907,    56,     0,     0,     0,     0,
-       0,   469,    37,     0,   182,   183,    40,     0,     0,  1526,
-       0,  1527,  1112,     0,     0,    41,    42,   410,     0,   689,
-     112,     0,   428,     0,  1534,  1535,  1193,  1194,     0,     0,
-       0,     0,   351,   351,   213,     0,     0,   703,     0,    66,
-     907,   890,     0,   408,     0,     0,     0,   428,   351,    45,
-      46,   428,     8,     9,    10,    11,    12,   112,     0,     0,
-     212,     0,     0,     0,   228,     0,   351,     0,     0,     0,
-       0,    48,  1119,     0,   571,     0,    48,    74,     0,     0,
-     348,    31,   575,     0,    37,   578,   173,   174,    40,     0,
-      77,     0,     0,    48,     0,   213,     0,    41,    42,     0,
-       0,     0,     0,    74,   214,     0,   351,     0,     0,    34,
-       0,     0,     0,     0,    37,     0,     0,   112,    40,     0,
-    1009,     0,    77,   373,     0,   783,     0,    41,    42,     0,
-       0,     0,  1112,   213,  1112,  1112,     0,     0,   213,     0,
-     212,   351,   620,   794,     0,   410,     0,     0,     0,   418,
-       0,     0,     0,    43,   811,     0,   212,     0,     0,   222,
-     694,    45,    46,     0,     0,     0,     0,     0,     0,   112,
-       0,     0,   587,     0,    79,     0,     0,   587,     0,     0,
-       0,   212,     0,   620,   351,     0,   348,   348,     0,     0,
-       0,     0,     0,     0,   351,     0,     0,     0,     0,   907,
-     221,   214,   348,     0,     0,   351,    79,     0,    37,  1319,
-     182,   183,    40,  1112,     0,     0,  1321,  1322,  1323,     0,
-     689,    41,    42,   213,     0,   410,     0,     0,     0,     0,
-       0,   469,     0,     0,     0,     0,     0,   112,     0,   112,
-     112,     0,     0,   223,     0,     0,   353,   184,     8,     9,
-      10,    11,    12,     0,     0,    45,    46,   469,   907,   907,
-     348,     0,     0,     0,     0,    74,     0,     0,     0,   922,
-    1112,  1112,   428,     0,     0,     0,     0,    31,     0,  1366,
-       8,     9,    10,    11,    12,     0,     0,   351,     0,     0,
-       0,     0,     0,     0,   351,   703,     0,     0,     0,   212,
-     952,     0,     0,   213,     0,    34,     0,     0,  1443,    31,
-      37,     0,   182,   183,    40,   571,   571,     0,   112,     0,
-       0,     0,     0,    41,    42,     0,     0,   212,     0,     0,
-     354,     0,   212,     0,     0,     0,     0,    34,   689,     0,
-      77,     0,    37,     0,   213,    77,    40,   175,   689,   184,
-     494,   620,     0,     0,   984,    41,    42,    45,    46,   689,
-       0,   694,     0,     0,     0,    48,    48,     0,  1493,   995,
-      37,     0,   182,   183,    40,   112,   112,  1501,    57,    57,
-       0,   709,     0,    41,    42,     0,     0,     0,     0,    45,
-      46,     0,     8,     9,    10,    11,    12,     0,   869,     0,
-       0,   212,   872,     0,   351,   351,     0,   351,   351,  1489,
-      57,   408,     0,   112,     0,   212,     0,    45,    46,    66,
-       0,    31,     0,     0,    79,    74,     0,     0,     0,    79,
-       0,     0,     0,     0,     0,     0,   495,     0,     0,   222,
-       0,   794,     0,     0,    57,     0,     0,    57,   703,    34,
-       0,  1064,     0,     0,    37,     0,   182,   183,    40,   351,
-     351,     0,   213,     0,     0,     0,   907,    41,    42,     0,
-       0,     0,    48,   112,     0,     0,     0,  1078,     0,   694,
-       0,     0,   112,   907,     0,     0,   428,   117,    86,   694,
-     213,     0,     0,   264,     0,   213,    48,    48,     0,     0,
-     694,    45,    46,     0,     0,    77,   212,     0,     0,     8,
-       9,    10,    11,    12,     0,     0,     0,     0,     0,   353,
-      86,    48,     0,   223,    77,     0,     0,     0,     0,     0,
-     351,     0,    77,   571,   346,     0,     0,     0,    31,     0,
-     587,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     353,     0,     0,   426,     0,   907,   907,   224,   689,   689,
-       0,   348,   348,     0,   213,     0,    34,     0,   353,     0,
-      77,    37,   221,   182,   183,    40,     0,     0,   213,  1166,
-       0,     0,     0,     0,    41,    42,     0,     0,    37,    79,
-     182,   183,    40,    74,     0,     0,     0,     0,    57,     0,
-       0,    41,    42,   354,     0,   351,     0,   351,    79,     0,
-     593,   353,   594,   689,   689,     0,    79,     0,    45,    46,
-       0,     0,     0,     0,     0,   523,     0,   264,    57,   524,
-     525,   526,     0,     0,   354,    45,    46,     0,     0,     0,
-       0,     0,   351,     0,   361,     0,   410,     0,     0,   351,
-     351,   351,   354,   527,    79,   528,     0,   529,  1285,     0,
-     351,   351,     0,     0,     0,     0,     0,     0,     0,   213,
-       0,     0,     0,    74,   353,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   703,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   354,   212,     0,     0,   694,
-     694,   531,   532,   533,   534,   535,   536,   537,   538,   539,
-     540,   541,   351,     0,     0,     0,     0,   353,   353,     0,
-       0,  1122,     0,     0,     0,     0,  1263,     0,     0,     0,
-       0,     0,     0,   353,     0,   542,     0,  1133,    86,     0,
-       0,     0,     0,    86,     0,     0,     0,    66,     0,     0,
-       0,   353,     0,     0,   694,   694,     0,     0,   354,   689,
-       0,   703,    77,     0,     0,   117,     0,     0,     0,     0,
+       0,     0,     0,   214,    39,   353,     0,    76,    42,   114,
+       0,  1318,     0,     0,   216,   355,     0,    43,    44,     0,
+       0,    33,     0,     0,   691,     0,     0,     0,     0,   866,
+       0,   868,     0,     0,   691,   215,     0,   622,     0,     0,
+     986,     0,     0,   711,     0,   691,     0,     0,   353,    36,
+       0,    47,    48,     0,    39,   997,   184,   185,    42,     0,
+      39,   114,   175,   176,    42,     0,     0,    43,    44,     0,
+       0,     0,     0,    43,    44,   216,     0,     0,     0,     0,
+       0,   914,     0,   214,     0,     0,   215,     0,     0,     0,
+       0,     0,     0,   595,     0,   596,     0,     0,     0,   214,
+       0,    47,    48,     0,     0,    68,   909,     0,     0,    79,
+       0,   353,     0,   216,    79,     0,     0,     0,   216,     0,
+       0,     0,     0,   909,   214,     0,     0,   796,   215,   114,
+       0,   114,   114,     0,   705,     0,     0,  1066,     8,     9,
+      10,    11,    12,     0,     0,   412,    39,     0,   184,   185,
+      42,     0,   420,     0,   353,   353,     0,     0,     0,    43,
+      44,     0,     0,  1080,     0,     0,     0,     0,     0,    33,
+     353,     0,   430,   119,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    81,     0,  1491,     0,   410,   353,   215,
+       0,     0,     0,    47,    48,   909,   909,    36,     0,    76,
+       0,     0,    39,   216,   184,   185,    42,     0,   224,     0,
+     114,     0,     0,     0,     0,    43,    44,    81,     0,     0,
+       0,     0,     0,     0,   412,    76,   589,   215,   353,     0,
+       0,     0,   215,     0,     0,     0,     0,     0,     0,   428,
+       0,   892,   214,   410,   691,   691,     0,   350,   350,    47,
+      48,     0,     0,     0,   225,     0,     0,    50,    50,     0,
+       0,     0,     0,   353,     0,  1168,     0,   114,   114,     0,
+     214,     0,     0,     0,    79,   214,     0,     0,     0,     0,
+       0,   573,    39,   216,   184,   185,    42,     0,   355,   577,
+       0,     0,   580,    79,     0,    43,    44,     0,     0,   691,
+     691,    79,     0,     0,     0,   114,   353,     8,     9,    10,
+      11,    12,     0,     0,     0,     0,   353,   215,     0,   355,
+       0,   266,   223,     0,   216,     0,     0,   353,  1102,    47,
+      48,     0,     0,     0,     0,     0,     0,   355,    33,    79,
+       0,   356,     0,     0,   214,     0,     0,  1114,     0,    59,
+      59,  1114,   412,     0,     0,     0,   420,     0,   214,     0,
+       0,     0,     0,     0,    50,   114,    36,     0,     0,     0,
+     705,    39,     0,   143,   114,    42,     0,     0,     0,   497,
+     355,     0,     0,    59,    43,    44,     0,    76,    50,    50,
+       0,     0,     0,     0,     0,     0,     0,   215,  1114,     0,
+       8,     9,    10,    11,    12,     0,     0,     0,     0,   353,
+     711,     0,  1265,    50,     0,     0,   353,    59,    47,    48,
+      59,     0,   126,   129,   130,   242,   245,     0,     0,     0,
+       0,    33,   412,    68,     0,    81,     0,     0,   215,     0,
+      81,     0,   216,   355,     0,   691,     0,   705,     0,   214,
+       0,   119,     0,     0,     0,     0,     0,     0,     0,    36,
+       0,     0,     0,     0,    39,    88,   184,   185,    42,     0,
+     216,     0,     0,     0,     0,   216,     0,    43,    44,     0,
+       0,     0,   691,     0,     0,     0,   355,   355,     0,   691,
+     691,   691,     0,     0,   255,  1114,   256,     0,     0,    88,
+     350,   350,   355,  1491,     0,   410,     0,   348,     0,     0,
+       0,    47,    48,  1168,     0,     0,     0,     0,     0,     0,
+     355,     0,   573,   573,     0,     0,   353,   353,     0,   353,
+     353,    79,     0,     0,   225,     0,   226,     0,     0,     0,
+       0,     0,     0,     0,   216,     0,   119,    76,     0,     0,
+       0,     0,   691,     0,     0,     0,   215,    79,   216,     0,
+     355,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    59,     0,     0,     0,     0,   395,     0,     0,     0,
+       0,   353,   353,     0,   215,   455,   414,   415,     0,   215,
+       0,   419,     0,   421,   422,   355,     0,     0,     0,     0,
+      81,    59,     0,     0,     0,   871,     0,     0,     0,   874,
+       0,     0,     0,     0,   356,  1114,     0,  1114,  1114,    81,
+       0,   350,     0,   363,     0,     0,     0,    81,     0,     0,
+       0,     8,     9,    10,    11,    12,     0,     0,   355,   214,
+       0,     0,     0,     0,     0,   356,   119,     0,   355,   216,
+       0,     0,   353,     0,   224,     0,     0,     0,   215,   355,
+       0,     0,    33,   356,     0,    81,     0,     0,     0,  1168,
+       0,     0,   215,     0,     0,     0,  1168,   533,   534,   535,
+     536,   537,   538,   539,   540,   541,   542,   543,     0,     0,
+      36,     0,     0,     0,   223,    39,  1114,   184,   185,    42,
+       0,     0,     0,     0,     0,     0,   356,     0,    43,    44,
+       0,   544,     0,     0,     0,    76,     0,    88,     0,    79,
+     637,     0,    88,     0,     0,     0,     0,   353,  1168,   353,
+       0,     0,     0,     0,   186,  1516,     0,     0,     0,     0,
+     573,   355,    47,    48,     0,     0,     0,     0,   355,     0,
+       0,     0,     0,  1114,  1114,     0,     0,     0,     0,     0,
+       0,     0,     0,   215,   353,     0,     0,     0,     0,   356,
+       0,   353,   353,   353,     0,     0,     0,     0,     0,     0,
+     348,     0,   353,   353,     0,     0,     0,     0,     0,     0,
+       0,  1445,     0,     0,     0,    76,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   351,     0,     0,     0,     0,     0,     0,    77,     0,
-       0,   353,     0,     0,     0,     0,   689,     0,     0,     0,
-       0,   354,   354,   689,   689,   689,     0,   346,     0,     0,
-       0,     0,   410,     0,   348,   348,     0,   354,     0,     0,
-       0,     0,     0,     0,     0,     0,   353,  1166,     0,    74,
-       0,     0,     0,     0,     0,   354,    74,   224,   166,     0,
-     171,     0,     0,   177,   178,   179,    79,   181,     0,     0,
-       0,  1219,     0,     0,     0,     0,     0,     0,    57,   213,
-     117,   232,     0,     0,     0,     0,   689,     0,     0,   353,
-       0,     0,    79,   247,   248,   354,     0,     0,   212,   353,
-       0,     0,     0,     0,     0,   222,     0,     0,    74,     0,
-     353,     0,     0,     0,     0,     0,     0,     0,     0,   346,
-    1293,     0,     0,    86,     0,     0,     0,     0,     0,     0,
-     354,     0,     0,     0,     0,     0,     0,   361,     0,     0,
-       0,     0,    86,     0,     0,     0,     0,     0,     0,     0,
-      86,     0,     0,     0,     0,   348,     0,   694,     0,     0,
-       0,     0,     0,     0,   694,   694,   694,     0,   361,     0,
-      77,     0,     0,   354,     0,     0,     0,     0,     0,     0,
-     117,     0,   346,   354,     0,     0,   361,     0,    86,   223,
-       0,     0,   353,     0,   354,   212,     0,     0,     0,   353,
-       0,     0,     0,  1166,     0,     0,     0,     0,     0,     0,
-    1166,     0,   994,     0,     0,     8,     9,    10,    11,    12,
-       0,     0,     0,     0,     0,   346,   346,   694,     0,   361,
+       0,     0,   356,   356,     0,     0,   226,     0,     0,     0,
+       0,   214,     0,     0,     0,     0,     0,     0,   356,     0,
+     718,    59,   722,     0,   353,     0,     0,     0,     0,   216,
+       0,     0,     0,     0,     0,     0,   356,     0,     0,     0,
+       0,  1495,     0,   412,     0,     0,     0,    81,   355,   355,
+    1503,   355,   355,     0,     0,     0,     0,     0,     0,   168,
+       0,   173,   348,     0,   179,   180,   181,     0,   183,    79,
+       0,     0,    88,    81,     0,     0,   356,     0,     0,     0,
+       0,     0,   234,     0,     0,     0,   363,     0,     0,     0,
+       0,    88,     0,   353,   249,   250,     0,     0,     0,    88,
+       0,     0,     0,   355,   355,     0,     0,     0,   214,     0,
+       0,   356,     0,     0,     0,     0,     0,   363,  1124,     0,
+       0,     0,     0,     0,     0,   348,     0,     0,     0,     0,
+       0,     0,     0,     0,  1135,   363,     0,    88,     0,     0,
+       0,    76,     0,   215,     0,     0,     0,     0,    76,     0,
+       0,     0,     0,     0,   356,   787,   788,     0,     0,     0,
+       0,     0,     0,     0,   356,     0,   853,     0,   348,   348,
+     225,     0,     0,     0,   355,   356,     0,     0,   363,     0,
+       0,     0,   818,     0,   348,   821,   822,     0,   825,     0,
+     827,   828,     0,     0,     0,   829,   830,     0,     0,     0,
+      76,     0,     0,     8,     9,    10,    11,    12,     0,   412,
+       0,   216,     0,     0,     0,   905,   224,   907,     0,     0,
+       0,   455,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,    81,     0,    79,     0,     0,
+       0,   363,   348,     0,     0,     0,     0,     0,  1221,   355,
+       0,   355,     0,     0,     0,     0,     0,   356,     0,     0,
+       0,     0,    36,     0,   356,     0,     0,    39,     0,   184,
+     185,    42,     0,     0,     0,     0,     0,     0,     0,     0,
+      43,    44,     0,     0,   363,   363,   355,     0,     0,     0,
+       0,     0,     0,   355,   355,   355,     0,     0,     0,     0,
+     363,     0,     0,     0,   355,   355,   266,     0,   216,     0,
+       0,     0,     0,     0,    47,    48,     0,    79,   363,     0,
+       0,     0,     0,     0,     0,   215,     0,     0,     0,    88,
+       0,   956,   957,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   587,     0,
+     594,     0,     0,     0,     0,    88,   355,     0,   363,     0,
+       0,   618,   619,     0,     0,   128,   128,   128,     0,     0,
+       0,     0,     0,     0,   356,   356,     0,   356,   356,     0,
+       0,     0,     0,     0,     0,     0,   637,     0,     0,     0,
+       0,     0,  1021,   363,     0,    81,     0,     0,     0,     0,
+       0,    59,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,   215,   348,     0,   355,     0,     0,     0,   356,
+     356,     0,  1070,    33,     0,     0,   363,   128,     0,   128,
+       0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
+       0,     0,   226,     0,     0,     0,     0,   363,     0,     0,
+       0,    36,     0,     0,   276,     0,     0,     0,     0,    59,
+       0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
+      79,     0,     0,     0,     0,     0,     0,  1071,     0,   637,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   346,   281,   282,    31,   283,     0,     0,     0,     0,
-       0,     0,     0,     0,    79,     0,     0,     0,     0,     0,
-       0,   213,  1166,     0,     0,     0,     0,     0,     0,  1514,
-       0,   284,    34,     0,     0,     0,   354,   285,     0,     0,
-       0,   286,     0,   354,   287,   288,   289,   290,   291,   292,
-      41,    42,   361,   293,   294,     0,     0,     0,     0,   346,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   353,
-     353,     0,   353,   353,     0,     0,   295,     0,   376,     0,
-       0,     0,     0,     0,   342,    46,   297,   298,   299,   300,
-      77,     0,     0,     0,     0,   361,   361,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   585,     0,   592,
-       0,   361,     0,     8,     9,    10,    11,    12,   213,     0,
-     616,   617,     0,     0,   353,   353,     0,     0,     0,   361,
-       0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
-      86,     0,    31,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   354,   354,     0,   354,   354,     0,     0,
-       0,     0,     0,     0,    31,     0,    86,     0,     0,   361,
-      34,     0,     0,     0,    79,    37,     0,   182,   183,    40,
-       0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
-       0,     0,    34,     0,     0,   353,     0,    37,     0,   182,
-     183,    40,     0,     0,   361,     0,     0,     0,   354,   354,
-      41,    42,     0,     0,   890,     0,   408,     0,    57,     0,
-       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  1489,   222,   408,     0,
-     346,     0,     0,     0,    45,    46,     0,   361,   281,   282,
-       0,   283,     0,     0,     0,     0,     0,   361,    77,     0,
-       0,     0,     0,   224,     0,     0,     0,     0,   361,     0,
-     353,     0,   353,     0,     0,     0,     0,   284,     0,   354,
-       0,     0,     0,   285,     0,     0,    57,   286,     0,     0,
-     287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
-     294,     0,     0,     0,     0,     0,     0,   353,     0,     0,
-       0,     0,     0,     0,   353,   353,   353,     0,     0,     0,
-       0,   223,   295,     0,   376,   353,   353,     0,    86,     0,
-      45,    46,   297,   298,   299,   300,     0,     0,    77,     0,
-       0,     0,    79,   777,     0,     0,     0,     0,     0,     0,
-     361,     0,     0,     0,   354,     0,   354,   361,     0,     0,
-     346,   346,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   353,    57,     0,
-       0,     0,     0,     0,   210,     0,     0,     0,     0,     0,
-       0,   354,     0,   230,     0,   234,     0,   236,   354,   354,
-     354,     0,     0,     0,   245,     0,     0,     0,     0,   354,
-     354,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    79,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   210,     0,   234,   236,   245,
-       0,     0,     0,     0,     0,     0,   353,     0,     0,     0,
-       0,     0,     0,     0,     0,   910,     0,   911,     0,     0,
-       0,   354,     0,     0,   914,   915,     0,   361,   361,   920,
-     361,   361,     0,     0,     0,     0,     0,   210,     0,     0,
-       0,     0,   926,     0,     0,     0,     0,   930,    86,     0,
-       0,     0,     0,     0,    77,     0,     0,     0,     0,     0,
-       0,    77,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   592,     0,     0,     0,     0,     0,
-       0,     0,   361,   361,    57,    57,     0,     0,     0,     0,
-     354,     0,     0,     0,     0,     0,     0,     0,   210,     0,
-     234,   236,   245,     0,     0,     0,    57,     0,     0,     0,
-       0,     0,     0,    77,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    57,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   210,     0,    79,     0,
-       0,   210,     0,     0,     0,    79,     0,     0,     0,     0,
-       0,     0,     0,   361,     0,     0,   493,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,  1004,     0,  1005,
-    1006,  1007,     0,   346,   346,     0,     0,     0,     0,     0,
-       0,    57,   164,     0,     0,     0,    57,     0,  1051,     0,
-       0,     0,     0,     0,     0,   224,     0,    79,     0,   217,
-       0,     0,  1057,     0,     0,     0,     0,   210,     0,     0,
-       0,     0,     0,     0,     0,     0,    86,     0,     0,    57,
-       0,     0,     0,     0,     0,     0,   210,     0,   361,     0,
-     361,   234,   236,     0,     0,     0,     0,     0,     0,   245,
-       0,  1077,     0,     0,     0,     0,   164,     0,     0,     0,
-     271,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   361,     0,     0,     0,     0,
-       0,     0,   361,   361,   361,     0,     0,     0,     0,   164,
-       0,   210,     0,   361,   361,  1107,     0,     0,     0,   367,
-    1117,     0,   372,     0,   346,  1120,    86,     0,     0,   210,
-    1124,     0,     0,     0,   210,  1126,   210,  1127,  1128,     0,
-       0,  1131,     0,     0,     0,     0,     0,     0,     0,    57,
-    1143,     0,   210,     0,     0,   210,   210,     0,     0,     0,
-       0,     0,     0,   210,     0,   361,  1157,  1158,     0,     0,
-       0,   164,    57,     0,     0,     0,     0,   210,     0,    57,
-       0,     0,     0,   217,   210,     0,     0,     0,     0,     0,
-       0,     0,  1187,     0,     0,  1189,     0,     0,     0,     0,
-       0,   164,     0,     0,     0,   124,   127,   128,     8,     9,
+     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    88,   996,   128,
+       0,     8,     9,    10,    11,    12,     0,   128,     0,   128,
+     128,     0,    79,     0,   128,     0,   128,   128,     0,   363,
+       0,     0,   225,   348,   348,     0,   363,     0,     0,     0,
+     283,   284,    33,   285,     0,     0,     0,     0,     0,     0,
+       0,    59,     0,    81,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   356,     0,   356,     0,   286,
+      36,     0,     0,  1021,     0,   287,     0,     0,     0,   288,
+       0,     0,   289,   290,   291,   292,   293,   294,    43,    44,
+       0,   295,   296,     0,     0,     0,   128,     0,     0,     0,
+       0,     0,   356,     0,     0,     0,     0,     0,     0,   356,
+     356,   356,     0,     0,   297,     0,   378,     0,     0,     0,
+     356,   356,   344,    48,   299,   300,   301,   302,     0,     0,
+       0,     0,  1197,    81,     0,     0,     0,     0,     0,     0,
+       0,   166,     0,     0,     0,     0,   363,   363,     0,   363,
+     363,     0,     0,     0,     0,     0,     0,     0,   219,     0,
+       0,     0,     0,     0,     0,     0,     0,    88,     0,     0,
+       0,     0,   356,     0,     0,     0,     0,     0,     0,     0,
+       0,   283,   284,     0,   285,  1264,   912,     0,   913,     0,
+       0,     0,     0,     0,     0,   916,   917,    59,    59,     0,
+     922,   363,   363,     0,     0,   166,     0,     0,     0,   273,
+     286,     0,     0,   928,     0,     0,   287,     0,   932,    59,
+     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
+      44,     0,   295,   296,     0,     0,     0,    59,   166,     0,
+       0,   356,     0,     0,     0,   594,     0,     0,   369,     0,
+       0,   374,     0,     0,     0,   297,     0,   378,     0,     0,
+    1286,     0,     0,    47,    48,   299,   300,   301,   302,     0,
+       0,     0,   363,     0,     0,     0,   779,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   348,   348,     0,    81,
+       0,     0,     0,     0,    59,     0,    81,     0,     0,    59,
+     166,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   219,     0,   226,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     166,     0,    59,     0,     0,    88,     0,     0,  1006,     0,
+    1007,  1008,  1009,     0,     0,     0,     0,   363,    81,   363,
+       0,     0,     0,     0,     0,   374,     0,     0,     0,  1053,
+       0,     0,   166,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,  1059,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   363,     0,     0,   522,     0,     0,
+       0,   363,   363,   363,     0,     0,     0,     0,   128,   128,
+     166,     0,   363,   363,     0,     0,     0,   348,     0,     0,
+       0,     0,  1079,     0,     0,    88,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   128,     0,     0,   128,   128,
+       0,   128,    59,   128,   128,   592,     0,     0,   128,   128,
+     616,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   363,    59,  1109,     0,     0,     0,
+       0,  1119,    59,     0,     0,     0,  1122,     0,     0,     0,
+       0,  1126,     0,     0,     0,     0,  1128,     0,  1129,  1130,
+       0,     0,  1133,     0,     0,     0,     0,     0,     0,     0,
+       0,  1145,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  1159,  1160,     0,
+       0,     0,     0,     0,    59,   166,   166,     0,     0,     0,
+       0,   369,     0,   363,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,  1189,     0,     0,  1191,     0,     0,     0,
+       0,     0,   522,     0,     0,     0,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,  -298,     0,     0,     0,
+     708,    88,     0,     0,   128,   128,     0,    33,    88,  1205,
+       0,     0,   166,     0,     0,  1209,  1210,     0,     0,     0,
+       0,     0,     0,     0,   522,     0,   522,     0,     0,   522,
+       0,   166,   522,     0,  1226,    36,     0,     0,     0,  1233,
+       0,     0,     0,   369,  1237,     0,  -298,     0,     0,     0,
+       0,     0,     0,     0,     0,  1244,     0,     0,     0,     0,
+      88,     0,     0,     0,     0,     0,     0,     0,  1251,     0,
+    1253,  1254,  1255,  1256,     0,     0,     0,   212,     0,     0,
+       0,     0,     0,     0,     0,  1263,   232,  1159,   236,     0,
+     238,   173,     0,     0,     0,   166,     0,   247,     0,     0,
+       0,     0,     0,     0,     0,     0,   369,     0,     0,   799,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  1291,
+    1292,     0,     0,     0,     0,     0,     0,     0,   212,     0,
+     236,   238,   247,     0,     0,   592,     0,     0,     0,     0,
+     592,     0,     0,     0,     0,     0,     0,     0,     0,   369,
+     369,     0,     0,     0,     0,   128,     0,     0,     0,     0,
+     128,     0,     0,     0,     0,   369,     0,     0,     0,     0,
+     212,     0,     0,  1326,  1327,     0,     0,     0,     0,     0,
+       0,     0,     0,  1337,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   522,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,   372,     0,     0,     0,
-       0,    57,     0,   164,   361,     0,     0,    31,  1203,     0,
-       0,     0,     0,     0,  1207,  1208,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   520,     0,
-       0,     0,     0,  1224,     0,    34,     0,     0,  1231,     0,
-       0,   164,     0,  1235,     0,     0,     0,   253,     0,   254,
-       0,     0,    86,     0,  1242,     0,     0,     0,     0,    86,
-       0,     0,     0,     0,     0,   210,     0,  1249,     0,  1251,
-    1252,  1253,  1254,     0,     0,     0,   590,     0,     0,     0,
-       0,   614,     0,     0,  1261,     0,  1157,     0,     0,     0,
-     171,     0,     0,   210,     0,     0,     0,     0,   210,     0,
+      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
+      28,    29,    30,   369,     0,   921,     0,     0,     0,    33,
+       0,   212,     0,   236,   238,   247,     0,   158,     0,     0,
+       0,     0,     0,     0,     0,  1372,     0,  1373,  1374,  1375,
+       0,     0,     0,     0,     0,     0,     0,    36,   708,  1379,
+       0,     0,    39,     0,    40,    41,    42,  1390,     0,   212,
+       0,     0,     0,     0,   212,    43,    44,     0,     0,     0,
+       0,     0,     0,     0,   252,     0,     0,     0,     0,   495,
+       0,     0,  1411,  1412,   257,     0,     0,     0,     0,     0,
+       0,    45,     0,    46,     0,     0,     0,     0,     0,    47,
+      48,   324,     0,     0,     0,   128,   616,     0,     0,     0,
+       0,   346,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   381,   381,     0,     0,     0,  1451,  1452,     0,
+     212,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    1457,     0,     0,     0,     0,     0,     0,  1457,     0,   212,
+       0,     0,     0,   385,   236,   238,     0,     0,     0,     0,
+       0,     0,   247,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   417,     0,     0,     0,
+    1490,     0,     0,     0,  1496,     0,     0,     0,     0,     0,
+     431,     0,     0,   324,   369,     0,     0,     0,     0,   436,
+       0,   708,     0,     0,   212,     0,     0,     0,     0,   444,
+       0,     0,  1518,     0,  1519,     0,   522,   476,     0,     0,
+       0,     0,   212,     0,     0,     0,     0,   212,     0,   212,
+       0,     0,     0,   128,   462,     0,     0,     0,     0,   472,
+       0,   166,  1534,  1535,     0,   212,     0,     0,   212,   212,
+    1538,  1539,   480,     0,     0,     0,   212,     0,   490,     0,
+     494,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     212,     0,     0,     0,     0,     0,     0,   212,     0,   523,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    86,     0,     0,     0,     0,     0,     0,  1289,  1290,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   393,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   412,
-     413,     0,     0,     0,   417,     0,   419,   420,     0,     0,
-     156,     0,     0,     0,     0,     0,   164,   164,     0,     0,
-       0,     0,   367,     0,     0,     0,     0,   210,     0,     0,
-       0,     0,  1324,  1325,     0,     0,     0,     0,     0,     0,
-       0,   210,  1335,   520,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   250,     0,     0,
-       0,     0,   493,     0,     0,     0,     0,   255,     0,     0,
-       0,   706,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   164,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   520,     0,   520,     0,     0,
-     520,     0,   164,   520,  1370,     0,  1371,  1372,  1373,     0,
-       0,     0,     0,     0,   367,     0,     0,     0,  1377,     0,
-       0,   210,     0,     0,     0,     0,  1388,     0,     0,     0,
-       0,     0,   210,     0,     0,     0,   383,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   210,
-       0,  1409,  1410,     0,     0,     0,     0,     0,     0,   415,
-       0,     0,     0,     0,     0,     0,   164,     0,     0,     0,
-       0,     0,     0,   429,     0,     0,     0,   367,     0,     0,
-     797,     0,   434,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   442,     0,     0,     0,  1449,  1450,     0,     0,
-       0,     0,     0,     0,     0,     0,   590,     0,     0,  1455,
-       0,   590,     0,     0,     0,     0,  1455,   460,     0,     0,
-     367,   367,   470,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   478,   367,     0,     0,     0,
-       0,   488,     0,   492,     0,     0,     0,     0,     0,  1488,
-       0,     0,     0,  1494,     0,     0,     0,     0,     0,     0,
-     210,     0,   521,     0,     0,     0,     0,     0,   520,     0,
+       0,     0,     0,   592,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,   369,   369,    28,    29,    30,     0,
+     582,     0,     0,     0,   586,    33,     0,     0,     0,     0,
+       0,     0,   381,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  1516,     0,  1517,     0,     0,     0,     0,     0,     0,
-     210,     0,     0,     0,   367,     0,   919,     0,     0,     0,
-       0,     0,     0,   580,     0,     0,     0,   584,     0,     0,
-       0,  1532,  1533,     0,     0,     0,     0,     0,     0,  1536,
-    1537,     0,   210,     0,     0,     0,     0,     0,     0,   706,
-       0,     0,     0,   210,     0,   627,     0,     0,     0,   628,
-     629,     0,   630,     0,     0,     0,     0,     0,     0,   641,
-     642,     0,   643,   644,     0,   645,     0,   646,     0,     0,
+       0,     0,   629,    36,     0,     0,   630,   631,     0,   632,
+     208,    41,     0,     0,     0,     0,   643,   644,     0,   645,
+     646,   522,   647,     0,   648,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   212,     0,
+       0,   582,     0,     0,     0,     0,     0,     0,     0,   663,
+       0,     0,     0,     0,     0,    47,    48,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   212,     0,     0,     0,
+       0,   212,     0,   674,     0,   702,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   708,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   700,
+       0,     0,     0,     0,     0,   703,     0,     0,     0,     0,
+     462,     0,     0,     0,   735,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   751,     0,   219,     0,
+       0,     0,   735,     0,     0,   735,   341,   364,     0,     0,
+     212,     0,     0,     0,     0,     0,   738,     0,   760,     0,
+       0,     0,     0,     0,   212,     0,     0,     0,     0,     0,
+       0,   756,     0,     0,   708,     0,     0,     0,     0,   413,
+       0,     0,     0,     0,     0,   495,   413,     0,   789,     0,
+       0,     0,     0,     0,     0,   346,     0,     0,     0,   751,
+       0,     0,     0,     0,     0,     0,     0,     0,   781,     0,
+       0,     0,     0,     0,     0,     0,     0,   791,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   369,   369,     0,
+       0,     0,     0,     0,     0,   219,     0,   812,     0,     0,
+       0,     0,     0,     0,   212,   850,     0,     0,     0,     0,
+       0,     0,     0,   381,     0,   212,     0,     0,   413,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   580,     0,     0,     0,   785,   786,
-       0,     0,   661,     0,     0,     0,     0,   614,     0,     0,
+       0,     0,   212,     0,     0,   851,     0,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
+      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,   884,     0,     0,     0,   413,     0,     0,     0,   891,
+       0,     0,     0,   413,   578,     0,   413,   581,     0,   926,
+       0,     0,     0,     0,   364,     0,    36,     0,   608,     0,
+       0,    39,     0,   208,    41,    42,     0,     0,   369,     0,
+     252,   751,     0,   950,    43,    44,     0,   626,     0,     0,
+       0,   929,   930,   960,     0,     0,     0,     0,     0,   967,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   210,     0,     0,   816,   672,     0,   819,   820,
-       0,   823,     0,   825,   826,     0,   210,     0,   827,   828,
-       0,   126,   126,   126,   503,     0,   505,   508,     0,     0,
-       0,     0,   698,     0,     0,     0,   511,   512,   701,     0,
-       0,     0,     0,   460,     0,     0,     0,     0,     0,     0,
-       0,   505,   505,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   339,
-     362,     0,     0,     0,     0,   367,     0,     0,     0,   736,
-       0,     0,   706,     0,     0,     0,   505,     0,     0,     0,
-       0,     0,     0,   126,   754,   126,     0,   520,     0,     0,
-       0,     0,   411,     0,   210,     0,     0,     0,     0,   411,
+      45,     0,   271,   212,     0,     0,   413,     0,    47,    48,
+     413,     0,     0,   964,     0,     0,     0,     0,   968,     0,
+       0,     0,     0,     0,     0,   522,     0,   522,     0,   984,
+     985,     0,     0,   212,     0,     0,     0,     0,     0,     0,
+     364,     0,     0,     0,     0,   346,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     274,   505,   164,     0,     0,     0,     0,     0,     0,     0,
-       0,   779,     0,     0,     0,     0,     0,     0,     0,     0,
-     789,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   954,   955,     0,     0,     0,     0,
-     810,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   590,   126,     0,     0,     0,     0,
-       0,   411,     0,   126,     0,   126,   126,     0,     0,     0,
-     126,     0,   126,   126,     0,   367,   367,     0,   849,     0,
-       0,   210,     0,     0,   463,     2,   205,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,   882,     0,     0,     0,   411,     0,
-      31,     0,   889,     0,     0,     0,   411,   576,     0,   411,
-     579,     0,   520,     0,     0,     0,     0,   362,     0,     0,
-       0,   606,   126,     0,     0,     0,     0,     0,    34,     0,
-      35,     0,    36,   250,     0,    38,    39,     0,     0,     0,
-     624,     0,     0,     0,   927,   928,     0,     0,     0,   505,
-     505,   505,   505,   505,   505,   505,   505,   505,   505,   505,
-     505,   505,   505,   505,   505,   505,   505,     0,     0,   411,
-    1069,     0,     0,   411,     0,     0,   962,    -3,   706,     0,
-       0,   966,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    -298,     0,     0,   362,     0,     0,     0,     0,     0,     0,
-       0,    31,     0,   322,     0,     0,     0,     0,     0,   217,
-       0,     0,     0,   344,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   379,   379,     0,     0,     0,    34,
-       0,   999,     0,     0,     0,     0,     0,     0,  1000,   411,
-    -298,     0,   362,     0,     0,   706,     0,     0,     0,     0,
-       0,  1002,     0,  1003,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  1013,     0,     0,     0,
-       0,     0,  1017,     0,     0,     0,     0,     0,     0,   505,
-       0,   411,     0,     0,  1054,   362,     0,  1055,     0,     0,
-       0,     0,     0,     0,     0,   322,     0,     0,   367,   367,
-       0,     0,   210,     0,     0,     0,   217,     0,     0,     0,
-       0,     0,     0,     0,     0,  1195,     0,     0,     0,   474,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   411,
-     411,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     505,     0,     0,     0,     0,     0,     0,   792,   362,     0,
-       0,     0,     0,     0,     0,     0,     0,   606,     0,   606,
-     606,     0,     0,     0,     0,     0,   606,     0,     0,     0,
-     505,     0,     0,     0,     0,     0,   829,   362,     0,     0,
-       0,     0,   362,     0,     0,     0,     0,     0,     0,     0,
-       0,   362,   362,     0,     0,  1125,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   362,     0,     0,
-       0,     0,   411,   870,   126,   126,   411,   873,     0,   367,
-       0,     0,     0,   875,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   379,     0,     0,     0,     0,     0,
-       0,   126,   411,  1284,   126,   126,     0,   126,     0,   126,
-     126,     0,     0,     0,   126,   126,  1188,     0,     0,     0,
-       0,     0,     0,     0,     0,   362,   606,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   520,     0,   520,     0,
-       0,     0,     0,     0,   505,     0,     0,     0,     0,     0,
-    1200,     0,     0,     0,     0,  1202,     0,     0,     0,     0,
-     362,     0,     0,  1206,   411,   411,     0,     0,     0,     0,
-       0,     0,     0,   520,     0,   520,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   700,     0,     0,
-     505,     0,     0,     0,     0,     0,     0,  1237,     0,     0,
-       0,     0,   164,     0,     0,     0,     0,   411,  1244,     0,
-       0,  1245,     0,  1246,     0,     0,     0,     0,     0,     0,
-       0,     0,   505,   606,     0,   606,   733,     0,  1255,  1256,
-       0,     0,     0,     0,   505,   606,     0,     0,   749,     0,
-       0,     0,     0,     0,   733,     0,     0,   733,  1268,     0,
-     126,   126,  1141,     0,     0,     8,     9,    10,    11,    12,
-     758,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   505,     0,     0,     0,     0,     0,     0,
-       0,     0,   281,   282,    31,   283,     0,     0,     0,     0,
-     787,     0,     0,     0,  1307,     0,     0,   344,     0,     0,
-       0,   749,  1311,     0,     0,     0,   362,     0,     0,     0,
-       0,   284,    34,   362,   411,     0,   411,   285,     0,     0,
-     411,   286,     0,     0,   287,   288,   289,   290,   291,   292,
-      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
-       0,   606,   606,     0,     0,     0,     0,   848,     0,   505,
-       0,     0,     0,     0,     0,   379,   295,     0,   376,     0,
-       0,     0,     0,     0,  1142,    46,   297,   298,   299,   300,
-       0,     0,  1358,     0,  1359,     0,   411,     0,     0,     0,
+       0,     0,   522,     0,   522,   212,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   212,     0,  1001,     0,
+       0,     0,     0,     0,  1013,  1002,   413,     0,   381,   364,
+       0,   166,     0,     0,     0,     0,     0,     0,  1004,     0,
+    1005,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,  1015,     0,     0,     0,   346,     0,  1019,
+       0,     0,     0,     0,   346,     0,     0,     0,   413,     0,
+       0,  1056,   364,     0,  1057,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   212,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
+       0,     0,     0,     0,   324,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   413,   413,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1368,     0,  1369,     0,     0,   411,  1123,     0,     0,     0,
-       0,   126,     0,     0,     0,   362,   126,  1376,   505,   505,
-       0,   411,  1134,     0,   606,   606,  1139,     0,     0,     0,
-       0,     0,  1394,  1396,     0,     0,   362,   362,     0,     0,
-       0,   924,     0,  1401,     0,     0,  1206,     0,     0,     0,
+       0,   381,     0,     0,   794,   364,   960,     0,     0,   735,
+       0,     0,     0,     0,   608,     0,   608,   608,     0,     0,
+       0,     0,     0,   608,     0,     0,     0,     0,     0,  1131,
+       0,     0,     0,   831,   364,     0,     0,     0,     0,   364,
+    1146,     0,     0,     0,     0,     0,     0,     0,   364,   364,
+       0,     0,  1127,     0,     0,     0,     0,   212,     0,     0,
+     381,     0,  1163,     0,   364,     0,     0,     0,     0,   413,
+     872,     0,     0,   413,   875,     0,     0,   960,   960,   505,
+     877,   507,   510,     0,     0,     0,     0,     0,     0,     0,
+       0,   513,   514,     0,     0,     0,     0,  1194,     0,   413,
+       0,     0,     0,     0,     0,     0,   507,   507,     0,     0,
+       0,     0,     0,  1190,     0,     0,     0,     0,     0,     0,
+       0,     0,   364,   608,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   749,     0,   948,     0,     0,  1424,     0,
-       0,     0,     0,     0,     0,   958,     0,  1431,     0,     0,
-    1433,   965,  1435,  1437,  1439,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   411,     0,   411,     0,
-       0,     0,     0,   411,     0,     0,     0,     0,     0,     0,
-       0,     0,   606,     0,     0,     0,     0,     0,     0,     0,
-       0,   982,   983,  1470,     0,  1472,     0,  1206,     0,     0,
-       0,     0,     0,     0,     0,   411,  1220,   344,     0,     0,
-       0,     0,     0,  1483,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   362,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   126,     0,     0,     0,     0,  1011,     0,     0,     0,
-     379,     0,     0,     0,     0,     8,     9,    10,    11,    12,
+       0,   507,     0,     0,     0,     0,     0,  1202,     0,     0,
+       0,   960,  1204,     0,   212,     0,     0,   364,     0,     0,
+    1208,   413,   413,     0,     0,     0,     0,     0,     0,     0,
+     850,     0,     0,     0,     0,     0,   507,     0,     0,     0,
+       0,     0,     0,     0,     0,  1249,  1250,     0,     0,     0,
+       0,     0,     0,     0,  1239,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   413,  1246,     0,     0,  1247,     0,
+    1248,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     608,     0,   608,     0,     0,  1257,  1258,     0,     0,     0,
+       0,     0,   608,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  1270,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  -523,     0,     0,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,   344,
-       0,     0,     0,     0,    31,     0,   344,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   505,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   362,     0,     0,     0,
-       0,     0,    34,   505,     0,     0,     0,     0,     0,   206,
-      39,     0,     0,     0,     0,     0,   322,   204,     2,   205,
+      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
+      31,  1309,     0,    32,     0,     0,    33,    34,     0,  1313,
+       0,     0,     0,   364,     0,     0,     0,     0,     0,     0,
+     364,   413,     0,   413,     0,     0,     0,   413,     0,     0,
+       0,    35,     0,     0,    36,     0,    37,  1354,    38,    39,
+     735,    40,    41,    42,     0,     0,     0,     0,   608,   608,
+       0,     0,    43,    44,   507,   507,   507,   507,   507,   507,
+     507,   507,   507,   507,   507,   507,   507,   507,   507,   507,
+     507,   507,     0,     0,     0,     0,     0,     0,    45,  1360,
+      46,  1361,     0,   413,     0,     0,    47,    48,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  1370,     0,  1371,
+       0,     0,   413,  1125,     0,     0,     0,     0,     0,     0,
+       0,     0,   364,     0,  1378,   212,     0,     0,   413,  1136,
+       0,   608,   608,  1141,     0,     0,     0,     0,     0,  1396,
+    1398,     0,     0,   364,   364,     0,     0,     0,     0,     0,
+    1403,     0,     0,  1208,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,  -299,  1426,     0,     0,     0,     0,
+       0,     0,     0,     0,  1433,    33,     0,  1435,     0,  1437,
+    1439,  1441,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   413,   507,   413,     0,     0,     0,     0,
+     413,     0,     0,    36,     0,     0,     0,     0,     0,   608,
+       0,     0,     0,     0,  -299,     0,     0,     0,     0,     0,
+    1472,     0,  1474,     0,  1208,     0,     0,     0,     0,     0,
+       0,     0,   413,  1222,     0,     0,     0,     0,     0,     0,
+    1485,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   324,   507,   364,     1,     2,   207,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,   379,    26,    27,    28,     0,   958,   362,
-     362,   733,     0,    31,    45,    46,     0,     0,     0,   126,
+      24,    25,    26,    27,     0,   507,    28,    29,    30,    31,
+       0,     0,    32,   283,   284,    33,  1022,  1023,     0,  1024,
+       0,     0,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,
+       0,     0,     0,  1033,     0,     0,     0,  1034,  1035,     0,
+      35,     0,   286,    36,     0,    37,     0,    38,  1036,     0,
+      40,    41,   288,   364,     0,   289,   290,   291,   292,   293,
+     294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  1129,     0,     0,     0,   505,   505,     0,     0,     0,
-       0,    34,  1144,    35,     0,    36,    37,     0,   206,    39,
-      40,     0,     0,     0,     0,     0,     0,     0,     0,    41,
-      42,     0,   379,     0,  1161,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   958,
-     958,     0,     0,     0,     0,    43,     0,   207,     0,     0,
-       0,     0,     0,    45,    46,     0,     0,     0,     0,  1192,
-       0,     0,     0,     0,     0,     1,     2,   205,     4,     5,
+       0,     0,     0,     0,     0,     0,     0,   297,     0,   298,
+       0,     0,   172,     0,     0,    47,    48,   299,   300,   301,
+     302,     0,     0,     0,     0,  1037,   364,   364,     0,     0,
+    -134,     0,     0,     0,     0,     0,     0,     0,     0,   507,
+       1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
+      29,    30,    31,     0,     0,    32,   283,   284,    33,   285,
+       0,     0,     0,     0,     0,   507,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   286,    36,     0,    37,     0,
+      38,   287,     0,    40,    41,   288,     0,   507,   289,   290,
+     291,   292,   293,   294,    43,    44,     0,   295,   296,   507,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
+     297,     0,   298,     0,     0,     0,     0,     0,    47,    48,
+     299,   300,   301,   302,     0,     0,     0,     0,   507,     0,
+       0,     0,     0,  -134,     0,     0,     0,     0,     0,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
+      30,    31,     0,     0,    32,     0,     0,    33,    34,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   413,     0,     0,     0,
+       0,     0,    35,     0,   507,    36,     0,    37,     0,    38,
+      39,     0,    40,    41,    42,     0,     0,     0,     0,     0,
+     413,   413,     0,    43,    44,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   413,     0,     0,     0,    45,
+       0,    46,     0,     0,     0,  -527,     0,    47,    48,     0,
+       0,     0,     0,   507,   507,     1,     2,   207,     4,     5,
        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-     362,     0,    26,    27,    28,    29,     0,     0,    30,     0,
-       0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   958,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
-       0,    35,   848,    36,     0,     0,    38,    39,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,  1247,  1248,     0,
-       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,    44,    26,    27,    28,   411,
-       0,    45,    46,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   411,   411,     0,     0,     0,     0,     0,
-       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
-      38,    39,     0,     0,     0,     0,     0,     0,   411,     0,
-       0,     0,     1,     2,   205,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,  -418,    26,
-      27,    28,    29,     0,     0,    30,   281,   282,    31,  1020,
-    1021,     0,  1022,     0,     0,  1023,  1024,  1025,  1026,  1027,
-    1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,  1352,
-    1032,  1033,   733,    33,     0,   284,    34,     0,    35,     0,
-      36,  1034,     0,    38,    39,   286,     0,     0,   287,   288,
-     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
+      26,    27,     0,     0,    28,    29,    30,    31,     0,     0,
+      32,   283,   284,    33,   285,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     295,     0,   296,     0,     0,   170,     0,     0,    45,    46,
-     297,   298,   299,   300,     0,     0,     0,     0,  1035,     0,
-       0,     0,     0,  -134,     1,     2,   205,     4,     5,     6,
+     286,    36,     0,    37,     0,    38,   287,     0,    40,    41,
+     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
+      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   297,     0,   298,     0,     0,
+       0,     0,     0,    47,    48,   299,   300,   301,   302,     0,
+       0,     0,     0,     0,     0,     2,   207,     4,     5,     6,
        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,    29,     0,     0,    30,   281,   282,
-      31,   283,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,     0,    26,    27,    28,     0,     0,   284,    34,     0,
-      35,    31,    36,   285,     0,    38,    39,   286,     0,     0,
-     287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
-     294,     0,     0,     0,     0,     0,     0,     0,     0,    34,
-       0,     0,     0,     0,   110,     0,    38,    39,     0,     0,
-       0,     0,   295,     0,   296,     0,     0,    41,    42,     0,
-      45,    46,   297,   298,   299,   300,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,  -134,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   322,     1,     2,   205,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
+     283,   284,    33,   285,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
+      36,     0,    37,     0,    38,   287,     0,    40,    41,   288,
+       0,   507,   289,   290,   291,   292,   293,   294,    43,    44,
+       0,   295,   296,     0,     0,     0,     0,     0,   507,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   297,     0,   343,     0,     0,     0,
+       0,   750,   344,    48,   299,   300,   301,   302,     2,   207,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
-      30,   281,   282,    31,   283,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,  -299,     0,     0,     0,     0,     0,     0,
-     284,    34,     0,    35,    31,    36,   285,     0,    38,    39,
-     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
-      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,  -299,     0,   295,     0,   296,     0,     0,
-       0,     0,     0,    45,    46,   297,   298,   299,   300,     2,
-     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
-       0,     0,   281,   282,    31,   283,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
-       0,   284,    34,     0,    35,    31,    36,   285,     0,    38,
-      39,   286,     0,     0,   287,   288,   289,   290,   291,   292,
-      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
-       0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
-      38,    39,     0,     0,     0,     0,   295,     0,   341,     0,
-       0,     0,     0,   748,   342,    46,   297,   298,   299,   300,
-       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
-       0,     0,     0,   281,   282,    31,   283,     8,     9,    10,
+      24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
+       0,     0,     0,   283,   284,    33,   285,     0,     0,     0,
+     507,   507,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   286,    36,     0,    37,     0,    38,   287,     0,
+      40,    41,   288,     0,     0,   289,   290,   291,   292,   293,
+     294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   297,     0,   343,
+       0,     0,     0,     0,   750,    47,    48,   299,   300,   301,
+     302,     2,   207,     4,     5,     6,     7,     8,     9,    10,
       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
-       0,     0,   284,    34,     0,    35,    31,    36,   285,     0,
-      38,    39,   286,     0,     0,   287,   288,   289,   290,   291,
-     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
-       0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
-       0,   206,    39,     0,     0,     0,     0,   295,     0,   341,
-       0,     0,     0,     0,   748,    45,    46,   297,   298,   299,
-     300,     2,   205,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
-       0,     0,     0,     0,   281,   282,    31,   283,     0,     0,
+      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
+      29,    30,     0,     0,     0,     0,   283,   284,    33,   285,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   284,    34,     0,    35,     0,    36,   285,
-       0,    38,    39,   286,     0,     0,   287,   288,   289,   290,
-     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
-     341,     0,     0,     0,     0,     0,   342,    46,   297,   298,
-     299,   300,     2,   205,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,     0,     0,     0,   281,   282,    31,   283,     0,
+       0,     0,     0,     0,     0,   286,    36,     0,    37,     0,
+      38,   287,     0,    40,    41,   288,     0,     0,   289,   290,
+     291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   284,    34,     0,    35,     0,    36,
-     285,     0,   206,    39,   286,     0,     0,   287,   288,   289,
-     290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
+     297,     0,   343,     0,     0,     0,     0,     0,   344,    48,
+     299,   300,   301,   302,     2,   207,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+       0,     0,    28,    29,    30,     0,     0,     0,     0,   283,
+     284,    33,   285,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
-       0,   979,     0,     0,     0,     0,     0,   980,    46,   297,
-     298,   299,   300,     2,   205,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
-      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
+       0,     0,     0,     0,     0,     0,     0,     0,   286,    36,
+       0,    37,     0,    38,   287,     0,   208,    41,   288,     0,
+       0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
+     295,   296,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   297,     0,   981,     0,     0,     0,     0,
+       0,   982,    48,   299,   300,   301,   302,     2,   207,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
+       0,     0,   283,   284,    33,   285,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   284,    34,     0,    35,     0,
-      36,   285,     0,   206,    39,   286,     0,     0,   287,   288,
-     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
+       0,   286,    36,     0,    37,     0,    38,   287,     0,   208,
+      41,   288,     0,     0,   289,   290,   291,   292,   293,   294,
+      43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
+       0,     0,     0,     0,    47,    48,   299,   300,   301,   302,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
+      29,    30,    31,     0,     0,    32,     0,     0,    33,    34,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     295,     0,   376,     0,     0,     0,     0,     0,    45,    46,
-     297,   298,   299,   300,  -521,     0,     0,     1,     2,     3,
+       0,     0,     0,    35,     0,     0,    36,     0,    37,     0,
+      38,    39,     0,    40,    41,    42,     0,     0,     0,     0,
+       0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      45,     0,    46,     0,     0,     0,     0,     0,    47,    48,
+     206,     2,   207,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
+      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,     0,     0,    28,    29,    30,    36,     0,    37,     0,
+      38,    39,    33,   208,    41,    42,     0,     0,     0,     0,
+       0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      36,     0,     0,     0,     0,     0,     0,    40,    41,     0,
+      45,     0,   209,     0,     0,     0,     0,     0,    47,    48,
+       1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,  -298,     0,    28,
+      29,    30,    31,     0,     0,    32,     0,     0,    33,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
+      38,     0,     0,    40,    41,     0,     0,  -298,     1,     2,
+     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
+      31,     0,    46,    32,     0,     0,    33,     0,    47,    48,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    36,     0,    37,     0,    38,     0,
+       0,    40,    41,   206,     2,   207,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+       0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
+      46,    33,     0,     0,     0,     0,    47,    48,     0,  1143,
+       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
+       0,    37,     0,    38,     0,     0,   208,    41,     0,     0,
+       0,   283,   284,    33,   285,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     286,    36,     0,     0,     0,   209,   287,     0,     0,     0,
+     288,    47,    48,   289,   290,   291,   292,   293,   294,    43,
+      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   297,     0,   378,     0,     0,
+       0,     0,     0,  1144,    48,   299,   300,   301,   302,     2,
+     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
+       0,     0,     0,     0,     0,     0,    33,     0,     0,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
+       0,    28,    29,    30,    36,     0,    37,     0,    38,    39,
+      33,   208,    41,    42,     0,     0,     0,     0,     0,     0,
+       0,     0,    43,    44,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
+       0,     0,     0,     0,     0,    40,    41,     0,    45,     0,
+     209,     0,     0,     0,     0,     0,    47,    48,     2,   207,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
-      30,     0,     0,    31,    32,     0,     0,     0,     0,     0,
+      24,    25,    26,    27,   258,     0,    28,    29,    30,     0,
+      47,    48,     0,     0,     0,    33,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
-       0,    34,     0,    35,     0,    36,    37,     0,    38,    39,
-      40,     0,     0,     0,     0,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    43,     0,    44,     0,     0,
-       0,     0,     0,    45,    46,     1,     2,     3,     4,     5,
+       0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
+      40,    41,     0,     2,   207,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
+       0,    28,    29,    30,     0,     0,     0,     0,  -407,   670,
+      33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
+      37,     0,    38,     0,     0,    40,    41,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  1334,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   670,     0,     0,     0,     0,     0,
+      47,    48,     2,   207,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
+      28,    29,    30,     0,     0,     0,     0,     0,     0,    33,
+       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,     0,     0,    28,    29,    30,    36,     0,    37,
+       0,    38,     0,    33,    40,    41,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  1336,     0,
+       0,    36,     0,     0,     0,     0,     0,     0,    40,    41,
+       0,     0,     0,   670,     0,     0,     0,     0,     0,    47,
+      48,     2,   207,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    46,     0,    28,
+      29,    30,     0,    47,    48,     0,     0,     0,    33,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
+      38,     0,     0,   208,    41,     0,     2,   207,     4,     5,
        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
-       0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
-       0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
-       0,     0,     0,     0,     0,     0,     0,    41,    42,     0,
+      26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
+       0,     0,   271,    33,     0,     0,     0,     0,    47,    48,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    43,     0,    44,     0,     0,     0,  -525,
-       0,    45,    46,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
-      32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    36,     0,    37,     0,    38,     0,     0,    40,    41,
+       0,     2,   207,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
+      29,    30,     0,     0,     0,     0,     0,   670,    33,     0,
+       0,     0,     0,    47,    48,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    33,     0,     0,    34,     0,    35,
-       0,    36,    37,     0,    38,    39,    40,     0,     0,     0,
-       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
+      38,     0,     0,   208,    41,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
+       0,     0,     0,     0,   283,   284,    33,   285,     0,     0,
+       0,     0,   209,     0,     0,     0,     0,     0,    47,    48,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   286,    36,     0,     0,     0,     0,   287,
+       0,    40,    41,   288,     0,     0,   289,   290,   291,   292,
+     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
+     515,     0,     0,   172,     0,     0,    47,    48,   299,   300,
+     301,   302,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
+       0,   283,   284,    33,   285,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
-      46,     1,     2,   205,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,  -298,     0,    26,    27,
-      28,    29,     0,     0,    30,     0,     0,    31,     0,     0,
+     286,    36,     0,     0,     0,     0,   287,     0,    40,    41,
+     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
+      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   297,   -40,   298,     0,     0,
+       0,     0,     0,    47,    48,   299,   300,   301,   302,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
+       0,    28,    29,    30,     0,     0,     0,     0,   283,   284,
+      33,   285,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   286,    36,     0,
+       0,     0,     0,   287,     0,    40,    41,   288,     0,     0,
+     289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
+     296,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   297,     0,   298,     0,     0,     0,     0,     0,
+      47,    48,   299,   300,   301,   302,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
+      30,     0,     0,     0,     0,   283,   284,    33,   285,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
-       0,     0,    38,    39,     0,     0,  -298,   204,     2,   205,
+       0,     0,     0,     0,   286,    36,     0,     0,     0,     0,
+     287,     0,    40,    41,   288,     0,     0,   289,   290,   291,
+     292,   293,   294,    43,    44,     0,   295,   296,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   297,
+       0,   343,     0,     0,     0,     0,     0,    47,    48,   299,
+     300,   301,   302,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
+       0,     0,   283,   284,    33,   285,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   286,    36,     0,     0,     0,     0,   287,     0,    40,
+      41,   288,     0,     0,   289,   290,   291,   292,   293,   294,
+      43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
+       0,     0,     0,     0,    47,    48,   299,   300,   301,   302,
+     465,     2,   207,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
+      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+       0,     0,    28,    29,    30,     0,    36,     0,    37,     0,
+      38,    33,     0,    40,    41,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
+       0,     0,     0,     0,   112,     0,    40,    41,     0,     0,
+       0,     0,     0,     0,     0,    -3,     0,    43,    44,     0,
+       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,     0,    46,    28,    29,    30,     0,
+       0,    47,    48,     0,     0,    33,   677,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
+      29,    30,     0,    36,     0,     0,     0,     0,    33,   677,
+      40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    36,     0,     0,     0,
+       0,     0,     0,    40,    41,     0,     0,     0,     0,   678,
+       0,     0,     0,   679,     0,    47,    48,     0,     0,     0,
+       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,     0,   678,    28,    29,    30,  1072,     0,    47,    48,
+       0,     0,    33,   677,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
+      36,     0,     0,     0,     0,    33,     0,    40,    41,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
+     208,    41,     0,     0,     0,     0,   678,     0,     0,     0,
+    1199,     0,    47,    48,     0,     0,     0,     0,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,     0,   271,
+      28,    29,    30,     0,     0,    47,    48,     0,     0,    33,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+       0,     0,    28,    29,    30,     0,     0,    36,     0,     0,
+       0,    33,     0,     0,    40,    41,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
+       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
+       0,     0,     0,   339,     0,     0,     0,     0,     0,    47,
+      48,     0,     0,     0,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,     0,   678,    28,    29,    30,     0,
+       0,    47,    48,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
+      40,    41,     0,     2,   207,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
+       0,    28,    29,    30,     0,     0,     0,     0,     0,   670,
+      33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
+      37,     0,    38,     0,     0,    40,    41,   283,   284,     0,
+     285,  1023,     0,  1024,     0,     0,  1025,  1026,  1027,  1028,
+    1029,  1030,  1031,  1032,     0,     0,  1510,  1033,     0,     0,
+       0,  1034,  1035,     0,    35,     0,   286,     0,     0,     0,
+       0,     0,  1036,  -420,     0,     0,   288,     0,     0,   289,
+     290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   297,     0,   378,     0,     0,   172,     0,     0,    47,
+      48,   299,   300,   301,   302,     0,     0,   283,   284,  1037,
+     285,  1023,     0,  1024,  -134,     0,  1025,  1026,  1027,  1028,
+    1029,  1030,  1031,  1032,     0,     0,     0,  1033,     0,     0,
+       0,  1034,  1035,     0,    35,     0,   286,     0,     0,     0,
+       0,     0,  1036,     0,     0,     0,   288,     0,     0,   289,
+     290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   297,     0,   378,     0,     0,   172,     0,     0,    47,
+      48,   299,   300,   301,   302,     0,     0,     0,     0,  1037,
+       0,     0,     0,     0,  -134,     2,   207,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
+       0,     0,    33,     0,   283,   284,     0,   285,  1023,     0,
+    1024,  1382,  1383,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
+    1032,     0,     0,  1510,  1033,     0,     0,     0,  1034,  1035,
+      36,    35,    37,   286,    38,     0,     0,    40,    41,  1036,
+       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
+     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
+       0,  1293,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
+     378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
+     301,   302,     0,     0,   283,   284,  1037,   285,  1023,     0,
+    1024,  1382,  1383,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
+    1032,     0,     0,     0,  1033,     0,     0,     0,  1034,  1035,
+       0,    35,     0,   286,     0,     0,     0,     0,     0,  1036,
+       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
+     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
+     378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
+     301,   302,     0,     0,   283,   284,  1037,   285,  1023,     0,
+    1024,     0,     0,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
+    1032,     0,     0,     0,  1033,     0,     0,     0,  1034,  1035,
+       0,    35,     0,   286,     0,     0,     0,     0,     0,  1036,
+       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
+     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
+       0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
+     378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
+     301,   302,   286,     0,     0,     0,  1037,     0,   633,     0,
+     141,   142,   288,     0,     0,   289,   290,   291,   292,   293,
+     294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
+       0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   297,     0,   634,
+       0,   635,   379,     0,     0,    47,    48,   299,   300,   301,
+     302,   286,     0,     0,     0,     0,     0,   287,     0,     0,
+       0,   288,     0,     0,   289,   290,   291,   292,   293,   294,
+      43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
+       0,   283,   284,     0,   285,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
+       0,   379,     0,     0,    47,    48,   299,   300,   301,   302,
+     286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
+     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
+      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
+     283,   284,     0,   285,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   297,     0,   378,     0,     0,
+       0,     0,   750,    47,    48,   299,   300,   301,   302,   286,
+       0,     0,     0,     0,     0,   287,     0,     0,     0,   288,
+       0,     0,   289,   290,   291,   292,   293,   294,    43,    44,
+       0,   295,   296,     0,     0,     0,     0,     0,     0,   283,
+     284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   297,     0,   378,     0,     0,   958,
+       0,     0,    47,    48,   299,   300,   301,   302,   286,     0,
+       0,     0,     0,     0,   287,     0,     0,     0,   288,     0,
+       0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
+     295,   296,     0,     0,     0,     0,     0,     0,   283,   284,
+       0,   285,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   297,     0,   378,     0,     0,     0,     0,
+       0,    47,    48,   299,   300,   301,   302,   286,     0,     0,
+       0,     0,     0,   287,     0,     0,     0,   288,     0,     0,
+     289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
+     296,     0,     0,     0,     0,     0,     0,   283,   284,     0,
+     285,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   504,     0,   378,     0,     0,     0,     0,     0,
+      47,    48,   299,   300,   301,   302,   286,     0,     0,     0,
+       0,     0,   287,     0,     0,     0,   288,     0,     0,   289,
+     290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
+       0,     0,     0,     0,     0,     0,   283,   284,     0,   285,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   509,     0,   378,     0,     0,     0,     0,     0,    47,
+      48,   299,   300,   301,   302,   286,     0,     0,     0,     0,
+       0,   287,     0,     0,     0,   288,     0,     0,   289,   290,
+     291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
+       0,     0,     0,     0,     0,   283,   284,     0,   285,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     512,     0,   378,     0,     0,     0,     0,     0,    47,    48,
+     299,   300,   301,   302,   286,     0,     0,     0,     0,     0,
+     287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
+     292,   293,   294,    43,    44,     0,   295,   296,     0,     0,
+       0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   297,
+       0,   378,     0,     0,     0,     0,     0,   701,    48,   299,
+     300,   301,   302,   286,     0,     0,     0,     0,     0,   287,
+       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
+     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
+     378,     0,     0,     0,     0,     0,   344,    48,   299,   300,
+     301,   302,     2,   207,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
+       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,     0,     0,    28,    29,    30,    36,     0,    37,
+       0,    38,    39,    33,   175,   176,    42,     0,     0,     0,
+       0,     0,     0,     0,     0,    43,    44,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    36,     0,     0,     0,     0,   112,     0,    40,    41,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
+      44,   206,     2,   207,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
+      28,    29,    30,     0,     0,     0,     0,     0,     0,    33,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    36,     0,    37,
+       0,    38,     0,     0,   208,    41,   465,     2,   207,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    36,     0,    37,     0,    38,     0,     0,    40,
+      41,     2,   207,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
+      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
+      38,     0,     0,   208,    41,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
+     483,   484,   485,     0,     0,     0,    33,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
+      29,    30,     0,     0,    36,     0,     0,     0,    33,     0,
+       0,    40,    41,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    36,     0,     0,     0,
+       0,     0,     0,   208,    41
+};
+
+#define yypact_value_is_default(yystate) \
+  ((yystate) == (-1267))
+
+#define yytable_value_is_error(yytable_value) \
+  YYID (0)
+
+static const yytype_int16 yycheck[] =
+{
+       0,     1,   186,   186,   532,    45,    45,     0,   186,    45,
+       1,   519,     0,   186,   186,   240,   186,   205,   186,   742,
+     742,     0,   511,     0,   118,   742,   188,   490,   639,   595,
+     862,   494,  1022,   615,    34,   220,   349,     1,   597,   595,
+    1303,    34,   282,   349,   685,    45,    34,   169,   170,    45,
+     598,    51,   595,   727,   568,    34,   604,    34,    51,   425,
+     426,     0,   417,   480,  1005,    65,    74,    30,    68,    83,
+     297,    71,    65,   597,    66,    68,    34,    45,    71,    41,
+      71,   436,   266,   266,   187,   595,   113,    51,   266,   444,
+    1004,  1005,   595,   266,   266,    34,   266,   595,   266,   595,
+     262,   263,     0,     1,   688,    46,    47,   107,   202,   630,
+       0,  1112,    65,   107,    74,   115,    45,    80,   118,   119,
+       0,   113,   629,   630,   645,    41,   492,   108,   136,    68,
+     111,    41,    41,   257,   968,   364,    34,   599,   645,   368,
+    1403,   603,    41,   107,    34,   511,   186,   186,   148,   149,
+     186,   115,  1382,   115,    34,    99,   149,   157,   158,    51,
+      74,   161,   624,   157,   267,    45,   628,    89,   161,   892,
+     892,    51,   680,    71,    11,   892,   136,    41,   119,   345,
+     486,  1015,   703,   136,   148,    65,   186,   187,    68,   133,
+     186,    71,    59,   157,   187,   117,   703,   116,   425,   426,
+      83,   711,   202,   113,   113,   115,   115,   121,   711,   575,
+     210,   100,   629,   630,   113,   711,   115,   210,   186,     0,
+       1,  1487,   222,   115,   409,  1455,   266,   266,   645,   222,
+     266,  1232,   115,  1234,  1235,   801,   113,   126,   219,   113,
+     240,   108,   206,   663,   111,   801,   210,   888,  1514,   113,
+     862,   115,   252,    34,   813,   803,   148,   186,   801,   252,
+     260,   135,   502,  1204,   252,   265,   266,   267,   114,   149,
+     113,   785,   272,   252,   267,   252,   240,   504,   257,   187,
+    1270,   161,   509,   222,   597,   512,   703,    68,   134,   813,
+      71,   801,   273,   417,   252,  1034,  1035,   297,   801,   280,
+     911,   395,   405,   801,   114,   801,   186,   187,   272,   893,
+     310,   275,   436,   252,   480,   462,   118,  1258,   210,   674,
+     444,   738,    46,    47,   134,    53,   326,    46,    47,   423,
+     210,   331,   229,   297,    51,   429,   111,   120,   331,   566,
+     100,   341,   222,  1257,  1258,   345,   310,   341,   240,   349,
+     350,   248,   219,   919,   252,   939,   585,  1031,  1190,   267,
+     135,   781,   252,   919,   364,    74,   126,   257,   368,  1108,
+     114,   791,   252,   835,     3,   478,   919,   341,    87,    88,
+     272,   345,   802,     3,   365,   113,   266,  1437,   369,    74,
+     134,   120,    57,   120,   118,   395,   920,   626,   115,   118,
+     364,   983,    87,    88,   368,   405,   273,   136,   462,  1458,
+    1022,   350,   405,   280,    74,  1464,    76,    77,   310,   659,
+     113,   114,  1472,   423,  1474,   425,   426,    87,    88,   429,
+     115,   431,    94,    95,    99,  1484,  1426,  1378,   417,     0,
+    1489,   222,    74,  1433,   992,   993,   954,     0,    41,   615,
+     113,   331,   452,   345,   620,    87,    88,   436,   118,   120,
+     135,   425,   426,   925,  1378,   444,   929,   129,   130,   349,
+     470,   252,   116,   113,   891,   136,   120,   966,   478,  1313,
+     480,   348,   482,   115,   114,   478,   486,   649,   452,   482,
+     730,   114,   492,   210,   482,  1485,  1107,   405,   365,   120,
+     813,   465,   369,   482,   504,   482,   506,   813,   113,   509,
+     132,   511,   512,   135,  1098,   136,   663,   120,   640,   519,
+     113,   120,   115,   523,  1487,   405,   490,   417,   492,   194,
+     494,   134,   471,   425,   426,   134,  1370,  1371,   123,   124,
+     504,   120,   506,   482,  1507,   509,   436,   511,   512,   113,
+     674,  1514,   217,   647,   444,   272,  1080,   136,  1066,   113,
+     114,   115,   227,  1071,   115,   794,   117,   567,   568,   113,
+     478,   115,   738,  1157,  1158,   575,   700,   680,  1190,   113,
+     297,  1001,  1002,   134,   482,   585,   586,  1004,   120,   589,
+     480,   120,   482,   310,   120,   595,  1270,   597,   586,   862,
+     492,   120,   482,   113,   136,   115,   486,   136,   134,   663,
+      74,   575,    76,    77,    78,   615,   113,   136,   924,   511,
+     620,   585,   622,    87,    88,   120,   626,   120,   113,   629,
+     630,   113,   297,   115,   781,   616,  1056,  1057,   114,   121,
+     122,   136,   114,   136,   791,   645,   121,   647,   120,   113,
+     631,   615,   127,   128,  1386,   802,   620,   116,  1270,    74,
+     120,   120,   626,   644,   849,     4,     5,     6,     7,     8,
+       9,  1345,    87,    88,   120,   120,   136,   677,   617,   114,
+     680,   120,   114,   575,   869,    10,    11,    12,    13,    14,
+     136,   136,   116,   114,   114,   674,   120,   136,   113,   120,
+     115,   482,   120,   703,   704,   705,   931,   113,   892,   892,
+    1127,   711,   712,   677,   892,   595,    41,   597,   136,   892,
+     892,   700,   892,   615,   892,   891,   113,   781,   620,   119,
+     114,   113,    71,   855,    73,   452,   120,   791,   738,   136,
+     114,   114,   742,   743,    69,   726,   120,   120,   802,   616,
+    1482,   715,   691,    66,   114,  1487,  1430,   114,  1432,  1287,
+     120,   114,  1025,   120,   631,   113,   705,   120,  1491,  1491,
+     113,   113,   680,   115,  1491,  1507,   441,   644,   136,   121,
+     122,  1365,  1514,   118,   674,   785,   116,   504,    83,   506,
+     120,   894,   509,   114,   794,   512,   796,   136,  1382,   120,
+     680,   801,   467,   118,   897,   114,   899,   113,   996,   115,
+     700,   120,  1486,   813,  1426,   121,   122,   983,   114,  1239,
+     113,  1433,   115,   114,   120,   136,  1246,  1247,  1248,   120,
+     794,   711,   712,     4,     5,     6,     7,     8,     9,   504,
+    1257,   116,     3,   113,   509,   120,   136,   512,   738,    10,
+      11,    12,    13,    14,  1001,  1002,  1096,   796,   118,   726,
+    1100,  1101,   862,    74,    35,    76,    77,     0,     1,   114,
+    1454,  1455,   114,  1485,   862,   120,    87,    88,   120,   113,
+      41,   115,   114,   862,   884,   504,   113,   506,   120,  1309,
+     509,   891,   892,   512,   894,  1017,   884,   114,    31,    32,
+      71,    34,    73,   120,   115,   114,   906,   113,    69,  1056,
+    1057,   120,    45,   113,   114,   115,   114,    83,    51,   919,
+     920,   801,   120,   862,   924,  1096,    59,  1190,   114,  1100,
+     930,   931,    65,   813,   120,    68,    92,    93,    71,   930,
+     119,   120,   906,  1170,  1171,   122,  1173,  1001,  1002,    96,
+      97,    84,    85,  1180,   954,  1182,   113,   114,   115,  1467,
+     677,  1127,   131,  1066,   862,   929,   930,   931,  1071,   113,
+     114,   115,   862,   132,  1214,   108,   114,   115,   111,    74,
+       3,    76,    77,   983,    98,   118,   894,    10,    11,    12,
+      13,    14,    87,    88,  1088,    60,    61,   662,    60,    61,
+      62,   891,  1056,  1057,  1004,  1005,   671,   113,  1516,   115,
+     675,   113,   892,   115,   894,   115,   149,    74,    41,   983,
+     119,   120,  1022,  1286,    81,    46,    47,    84,   161,    86,
+      87,    88,   930,   113,  1022,   115,  1113,  1114,  1204,   931,
+     551,   552,    72,  1022,   924,    75,    69,   986,    78,   113,
+      80,   115,   113,   186,   187,  1202,   116,    87,   115,   114,
+      74,  1061,   116,   113,  1304,   115,  1066,    81,  1308,   202,
+      84,  1071,    86,    87,    88,   114,  1339,   210,   285,  1342,
+    1080,   862,   114,  1022,   553,   554,   219,   114,  1088,   222,
+     114,   983,  1239,   559,   560,   114,   229,  1061,   116,  1246,
+    1247,  1248,   115,   310,   311,     4,     5,     6,     7,     8,
+       9,   244,   118,   120,  1341,   248,   118,    74,   135,   252,
+     253,    78,   118,  1386,  1022,   135,   113,  1127,  1391,   114,
+      87,    88,  1022,   266,   267,   114,   116,   134,   345,   116,
+     273,   116,   134,     3,   134,    31,   120,   280,  1202,   930,
+      10,    11,    12,    13,    14,   114,   113,  1420,  1066,   114,
+     118,   113,  1309,  1071,   121,   122,   119,  1407,  1168,  1169,
+     114,   119,    71,   380,    73,   120,   119,   114,  1169,   114,
+     134,    41,   120,   213,   114,  1239,  1066,   136,   114,   906,
+    1190,  1071,  1246,  1247,  1248,   114,   114,   120,   331,   114,
+     114,   114,  1190,   114,  1204,   114,   114,   114,  1208,    69,
+     114,  1190,   114,     0,     1,   348,   349,  1208,   114,   114,
+     114,   886,    10,    11,    12,    13,    14,   119,    31,  1168,
+     135,   114,   365,   134,   114,   120,   369,  1127,   116,   116,
+     114,  1022,  1505,   114,  1208,   120,   379,    34,  1511,   114,
+     280,  1190,   134,    41,   113,  1309,   120,  1257,  1258,  1522,
+     118,   114,   395,  1526,    51,  1265,   114,  1361,   114,    85,
+    1270,  1169,   405,    89,    90,    91,  1501,   555,   556,   557,
+     558,    69,  1270,   120,    71,   114,   114,   120,   120,   114,
+     423,  1270,  1190,   113,   113,   113,   429,   113,   113,   115,
+    1190,   117,   118,  1303,   113,   136,   119,  1491,  1491,   114,
+    1208,   134,  1303,  1491,  1204,   114,   114,   119,  1491,  1491,
+     107,  1491,   352,  1491,   354,   113,  1265,   115,   132,   119,
+     116,  1270,   465,   121,   122,   118,   136,   470,   114,  1303,
+     120,   548,   549,   550,  1061,   478,   116,   116,   114,   482,
+     114,   116,   114,   486,     1,   116,   489,   116,   491,   116,
+     116,  1361,   149,    74,   116,    76,    77,    49,  1033,   136,
+     157,   158,  1270,  1467,   114,   119,    87,    88,  1378,  1360,
+    1270,    74,   136,    76,    77,    78,   136,  1168,  1169,  1492,
+     136,   136,   119,   526,    87,    88,   134,   114,   531,   688,
+     187,   119,   113,  1403,   116,  1303,    85,   118,   116,  1190,
+     440,   116,  1403,  1516,   116,   202,   116,   116,   205,   206,
+     113,   116,   115,   210,   114,   114,  1426,  1208,   121,   122,
+     113,    62,   113,  1433,   114,  1435,   113,  1437,  1426,  1403,
+     114,   134,   118,   113,   231,  1433,   579,  1426,   235,   136,
+     237,  1491,  1491,   116,  1433,  1491,   116,   114,   116,   246,
+     114,   100,   595,   100,   597,   252,   119,  1467,   113,   113,
+     257,  1435,  1472,  1437,  1474,   136,   114,   120,   114,   114,
+     267,   114,    44,   616,  1265,  1485,   134,  1426,   275,  1270,
+     779,  1491,  1492,  1360,  1433,     0,   136,  1485,   631,  1492,
+     114,  1501,   635,   114,   136,  1403,  1485,   100,  1472,   100,
+    1474,   644,   136,   646,   647,   648,  1516,   114,   136,   114,
+     116,   136,  1303,  1516,   114,   114,   136,   119,  1426,    34,
+      10,    11,    12,    13,    14,  1433,  1426,  1501,   116,   116,
+     113,  1037,   749,  1433,   119,   119,  1485,   680,   136,   114,
+     114,   684,   136,   686,   341,   114,    51,   690,   345,   114,
+     561,    41,   851,   562,   351,   698,    71,   565,   563,   963,
+      65,   564,  1190,    68,  1455,  1347,    71,   364,   711,   712,
+    1526,   368,  1280,  1101,  1492,  1308,  1433,  1485,   677,    69,
+    1052,   677,  1071,   726,   899,  1485,   690,   907,   579,    74,
+     855,    76,    77,    78,   893,   641,   253,   958,  1516,  1501,
+     715,  1491,    87,    88,  1279,    74,  1208,    76,    77,    78,
+     927,   482,  1403,    74,    -1,    76,    77,    78,    87,    88,
+     417,   567,    -1,   113,   726,   115,    87,    88,   113,   567,
+     115,   121,   122,   567,   431,  1426,   121,   122,    -1,   436,
+     939,    -1,  1433,   158,   149,    -1,    -1,   444,    -1,    -1,
+      -1,    -1,   113,    -1,   115,    -1,   161,    -1,   801,    -1,
+     121,   122,    -1,    -1,    -1,   462,    -1,    -1,   465,    -1,
+     813,    -1,   971,    -1,    -1,    10,    11,    12,    13,    14,
+      -1,    68,   187,   480,    -1,   482,   726,    -1,    -1,    -1,
+      77,    -1,    -1,   490,  1485,    -1,    -1,   494,    10,    11,
+      12,    13,    14,    -1,    -1,   210,    41,    -1,  1435,    -1,
+    1437,    74,   855,    76,    77,    -1,   231,   222,   861,    -1,
+    1019,    -1,    -1,    -1,    87,    88,   523,    -1,    -1,    41,
+      -1,    -1,   119,    -1,    69,    -1,    -1,   252,    -1,    74,
+      -1,    -1,   257,    78,    -1,  1472,    -1,  1474,    -1,   892,
+     113,   894,    87,    88,    -1,   118,    -1,    69,   901,  1434,
+      -1,  1436,    -1,    74,    -1,    -1,   983,    -1,    -1,    -1,
+      81,   568,    -1,    84,   161,    86,    87,    88,   113,    -1,
+      74,   924,    76,    77,    78,    -1,   121,   122,   585,   586,
+      -1,    -1,    -1,    87,    88,    -1,  1471,    -1,  1473,  1098,
+     597,   113,   945,   115,   115,  1022,    -1,    -1,   465,   121,
+     122,    -1,    -1,    -1,    -1,   958,    -1,     0,   615,   113,
+      -1,   964,    -1,   620,    -1,   968,   331,   121,   122,   626,
+      -1,    -1,   629,   630,    -1,   222,   351,    -1,    -1,    -1,
+    1515,    -1,  1517,    -1,    -1,    -1,    -1,    -1,   645,    -1,
+      74,    34,    76,    77,    78,  1530,  1531,    74,  1157,  1158,
+      -1,    78,    -1,    87,    88,    -1,   663,    -1,    -1,   526,
+      87,    88,  1015,   260,   531,    -1,    -1,   674,   265,    -1,
+      85,    68,    -1,    -1,    89,    90,    91,    -1,    71,   113,
+      -1,    -1,    -1,   280,    -1,    -1,   113,    84,   115,    -1,
+     405,    -1,   417,   700,   121,   122,   703,    -1,   113,  1052,
+     115,    -1,   117,   118,    -1,   712,   431,    -1,   715,    -1,
+      -1,   436,   579,  1066,    -1,    -1,    -1,    -1,  1071,   444,
+      74,    -1,   119,    -1,    -1,    -1,    -1,    81,    -1,    -1,
+      84,   738,    86,    87,    88,  1088,   743,   462,    -1,    -1,
+      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   350,    74,   480,    -1,   482,    78,  1112,
+      -1,   115,    -1,    -1,   161,   158,    -1,    87,    88,    -1,
+      -1,    41,    -1,    -1,   781,    -1,    -1,    -1,    -1,   646,
+      -1,   648,    -1,    -1,   791,    68,    -1,   794,    -1,    -1,
+     797,    -1,    -1,   113,    -1,   802,    -1,    -1,   523,    69,
+      -1,   121,   122,    -1,    74,   812,    76,    77,    78,    -1,
+      74,  1164,    76,    77,    78,    -1,    -1,    87,    88,    -1,
+      -1,    -1,    -1,    87,    88,   222,    -1,    -1,    -1,    -1,
+      -1,   698,    -1,   430,    -1,    -1,   119,    -1,    -1,    -1,
+      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,   446,
+      -1,   121,   122,    -1,    -1,   862,  1365,    -1,    -1,   252,
+      -1,   586,    -1,   260,   257,    -1,    -1,    -1,   265,    -1,
+      -1,    -1,    -1,  1382,   471,    -1,    -1,   884,   161,  1232,
+      -1,  1234,  1235,    -1,   891,    -1,    -1,   894,    10,    11,
+      12,    13,    14,    -1,    -1,   190,    74,    -1,    76,    77,
+      78,    -1,   197,    -1,   629,   630,    -1,    -1,    -1,    87,
+      88,    -1,    -1,   920,    -1,    -1,    -1,    -1,    -1,    41,
+     645,    -1,   929,   930,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     0,    -1,   113,    -1,   115,   663,   222,
+      -1,    -1,    -1,   121,   122,  1454,  1455,    69,    -1,   674,
+      -1,    -1,    74,   350,    76,    77,    78,    -1,   351,    -1,
+    1313,    -1,    -1,    -1,    -1,    87,    88,    34,    -1,    -1,
+      -1,    -1,    -1,    -1,   269,   700,   983,   260,   703,    -1,
+      -1,    -1,   265,    -1,    -1,    -1,    -1,    -1,    -1,   996,
+      -1,   113,   589,   115,  1001,  1002,    -1,  1004,  1005,   121,
+     122,    -1,    -1,    -1,    71,    -1,    -1,  1360,  1361,    -1,
+      -1,    -1,    -1,   738,    -1,  1022,    -1,  1370,  1371,    -1,
+     617,    -1,    -1,    -1,   417,   622,    -1,    -1,    -1,    -1,
+      -1,   326,    74,   430,    76,    77,    78,    -1,   431,   334,
+      -1,    -1,   337,   436,    -1,    87,    88,    -1,    -1,  1056,
+    1057,   444,    -1,    -1,    -1,  1408,   781,    10,    11,    12,
+      13,    14,    -1,    -1,    -1,    -1,   791,   350,    -1,   462,
+      -1,   113,   797,    -1,   471,    -1,    -1,   802,   945,   121,
+     122,    -1,    -1,    -1,    -1,    -1,    -1,   480,    41,   482,
+      -1,   158,    -1,    -1,   691,    -1,    -1,   964,    -1,     0,
+       1,   968,   397,    -1,    -1,    -1,   401,    -1,   705,    -1,
+      -1,    -1,    -1,    -1,  1467,  1468,    69,    -1,    -1,    -1,
+    1127,    74,    -1,    32,  1477,    78,    -1,    -1,    -1,   726,
+     523,    -1,    -1,    34,    87,    88,    -1,   862,  1491,  1492,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   430,  1015,    -1,
+      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,   884,
+     113,    -1,  1169,  1516,    -1,    -1,   891,    68,   121,   122,
+      71,    -1,    28,    29,    30,    84,    85,    -1,    -1,    -1,
+      -1,    41,   477,  1190,    -1,   252,    -1,    -1,   471,    -1,
+     257,    -1,   589,   586,    -1,  1202,    -1,  1204,    -1,   796,
+      -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    -1,    74,     0,    76,    77,    78,    -1,
+     617,    -1,    -1,    -1,    -1,   622,    -1,    87,    88,    -1,
+      -1,    -1,  1239,    -1,    -1,    -1,   629,   630,    -1,  1246,
+    1247,  1248,    -1,    -1,   100,  1112,   102,    -1,    -1,    34,
+    1257,  1258,   645,   113,    -1,   115,    -1,   158,    -1,    -1,
+      -1,   121,   122,  1270,    -1,    -1,    -1,    -1,    -1,    -1,
+     663,    -1,   567,   568,    -1,    -1,  1001,  1002,    -1,  1004,
+    1005,   674,    -1,    -1,   351,    -1,    71,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   691,    -1,  1303,  1022,    -1,    -1,
+      -1,    -1,  1309,    -1,    -1,    -1,   589,   700,   705,    -1,
+     703,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   222,    -1,    -1,    -1,    -1,   182,    -1,    -1,    -1,
+      -1,  1056,  1057,    -1,   617,   244,   192,   193,    -1,   622,
+      -1,   197,    -1,   199,   200,   738,    -1,    -1,    -1,    -1,
+     417,   252,    -1,    -1,    -1,   650,    -1,    -1,    -1,   654,
+      -1,    -1,    -1,    -1,   431,  1232,    -1,  1234,  1235,   436,
+      -1,  1378,    -1,   158,    -1,    -1,    -1,   444,    -1,    -1,
+      -1,    10,    11,    12,    13,    14,    -1,    -1,   781,   986,
+      -1,    -1,    -1,    -1,    -1,   462,  1403,    -1,   791,   796,
+      -1,    -1,  1127,    -1,   797,    -1,    -1,    -1,   691,   802,
+      -1,    -1,    41,   480,    -1,   482,    -1,    -1,    -1,  1426,
+      -1,    -1,   705,    -1,    -1,    -1,  1433,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
+      69,    -1,    -1,    -1,  1169,    74,  1313,    76,    77,    78,
+      -1,    -1,    -1,    -1,    -1,    -1,   523,    -1,    87,    88,
+      -1,   135,    -1,    -1,    -1,  1190,    -1,   252,    -1,   862,
+     379,    -1,   257,    -1,    -1,    -1,    -1,  1202,  1485,  1204,
+      -1,    -1,    -1,    -1,   113,  1492,    -1,    -1,    -1,    -1,
+     785,   884,   121,   122,    -1,    -1,    -1,    -1,   891,    -1,
+      -1,    -1,    -1,  1370,  1371,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   796,  1239,    -1,    -1,    -1,    -1,   586,
+      -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,    -1,    -1,
+     431,    -1,  1257,  1258,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1408,    -1,    -1,    -1,  1270,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   629,   630,    -1,    -1,   351,    -1,    -1,    -1,
+      -1,  1168,    -1,    -1,    -1,    -1,    -1,    -1,   645,    -1,
+     489,   482,   491,    -1,  1309,    -1,    -1,    -1,    -1,   986,
+      -1,    -1,    -1,    -1,    -1,    -1,   663,    -1,    -1,    -1,
+      -1,  1468,    -1,   898,    -1,    -1,    -1,   674,  1001,  1002,
+    1477,  1004,  1005,    -1,    -1,    -1,    -1,    -1,    -1,    55,
+      -1,    57,   523,    -1,    60,    61,    62,    -1,    64,  1022,
+      -1,    -1,   417,   700,    -1,    -1,   703,    -1,    -1,    -1,
+      -1,    -1,    78,    -1,    -1,    -1,   431,    -1,    -1,    -1,
+      -1,   436,    -1,  1378,    90,    91,    -1,    -1,    -1,   444,
+      -1,    -1,    -1,  1056,  1057,    -1,    -1,    -1,  1265,    -1,
+      -1,   738,    -1,    -1,    -1,    -1,    -1,   462,   973,    -1,
+      -1,    -1,    -1,    -1,    -1,   586,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   989,   480,    -1,   482,    -1,    -1,
+      -1,  1426,    -1,   986,    -1,    -1,    -1,    -1,  1433,    -1,
+      -1,    -1,    -1,    -1,   781,   571,   572,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   791,    -1,   635,    -1,   629,   630,
+     797,    -1,    -1,    -1,  1127,   802,    -1,    -1,   523,    -1,
+      -1,    -1,   598,    -1,   645,   601,   602,    -1,   604,    -1,
+     606,   607,    -1,    -1,    -1,   611,   612,    -1,    -1,    -1,
+    1485,    -1,    -1,    10,    11,    12,    13,    14,    -1,  1064,
+      -1,  1168,    -1,    -1,    -1,   684,  1169,   686,    -1,    -1,
+      -1,   690,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    41,   862,    -1,  1190,    -1,    -1,
+      -1,   586,   703,    -1,    -1,    -1,    -1,    -1,  1103,  1202,
+      -1,  1204,    -1,    -1,    -1,    -1,    -1,   884,    -1,    -1,
+      -1,    -1,    69,    -1,   891,    -1,    -1,    74,    -1,    76,
+      77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      87,    88,    -1,    -1,   629,   630,  1239,    -1,    -1,    -1,
+      -1,    -1,    -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,
+     645,    -1,    -1,    -1,  1257,  1258,   113,    -1,  1265,    -1,
+      -1,    -1,    -1,    -1,   121,   122,    -1,  1270,   663,    -1,
+      -1,    -1,    -1,    -1,    -1,  1168,    -1,    -1,    -1,   674,
+      -1,   747,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   344,    -1,
+     346,    -1,    -1,    -1,    -1,   700,  1309,    -1,   703,    -1,
+      -1,   357,   358,    -1,    -1,    28,    29,    30,    -1,    -1,
+      -1,    -1,    -1,    -1,  1001,  1002,    -1,  1004,  1005,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   855,    -1,    -1,    -1,
+      -1,    -1,   861,   738,    -1,  1022,    -1,    -1,    -1,    -1,
+      -1,   862,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,  1265,   884,    -1,  1378,    -1,    -1,    -1,  1056,
+    1057,    -1,   901,    41,    -1,    -1,   781,   100,    -1,   102,
+      -1,    -1,    -1,    -1,    -1,    -1,   791,    -1,    -1,    -1,
+      -1,    -1,   797,    -1,    -1,    -1,    -1,   802,    -1,    -1,
+      -1,    69,    -1,    -1,   127,    -1,    -1,    -1,    -1,   930,
+      -1,    -1,    -1,  1426,    -1,    -1,    -1,    -1,    -1,    -1,
+    1433,    -1,    -1,    -1,    -1,    -1,    -1,   903,    -1,   958,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   862,     7,   182,
+      -1,    10,    11,    12,    13,    14,    -1,   190,    -1,   192,
+     193,    -1,  1485,    -1,   197,    -1,   199,   200,    -1,   884,
+      -1,    -1,  1169,  1004,  1005,    -1,   891,    -1,    -1,    -1,
+      39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1022,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1202,    -1,  1204,    -1,    68,
+      69,    -1,    -1,  1052,    -1,    74,    -1,    -1,    -1,    78,
+      -1,    -1,    81,    82,    83,    84,    85,    86,    87,    88,
+      -1,    90,    91,    -1,    -1,    -1,   269,    -1,    -1,    -1,
+      -1,    -1,  1239,    -1,    -1,    -1,    -1,    -1,    -1,  1246,
+    1247,  1248,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,
+    1257,  1258,   121,   122,   123,   124,   125,   126,    -1,    -1,
+      -1,    -1,  1058,  1270,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    51,    -1,    -1,    -1,    -1,  1001,  1002,    -1,  1004,
+    1005,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1022,    -1,    -1,
+      -1,    -1,  1309,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    39,    40,    -1,    42,  1164,   692,    -1,   694,    -1,
+      -1,    -1,    -1,    -1,    -1,   701,   702,  1168,  1169,    -1,
+     706,  1056,  1057,    -1,    -1,   115,    -1,    -1,    -1,   119,
+      68,    -1,    -1,   719,    -1,    -1,    74,    -1,   724,  1190,
+      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
+      88,    -1,    90,    91,    -1,    -1,    -1,  1208,   148,    -1,
+      -1,  1378,    -1,    -1,    -1,   751,    -1,    -1,   158,    -1,
+      -1,   161,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
+    1186,    -1,    -1,   121,   122,   123,   124,   125,   126,    -1,
+      -1,    -1,  1127,    -1,    -1,    -1,   134,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1257,  1258,    -1,  1426,
+      -1,    -1,    -1,    -1,  1265,    -1,  1433,    -1,    -1,  1270,
+     210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   222,    -1,  1169,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     240,    -1,  1303,    -1,    -1,  1190,    -1,    -1,   844,    -1,
+     846,   847,   848,    -1,    -1,    -1,    -1,  1202,  1485,  1204,
+      -1,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,   865,
+      -1,    -1,   272,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1239,    -1,    -1,   297,    -1,    -1,
+      -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,   571,   572,
+     310,    -1,  1257,  1258,    -1,    -1,    -1,  1378,    -1,    -1,
+      -1,    -1,   918,    -1,    -1,  1270,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   598,    -1,    -1,   601,   602,
+      -1,   604,  1403,   606,   607,   345,    -1,    -1,   611,   612,
+     350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1309,  1426,   962,    -1,    -1,    -1,
+      -1,   967,  1433,    -1,    -1,    -1,   972,    -1,    -1,    -1,
+      -1,   977,    -1,    -1,    -1,    -1,   982,    -1,   984,   985,
+      -1,    -1,   988,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   997,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1013,  1014,    -1,
+      -1,    -1,    -1,    -1,  1485,   425,   426,    -1,    -1,    -1,
+      -1,   431,    -1,  1378,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1039,    -1,    -1,  1042,    -1,    -1,    -1,
+      -1,    -1,   452,    -1,    -1,    -1,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+     480,  1426,    -1,    -1,   747,   748,    -1,    41,  1433,  1085,
+      -1,    -1,   492,    -1,    -1,  1091,  1092,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   504,    -1,   506,    -1,    -1,   509,
+      -1,   511,   512,    -1,  1110,    69,    -1,    -1,    -1,  1115,
+      -1,    -1,    -1,   523,  1120,    -1,    80,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1131,    -1,    -1,    -1,    -1,
+    1485,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1144,    -1,
+    1146,  1147,  1148,  1149,    -1,    -1,    -1,    68,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1161,    77,  1163,    79,    -1,
+      81,  1167,    -1,    -1,    -1,   575,    -1,    88,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   586,    -1,    -1,   589,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1195,
+    1196,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,
+     121,   122,   123,    -1,    -1,   615,    -1,    -1,    -1,    -1,
+     620,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   629,
+     630,    -1,    -1,    -1,    -1,   898,    -1,    -1,    -1,    -1,
+     903,    -1,    -1,    -1,    -1,   645,    -1,    -1,    -1,    -1,
+     161,    -1,    -1,  1249,  1250,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1259,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   677,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
+      32,    33,    34,   703,    -1,   705,    -1,    -1,    -1,    41,
+      -1,   222,    -1,   224,   225,   226,    -1,    46,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1321,    -1,  1323,  1324,  1325,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,   738,  1335,
+      -1,    -1,    74,    -1,    76,    77,    78,  1343,    -1,   260,
+      -1,    -1,    -1,    -1,   265,    87,    88,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,   280,
+      -1,    -1,  1368,  1369,   103,    -1,    -1,    -1,    -1,    -1,
+      -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
+     122,   148,    -1,    -1,    -1,  1058,   796,    -1,    -1,    -1,
+      -1,   158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   169,   170,    -1,    -1,    -1,  1413,  1414,    -1,
+     331,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1426,    -1,    -1,    -1,    -1,    -1,    -1,  1433,    -1,   350,
+      -1,    -1,    -1,   172,   355,   356,    -1,    -1,    -1,    -1,
+      -1,    -1,   363,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   195,    -1,    -1,    -1,
+    1466,    -1,    -1,    -1,  1470,    -1,    -1,    -1,    -1,    -1,
+     209,    -1,    -1,   240,   884,    -1,    -1,    -1,    -1,   218,
+      -1,   891,    -1,    -1,   405,    -1,    -1,    -1,    -1,   228,
+      -1,    -1,  1498,    -1,  1500,    -1,   906,   264,    -1,    -1,
+      -1,    -1,   423,    -1,    -1,    -1,    -1,   428,    -1,   430,
+      -1,    -1,    -1,  1186,   253,    -1,    -1,    -1,    -1,   258,
+      -1,   931,  1528,  1529,    -1,   446,    -1,    -1,   449,   450,
+    1536,  1537,   271,    -1,    -1,    -1,   457,    -1,   277,    -1,
+     279,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     471,    -1,    -1,    -1,    -1,    -1,    -1,   478,    -1,   298,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   983,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,  1004,  1005,    32,    33,    34,    -1,
+     339,    -1,    -1,    -1,   343,    41,    -1,    -1,    -1,    -1,
+      -1,    -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   371,    69,    -1,    -1,   375,   376,    -1,   378,
+      76,    77,    -1,    -1,    -1,    -1,   385,   386,    -1,   388,
+     389,  1061,   391,    -1,   393,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   589,    -1,
+      -1,   410,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,
+      -1,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   617,    -1,    -1,    -1,
+      -1,   622,    -1,   442,    -1,   472,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1127,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   468,
+      -1,    -1,    -1,    -1,    -1,   474,    -1,    -1,    -1,    -1,
+     479,    -1,    -1,    -1,   511,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   523,    -1,  1168,    -1,
+      -1,    -1,   529,    -1,    -1,   532,   157,   158,    -1,    -1,
+     691,    -1,    -1,    -1,    -1,    -1,   515,    -1,   545,    -1,
+      -1,    -1,    -1,    -1,   705,    -1,    -1,    -1,    -1,    -1,
+      -1,   530,    -1,    -1,  1204,    -1,    -1,    -1,    -1,   190,
+      -1,    -1,    -1,    -1,    -1,   726,   197,    -1,   575,    -1,
+      -1,    -1,    -1,    -1,    -1,   582,    -1,    -1,    -1,   586,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   567,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   576,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1257,  1258,    -1,
+      -1,    -1,    -1,    -1,    -1,  1265,    -1,   596,    -1,    -1,
+      -1,    -1,    -1,    -1,   785,   632,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   640,    -1,   796,    -1,    -1,   269,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   813,    -1,    -1,   634,    -1,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
+      -1,   670,    -1,    -1,    -1,   326,    -1,    -1,    -1,   678,
+      -1,    -1,    -1,   334,   335,    -1,   337,   338,    -1,   716,
+      -1,    -1,    -1,    -1,   345,    -1,    69,    -1,   349,    -1,
+      -1,    74,    -1,    76,    77,    78,    -1,    -1,  1378,    -1,
+     709,   738,    -1,   740,    87,    88,    -1,   368,    -1,    -1,
+      -1,   720,   721,   750,    -1,    -1,    -1,    -1,    -1,   756,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     113,    -1,   115,   924,    -1,    -1,   397,    -1,   121,   122,
+     401,    -1,    -1,   752,    -1,    -1,    -1,    -1,   757,    -1,
+      -1,    -1,    -1,    -1,    -1,  1435,    -1,  1437,    -1,   796,
+     797,    -1,    -1,   954,    -1,    -1,    -1,    -1,    -1,    -1,
+     431,    -1,    -1,    -1,    -1,   812,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1472,    -1,  1474,   986,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   997,    -1,   817,    -1,
+      -1,    -1,    -1,    -1,   851,   824,   477,    -1,   855,   480,
+      -1,  1501,    -1,    -1,    -1,    -1,    -1,    -1,   837,    -1,
+     839,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   852,    -1,    -1,    -1,   884,    -1,   858,
+      -1,    -1,    -1,    -1,   891,    -1,    -1,    -1,   519,    -1,
+      -1,   870,   523,    -1,   873,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1066,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1080,
+      -1,    -1,    -1,    -1,   931,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   567,   568,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   958,    -1,    -1,   585,   586,   963,    -1,    -1,   966,
+      -1,    -1,    -1,    -1,   595,    -1,   597,   598,    -1,    -1,
+      -1,    -1,    -1,   604,    -1,    -1,    -1,    -1,    -1,   986,
+      -1,    -1,    -1,   614,   615,    -1,    -1,    -1,    -1,   620,
+     997,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   629,   630,
+      -1,    -1,   981,    -1,    -1,    -1,    -1,  1168,    -1,    -1,
+    1017,    -1,  1019,    -1,   645,    -1,    -1,    -1,    -1,   650,
+     651,    -1,    -1,   654,   655,    -1,    -1,  1034,  1035,   283,
+     661,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   295,   296,    -1,    -1,    -1,    -1,  1054,    -1,   680,
+      -1,    -1,    -1,    -1,    -1,    -1,   310,   311,    -1,    -1,
+      -1,    -1,    -1,  1042,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   703,   704,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   345,    -1,    -1,    -1,    -1,    -1,  1076,    -1,    -1,
+      -1,  1108,  1081,    -1,  1265,    -1,    -1,   738,    -1,    -1,
+    1089,   742,   743,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1127,    -1,    -1,    -1,    -1,    -1,   380,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1142,  1143,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1123,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   785,  1134,    -1,    -1,  1137,    -1,
+    1139,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     801,    -1,   803,    -1,    -1,  1154,  1155,    -1,    -1,    -1,
+      -1,    -1,   813,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1174,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
+      35,  1220,    -1,    38,    -1,    -1,    41,    42,    -1,  1228,
+      -1,    -1,    -1,   884,    -1,    -1,    -1,    -1,    -1,    -1,
+     891,   892,    -1,   894,    -1,    -1,    -1,   898,    -1,    -1,
+      -1,    66,    -1,    -1,    69,    -1,    71,  1284,    73,    74,
+    1287,    76,    77,    78,    -1,    -1,    -1,    -1,   919,   920,
+      -1,    -1,    87,    88,   548,   549,   550,   551,   552,   553,
+     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
+     564,   565,    -1,    -1,    -1,    -1,    -1,    -1,   113,  1298,
+     115,  1300,    -1,   954,    -1,    -1,   121,   122,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1316,    -1,  1318,
+      -1,    -1,   973,   974,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   983,    -1,  1333,  1516,    -1,    -1,   989,   990,
+      -1,   992,   993,   994,    -1,    -1,    -1,    -1,    -1,  1348,
+    1349,    -1,    -1,  1004,  1005,    -1,    -1,    -1,    -1,    -1,
+    1359,    -1,    -1,  1362,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,  1384,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1393,    41,    -1,  1396,    -1,  1398,
+    1399,  1400,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1064,   688,  1066,    -1,    -1,    -1,    -1,
+    1071,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,  1080,
+      -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,    -1,
+    1439,    -1,  1441,    -1,  1443,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1103,  1104,    -1,    -1,    -1,    -1,    -1,    -1,
+    1459,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1501,   749,  1127,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    -1,   779,    32,    33,    34,    35,
+      -1,    -1,    38,    39,    40,    41,    42,    43,    -1,    45,
+      -1,    -1,    48,    49,    50,    51,    52,    53,    54,    55,
+      -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,
+      66,    -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,
+      76,    77,    78,  1204,    -1,    81,    82,    83,    84,    85,
+      86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
+      -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,   125,
+     126,    -1,    -1,    -1,    -1,   131,  1257,  1258,    -1,    -1,
+     136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   893,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
+      33,    34,    35,    -1,    -1,    38,    39,    40,    41,    42,
+      -1,    -1,    -1,    -1,    -1,   939,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    68,    69,    -1,    71,    -1,
+      73,    74,    -1,    76,    77,    78,    -1,   971,    81,    82,
+      83,    84,    85,    86,    87,    88,    -1,    90,    91,   983,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1378,    -1,    -1,
+     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
+     123,   124,   125,   126,    -1,    -1,    -1,    -1,  1022,    -1,
+      -1,    -1,    -1,   136,    -1,    -1,    -1,    -1,    -1,     3,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
-       0,    44,     0,    31,     0,     0,     0,    45,    46,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    34,     0,    35,     0,    36,     0,     0,   206,    39,
-       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
-       0,     0,     0,     0,     0,    31,     0,   207,     0,     0,
-       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    34,     0,    35,     0,    36,    37,     0,
-     206,    39,    40,     0,     0,     0,     0,     0,     0,     0,
-       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    43,     0,   207,
-       0,     0,     0,     0,     0,    45,    46,     2,   205,     4,
+      24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
+      34,    35,    -1,    -1,    38,    -1,    -1,    41,    42,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1467,    -1,    -1,    -1,
+      -1,    -1,    66,    -1,  1098,    69,    -1,    71,    -1,    73,
+      74,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,
+    1491,  1492,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1516,    -1,    -1,    -1,   113,
+      -1,   115,    -1,    -1,    -1,   119,    -1,   121,   122,    -1,
+      -1,    -1,    -1,  1157,  1158,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    -1,    -1,    32,    33,    34,    35,    -1,    -1,
+      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      68,    69,    -1,    71,    -1,    73,    74,    -1,    76,    77,
+      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
+      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
+      -1,    -1,    -1,   121,   122,   123,   124,   125,   126,    -1,
+      -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
+      39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+      69,    -1,    71,    -1,    73,    74,    -1,    76,    77,    78,
+      -1,  1365,    81,    82,    83,    84,    85,    86,    87,    88,
+      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,  1382,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,
+      -1,   120,   121,   122,   123,   124,   125,   126,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
+      -1,    -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,
+    1454,  1455,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,
+      76,    77,    78,    -1,    -1,    81,    82,    83,    84,    85,
+      86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
+      -1,    -1,    -1,    -1,   120,   121,   122,   123,   124,   125,
+     126,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
+      33,    34,    -1,    -1,    -1,    -1,    39,    40,    41,    42,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    68,    69,    -1,    71,    -1,
+      73,    74,    -1,    76,    77,    78,    -1,    -1,    81,    82,
+      83,    84,    85,    86,    87,    88,    -1,    90,    91,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
+     123,   124,   125,   126,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    39,
+      40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,
+      -1,    71,    -1,    73,    74,    -1,    76,    77,    78,    -1,
+      -1,    81,    82,    83,    84,    85,    86,    87,    88,    -1,
+      90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,
+      -1,   121,   122,   123,   124,   125,   126,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
+      -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,    76,
+      77,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
+      87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
+      -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,   126,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
+      33,    34,    35,    -1,    -1,    38,    -1,    -1,    41,    42,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    66,    -1,    -1,    69,    -1,    71,    -1,
+      73,    74,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
+      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    -1,    -1,    32,    33,    34,    69,    -1,    71,    -1,
+      73,    74,    41,    76,    77,    78,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
+     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    -1,    32,
+      33,    34,    35,    -1,    -1,    38,    -1,    -1,    41,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
+      73,    -1,    -1,    76,    77,    -1,    -1,    80,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
-       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,    35,     0,    36,     0,     0,    38,    39,     2,
-     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
-       0,     0,     0,     0,    31,  -405,   668,     0,     0,     0,
-       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
-      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,  1332,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   668,     0,
-       0,     0,     0,     0,    45,    46,     2,   205,     4,     5,
+      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
+      35,    -1,   115,    38,    -1,    -1,    41,    -1,   121,   122,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    69,    -1,    71,    -1,    73,    -1,
+      -1,    76,    77,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
+     115,    41,    -1,    -1,    -1,    -1,   121,   122,    -1,     7,
+      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    71,    -1,    73,    -1,    -1,    76,    77,    -1,    -1,
+      -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      68,    69,    -1,    -1,    -1,   115,    74,    -1,    -1,    -1,
+      78,   121,   122,    81,    82,    83,    84,    85,    86,    87,
+      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
+      -1,    -1,    -1,   121,   122,   123,   124,   125,   126,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
+      -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
+      -1,    32,    33,    34,    69,    -1,    71,    -1,    73,    74,
+      41,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    -1,   113,    -1,
+     115,    -1,    -1,    -1,    -1,    -1,   121,   122,     4,     5,
        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
-       0,    31,     0,     0,     0,     8,     9,    10,    11,    12,
+      26,    27,    28,    29,   115,    -1,    32,    33,    34,    -1,
+     121,   122,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    69,    -1,    71,    -1,    73,    -1,    -1,
+      76,    77,    -1,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
+      -1,    32,    33,    34,    -1,    -1,    -1,    -1,   114,   115,
+      41,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
+      71,    -1,    73,    -1,    -1,    76,    77,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,
+     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
+      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
+      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    -1,    -1,    32,    33,    34,    69,    -1,    71,
+      -1,    73,    -1,    41,    76,    77,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,
+      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
+      -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
+     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
-       0,    35,     0,    36,    31,   675,    38,    39,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1334,     0,    34,     0,     0,     0,     0,     0,     0,    38,
-      39,     0,     0,     0,     0,   668,     0,     0,     0,     0,
-       0,    45,    46,     2,   205,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,   676,    26,
-      27,    28,   677,     0,    45,    46,     0,     0,    31,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
-      36,     0,     0,   206,    39,     2,   205,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
-      31,     0,   269,     0,     0,     0,     0,     0,    45,    46,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-      35,     0,    36,     0,     0,    38,    39,     2,   205,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
-       0,     0,    31,     0,   668,     0,     0,     0,     0,     0,
-      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,    35,     0,    36,     0,     0,   206,    39,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
-      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
-       0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
-       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   284,    34,     0,     0,     0,
-       0,   285,     0,    38,    39,   286,     0,     0,   287,   288,
-     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     295,     0,   513,     0,     0,   170,     0,     0,    45,    46,
-     297,   298,   299,   300,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
-       0,   281,   282,    31,   283,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
-     284,    34,     0,     0,    31,     0,   285,     0,    38,    39,
-     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
-      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,     0,     0,     0,   110,     0,    38,
-      39,     0,     0,     0,     0,   295,   -40,   296,     0,     0,
-      41,    42,     0,    45,    46,   297,   298,   299,   300,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,    44,    26,
-      27,    28,     0,     0,    45,    46,   281,   282,    31,   283,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,     0,     0,   284,    34,     0,     0,    31,
-     675,   285,     0,    38,    39,   286,     0,     0,   287,   288,
-     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
-       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
-       0,     0,     0,     0,    38,    39,     0,     0,     0,     0,
-     295,     0,   296,     0,     0,     0,     0,     0,    45,    46,
-     297,   298,   299,   300,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,   676,    26,    27,    28,  1070,     0,    45,
-      46,   281,   282,    31,   283,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
-     284,    34,     0,     0,    31,   675,   285,     0,    38,    39,
-     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
-      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
-      39,     0,     0,     0,     0,   295,     0,   341,     0,     0,
-       0,     0,     0,    45,    46,   297,   298,   299,   300,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,   676,    26,
-      27,    28,  1197,     0,    45,    46,   281,   282,    31,   283,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,     0,     0,   284,    34,     0,     0,    31,
-       0,   285,     0,    38,    39,   286,     0,     0,   287,   288,
-     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
-       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
-       0,     0,    37,     0,    38,    39,    40,     0,     0,     0,
-     295,     0,   376,     0,     0,    41,    42,     0,    45,    46,
-     297,   298,   299,   300,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
-      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
-      31,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,     0,     0,     0,     0,    34,     0,
-      31,     0,     0,    37,     0,   206,    39,    40,     0,     0,
-       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-       0,     0,     0,     0,     0,    38,    39,     0,     0,     0,
-       0,     0,    43,     0,   269,     0,     0,     0,     0,     0,
-      45,    46,     0,     0,     0,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,   256,    26,    27,    28,     0,     0,
-      45,    46,     0,     0,    31,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
-       0,     0,    34,     0,    31,     0,     0,     0,     0,    38,
-      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,     0,     0,     0,     0,     0,   206,
-      39,     0,     0,     0,     0,     0,     0,     0,    44,     0,
-       0,     0,     0,     0,    45,    46,     0,     0,     0,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,   269,    26,
-      27,    28,     0,     0,    45,    46,     0,     0,    31,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
-      27,    28,     0,     0,     0,     0,    34,     0,    31,     0,
-       0,     0,     0,    38,    39,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
-       0,     0,     0,    38,    39,     0,     0,     0,     0,     0,
-       0,     0,   337,     0,     0,     0,     0,     0,    45,    46,
-       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,   676,    26,    27,    28,     0,     0,    45,    46,
-       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
-       0,     0,   281,   282,     0,   283,  1021,     0,  1022,     0,
-       0,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,     0,
-       0,  1508,  1031,     0,     0,     0,  1032,  1033,     0,    33,
-       0,   284,     0,     0,     0,     0,   668,  1034,     0,     0,
-       0,   286,    45,    46,   287,   288,   289,   290,   291,   292,
-      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
-       0,   170,     0,     0,    45,    46,   297,   298,   299,   300,
-       0,     0,   281,   282,  1035,   283,  1021,     0,  1022,  -134,
-       0,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,     0,
-       0,     0,  1031,     0,     0,     0,  1032,  1033,     0,    33,
-       0,   284,     0,     0,     0,     0,     0,  1034,     0,     0,
-       0,   286,     0,     0,   287,   288,   289,   290,   291,   292,
-      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
-       0,   170,     0,     0,    45,    46,   297,   298,   299,   300,
-       0,     0,     0,     0,  1035,     0,     0,     0,     0,  -134,
-       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
-       0,     0,     0,     0,     0,    31,     0,   281,   282,     0,
-     283,  1021,     0,  1022,  1380,  1381,  1023,  1024,  1025,  1026,
-    1027,  1028,  1029,  1030,     0,     0,  1508,  1031,     0,     0,
-       0,  1032,  1033,    34,    33,    35,   284,    36,     0,     0,
-      38,    39,  1034,     0,     0,     0,   286,     0,     0,   287,
-     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
-       0,     0,     0,     0,  1291,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
-      46,   297,   298,   299,   300,     0,     0,   281,   282,  1035,
-     283,  1021,     0,  1022,  1380,  1381,  1023,  1024,  1025,  1026,
-    1027,  1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,
-       0,  1032,  1033,     0,    33,     0,   284,     0,     0,     0,
-       0,     0,  1034,     0,     0,     0,   286,     0,     0,   287,
-     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
-      46,   297,   298,   299,   300,     0,     0,   281,   282,  1035,
-     283,  1021,     0,  1022,     0,     0,  1023,  1024,  1025,  1026,
-    1027,  1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,
-       0,  1032,  1033,     0,    33,     0,   284,     0,     0,     0,
-       0,     0,  1034,     0,     0,     0,   286,     0,     0,   287,
-     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
-       0,     0,     0,     0,     0,     0,   281,   282,     0,   283,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
-      46,   297,   298,   299,   300,   284,     0,     0,     0,  1035,
-       0,   631,     0,   139,   140,   286,     0,     0,   287,   288,
-     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
-       0,     0,     0,     0,     0,   281,   282,     0,   283,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     295,     0,   632,     0,   633,   377,     0,     0,    45,    46,
-     297,   298,   299,   300,   284,     0,     0,     0,     0,     0,
-     285,     0,     0,     0,   286,     0,     0,   287,   288,   289,
-     290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
-       0,     0,     0,     0,   281,   282,     0,   283,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
-       0,   376,     0,     0,   377,     0,     0,    45,    46,   297,
-     298,   299,   300,   284,     0,     0,     0,     0,     0,   285,
-       0,     0,     0,   286,     0,     0,   287,   288,   289,   290,
-     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
-       0,     0,     0,   281,   282,     0,   283,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
-     376,     0,     0,     0,     0,   748,    45,    46,   297,   298,
-     299,   300,   284,     0,     0,     0,     0,     0,   285,     0,
-       0,     0,   286,     0,     0,   287,   288,   289,   290,   291,
-     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
-       0,     0,   281,   282,     0,   283,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   295,     0,   376,
-       0,     0,   956,     0,     0,    45,    46,   297,   298,   299,
-     300,   284,     0,     0,     0,     0,     0,   285,     0,     0,
-       0,   286,     0,     0,   287,   288,   289,   290,   291,   292,
-      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
-       0,   281,   282,     0,   283,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
-       0,     0,     0,     0,    45,    46,   297,   298,   299,   300,
-     284,     0,     0,     0,     0,     0,   285,     0,     0,     0,
-     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
-      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
-     281,   282,     0,   283,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   502,     0,   376,     0,     0,
-       0,     0,     0,    45,    46,   297,   298,   299,   300,   284,
-       0,     0,     0,     0,     0,   285,     0,     0,     0,   286,
-       0,     0,   287,   288,   289,   290,   291,   292,    41,    42,
-       0,   293,   294,     0,     0,     0,     0,     0,     0,   281,
-     282,     0,   283,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   507,     0,   376,     0,     0,     0,
-       0,     0,    45,    46,   297,   298,   299,   300,   284,     0,
-       0,     0,     0,     0,   285,     0,     0,     0,   286,     0,
-       0,   287,   288,   289,   290,   291,   292,    41,    42,     0,
-     293,   294,     0,     0,     0,     0,     0,     0,   281,   282,
-       0,   283,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   510,     0,   376,     0,     0,     0,     0,
-       0,    45,    46,   297,   298,   299,   300,   284,     0,     0,
-       0,     0,     0,   285,     0,     0,     0,   286,     0,     0,
-     287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
-     294,     0,     0,     0,     0,     0,     0,   281,   282,     0,
-     283,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   295,     0,   376,     0,     0,     0,     0,     0,
-     699,    46,   297,   298,   299,   300,   284,     0,     0,     0,
-       0,     0,   285,     0,     0,     0,   286,     0,     0,   287,
-     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   295,     0,   376,     0,     0,     0,     0,     0,   342,
-      46,   297,   298,   299,   300,     2,   205,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-      35,     0,    36,    37,     0,   173,   174,    40,     0,     0,
-       0,     0,     0,     0,     0,     0,    41,    42,   204,     2,
-     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
-       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,    35,     0,    36,     0,     0,   206,
-      39,   463,     2,   205,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
-       0,     0,    38,    39,     2,   205,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
-       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,   481,   482,   483,    34,     0,    35,
-      31,    36,     0,     0,   206,    39,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-       0,     0,     0,     0,     0,    38,    39
-};
-
-#define yypact_value_is_default(yystate) \
-  ((yystate) == (-1333))
-
-#define yytable_value_is_error(yytable_value) \
-  YYID (0)
-
-static const yytype_int16 yycheck[] =
-{
-       0,     1,    43,    43,    43,   238,   184,     0,   116,   203,
-       1,   184,     0,   530,   184,   218,     0,   184,   184,   509,
-     740,     0,   167,   168,   740,   740,   184,   184,   860,   613,
-     595,    32,    32,   593,   725,   637,   347,     1,    43,    32,
-     460,   593,   517,    43,    32,   478,   488,   593,    32,    49,
-     492,   347,   566,    32,   105,   186,    49,   595,  1301,    39,
-     185,     0,   966,    63,   423,   424,    66,    81,    43,    69,
-      63,   593,   683,    66,   593,   362,    69,   593,    69,   366,
-    1002,  1003,    28,   593,    97,    49,   264,  1020,  1003,    43,
-      39,   264,   200,    32,   264,    81,    49,   264,   264,   627,
-     628,    51,     0,     1,   155,   105,   264,   264,   118,  1013,
-       0,  1110,   109,   113,    72,   643,   116,   117,   131,    81,
-       0,   343,  1032,  1033,   134,   106,   112,    66,   109,   260,
-     261,   490,    78,   113,    32,    63,   133,   111,    44,    45,
-     265,   105,    32,   184,   184,   184,   146,   147,    39,   113,
-     509,   113,    32,  1485,   147,   155,   156,    49,  1401,   159,
-     113,   111,   111,    43,   113,    64,   159,   860,   280,    49,
-     890,    69,   628,   701,   890,   890,   134,   111,   415,   184,
-    1512,   185,   146,    63,   184,   185,    66,   643,   484,    69,
-     709,   155,   185,   709,   627,   628,  1106,   434,   255,   709,
-     200,   686,  1485,   678,   407,   442,   134,   596,   208,   184,
-     643,   117,   111,   602,   573,   208,   111,   112,   113,    39,
-     220,   113,  1505,   264,   264,   264,    39,   220,  1380,  1512,
-     184,  1230,    72,  1232,  1233,    72,   217,   111,   238,   799,
-     204,   661,    44,    45,   208,   701,   811,   799,    39,   250,
-     250,    39,    11,   799,   146,   208,   478,   250,   258,   133,
-      98,   265,   250,   263,   264,   265,   250,   147,   701,   783,
-     270,   250,   265,   811,   238,   886,   255,   799,   403,   159,
-     799,   220,   119,   799,   595,   393,   124,  1202,   339,   799,
-     271,   111,    98,   113,   134,   295,   583,   278,   111,   118,
-     113,  1453,    87,   736,   184,   185,   270,   909,   308,   273,
-     111,   250,  1384,   421,   116,   134,   208,   270,   124,   427,
-     111,   114,   113,   111,   324,   113,  1435,  1020,   208,   329,
-     115,   295,   116,  1255,  1256,  1268,   329,   624,  1029,   339,
-     220,  1256,   295,   343,   308,   227,   238,   347,   348,   111,
-     112,   476,   250,   918,   112,   308,  1188,   917,   415,   779,
-     250,  1470,   362,  1472,   246,   255,   366,    44,    45,   789,
-     250,   917,     0,     1,   132,   339,    72,   434,   270,   343,
-     800,   112,   363,   118,   264,   442,   367,   118,   500,    85,
-      86,   613,     3,   393,  1456,   917,   618,   981,   362,   403,
-    1462,   597,   366,   403,    32,   601,   891,  1311,  1480,   348,
-     403,    55,   801,  1485,   118,   111,   308,   113,    30,     3,
-    1482,   421,   112,   423,   424,  1487,   622,   427,   132,   429,
-     626,   118,    72,  1505,    72,   672,   415,   112,    66,   116,
-    1512,    69,   132,     0,   118,    85,    86,    85,    86,   329,
-     450,   343,   937,    97,  1376,   434,   889,   132,   132,   423,
-     424,  1376,     0,   442,  1368,  1369,   118,   347,   468,   111,
-      82,    83,   476,   113,   964,   113,   476,   952,   478,   295,
-     480,   111,   134,   476,   484,   927,   450,   480,   121,   122,
-     490,  1424,   480,   638,   118,  1188,   480,   450,  1431,   463,
-     811,   480,   502,  1105,   504,   792,   112,   507,   132,   509,
-     510,   118,   118,  1078,   736,   811,   647,   517,   118,   118,
-     113,   521,   115,   403,   488,   415,   490,   134,   492,   114,
-     469,   423,   424,   118,   134,   134,   112,   645,   502,   132,
-     504,   480,   118,   507,   434,   509,   510,   133,   192,   502,
-    1483,   504,   442,   678,   507,   111,   118,   510,     4,     5,
-       6,     7,     8,     9,   130,   565,   566,   133,   112,  1002,
-     118,   215,   134,   573,   118,  1268,   111,  1268,   113,   999,
-    1000,   225,   480,   583,   584,   112,   134,   587,   478,  1064,
-     480,   118,   220,   593,  1069,   595,   584,   112,   490,   111,
-     480,   990,   991,   118,   484,   118,   112,   423,   424,   573,
-     114,  1096,   118,   613,   118,   672,   728,   509,   618,   583,
-     620,   134,   250,    69,   624,    71,   922,   627,   628,   111,
-     242,   118,   112,   614,  1054,  1055,   111,   833,   118,   118,
-     118,   698,   118,   643,   847,   645,   118,   134,   629,   613,
-     112,   295,  1343,   114,   618,   134,   134,   118,   134,    72,
-     624,   642,   134,    76,   867,   114,    72,   889,    49,   118,
-    1155,  1156,    85,    86,   678,   675,   615,   119,   678,    85,
-      86,   573,    63,   125,   126,    66,   502,   111,    69,   112,
-     112,   507,  1125,   672,   510,   118,   929,   111,   111,   113,
-     113,   701,   702,   703,    90,    91,   119,   120,   853,   709,
-     710,   675,   890,   593,   114,   595,   112,   890,   118,   698,
-     890,   613,   675,   890,   890,   112,   618,   923,   112,   112,
-     112,  1424,   890,   890,   118,   118,   736,  1428,  1431,  1430,
-     740,   741,   111,   724,   113,   112,   112,   112,   564,   713,
-     689,   118,   118,     4,     5,     6,     7,     8,     9,   981,
-     111,    92,    93,     1,   703,   377,   147,   892,  1285,  1489,
-     112,   112,   111,  1489,  1489,   112,   118,   118,   159,   117,
-    1200,   118,   672,   783,     4,     5,     6,     7,     8,     9,
-    1483,   111,   792,  1484,   794,   439,   127,   128,   678,   799,
-     994,   112,    72,   111,   185,   113,  1094,   118,   698,    79,
-    1098,   811,    82,    33,    84,    85,    86,  1237,    69,   134,
-      71,   465,  1255,   111,  1244,  1245,  1246,   208,   792,   709,
-     710,    72,   112,    74,    75,    76,    94,    95,   118,   220,
-      72,   112,    74,    75,    85,    86,   736,   118,   111,    69,
-     113,    71,   480,    85,    86,   794,   119,   120,   502,   111,
-     860,   113,   111,   507,    66,    64,   510,     0,     1,   111,
-    1015,   113,   860,   134,   111,   487,   113,   489,  1363,   111,
-      82,   860,   882,   134,   116,   112,   113,  1307,   892,   889,
-     890,   116,   892,   116,   882,  1380,    29,    30,    72,    32,
-      74,    75,   116,  1125,   904,   134,    57,   111,   112,   113,
-      43,    85,    86,    72,   111,   117,    49,   917,   918,   799,
-      79,   860,   922,    82,    57,    84,    85,    86,   928,   929,
-      63,   811,    72,    66,    74,    75,    69,   928,   134,  1064,
-     904,   111,   116,   113,  1069,    85,    86,    81,   329,    82,
-      83,   904,   952,   111,   113,   106,   111,   159,   109,   283,
-     117,   118,   860,   927,   928,   929,    81,  1452,  1453,   502,
-     860,   504,   120,   106,   507,   129,   109,   510,  1086,    96,
-    1202,   981,  1094,   116,   308,   309,  1098,  1099,   130,   111,
-    1465,   113,   111,   113,   113,   111,   112,   113,     3,   889,
-     119,   120,  1002,  1003,   114,    10,    11,    12,    13,    14,
-     890,   114,   892,   251,   147,   112,   660,   981,   220,   343,
-    1020,   633,   403,    58,    59,   669,   159,   117,   118,   673,
-     928,   895,  1020,   897,    39,    44,    45,   929,   112,  1514,
-     112,  1020,   922,   112,    72,   984,    74,    75,    76,  1111,
-    1112,   184,   185,   112,   378,   112,   258,    85,    86,  1059,
-    1064,   263,    67,   111,  1064,  1069,   217,   200,   114,  1069,
-     682,   111,   684,   113,   113,   208,   688,   118,  1078,   119,
-     120,  1020,   116,   111,   217,   113,  1086,   220,   133,   981,
-     116,   119,   120,   116,   227,  1059,   549,   550,    72,   111,
-    1212,   111,   112,   113,   132,    79,  1059,   114,    82,   242,
-      84,    85,    86,   246,    58,    59,    60,   250,   251,   133,
-     271,   112,  1020,   551,   552,  1125,   112,   278,   557,   558,
-    1020,   264,   265,     3,   553,   554,   555,   556,   271,   113,
-      10,    11,    12,    13,    14,   278,   348,     3,    10,    11,
-      12,    13,    14,   114,    10,    11,    12,    13,    14,   114,
-      72,   132,    74,    75,    76,   132,  1166,  1167,    72,    39,
-      74,    75,    76,    85,    86,   132,  1167,    39,   118,   860,
-      29,    85,    86,    39,  1064,   112,   112,   116,  1188,  1069,
-    1302,   112,   117,   117,  1306,   346,   329,    67,   117,   111,
-    1188,   113,  1202,   118,   111,    67,  1206,   119,   120,  1188,
-     112,    67,   363,   346,   347,  1206,   367,    10,    11,    12,
-      13,    14,   546,   547,   548,   463,   428,  1166,   134,   132,
-     363,   112,   860,   118,   367,  1125,   112,   112,   112,   112,
-     884,   853,  1206,   112,   377,   112,    39,   859,   112,  1188,
-     118,  1359,   112,   112,   112,  1255,  1256,   112,   112,   112,
-     393,   112,   112,  1263,   112,     0,  1499,   469,  1268,  1167,
-     403,   117,    29,   112,    67,   118,   133,   114,   114,   112,
-    1268,   112,   112,   118,   111,   132,   524,   899,   421,  1268,
-    1188,   529,    72,  1405,   427,   118,   116,    32,  1188,    79,
-     928,  1301,    82,   132,    84,    85,    86,   112,  1206,   112,
-    1301,  1489,  1202,   112,   118,   112,  1489,   112,   111,  1489,
-     113,   112,  1489,  1489,  1263,   111,   119,   120,   118,  1268,
-     463,  1489,  1489,   113,    69,   468,    72,  1301,   111,   577,
-      76,   118,  1023,   476,   956,   111,   111,   480,   111,    85,
-      86,   484,  1168,  1169,   487,  1171,   489,  1465,   132,  1359,
-     112,   117,  1178,   134,  1180,  1490,   112,   117,    72,   112,
-    1268,   130,    76,   117,   116,   111,  1376,  1358,  1268,   134,
-     114,    85,    86,   119,   120,   587,   112,  1031,   118,  1514,
-     114,   524,  1020,   114,   112,   112,   529,    47,   114,   114,
-     114,  1401,   112,  1301,   117,   114,   644,   111,   646,   114,
-    1401,   114,   134,   615,   134,   119,   120,   112,   620,     0,
-       1,   156,   134,   747,  1424,   117,    72,   134,    74,    75,
-     112,  1431,   134,  1433,   132,  1435,  1424,  1401,  1050,    85,
-      86,   117,   114,  1431,   577,  1424,    83,   114,  1489,  1489,
-    1489,    32,  1431,   114,   114,   114,   114,   112,   696,   112,
-     593,    60,   595,   614,   111,  1465,   114,   113,    49,  1433,
-    1470,  1435,  1472,   111,   116,   111,    98,   112,   629,   112,
-    1433,   614,  1435,  1483,   111,  1424,  1490,   689,    69,  1489,
-    1490,   642,  1431,   661,   229,  1483,   629,  1490,   114,  1499,
-     633,   703,   134,  1401,  1483,   114,  1470,  1188,  1472,   642,
-    1514,   644,   645,   646,  1514,   250,   112,  1470,   112,  1472,
-     255,  1514,   114,  1339,   105,    98,  1424,   111,   111,   134,
-     117,    42,   112,  1431,  1424,  1499,   112,   112,  1166,  1167,
-      72,  1431,    74,    75,  1483,   678,   112,   118,   134,   682,
-    1162,   684,   134,    85,    86,   688,    70,   112,   132,    73,
-    1188,   112,    76,   696,    78,    98,   147,    98,   112,   134,
-     134,    85,   112,   724,   155,   156,   709,   710,  1206,   111,
-     114,   134,   112,   112,   116,  1483,    72,   114,    74,    75,
-      76,   724,   794,  1483,   117,   114,   134,   134,   111,    85,
-      86,   117,   117,  1284,   185,   112,   112,  1499,   134,  1489,
-     112,   779,   112,   657,   349,  1035,   559,   562,   560,   200,
-     561,   789,   203,   204,   563,   111,   961,   208,  1188,  1453,
-    1345,  1524,   800,  1277,  1099,  1263,  1306,  1278,    66,  1431,
-    1268,    10,    11,    12,    13,    14,  1050,    75,   229,   686,
-     675,   675,   233,  1069,   235,   688,  1337,   981,   897,  1340,
-     905,   577,   956,   244,   853,   925,   799,   639,   480,   250,
-      39,   713,  1206,  1301,   255,   724,   565,   565,   811,   565,
-     415,    -1,    -1,    -1,   265,    -1,    -1,    -1,    -1,   117,
-      -1,    -1,   273,    -1,   429,    -1,  1020,   211,    67,   434,
-      -1,    -1,    -1,  1384,    -1,   943,    -1,   442,  1389,    -1,
-      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
-     853,    -1,    -1,    -1,   962,   460,   859,    -1,   966,    -1,
-      -1,   159,    -1,    -1,    -1,    -1,    -1,  1418,    -1,    39,
-     777,    -1,   111,   478,   113,   480,    -1,    -1,    -1,    -1,
-     119,   120,    -1,    -1,    -1,    -1,    -1,   890,   339,   892,
-      -1,    -1,   343,    -1,   278,    -1,   899,    67,   349,    -1,
-      -1,    -1,    -1,  1401,    83,  1013,    -1,    -1,    87,    88,
-      89,   362,   984,    -1,    -1,   366,   521,    -1,  1432,   922,
-    1434,    -1,   220,    -1,    -1,    -1,  1424,    -1,   188,    -1,
-      -1,    66,   111,  1431,   113,   195,   115,   116,    -1,    -1,
-     943,   111,   849,   113,    -1,    -1,    -1,    -1,    -1,   119,
-     120,    -1,  1503,   956,    -1,  1469,    -1,  1471,  1509,   962,
-     258,   999,  1000,   966,   415,   263,   350,    -1,   352,  1520,
-      -1,    -1,    -1,  1524,    -1,    -1,    -1,    -1,   429,   584,
-     278,    -1,   117,   434,   891,  1483,    -1,    -1,    -1,    -1,
-      -1,   442,    72,    -1,    74,    75,    76,    -1,    -1,  1513,
-      -1,  1515,  1110,    -1,    -1,    85,    86,   267,    -1,   460,
-    1013,    -1,   463,    -1,  1528,  1529,  1054,  1055,    -1,    -1,
-      -1,    -1,   627,   628,   159,    -1,    -1,   478,    -1,   480,
-     937,   111,    -1,   113,    -1,    -1,    -1,   488,   643,   119,
-     120,   492,    10,    11,    12,    13,    14,  1050,    -1,    -1,
-     348,    -1,    -1,    -1,   438,    -1,   661,    -1,    -1,    -1,
-      -1,  1064,   969,    -1,   324,    -1,  1069,   672,    -1,    -1,
-     521,    39,   332,    -1,    72,   335,    74,    75,    76,    -1,
-       0,    -1,    -1,  1086,    -1,   220,    -1,    85,    86,    -1,
-      -1,    -1,    -1,   698,  1166,    -1,   701,    -1,    -1,    67,
-      -1,    -1,    -1,    -1,    72,    -1,    -1,  1110,    76,    -1,
-    1017,    -1,    32,   111,    -1,   566,    -1,    85,    86,    -1,
-      -1,    -1,  1230,   258,  1232,  1233,    -1,    -1,   263,    -1,
-     428,   736,   583,   584,    -1,   395,    -1,    -1,    -1,   399,
-      -1,    -1,    -1,   111,   595,    -1,   444,    -1,    -1,    69,
-     460,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,  1162,
-      -1,    -1,   613,    -1,     0,    -1,    -1,   618,    -1,    -1,
-      -1,   469,    -1,   624,   779,    -1,   627,   628,    -1,    -1,
-      -1,    -1,    -1,    -1,   789,    -1,    -1,    -1,    -1,  1096,
-     795,  1263,   643,    -1,    -1,   800,    32,    -1,    72,  1237,
-      74,    75,    76,  1311,    -1,    -1,  1244,  1245,  1246,    -1,
-     661,    85,    86,   348,    -1,   475,    -1,    -1,    -1,    -1,
-      -1,   672,    -1,    -1,    -1,    -1,    -1,  1230,    -1,  1232,
-    1233,    -1,    -1,    69,    -1,    -1,   156,   111,    10,    11,
-      12,    13,    14,    -1,    -1,   119,   120,   698,  1155,  1156,
-     701,    -1,    -1,    -1,    -1,   860,    -1,    -1,    -1,   710,
-    1368,  1369,   713,    -1,    -1,    -1,    -1,    39,    -1,  1307,
-      10,    11,    12,    13,    14,    -1,    -1,   882,    -1,    -1,
-      -1,    -1,    -1,    -1,   889,   736,    -1,    -1,    -1,   587,
-     741,    -1,    -1,   428,    -1,    67,    -1,    -1,  1406,    39,
-      72,    -1,    74,    75,    76,   565,   566,    -1,  1311,    -1,
-      -1,    -1,    -1,    85,    86,    -1,    -1,   615,    -1,    -1,
-     156,    -1,   620,    -1,    -1,    -1,    -1,    67,   779,    -1,
-     250,    -1,    72,    -1,   469,   255,    76,  1358,   789,   111,
-     724,   792,    -1,    -1,   795,    85,    86,   119,   120,   800,
-      -1,   661,    -1,    -1,    -1,  1358,  1359,    -1,  1466,   810,
-      72,    -1,    74,    75,    76,  1368,  1369,  1475,     0,     1,
-      -1,   111,    -1,    85,    86,    -1,    -1,    -1,    -1,   119,
-     120,    -1,    10,    11,    12,    13,    14,    -1,   648,    -1,
-      -1,   689,   652,    -1,   999,  1000,    -1,  1002,  1003,   111,
-      32,   113,    -1,  1406,    -1,   703,    -1,   119,   120,   860,
-      -1,    39,    -1,    -1,   250,  1020,    -1,    -1,    -1,   255,
-      -1,    -1,    -1,    -1,    -1,    -1,   724,    -1,    -1,   349,
-      -1,   882,    -1,    -1,    66,    -1,    -1,    69,   889,    67,
-      -1,   892,    -1,    -1,    72,    -1,    74,    75,    76,  1054,
-    1055,    -1,   587,    -1,    -1,    -1,  1363,    85,    86,    -1,
-      -1,    -1,  1465,  1466,    -1,    -1,    -1,   918,    -1,   779,
-      -1,    -1,  1475,  1380,    -1,    -1,   927,   928,     0,   789,
-     615,    -1,    -1,   111,    -1,   620,  1489,  1490,    -1,    -1,
-     800,   119,   120,    -1,    -1,   415,   794,    -1,    -1,    10,
-      11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,   429,
-      32,  1514,    -1,   349,   434,    -1,    -1,    -1,    -1,    -1,
-    1125,    -1,   442,   783,   156,    -1,    -1,    -1,    39,    -1,
-     981,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     460,    -1,    -1,   994,    -1,  1452,  1453,    69,   999,  1000,
-      -1,  1002,  1003,    -1,   689,    -1,    67,    -1,   478,    -1,
-     480,    72,  1167,    74,    75,    76,    -1,    -1,   703,  1020,
-      -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    72,   415,
-      74,    75,    76,  1188,    -1,    -1,    -1,    -1,   220,    -1,
-      -1,    85,    86,   429,    -1,  1200,    -1,  1202,   434,    -1,
-     111,   521,   113,  1054,  1055,    -1,   442,    -1,   119,   120,
-      -1,    -1,    -1,    -1,    -1,    83,    -1,   111,   250,    87,
-      88,    89,    -1,    -1,   460,   119,   120,    -1,    -1,    -1,
-      -1,    -1,  1237,    -1,   156,    -1,   896,    -1,    -1,  1244,
-    1245,  1246,   478,   111,   480,   113,    -1,   115,   116,    -1,
-    1255,  1256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   794,
-      -1,    -1,    -1,  1268,   584,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1125,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   521,   984,    -1,    -1,   999,
-    1000,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,  1307,    -1,    -1,    -1,    -1,   627,   628,    -1,
-      -1,   971,    -1,    -1,    -1,    -1,  1167,    -1,    -1,    -1,
-      -1,    -1,    -1,   643,    -1,   133,    -1,   987,   250,    -1,
-      -1,    -1,    -1,   255,    -1,    -1,    -1,  1188,    -1,    -1,
-      -1,   661,    -1,    -1,  1054,  1055,    -1,    -1,   584,  1200,
-      -1,  1202,   672,    -1,    -1,  1206,    -1,    -1,    -1,    -1,
+      23,    24,    25,    26,    27,    28,    29,   115,    -1,    32,
+      33,    34,    -1,   121,   122,    -1,    -1,    -1,    41,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1376,    -1,    -1,    -1,    -1,    -1,    -1,   698,    -1,
-      -1,   701,    -1,    -1,    -1,    -1,  1237,    -1,    -1,    -1,
-      -1,   627,   628,  1244,  1245,  1246,    -1,   429,    -1,    -1,
-      -1,    -1,  1062,    -1,  1255,  1256,    -1,   643,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   736,  1268,    -1,  1424,
-      -1,    -1,    -1,    -1,    -1,   661,  1431,   349,    53,    -1,
-      55,    -1,    -1,    58,    59,    60,   672,    62,    -1,    -1,
-      -1,  1101,    -1,    -1,    -1,    -1,    -1,    -1,   480,   984,
-    1301,    76,    -1,    -1,    -1,    -1,  1307,    -1,    -1,   779,
-      -1,    -1,   698,    88,    89,   701,    -1,    -1,  1166,   789,
-      -1,    -1,    -1,    -1,    -1,   795,    -1,    -1,  1483,    -1,
-     800,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   521,
-    1200,    -1,    -1,   415,    -1,    -1,    -1,    -1,    -1,    -1,
-     736,    -1,    -1,    -1,    -1,    -1,    -1,   429,    -1,    -1,
-      -1,    -1,   434,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     442,    -1,    -1,    -1,    -1,  1376,    -1,  1237,    -1,    -1,
-      -1,    -1,    -1,    -1,  1244,  1245,  1246,    -1,   460,    -1,
-     860,    -1,    -1,   779,    -1,    -1,    -1,    -1,    -1,    -1,
-    1401,    -1,   584,   789,    -1,    -1,   478,    -1,   480,   795,
-      -1,    -1,   882,    -1,   800,  1263,    -1,    -1,    -1,   889,
-      -1,    -1,    -1,  1424,    -1,    -1,    -1,    -1,    -1,    -1,
-    1431,    -1,     7,    -1,    -1,    10,    11,    12,    13,    14,
-      -1,    -1,    -1,    -1,    -1,   627,   628,  1307,    -1,   521,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   643,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   860,    -1,    -1,    -1,    -1,    -1,
-      -1,  1166,  1483,    -1,    -1,    -1,    -1,    -1,    -1,  1490,
-      -1,    66,    67,    -1,    -1,    -1,   882,    72,    -1,    -1,
-      -1,    76,    -1,   889,    79,    80,    81,    82,    83,    84,
-      85,    86,   584,    88,    89,    -1,    -1,    -1,    -1,   701,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   999,
-    1000,    -1,  1002,  1003,    -1,    -1,   111,    -1,   113,    -1,
-      -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
-    1020,    -1,    -1,    -1,    -1,   627,   628,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   342,    -1,   344,
-      -1,   643,    -1,    10,    11,    12,    13,    14,  1263,    -1,
-     355,   356,    -1,    -1,  1054,  1055,    -1,    -1,    -1,   661,
-      -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
-     672,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   999,  1000,    -1,  1002,  1003,    -1,    -1,
-      -1,    -1,    -1,    -1,    39,    -1,   698,    -1,    -1,   701,
-      67,    -1,    -1,    -1,  1020,    72,    -1,    74,    75,    76,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,
-      -1,    -1,    67,    -1,    -1,  1125,    -1,    72,    -1,    74,
-      75,    76,    -1,    -1,   736,    -1,    -1,    -1,  1054,  1055,
-      85,    86,    -1,    -1,   111,    -1,   113,    -1,   860,    -1,
-      -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   111,  1167,   113,    -1,
-     882,    -1,    -1,    -1,   119,   120,    -1,   779,    37,    38,
-      -1,    40,    -1,    -1,    -1,    -1,    -1,   789,  1188,    -1,
-      -1,    -1,    -1,   795,    -1,    -1,    -1,    -1,   800,    -1,
-    1200,    -1,  1202,    -1,    -1,    -1,    -1,    66,    -1,  1125,
-      -1,    -1,    -1,    72,    -1,    -1,   928,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
-      89,    -1,    -1,    -1,    -1,    -1,    -1,  1237,    -1,    -1,
-      -1,    -1,    -1,    -1,  1244,  1245,  1246,    -1,    -1,    -1,
-      -1,  1167,   111,    -1,   113,  1255,  1256,    -1,   860,    -1,
-     119,   120,   121,   122,   123,   124,    -1,    -1,  1268,    -1,
-      -1,    -1,  1188,   132,    -1,    -1,    -1,    -1,    -1,    -1,
-     882,    -1,    -1,    -1,  1200,    -1,  1202,   889,    -1,    -1,
-    1002,  1003,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1307,  1020,    -1,
-      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
-      -1,  1237,    -1,    75,    -1,    77,    -1,    79,  1244,  1245,
-    1246,    -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,  1255,
-    1256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1268,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   117,    -1,   119,   120,   121,
-      -1,    -1,    -1,    -1,    -1,    -1,  1376,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   690,    -1,   692,    -1,    -1,
-      -1,  1307,    -1,    -1,   699,   700,    -1,   999,  1000,   704,
-    1002,  1003,    -1,    -1,    -1,    -1,    -1,   159,    -1,    -1,
-      -1,    -1,   717,    -1,    -1,    -1,    -1,   722,  1020,    -1,
-      -1,    -1,    -1,    -1,  1424,    -1,    -1,    -1,    -1,    -1,
-      -1,  1431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   749,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1054,  1055,  1166,  1167,    -1,    -1,    -1,    -1,
-    1376,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   220,    -1,
-     222,   223,   224,    -1,    -1,    -1,  1188,    -1,    -1,    -1,
-      -1,    -1,    -1,  1483,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1206,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   258,    -1,  1424,    -1,
-      -1,   263,    -1,    -1,    -1,  1431,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1125,    -1,    -1,   278,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   842,    -1,   844,
-     845,   846,    -1,  1255,  1256,    -1,    -1,    -1,    -1,    -1,
-      -1,  1263,    49,    -1,    -1,    -1,  1268,    -1,   863,    -1,
-      -1,    -1,    -1,    -1,    -1,  1167,    -1,  1483,    -1,    66,
-      -1,    -1,   877,    -1,    -1,    -1,    -1,   329,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1188,    -1,    -1,  1301,
-      -1,    -1,    -1,    -1,    -1,    -1,   348,    -1,  1200,    -1,
-    1202,   353,   354,    -1,    -1,    -1,    -1,    -1,    -1,   361,
-      -1,   916,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
-     117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1237,    -1,    -1,    -1,    -1,
-      -1,    -1,  1244,  1245,  1246,    -1,    -1,    -1,    -1,   146,
-      -1,   403,    -1,  1255,  1256,   960,    -1,    -1,    -1,   156,
-     965,    -1,   159,    -1,  1376,   970,  1268,    -1,    -1,   421,
-     975,    -1,    -1,    -1,   426,   980,   428,   982,   983,    -1,
-      -1,   986,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1401,
-     995,    -1,   444,    -1,    -1,   447,   448,    -1,    -1,    -1,
-      -1,    -1,    -1,   455,    -1,  1307,  1011,  1012,    -1,    -1,
-      -1,   208,  1424,    -1,    -1,    -1,    -1,   469,    -1,  1431,
-      -1,    -1,    -1,   220,   476,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1037,    -1,    -1,  1040,    -1,    -1,    -1,    -1,
-      -1,   238,    -1,    -1,    -1,    26,    27,    28,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,   263,    -1,    -1,    -1,
-      -1,  1483,    -1,   270,  1376,    -1,    -1,    39,  1083,    -1,
-      -1,    -1,    -1,    -1,  1089,  1090,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   295,    -1,
-      -1,    -1,    -1,  1108,    -1,    67,    -1,    -1,  1113,    -1,
-      -1,   308,    -1,  1118,    -1,    -1,    -1,    98,    -1,   100,
-      -1,    -1,  1424,    -1,  1129,    -1,    -1,    -1,    -1,  1431,
-      -1,    -1,    -1,    -1,    -1,   587,    -1,  1142,    -1,  1144,
-    1145,  1146,  1147,    -1,    -1,    -1,   343,    -1,    -1,    -1,
-      -1,   348,    -1,    -1,  1159,    -1,  1161,    -1,    -1,    -1,
-    1165,    -1,    -1,   615,    -1,    -1,    -1,    -1,   620,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1483,    -1,    -1,    -1,    -1,    -1,    -1,  1193,  1194,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   190,
-     191,    -1,    -1,    -1,   195,    -1,   197,   198,    -1,    -1,
-      44,    -1,    -1,    -1,    -1,    -1,   423,   424,    -1,    -1,
-      -1,    -1,   429,    -1,    -1,    -1,    -1,   689,    -1,    -1,
-      -1,    -1,  1247,  1248,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   703,  1257,   450,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
-      -1,    -1,   724,    -1,    -1,    -1,    -1,   101,    -1,    -1,
-      -1,   478,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   490,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   502,    -1,   504,    -1,    -1,
-     507,    -1,   509,   510,  1319,    -1,  1321,  1322,  1323,    -1,
-      -1,    -1,    -1,    -1,   521,    -1,    -1,    -1,  1333,    -1,
-      -1,   783,    -1,    -1,    -1,    -1,  1341,    -1,    -1,    -1,
-      -1,    -1,   794,    -1,    -1,    -1,   170,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   811,
-      -1,  1366,  1367,    -1,    -1,    -1,    -1,    -1,    -1,   193,
-      -1,    -1,    -1,    -1,    -1,    -1,   573,    -1,    -1,    -1,
-      -1,    -1,    -1,   207,    -1,    -1,    -1,   584,    -1,    -1,
-     587,    -1,   216,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   226,    -1,    -1,    -1,  1411,  1412,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   613,    -1,    -1,  1424,
-      -1,   618,    -1,    -1,    -1,    -1,  1431,   251,    -1,    -1,
-     627,   628,   256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   269,   643,    -1,    -1,    -1,
-      -1,   275,    -1,   277,    -1,    -1,    -1,    -1,    -1,  1464,
-      -1,    -1,    -1,  1468,    -1,    -1,    -1,    -1,    -1,    -1,
-     922,    -1,   296,    -1,    -1,    -1,    -1,    -1,   675,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1496,    -1,  1498,    -1,    -1,    -1,    -1,    -1,    -1,
-     952,    -1,    -1,    -1,   701,    -1,   703,    -1,    -1,    -1,
-      -1,    -1,    -1,   337,    -1,    -1,    -1,   341,    -1,    -1,
-      -1,  1526,  1527,    -1,    -1,    -1,    -1,    -1,    -1,  1534,
-    1535,    -1,   984,    -1,    -1,    -1,    -1,    -1,    -1,   736,
-      -1,    -1,    -1,   995,    -1,   369,    -1,    -1,    -1,   373,
-     374,    -1,   376,    -1,    -1,    -1,    -1,    -1,    -1,   383,
-     384,    -1,   386,   387,    -1,   389,    -1,   391,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   408,    -1,    -1,    -1,   569,   570,
-      -1,    -1,   416,    -1,    -1,    -1,    -1,   794,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1064,    -1,    -1,   596,   440,    -1,   599,   600,
-      -1,   602,    -1,   604,   605,    -1,  1078,    -1,   609,   610,
-      -1,    26,    27,    28,   281,    -1,   283,   284,    -1,    -1,
-      -1,    -1,   466,    -1,    -1,    -1,   293,   294,   472,    -1,
-      -1,    -1,    -1,   477,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   308,   309,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
-     156,    -1,    -1,    -1,    -1,   882,    -1,    -1,    -1,   513,
-      -1,    -1,   889,    -1,    -1,    -1,   343,    -1,    -1,    -1,
-      -1,    -1,    -1,    98,   528,   100,    -1,   904,    -1,    -1,
-      -1,    -1,   188,    -1,  1166,    -1,    -1,    -1,    -1,   195,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     125,   378,   929,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   565,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     574,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   745,   746,    -1,    -1,    -1,    -1,
-     594,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   981,   180,    -1,    -1,    -1,    -1,
-      -1,   267,    -1,   188,    -1,   190,   191,    -1,    -1,    -1,
-     195,    -1,   197,   198,    -1,  1002,  1003,    -1,   632,    -1,
-      -1,  1263,    -1,    -1,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,   668,    -1,    -1,    -1,   324,    -1,
-      39,    -1,   676,    -1,    -1,    -1,   332,   333,    -1,   335,
-     336,    -1,  1059,    -1,    -1,    -1,    -1,   343,    -1,    -1,
-      -1,   347,   267,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      69,    -1,    71,   707,    -1,    74,    75,    -1,    -1,    -1,
-     366,    -1,    -1,    -1,   718,   719,    -1,    -1,    -1,   546,
-     547,   548,   549,   550,   551,   552,   553,   554,   555,   556,
-     557,   558,   559,   560,   561,   562,   563,    -1,    -1,   395,
-     901,    -1,    -1,   399,    -1,    -1,   750,   116,  1125,    -1,
-      -1,   755,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    39,    -1,   146,    -1,    -1,    -1,    -1,    -1,  1166,
-      -1,    -1,    -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   167,   168,    -1,    -1,    -1,    67,
-      -1,   815,    -1,    -1,    -1,    -1,    -1,    -1,   822,   475,
-      78,    -1,   478,    -1,    -1,  1202,    -1,    -1,    -1,    -1,
-      -1,   835,    -1,   837,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   850,    -1,    -1,    -1,
-      -1,    -1,   856,    -1,    -1,    -1,    -1,    -1,    -1,   686,
-      -1,   517,    -1,    -1,   868,   521,    -1,   871,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   238,    -1,    -1,  1255,  1256,
-      -1,    -1,  1514,    -1,    -1,    -1,  1263,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1056,    -1,    -1,    -1,   262,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   565,
-     566,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     747,    -1,    -1,    -1,    -1,    -1,    -1,   583,   584,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   593,    -1,   595,
-     596,    -1,    -1,    -1,    -1,    -1,   602,    -1,    -1,    -1,
-     777,    -1,    -1,    -1,    -1,    -1,   612,   613,    -1,    -1,
-      -1,    -1,   618,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   627,   628,    -1,    -1,   979,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   643,    -1,    -1,
-      -1,    -1,   648,   649,   569,   570,   652,   653,    -1,  1376,
-      -1,    -1,    -1,   659,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   377,    -1,    -1,    -1,    -1,    -1,
-      -1,   596,   678,  1184,   599,   600,    -1,   602,    -1,   604,
-     605,    -1,    -1,    -1,   609,   610,  1040,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   701,   702,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1433,    -1,  1435,    -1,
-      -1,    -1,    -1,    -1,   891,    -1,    -1,    -1,    -1,    -1,
-    1074,    -1,    -1,    -1,    -1,  1079,    -1,    -1,    -1,    -1,
-     736,    -1,    -1,  1087,   740,   741,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1470,    -1,  1472,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   470,    -1,    -1,
-     937,    -1,    -1,    -1,    -1,    -1,    -1,  1121,    -1,    -1,
-      -1,    -1,  1499,    -1,    -1,    -1,    -1,   783,  1132,    -1,
-      -1,  1135,    -1,  1137,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   969,   799,    -1,   801,   509,    -1,  1152,  1153,
-      -1,    -1,    -1,    -1,   981,   811,    -1,    -1,   521,    -1,
-      -1,    -1,    -1,    -1,   527,    -1,    -1,   530,  1172,    -1,
-     745,   746,     7,    -1,    -1,    10,    11,    12,    13,    14,
-     543,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1020,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
-     573,    -1,    -1,    -1,  1218,    -1,    -1,   580,    -1,    -1,
-      -1,   584,  1226,    -1,    -1,    -1,   882,    -1,    -1,    -1,
-      -1,    66,    67,   889,   890,    -1,   892,    72,    -1,    -1,
-     896,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
-      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
-      -1,   917,   918,    -1,    -1,    -1,    -1,   630,    -1,  1096,
-      -1,    -1,    -1,    -1,    -1,   638,   111,    -1,   113,    -1,
-      -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
-      -1,    -1,  1296,    -1,  1298,    -1,   952,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1314,    -1,  1316,    -1,    -1,   971,   972,    -1,    -1,    -1,
-      -1,   896,    -1,    -1,    -1,   981,   901,  1331,  1155,  1156,
-      -1,   987,   988,    -1,   990,   991,   992,    -1,    -1,    -1,
-      -1,    -1,  1346,  1347,    -1,    -1,  1002,  1003,    -1,    -1,
-      -1,   714,    -1,  1357,    -1,    -1,  1360,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   736,    -1,   738,    -1,    -1,  1382,    -1,
-      -1,    -1,    -1,    -1,    -1,   748,    -1,  1391,    -1,    -1,
-    1394,   754,  1396,  1397,  1398,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1062,    -1,  1064,    -1,
-      -1,    -1,    -1,  1069,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1078,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   794,   795,  1437,    -1,  1439,    -1,  1441,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1101,  1102,   810,    -1,    -1,
-      -1,    -1,    -1,  1457,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1125,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1056,    -1,    -1,    -1,    -1,   849,    -1,    -1,    -1,
-     853,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,   882,
-      -1,    -1,    -1,    -1,    39,    -1,   889,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1363,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1202,    -1,    -1,    -1,
-      -1,    -1,    67,  1380,    -1,    -1,    -1,    -1,    -1,    74,
-      75,    -1,    -1,    -1,    -1,    -1,   929,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,   956,    30,    31,    32,    -1,   961,  1255,
-    1256,   964,    -1,    39,   119,   120,    -1,    -1,    -1,  1184,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   984,    -1,    -1,    -1,  1452,  1453,    -1,    -1,    -1,
-      -1,    67,   995,    69,    -1,    71,    72,    -1,    74,    75,
-      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,
-      86,    -1,  1015,    -1,  1017,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1032,
-    1033,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
-      -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,  1052,
-      -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
+      73,    -1,    -1,    76,    77,    -1,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-    1376,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
-      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1106,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
-      -1,    69,  1125,    71,    -1,    -1,    74,    75,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1140,  1141,    -1,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,   113,    30,    31,    32,  1465,
-      -1,   119,   120,    -1,    -1,    39,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1489,  1490,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
-      74,    75,    -1,    -1,    -1,    -1,    -1,    -1,  1514,    -1,
-      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,   112,    30,
-      31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
-      41,    -1,    43,    -1,    -1,    46,    47,    48,    49,    50,
-      51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,  1282,
-      61,    62,  1285,    64,    -1,    66,    67,    -1,    69,    -1,
-      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
+      28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
+      -1,    -1,   115,    41,    -1,    -1,    -1,    -1,   121,   122,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,
-     121,   122,   123,   124,    -1,    -1,    -1,    -1,   129,    -1,
-      -1,    -1,    -1,   134,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    33,    -1,    -1,    36,    37,    38,
-      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
+      -1,    69,    -1,    71,    -1,    73,    -1,    -1,    76,    77,
+      -1,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,   115,    41,    -1,
+      -1,    -1,    -1,   121,   122,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
+      73,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
+      -1,    -1,    -1,    -1,    39,    40,    41,    42,    -1,    -1,
+      -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    68,    69,    -1,    -1,    -1,    -1,    74,
+      -1,    76,    77,    78,    -1,    -1,    81,    82,    83,    84,
+      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
+     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
+     125,   126,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
-      69,    39,    71,    72,    -1,    74,    75,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
-      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
-      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    -1,    -1,
-      -1,    -1,   111,    -1,   113,    -1,    -1,    85,    86,    -1,
-     119,   120,   121,   122,   123,   124,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   134,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1499,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
-      36,    37,    38,    39,    40,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,    -1,
-      66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
-      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    78,    -1,   111,    -1,   113,    -1,    -1,
-      -1,    -1,    -1,   119,   120,   121,   122,   123,   124,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
-      -1,    -1,    37,    38,    39,    40,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
-      -1,    66,    67,    -1,    69,    39,    71,    72,    -1,    74,
-      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
-      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      74,    75,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
-      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,   124,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
-      -1,    -1,    -1,    37,    38,    39,    40,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
-      -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
-      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
-      84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    74,    75,    -1,    -1,    -1,    -1,   111,    -1,   113,
-      -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
-     124,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
-      -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
+      28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
+      -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
-      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,
+      68,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,    77,
+      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
+      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
-     113,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
-     123,   124,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
+      -1,    -1,    -1,    -1,    -1,   113,   114,   115,    -1,    -1,
+      -1,    -1,    -1,   121,   122,   123,   124,   125,   126,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
+      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    39,    40,
+      41,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    -1,
+      -1,    -1,    -1,    74,    -1,    76,    77,    78,    -1,    -1,
+      81,    82,    83,    84,    85,    86,    87,    88,    -1,    90,
+      91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,
+     121,   122,   123,   124,   125,   126,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
+      34,    -1,    -1,    -1,    -1,    39,    40,    41,    42,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,
-      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
-      82,    83,    84,    85,    86,    -1,    88,    89,    -1,    -1,
+      -1,    -1,    -1,    -1,    68,    69,    -1,    -1,    -1,    -1,
+      74,    -1,    76,    77,    78,    -1,    -1,    81,    82,    83,
+      84,    85,    86,    87,    88,    -1,    90,    91,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
-      -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,
-     122,   123,   124,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
-      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,
+      -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,
+     124,   125,   126,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
+      -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
-      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
+      -1,    68,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,
+      77,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
+      87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
+      -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,   126,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      -1,    -1,    32,    33,    34,    -1,    69,    -1,    71,    -1,
+      73,    41,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    -1,    74,    -1,    76,    77,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   118,    -1,    87,    88,    -1,
+      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    -1,   115,    32,    33,    34,    -1,
+      -1,   121,   122,    -1,    -1,    41,    42,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
+      33,    34,    -1,    69,    -1,    -1,    -1,    -1,    41,    42,
+      76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,   115,
+      -1,    -1,    -1,   119,    -1,   121,   122,    -1,    -1,    -1,
+      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    -1,   115,    32,    33,    34,   119,    -1,   121,   122,
+      -1,    -1,    41,    42,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
+      69,    -1,    -1,    -1,    -1,    41,    -1,    76,    77,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
-     121,   122,   123,   124,     0,    -1,    -1,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    77,    -1,    -1,    -1,    -1,   115,    -1,    -1,    -1,
+     119,    -1,   121,   122,    -1,    -1,    -1,    -1,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    -1,   115,
+      32,    33,    34,    -1,    -1,   121,   122,    -1,    -1,    41,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      -1,    -1,    32,    33,    34,    -1,    -1,    69,    -1,    -1,
+      -1,    41,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
+      -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
+     122,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
-      36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,
-      -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
-      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,
-      86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
-      -1,    -1,    -1,   119,   120,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
-      -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
-      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    -1,
+      26,    27,    28,    29,    -1,   115,    32,    33,    34,    -1,
+      -1,   121,   122,    -1,    -1,    41,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,   117,
-      -1,   119,   120,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
-      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    77,    -1,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
+      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,   115,
+      41,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,
-      -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
+      71,    -1,    73,    -1,    -1,    76,    77,    39,    40,    -1,
+      42,    43,    -1,    45,    -1,    -1,    48,    49,    50,    51,
+      52,    53,    54,    55,    -1,    -1,    58,    59,    -1,    -1,
+      -1,    63,    64,    -1,    66,    -1,    68,    -1,    -1,    -1,
+      -1,    -1,    74,   114,    -1,    -1,    78,    -1,    -1,    81,
+      82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
-     120,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    -1,    30,    31,
-      32,    33,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,
+      -1,   113,    -1,   115,    -1,    -1,   118,    -1,    -1,   121,
+     122,   123,   124,   125,   126,    -1,    -1,    39,    40,   131,
+      42,    43,    -1,    45,   136,    -1,    48,    49,    50,    51,
+      52,    53,    54,    55,    -1,    -1,    -1,    59,    -1,    -1,
+      -1,    63,    64,    -1,    66,    -1,    68,    -1,    -1,    -1,
+      -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,
+      82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
-      -1,    -1,    74,    75,    -1,    -1,    78,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
-      -1,   113,    -1,    39,    -1,    -1,    -1,   119,   120,    -1,
+      -1,   113,    -1,   115,    -1,    -1,   118,    -1,    -1,   121,
+     122,   123,   124,   125,   126,    -1,    -1,    -1,    -1,   131,
+      -1,    -1,    -1,    -1,   136,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
+      -1,    -1,    41,    -1,    39,    40,    -1,    42,    43,    -1,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    -1,    58,    59,    -1,    -1,    -1,    63,    64,
+      69,    66,    71,    68,    73,    -1,    -1,    76,    77,    74,
+      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
+      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
+      -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
+     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
+     125,   126,    -1,    -1,    39,    40,   131,    42,    43,    -1,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
+      -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    74,
+      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
+      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
+     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
+     125,   126,    -1,    -1,    39,    40,   131,    42,    43,    -1,
+      45,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
+      -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    74,
+      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
+      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
+      -1,    -1,    -1,    39,    40,    -1,    42,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
+     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
+     125,   126,    68,    -1,    -1,    -1,   131,    -1,    74,    -1,
+      76,    77,    78,    -1,    -1,    81,    82,    83,    84,    85,
+      86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
+      -1,    -1,    39,    40,    -1,    42,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
+      -1,   117,   118,    -1,    -1,   121,   122,   123,   124,   125,
+     126,    68,    -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,
+      -1,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
+      87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
+      -1,    39,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
+      -1,   118,    -1,    -1,   121,   122,   123,   124,   125,   126,
+      68,    -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,
+      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
+      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
+      39,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
+      -1,    -1,   120,   121,   122,   123,   124,   125,   126,    68,
+      -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    78,
+      -1,    -1,    81,    82,    83,    84,    85,    86,    87,    88,
+      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,   118,
+      -1,    -1,   121,   122,   123,   124,   125,   126,    68,    -1,
+      -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    78,    -1,
+      -1,    81,    82,    83,    84,    85,    86,    87,    88,    -1,
+      90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,
+      -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,
+      -1,   121,   122,   123,   124,   125,   126,    68,    -1,    -1,
+      -1,    -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,
+      81,    82,    83,    84,    85,    86,    87,    88,    -1,    90,
+      91,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,
+      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,
+     121,   122,   123,   124,   125,   126,    68,    -1,    -1,    -1,
+      -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,
+      82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
+      -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    42,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
+     122,   123,   124,   125,   126,    68,    -1,    -1,    -1,    -1,
+      -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,    82,
+      83,    84,    85,    86,    87,    88,    -1,    90,    91,    -1,
+      -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    42,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
+     123,   124,   125,   126,    68,    -1,    -1,    -1,    -1,    -1,
+      74,    -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,
+      84,    85,    86,    87,    88,    -1,    90,    91,    -1,    -1,
+      -1,    -1,    -1,    -1,    39,    40,    -1,    42,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,
+      -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,
+     124,   125,   126,    68,    -1,    -1,    -1,    -1,    -1,    74,
+      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
+      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
+     115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,   124,
+     125,   126,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,
+      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    -1,    -1,    32,    33,    34,    69,    -1,    71,
+      -1,    73,    74,    41,    76,    77,    78,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,    77,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      88,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
+      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
-      -1,    -1,    -1,    -1,    -1,    39,    -1,   113,    -1,    -1,
-      -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
-      74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,
-      -1,    -1,    -1,    -1,    -1,   119,   120,     4,     5,     6,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,
+      -1,    73,    -1,    -1,    76,    77,     3,     4,     5,     6,
        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
-      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
+      -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
-      -1,    -1,    -1,    -1,    39,   112,   113,    -1,    -1,    -1,
-      -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
-      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
-      -1,    -1,    -1,    -1,   119,   120,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
-      -1,    39,    -1,    -1,    -1,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
-      -1,    69,    -1,    71,    39,    40,    74,    75,    -1,    -1,
+      -1,    -1,    69,    -1,    71,    -1,    73,    -1,    -1,    76,
+      77,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      98,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
-      75,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,    -1,
-      -1,   119,   120,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
-      31,    32,   117,    -1,   119,   120,    -1,    -1,    39,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
+      73,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    -1,    -1,    -1,    41,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
+      33,    34,    -1,    -1,    69,    -1,    -1,    -1,    41,    -1,
+      -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
-      71,    -1,    -1,    74,    75,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
-      39,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      69,    -1,    71,    -1,    -1,    74,    75,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
-      -1,    -1,    39,    -1,   113,    -1,    -1,    -1,    -1,    -1,
-     119,   120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
-      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
-      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
-      -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
-      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,
-     121,   122,   123,   124,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
-      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
-      66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
-      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
-      75,    -1,    -1,    -1,    -1,   111,   112,   113,    -1,    -1,
-      85,    86,    -1,   119,   120,   121,   122,   123,   124,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
-      31,    32,    -1,    -1,   119,   120,    37,    38,    39,    40,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
-      40,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
-      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
-     111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
-     121,   122,   123,   124,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,   113,    30,    31,    32,   117,    -1,   119,
-     120,    37,    38,    39,    40,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
-      66,    67,    -1,    -1,    39,    40,    72,    -1,    74,    75,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
-      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
-      75,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
-      -1,    -1,    -1,   119,   120,   121,   122,   123,   124,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
-      31,    32,   117,    -1,   119,   120,    37,    38,    39,    40,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
-      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
-      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
-     111,    -1,   113,    -1,    -1,    85,    86,    -1,   119,   120,
-     121,   122,   123,   124,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
-     120,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
-      39,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,
-      39,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,
-      -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,
-     119,   120,    -1,    -1,    -1,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,   113,    30,    31,    32,    -1,    -1,
-     119,   120,    -1,    -1,    39,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
-      -1,    -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,
-      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
-      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
-      -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
-      31,    32,    -1,    -1,   119,   120,    -1,    -1,    39,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
-      31,    32,    -1,    -1,    -1,    -1,    67,    -1,    39,    -1,
-      -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
-      -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
-      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,   113,    30,    31,    32,    -1,    -1,   119,   120,
-      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
-      -1,    -1,    37,    38,    -1,    40,    41,    -1,    43,    -1,
-      -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
-      -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
-      -1,    66,    -1,    -1,    -1,    -1,   113,    72,    -1,    -1,
-      -1,    76,   119,   120,    79,    80,    81,    82,    83,    84,
-      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
-      -1,   116,    -1,    -1,   119,   120,   121,   122,   123,   124,
-      -1,    -1,    37,    38,   129,    40,    41,    -1,    43,   134,
-      -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
-      -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
-      -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
-      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
-      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
-      -1,   116,    -1,    -1,   119,   120,   121,   122,   123,   124,
-      -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,   134,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
-      -1,    -1,    -1,    -1,    -1,    39,    -1,    37,    38,    -1,
-      40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    -1,
-      -1,    61,    62,    67,    64,    69,    66,    71,    -1,    -1,
-      74,    75,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
-      -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
-     120,   121,   122,   123,   124,    -1,    -1,    37,    38,   129,
-      40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
-      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
-      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
-     120,   121,   122,   123,   124,    -1,    -1,    37,    38,   129,
-      40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
-      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
-      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
-      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
-      -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
-     120,   121,   122,   123,   124,    66,    -1,    -1,    -1,   129,
-      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
-      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     111,    -1,   113,    -1,   115,   116,    -1,    -1,   119,   120,
-     121,   122,   123,   124,    66,    -1,    -1,    -1,    -1,    -1,
-      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
-      82,    83,    84,    85,    86,    -1,    88,    89,    -1,    -1,
-      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
-      -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,   121,
-     122,   123,   124,    66,    -1,    -1,    -1,    -1,    -1,    72,
-      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,
-      -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
-     113,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
-     123,   124,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
-      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
-      84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,
-      -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,
-      -1,    -1,   116,    -1,    -1,   119,   120,   121,   122,   123,
-     124,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
-      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
-      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
-      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
-      -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
-      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
-      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
-      37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
-      -1,    -1,    -1,   119,   120,   121,   122,   123,   124,    66,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    85,    86,
-      -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    37,
-      38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,
-      -1,    -1,   119,   120,   121,   122,   123,   124,    66,    -1,
-      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-      -1,    79,    80,    81,    82,    83,    84,    85,    86,    -1,
-      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
-      -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,
-      -1,   119,   120,   121,   122,   123,   124,    66,    -1,    -1,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
-      89,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
-      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,
-     119,   120,   121,   122,   123,   124,    66,    -1,    -1,    -1,
-      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
-     120,   121,   122,   123,   124,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
-      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
-      75,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
-      -1,    -1,    74,    75,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
-      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    33,    34,    35,    67,    -1,    69,
-      39,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    74,    75
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    77
 };
 
@@ -3863,156 +3940,156 @@
        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
-      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
-      76,    85,    86,   111,   113,   119,   120,   139,   142,   154,
-     203,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   236,
-     237,   238,   239,   240,   241,   242,   244,   245,   246,   247,
-     248,   249,   251,   259,   260,   287,   288,   289,   297,   300,
-     306,   307,   309,   311,   312,   318,   323,   327,   328,   329,
-     330,   331,   332,   333,   334,   354,   371,   372,   373,   374,
-      72,   141,   142,   154,   220,   222,   230,   232,   241,   245,
-     247,   288,    81,   111,   316,   317,   318,   316,   316,    72,
-      74,    75,    76,   140,   141,   277,   278,   298,   299,    74,
-      75,   278,   111,   309,    11,   204,   111,   154,   323,   328,
-     329,   330,   332,   333,   334,   114,   136,   223,   230,   232,
-     327,   331,   370,   371,   374,   375,   137,   109,   133,   281,
-     116,   137,   178,    74,    75,   139,   276,   137,   137,   137,
-     118,   137,    74,    75,   111,   154,   313,   322,   323,   324,
-     325,   326,   327,   331,   335,   336,   337,   338,   339,   345,
-       3,    28,    78,   243,     3,     5,    74,   113,   154,   222,
-     233,   237,   239,   248,   289,   327,   331,   374,   220,   222,
-     232,   241,   245,   247,   288,   327,   331,    33,   238,   238,
-     233,   239,   137,   238,   233,   238,   233,    75,   111,   116,
-     278,   289,   116,   278,   238,   233,   118,   137,   137,     0,
-     136,   111,   178,   316,   316,   136,   113,   230,   232,   372,
-     276,   276,   133,   232,   111,   154,   313,   323,   327,   113,
-     154,   374,   310,   235,   318,   111,   294,   111,   111,    51,
-     111,    37,    38,    40,    66,    72,    76,    79,    80,    81,
-      82,    83,    84,    88,    89,   111,   113,   121,   122,   123,
-     124,   138,   142,   143,   144,   145,   146,   153,   154,   155,
+      22,    23,    24,    25,    26,    27,    28,    29,    32,    33,
+      34,    35,    38,    41,    42,    66,    69,    71,    73,    74,
+      76,    77,    78,    87,    88,   113,   115,   121,   122,   141,
+     144,   156,   205,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   238,   239,   240,   241,   242,   243,   244,   246,   247,
+     248,   249,   250,   251,   253,   261,   262,   289,   290,   291,
+     299,   302,   308,   309,   311,   313,   314,   320,   325,   329,
+     330,   331,   332,   333,   334,   335,   336,   356,   373,   374,
+     375,   376,    74,   143,   144,   156,   222,   224,   232,   234,
+     243,   247,   249,   290,    83,   113,   318,   319,   320,   318,
+     318,    74,    76,    77,    78,   142,   143,   279,   280,   300,
+     301,    76,    77,   280,   113,   311,    11,   206,   113,   156,
+     325,   330,   331,   332,   334,   335,   336,   116,   138,   225,
+     232,   234,   329,   333,   372,   373,   376,   377,   139,   111,
+     135,   283,   118,   139,   180,    76,    77,   141,   278,   139,
+     139,   139,   120,   139,    76,    77,   113,   156,   315,   324,
+     325,   326,   327,   328,   329,   333,   337,   338,   339,   340,
+     341,   347,     3,    30,    80,   245,     3,     5,    76,   115,
+     156,   224,   235,   239,   241,   250,   291,   329,   333,   376,
+     222,   224,   234,   243,   247,   249,   290,   329,   333,    35,
+     240,   240,   235,   241,   139,   240,   235,   240,   235,    77,
+     113,   118,   280,   291,   118,   280,   240,   235,   120,   139,
+     139,     0,   138,   113,   180,   318,   318,   138,   115,   232,
+     234,   374,   278,   278,   135,   234,   113,   156,   315,   325,
+     329,   115,   156,   376,   312,   237,   320,   113,   296,   113,
+     113,    53,   113,    39,    40,    42,    68,    74,    78,    81,
+      82,    83,    84,    85,    86,    90,    91,   113,   115,   123,
+     124,   125,   126,   140,   144,   145,   146,   147,   148,   155,
      156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   169,   172,   230,   280,   296,   370,   375,   232,
-     112,   112,   112,   112,   112,   112,   112,   113,   230,   354,
-     372,   113,   119,   154,   169,   222,   223,   229,   232,   236,
-     237,   241,   244,   245,   247,   266,   267,   271,   272,   273,
-     274,   288,   354,   366,   367,   368,   369,   374,   375,   111,
-     327,   331,   374,   111,   118,   134,   113,   116,   154,   169,
-     282,   282,   117,   136,   118,   134,   111,   118,   134,   118,
-     134,   118,   134,   316,   134,   323,   324,   325,   326,   336,
-     337,   338,   339,   232,   322,   335,    64,   315,   113,   316,
-     353,   354,   316,   316,   178,   136,   111,   316,   353,   316,
-     316,   232,   313,   111,   111,   231,   232,   230,   232,   136,
-     230,   370,   375,   178,   136,   276,   281,   222,   237,   327,
-     331,   178,   136,   298,   232,   241,   134,   232,   232,   296,
-     252,   250,   262,   278,   261,   232,   298,   134,   134,   309,
-     136,   141,   275,     3,   137,   212,   213,   227,   229,   232,
-     136,   315,   111,   315,   169,   323,   232,   111,   136,   276,
-     116,    33,    34,    35,   230,   290,   291,   293,   136,   130,
-     133,   295,   136,   233,   238,   239,   276,   319,   320,   321,
-     111,   143,   111,   153,   111,   153,   156,   111,   153,   111,
-     111,   153,   153,   113,   169,   174,   178,   230,   279,   370,
-     374,   136,    81,    83,    87,    88,    89,   111,   113,   115,
-     116,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   133,   171,   156,   156,   119,   125,   126,   121,
-     122,    90,    91,    92,    93,   127,   128,    94,    95,   120,
-     129,   130,    96,    97,   131,   111,   154,   349,   350,   351,
-     352,   353,   112,   118,   111,   353,   354,   111,   353,   354,
-     136,   230,   372,   114,   136,   137,   230,   232,   365,   366,
-     374,   375,   137,   111,   113,   154,   323,   340,   341,   342,
-     343,   344,   345,   346,   347,   348,   354,   355,   356,   357,
-     358,   359,   360,   154,   374,   232,   137,   137,   154,   230,
-     232,   367,   276,   230,   354,   367,   276,   136,   136,   136,
-     136,    72,   113,   115,   142,   278,   282,   283,   284,   285,
-     286,   136,   136,   136,   136,   136,   136,   313,   112,   112,
-     112,   112,   112,   112,   112,   322,   335,   111,   281,   114,
-     212,   136,   313,   174,   280,   174,   280,   313,   113,   212,
-     315,   178,   136,   212,   112,    40,   113,   117,   230,   253,
-     254,   255,   370,   116,   118,   376,   133,   263,   116,   232,
-     268,   269,   270,   273,   274,   112,   118,   178,   136,   119,
-     169,   136,   229,   232,   267,   366,   374,   307,   308,   111,
-     154,   340,   112,   118,   133,   377,   278,   290,   111,   116,
-     278,   280,   290,   112,   118,   111,   143,   112,   132,   279,
-     279,   279,   148,   169,   280,   279,   136,   112,   118,   112,
-     111,   154,   353,   361,   362,   363,   364,   112,   118,   169,
-     113,   141,   147,   148,   136,   113,   141,   147,   169,   156,
-     156,   156,   157,   157,   158,   158,   159,   159,   159,   159,
-     160,   160,   161,   162,   163,   164,   165,   132,   174,   136,
-     350,   351,   352,   232,   349,   316,   316,   169,   280,   136,
-     275,   230,   354,   367,   232,   236,   114,   374,   114,   111,
-     136,   323,   341,   342,   343,   346,   356,   357,   358,   114,
-     136,   232,   340,   344,   355,   111,   316,   359,   377,   316,
-     316,   377,   111,   316,   359,   316,   316,   316,   316,   354,
-     230,   365,   375,   276,   114,   118,   114,   118,   377,   230,
-     367,   377,   264,   265,   266,   267,   264,   276,   169,   136,
-     113,   278,   132,   118,   376,   282,   113,   132,   286,    29,
-     214,   215,   276,   264,   141,   313,   141,   315,   111,   353,
-     354,   111,   353,   354,   144,   354,   178,   268,   112,   112,
-     112,   112,   136,   178,   212,   178,   116,   254,   255,   136,
-     111,   132,   154,   256,   258,   322,   323,   335,   361,   118,
-     134,   118,   134,   278,   252,   278,   117,   167,   168,   262,
-     137,   137,   141,   227,   137,   137,   264,   111,   154,   374,
-     137,   117,   232,   291,   169,   292,   137,   136,   136,   111,
-     137,   112,   320,   174,   175,   132,   134,   113,   143,   205,
-     206,   207,   112,   118,   112,   112,   112,   112,   169,   362,
-     363,   364,   232,   361,   316,   316,   116,   156,   169,   170,
-     173,   118,   136,   112,   118,   169,   136,   117,   167,   132,
-     268,   112,   112,   112,   349,   268,   112,   230,   367,   113,
-     119,   154,   169,   169,   232,   346,   268,   112,   112,   112,
-     112,   112,   112,   112,     7,   232,   340,   344,   355,   136,
-     136,   377,   136,   136,   137,   137,   137,   137,   281,   167,
-     168,   169,   314,   136,   282,   284,   117,   136,   216,   278,
-      40,    41,    43,    46,    47,    48,    49,    50,    51,    52,
-      53,    57,    61,    62,    72,   129,   175,   176,   177,   178,
-     179,   180,   182,   183,   195,   197,   198,   203,   217,   312,
-      29,   137,   133,   281,   136,   136,   112,   137,   178,   252,
-     134,   134,   323,   168,   232,   257,   258,   257,   278,   316,
-     117,   263,   376,   112,   118,   114,   114,   137,   232,   118,
-     377,   294,   112,   290,   220,   222,   230,   302,   303,   304,
-     305,   296,   112,   112,   132,   168,   111,   112,   132,   118,
-     141,   112,   112,   112,   361,   283,   118,   137,   173,    79,
-      82,    84,   141,   149,   150,   151,   148,   137,   149,   167,
-     137,   111,   353,   354,   137,   136,   137,   137,   137,   169,
-     112,   137,   111,   353,   354,   111,   359,   111,   359,   354,
-     231,     7,   119,   137,   169,   268,   268,   267,   271,   271,
-     272,   112,   118,   118,   112,    98,   124,   137,   137,   149,
-     282,   169,   118,   134,   217,   221,   232,   236,   111,   111,
-     176,   111,   111,    72,   134,    72,   134,    72,   119,   175,
-     111,   178,   170,   170,   132,   146,   134,   137,   136,   137,
-     216,   112,   169,   268,   268,   316,   112,   117,   256,   117,
-     136,   112,   136,   137,   313,   117,   136,   137,   137,   112,
-     116,   205,   114,   168,   134,   205,   207,   112,   111,   353,
-     354,   376,   170,   114,   137,   152,   113,   150,   152,   152,
-     118,   137,    87,   115,   114,   137,   112,   136,   112,   114,
-     114,   114,   137,   112,   136,   136,   136,   169,   169,   137,
-     114,   137,   137,   137,   137,   136,   136,   168,   168,   114,
-     114,   137,   278,   232,   174,   174,    47,   174,   136,   134,
-     134,   134,   174,   134,   174,    58,    59,    60,   199,   200,
-     201,   134,    63,   134,   316,   116,   180,   117,   134,   137,
-     137,    98,   273,   274,   112,   303,   118,   134,   118,   134,
-     117,   301,   132,   143,   112,   112,   132,   136,   117,   114,
-      83,   136,   150,   114,   113,   150,   113,   150,   114,   268,
-     114,   268,   268,   268,   137,   137,   114,   114,   112,   112,
-     114,   118,    98,   267,    98,   137,   114,   112,   112,   111,
-     112,   175,   196,   217,   134,   112,   111,   111,   178,   201,
-      58,    59,   169,   176,   147,   112,   112,   116,   136,   136,
-     302,   143,   208,   111,   134,   208,   268,   149,   136,   136,
-     137,   137,   137,   137,   114,   114,   136,   137,   114,   176,
-      44,    45,   116,   186,   187,   188,   174,   176,   137,   112,
-     175,   116,   188,    98,   136,    98,   136,   111,   111,   134,
-     117,   136,   276,   313,   117,   118,   132,   168,   112,   137,
-     137,   149,   149,   112,   112,   112,   112,   271,    42,   168,
-     184,   185,   314,   132,   136,   176,   186,   112,   134,   176,
-     134,   136,   112,   136,   112,   136,    98,   136,    98,   136,
-     134,   302,   143,   141,   209,   112,   134,   112,   114,   137,
-     137,   176,    98,   118,   132,   137,   210,   211,   217,   134,
-     175,   175,   210,   178,   202,   230,   370,   178,   202,   112,
-     136,   112,   136,   117,   112,   118,   114,   114,   168,   184,
-     187,   189,   190,   136,   134,   187,   191,   192,   137,   111,
-     154,   313,   361,   141,   137,   178,   202,   178,   202,   111,
-     134,   141,   176,   181,   117,   187,   217,   175,    56,   181,
-     194,   117,   187,   112,   232,   112,   137,   137,   296,   176,
-     181,   134,   193,   194,   181,   194,   178,   178,   112,   112,
-     112,   193,   137,   137,   178,   178,   137,   137
+     166,   167,   168,   169,   171,   174,   232,   282,   298,   372,
+     377,   234,   114,   114,   114,   114,   114,   114,   114,   115,
+     232,   356,   374,   115,   121,   156,   171,   224,   225,   231,
+     234,   238,   239,   243,   246,   247,   249,   268,   269,   273,
+     274,   275,   276,   290,   356,   368,   369,   370,   371,   376,
+     377,   113,   329,   333,   376,   113,   120,   136,   115,   118,
+     156,   171,   284,   284,   119,   138,   120,   136,   113,   120,
+     136,   120,   136,   120,   136,   318,   136,   325,   326,   327,
+     328,   338,   339,   340,   341,   234,   324,   337,    66,   317,
+     115,   318,   355,   356,   318,   318,   180,   138,   113,   318,
+     355,   318,   318,   234,   315,   113,   113,   233,   234,   232,
+     234,   138,   232,   372,   377,   180,   138,   278,   283,   224,
+     239,   329,   333,   180,   138,   300,   234,   243,   136,   234,
+     234,   298,   254,   252,   264,   280,   263,   234,   300,   136,
+     136,   311,   138,   143,   277,     3,   139,   214,   215,   229,
+     231,   234,   138,   317,   113,   317,   171,   325,   234,   113,
+     138,   278,   118,    35,    36,    37,   232,   292,   293,   295,
+     138,   132,   135,   297,   138,   235,   240,   241,   278,   321,
+     322,   323,   113,   145,   113,   155,   113,   155,   158,   113,
+     155,   113,   113,   155,   155,   115,   171,   176,   180,   232,
+     281,   372,   376,   138,    83,    85,    89,    90,    91,   113,
+     115,   117,   118,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   135,   173,   158,   158,   121,   127,
+     128,   123,   124,    92,    93,    94,    95,   129,   130,    96,
+      97,   122,   131,   132,    98,    99,   133,   113,   156,   351,
+     352,   353,   354,   355,   114,   120,   113,   355,   356,   113,
+     355,   356,   138,   232,   374,   116,   138,   139,   232,   234,
+     367,   368,   376,   377,   139,   113,   115,   156,   325,   342,
+     343,   344,   345,   346,   347,   348,   349,   350,   356,   357,
+     358,   359,   360,   361,   362,   156,   376,   234,   139,   139,
+     156,   232,   234,   369,   278,   232,   356,   369,   278,   138,
+     138,   138,   138,    74,   115,   117,   144,   280,   284,   285,
+     286,   287,   288,   138,   138,   138,   138,   138,   138,   315,
+     114,   114,   114,   114,   114,   114,   114,   324,   337,   113,
+     283,   116,   214,   138,   315,   176,   282,   176,   282,   315,
+     115,   214,   317,   180,   138,   214,   114,    42,   115,   119,
+     232,   255,   256,   257,   372,   118,   120,   378,   135,   265,
+     118,   234,   270,   271,   272,   275,   276,   114,   120,   180,
+     138,   121,   171,   138,   231,   234,   269,   368,   376,   309,
+     310,   113,   156,   342,   114,   120,   135,   379,   280,   292,
+     113,   118,   280,   282,   292,   114,   120,   113,   145,   114,
+     134,   281,   281,   281,   150,   171,   282,   281,   138,   114,
+     120,   114,   113,   156,   355,   363,   364,   365,   366,   114,
+     120,   171,   115,   143,   149,   150,   138,   115,   143,   149,
+     171,   158,   158,   158,   159,   159,   160,   160,   161,   161,
+     161,   161,   162,   162,   163,   164,   165,   166,   167,   134,
+     176,   138,   352,   353,   354,   234,   351,   318,   318,   171,
+     282,   138,   277,   232,   356,   369,   234,   238,   116,   376,
+     116,   113,   138,   325,   343,   344,   345,   348,   358,   359,
+     360,   116,   138,   234,   342,   346,   357,   113,   318,   361,
+     379,   318,   318,   379,   113,   318,   361,   318,   318,   318,
+     318,   356,   232,   367,   377,   278,   116,   120,   116,   120,
+     379,   232,   369,   379,   266,   267,   268,   269,   266,   278,
+     171,   138,   115,   280,   134,   120,   378,   284,   115,   134,
+     288,    31,   216,   217,   278,   266,   143,   315,   143,   317,
+     113,   355,   356,   113,   355,   356,   145,   356,   180,   270,
+     114,   114,   114,   114,   138,   180,   214,   180,   118,   256,
+     257,   138,   113,   134,   156,   258,   260,   324,   325,   337,
+     363,   120,   136,   120,   136,   280,   254,   280,   119,   169,
+     170,   264,   139,   139,   143,   229,   139,   139,   266,   113,
+     156,   376,   139,   119,   234,   293,   171,   294,   139,   138,
+     138,   113,   139,   114,   322,   176,   177,   134,   136,   115,
+     145,   207,   208,   209,   114,   120,   114,   114,   114,   114,
+     171,   364,   365,   366,   234,   363,   318,   318,   118,   158,
+     171,   172,   175,   120,   138,   114,   120,   171,   138,   119,
+     169,   134,   270,   114,   114,   114,   351,   270,   114,   232,
+     369,   115,   121,   156,   171,   171,   234,   348,   270,   114,
+     114,   114,   114,   114,   114,   114,     7,   234,   342,   346,
+     357,   138,   138,   379,   138,   138,   139,   139,   139,   139,
+     283,   169,   170,   171,   316,   138,   284,   286,   119,   138,
+     218,   280,    42,    43,    45,    48,    49,    50,    51,    52,
+      53,    54,    55,    59,    63,    64,    74,   131,   177,   178,
+     179,   180,   181,   182,   184,   185,   197,   199,   200,   205,
+     219,   314,    31,   139,   135,   283,   138,   138,   114,   139,
+     180,   254,   136,   136,   325,   170,   234,   259,   260,   259,
+     280,   318,   119,   265,   378,   114,   120,   116,   116,   139,
+     234,   120,   379,   296,   114,   292,   222,   224,   232,   304,
+     305,   306,   307,   298,   114,   114,   134,   170,   113,   114,
+     134,   120,   143,   114,   114,   114,   363,   285,   120,   139,
+     175,    81,    84,    86,   143,   151,   152,   153,   150,   139,
+     151,   169,   139,   113,   355,   356,   139,   138,   139,   139,
+     139,   171,   114,   139,   113,   355,   356,   113,   361,   113,
+     361,   356,   233,     7,   121,   139,   171,   270,   270,   269,
+     273,   273,   274,   114,   120,   120,   114,   100,   126,   139,
+     139,   151,   284,   171,   120,   136,   219,   223,   234,   238,
+     113,   113,   178,   113,   113,    74,   136,    74,   136,    74,
+     121,   177,   113,   180,   172,   172,   134,   148,   136,   139,
+     138,   139,   218,   114,   171,   270,   270,   318,   114,   119,
+     258,   119,   138,   114,   138,   139,   315,   119,   138,   139,
+     139,   114,   118,   207,   116,   170,   136,   207,   209,   114,
+     113,   355,   356,   378,   172,   116,   139,   154,   115,   152,
+     154,   154,   120,   139,    89,   117,   116,   139,   114,   138,
+     114,   116,   116,   116,   139,   114,   138,   138,   138,   171,
+     171,   139,   116,   139,   139,   139,   139,   138,   138,   170,
+     170,   116,   116,   139,   280,   234,   176,   176,    49,   176,
+     138,   136,   136,   136,   176,   136,   176,    60,    61,    62,
+     201,   202,   203,   136,    65,   136,   318,   118,   182,   119,
+     136,   139,   139,   100,   275,   276,   114,   305,   120,   136,
+     120,   136,   119,   303,   134,   145,   114,   114,   134,   138,
+     119,   116,    85,   138,   152,   116,   115,   152,   115,   152,
+     116,   270,   116,   270,   270,   270,   139,   139,   116,   116,
+     114,   114,   116,   120,   100,   269,   100,   139,   116,   114,
+     114,   113,   114,   177,   198,   219,   136,   114,   113,   113,
+     180,   203,    60,    61,   171,   178,   149,   114,   114,   118,
+     138,   138,   304,   145,   210,   113,   136,   210,   270,   151,
+     138,   138,   139,   139,   139,   139,   116,   116,   138,   139,
+     116,   178,    46,    47,   118,   188,   189,   190,   176,   178,
+     139,   114,   177,   118,   190,   100,   138,   100,   138,   113,
+     113,   136,   119,   138,   278,   315,   119,   120,   134,   170,
+     114,   139,   139,   151,   151,   114,   114,   114,   114,   273,
+      44,   170,   186,   187,   316,   134,   138,   178,   188,   114,
+     136,   178,   136,   138,   114,   138,   114,   138,   100,   138,
+     100,   138,   136,   304,   145,   143,   211,   114,   136,   114,
+     116,   139,   139,   178,   100,   120,   134,   139,   212,   213,
+     219,   136,   177,   177,   212,   180,   204,   232,   372,   180,
+     204,   114,   138,   114,   138,   119,   114,   120,   116,   116,
+     170,   186,   189,   191,   192,   138,   136,   189,   193,   194,
+     139,   113,   156,   315,   363,   143,   139,   180,   204,   180,
+     204,   113,   136,   143,   178,   183,   119,   189,   219,   177,
+      58,   183,   196,   119,   189,   114,   234,   114,   139,   139,
+     298,   178,   183,   136,   195,   196,   183,   196,   180,   180,
+     114,   114,   114,   195,   139,   139,   180,   180,   139,   139
 };
 
@@ -4851,5 +4928,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 305 "parser.yy"
+#line 306 "parser.yy"
     { typedefTable.enterScope(); }
     break;
@@ -4858,5 +4935,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 309 "parser.yy"
+#line 310 "parser.yy"
     { typedefTable.leaveScope(); }
     break;
@@ -4865,16 +4942,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 316 "parser.yy"
+#line 317 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 5:
-
-/* Line 1806 of yacc.c  */
-#line 317 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
-    break;
-
-  case 6:
 
 /* Line 1806 of yacc.c  */
@@ -4883,5 +4953,5 @@
     break;
 
-  case 7:
+  case 6:
 
 /* Line 1806 of yacc.c  */
@@ -4890,8 +4960,15 @@
     break;
 
+  case 7:
+
+/* Line 1806 of yacc.c  */
+#line 320 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
+    break;
+
   case 8:
 
 /* Line 1806 of yacc.c  */
-#line 320 "parser.yy"
+#line 321 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
@@ -4900,5 +4977,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 345 "parser.yy"
+#line 346 "parser.yy"
     { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
     break;
@@ -4907,5 +4984,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 349 "parser.yy"
+#line 350 "parser.yy"
     { (yyval.str) = (yyvsp[(1) - (1)].tok); }
     break;
@@ -4914,5 +4991,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 351 "parser.yy"
+#line 352 "parser.yy"
     {
 			appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );						// append 2nd juxtaposed string to 1st
@@ -4925,5 +5002,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 362 "parser.yy"
+#line 363 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     break;
@@ -4932,6 +5009,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 364 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
+#line 365 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantZeroOne( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
@@ -4939,5 +5016,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 367 "parser.yy"
+#line 368 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (3)].en); }
     break;
@@ -4946,5 +5023,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 369 "parser.yy"
+#line 370 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
     break;
@@ -4953,5 +5030,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 379 "parser.yy"
+#line 380 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     break;
@@ -4960,5 +5037,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 381 "parser.yy"
+#line 382 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -4967,5 +5044,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 383 "parser.yy"
+#line 384 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     break;
@@ -4974,5 +5051,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 385 "parser.yy"
+#line 386 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
@@ -4981,5 +5058,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 387 "parser.yy"
+#line 388 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ) ) ); }
     break;
@@ -4988,5 +5065,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 389 "parser.yy"
+#line 390 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     break;
@@ -4995,5 +5072,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 391 "parser.yy"
+#line 392 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
@@ -5002,5 +5079,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 393 "parser.yy"
+#line 394 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     break;
@@ -5009,5 +5086,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 395 "parser.yy"
+#line 396 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     break;
@@ -5016,5 +5093,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 397 "parser.yy"
+#line 398 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
     break;
@@ -5023,5 +5100,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 399 "parser.yy"
+#line 400 "parser.yy"
     {
 			Token fn;
@@ -5034,5 +5111,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 409 "parser.yy"
+#line 410 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
@@ -5041,6 +5118,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 414 "parser.yy"
-    { (yyval.en) = 0; }
+#line 415 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
@@ -5048,5 +5125,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 420 "parser.yy"
+#line 421 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5055,5 +5132,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 426 "parser.yy"
+#line 427 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
     break;
@@ -5062,5 +5139,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 428 "parser.yy"
+#line 429 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
     break;
@@ -5069,5 +5146,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 430 "parser.yy"
+#line 431 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
     break;
@@ -5076,5 +5153,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 432 "parser.yy"
+#line 433 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
@@ -5083,5 +5160,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 434 "parser.yy"
+#line 435 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
     break;
@@ -5090,5 +5167,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 436 "parser.yy"
+#line 437 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
@@ -5097,5 +5174,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 441 "parser.yy"
+#line 442 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5104,5 +5181,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 443 "parser.yy"
+#line 444 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5111,6 +5188,12 @@
 
 /* Line 1806 of yacc.c  */
-#line 445 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
+#line 446 "parser.yy"
+    {
+			if( (*(yyvsp[(1) - (2)].tok)) == "0" || (*(yyvsp[(1) - (2)].tok)) == "1" ) {
+				(yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) );
+			} else {
+				(yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) );
+			}
+		}
     break;
 
@@ -5118,5 +5201,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 450 "parser.yy"
+#line 457 "parser.yy"
     { (yyval.en) = nullptr; }
     break;
@@ -5125,5 +5208,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 452 "parser.yy"
+#line 459 "parser.yy"
     {
 			Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) );
@@ -5135,5 +5218,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 463 "parser.yy"
+#line 470 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -5142,5 +5225,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 465 "parser.yy"
+#line 472 "parser.yy"
     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
@@ -5149,5 +5232,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 467 "parser.yy"
+#line 474 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     break;
@@ -5156,5 +5239,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 472 "parser.yy"
+#line 479 "parser.yy"
     {
 			switch ( (yyvsp[(1) - (2)].op) ) {
@@ -5174,5 +5257,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 485 "parser.yy"
+#line 492 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5181,5 +5264,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 487 "parser.yy"
+#line 494 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5188,5 +5271,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 489 "parser.yy"
+#line 496 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5195,5 +5278,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 491 "parser.yy"
+#line 498 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5202,5 +5285,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 493 "parser.yy"
+#line 500 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5209,5 +5292,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 495 "parser.yy"
+#line 502 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5216,5 +5299,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 497 "parser.yy"
+#line 504 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5223,5 +5306,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 499 "parser.yy"
+#line 506 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
     break;
@@ -5230,5 +5313,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 501 "parser.yy"
+#line 508 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
     break;
@@ -5237,5 +5320,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 503 "parser.yy"
+#line 510 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -5244,5 +5327,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 505 "parser.yy"
+#line 512 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5251,5 +5334,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 511 "parser.yy"
+#line 518 "parser.yy"
     { (yyval.op) = OperKinds::PointTo; }
     break;
@@ -5258,5 +5341,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 512 "parser.yy"
+#line 519 "parser.yy"
     { (yyval.op) = OperKinds::AddressOf; }
     break;
@@ -5265,5 +5348,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 518 "parser.yy"
+#line 525 "parser.yy"
     { (yyval.op) = OperKinds::UnPlus; }
     break;
@@ -5272,5 +5355,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 519 "parser.yy"
+#line 526 "parser.yy"
     { (yyval.op) = OperKinds::UnMinus; }
     break;
@@ -5279,5 +5362,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 520 "parser.yy"
+#line 527 "parser.yy"
     { (yyval.op) = OperKinds::Neg; }
     break;
@@ -5286,5 +5369,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 521 "parser.yy"
+#line 528 "parser.yy"
     { (yyval.op) = OperKinds::BitNeg; }
     break;
@@ -5293,5 +5376,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 527 "parser.yy"
+#line 534 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -5300,5 +5383,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 535 "parser.yy"
+#line 542 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5307,5 +5390,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 537 "parser.yy"
+#line 544 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5314,5 +5397,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 539 "parser.yy"
+#line 546 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5321,5 +5404,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 545 "parser.yy"
+#line 552 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5328,5 +5411,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 547 "parser.yy"
+#line 554 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5335,5 +5418,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 553 "parser.yy"
+#line 560 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5342,5 +5425,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 555 "parser.yy"
+#line 562 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5349,5 +5432,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 561 "parser.yy"
+#line 568 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5356,5 +5439,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 563 "parser.yy"
+#line 570 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5363,5 +5446,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 565 "parser.yy"
+#line 572 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5370,5 +5453,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 567 "parser.yy"
+#line 574 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5377,5 +5460,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 573 "parser.yy"
+#line 580 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5384,5 +5467,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 575 "parser.yy"
+#line 582 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5391,5 +5474,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 581 "parser.yy"
+#line 588 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5398,5 +5481,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 587 "parser.yy"
+#line 594 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5405,5 +5488,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 593 "parser.yy"
+#line 600 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5412,5 +5495,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 599 "parser.yy"
+#line 606 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     break;
@@ -5419,5 +5502,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 605 "parser.yy"
+#line 612 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     break;
@@ -5426,5 +5509,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 611 "parser.yy"
+#line 618 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     break;
@@ -5433,5 +5516,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 614 "parser.yy"
+#line 621 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -5440,5 +5523,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 627 "parser.yy"
+#line 634 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5447,5 +5530,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 634 "parser.yy"
+#line 641 "parser.yy"
     { (yyval.en) = nullptr; }
     break;
@@ -5454,5 +5537,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 639 "parser.yy"
+#line 646 "parser.yy"
     { (yyval.op) = OperKinds::Assign; }
     break;
@@ -5461,5 +5544,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 640 "parser.yy"
+#line 647 "parser.yy"
     { (yyval.op) = OperKinds::AtAssn; }
     break;
@@ -5468,5 +5551,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 641 "parser.yy"
+#line 648 "parser.yy"
     { (yyval.op) = OperKinds::MulAssn; }
     break;
@@ -5475,5 +5558,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 642 "parser.yy"
+#line 649 "parser.yy"
     { (yyval.op) = OperKinds::DivAssn; }
     break;
@@ -5482,5 +5565,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 643 "parser.yy"
+#line 650 "parser.yy"
     { (yyval.op) = OperKinds::ModAssn; }
     break;
@@ -5489,5 +5572,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 644 "parser.yy"
+#line 651 "parser.yy"
     { (yyval.op) = OperKinds::PlusAssn; }
     break;
@@ -5496,5 +5579,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 645 "parser.yy"
+#line 652 "parser.yy"
     { (yyval.op) = OperKinds::MinusAssn; }
     break;
@@ -5503,5 +5586,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 646 "parser.yy"
+#line 653 "parser.yy"
     { (yyval.op) = OperKinds::LSAssn; }
     break;
@@ -5510,5 +5593,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 647 "parser.yy"
+#line 654 "parser.yy"
     { (yyval.op) = OperKinds::RSAssn; }
     break;
@@ -5517,5 +5600,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 648 "parser.yy"
+#line 655 "parser.yy"
     { (yyval.op) = OperKinds::AndAssn; }
     break;
@@ -5524,5 +5607,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 649 "parser.yy"
+#line 656 "parser.yy"
     { (yyval.op) = OperKinds::ERAssn; }
     break;
@@ -5531,5 +5614,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 650 "parser.yy"
+#line 657 "parser.yy"
     { (yyval.op) = OperKinds::OrAssn; }
     break;
@@ -5538,5 +5621,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 661 "parser.yy"
+#line 668 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
     break;
@@ -5545,5 +5628,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 663 "parser.yy"
+#line 670 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
@@ -5552,5 +5635,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 669 "parser.yy"
+#line 676 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5559,5 +5642,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 675 "parser.yy"
+#line 682 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5566,6 +5649,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 680 "parser.yy"
-    { (yyval.en) = 0; }
+#line 687 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
@@ -5573,5 +5656,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 689 "parser.yy"
+#line 696 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
     break;
@@ -5580,5 +5663,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 696 "parser.yy"
+#line 703 "parser.yy"
     {
 			Token fn;
@@ -5591,5 +5674,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 706 "parser.yy"
+#line 713 "parser.yy"
     {
 			(yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
@@ -5600,5 +5683,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 713 "parser.yy"
+#line 720 "parser.yy"
     { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
     break;
@@ -5607,5 +5690,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 720 "parser.yy"
+#line 727 "parser.yy"
     { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
     break;
@@ -5614,5 +5697,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 726 "parser.yy"
+#line 733 "parser.yy"
     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     break;
@@ -5621,5 +5704,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 731 "parser.yy"
+#line 738 "parser.yy"
     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -5628,5 +5711,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 733 "parser.yy"
+#line 740 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -5639,5 +5722,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 739 "parser.yy"
+#line 746 "parser.yy"
     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -5646,5 +5729,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 746 "parser.yy"
+#line 753 "parser.yy"
     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     break;
@@ -5653,5 +5736,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 751 "parser.yy"
+#line 758 "parser.yy"
     { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     break;
@@ -5660,5 +5743,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 757 "parser.yy"
+#line 764 "parser.yy"
     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     break;
@@ -5667,5 +5750,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 759 "parser.yy"
+#line 766 "parser.yy"
     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
     break;
@@ -5674,5 +5757,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 761 "parser.yy"
+#line 768 "parser.yy"
     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5681,5 +5764,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 763 "parser.yy"
+#line 770 "parser.yy"
     {
 			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
@@ -5689,5 +5772,5 @@
 			// therefore, are removed from the grammar even though C allows it. The change also applies to choose
 			// statement.
-			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
+			(yyval.sn) = (yyvsp[(7) - (9)].decl) ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
 		}
     break;
@@ -5696,5 +5779,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 773 "parser.yy"
+#line 780 "parser.yy"
     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5703,8 +5786,8 @@
 
 /* Line 1806 of yacc.c  */
-#line 775 "parser.yy"
+#line 782 "parser.yy"
     {
 			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
-			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
+			(yyval.sn) = (yyvsp[(7) - (9)].decl) ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
 		}
     break;
@@ -5713,5 +5796,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 785 "parser.yy"
+#line 792 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -5720,5 +5803,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 787 "parser.yy"
+#line 794 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5727,5 +5810,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 792 "parser.yy"
+#line 799 "parser.yy"
     { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
     break;
@@ -5734,5 +5817,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 794 "parser.yy"
+#line 801 "parser.yy"
     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     break;
@@ -5741,5 +5824,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 798 "parser.yy"
+#line 805 "parser.yy"
     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     break;
@@ -5748,5 +5831,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 799 "parser.yy"
+#line 806 "parser.yy"
     { (yyval.sn) = new StatementNode( build_default() ); }
     break;
@@ -5755,5 +5838,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 805 "parser.yy"
+#line 812 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
     break;
@@ -5762,5 +5845,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 809 "parser.yy"
+#line 816 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     break;
@@ -5769,6 +5852,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 814 "parser.yy"
-    { (yyval.sn) = 0; }
+#line 821 "parser.yy"
+    { (yyval.sn) = nullptr; }
     break;
 
@@ -5776,5 +5859,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 820 "parser.yy"
+#line 827 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     break;
@@ -5783,5 +5866,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 822 "parser.yy"
+#line 829 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
     break;
@@ -5790,6 +5873,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 827 "parser.yy"
-    { (yyval.sn) = 0; }
+#line 834 "parser.yy"
+    { (yyval.sn) = nullptr; }
     break;
 
@@ -5797,5 +5880,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 833 "parser.yy"
+#line 840 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     break;
@@ -5804,5 +5887,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 835 "parser.yy"
+#line 842 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     break;
@@ -5811,5 +5894,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 837 "parser.yy"
+#line 844 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     break;
@@ -5818,5 +5901,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 839 "parser.yy"
+#line 846 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     break;
@@ -5825,5 +5908,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 844 "parser.yy"
+#line 851 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     break;
@@ -5832,6 +5915,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 850 "parser.yy"
-    { (yyval.sn) = 0; }
+#line 857 "parser.yy"
+    { (yyval.sn) = nullptr; }
     break;
 
@@ -5839,6 +5922,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 852 "parser.yy"
-    { (yyval.sn) = 0; }
+#line 859 "parser.yy"
+    { (yyval.sn) = nullptr; }
     break;
 
@@ -5846,5 +5929,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 857 "parser.yy"
+#line 864 "parser.yy"
     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5853,5 +5936,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 859 "parser.yy"
+#line 866 "parser.yy"
     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
     break;
@@ -5860,5 +5943,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 861 "parser.yy"
+#line 868 "parser.yy"
     { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     break;
@@ -5867,5 +5950,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 866 "parser.yy"
+#line 873 "parser.yy"
     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     break;
@@ -5874,5 +5957,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 868 "parser.yy"
+#line 875 "parser.yy"
     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     break;
@@ -5881,5 +5964,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 873 "parser.yy"
+#line 880 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
     break;
@@ -5888,5 +5971,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 877 "parser.yy"
+#line 884 "parser.yy"
     { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -5895,5 +5978,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 880 "parser.yy"
+#line 887 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
     break;
@@ -5902,5 +5985,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 884 "parser.yy"
+#line 891 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
     break;
@@ -5909,5 +5992,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 887 "parser.yy"
+#line 894 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     break;
@@ -5916,5 +5999,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 891 "parser.yy"
+#line 898 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
     break;
@@ -5923,5 +6006,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 893 "parser.yy"
+#line 900 "parser.yy"
     { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -5930,5 +6013,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 895 "parser.yy"
+#line 902 "parser.yy"
     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -5937,5 +6020,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 897 "parser.yy"
+#line 904 "parser.yy"
     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -5944,5 +6027,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 899 "parser.yy"
+#line 906 "parser.yy"
     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
     break;
@@ -5951,5 +6034,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 904 "parser.yy"
+#line 911 "parser.yy"
     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     break;
@@ -5958,5 +6041,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 906 "parser.yy"
+#line 913 "parser.yy"
     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
     break;
@@ -5965,5 +6048,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 908 "parser.yy"
+#line 915 "parser.yy"
     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     break;
@@ -5972,5 +6055,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 915 "parser.yy"
+#line 922 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
@@ -5979,5 +6062,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 917 "parser.yy"
+#line 924 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
@@ -5986,5 +6069,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 919 "parser.yy"
+#line 926 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
@@ -5993,5 +6076,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 921 "parser.yy"
+#line 928 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
@@ -6000,5 +6083,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 926 "parser.yy"
+#line 933 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
@@ -6007,5 +6090,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 928 "parser.yy"
+#line 935 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     break;
@@ -6014,5 +6097,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 930 "parser.yy"
+#line 937 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
@@ -6021,5 +6104,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 932 "parser.yy"
+#line 939 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     break;
@@ -6028,5 +6111,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 937 "parser.yy"
+#line 944 "parser.yy"
     {
 			(yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
@@ -6037,5 +6120,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 950 "parser.yy"
+#line 957 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6047,5 +6130,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 955 "parser.yy"
+#line 962 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6054,5 +6137,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 957 "parser.yy"
+#line 964 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6064,5 +6147,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 966 "parser.yy"
+#line 973 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
     break;
@@ -6071,5 +6154,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 968 "parser.yy"
+#line 975 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
     break;
@@ -6078,5 +6161,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 970 "parser.yy"
+#line 977 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
     break;
@@ -6085,5 +6168,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 972 "parser.yy"
+#line 979 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
     break;
@@ -6092,5 +6175,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 974 "parser.yy"
+#line 981 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
     break;
@@ -6099,5 +6182,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 979 "parser.yy"
+#line 986 "parser.yy"
     { (yyval.flag) = false; }
     break;
@@ -6106,5 +6189,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 981 "parser.yy"
+#line 988 "parser.yy"
     { (yyval.flag) = true; }
     break;
@@ -6113,6 +6196,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 986 "parser.yy"
-    { (yyval.en) = 0; }
+#line 993 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
@@ -6120,5 +6203,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 993 "parser.yy"
+#line 1000 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -6127,5 +6210,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 998 "parser.yy"
+#line 1005 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -6134,5 +6217,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1000 "parser.yy"
+#line 1007 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     break;
@@ -6141,6 +6224,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 1005 "parser.yy"
-    { (yyval.en) = 0; }
+#line 1012 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
@@ -6148,5 +6231,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1007 "parser.yy"
+#line 1014 "parser.yy"
     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
@@ -6155,5 +6238,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1009 "parser.yy"
+#line 1017 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
     break;
@@ -6162,5 +6245,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1014 "parser.yy"
+#line 1022 "parser.yy"
     {
 			(yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
@@ -6172,5 +6255,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1019 "parser.yy"
+#line 1027 "parser.yy"
     {
 			(yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
@@ -6182,6 +6265,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 1029 "parser.yy"
-    { (yyval.decl) = 0; }
+#line 1037 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
@@ -6189,5 +6272,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1036 "parser.yy"
+#line 1044 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6196,6 +6279,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 1041 "parser.yy"
-    { (yyval.decl) = 0; }
+#line 1049 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
@@ -6203,5 +6286,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1048 "parser.yy"
+#line 1056 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6210,5 +6293,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1062 "parser.yy"
+#line 1070 "parser.yy"
     {}
     break;
@@ -6217,5 +6300,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1063 "parser.yy"
+#line 1071 "parser.yy"
     {}
     break;
@@ -6224,5 +6307,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1092 "parser.yy"
+#line 1100 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6234,5 +6317,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1099 "parser.yy"
+#line 1107 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6244,5 +6327,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1104 "parser.yy"
+#line 1112 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
@@ -6254,8 +6337,8 @@
 
 /* Line 1806 of yacc.c  */
-#line 1114 "parser.yy"
+#line 1122 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
-			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
+			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
 		}
     break;
@@ -6264,8 +6347,8 @@
 
 /* Line 1806 of yacc.c  */
-#line 1119 "parser.yy"
+#line 1127 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
-			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
+			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
 		}
     break;
@@ -6274,8 +6357,8 @@
 
 /* Line 1806 of yacc.c  */
-#line 1124 "parser.yy"
+#line 1132 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
-			(yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) );
+			(yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) )->addAsmName( (yyvsp[(4) - (4)].constant) );
 		}
     break;
@@ -6284,5 +6367,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1132 "parser.yy"
+#line 1140 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6294,5 +6377,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1137 "parser.yy"
+#line 1145 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6304,5 +6387,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1142 "parser.yy"
+#line 1150 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6314,5 +6397,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1147 "parser.yy"
+#line 1155 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6324,5 +6407,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1152 "parser.yy"
+#line 1160 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -6334,5 +6417,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1183 "parser.yy"
+#line 1191 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6343,5 +6426,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1187 "parser.yy"
+#line 1195 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6352,5 +6435,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1194 "parser.yy"
+#line 1202 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -6359,5 +6442,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1198 "parser.yy"
+#line 1206 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     break;
@@ -6366,5 +6449,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1203 "parser.yy"
+#line 1211 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6376,5 +6459,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1208 "parser.yy"
+#line 1216 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6386,5 +6469,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1213 "parser.yy"
+#line 1221 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
@@ -6396,5 +6479,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1224 "parser.yy"
+#line 1232 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6406,5 +6489,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1229 "parser.yy"
+#line 1237 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6416,5 +6499,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1234 "parser.yy"
+#line 1242 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6426,5 +6509,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1239 "parser.yy"
+#line 1247 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6436,5 +6519,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1244 "parser.yy"
+#line 1252 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6446,5 +6529,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1253 "parser.yy"
+#line 1261 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
@@ -6456,5 +6539,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1258 "parser.yy"
+#line 1266 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
@@ -6466,8 +6549,8 @@
 
 /* Line 1806 of yacc.c  */
-#line 1275 "parser.yy"
+#line 1283 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
+			(yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addAsmName( (yyvsp[(3) - (4)].constant) )->addInitializer( (yyvsp[(4) - (4)].in) );
 		}
     break;
@@ -6476,8 +6559,8 @@
 
 /* Line 1806 of yacc.c  */
-#line 1280 "parser.yy"
+#line 1288 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
+			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addAsmName( (yyvsp[(5) - (6)].constant) )->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
 		}
     break;
@@ -6486,6 +6569,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 1302 "parser.yy"
-    { (yyval.decl) = 0; }
+#line 1310 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
@@ -6493,5 +6576,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1314 "parser.yy"
+#line 1322 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6500,5 +6583,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1325 "parser.yy"
+#line 1333 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     break;
@@ -6507,5 +6590,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1327 "parser.yy"
+#line 1335 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     break;
@@ -6514,5 +6597,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1329 "parser.yy"
+#line 1337 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     break;
@@ -6521,5 +6604,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1331 "parser.yy"
+#line 1339 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     break;
@@ -6528,5 +6611,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1333 "parser.yy"
+#line 1341 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     break;
@@ -6535,5 +6618,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1335 "parser.yy"
+#line 1343 "parser.yy"
     {
 			typedefTable.enterScope();
@@ -6544,5 +6627,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1339 "parser.yy"
+#line 1347 "parser.yy"
     {
 			typedefTable.leaveScope();
@@ -6554,5 +6637,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1348 "parser.yy"
+#line 1356 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6561,5 +6644,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1350 "parser.yy"
+#line 1358 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6568,5 +6651,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1361 "parser.yy"
+#line 1369 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6575,5 +6658,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1366 "parser.yy"
+#line 1374 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     break;
@@ -6582,5 +6665,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1368 "parser.yy"
+#line 1376 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     break;
@@ -6589,5 +6672,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1370 "parser.yy"
+#line 1378 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     break;
@@ -6596,5 +6679,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1372 "parser.yy"
+#line 1380 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     break;
@@ -6603,5 +6686,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1375 "parser.yy"
+#line 1383 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
     break;
@@ -6610,5 +6693,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1377 "parser.yy"
+#line 1385 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     break;
@@ -6617,5 +6700,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1380 "parser.yy"
+#line 1388 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
     break;
@@ -6624,5 +6707,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1382 "parser.yy"
+#line 1390 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     break;
@@ -6631,5 +6714,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1387 "parser.yy"
+#line 1395 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     break;
@@ -6638,5 +6721,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1389 "parser.yy"
+#line 1397 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     break;
@@ -6645,5 +6728,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1391 "parser.yy"
+#line 1399 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     break;
@@ -6652,5 +6735,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1393 "parser.yy"
+#line 1401 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     break;
@@ -6659,5 +6742,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1395 "parser.yy"
+#line 1403 "parser.yy"
     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
     break;
@@ -6666,5 +6749,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1397 "parser.yy"
+#line 1405 "parser.yy"
     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
     break;
@@ -6673,5 +6756,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1399 "parser.yy"
+#line 1407 "parser.yy"
     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
     break;
@@ -6680,5 +6763,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1401 "parser.yy"
+#line 1409 "parser.yy"
     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
     break;
@@ -6687,5 +6770,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1403 "parser.yy"
+#line 1411 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     break;
@@ -6694,5 +6777,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1405 "parser.yy"
+#line 1413 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     break;
@@ -6701,5 +6784,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1407 "parser.yy"
+#line 1415 "parser.yy"
     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
     break;
@@ -6708,5 +6791,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1409 "parser.yy"
+#line 1417 "parser.yy"
     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
     break;
@@ -6715,180 +6798,194 @@
 
 /* Line 1806 of yacc.c  */
-#line 1411 "parser.yy"
+#line 1419 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     break;
 
+  case 337:
+
+/* Line 1806 of yacc.c  */
+#line 1421 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
+    break;
+
   case 338:
 
 /* Line 1806 of yacc.c  */
-#line 1418 "parser.yy"
+#line 1423 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
+    break;
+
+  case 340:
+
+/* Line 1806 of yacc.c  */
+#line 1430 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 339:
-
-/* Line 1806 of yacc.c  */
-#line 1420 "parser.yy"
+  case 341:
+
+/* Line 1806 of yacc.c  */
+#line 1432 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 340:
-
-/* Line 1806 of yacc.c  */
-#line 1422 "parser.yy"
+  case 342:
+
+/* Line 1806 of yacc.c  */
+#line 1434 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
-  case 341:
-
-/* Line 1806 of yacc.c  */
-#line 1424 "parser.yy"
+  case 343:
+
+/* Line 1806 of yacc.c  */
+#line 1436 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     break;
 
-  case 343:
-
-/* Line 1806 of yacc.c  */
-#line 1430 "parser.yy"
+  case 345:
+
+/* Line 1806 of yacc.c  */
+#line 1442 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
-  case 345:
-
-/* Line 1806 of yacc.c  */
-#line 1437 "parser.yy"
+  case 347:
+
+/* Line 1806 of yacc.c  */
+#line 1449 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 346:
-
-/* Line 1806 of yacc.c  */
-#line 1439 "parser.yy"
+  case 348:
+
+/* Line 1806 of yacc.c  */
+#line 1451 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 347:
-
-/* Line 1806 of yacc.c  */
-#line 1441 "parser.yy"
+  case 349:
+
+/* Line 1806 of yacc.c  */
+#line 1453 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 348:
-
-/* Line 1806 of yacc.c  */
-#line 1446 "parser.yy"
+  case 350:
+
+/* Line 1806 of yacc.c  */
+#line 1458 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     break;
 
-  case 349:
-
-/* Line 1806 of yacc.c  */
-#line 1448 "parser.yy"
+  case 351:
+
+/* Line 1806 of yacc.c  */
+#line 1460 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     break;
 
-  case 350:
-
-/* Line 1806 of yacc.c  */
-#line 1450 "parser.yy"
+  case 352:
+
+/* Line 1806 of yacc.c  */
+#line 1462 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     break;
 
-  case 351:
-
-/* Line 1806 of yacc.c  */
-#line 1452 "parser.yy"
+  case 353:
+
+/* Line 1806 of yacc.c  */
+#line 1464 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
 
-  case 353:
-
-/* Line 1806 of yacc.c  */
-#line 1458 "parser.yy"
+  case 355:
+
+/* Line 1806 of yacc.c  */
+#line 1470 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 354:
-
-/* Line 1806 of yacc.c  */
-#line 1460 "parser.yy"
+  case 356:
+
+/* Line 1806 of yacc.c  */
+#line 1472 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 355:
-
-/* Line 1806 of yacc.c  */
-#line 1462 "parser.yy"
+  case 357:
+
+/* Line 1806 of yacc.c  */
+#line 1474 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
-  case 357:
-
-/* Line 1806 of yacc.c  */
-#line 1468 "parser.yy"
+  case 359:
+
+/* Line 1806 of yacc.c  */
+#line 1480 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 358:
-
-/* Line 1806 of yacc.c  */
-#line 1470 "parser.yy"
+  case 360:
+
+/* Line 1806 of yacc.c  */
+#line 1482 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 360:
-
-/* Line 1806 of yacc.c  */
-#line 1476 "parser.yy"
+  case 362:
+
+/* Line 1806 of yacc.c  */
+#line 1488 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 361:
-
-/* Line 1806 of yacc.c  */
-#line 1478 "parser.yy"
+  case 363:
+
+/* Line 1806 of yacc.c  */
+#line 1490 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 362:
-
-/* Line 1806 of yacc.c  */
-#line 1480 "parser.yy"
+  case 364:
+
+/* Line 1806 of yacc.c  */
+#line 1492 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
-  case 363:
-
-/* Line 1806 of yacc.c  */
-#line 1485 "parser.yy"
+  case 365:
+
+/* Line 1806 of yacc.c  */
+#line 1497 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     break;
 
-  case 364:
-
-/* Line 1806 of yacc.c  */
-#line 1487 "parser.yy"
+  case 366:
+
+/* Line 1806 of yacc.c  */
+#line 1499 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 365:
-
-/* Line 1806 of yacc.c  */
-#line 1489 "parser.yy"
+  case 367:
+
+/* Line 1806 of yacc.c  */
+#line 1501 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 368:
-
-/* Line 1806 of yacc.c  */
-#line 1499 "parser.yy"
+  case 370:
+
+/* Line 1806 of yacc.c  */
+#line 1511 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
     break;
 
-  case 369:
-
-/* Line 1806 of yacc.c  */
-#line 1501 "parser.yy"
+  case 371:
+
+/* Line 1806 of yacc.c  */
+#line 1513 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -6897,58 +6994,51 @@
     break;
 
-  case 370:
-
-/* Line 1806 of yacc.c  */
-#line 1506 "parser.yy"
+  case 372:
+
+/* Line 1806 of yacc.c  */
+#line 1518 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
 
-  case 371:
-
-/* Line 1806 of yacc.c  */
-#line 1508 "parser.yy"
+  case 373:
+
+/* Line 1806 of yacc.c  */
+#line 1520 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
     break;
 
-  case 372:
-
-/* Line 1806 of yacc.c  */
-#line 1510 "parser.yy"
+  case 374:
+
+/* Line 1806 of yacc.c  */
+#line 1522 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     break;
 
-  case 373:
-
-/* Line 1806 of yacc.c  */
-#line 1512 "parser.yy"
+  case 375:
+
+/* Line 1806 of yacc.c  */
+#line 1524 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
 
-  case 374:
-
-/* Line 1806 of yacc.c  */
-#line 1517 "parser.yy"
+  case 376:
+
+/* Line 1806 of yacc.c  */
+#line 1529 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Struct; }
     break;
 
-  case 375:
-
-/* Line 1806 of yacc.c  */
-#line 1519 "parser.yy"
+  case 377:
+
+/* Line 1806 of yacc.c  */
+#line 1531 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Union; }
     break;
 
-  case 376:
-
-/* Line 1806 of yacc.c  */
-#line 1524 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 377:
-
-/* Line 1806 of yacc.c  */
-#line 1526 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
+  case 378:
+
+/* Line 1806 of yacc.c  */
+#line 1536 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
@@ -6956,12 +7046,19 @@
 
 /* Line 1806 of yacc.c  */
-#line 1532 "parser.yy"
+#line 1538 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
+    break;
+
+  case 381:
+
+/* Line 1806 of yacc.c  */
+#line 1544 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     break;
 
-  case 381:
-
-/* Line 1806 of yacc.c  */
-#line 1535 "parser.yy"
+  case 383:
+
+/* Line 1806 of yacc.c  */
+#line 1547 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -6971,99 +7068,99 @@
     break;
 
-  case 383:
-
-/* Line 1806 of yacc.c  */
-#line 1545 "parser.yy"
+  case 385:
+
+/* Line 1806 of yacc.c  */
+#line 1557 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     break;
 
-  case 384:
-
-/* Line 1806 of yacc.c  */
-#line 1547 "parser.yy"
+  case 386:
+
+/* Line 1806 of yacc.c  */
+#line 1559 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     break;
 
-  case 385:
-
-/* Line 1806 of yacc.c  */
-#line 1549 "parser.yy"
+  case 387:
+
+/* Line 1806 of yacc.c  */
+#line 1561 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     break;
 
-  case 386:
-
-/* Line 1806 of yacc.c  */
-#line 1554 "parser.yy"
+  case 388:
+
+/* Line 1806 of yacc.c  */
+#line 1566 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 387:
-
-/* Line 1806 of yacc.c  */
-#line 1556 "parser.yy"
+  case 389:
+
+/* Line 1806 of yacc.c  */
+#line 1568 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     break;
 
-  case 388:
-
-/* Line 1806 of yacc.c  */
-#line 1561 "parser.yy"
+  case 390:
+
+/* Line 1806 of yacc.c  */
+#line 1573 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     break;
 
-  case 389:
-
-/* Line 1806 of yacc.c  */
-#line 1563 "parser.yy"
+  case 391:
+
+/* Line 1806 of yacc.c  */
+#line 1575 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     break;
 
-  case 390:
-
-/* Line 1806 of yacc.c  */
-#line 1566 "parser.yy"
+  case 392:
+
+/* Line 1806 of yacc.c  */
+#line 1578 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
 
-  case 391:
-
-/* Line 1806 of yacc.c  */
-#line 1569 "parser.yy"
+  case 393:
+
+/* Line 1806 of yacc.c  */
+#line 1581 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
 
-  case 393:
-
-/* Line 1806 of yacc.c  */
-#line 1575 "parser.yy"
-    { (yyval.en) = 0; }
-    break;
-
-  case 394:
-
-/* Line 1806 of yacc.c  */
-#line 1577 "parser.yy"
+  case 395:
+
+/* Line 1806 of yacc.c  */
+#line 1587 "parser.yy"
+    { (yyval.en) = nullptr; }
+    break;
+
+  case 396:
+
+/* Line 1806 of yacc.c  */
+#line 1589 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
 
-  case 395:
-
-/* Line 1806 of yacc.c  */
-#line 1582 "parser.yy"
+  case 397:
+
+/* Line 1806 of yacc.c  */
+#line 1594 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
 
-  case 397:
-
-/* Line 1806 of yacc.c  */
-#line 1591 "parser.yy"
+  case 399:
+
+/* Line 1806 of yacc.c  */
+#line 1603 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
     break;
 
-  case 398:
-
-/* Line 1806 of yacc.c  */
-#line 1593 "parser.yy"
+  case 400:
+
+/* Line 1806 of yacc.c  */
+#line 1605 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -7072,75 +7169,54 @@
     break;
 
-  case 399:
-
-/* Line 1806 of yacc.c  */
-#line 1598 "parser.yy"
+  case 401:
+
+/* Line 1806 of yacc.c  */
+#line 1610 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
 
-  case 400:
-
-/* Line 1806 of yacc.c  */
-#line 1600 "parser.yy"
+  case 402:
+
+/* Line 1806 of yacc.c  */
+#line 1612 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     break;
 
-  case 401:
-
-/* Line 1806 of yacc.c  */
-#line 1605 "parser.yy"
+  case 403:
+
+/* Line 1806 of yacc.c  */
+#line 1617 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     break;
 
-  case 402:
-
-/* Line 1806 of yacc.c  */
-#line 1607 "parser.yy"
+  case 404:
+
+/* Line 1806 of yacc.c  */
+#line 1619 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     break;
 
-  case 403:
-
-/* Line 1806 of yacc.c  */
-#line 1612 "parser.yy"
-    { (yyval.en) = 0; }
-    break;
-
-  case 404:
-
-/* Line 1806 of yacc.c  */
-#line 1614 "parser.yy"
+  case 405:
+
+/* Line 1806 of yacc.c  */
+#line 1624 "parser.yy"
+    { (yyval.en) = nullptr; }
+    break;
+
+  case 406:
+
+/* Line 1806 of yacc.c  */
+#line 1626 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
 
-  case 405:
-
-/* Line 1806 of yacc.c  */
-#line 1621 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 409:
-
-/* Line 1806 of yacc.c  */
-#line 1629 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
-    break;
-
-  case 410:
-
-/* Line 1806 of yacc.c  */
-#line 1631 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
+  case 407:
+
+/* Line 1806 of yacc.c  */
+#line 1633 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 411:
-
-/* Line 1806 of yacc.c  */
-#line 1633 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
-    break;
-
-  case 413:
 
 /* Line 1806 of yacc.c  */
@@ -7149,350 +7225,371 @@
     break;
 
-  case 414:
+  case 412:
 
 /* Line 1806 of yacc.c  */
 #line 1643 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
+    break;
+
+  case 413:
+
+/* Line 1806 of yacc.c  */
+#line 1645 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
+    break;
+
+  case 415:
+
+/* Line 1806 of yacc.c  */
+#line 1653 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
-  case 415:
-
-/* Line 1806 of yacc.c  */
-#line 1645 "parser.yy"
+  case 416:
+
+/* Line 1806 of yacc.c  */
+#line 1655 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 417:
+
+/* Line 1806 of yacc.c  */
+#line 1657 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     break;
 
-  case 417:
-
-/* Line 1806 of yacc.c  */
-#line 1651 "parser.yy"
+  case 419:
+
+/* Line 1806 of yacc.c  */
+#line 1663 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
-  case 418:
-
-/* Line 1806 of yacc.c  */
-#line 1656 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 421:
-
-/* Line 1806 of yacc.c  */
-#line 1663 "parser.yy"
+  case 420:
+
+/* Line 1806 of yacc.c  */
+#line 1668 "parser.yy"
+    { (yyval.decl) = nullptr; }
+    break;
+
+  case 423:
+
+/* Line 1806 of yacc.c  */
+#line 1675 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
 
-  case 424:
-
-/* Line 1806 of yacc.c  */
-#line 1670 "parser.yy"
+  case 426:
+
+/* Line 1806 of yacc.c  */
+#line 1682 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
-  case 425:
-
-/* Line 1806 of yacc.c  */
-#line 1672 "parser.yy"
+  case 427:
+
+/* Line 1806 of yacc.c  */
+#line 1684 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
-  case 427:
-
-/* Line 1806 of yacc.c  */
-#line 1681 "parser.yy"
+  case 429:
+
+/* Line 1806 of yacc.c  */
+#line 1693 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
 
-  case 428:
-
-/* Line 1806 of yacc.c  */
-#line 1684 "parser.yy"
+  case 430:
+
+/* Line 1806 of yacc.c  */
+#line 1696 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
 
-  case 429:
-
-/* Line 1806 of yacc.c  */
-#line 1686 "parser.yy"
+  case 431:
+
+/* Line 1806 of yacc.c  */
+#line 1698 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     break;
 
-  case 434:
-
-/* Line 1806 of yacc.c  */
-#line 1696 "parser.yy"
+  case 436:
+
+/* Line 1806 of yacc.c  */
+#line 1708 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 436:
-
-/* Line 1806 of yacc.c  */
-#line 1702 "parser.yy"
+  case 438:
+
+/* Line 1806 of yacc.c  */
+#line 1714 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr );
 		}
     break;
 
-  case 437:
-
-/* Line 1806 of yacc.c  */
-#line 1707 "parser.yy"
+  case 439:
+
+/* Line 1806 of yacc.c  */
+#line 1719 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr );
 		}
     break;
 
-  case 439:
-
-/* Line 1806 of yacc.c  */
-#line 1716 "parser.yy"
+  case 441:
+
+/* Line 1806 of yacc.c  */
+#line 1728 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 440:
-
-/* Line 1806 of yacc.c  */
-#line 1725 "parser.yy"
+  case 442:
+
+/* Line 1806 of yacc.c  */
+#line 1737 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     break;
 
-  case 441:
-
-/* Line 1806 of yacc.c  */
-#line 1727 "parser.yy"
+  case 443:
+
+/* Line 1806 of yacc.c  */
+#line 1739 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     break;
 
-  case 453:
-
-/* Line 1806 of yacc.c  */
-#line 1752 "parser.yy"
+  case 455:
+
+/* Line 1806 of yacc.c  */
+#line 1764 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 457:
-
-/* Line 1806 of yacc.c  */
-#line 1760 "parser.yy"
+  case 459:
+
+/* Line 1806 of yacc.c  */
+#line 1772 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 458:
-
-/* Line 1806 of yacc.c  */
-#line 1765 "parser.yy"
-    { (yyval.in) = 0; }
-    break;
-
-  case 459:
-
-/* Line 1806 of yacc.c  */
-#line 1767 "parser.yy"
+  case 460:
+
+/* Line 1806 of yacc.c  */
+#line 1777 "parser.yy"
+    { (yyval.in) = nullptr; }
+    break;
+
+  case 461:
+
+/* Line 1806 of yacc.c  */
+#line 1779 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
 
-  case 460:
-
-/* Line 1806 of yacc.c  */
-#line 1769 "parser.yy"
+  case 462:
+
+/* Line 1806 of yacc.c  */
+#line 1781 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     break;
 
-  case 461:
-
-/* Line 1806 of yacc.c  */
-#line 1773 "parser.yy"
+  case 463:
+
+/* Line 1806 of yacc.c  */
+#line 1785 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     break;
 
-  case 462:
-
-/* Line 1806 of yacc.c  */
-#line 1774 "parser.yy"
+  case 464:
+
+/* Line 1806 of yacc.c  */
+#line 1786 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     break;
 
-  case 463:
-
-/* Line 1806 of yacc.c  */
-#line 1779 "parser.yy"
-    { (yyval.in) = 0; }
-    break;
-
   case 465:
 
 /* Line 1806 of yacc.c  */
-#line 1781 "parser.yy"
+#line 1791 "parser.yy"
+    { (yyval.in) = nullptr; }
+    break;
+
+  case 467:
+
+/* Line 1806 of yacc.c  */
+#line 1793 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     break;
 
-  case 466:
-
-/* Line 1806 of yacc.c  */
-#line 1782 "parser.yy"
+  case 468:
+
+/* Line 1806 of yacc.c  */
+#line 1794 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     break;
 
-  case 467:
-
-/* Line 1806 of yacc.c  */
-#line 1784 "parser.yy"
+  case 469:
+
+/* Line 1806 of yacc.c  */
+#line 1796 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     break;
 
-  case 469:
-
-/* Line 1806 of yacc.c  */
-#line 1800 "parser.yy"
+  case 471:
+
+/* Line 1806 of yacc.c  */
+#line 1812 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     break;
 
-  case 471:
-
-/* Line 1806 of yacc.c  */
-#line 1806 "parser.yy"
+  case 473:
+
+/* Line 1806 of yacc.c  */
+#line 1818 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     break;
 
-  case 472:
-
-/* Line 1806 of yacc.c  */
-#line 1812 "parser.yy"
+  case 474:
+
+/* Line 1806 of yacc.c  */
+#line 1824 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     break;
 
-  case 473:
-
-/* Line 1806 of yacc.c  */
-#line 1815 "parser.yy"
+  case 475:
+
+/* Line 1806 of yacc.c  */
+#line 1827 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
 
-  case 474:
-
-/* Line 1806 of yacc.c  */
-#line 1817 "parser.yy"
+  case 476:
+
+/* Line 1806 of yacc.c  */
+#line 1829 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
 
-  case 475:
-
-/* Line 1806 of yacc.c  */
-#line 1819 "parser.yy"
+  case 477:
+
+/* Line 1806 of yacc.c  */
+#line 1831 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     break;
 
-  case 476:
-
-/* Line 1806 of yacc.c  */
-#line 1821 "parser.yy"
+  case 478:
+
+/* Line 1806 of yacc.c  */
+#line 1833 "parser.yy"
     { (yyval.en) = (yyvsp[(4) - (6)].en); }
     break;
 
-  case 478:
-
-/* Line 1806 of yacc.c  */
-#line 1845 "parser.yy"
+  case 480:
+
+/* Line 1806 of yacc.c  */
+#line 1857 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 479:
-
-/* Line 1806 of yacc.c  */
-#line 1847 "parser.yy"
+  case 481:
+
+/* Line 1806 of yacc.c  */
+#line 1859 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 480:
-
-/* Line 1806 of yacc.c  */
-#line 1849 "parser.yy"
+  case 482:
+
+/* Line 1806 of yacc.c  */
+#line 1861 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
-  case 482:
-
-/* Line 1806 of yacc.c  */
-#line 1855 "parser.yy"
+  case 484:
+
+/* Line 1806 of yacc.c  */
+#line 1867 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 483:
-
-/* Line 1806 of yacc.c  */
-#line 1857 "parser.yy"
+  case 485:
+
+/* Line 1806 of yacc.c  */
+#line 1869 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 484:
-
-/* Line 1806 of yacc.c  */
-#line 1862 "parser.yy"
+  case 486:
+
+/* Line 1806 of yacc.c  */
+#line 1874 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
 
-  case 486:
-
-/* Line 1806 of yacc.c  */
-#line 1868 "parser.yy"
+  case 488:
+
+/* Line 1806 of yacc.c  */
+#line 1880 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     break;
 
-  case 487:
-
-/* Line 1806 of yacc.c  */
-#line 1873 "parser.yy"
+  case 489:
+
+/* Line 1806 of yacc.c  */
+#line 1885 "parser.yy"
     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     break;
 
-  case 488:
-
-/* Line 1806 of yacc.c  */
-#line 1875 "parser.yy"
+  case 490:
+
+/* Line 1806 of yacc.c  */
+#line 1887 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 490:
-
-/* Line 1806 of yacc.c  */
-#line 1881 "parser.yy"
+  case 492:
+
+/* Line 1806 of yacc.c  */
+#line 1893 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Otype; }
     break;
 
-  case 491:
-
-/* Line 1806 of yacc.c  */
-#line 1883 "parser.yy"
+  case 493:
+
+/* Line 1806 of yacc.c  */
+#line 1895 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Ftype; }
     break;
 
-  case 492:
-
-/* Line 1806 of yacc.c  */
-#line 1885 "parser.yy"
+  case 494:
+
+/* Line 1806 of yacc.c  */
+#line 1897 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Dtype; }
     break;
 
-  case 493:
-
-/* Line 1806 of yacc.c  */
-#line 1890 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 494:
-
-/* Line 1806 of yacc.c  */
-#line 1892 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
-    break;
-
   case 495:
 
 /* Line 1806 of yacc.c  */
-#line 1897 "parser.yy"
+#line 1902 "parser.yy"
+    { (yyval.decl) = nullptr; }
+    break;
+
+  case 496:
+
+/* Line 1806 of yacc.c  */
+#line 1904 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
+    break;
+
+  case 497:
+
+/* Line 1806 of yacc.c  */
+#line 1909 "parser.yy"
     {
 			typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
@@ -7501,78 +7598,78 @@
     break;
 
-  case 496:
-
-/* Line 1806 of yacc.c  */
-#line 1902 "parser.yy"
+  case 498:
+
+/* Line 1806 of yacc.c  */
+#line 1914 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     break;
 
-  case 497:
-
-/* Line 1806 of yacc.c  */
-#line 1904 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 498:
-
-/* Line 1806 of yacc.c  */
-#line 1909 "parser.yy"
+  case 499:
+
+/* Line 1806 of yacc.c  */
+#line 1916 "parser.yy"
+    { (yyval.decl) = nullptr; }
+    break;
+
+  case 500:
+
+/* Line 1806 of yacc.c  */
+#line 1921 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     break;
 
-  case 500:
-
-/* Line 1806 of yacc.c  */
-#line 1912 "parser.yy"
+  case 502:
+
+/* Line 1806 of yacc.c  */
+#line 1924 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     break;
 
-  case 501:
-
-/* Line 1806 of yacc.c  */
-#line 1914 "parser.yy"
+  case 503:
+
+/* Line 1806 of yacc.c  */
+#line 1926 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
 
-  case 502:
-
-/* Line 1806 of yacc.c  */
-#line 1919 "parser.yy"
+  case 504:
+
+/* Line 1806 of yacc.c  */
+#line 1931 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
 
-  case 503:
-
-/* Line 1806 of yacc.c  */
-#line 1921 "parser.yy"
+  case 505:
+
+/* Line 1806 of yacc.c  */
+#line 1933 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     break;
 
-  case 504:
-
-/* Line 1806 of yacc.c  */
-#line 1923 "parser.yy"
+  case 506:
+
+/* Line 1806 of yacc.c  */
+#line 1935 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
-  case 505:
-
-/* Line 1806 of yacc.c  */
-#line 1928 "parser.yy"
+  case 507:
+
+/* Line 1806 of yacc.c  */
+#line 1940 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 506:
-
-/* Line 1806 of yacc.c  */
-#line 1930 "parser.yy"
+  case 508:
+
+/* Line 1806 of yacc.c  */
+#line 1942 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 507:
-
-/* Line 1806 of yacc.c  */
-#line 1935 "parser.yy"
+  case 509:
+
+/* Line 1806 of yacc.c  */
+#line 1947 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
@@ -7581,8 +7678,8 @@
     break;
 
-  case 508:
-
-/* Line 1806 of yacc.c  */
-#line 1940 "parser.yy"
+  case 510:
+
+/* Line 1806 of yacc.c  */
+#line 1952 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
@@ -7591,8 +7688,8 @@
     break;
 
-  case 509:
-
-/* Line 1806 of yacc.c  */
-#line 1948 "parser.yy"
+  case 511:
+
+/* Line 1806 of yacc.c  */
+#line 1960 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
@@ -7601,8 +7698,8 @@
     break;
 
-  case 510:
-
-/* Line 1806 of yacc.c  */
-#line 1953 "parser.yy"
+  case 512:
+
+/* Line 1806 of yacc.c  */
+#line 1965 "parser.yy"
     {
 			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
@@ -7611,8 +7708,8 @@
     break;
 
-  case 511:
-
-/* Line 1806 of yacc.c  */
-#line 1958 "parser.yy"
+  case 513:
+
+/* Line 1806 of yacc.c  */
+#line 1970 "parser.yy"
     {
 			typedefTable.leaveTrait();
@@ -7622,15 +7719,15 @@
     break;
 
-  case 513:
-
-/* Line 1806 of yacc.c  */
-#line 1968 "parser.yy"
+  case 515:
+
+/* Line 1806 of yacc.c  */
+#line 1980 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
-  case 516:
-
-/* Line 1806 of yacc.c  */
-#line 1978 "parser.yy"
+  case 518:
+
+/* Line 1806 of yacc.c  */
+#line 1990 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7639,8 +7736,8 @@
     break;
 
-  case 517:
-
-/* Line 1806 of yacc.c  */
-#line 1983 "parser.yy"
+  case 519:
+
+/* Line 1806 of yacc.c  */
+#line 1995 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7649,8 +7746,8 @@
     break;
 
-  case 518:
-
-/* Line 1806 of yacc.c  */
-#line 1988 "parser.yy"
+  case 520:
+
+/* Line 1806 of yacc.c  */
+#line 2000 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -7659,8 +7756,8 @@
     break;
 
-  case 519:
-
-/* Line 1806 of yacc.c  */
-#line 1996 "parser.yy"
+  case 521:
+
+/* Line 1806 of yacc.c  */
+#line 2008 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7669,8 +7766,8 @@
     break;
 
-  case 520:
-
-/* Line 1806 of yacc.c  */
-#line 2001 "parser.yy"
+  case 522:
+
+/* Line 1806 of yacc.c  */
+#line 2013 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7679,43 +7776,43 @@
     break;
 
-  case 521:
-
-/* Line 1806 of yacc.c  */
-#line 2011 "parser.yy"
+  case 523:
+
+/* Line 1806 of yacc.c  */
+#line 2023 "parser.yy"
     {}
     break;
 
-  case 522:
-
-/* Line 1806 of yacc.c  */
-#line 2013 "parser.yy"
-    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);	}
-    break;
-
   case 524:
 
 /* Line 1806 of yacc.c  */
-#line 2019 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
-    break;
-
-  case 525:
-
-/* Line 1806 of yacc.c  */
-#line 2024 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 529:
-
-/* Line 1806 of yacc.c  */
-#line 2032 "parser.yy"
+#line 2025 "parser.yy"
+    { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);	}
+    break;
+
+  case 526:
+
+/* Line 1806 of yacc.c  */
+#line 2031 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
+    break;
+
+  case 527:
+
+/* Line 1806 of yacc.c  */
+#line 2036 "parser.yy"
+    { (yyval.decl) = nullptr; }
+    break;
+
+  case 531:
+
+/* Line 1806 of yacc.c  */
+#line 2044 "parser.yy"
     {}
     break;
 
-  case 530:
-
-/* Line 1806 of yacc.c  */
-#line 2034 "parser.yy"
+  case 532:
+
+/* Line 1806 of yacc.c  */
+#line 2046 "parser.yy"
     {
 			linkageStack.push( linkage );				// handle nested extern "C"/"Cforall"
@@ -7724,8 +7821,8 @@
     break;
 
-  case 531:
-
-/* Line 1806 of yacc.c  */
-#line 2039 "parser.yy"
+  case 533:
+
+/* Line 1806 of yacc.c  */
+#line 2051 "parser.yy"
     {
 			linkage = linkageStack.top();
@@ -7735,8 +7832,8 @@
     break;
 
-  case 532:
-
-/* Line 1806 of yacc.c  */
-#line 2045 "parser.yy"
+  case 534:
+
+/* Line 1806 of yacc.c  */
+#line 2057 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -7746,8 +7843,8 @@
     break;
 
-  case 534:
-
-/* Line 1806 of yacc.c  */
-#line 2060 "parser.yy"
+  case 536:
+
+/* Line 1806 of yacc.c  */
+#line 2072 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7757,8 +7854,8 @@
     break;
 
-  case 535:
-
-/* Line 1806 of yacc.c  */
-#line 2066 "parser.yy"
+  case 537:
+
+/* Line 1806 of yacc.c  */
+#line 2078 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7768,8 +7865,8 @@
     break;
 
-  case 536:
-
-/* Line 1806 of yacc.c  */
-#line 2075 "parser.yy"
+  case 538:
+
+/* Line 1806 of yacc.c  */
+#line 2087 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7779,8 +7876,8 @@
     break;
 
-  case 537:
-
-/* Line 1806 of yacc.c  */
-#line 2081 "parser.yy"
+  case 539:
+
+/* Line 1806 of yacc.c  */
+#line 2093 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7790,8 +7887,8 @@
     break;
 
-  case 538:
-
-/* Line 1806 of yacc.c  */
-#line 2087 "parser.yy"
+  case 540:
+
+/* Line 1806 of yacc.c  */
+#line 2099 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7801,8 +7898,8 @@
     break;
 
-  case 539:
-
-/* Line 1806 of yacc.c  */
-#line 2093 "parser.yy"
+  case 541:
+
+/* Line 1806 of yacc.c  */
+#line 2105 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7812,8 +7909,8 @@
     break;
 
-  case 540:
-
-/* Line 1806 of yacc.c  */
-#line 2099 "parser.yy"
+  case 542:
+
+/* Line 1806 of yacc.c  */
+#line 2111 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7823,8 +7920,8 @@
     break;
 
-  case 541:
-
-/* Line 1806 of yacc.c  */
-#line 2107 "parser.yy"
+  case 543:
+
+/* Line 1806 of yacc.c  */
+#line 2119 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7834,8 +7931,8 @@
     break;
 
-  case 542:
-
-/* Line 1806 of yacc.c  */
-#line 2113 "parser.yy"
+  case 544:
+
+/* Line 1806 of yacc.c  */
+#line 2125 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7845,8 +7942,8 @@
     break;
 
-  case 543:
-
-/* Line 1806 of yacc.c  */
-#line 2121 "parser.yy"
+  case 545:
+
+/* Line 1806 of yacc.c  */
+#line 2133 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7856,8 +7953,8 @@
     break;
 
-  case 544:
-
-/* Line 1806 of yacc.c  */
-#line 2127 "parser.yy"
+  case 546:
+
+/* Line 1806 of yacc.c  */
+#line 2139 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7867,99 +7964,106 @@
     break;
 
-  case 548:
-
-/* Line 1806 of yacc.c  */
-#line 2142 "parser.yy"
+  case 550:
+
+/* Line 1806 of yacc.c  */
+#line 2154 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
-  case 550:
-
-/* Line 1806 of yacc.c  */
-#line 2147 "parser.yy"
-    { delete (yyvsp[(3) - (5)].str); }
-    break;
-
   case 551:
 
 /* Line 1806 of yacc.c  */
-#line 2152 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 554:
-
-/* Line 1806 of yacc.c  */
 #line 2159 "parser.yy"
+    { (yyval.constant) = nullptr; }
+    break;
+
+  case 552:
+
+/* Line 1806 of yacc.c  */
+#line 2161 "parser.yy"
+    { (yyval.constant) = (yyvsp[(3) - (5)].constant); }
+    break;
+
+  case 553:
+
+/* Line 1806 of yacc.c  */
+#line 2166 "parser.yy"
+    { (yyval.decl) = nullptr; }
+    break;
+
+  case 556:
+
+/* Line 1806 of yacc.c  */
+#line 2173 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 555:
-
-/* Line 1806 of yacc.c  */
-#line 2165 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 560:
-
-/* Line 1806 of yacc.c  */
-#line 2176 "parser.yy"
+  case 557:
+
+/* Line 1806 of yacc.c  */
+#line 2179 "parser.yy"
+    { (yyval.decl) = nullptr; }
+    break;
+
+  case 562:
+
+/* Line 1806 of yacc.c  */
+#line 2190 "parser.yy"
     { delete (yyvsp[(3) - (4)].en); }
     break;
 
-  case 561:
-
-/* Line 1806 of yacc.c  */
-#line 2180 "parser.yy"
+  case 563:
+
+/* Line 1806 of yacc.c  */
+#line 2194 "parser.yy"
     { delete (yyvsp[(1) - (1)].tok); }
     break;
 
-  case 562:
-
-/* Line 1806 of yacc.c  */
-#line 2181 "parser.yy"
+  case 564:
+
+/* Line 1806 of yacc.c  */
+#line 2195 "parser.yy"
     { delete (yyvsp[(1) - (1)].decl); }
     break;
 
-  case 563:
-
-/* Line 1806 of yacc.c  */
-#line 2182 "parser.yy"
+  case 565:
+
+/* Line 1806 of yacc.c  */
+#line 2196 "parser.yy"
     { delete (yyvsp[(1) - (1)].decl); }
     break;
 
-  case 564:
-
-/* Line 1806 of yacc.c  */
-#line 2183 "parser.yy"
+  case 566:
+
+/* Line 1806 of yacc.c  */
+#line 2197 "parser.yy"
     { delete (yyvsp[(1) - (1)].decl); }
     break;
 
-  case 565:
-
-/* Line 1806 of yacc.c  */
-#line 2218 "parser.yy"
+  case 567:
+
+/* Line 1806 of yacc.c  */
+#line 2232 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 567:
-
-/* Line 1806 of yacc.c  */
-#line 2221 "parser.yy"
+  case 569:
+
+/* Line 1806 of yacc.c  */
+#line 2235 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 568:
-
-/* Line 1806 of yacc.c  */
-#line 2223 "parser.yy"
+  case 570:
+
+/* Line 1806 of yacc.c  */
+#line 2237 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 569:
-
-/* Line 1806 of yacc.c  */
-#line 2228 "parser.yy"
+  case 571:
+
+/* Line 1806 of yacc.c  */
+#line 2242 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -7968,428 +8072,428 @@
     break;
 
-  case 570:
-
-/* Line 1806 of yacc.c  */
-#line 2233 "parser.yy"
+  case 572:
+
+/* Line 1806 of yacc.c  */
+#line 2247 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 571:
-
-/* Line 1806 of yacc.c  */
-#line 2238 "parser.yy"
+  case 573:
+
+/* Line 1806 of yacc.c  */
+#line 2252 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 572:
-
-/* Line 1806 of yacc.c  */
-#line 2240 "parser.yy"
+  case 574:
+
+/* Line 1806 of yacc.c  */
+#line 2254 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 573:
-
-/* Line 1806 of yacc.c  */
-#line 2242 "parser.yy"
+  case 575:
+
+/* Line 1806 of yacc.c  */
+#line 2256 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 574:
-
-/* Line 1806 of yacc.c  */
-#line 2247 "parser.yy"
+  case 576:
+
+/* Line 1806 of yacc.c  */
+#line 2261 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 575:
-
-/* Line 1806 of yacc.c  */
-#line 2249 "parser.yy"
+  case 577:
+
+/* Line 1806 of yacc.c  */
+#line 2263 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 576:
-
-/* Line 1806 of yacc.c  */
-#line 2251 "parser.yy"
+  case 578:
+
+/* Line 1806 of yacc.c  */
+#line 2265 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 577:
-
-/* Line 1806 of yacc.c  */
-#line 2253 "parser.yy"
+  case 579:
+
+/* Line 1806 of yacc.c  */
+#line 2267 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 578:
-
-/* Line 1806 of yacc.c  */
-#line 2258 "parser.yy"
+  case 580:
+
+/* Line 1806 of yacc.c  */
+#line 2272 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 579:
-
-/* Line 1806 of yacc.c  */
-#line 2260 "parser.yy"
+  case 581:
+
+/* Line 1806 of yacc.c  */
+#line 2274 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 580:
-
-/* Line 1806 of yacc.c  */
-#line 2269 "parser.yy"
+  case 582:
+
+/* Line 1806 of yacc.c  */
+#line 2283 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 582:
-
-/* Line 1806 of yacc.c  */
-#line 2272 "parser.yy"
+  case 584:
+
+/* Line 1806 of yacc.c  */
+#line 2286 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 583:
-
-/* Line 1806 of yacc.c  */
-#line 2277 "parser.yy"
+  case 585:
+
+/* Line 1806 of yacc.c  */
+#line 2291 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
-  case 584:
-
-/* Line 1806 of yacc.c  */
-#line 2279 "parser.yy"
+  case 586:
+
+/* Line 1806 of yacc.c  */
+#line 2293 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 585:
-
-/* Line 1806 of yacc.c  */
-#line 2281 "parser.yy"
+  case 587:
+
+/* Line 1806 of yacc.c  */
+#line 2295 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 586:
-
-/* Line 1806 of yacc.c  */
-#line 2286 "parser.yy"
+  case 588:
+
+/* Line 1806 of yacc.c  */
+#line 2300 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 587:
-
-/* Line 1806 of yacc.c  */
-#line 2288 "parser.yy"
+  case 589:
+
+/* Line 1806 of yacc.c  */
+#line 2302 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 588:
-
-/* Line 1806 of yacc.c  */
-#line 2290 "parser.yy"
+  case 590:
+
+/* Line 1806 of yacc.c  */
+#line 2304 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 589:
-
-/* Line 1806 of yacc.c  */
-#line 2295 "parser.yy"
+  case 591:
+
+/* Line 1806 of yacc.c  */
+#line 2309 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 590:
-
-/* Line 1806 of yacc.c  */
-#line 2297 "parser.yy"
+  case 592:
+
+/* Line 1806 of yacc.c  */
+#line 2311 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 591:
-
-/* Line 1806 of yacc.c  */
-#line 2299 "parser.yy"
+  case 593:
+
+/* Line 1806 of yacc.c  */
+#line 2313 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 595:
-
-/* Line 1806 of yacc.c  */
-#line 2314 "parser.yy"
+  case 597:
+
+/* Line 1806 of yacc.c  */
+#line 2328 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     break;
 
-  case 596:
-
-/* Line 1806 of yacc.c  */
-#line 2316 "parser.yy"
+  case 598:
+
+/* Line 1806 of yacc.c  */
+#line 2330 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     break;
 
-  case 597:
-
-/* Line 1806 of yacc.c  */
-#line 2318 "parser.yy"
+  case 599:
+
+/* Line 1806 of yacc.c  */
+#line 2332 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 598:
-
-/* Line 1806 of yacc.c  */
-#line 2323 "parser.yy"
+  case 600:
+
+/* Line 1806 of yacc.c  */
+#line 2337 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 599:
-
-/* Line 1806 of yacc.c  */
-#line 2325 "parser.yy"
+  case 601:
+
+/* Line 1806 of yacc.c  */
+#line 2339 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 600:
-
-/* Line 1806 of yacc.c  */
-#line 2327 "parser.yy"
+  case 602:
+
+/* Line 1806 of yacc.c  */
+#line 2341 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 601:
-
-/* Line 1806 of yacc.c  */
-#line 2332 "parser.yy"
+  case 603:
+
+/* Line 1806 of yacc.c  */
+#line 2346 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 602:
-
-/* Line 1806 of yacc.c  */
-#line 2334 "parser.yy"
+  case 604:
+
+/* Line 1806 of yacc.c  */
+#line 2348 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 603:
-
-/* Line 1806 of yacc.c  */
-#line 2336 "parser.yy"
+  case 605:
+
+/* Line 1806 of yacc.c  */
+#line 2350 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 604:
-
-/* Line 1806 of yacc.c  */
-#line 2351 "parser.yy"
+  case 606:
+
+/* Line 1806 of yacc.c  */
+#line 2365 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 606:
-
-/* Line 1806 of yacc.c  */
-#line 2354 "parser.yy"
+  case 608:
+
+/* Line 1806 of yacc.c  */
+#line 2368 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 607:
-
-/* Line 1806 of yacc.c  */
-#line 2356 "parser.yy"
+  case 609:
+
+/* Line 1806 of yacc.c  */
+#line 2370 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 609:
-
-/* Line 1806 of yacc.c  */
-#line 2362 "parser.yy"
+  case 611:
+
+/* Line 1806 of yacc.c  */
+#line 2376 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 610:
-
-/* Line 1806 of yacc.c  */
-#line 2367 "parser.yy"
+  case 612:
+
+/* Line 1806 of yacc.c  */
+#line 2381 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 611:
-
-/* Line 1806 of yacc.c  */
-#line 2369 "parser.yy"
+  case 613:
+
+/* Line 1806 of yacc.c  */
+#line 2383 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 612:
-
-/* Line 1806 of yacc.c  */
-#line 2371 "parser.yy"
+  case 614:
+
+/* Line 1806 of yacc.c  */
+#line 2385 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 613:
-
-/* Line 1806 of yacc.c  */
-#line 2376 "parser.yy"
+  case 615:
+
+/* Line 1806 of yacc.c  */
+#line 2390 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 614:
-
-/* Line 1806 of yacc.c  */
-#line 2378 "parser.yy"
+  case 616:
+
+/* Line 1806 of yacc.c  */
+#line 2392 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 615:
-
-/* Line 1806 of yacc.c  */
-#line 2380 "parser.yy"
+  case 617:
+
+/* Line 1806 of yacc.c  */
+#line 2394 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 616:
-
-/* Line 1806 of yacc.c  */
-#line 2382 "parser.yy"
+  case 618:
+
+/* Line 1806 of yacc.c  */
+#line 2396 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 617:
-
-/* Line 1806 of yacc.c  */
-#line 2387 "parser.yy"
+  case 619:
+
+/* Line 1806 of yacc.c  */
+#line 2401 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
-  case 618:
-
-/* Line 1806 of yacc.c  */
-#line 2389 "parser.yy"
+  case 620:
+
+/* Line 1806 of yacc.c  */
+#line 2403 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 619:
-
-/* Line 1806 of yacc.c  */
-#line 2391 "parser.yy"
+  case 621:
+
+/* Line 1806 of yacc.c  */
+#line 2405 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 620:
-
-/* Line 1806 of yacc.c  */
-#line 2401 "parser.yy"
+  case 622:
+
+/* Line 1806 of yacc.c  */
+#line 2415 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 622:
-
-/* Line 1806 of yacc.c  */
-#line 2404 "parser.yy"
+  case 624:
+
+/* Line 1806 of yacc.c  */
+#line 2418 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 623:
-
-/* Line 1806 of yacc.c  */
-#line 2406 "parser.yy"
+  case 625:
+
+/* Line 1806 of yacc.c  */
+#line 2420 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 624:
-
-/* Line 1806 of yacc.c  */
-#line 2411 "parser.yy"
+  case 626:
+
+/* Line 1806 of yacc.c  */
+#line 2425 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 625:
-
-/* Line 1806 of yacc.c  */
-#line 2413 "parser.yy"
+  case 627:
+
+/* Line 1806 of yacc.c  */
+#line 2427 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 626:
-
-/* Line 1806 of yacc.c  */
-#line 2415 "parser.yy"
+  case 628:
+
+/* Line 1806 of yacc.c  */
+#line 2429 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 627:
-
-/* Line 1806 of yacc.c  */
-#line 2420 "parser.yy"
+  case 629:
+
+/* Line 1806 of yacc.c  */
+#line 2434 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 628:
-
-/* Line 1806 of yacc.c  */
-#line 2422 "parser.yy"
+  case 630:
+
+/* Line 1806 of yacc.c  */
+#line 2436 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 629:
-
-/* Line 1806 of yacc.c  */
-#line 2424 "parser.yy"
+  case 631:
+
+/* Line 1806 of yacc.c  */
+#line 2438 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 630:
-
-/* Line 1806 of yacc.c  */
-#line 2426 "parser.yy"
+  case 632:
+
+/* Line 1806 of yacc.c  */
+#line 2440 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 631:
-
-/* Line 1806 of yacc.c  */
-#line 2431 "parser.yy"
+  case 633:
+
+/* Line 1806 of yacc.c  */
+#line 2445 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
-  case 632:
-
-/* Line 1806 of yacc.c  */
-#line 2433 "parser.yy"
+  case 634:
+
+/* Line 1806 of yacc.c  */
+#line 2447 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 633:
-
-/* Line 1806 of yacc.c  */
-#line 2435 "parser.yy"
+  case 635:
+
+/* Line 1806 of yacc.c  */
+#line 2449 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 634:
-
-/* Line 1806 of yacc.c  */
-#line 2466 "parser.yy"
+  case 636:
+
+/* Line 1806 of yacc.c  */
+#line 2480 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 636:
-
-/* Line 1806 of yacc.c  */
-#line 2469 "parser.yy"
+  case 638:
+
+/* Line 1806 of yacc.c  */
+#line 2483 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 637:
-
-/* Line 1806 of yacc.c  */
-#line 2471 "parser.yy"
+  case 639:
+
+/* Line 1806 of yacc.c  */
+#line 2485 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 638:
-
-/* Line 1806 of yacc.c  */
-#line 2476 "parser.yy"
+  case 640:
+
+/* Line 1806 of yacc.c  */
+#line 2490 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8398,8 +8502,8 @@
     break;
 
-  case 639:
-
-/* Line 1806 of yacc.c  */
-#line 2481 "parser.yy"
+  case 641:
+
+/* Line 1806 of yacc.c  */
+#line 2495 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8408,680 +8512,680 @@
     break;
 
-  case 640:
-
-/* Line 1806 of yacc.c  */
-#line 2489 "parser.yy"
+  case 642:
+
+/* Line 1806 of yacc.c  */
+#line 2503 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 641:
-
-/* Line 1806 of yacc.c  */
-#line 2491 "parser.yy"
+  case 643:
+
+/* Line 1806 of yacc.c  */
+#line 2505 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 642:
-
-/* Line 1806 of yacc.c  */
-#line 2493 "parser.yy"
+  case 644:
+
+/* Line 1806 of yacc.c  */
+#line 2507 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 643:
-
-/* Line 1806 of yacc.c  */
-#line 2498 "parser.yy"
+  case 645:
+
+/* Line 1806 of yacc.c  */
+#line 2512 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 644:
-
-/* Line 1806 of yacc.c  */
-#line 2500 "parser.yy"
+  case 646:
+
+/* Line 1806 of yacc.c  */
+#line 2514 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 645:
-
-/* Line 1806 of yacc.c  */
-#line 2505 "parser.yy"
+  case 647:
+
+/* Line 1806 of yacc.c  */
+#line 2519 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
-  case 646:
-
-/* Line 1806 of yacc.c  */
-#line 2507 "parser.yy"
+  case 648:
+
+/* Line 1806 of yacc.c  */
+#line 2521 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 648:
-
-/* Line 1806 of yacc.c  */
-#line 2522 "parser.yy"
+  case 650:
+
+/* Line 1806 of yacc.c  */
+#line 2536 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 649:
-
-/* Line 1806 of yacc.c  */
-#line 2524 "parser.yy"
+  case 651:
+
+/* Line 1806 of yacc.c  */
+#line 2538 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 650:
-
-/* Line 1806 of yacc.c  */
-#line 2529 "parser.yy"
+  case 652:
+
+/* Line 1806 of yacc.c  */
+#line 2543 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
 
-  case 651:
-
-/* Line 1806 of yacc.c  */
-#line 2531 "parser.yy"
+  case 653:
+
+/* Line 1806 of yacc.c  */
+#line 2545 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 652:
-
-/* Line 1806 of yacc.c  */
-#line 2533 "parser.yy"
+  case 654:
+
+/* Line 1806 of yacc.c  */
+#line 2547 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 653:
-
-/* Line 1806 of yacc.c  */
-#line 2535 "parser.yy"
+  case 655:
+
+/* Line 1806 of yacc.c  */
+#line 2549 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 654:
-
-/* Line 1806 of yacc.c  */
-#line 2537 "parser.yy"
+  case 656:
+
+/* Line 1806 of yacc.c  */
+#line 2551 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 656:
-
-/* Line 1806 of yacc.c  */
-#line 2543 "parser.yy"
+  case 658:
+
+/* Line 1806 of yacc.c  */
+#line 2557 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 657:
-
-/* Line 1806 of yacc.c  */
-#line 2545 "parser.yy"
+  case 659:
+
+/* Line 1806 of yacc.c  */
+#line 2559 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 658:
-
-/* Line 1806 of yacc.c  */
-#line 2547 "parser.yy"
+  case 660:
+
+/* Line 1806 of yacc.c  */
+#line 2561 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 659:
-
-/* Line 1806 of yacc.c  */
-#line 2552 "parser.yy"
+  case 661:
+
+/* Line 1806 of yacc.c  */
+#line 2566 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     break;
 
-  case 660:
-
-/* Line 1806 of yacc.c  */
-#line 2554 "parser.yy"
+  case 662:
+
+/* Line 1806 of yacc.c  */
+#line 2568 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 661:
-
-/* Line 1806 of yacc.c  */
-#line 2556 "parser.yy"
+  case 663:
+
+/* Line 1806 of yacc.c  */
+#line 2570 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 662:
-
-/* Line 1806 of yacc.c  */
-#line 2562 "parser.yy"
+  case 664:
+
+/* Line 1806 of yacc.c  */
+#line 2576 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
 
-  case 663:
-
-/* Line 1806 of yacc.c  */
-#line 2564 "parser.yy"
+  case 665:
+
+/* Line 1806 of yacc.c  */
+#line 2578 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     break;
 
-  case 665:
-
-/* Line 1806 of yacc.c  */
-#line 2570 "parser.yy"
+  case 667:
+
+/* Line 1806 of yacc.c  */
+#line 2584 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     break;
 
-  case 666:
-
-/* Line 1806 of yacc.c  */
-#line 2572 "parser.yy"
+  case 668:
+
+/* Line 1806 of yacc.c  */
+#line 2586 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     break;
 
-  case 667:
-
-/* Line 1806 of yacc.c  */
-#line 2574 "parser.yy"
+  case 669:
+
+/* Line 1806 of yacc.c  */
+#line 2588 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     break;
 
-  case 668:
-
-/* Line 1806 of yacc.c  */
-#line 2576 "parser.yy"
+  case 670:
+
+/* Line 1806 of yacc.c  */
+#line 2590 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     break;
 
-  case 670:
-
-/* Line 1806 of yacc.c  */
-#line 2591 "parser.yy"
+  case 672:
+
+/* Line 1806 of yacc.c  */
+#line 2605 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 671:
-
-/* Line 1806 of yacc.c  */
-#line 2593 "parser.yy"
+  case 673:
+
+/* Line 1806 of yacc.c  */
+#line 2607 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 672:
-
-/* Line 1806 of yacc.c  */
-#line 2598 "parser.yy"
+  case 674:
+
+/* Line 1806 of yacc.c  */
+#line 2612 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
 
-  case 673:
-
-/* Line 1806 of yacc.c  */
-#line 2600 "parser.yy"
+  case 675:
+
+/* Line 1806 of yacc.c  */
+#line 2614 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 674:
-
-/* Line 1806 of yacc.c  */
-#line 2602 "parser.yy"
+  case 676:
+
+/* Line 1806 of yacc.c  */
+#line 2616 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 675:
-
-/* Line 1806 of yacc.c  */
-#line 2604 "parser.yy"
+  case 677:
+
+/* Line 1806 of yacc.c  */
+#line 2618 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 676:
-
-/* Line 1806 of yacc.c  */
-#line 2606 "parser.yy"
+  case 678:
+
+/* Line 1806 of yacc.c  */
+#line 2620 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 678:
-
-/* Line 1806 of yacc.c  */
-#line 2612 "parser.yy"
+  case 680:
+
+/* Line 1806 of yacc.c  */
+#line 2626 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 679:
-
-/* Line 1806 of yacc.c  */
-#line 2614 "parser.yy"
+  case 681:
+
+/* Line 1806 of yacc.c  */
+#line 2628 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 680:
-
-/* Line 1806 of yacc.c  */
-#line 2616 "parser.yy"
+  case 682:
+
+/* Line 1806 of yacc.c  */
+#line 2630 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 681:
-
-/* Line 1806 of yacc.c  */
-#line 2621 "parser.yy"
+  case 683:
+
+/* Line 1806 of yacc.c  */
+#line 2635 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     break;
 
-  case 682:
-
-/* Line 1806 of yacc.c  */
-#line 2623 "parser.yy"
+  case 684:
+
+/* Line 1806 of yacc.c  */
+#line 2637 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 683:
-
-/* Line 1806 of yacc.c  */
-#line 2625 "parser.yy"
+  case 685:
+
+/* Line 1806 of yacc.c  */
+#line 2639 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 685:
-
-/* Line 1806 of yacc.c  */
-#line 2632 "parser.yy"
+  case 687:
+
+/* Line 1806 of yacc.c  */
+#line 2646 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 687:
-
-/* Line 1806 of yacc.c  */
-#line 2643 "parser.yy"
+  case 689:
+
+/* Line 1806 of yacc.c  */
+#line 2657 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
 
-  case 688:
-
-/* Line 1806 of yacc.c  */
-#line 2646 "parser.yy"
+  case 690:
+
+/* Line 1806 of yacc.c  */
+#line 2660 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
 
-  case 689:
-
-/* Line 1806 of yacc.c  */
-#line 2648 "parser.yy"
+  case 691:
+
+/* Line 1806 of yacc.c  */
+#line 2662 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     break;
 
-  case 690:
-
-/* Line 1806 of yacc.c  */
-#line 2651 "parser.yy"
+  case 692:
+
+/* Line 1806 of yacc.c  */
+#line 2665 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
 
-  case 691:
-
-/* Line 1806 of yacc.c  */
-#line 2653 "parser.yy"
+  case 693:
+
+/* Line 1806 of yacc.c  */
+#line 2667 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     break;
 
-  case 692:
-
-/* Line 1806 of yacc.c  */
-#line 2655 "parser.yy"
+  case 694:
+
+/* Line 1806 of yacc.c  */
+#line 2669 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     break;
 
-  case 694:
-
-/* Line 1806 of yacc.c  */
-#line 2669 "parser.yy"
+  case 696:
+
+/* Line 1806 of yacc.c  */
+#line 2683 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 695:
-
-/* Line 1806 of yacc.c  */
-#line 2671 "parser.yy"
+  case 697:
+
+/* Line 1806 of yacc.c  */
+#line 2685 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 696:
-
-/* Line 1806 of yacc.c  */
-#line 2676 "parser.yy"
+  case 698:
+
+/* Line 1806 of yacc.c  */
+#line 2690 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
 
-  case 697:
-
-/* Line 1806 of yacc.c  */
-#line 2678 "parser.yy"
+  case 699:
+
+/* Line 1806 of yacc.c  */
+#line 2692 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 698:
-
-/* Line 1806 of yacc.c  */
-#line 2680 "parser.yy"
+  case 700:
+
+/* Line 1806 of yacc.c  */
+#line 2694 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 699:
-
-/* Line 1806 of yacc.c  */
-#line 2682 "parser.yy"
+  case 701:
+
+/* Line 1806 of yacc.c  */
+#line 2696 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 700:
-
-/* Line 1806 of yacc.c  */
-#line 2684 "parser.yy"
+  case 702:
+
+/* Line 1806 of yacc.c  */
+#line 2698 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 702:
-
-/* Line 1806 of yacc.c  */
-#line 2690 "parser.yy"
+  case 704:
+
+/* Line 1806 of yacc.c  */
+#line 2704 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 703:
-
-/* Line 1806 of yacc.c  */
-#line 2692 "parser.yy"
+  case 705:
+
+/* Line 1806 of yacc.c  */
+#line 2706 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 704:
-
-/* Line 1806 of yacc.c  */
-#line 2694 "parser.yy"
+  case 706:
+
+/* Line 1806 of yacc.c  */
+#line 2708 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 705:
-
-/* Line 1806 of yacc.c  */
-#line 2699 "parser.yy"
+  case 707:
+
+/* Line 1806 of yacc.c  */
+#line 2713 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 706:
-
-/* Line 1806 of yacc.c  */
-#line 2701 "parser.yy"
+  case 708:
+
+/* Line 1806 of yacc.c  */
+#line 2715 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 709:
-
-/* Line 1806 of yacc.c  */
-#line 2711 "parser.yy"
+  case 711:
+
+/* Line 1806 of yacc.c  */
+#line 2725 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 712:
-
-/* Line 1806 of yacc.c  */
-#line 2721 "parser.yy"
+  case 714:
+
+/* Line 1806 of yacc.c  */
+#line 2735 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 713:
-
-/* Line 1806 of yacc.c  */
-#line 2723 "parser.yy"
+  case 715:
+
+/* Line 1806 of yacc.c  */
+#line 2737 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
-  case 714:
-
-/* Line 1806 of yacc.c  */
-#line 2725 "parser.yy"
+  case 716:
+
+/* Line 1806 of yacc.c  */
+#line 2739 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 715:
-
-/* Line 1806 of yacc.c  */
-#line 2727 "parser.yy"
+  case 717:
+
+/* Line 1806 of yacc.c  */
+#line 2741 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
-  case 716:
-
-/* Line 1806 of yacc.c  */
-#line 2729 "parser.yy"
+  case 718:
+
+/* Line 1806 of yacc.c  */
+#line 2743 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 717:
-
-/* Line 1806 of yacc.c  */
-#line 2731 "parser.yy"
+  case 719:
+
+/* Line 1806 of yacc.c  */
+#line 2745 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
-  case 718:
-
-/* Line 1806 of yacc.c  */
-#line 2738 "parser.yy"
+  case 720:
+
+/* Line 1806 of yacc.c  */
+#line 2752 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
-  case 719:
-
-/* Line 1806 of yacc.c  */
-#line 2740 "parser.yy"
+  case 721:
+
+/* Line 1806 of yacc.c  */
+#line 2754 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 720:
-
-/* Line 1806 of yacc.c  */
-#line 2742 "parser.yy"
+  case 722:
+
+/* Line 1806 of yacc.c  */
+#line 2756 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
-  case 721:
-
-/* Line 1806 of yacc.c  */
-#line 2744 "parser.yy"
+  case 723:
+
+/* Line 1806 of yacc.c  */
+#line 2758 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
 
-  case 722:
-
-/* Line 1806 of yacc.c  */
-#line 2746 "parser.yy"
+  case 724:
+
+/* Line 1806 of yacc.c  */
+#line 2760 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 723:
-
-/* Line 1806 of yacc.c  */
-#line 2749 "parser.yy"
+  case 725:
+
+/* Line 1806 of yacc.c  */
+#line 2763 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
-  case 724:
-
-/* Line 1806 of yacc.c  */
-#line 2751 "parser.yy"
+  case 726:
+
+/* Line 1806 of yacc.c  */
+#line 2765 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 725:
-
-/* Line 1806 of yacc.c  */
-#line 2753 "parser.yy"
+  case 727:
+
+/* Line 1806 of yacc.c  */
+#line 2767 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
-  case 726:
-
-/* Line 1806 of yacc.c  */
-#line 2755 "parser.yy"
+  case 728:
+
+/* Line 1806 of yacc.c  */
+#line 2769 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
 
-  case 727:
-
-/* Line 1806 of yacc.c  */
-#line 2757 "parser.yy"
+  case 729:
+
+/* Line 1806 of yacc.c  */
+#line 2771 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 728:
-
-/* Line 1806 of yacc.c  */
-#line 2762 "parser.yy"
+  case 730:
+
+/* Line 1806 of yacc.c  */
+#line 2776 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
 
-  case 729:
-
-/* Line 1806 of yacc.c  */
-#line 2764 "parser.yy"
+  case 731:
+
+/* Line 1806 of yacc.c  */
+#line 2778 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
 
-  case 730:
-
-/* Line 1806 of yacc.c  */
-#line 2769 "parser.yy"
+  case 732:
+
+/* Line 1806 of yacc.c  */
+#line 2783 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     break;
 
-  case 731:
-
-/* Line 1806 of yacc.c  */
-#line 2771 "parser.yy"
+  case 733:
+
+/* Line 1806 of yacc.c  */
+#line 2785 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     break;
 
-  case 733:
-
-/* Line 1806 of yacc.c  */
-#line 2798 "parser.yy"
+  case 735:
+
+/* Line 1806 of yacc.c  */
+#line 2812 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 737:
-
-/* Line 1806 of yacc.c  */
-#line 2809 "parser.yy"
+  case 739:
+
+/* Line 1806 of yacc.c  */
+#line 2823 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 738:
-
-/* Line 1806 of yacc.c  */
-#line 2811 "parser.yy"
+  case 740:
+
+/* Line 1806 of yacc.c  */
+#line 2825 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
-  case 739:
-
-/* Line 1806 of yacc.c  */
-#line 2813 "parser.yy"
+  case 741:
+
+/* Line 1806 of yacc.c  */
+#line 2827 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 740:
-
-/* Line 1806 of yacc.c  */
-#line 2815 "parser.yy"
+  case 742:
+
+/* Line 1806 of yacc.c  */
+#line 2829 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
-  case 741:
-
-/* Line 1806 of yacc.c  */
-#line 2817 "parser.yy"
+  case 743:
+
+/* Line 1806 of yacc.c  */
+#line 2831 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 742:
-
-/* Line 1806 of yacc.c  */
-#line 2819 "parser.yy"
+  case 744:
+
+/* Line 1806 of yacc.c  */
+#line 2833 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
-  case 743:
-
-/* Line 1806 of yacc.c  */
-#line 2826 "parser.yy"
+  case 745:
+
+/* Line 1806 of yacc.c  */
+#line 2840 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
 
-  case 744:
-
-/* Line 1806 of yacc.c  */
-#line 2828 "parser.yy"
+  case 746:
+
+/* Line 1806 of yacc.c  */
+#line 2842 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
 
-  case 745:
-
-/* Line 1806 of yacc.c  */
-#line 2830 "parser.yy"
+  case 747:
+
+/* Line 1806 of yacc.c  */
+#line 2844 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 746:
-
-/* Line 1806 of yacc.c  */
-#line 2832 "parser.yy"
+  case 748:
+
+/* Line 1806 of yacc.c  */
+#line 2846 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
 
-  case 747:
-
-/* Line 1806 of yacc.c  */
-#line 2834 "parser.yy"
+  case 749:
+
+/* Line 1806 of yacc.c  */
+#line 2848 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
 
-  case 748:
-
-/* Line 1806 of yacc.c  */
-#line 2836 "parser.yy"
+  case 750:
+
+/* Line 1806 of yacc.c  */
+#line 2850 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 749:
-
-/* Line 1806 of yacc.c  */
-#line 2841 "parser.yy"
+  case 751:
+
+/* Line 1806 of yacc.c  */
+#line 2855 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
 
-  case 750:
-
-/* Line 1806 of yacc.c  */
-#line 2848 "parser.yy"
+  case 752:
+
+/* Line 1806 of yacc.c  */
+#line 2862 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     break;
 
-  case 751:
-
-/* Line 1806 of yacc.c  */
-#line 2850 "parser.yy"
+  case 753:
+
+/* Line 1806 of yacc.c  */
+#line 2864 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     break;
 
-  case 754:
-
-/* Line 1806 of yacc.c  */
-#line 2874 "parser.yy"
-    { (yyval.en) = 0; }
-    break;
-
-  case 755:
-
-/* Line 1806 of yacc.c  */
-#line 2876 "parser.yy"
+  case 756:
+
+/* Line 1806 of yacc.c  */
+#line 2888 "parser.yy"
+    { (yyval.en) = nullptr; }
+    break;
+
+  case 757:
+
+/* Line 1806 of yacc.c  */
+#line 2890 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -9090,5 +9194,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 9093 "Parser/parser.cc"
+#line 9197 "Parser/parser.cc"
       default: break;
     }
@@ -9321,5 +9425,5 @@
 
 /* Line 2067 of yacc.c  */
-#line 2879 "parser.yy"
+#line 2893 "parser.yy"
 
 // ----end of grammar----
Index: src/Parser/parser.h
===================================================================
--- src/Parser/parser.h	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/parser.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -59,91 +59,93 @@
      SIGNED = 277,
      UNSIGNED = 278,
-     VALIST = 279,
-     BOOL = 280,
-     COMPLEX = 281,
-     IMAGINARY = 282,
-     TYPEOF = 283,
-     LABEL = 284,
-     ENUM = 285,
-     STRUCT = 286,
-     UNION = 287,
-     OTYPE = 288,
-     FTYPE = 289,
-     DTYPE = 290,
-     TRAIT = 291,
-     SIZEOF = 292,
-     OFFSETOF = 293,
-     ATTRIBUTE = 294,
-     EXTENSION = 295,
-     IF = 296,
-     ELSE = 297,
-     SWITCH = 298,
-     CASE = 299,
-     DEFAULT = 300,
-     DO = 301,
-     WHILE = 302,
-     FOR = 303,
-     BREAK = 304,
-     CONTINUE = 305,
-     GOTO = 306,
-     RETURN = 307,
-     CHOOSE = 308,
-     DISABLE = 309,
-     ENABLE = 310,
-     FALLTHRU = 311,
-     TRY = 312,
-     CATCH = 313,
-     CATCHRESUME = 314,
-     FINALLY = 315,
-     THROW = 316,
-     THROWRESUME = 317,
-     AT = 318,
-     ASM = 319,
-     ALIGNAS = 320,
-     ALIGNOF = 321,
-     ATOMIC = 322,
-     GENERIC = 323,
-     NORETURN = 324,
-     STATICASSERT = 325,
-     THREADLOCAL = 326,
-     IDENTIFIER = 327,
-     QUOTED_IDENTIFIER = 328,
-     TYPEDEFname = 329,
-     TYPEGENname = 330,
-     ATTR_IDENTIFIER = 331,
-     ATTR_TYPEDEFname = 332,
-     ATTR_TYPEGENname = 333,
-     INTEGERconstant = 334,
-     CHARACTERconstant = 335,
-     STRINGliteral = 336,
-     REALDECIMALconstant = 337,
-     REALFRACTIONconstant = 338,
-     FLOATINGconstant = 339,
-     ZERO = 340,
-     ONE = 341,
-     ARROW = 342,
-     ICR = 343,
-     DECR = 344,
-     LS = 345,
-     RS = 346,
-     LE = 347,
-     GE = 348,
-     EQ = 349,
-     NE = 350,
-     ANDAND = 351,
-     OROR = 352,
-     ELLIPSIS = 353,
-     MULTassign = 354,
-     DIVassign = 355,
-     MODassign = 356,
-     PLUSassign = 357,
-     MINUSassign = 358,
-     LSassign = 359,
-     RSassign = 360,
-     ANDassign = 361,
-     ERassign = 362,
-     ORassign = 363,
-     ATassign = 364,
-     THEN = 365
+     ZERO_T = 279,
+     ONE_T = 280,
+     VALIST = 281,
+     BOOL = 282,
+     COMPLEX = 283,
+     IMAGINARY = 284,
+     TYPEOF = 285,
+     LABEL = 286,
+     ENUM = 287,
+     STRUCT = 288,
+     UNION = 289,
+     OTYPE = 290,
+     FTYPE = 291,
+     DTYPE = 292,
+     TRAIT = 293,
+     SIZEOF = 294,
+     OFFSETOF = 295,
+     ATTRIBUTE = 296,
+     EXTENSION = 297,
+     IF = 298,
+     ELSE = 299,
+     SWITCH = 300,
+     CASE = 301,
+     DEFAULT = 302,
+     DO = 303,
+     WHILE = 304,
+     FOR = 305,
+     BREAK = 306,
+     CONTINUE = 307,
+     GOTO = 308,
+     RETURN = 309,
+     CHOOSE = 310,
+     DISABLE = 311,
+     ENABLE = 312,
+     FALLTHRU = 313,
+     TRY = 314,
+     CATCH = 315,
+     CATCHRESUME = 316,
+     FINALLY = 317,
+     THROW = 318,
+     THROWRESUME = 319,
+     AT = 320,
+     ASM = 321,
+     ALIGNAS = 322,
+     ALIGNOF = 323,
+     ATOMIC = 324,
+     GENERIC = 325,
+     NORETURN = 326,
+     STATICASSERT = 327,
+     THREADLOCAL = 328,
+     IDENTIFIER = 329,
+     QUOTED_IDENTIFIER = 330,
+     TYPEDEFname = 331,
+     TYPEGENname = 332,
+     ATTR_IDENTIFIER = 333,
+     ATTR_TYPEDEFname = 334,
+     ATTR_TYPEGENname = 335,
+     INTEGERconstant = 336,
+     CHARACTERconstant = 337,
+     STRINGliteral = 338,
+     REALDECIMALconstant = 339,
+     REALFRACTIONconstant = 340,
+     FLOATINGconstant = 341,
+     ZERO = 342,
+     ONE = 343,
+     ARROW = 344,
+     ICR = 345,
+     DECR = 346,
+     LS = 347,
+     RS = 348,
+     LE = 349,
+     GE = 350,
+     EQ = 351,
+     NE = 352,
+     ANDAND = 353,
+     OROR = 354,
+     ELLIPSIS = 355,
+     MULTassign = 356,
+     DIVassign = 357,
+     MODassign = 358,
+     PLUSassign = 359,
+     MINUSassign = 360,
+     LSassign = 361,
+     RSassign = 362,
+     ANDassign = 363,
+     ERassign = 364,
+     ORassign = 365,
+     ATassign = 366,
+     THEN = 367
    };
 #endif
@@ -170,91 +172,93 @@
 #define SIGNED 277
 #define UNSIGNED 278
-#define VALIST 279
-#define BOOL 280
-#define COMPLEX 281
-#define IMAGINARY 282
-#define TYPEOF 283
-#define LABEL 284
-#define ENUM 285
-#define STRUCT 286
-#define UNION 287
-#define OTYPE 288
-#define FTYPE 289
-#define DTYPE 290
-#define TRAIT 291
-#define SIZEOF 292
-#define OFFSETOF 293
-#define ATTRIBUTE 294
-#define EXTENSION 295
-#define IF 296
-#define ELSE 297
-#define SWITCH 298
-#define CASE 299
-#define DEFAULT 300
-#define DO 301
-#define WHILE 302
-#define FOR 303
-#define BREAK 304
-#define CONTINUE 305
-#define GOTO 306
-#define RETURN 307
-#define CHOOSE 308
-#define DISABLE 309
-#define ENABLE 310
-#define FALLTHRU 311
-#define TRY 312
-#define CATCH 313
-#define CATCHRESUME 314
-#define FINALLY 315
-#define THROW 316
-#define THROWRESUME 317
-#define AT 318
-#define ASM 319
-#define ALIGNAS 320
-#define ALIGNOF 321
-#define ATOMIC 322
-#define GENERIC 323
-#define NORETURN 324
-#define STATICASSERT 325
-#define THREADLOCAL 326
-#define IDENTIFIER 327
-#define QUOTED_IDENTIFIER 328
-#define TYPEDEFname 329
-#define TYPEGENname 330
-#define ATTR_IDENTIFIER 331
-#define ATTR_TYPEDEFname 332
-#define ATTR_TYPEGENname 333
-#define INTEGERconstant 334
-#define CHARACTERconstant 335
-#define STRINGliteral 336
-#define REALDECIMALconstant 337
-#define REALFRACTIONconstant 338
-#define FLOATINGconstant 339
-#define ZERO 340
-#define ONE 341
-#define ARROW 342
-#define ICR 343
-#define DECR 344
-#define LS 345
-#define RS 346
-#define LE 347
-#define GE 348
-#define EQ 349
-#define NE 350
-#define ANDAND 351
-#define OROR 352
-#define ELLIPSIS 353
-#define MULTassign 354
-#define DIVassign 355
-#define MODassign 356
-#define PLUSassign 357
-#define MINUSassign 358
-#define LSassign 359
-#define RSassign 360
-#define ANDassign 361
-#define ERassign 362
-#define ORassign 363
-#define ATassign 364
-#define THEN 365
+#define ZERO_T 279
+#define ONE_T 280
+#define VALIST 281
+#define BOOL 282
+#define COMPLEX 283
+#define IMAGINARY 284
+#define TYPEOF 285
+#define LABEL 286
+#define ENUM 287
+#define STRUCT 288
+#define UNION 289
+#define OTYPE 290
+#define FTYPE 291
+#define DTYPE 292
+#define TRAIT 293
+#define SIZEOF 294
+#define OFFSETOF 295
+#define ATTRIBUTE 296
+#define EXTENSION 297
+#define IF 298
+#define ELSE 299
+#define SWITCH 300
+#define CASE 301
+#define DEFAULT 302
+#define DO 303
+#define WHILE 304
+#define FOR 305
+#define BREAK 306
+#define CONTINUE 307
+#define GOTO 308
+#define RETURN 309
+#define CHOOSE 310
+#define DISABLE 311
+#define ENABLE 312
+#define FALLTHRU 313
+#define TRY 314
+#define CATCH 315
+#define CATCHRESUME 316
+#define FINALLY 317
+#define THROW 318
+#define THROWRESUME 319
+#define AT 320
+#define ASM 321
+#define ALIGNAS 322
+#define ALIGNOF 323
+#define ATOMIC 324
+#define GENERIC 325
+#define NORETURN 326
+#define STATICASSERT 327
+#define THREADLOCAL 328
+#define IDENTIFIER 329
+#define QUOTED_IDENTIFIER 330
+#define TYPEDEFname 331
+#define TYPEGENname 332
+#define ATTR_IDENTIFIER 333
+#define ATTR_TYPEDEFname 334
+#define ATTR_TYPEGENname 335
+#define INTEGERconstant 336
+#define CHARACTERconstant 337
+#define STRINGliteral 338
+#define REALDECIMALconstant 339
+#define REALFRACTIONconstant 340
+#define FLOATINGconstant 341
+#define ZERO 342
+#define ONE 343
+#define ARROW 344
+#define ICR 345
+#define DECR 346
+#define LS 347
+#define RS 348
+#define LE 349
+#define GE 350
+#define EQ 351
+#define NE 352
+#define ANDAND 353
+#define OROR 354
+#define ELLIPSIS 355
+#define MULTassign 356
+#define DIVassign 357
+#define MODassign 358
+#define PLUSassign 359
+#define MINUSassign 360
+#define LSassign 361
+#define RSassign 362
+#define ANDassign 363
+#define ERassign 364
+#define ORassign 365
+#define ATassign 366
+#define THEN 367
 
 
@@ -286,5 +290,5 @@
 
 /* Line 2068 of yacc.c  */
-#line 289 "Parser/parser.h"
+#line 293 "Parser/parser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/parser.yy	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Oct 26 17:35:53 2016
-// Update Count     : 2066
+// Last Modified On : Wed Dec 14 21:28:22 2016
+// Update Count     : 2090
 //
 
@@ -78,5 +78,5 @@
 %token RESTRICT											// C99
 %token FORALL LVALUE									// CFA
-%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
+%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED ZERO_T ONE_T
 %token VALIST											// GCC
 %token BOOL COMPLEX IMAGINARY							// C99
@@ -153,4 +153,5 @@
 %type<fctl> for_control_expression
 %type<en> subrange
+%type<constant> asm_name_opt
 %type<en> asm_operands_opt asm_operands_list asm_operand
 %type<label> label_list
@@ -362,5 +363,5 @@
 		{ $$ = new ExpressionNode( build_varref( $1 ) ); }
 	| zero_one
-		{ $$ = new ExpressionNode( build_varref( $1 ) ); }
+		{ $$ = new ExpressionNode( build_constantZeroOne( *$1 ) ); }
 	| tuple
 	| '(' comma_expression ')'
@@ -412,5 +413,5 @@
 argument_expression:
 	// empty
-		{ $$ = 0; }										// use default argument
+		{ $$ = nullptr; }								// use default argument
 	| assignment_expression
 	;
@@ -443,5 +444,11 @@
 		{ $$ = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *$1 ), $2 ) ); }
 	| no_attr_identifier fraction_constants
-		{ $$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) ); }
+		{
+			if( (*$1) == "0" || (*$1) == "1" ) {
+				$$ = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *$1 ), $2 ) );
+			} else {
+				$$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) );
+			}
+		}
 	;
 
@@ -678,5 +685,5 @@
 comma_expression_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| comma_expression
 	;
@@ -714,5 +721,5 @@
 	| '{'
 		// Two scopes are necessary because the block itself has a scope, but every declaration within the block also
-		// requires its own scope
+		// requires its own scope.
 	  push push
 	  local_label_declaration_opt						// GCC, local labels
@@ -768,5 +775,5 @@
 			// therefore, are removed from the grammar even though C allows it. The change also applies to choose
 			// statement.
-			$$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
+			$$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
 		}
 	| CHOOSE '(' comma_expression ')' case_clause		// CFA
@@ -775,5 +782,5 @@
 		{
 			StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
-			$$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
+			$$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
 		}
 	;
@@ -812,5 +819,5 @@
 switch_clause_list_opt:									// CFA
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| switch_clause_list
 	;
@@ -825,5 +832,5 @@
 choose_clause_list_opt:									// CFA
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| choose_clause_list
 	;
@@ -848,7 +855,7 @@
 fall_through:											// CFA
 	FALLTHRU
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| FALLTHRU ';'
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	;
 
@@ -984,5 +991,5 @@
 asm_operands_opt:										// GCC
 	// empty
-		{ $$ = 0; }										// use default argument
+		{ $$ = nullptr; }								// use default argument
 	| asm_operands_list
 	;
@@ -1003,8 +1010,9 @@
 asm_clobbers_list_opt:									// GCC
 	// empty
-		{ $$ = 0; }										// use default argument
+		{ $$ = nullptr; }								// use default argument
 	| string_literal
 		{ $$ = new ExpressionNode( $1 ); }
 	| asm_clobbers_list_opt ',' string_literal
+		// set_last return ParseNode *
 		{ $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); }
 	;
@@ -1027,5 +1035,5 @@
 declaration_list_opt:									// used at beginning of switch statement
 	pop
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| declaration_list
 	;
@@ -1039,5 +1047,5 @@
 old_declaration_list_opt:								// used to declare parameter types in K&R style functions
 	pop
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| old_declaration_list
 	;
@@ -1114,15 +1122,15 @@
 		{
 			typedefTable.setNextIdentifier( *$2 );
-			$$ = $1->addName( $2 );
+			$$ = $1->addName( $2 )->addAsmName( $3 );
 		}
 	| new_abstract_tuple identifier_or_type_name asm_name_opt
 		{
 			typedefTable.setNextIdentifier( *$2 );
-			$$ = $1->addName( $2 );
+			$$ = $1->addName( $2 )->addAsmName( $3 );
 		}
 	| type_qualifier_list new_abstract_tuple identifier_or_type_name asm_name_opt
 		{
 			typedefTable.setNextIdentifier( *$3 );
-			$$ = $2->addQualifiers( $1 )->addName( $3 );
+			$$ = $2->addQualifiers( $1 )->addName( $3 )->addAsmName( $4 );
 		}
 	;
@@ -1275,10 +1283,10 @@
 		{
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			$$ = ( $2->addType( $1 ))->addInitializer( $4 );
+			$$ = ( $2->addType( $1 ))->addAsmName( $3 )->addInitializer( $4 );
 		}
 	| declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
 		{
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			$$ = $1->appendList( $1->cloneBaseType( $4->addInitializer( $6 ) ) );
+			$$ = $1->appendList( $1->cloneBaseType( $4->addAsmName( $5 )->addInitializer( $6 ) ) );
 		}
 	;
@@ -1300,5 +1308,5 @@
 type_qualifier_list_opt:								// GCC, used in asm_statement
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| type_qualifier_list
 	;
@@ -1410,4 +1418,8 @@
 	| VALIST											// GCC, __builtin_va_list
 		{ $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
+	| ZERO_T
+		{ $$ = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
+	| ONE_T
+		{ $$ = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
 	;
 
@@ -1522,7 +1534,7 @@
 field_declaration_list:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| field_declaration_list field_declaration
-		{ $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
+		{ $$ = $1 ? $1->appendList( $2 ) : $2; }
 	;
 
@@ -1573,5 +1585,5 @@
 bit_subrange_size_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| bit_subrange_size
 		{ $$ = $1; }
@@ -1610,5 +1622,5 @@
 enumerator_value_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| '=' constant_expression
 		{ $$ = $2; }
@@ -1619,5 +1631,5 @@
 new_parameter_type_list_opt:							// CFA
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| new_parameter_type_list
 	;
@@ -1654,5 +1666,5 @@
 parameter_type_list_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| parameter_type_list
 	;
@@ -1702,10 +1714,10 @@
 		{
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			$$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
+			$$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr );
 		}
 	| declaration_specifier type_parameter_redeclarator assignment_opt
 		{
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			$$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
+			$$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr );
 		}
 	;
@@ -1763,5 +1775,5 @@
 initializer_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| '=' initializer
 		{ $$ = $2; }
@@ -1777,5 +1789,5 @@
 initializer_list:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| initializer
 	| designation initializer					{ $$ = $2->set_designators( $1 ); }
@@ -1888,7 +1900,7 @@
 assertion_list_opt:										// CFA
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| assertion_list_opt assertion
-		{ $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
+		{ $$ = $1 ? $1->appendList( $2 ) : $2; }
 	;
 
@@ -1902,5 +1914,5 @@
 		{ $$ = $4; }
 	| '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')'
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	;
 
@@ -2011,5 +2023,5 @@
 		{}												// empty input file
 	| external_definition_list
-		{ parseTree = parseTree != nullptr ? parseTree->appendList( $1 ) : $1;	}
+		{ parseTree = parseTree ? parseTree->appendList( $1 ) : $1;	}
 	;
 
@@ -2017,10 +2029,10 @@
 	external_definition
 	| external_definition_list push external_definition
-		{ $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; }
+		{ $$ = $1 ? $1->appendList( $3 ) : $3; }
 	;
 
 external_definition_list_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| external_definition_list
 	;
@@ -2145,10 +2157,12 @@
 asm_name_opt:											// GCC
 	// empty
-	| ASM '(' string_literal_list ')' attribute_list_opt { delete $3; }	// FIX ME: unimplemented
+		{ $$ = nullptr; }
+	| ASM '(' string_literal ')' attribute_list_opt
+		{ $$ = $3; }
 	;
 
 attribute_list_opt:										// GCC
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| attribute_list
 	;
@@ -2163,5 +2177,5 @@
 	ATTRIBUTE '(' '(' attribute_parameter_list ')' ')'
 	//		{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	;
 
@@ -2872,5 +2886,5 @@
 assignment_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| '=' assignment_expression
 		{ $$ = $2; }
Index: src/Parser/parseutility.cc
===================================================================
--- src/Parser/parseutility.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/Parser/parseutility.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// parseutility.cc -- 
+// parseutility.cc --
 //
 // Author           : Rodolfo G. Esteves
@@ -12,5 +12,5 @@
 // Last Modified On : Sun Aug 14 23:45:03 2016
 // Update Count     : 3
-// 
+//
 
 #include "parseutility.h"
@@ -26,5 +26,5 @@
 	UntypedExpr *comparison = new UntypedExpr( new NameExpr( "?!=?" ) );
 	comparison->get_args().push_back( orig );
-	comparison->get_args().push_back( new NameExpr( "0" ) );
+	comparison->get_args().push_back( new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) ) );
 	return new CastExpr( comparison, new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
 }
Index: src/ResolvExpr/CommonType.cc
===================================================================
--- src/ResolvExpr/CommonType.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/ResolvExpr/CommonType.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -42,4 +42,5 @@
 		virtual void visit( OneType *oneType );
 
+		void getCommonWithVoidPointer( PointerType* voidPointer, PointerType* otherPointer );
 		template< typename RefType > void handleRefType( RefType *inst, Type *other );
 
@@ -143,28 +144,23 @@
 	}
 
-	/// true if a common type for t must be a complete type
-	bool requiredComplete( Type * t ) {
-		if ( TypeInstType * inst = dynamic_cast< TypeInstType * > ( t ) ) {
-			return inst->get_baseType()->isComplete();
+	void CommonType::getCommonWithVoidPointer( PointerType* voidPointer, PointerType* otherPointer ) {
+		if ( TypeInstType* var = dynamic_cast< TypeInstType* >( otherPointer->get_base() ) ) {
+			OpenVarSet::const_iterator entry = openVars.find( var->get_name() );
+			if ( entry != openVars.end() ) {
+				AssertionSet need, have;
+				WidenMode widen( widenFirst, widenSecond );
+				if ( entry != openVars.end() && ! bindVar(var, voidPointer->get_base(), entry->second, env, need, have, openVars, widen, indexer ) ) return;
+			}
 		}
-		return false;
+		result = voidPointer->clone();
+		result->get_qualifiers() += otherPointer->get_qualifiers();
 	}
 
 	void CommonType::visit( PointerType *pointerType ) {
 		if ( PointerType *otherPointer = dynamic_cast< PointerType* >( type2 ) ) {
-			// Note: relationship between formal and actual types is antisymmetric
-			//   void free(void *);
-			//   forall(otype T) void foo(T *);
-			//
-			// should be able to pass T* to free, but should not be able to pass a void* to foo.
-			// because of this, the requiredComplete check occurs only on the first, since it corresponds
-			// to the formal parameter type (though this may be incorrect in some cases, in which case
-			// perhaps the widen mode needs to incorporate another bit for whether this is a formal or actual context)
-			if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) && ! isFtype(pointerType->get_base(), indexer) && ! requiredComplete( pointerType->get_base() ) ) {
-				result = otherPointer->clone();
-				result->get_qualifiers() += pointerType->get_qualifiers();
+			if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) && ! isFtype(pointerType->get_base(), indexer) ) {
+				getCommonWithVoidPointer( otherPointer, pointerType );
 			} else if ( widenSecond && dynamic_cast< VoidType* >( pointerType->get_base() ) && ! isFtype(otherPointer->get_base(), indexer) ) {
-				result = pointerType->clone();
-				result->get_qualifiers() += otherPointer->get_qualifiers();
+				getCommonWithVoidPointer( pointerType, otherPointer );
 			} else if ( ( pointerType->get_base()->get_qualifiers() >= otherPointer->get_base()->get_qualifiers() || widenFirst )
 					   && ( pointerType->get_base()->get_qualifiers() <= otherPointer->get_base()->get_qualifiers() || widenSecond ) ) {
@@ -256,4 +252,7 @@
 					result->get_qualifiers() += zeroType->get_qualifiers();
 				}
+			} else if ( widenSecond && dynamic_cast< OneType* >( type2 ) ) {
+				result = new BasicType( zeroType->get_qualifiers(), BasicType::SignedInt );
+				result->get_qualifiers() += type2->get_qualifiers();
 			}
 		}
@@ -267,4 +266,7 @@
 					result->get_qualifiers() += oneType->get_qualifiers();
 				}
+			} else if ( widenSecond && dynamic_cast< ZeroType* >( type2 ) ) {
+				result = new BasicType( oneType->get_qualifiers(), BasicType::SignedInt );
+				result->get_qualifiers() += type2->get_qualifiers();
 			}
 		}
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/ResolvExpr/Resolver.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -404,4 +404,6 @@
 	template< typename AggrInst >
 	TypeSubstitution makeGenericSubstitutuion( AggrInst * inst ) {
+		assert( inst );
+		assert( inst->get_baseParameters() );
 		std::list< TypeDecl * > baseParams = *inst->get_baseParameters();
 		std::list< Expression * > typeSubs = inst->get_parameters();
@@ -444,5 +446,4 @@
 
 	void Resolver::resolveAggrInit( ReferenceToType * inst, InitIterator & init, InitIterator & initEnd ) {
-
 		if ( StructInstType * sit = dynamic_cast< StructInstType * >( inst ) ) {
 			TypeSubstitution sub = makeGenericSubstitutuion( sit );
@@ -455,5 +456,5 @@
 			}
 		} else if ( UnionInstType * uit = dynamic_cast< UnionInstType * >( inst ) ) {
-			TypeSubstitution sub = makeGenericSubstitutuion( sit );
+			TypeSubstitution sub = makeGenericSubstitutuion( uit );
 			UnionDecl * un = uit->get_baseUnion();
 			// only resolve to the first member of a union
Index: src/ResolvExpr/Unify.cc
===================================================================
--- src/ResolvExpr/Unify.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/ResolvExpr/Unify.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -31,14 +31,4 @@
 
 namespace ResolvExpr {
-	struct WidenMode {
-		WidenMode( bool widenFirst, bool widenSecond ): widenFirst( widenFirst ), widenSecond( widenSecond ) {}
-		WidenMode &operator|=( const WidenMode &other ) { widenFirst |= other.widenFirst; widenSecond |= other.widenSecond; return *this; }
-		WidenMode &operator&=( const WidenMode &other ) { widenFirst &= other.widenFirst; widenSecond &= other.widenSecond; return *this; }
-		WidenMode operator|( const WidenMode &other ) { WidenMode newWM( *this ); newWM |= other; return newWM; }
-		WidenMode operator&( const WidenMode &other ) { WidenMode newWM( *this ); newWM &= other; return newWM; }
-		operator bool() { return widenFirst && widenSecond; }
-
-		bool widenFirst : 1, widenSecond : 1;
-	};
 
 	class Unify : public Visitor {
Index: src/ResolvExpr/Unify.h
===================================================================
--- src/ResolvExpr/Unify.h	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/ResolvExpr/Unify.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// Unify.h -- 
+// Unify.h --
 //
 // Author           : Richard C. Bilson
@@ -27,4 +27,16 @@
 
 namespace ResolvExpr {
+	struct WidenMode {
+		WidenMode( bool widenFirst, bool widenSecond ): widenFirst( widenFirst ), widenSecond( widenSecond ) {}
+		WidenMode &operator|=( const WidenMode &other ) { widenFirst |= other.widenFirst; widenSecond |= other.widenSecond; return *this; }
+		WidenMode &operator&=( const WidenMode &other ) { widenFirst &= other.widenFirst; widenSecond &= other.widenSecond; return *this; }
+		WidenMode operator|( const WidenMode &other ) { WidenMode newWM( *this ); newWM |= other; return newWM; }
+		WidenMode operator&( const WidenMode &other ) { WidenMode newWM( *this ); newWM &= other; return newWM; }
+		operator bool() { return widenFirst && widenSecond; }
+
+		bool widenFirst : 1, widenSecond : 1;
+	};
+
+	bool bindVar( TypeInstType *typeInst, Type *other, const TypeDecl::Data & data, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer );
 	bool unify( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, OpenVarSet &openVars, const SymTab::Indexer &indexer );
 	bool unify( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, OpenVarSet &openVars, const SymTab::Indexer &indexer, Type *&commonType );
Index: src/SymTab/Autogen.h
===================================================================
--- src/SymTab/Autogen.h	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/SymTab/Autogen.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -88,5 +88,5 @@
 		if ( forward ) {
 			// generate: for ( int i = 0; i < 0; ++i )
-			begin = new NameExpr( "0" );
+			begin = new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) );
 			end = array->get_dimension()->clone();
 			cmp = new NameExpr( "?<?" );
@@ -96,6 +96,6 @@
 			begin = new UntypedExpr( new NameExpr( "?-?" ) );
 			((UntypedExpr*)begin)->get_args().push_back( array->get_dimension()->clone() );
-			((UntypedExpr*)begin)->get_args().push_back( new NameExpr( "1" ) );
-			end = new NameExpr( "0" );
+			((UntypedExpr*)begin)->get_args().push_back( new ConstantExpr( Constant( new OneType( emptyQualifiers ), "1" ) ) );
+			end = new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) );
 			cmp = new NameExpr( "?>=?" );
 			update = new NameExpr( "--?" );
@@ -175,3 +175,2 @@
 } // namespace SymTab
 #endif // AUTOGEN_H
-
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/SynTree/Declaration.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 18 23:50:24 2016
-// Update Count     : 40
+// Last Modified On : Tue Dec 13 13:37:33 2016
+// Update Count     : 49
 //
 
@@ -69,10 +69,13 @@
 
 	std::string get_mangleName() const { return mangleName; }
-	void set_mangleName( std::string newValue ) { mangleName = newValue; }
+	DeclarationWithType * set_mangleName( std::string newValue ) { mangleName = newValue; return this; }
 
 	std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }
 
 	int get_scopeLevel() const { return scopeLevel; }
-	void set_scopeLevel( int newValue ) { scopeLevel = newValue; }
+	DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }
+
+	ConstantExpr *get_asmName() const { return asmName; }
+	DeclarationWithType * set_asmName( ConstantExpr *newValue ) { asmName = newValue; return this; }
 
 	std::list< Attribute * >& get_attributes() { return attributes; }
@@ -87,8 +90,8 @@
 	// this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2
 	std::string mangleName;
-	// need to remember the scope level at which the variable was declared, so that
-	// shadowed identifiers can be accessed
+	// need to remember the scope level at which the variable was declared, so that shadowed identifiers can be accessed
 	int scopeLevel = 0;
 
+	ConstantExpr *asmName;
 	std::list< Attribute * > attributes;
 };
@@ -106,4 +109,5 @@
 	Initializer *get_init() const { return init; }
 	void set_init( Initializer *newValue ) { init = newValue; }
+
 	Expression *get_bitfieldWidth() const { return bitfieldWidth; }
 	void set_bitfieldWidth( Expression *newValue ) { bitfieldWidth = newValue; }
Index: src/SynTree/DeclarationWithType.cc
===================================================================
--- src/SynTree/DeclarationWithType.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/SynTree/DeclarationWithType.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 18 23:50:41 2016
-// Update Count     : 4
+// Last Modified On : Tue Dec 13 14:49:43 2016
+// Update Count     : 7
 //
 
@@ -20,5 +20,5 @@
 
 DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes )
-		: Declaration( name, sc, linkage ), attributes( attributes ) {
+	: Declaration( name, sc, linkage ), asmName( nullptr ), attributes( attributes ) {
 }
 
@@ -26,8 +26,10 @@
 		: Declaration( other ), mangleName( other.mangleName ), scopeLevel( other.scopeLevel ) {
 	cloneAll( other.attributes, attributes );
+	asmName = maybeClone( other.asmName );
 }
 
 DeclarationWithType::~DeclarationWithType() {
 	deleteAll( attributes );
+	delete asmName;
 }
 
Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/SynTree/Expression.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -438,5 +438,8 @@
 }
 
-NameExpr::NameExpr( std::string _name, Expression *_aname ) : Expression( _aname ), name(_name) {}
+NameExpr::NameExpr( std::string _name, Expression *_aname ) : Expression( _aname ), name(_name) {
+	assertf(_name != "0", "Zero is not a valid name\n");
+	assertf(_name != "1", "One is not a valid name\n");
+}
 
 NameExpr::NameExpr( const NameExpr &other ) : Expression( other ), name( other.name ) {
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/SynTree/Type.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -82,4 +82,6 @@
 	ForallList forall;
 };
+
+extern Type::Qualifiers emptyQualifiers;				// no qualifiers on constants
 
 class VoidType : public Type {
Index: src/driver/Makefile.am
===================================================================
--- src/driver/Makefile.am	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/driver/Makefile.am	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -16,5 +16,15 @@
 
 # applies to both programs
-AM_CXXFLAGS = -Wall
+AM_CXXFLAGS = -Wall -O2
+if BUILD_NO_LIB
+else
+AM_CXXFLAGS += -DHAVE_LIBCFA
+endif
+if BUILD_DEBUG
+AM_CXXFLAGS += -DHAVE_LIBCFA_DEBUG
+endif
+if BUILD_RELEASE
+AM_CXXFLAGS += -DHAVE_LIBCFA_RELEASE
+endif
 
 bin_PROGRAMS = cfa
Index: src/driver/Makefile.in
===================================================================
--- src/driver/Makefile.in	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/driver/Makefile.in	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -36,4 +36,9 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@BUILD_NO_LIB_FALSE@am__append_1 = -DHAVE_LIBCFA
+@BUILD_DEBUG_TRUE@am__append_2 = -DHAVE_LIBCFA_DEBUG
+@BUILD_RELEASE_TRUE@am__append_3 = -DHAVE_LIBCFA_RELEASE
 bin_PROGRAMS = cfa$(EXEEXT)
 cc1lib_PROGRAMS = cc1$(EXEEXT)
@@ -92,4 +97,7 @@
 BACKEND_CC = @BACKEND_CC@
 CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
 CCDEPMODE = @CCDEPMODE@
 CFA_BACKEND_CC = @CFA_BACKEND_CC@
@@ -126,4 +134,5 @@
 LIBS = @LIBS@
 LTLIBOBJS = @LTLIBOBJS@
+MACHINE_TYPE = @MACHINE_TYPE@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -157,5 +166,9 @@
 am__untar = @am__untar@
 bindir = @bindir@
+build = @build@
 build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
 builddir = @builddir@
 datadir = @datadir@
@@ -164,5 +177,9 @@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+host = @host@
 host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
 htmldir = @htmldir@
 includedir = @includedir@
@@ -190,5 +207,6 @@
 
 # applies to both programs
-AM_CXXFLAGS = -Wall
+AM_CXXFLAGS = -Wall -O2 $(am__append_1) $(am__append_2) \
+	$(am__append_3)
 cfa_SOURCES = cfa.cc
 
Index: src/driver/cfa.cc
===================================================================
--- src/driver/cfa.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/driver/cfa.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -231,11 +231,5 @@
 	} // if
 
-	string d;
-	if ( debug ) {
-		d = "-d";
-	} // if
-
 	// add the CFA include-library paths, which allow direct access to header files without directory qualification
-
 	args[nargs] = "-I" CFA_INCDIR;
 	nargs += 1;
@@ -244,14 +238,35 @@
 		nargs += 1;
 	} // if
+	args[nargs] = "-I" CFA_INCDIR "/concurrency";
+	nargs += 1;
 	args[nargs] = "-I" CFA_INCDIR "/containers";
 	nargs += 1;
 
+#ifdef HAVE_LIBCFA
 	if ( link ) {
+		#if ! defined(HAVE_LIBCFA_RELEASE)
+			if( !debug ) { 
+				cerr << "error: Option -nodebug is not available, libcfa was not installed." << endl;
+				exit( EXIT_FAILURE );
+				}
+		#endif
+		#if ! defined(HAVE_LIBCFA_DEBUG)
+			if( debug ) { 
+				cerr << "error: Option -debug is not available, libcfa-d was not installed." << endl;
+				exit( EXIT_FAILURE );
+				}
+		#endif
+
 		// include the cfa library in case it's needed
 		args[nargs] = "-L" CFA_LIBDIR;
 		nargs += 1;
-		args[nargs] = "-lcfa";
-		nargs += 1;
-	} // if
+		if( debug ) {
+			args[nargs] = "-lcfa-d";
+		} else {
+			args[nargs] = "-lcfa";
+		}
+		nargs += 1;
+	} // if
+#endif //HAVE_LIBCFA
 
 	// add the correct set of flags based on the type of compile this is
Index: src/examples/ArrayN.c
===================================================================
--- src/examples/ArrayN.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/examples/ArrayN.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,25 @@
+#include <fstream>
+
+// [unsigned, unsigned] offset_to_index(unsigned offset, unsigned sx, unsigned sy)
+// {
+//     return [offset / sx, offset % sy];
+// }
+
+forall(otype index_t)
+index_t offset_to_index(unsigned offset, index_t size)
+{
+    return [offset / size.0, offset % size.1];
+}
+
+int main(int argc, char* argv[])
+{
+    unsigned x = 0, y = 0, i = 0;
+    unsigned sx = 4, sy = 4;
+
+    i = 6;
+    [x, y] = offset_to_index(6, [sx, sy]);
+
+    sout | x | ' ' | y | endl;
+
+    return 0;
+}
Index: src/examples/Bench.c
===================================================================
--- src/examples/Bench.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/examples/Bench.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,93 @@
+
+
+#include <fstream>
+#include <threads>
+
+#include <unistd.h>					// sysconf
+#include <sys/times.h>					// times
+#include <time.h>
+
+inline unsigned long long int Time() {
+    timespec ts;
+    clock_gettime(
+#if defined( __linux__ )
+	 CLOCK_THREAD_CPUTIME_ID,
+#elif defined( __freebsd__ )
+	 CLOCK_PROF,
+#elif defined( __solaris__ )
+	 CLOCK_HIGHRES,
+#else
+    #error uC++ : internal error, unsupported architecture
+#endif
+	 &ts );
+    return 1000000000LL * ts.tv_sec + ts.tv_nsec;
+} // Time
+
+//=======================================
+// time coroutine
+//=======================================
+
+struct CoroutineResume {
+    int N;
+    coroutine c;
+};
+
+coroutine* get_coroutine(CoroutineResume* this);
+void co_main(CoroutineResume* this);
+
+void ?{}(CoroutineResume* this, int N) {
+      this->N = N;
+	prime(this);
+}
+
+coroutine* get_coroutine(CoroutineResume* this) {
+      return &this->c;
+}
+
+void co_main(CoroutineResume* this) {
+	for ( int i = 1; i <= this->N; i += 1 ) {
+		suspend();
+	} // for
+} // CoroutineResume::main
+
+void resumer(CoroutineResume* this) {
+	long long int StartTime, EndTime;
+
+	StartTime = Time();
+	for ( int i = 1; i <= this->N; i += 1 ) {
+		resume(this);
+	} // for
+	EndTime = Time();
+	sout | "\t " | ( EndTime - StartTime ) / this->N;
+} // CoroutineResume::resumer
+
+
+int main() {
+	const int NoOfTimes =
+#if defined( __U_DEBUG__ )				// takes longer so run fewer iterations
+	100000;
+#else
+	1000000;
+#endif // __U_DEBUG__
+
+	sout | "\t\tcreate\tcreate\t16i/4o\t16i/4o\tresume/\tsignal/" | endl;
+	sout | "(nsecs)";
+	sout | "\t\tdelete/\tdelete/\tbytes\tbytes\tsuspend\twait" | endl;
+	sout | "\t\tblock\tdynamic\tdirect\taccept\tcycle\tcycle" | endl;
+
+	sout | "class\t";
+	sout | "\t N/A\t N/A\t N/A";
+	sout | "\t N/A\t N/A\t N/A";
+	sout | "\t" | endl;
+
+	sout | "coroutine";
+	sout | "\t N/A\t N/A\t N/A";
+	sout | "\t N/A";
+	{
+		CoroutineResume resumer = { NoOfTimes };
+		resumer(&resumer);
+	}
+	sout | "\t N/A";
+
+	sout | "\t" | endl;
+}
Index: src/examples/Makefile.am
===================================================================
--- src/examples/Makefile.am	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/examples/Makefile.am	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -16,9 +16,18 @@
 
 # applies to both programs
-CFLAGS = -g -Wall -Wno-unused-function # TEMPORARY: does not build with -O2
+CFLAGS =
+AM_CFLAGS = -g -Wall -Wno-unused-function -O2
 CC = @CFA_BINDIR@/cfa
 
-noinst_PROGRAMS = fstream_test vector_test avl_test # build but do not install
+noinst_PROGRAMS = fstream_test vector_test avl_test Bench # build but do not install
 fstream_test_SOURCES = fstream_test.c
 vector_test_SOURCES = vector_int.c array.c vector_test.c
 avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
+
+Bench : Bench.c
+	@for ccflags in "-debug" "-nodebug"; do \
+		echo ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
+		${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
+		./a.out ; \
+	done ; \
+	rm -f ./a.out ;
Index: src/examples/Makefile.in
===================================================================
--- src/examples/Makefile.in	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/examples/Makefile.in	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -36,6 +36,8 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
 noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
-	avl_test$(EXEEXT)
+	avl_test$(EXEEXT) Bench$(EXEEXT)
 subdir = src/examples
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -49,4 +51,7 @@
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
+Bench_SOURCES = Bench.c
+Bench_OBJECTS = Bench.$(OBJEXT)
+Bench_LDADD = $(LDADD)
 am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \
 	avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \
@@ -84,7 +89,7 @@
 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
+SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \
 	$(vector_test_SOURCES)
-DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
+DIST_SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \
 	$(vector_test_SOURCES)
 ETAGS = etags
@@ -101,4 +106,7 @@
 BACKEND_CC = @BACKEND_CC@
 CC = @CFA_BINDIR@/cfa
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
 CCDEPMODE = @CCDEPMODE@
 CFA_BACKEND_CC = @CFA_BACKEND_CC@
@@ -110,5 +118,5 @@
 
 # applies to both programs
-CFLAGS = -g -Wall -Wno-unused-function # TEMPORARY: does not build with -O2
+CFLAGS = 
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
@@ -137,4 +145,5 @@
 LIBS = @LIBS@
 LTLIBOBJS = @LTLIBOBJS@
+MACHINE_TYPE = @MACHINE_TYPE@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -168,5 +177,9 @@
 am__untar = @am__untar@
 bindir = @bindir@
+build = @build@
 build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
 builddir = @builddir@
 datadir = @datadir@
@@ -175,5 +188,9 @@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+host = @host@
 host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
 htmldir = @htmldir@
 includedir = @includedir@
@@ -199,4 +216,5 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+AM_CFLAGS = -g -Wall -Wno-unused-function -O2
 fstream_test_SOURCES = fstream_test.c
 vector_test_SOURCES = vector_int.c array.c vector_test.c
@@ -255,4 +273,5 @@
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bench.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl-private.Po@am__quote@
@@ -580,4 +599,12 @@
 
 
+Bench : Bench.c
+	@for ccflags in "-debug" "-nodebug"; do \
+		echo ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
+		${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
+		./a.out ; \
+	done ; \
+	rm -f ./a.out ;
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
Index: src/examples/zero_one.c
===================================================================
--- src/examples/zero_one.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/examples/zero_one.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,24 @@
+#include <fstream>
+
+void foo(zero_t o)
+{
+	sout | "It's a Zero!" | endl;
+}
+
+void foo(one_t o)
+{
+	sout | "It's a One!" | endl;
+}
+
+void foo(int o)
+{
+	sout | "It's a Number!" | endl;
+}
+
+int main() 
+{
+	foo(0);
+	foo(1);
+	foo(2);
+	return 0;
+}
Index: src/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/libcfa/Makefile.am	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 08:54:01 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Fri Aug 26 12:03:37 2016
-## Update Count     : 199
+## Last Modified On : Wed Dec 14 15:17:30 2016
+## Update Count     : 211
 ###############################################################################
 
@@ -18,43 +18,28 @@
 AUTOMAKE_OPTIONS = subdir-objects
 
-lib_LIBRARIES = libcfa.a
+lib_LIBRARIES =
 
-# put into lib for now
-cfalibdir = ${libdir}
-cfalib_DATA = builtins.cf extras.cf prelude.cf
+if BUILD_RELEASE
+lib_LIBRARIES += libcfa.a
+endif
 
-# create extra forward types/declarations to reduce inclusion of library files
-extras.cf : extras.regx extras.c
-	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
+if BUILD_DEBUG
+lib_LIBRARIES += libcfa-d.a
+endif
 
-# create forward declarations for gcc builtins
-builtins.cf : builtins.c
-	${AM_V_GEN}if [ -e $< ] ; then \
-		@BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
-	fi
+libcfa_a-libcfa-prelude.o : libcfa-prelude.c
+	 ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -O2 -c -o $@ $<
 
-builtins.c : builtins.def prototypes.awk
-	${AM_V_GEN}if [ -e $< ] ; then \
-		@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
-	fi
+libcfa_d_a-libcfa-prelude.o : libcfa-prelude.c
+	 ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -D__CFA_DEBUG__ -O0 -c -o $@ $<
 
-builtins.def :
+EXTRA_FLAGS = -g -Wall -Wno-unused-function -I${abs_top_srcdir}/src/libcfa/libhdr -imacros libcfa-prelude.c @CFA_FLAGS@
 
-prototypes.awk :
-
-MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
-
-#--------------------------------------------------
-
-libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
-	${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
-
-libcfa-prelude.o : libcfa-prelude.c
-	 ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
-
-CFLAGS = -quiet -no-include-stdhdr -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
+AM_CCASFLAGS = @CFA_FLAGS@
+CFLAGS = -quiet -no-include-stdhdr -XCFA -t -B${abs_top_srcdir}/src/driver ${EXTRA_FLAGS}
 CC = ${abs_top_srcdir}/src/driver/cfa
 
-headers = limits stdlib math iostream fstream iterator rational containers/vector
+headers = limits stdlib math iostream fstream iterator rational assert containers/vector concurrency/threads
+runtimehdrs = concurrency
 libobjs = ${headers:=.o}
 
@@ -63,11 +48,22 @@
 	@true
 
+concurrency/libcfa_a-invoke.o : concurrency/invoke.c
+	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
+
+concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c
+	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
+
 ${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
 
-libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
+libsrc = libcfa-prelude.c ${headers:=.c} concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/invoke.c
+
+libcfa_a_SOURCES = ${libsrc}
+libcfa_a_CFLAGS = -nodebug -O2
+libcfa_d_a_SOURCES = ${libsrc}
+libcfa_d_a_CFLAGS = -debug -O0
 
 stdhdr = ${shell echo stdhdr/*}
 
-nobase_include_HEADERS = ${headers} ${stdhdr}
+nobase_include_HEADERS = ${headers} ${stdhdr} concurrency/invoke.h
 
 CLEANFILES = libcfa-prelude.c
Index: src/libcfa/Makefile.in
===================================================================
--- src/libcfa/Makefile.in	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/libcfa/Makefile.in	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -18,5 +18,4 @@
 ######################## -*- Mode: Makefile-Automake -*- ######################
 ###############################################################################
-
 
 
@@ -38,4 +37,8 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@BUILD_RELEASE_TRUE@am__append_1 = libcfa.a
+@BUILD_DEBUG_TRUE@am__append_2 = libcfa-d.a
 subdir = src/libcfa
 DIST_COMMON = $(nobase_include_HEADERS) $(srcdir)/Makefile.am \
@@ -76,6 +79,5 @@
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)" \
-	"$(DESTDIR)$(includedir)"
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
 LIBRARIES = $(lib_LIBRARIES)
 AR = ar
@@ -87,11 +89,31 @@
 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
+libcfa_d_a_AR = $(AR) $(ARFLAGS)
+libcfa_d_a_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = libcfa_d_a-limits.$(OBJEXT) \
+	libcfa_d_a-stdlib.$(OBJEXT) libcfa_d_a-math.$(OBJEXT) \
+	libcfa_d_a-iostream.$(OBJEXT) libcfa_d_a-fstream.$(OBJEXT) \
+	libcfa_d_a-iterator.$(OBJEXT) libcfa_d_a-rational.$(OBJEXT) \
+	libcfa_d_a-assert.$(OBJEXT) \
+	containers/libcfa_d_a-vector.$(OBJEXT) \
+	concurrency/libcfa_d_a-threads.$(OBJEXT)
+am__objects_2 = libcfa_d_a-libcfa-prelude.$(OBJEXT) $(am__objects_1) \
+	concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) \
+	concurrency/libcfa_d_a-invoke.$(OBJEXT)
+am_libcfa_d_a_OBJECTS = $(am__objects_2)
+libcfa_d_a_OBJECTS = $(am_libcfa_d_a_OBJECTS)
 libcfa_a_AR = $(AR) $(ARFLAGS)
 libcfa_a_LIBADD =
-am__dirstamp = $(am__leading_dot)dirstamp
-am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) math.$(OBJEXT) \
-	iostream.$(OBJEXT) fstream.$(OBJEXT) iterator.$(OBJEXT) \
-	rational.$(OBJEXT) containers/vector.$(OBJEXT)
-am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1)
+am__objects_3 = libcfa_a-limits.$(OBJEXT) libcfa_a-stdlib.$(OBJEXT) \
+	libcfa_a-math.$(OBJEXT) libcfa_a-iostream.$(OBJEXT) \
+	libcfa_a-fstream.$(OBJEXT) libcfa_a-iterator.$(OBJEXT) \
+	libcfa_a-rational.$(OBJEXT) libcfa_a-assert.$(OBJEXT) \
+	containers/libcfa_a-vector.$(OBJEXT) \
+	concurrency/libcfa_a-threads.$(OBJEXT)
+am__objects_4 = libcfa_a-libcfa-prelude.$(OBJEXT) $(am__objects_3) \
+	concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) \
+	concurrency/libcfa_a-invoke.$(OBJEXT)
+am_libcfa_a_OBJECTS = $(am__objects_4)
 libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
@@ -99,4 +121,12 @@
 am__depfiles_maybe = depfiles
 am__mv = mv -f
+CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
+AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
+am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
+am__v_CPPAS_0 = @echo "  CPPAS " $@;
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -112,7 +142,6 @@
 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libcfa_a_SOURCES)
-DIST_SOURCES = $(libcfa_a_SOURCES)
-DATA = $(cfalib_DATA)
+SOURCES = $(libcfa_d_a_SOURCES) $(libcfa_a_SOURCES)
+DIST_SOURCES = $(libcfa_d_a_SOURCES) $(libcfa_a_SOURCES)
 HEADERS = $(nobase_include_HEADERS)
 ETAGS = etags
@@ -129,4 +158,7 @@
 BACKEND_CC = @BACKEND_CC@
 CC = ${abs_top_srcdir}/src/driver/cfa
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
 CCDEPMODE = @CCDEPMODE@
 CFA_BACKEND_CC = @CFA_BACKEND_CC@
@@ -136,5 +168,5 @@
 CFA_LIBDIR = @CFA_LIBDIR@
 CFA_PREFIX = @CFA_PREFIX@
-CFLAGS = -quiet -no-include-stdhdr -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
+CFLAGS = -quiet -no-include-stdhdr -XCFA -t -B${abs_top_srcdir}/src/driver ${EXTRA_FLAGS}
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
@@ -163,4 +195,5 @@
 LIBS = @LIBS@
 LTLIBOBJS = @LTLIBOBJS@
+MACHINE_TYPE = @MACHINE_TYPE@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -194,5 +227,9 @@
 am__untar = @am__untar@
 bindir = @bindir@
+build = @build@
 build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
 builddir = @builddir@
 datadir = @datadir@
@@ -201,5 +238,9 @@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+host = @host@
 host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
 htmldir = @htmldir@
 includedir = @includedir@
@@ -228,20 +269,22 @@
 # create object files in directory with source files
 AUTOMAKE_OPTIONS = subdir-objects
-lib_LIBRARIES = libcfa.a
-
-# put into lib for now
-cfalibdir = ${libdir}
-cfalib_DATA = builtins.cf extras.cf prelude.cf
-MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
-headers = limits stdlib math iostream fstream iterator rational containers/vector
+lib_LIBRARIES = $(am__append_1) $(am__append_2)
+EXTRA_FLAGS = -g -Wall -Wno-unused-function -I${abs_top_srcdir}/src/libcfa/libhdr -imacros libcfa-prelude.c @CFA_FLAGS@
+AM_CCASFLAGS = @CFA_FLAGS@
+headers = limits stdlib math iostream fstream iterator rational assert containers/vector concurrency/threads
+runtimehdrs = concurrency
 libobjs = ${headers:=.o}
-libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
+libsrc = libcfa-prelude.c ${headers:=.c} concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/invoke.c
+libcfa_a_SOURCES = ${libsrc}
+libcfa_a_CFLAGS = -nodebug -O2
+libcfa_d_a_SOURCES = ${libsrc}
+libcfa_d_a_CFLAGS = -debug -O0
 stdhdr = ${shell echo stdhdr/*}
-nobase_include_HEADERS = ${headers} ${stdhdr}
+nobase_include_HEADERS = ${headers} ${stdhdr} concurrency/invoke.h
 CLEANFILES = libcfa-prelude.c
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .o .obj
+.SUFFIXES: .S .c .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
@@ -310,6 +353,29 @@
 	@$(MKDIR_P) containers/$(DEPDIR)
 	@: > containers/$(DEPDIR)/$(am__dirstamp)
-containers/vector.$(OBJEXT): containers/$(am__dirstamp) \
+containers/libcfa_d_a-vector.$(OBJEXT): containers/$(am__dirstamp) \
 	containers/$(DEPDIR)/$(am__dirstamp)
+concurrency/$(am__dirstamp):
+	@$(MKDIR_P) concurrency
+	@: > concurrency/$(am__dirstamp)
+concurrency/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) concurrency/$(DEPDIR)
+	@: > concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/libcfa_d_a-threads.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT):  \
+	concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/libcfa_d_a-invoke.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+libcfa-d.a: $(libcfa_d_a_OBJECTS) $(libcfa_d_a_DEPENDENCIES) $(EXTRA_libcfa_d_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libcfa-d.a
+	$(AM_V_AR)$(libcfa_d_a_AR) libcfa-d.a $(libcfa_d_a_OBJECTS) $(libcfa_d_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libcfa-d.a
+containers/libcfa_a-vector.$(OBJEXT): containers/$(am__dirstamp) \
+	containers/$(DEPDIR)/$(am__dirstamp)
+concurrency/libcfa_a-threads.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/libcfa_a-invoke.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
 libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES) 
 	$(AM_V_at)-rm -f libcfa.a
@@ -319,18 +385,56 @@
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
-	-rm -f containers/vector.$(OBJEXT)
+	-rm -f concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT)
+	-rm -f concurrency/libcfa_a-invoke.$(OBJEXT)
+	-rm -f concurrency/libcfa_a-threads.$(OBJEXT)
+	-rm -f concurrency/libcfa_d_a-invoke.$(OBJEXT)
+	-rm -f concurrency/libcfa_d_a-threads.$(OBJEXT)
+	-rm -f containers/libcfa_a-vector.$(OBJEXT)
+	-rm -f containers/libcfa_d_a-vector.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iostream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iterator.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa-prelude.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/limits.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdlib.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/vector.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-assert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-fstream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-iostream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-iterator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-libcfa-prelude.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-limits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-math.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-rational.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-stdlib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-assert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-fstream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-iostream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-iterator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-libcfa-prelude.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-limits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-math.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-rational.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-stdlib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/CtxSwitch-@MACHINE_TYPE@.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-invoke.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-threads.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-invoke.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-threads.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_a-vector.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_d_a-vector.Po@am__quote@
+
+.S.o:
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $<
+
+.S.obj:
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.o:
@@ -349,22 +453,312 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-install-cfalibDATA: $(cfalib_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(cfalibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfalibdir)"
-	@list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cfalibdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(cfalibdir)" || exit $$?; \
-	done
-
-uninstall-cfalibDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir)
+
+libcfa_d_a-libcfa-prelude.obj: libcfa-prelude.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-libcfa-prelude.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-libcfa-prelude.Tpo -c -o libcfa_d_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-libcfa-prelude.Tpo $(DEPDIR)/libcfa_d_a-libcfa-prelude.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libcfa-prelude.c' object='libcfa_d_a-libcfa-prelude.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
+
+libcfa_d_a-limits.o: limits.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
+
+libcfa_d_a-limits.obj: limits.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
+
+libcfa_d_a-stdlib.o: stdlib.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
+
+libcfa_d_a-stdlib.obj: stdlib.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
+
+libcfa_d_a-math.o: math.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-math.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-math.Tpo -c -o libcfa_d_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-math.Tpo $(DEPDIR)/libcfa_d_a-math.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='math.c' object='libcfa_d_a-math.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
+
+libcfa_d_a-math.obj: math.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-math.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-math.Tpo -c -o libcfa_d_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-math.Tpo $(DEPDIR)/libcfa_d_a-math.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='math.c' object='libcfa_d_a-math.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
+
+libcfa_d_a-iostream.o: iostream.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
+
+libcfa_d_a-iostream.obj: iostream.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
+
+libcfa_d_a-fstream.o: fstream.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
+
+libcfa_d_a-fstream.obj: fstream.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
+
+libcfa_d_a-iterator.o: iterator.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
+
+libcfa_d_a-iterator.obj: iterator.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
+
+libcfa_d_a-rational.o: rational.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
+
+libcfa_d_a-rational.obj: rational.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
+
+libcfa_d_a-assert.o: assert.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-assert.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-assert.Tpo -c -o libcfa_d_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-assert.Tpo $(DEPDIR)/libcfa_d_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='assert.c' object='libcfa_d_a-assert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
+
+libcfa_d_a-assert.obj: assert.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-assert.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-assert.Tpo -c -o libcfa_d_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-assert.Tpo $(DEPDIR)/libcfa_d_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='assert.c' object='libcfa_d_a-assert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
+
+containers/libcfa_d_a-vector.o: containers/vector.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
+
+containers/libcfa_d_a-vector.obj: containers/vector.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
+
+concurrency/libcfa_d_a-threads.o: concurrency/threads.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-threads.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo -c -o concurrency/libcfa_d_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_d_a-threads.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_d_a-threads.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
+
+concurrency/libcfa_d_a-threads.obj: concurrency/threads.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-threads.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo -c -o concurrency/libcfa_d_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_d_a-threads.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_d_a-threads.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
+
+concurrency/libcfa_d_a-invoke.obj: concurrency/invoke.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-invoke.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-invoke.Tpo -c -o concurrency/libcfa_d_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-invoke.Tpo concurrency/$(DEPDIR)/libcfa_d_a-invoke.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/invoke.c' object='concurrency/libcfa_d_a-invoke.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
+
+libcfa_a-libcfa-prelude.obj: libcfa-prelude.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-libcfa-prelude.obj -MD -MP -MF $(DEPDIR)/libcfa_a-libcfa-prelude.Tpo -c -o libcfa_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-libcfa-prelude.Tpo $(DEPDIR)/libcfa_a-libcfa-prelude.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libcfa-prelude.c' object='libcfa_a-libcfa-prelude.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
+
+libcfa_a-limits.o: limits.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='limits.c' object='libcfa_a-limits.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
+
+libcfa_a-limits.obj: limits.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='limits.c' object='libcfa_a-limits.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
+
+libcfa_a-stdlib.o: stdlib.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
+
+libcfa_a-stdlib.obj: stdlib.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
+
+libcfa_a-math.o: math.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-math.o -MD -MP -MF $(DEPDIR)/libcfa_a-math.Tpo -c -o libcfa_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-math.Tpo $(DEPDIR)/libcfa_a-math.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='math.c' object='libcfa_a-math.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
+
+libcfa_a-math.obj: math.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-math.obj -MD -MP -MF $(DEPDIR)/libcfa_a-math.Tpo -c -o libcfa_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-math.Tpo $(DEPDIR)/libcfa_a-math.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='math.c' object='libcfa_a-math.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
+
+libcfa_a-iostream.o: iostream.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
+
+libcfa_a-iostream.obj: iostream.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
+
+libcfa_a-fstream.o: fstream.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
+
+libcfa_a-fstream.obj: fstream.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
+
+libcfa_a-iterator.o: iterator.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
+
+libcfa_a-iterator.obj: iterator.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
+
+libcfa_a-rational.o: rational.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rational.c' object='libcfa_a-rational.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
+
+libcfa_a-rational.obj: rational.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rational.c' object='libcfa_a-rational.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
+
+libcfa_a-assert.o: assert.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-assert.o -MD -MP -MF $(DEPDIR)/libcfa_a-assert.Tpo -c -o libcfa_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-assert.Tpo $(DEPDIR)/libcfa_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='assert.c' object='libcfa_a-assert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
+
+libcfa_a-assert.obj: assert.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-assert.obj -MD -MP -MF $(DEPDIR)/libcfa_a-assert.Tpo -c -o libcfa_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-assert.Tpo $(DEPDIR)/libcfa_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='assert.c' object='libcfa_a-assert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
+
+containers/libcfa_a-vector.o: containers/vector.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
+
+containers/libcfa_a-vector.obj: containers/vector.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
+
+concurrency/libcfa_a-threads.o: concurrency/threads.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-threads.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-threads.Tpo -c -o concurrency/libcfa_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_a-threads.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_a-threads.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
+
+concurrency/libcfa_a-threads.obj: concurrency/threads.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-threads.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-threads.Tpo -c -o concurrency/libcfa_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_a-threads.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_a-threads.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
+
+concurrency/libcfa_a-invoke.obj: concurrency/invoke.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-invoke.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-invoke.Tpo -c -o concurrency/libcfa_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-invoke.Tpo concurrency/$(DEPDIR)/libcfa_a-invoke.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/invoke.c' object='concurrency/libcfa_a-invoke.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
 install-nobase_includeHEADERS: $(nobase_include_HEADERS)
 	@$(NORMAL_INSTALL)
@@ -473,7 +867,7 @@
 check-am: all-am
 check: check-am
-all-am: Makefile $(LIBRARIES) $(DATA) $(HEADERS)
+all-am: Makefile $(LIBRARIES) $(HEADERS)
 installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)" "$(DESTDIR)$(includedir)"; do \
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
@@ -505,4 +899,6 @@
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f concurrency/$(DEPDIR)/$(am__dirstamp)
+	-rm -f concurrency/$(am__dirstamp)
 	-rm -f containers/$(DEPDIR)/$(am__dirstamp)
 	-rm -f containers/$(am__dirstamp)
@@ -511,5 +907,4 @@
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
 clean: clean-am
 
@@ -517,5 +912,5 @@
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR) containers/$(DEPDIR)
+	-rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR)
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
@@ -534,5 +929,5 @@
 info-am:
 
-install-data-am: install-cfalibDATA install-nobase_includeHEADERS
+install-data-am: install-nobase_includeHEADERS
 
 install-dvi: install-dvi-am
@@ -563,5 +958,5 @@
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR) containers/$(DEPDIR)
+	-rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR)
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic \
@@ -580,6 +975,5 @@
 ps-am:
 
-uninstall-am: uninstall-cfalibDATA uninstall-libLIBRARIES \
-	uninstall-nobase_includeHEADERS
+uninstall-am: uninstall-libLIBRARIES uninstall-nobase_includeHEADERS
 
 .MAKE: install-am install-strip
@@ -588,8 +982,8 @@
 	clean-libLIBRARIES ctags distclean distclean-compile \
 	distclean-generic distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-cfalibDATA \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-libLIBRARIES install-man \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-libLIBRARIES install-man \
 	install-nobase_includeHEADERS install-pdf install-pdf-am \
 	install-ps install-ps-am install-strip installcheck \
@@ -597,34 +991,13 @@
 	maintainer-clean-generic maintainer-clean-local mostlyclean \
 	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-cfalibDATA \
-	uninstall-libLIBRARIES uninstall-nobase_includeHEADERS
-
-
-# create extra forward types/declarations to reduce inclusion of library files
-extras.cf : extras.regx extras.c
-	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
-
-# create forward declarations for gcc builtins
-builtins.cf : builtins.c
-	${AM_V_GEN}if [ -e $< ] ; then \
-		@BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
-	fi
-
-builtins.c : builtins.def prototypes.awk
-	${AM_V_GEN}if [ -e $< ] ; then \
-		@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
-	fi
-
-builtins.def :
-
-prototypes.awk :
-
-#--------------------------------------------------
-
-libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
-	${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
-
-libcfa-prelude.o : libcfa-prelude.c
-	 ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
+	tags uninstall uninstall-am uninstall-libLIBRARIES \
+	uninstall-nobase_includeHEADERS
+
+
+libcfa_a-libcfa-prelude.o : libcfa-prelude.c
+	 ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -O2 -c -o $@ $<
+
+libcfa_d_a-libcfa-prelude.o : libcfa-prelude.c
+	 ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -D__CFA_DEBUG__ -O0 -c -o $@ $<
 
 # extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
@@ -632,4 +1005,10 @@
 	@true
 
+concurrency/libcfa_a-invoke.o : concurrency/invoke.c
+	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
+
+concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c
+	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
+
 ${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
 
Index: src/libcfa/assert
===================================================================
--- src/libcfa/assert	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/assert	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,44 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// assert --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Thierry Delisle
+// Last Modified On : Mon Nov 28 12:27:26 2016
+// Update Count     : 0
+//
+
+#ifndef __ASSERT_H__
+#define __ASSERT_H__
+
+#ifdef __CFORALL__
+extern "C" {
+#endif //__CFORALL__
+
+	#include <assert.h>
+
+	#ifdef NDEBUG
+		#define assertf(expr, fmt, ...) ((void)0)
+	#else
+		#define __STRINGIFY__(str) #str
+		#define __VSTRINGIFY__(str) __STRINGIFY__(str)
+		#define assertf(expr, fmt, ...) ((expr) ? ((void)0) : __assert_fail_f(__VSTRINGIFY__(expr), __FILE__, __LINE__, __PRETTY_FUNCTION__, fmt, ## __VA_ARGS__ ))
+
+		void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) __attribute__((noreturn));
+	#endif
+	
+#ifdef __CFORALL__
+} // extern "C"
+#endif //__CFORALL__
+
+#endif // __ASSERT_H__
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/assert.c
===================================================================
--- src/libcfa/assert.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/assert.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,49 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// assert.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Thierry Delisle
+// Last Modified On : Mon Nov 28 12:27:26 2016
+// Update Count     : 0
+//
+
+#include "assert"
+#include "stdlib"										// abort
+
+extern "C" {
+	#include <stdarg.h>								// varargs
+	#include <stdio.h>								// fprintf
+
+	extern const char * __progname;						// global name of running executable (argv[0])
+
+	#define CFA_ASSERT_FMT "*CFA assertion error* from program \"%s\" in \"%s\" at line %d in file \"%s\""
+
+	// called by macro assert in assert.h
+	void __assert_fail( const char *assertion, const char *file, unsigned int line, const char *function ) {
+		fprintf( stderr, CFA_ASSERT_FMT ".\n", __progname, function, line, file );
+		abort();
+	}
+
+	// called by macro assertf
+	void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) {
+		fprintf( stderr, CFA_ASSERT_FMT ": ", __progname, function, line, file );
+		va_list args;
+		va_start( args, fmt );
+		vfprintf( stderr, fmt, args );
+		va_end( args );
+		fprintf( stderr, "\n" );
+		abort();
+	}
+
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/builtins.c
===================================================================
--- src/libcfa/builtins.c	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ 	(revision )
@@ -1,217 +1,0 @@
-#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)
-#define FUNC_SIMPLE(RETURN, NAME, ARGS...) RETURN NAME(ARGS);
-#define BT_LAST(NAME) FUNC_SIMPLE(void, NAME)
-
-#define BT_UINTMAX unsigned long int
-#define BT_UINT16 short int
-#define BT_UINT32 int
-#define BT_UINT64 long long int
-#define BT_UINT unsigned int
-#define BT_INTMAX long int
-#define BT_INTPTR int *
-#define BT_WINT unsigned int
-#define BT_INT int
-#define BT_ULONGLONG unsigned long long
-#define BT_ULONG unsigned long
-#define BT_UNSIGNED unsigned
-#define BT_COMPLEX_LONGDOUBLE _Complex long double
-#define BT_COMPLEX_DOUBLE _Complex double
-#define BT_COMPLEX_FLOAT _Complex float
-#define BT_LONGDOUBLEPTR long double *
-#define BT_LONGDOUBLE long double
-#define BT_LONGLONG long long
-#define BT_LONG long
-#define BT_DFLOAT32 _Decimal32
-#define BT_DFLOAT64 _Decimal64
-#define BT_DFLOAT128 _Decimal128
-#define BT_DOUBLEPTR double *
-#define BT_DOUBLE double
-#define BT_FLOATPTR float *
-#define BT_FLOAT float
-#define BT_CONST_PTR const void *
-#define BT_CONST_STRING const char *
-#define BT_PTR_FN_VOID_VAR_PTR_SIZE 
-#define BT_PTR_CONST_STRING char *const
-#define BT_PTRMODE_PTR 
-#define BT_PTRPTR void **
-#define BT_PTR void *
-#define BT_VOID void
-#define BT_STRING char *
-#define BT_FILEPTR struct _IO_FILE *
-#define BT_SIZE unsigned long
-#define BT_VAR ...
-#define BT_VALIST_ARG __builtin_va_list
-#define BT_VALIST_REF __builtin_va_list
-#define BT_UNWINDWORD void *
-#define BT_WORD 
-#define BT_SSIZE long int
-#define BT_PID int
-
-#define BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_LONGDOUBLE)
-#define BT_FN_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VALIST_ARG)
-#define BT_FN_VOID_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR)
-#define BT_FN_INT_CONST_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
-#define BT_FN_VOID_VALIST_REF(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF)
-#define BT_FN_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_COMPLEX_FLOAT)
-#define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR)
-#define BT_FN_VOID_PTR_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_PTR)
-#define BT_FN_FLOAT_FLOAT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONGDOUBLE)
-#define BT_FN_INT_UINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINT)
-#define BT_FN_CONST_STRING(NAME) FUNC_SIMPLE(BT_CONST_STRING, NAME)
-#define BT_FN_FLOAT_FLOAT_FLOATPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOATPTR)
-#define BT_FN_INT_INT_INT_INT_INT_INT_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_INT, BT_INT, BT_INT, BT_INT, BT_VAR)
-#define BT_FN_INT_INT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT)
-#define BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
-#define BT_FN_INT_LONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONG)
-#define BT_FN_INT_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR)
-#define BT_FN_VOID_PTR_WORD_WORD_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_WORD, BT_WORD, BT_PTR)
-#define BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
-#define BT_FN_INT_DFLOAT128(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT128)
-#define BT_FN_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE)
-#define BT_FN_FLOAT_CONST_STRING(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_CONST_STRING)
-#define BT_FN_LONGDOUBLE_LONGDOUBLE_INT(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INT)
-#define BT_FN_FLOAT_FLOAT_INT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INT)
-#define BT_FN_INT_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING)
-#define BT_FN_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGDOUBLE)
-#define BT_FN_SIZE_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING, BT_CONST_STRING)
-#define BT_FN_VOID_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_SIZE)
-#define BT_FN_INT_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING)
-#define BT_FN_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME)
-#define BT_FN_INT_UINTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINTMAX)
-#define BT_FN_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME)
-#define BT_FN_INT(NAME) FUNC_SIMPLE(BT_INT, NAME)
-#define BT_FN_FLOAT_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_INTPTR)
-#define BT_FN_DOUBLE_DOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONGDOUBLE)
-#define BT_FN_PTR_CONST_PTR_SIZE_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_SIZE, BT_VAR)
-#define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
-#define BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE)
-#define BT_FN_STRING_CONST_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
-#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONG(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONG)
-#define BT_FN_COMPLEX_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_DOUBLE)
-#define BT_FN_VOID(NAME) FUNC_SIMPLE(BT_VOID, NAME)
-#define BT_FN_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT)
-#define BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
-#define BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_FLOAT, BT_FLOATPTR, BT_FLOATPTR)
-#define BT_FN_INT_DFLOAT64(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT64)
-#define BT_FN_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INTPTR)
-#define BT_FN_WINT_WINT(NAME) FUNC_SIMPLE(BT_WINT, NAME, BT_WINT)
-#define BT_FN_LONGLONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGDOUBLE)
-#define BT_FN_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE)
-#define BT_FN_DFLOAT64_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_CONST_STRING)
-#define BT_FN_DOUBLE_DOUBLE_INT(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INT)
-#define BT_FN_INTMAX_INTMAX(NAME) FUNC_SIMPLE(BT_INTMAX, NAME, BT_INTMAX)
-#define BT_FN_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VAR)
-#define BT_FN_LONG_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG, BT_LONG)
-#define BT_FN_DOUBLE_DOUBLE_LONG(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONG)
-#define BT_FN_LONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONGDOUBLE)
-#define BT_FN_FLOAT_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_FLOAT)
-#define BT_FN_VOID_VALIST_REF_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF, BT_VAR)
-#define BT_FN_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING)
-#define BT_FN_VOID_VALIST_REF_VALIST_ARG(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF, BT_VALIST_ARG)
-#define BT_FN_LONGDOUBLE_CONST_STRING(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_CONST_STRING)
-#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INTPTR)
-#define BT_FN_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE)
-#define BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
-#define BT_FN_STRING_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING)
-#define BT_FN_VOID_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_INT)
-#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE)
-#define BT_FN_INT_ULONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONGLONG)
-#define BT_FN_INT_FILEPTR_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VAR)
-#define BT_FN_LONGLONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_DOUBLE)
-#define BT_FN_INT_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VAR)
-#define BT_FN_VOID_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_INT)
-#define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT)
-#define BT_FN_INT_WINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_WINT)
-#define BT_FN_PTR_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE)
-#define BT_FN_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_INT)
-#define BT_FN_INT_FLOAT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FLOAT)
-#define BT_FN_DOUBLE_CONST_STRING(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_CONST_STRING)
-#define BT_FN_LONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_FLOAT)
-#define BT_FN_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE, BT_SIZE)
-#define BT_FN_STRING_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE)
-#define BT_FN_LONGLONG_LONGLONG(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGLONG)
-#define BT_FN_PTR_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR)
-#define BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
-#define BT_FN_FLOAT_FLOAT_LONG(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONG)
-#define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE)
-#define BT_FN_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_SIZE)
-#define BT_FN_PTR_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME)
-#define BT_FN_SIZE_CONST_PTR_INT(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_INT)
-#define BT_FN_INT_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING)
-#define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
-#define BT_FN_INT_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
-#define BT_FN_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME)
-#define BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INTPTR)
-#define BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
-#define BT_FN_PTR_UINT(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_UINT)
-#define BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
-#define BT_FN_DFLOAT128_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_CONST_STRING)
-#define BT_FN_DOUBLE_DOUBLE_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLEPTR)
-#define BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_SSIZE, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR)
-#define BT_FN_DFLOAT32_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_DFLOAT32)
-#define BT_FN_INT_PTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTR)
-#define BT_FN_UINT32_UINT32(NAME) FUNC_SIMPLE(BT_UINT32, NAME, BT_UINT32)
-#define BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR_FN_VOID_VAR_PTR_SIZE)
-#define BT_FN_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DOUBLE)
-#define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR)
-#define BT_FN_INT_ULONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONG)
-#define BT_FN_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INTPTR)
-#define BT_FN_UINT64_UINT64(NAME) FUNC_SIMPLE(BT_UINT64, NAME, BT_UINT64)
-#define BT_FN_STRING_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING)
-#define BT_FN_INT_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
-#define BT_FN_PTR_PTR_INT_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
-#define BT_FN_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_COMPLEX_DOUBLE)
-#define BT_FN_VOID_CONST_PTR_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_VAR)
-#define BT_FN_INT_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME)
-#define BT_FN_INT_PTRPTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTRPTR, BT_SIZE, BT_SIZE)
-#define BT_FN_INT_CONST_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VAR)
-#define BT_FN_INT_DFLOAT32(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT32)
-#define BT_FN_DFLOAT64_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_DFLOAT64)
-#define BT_FN_VOID_CONST_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_PTR, BT_SIZE)
-#define BT_FN_UNWINDWORD_PTR(NAME) FUNC_SIMPLE(BT_UNWINDWORD, NAME, BT_PTR)
-#define BT_FN_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT)
-#define BT_FN_COMPLEX_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_FLOAT)
-#define BT_FN_UINT(NAME) FUNC_SIMPLE(BT_UINT, NAME)
-#define BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_INTPTR)
-#define BT_FN_UINT16_UINT16(NAME) FUNC_SIMPLE(BT_UINT16, NAME, BT_UINT16)
-#define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
-#define BT_FN_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE)
-#define BT_FN_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG)
-#define BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
-#define BT_FN_FLOAT_INT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_INT, BT_FLOAT)
-#define BT_FN_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME)
-#define BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
-#define BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_DOUBLE, BT_DOUBLEPTR, BT_DOUBLEPTR)
-#define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
-#define BT_FN_LONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_DOUBLE)
-#define BT_FN_SIZE_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING)
-#define BT_FN_LONGLONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_FLOAT)
-#define BT_FN_INT_CONST_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
-#define BT_FN_PTR_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE)
-#define BT_FN_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME)
-#define BT_FN_PID(NAME) FUNC_SIMPLE(BT_PID, NAME)
-#define BT_FN_INT_CONST_STRING_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_FILEPTR)
-#define BT_FN_INT_LONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGLONG)
-#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
-#define BT_FN_INT_INT_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_FILEPTR)
-#define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
-#define BT_FN_VOID_PTRMODE_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTRMODE_PTR)
-#define BT_FN_INT_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VAR)
-#define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE)
-#define BT_FN_DFLOAT32_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_CONST_STRING)
-#define BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
-#define BT_FN_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_SIZE)
-#define BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VAR)
-#define BT_FN_DFLOAT128_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_DFLOAT128)
-#define BT_FN_DOUBLE_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_INT, BT_DOUBLE)
-#define BT_FN_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME)
-#define BT_FN_LONGDOUBLE_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_INT, BT_LONGDOUBLE)
-#define BT_FN_PTR_CONST_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_INT, BT_SIZE)
-#define BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_LONGDOUBLE, BT_LONGDOUBLEPTR, BT_LONGDOUBLEPTR)
-#define BT_FN_INT_INTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INTMAX)
-#define BT_FN_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME)
-#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLEPTR)
-
-#include "builtins.def"
-
-extern const char *__PRETTY_FUNCTION__;
Index: src/libcfa/builtins.def
===================================================================
--- src/libcfa/builtins.def	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ 	(revision )
@@ -1,874 +1,0 @@
-/* This file contains the definitions and documentation for the
-   builtins used in the GNU compiler.
-   Copyright (C) 2000-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-/* Before including this file, you should define a macro:
-
-     DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,
-                  FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND)
-
-   This macro will be called once for each builtin function.  The
-   ENUM will be of type `enum built_in_function', and will indicate
-   which builtin function is being processed.  The NAME of the builtin
-   function (which will always start with `__builtin_') is a string
-   literal.  The CLASS is of type `enum built_in_class' and indicates
-   what kind of builtin is being processed.
-
-   Some builtins are actually two separate functions.  For example,
-   for `strcmp' there are two builtin functions; `__builtin_strcmp'
-   and `strcmp' itself.  Both behave identically.  Other builtins
-   define only the `__builtin' variant.  If BOTH_P is TRUE, then this
-   builtin has both variants; otherwise, it is has only the first
-   variant.
-
-   TYPE indicates the type of the function.  The symbols correspond to
-   enumerals from builtin-types.def.  If BOTH_P is true, then LIBTYPE
-   is the type of the non-`__builtin_' variant.  Otherwise, LIBTYPE
-   should be ignored.
-
-   If FALLBACK_P is true then, if for some reason, the compiler cannot
-   expand the builtin function directly, it will call the
-   corresponding library function (which does not have the
-   `__builtin_' prefix.
-
-   If NONANSI_P is true, then the non-`__builtin_' variant is not an
-   ANSI/ISO library function, and so we should pretend it does not
-   exist when compiling in ANSI conformant mode.
-
-   ATTRs is an attribute list as defined in builtin-attrs.def that
-   describes the attributes of this builtin function.
-
-   IMPLICIT specifies condition when the builtin can be produced by
-   compiler.  For instance C90 reserves floorf function, but does not
-   define it's meaning.  When user uses floorf we may assume that the
-   floorf has the meaning we expect, but we can't produce floorf by
-   simplifying floor((double)float) since the runtime need not implement
-   it.
-
-   The builtins is registered only if COND is true.  */
-
-/* A GCC builtin (like __builtin_saveregs) is provided by the
-   compiler, but does not correspond to a function in the standard
-   library.  */
-#undef DEF_GCC_BUILTIN
-#define DEF_GCC_BUILTIN(ENUM, NAME, TYPE, ATTRS)		\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,	\
-	       false, false, false, ATTRS, true, true)
-
-/* Like DEF_GCC_BUILTIN, except we don't prepend "__builtin_".  */
-#undef DEF_SYNC_BUILTIN
-#define DEF_SYNC_BUILTIN(ENUM, NAME, TYPE, ATTRS)		\
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,	\
-	       false, false, false, ATTRS, true, true)
-
-/* A library builtin (like __builtin_strchr) is a builtin equivalent
-   of an ANSI/ISO standard library function.  In addition to the
-   `__builtin' version, we will create an ordinary version (e.g,
-   `strchr') as well.  If we cannot compute the answer using the
-   builtin function, we will fall back to the standard library
-   version.  */
-#undef DEF_LIB_BUILTIN
-#define DEF_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, false, ATTRS, true, true)
-
-/* Like DEF_LIB_BUILTIN, except that the function is not one that is
-   specified by ANSI/ISO C.  So, when we're being fully conformant we
-   ignore the version of these builtins that does not begin with
-   __builtin.  */
-#undef DEF_EXT_LIB_BUILTIN
-#define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, true, ATTRS, false, true)
-
-/* Like DEF_LIB_BUILTIN, except that the function is only a part of
-   the standard in C94 or above.  */
-#undef DEF_C94_BUILTIN
-#define DEF_C94_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc94, ATTRS, targetm.libc_has_function (function_c94), true)
-
-/* Like DEF_LIB_BUILTIN, except that the function is only a part of
-   the standard in C99 or above.  */
-#undef DEF_C99_BUILTIN
-#define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
-
-/* Like DEF_C99_BUILTIN, but for complex math functions.  */
-#undef DEF_C99_COMPL_BUILTIN
-#define DEF_C99_COMPL_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_math_complex), true)
-
-/* Builtin that is specified by C99 and C90 reserve the name for future use.
-   We can still recognize the builtin in C90 mode but we can't produce it
-   implicitly.  */
-#undef DEF_C99_C90RES_BUILTIN
-#define DEF_C99_C90RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
-
-/* Builtin that C99 reserve the name for future use. We can still recognize
-   the builtin in C99 mode but we can't produce it implicitly.  */
-#undef DEF_EXT_C99RES_BUILTIN
-#define DEF_EXT_C99RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
-	      true, true, true, ATTRS, false, true)
-
-/* Allocate the enum and the name for a builtin, but do not actually
-   define it here at all.  */
-#undef DEF_BUILTIN_STUB
-#define DEF_BUILTIN_STUB(ENUM, NAME) \
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_LAST, BT_LAST, false, false, \
-	       false, ATTR_LAST, false, false)
-
-/* Builtin used by the implementation of GNU OpenMP.  None of these are
-   actually implemented in the compiler; they're all in libgomp.  */
-#undef DEF_GOMP_BUILTIN
-#define DEF_GOMP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-               false, true, true, ATTRS, false, \
-	       (flag_openmp || flag_tree_parallelize_loops))
-
-/* Builtin used by implementation of Cilk Plus.  Most of these are decomposed
-   by the compiler but a few are implemented in libcilkrts.  */ 
-#undef DEF_CILK_BUILTIN_STUB
-#define DEF_CILK_BUILTIN_STUB(ENUM, NAME) \
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_LAST, BT_LAST, false, false, \
-	       false, ATTR_LAST, false, false)
-
-/* Builtin used by the implementation of GNU TM.  These
-   functions are mapped to the actual implementation of the STM library. */
-#undef DEF_TM_BUILTIN
-#define DEF_TM_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-	       true, true, true, ATTRS, false, flag_tm)
-
-/* Builtin used by the implementation of libsanitizer. These
-   functions are mapped to the actual implementation of the 
-   libtsan library. */
-#undef DEF_SANITIZER_BUILTIN
-#define DEF_SANITIZER_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-	       true, true, true, ATTRS, true, \
-	      (flag_sanitize & (SANITIZE_ADDRESS | SANITIZE_THREAD \
-				| SANITIZE_UNDEFINED)))
-
-#undef DEF_CILKPLUS_BUILTIN
-#define DEF_CILKPLUS_BUILTIN(ENUM, NAME, TYPE, ATTRS)  \
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_FN_INT_VAR, BT_LAST, \
-  	       false, false, false, ATTRS, false, flag_cilkplus) 
-
-/* Define an attribute list for math functions that are normally
-   "impure" because some of them may write into global memory for
-   `errno'.  If !flag_errno_math they are instead "const".  */
-#undef ATTR_MATHFN_ERRNO
-#define ATTR_MATHFN_ERRNO (flag_errno_math ? \
-	ATTR_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
-
-/* Define an attribute list for math functions that are normally
-   "const" but if flag_rounding_math is set they are instead "pure".
-   This distinction accounts for the fact that some math functions
-   check the rounding mode which is akin to examining global
-   memory.  */
-#undef ATTR_MATHFN_FPROUNDING
-#define ATTR_MATHFN_FPROUNDING (flag_rounding_math ? \
-	ATTR_PURE_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
-
-/* Define an attribute list for math functions that are normally
-   "impure" because some of them may write into global memory for
-   `errno'.  If !flag_errno_math, we can possibly use "pure" or
-   "const" depending on whether we care about FP rounding.  */
-#undef ATTR_MATHFN_FPROUNDING_ERRNO
-#define ATTR_MATHFN_FPROUNDING_ERRNO (flag_errno_math ? \
-	ATTR_NOTHROW_LEAF_LIST : ATTR_MATHFN_FPROUNDING)
-
-/* Define an attribute list for math functions that need to mind FP
-   rounding, but because they store into memory they are never "const"
-   or "pure".  Use of this macro is mainly for documentation and
-   maintenance purposes.  */
-#undef ATTR_MATHFN_FPROUNDING_STORE
-#define ATTR_MATHFN_FPROUNDING_STORE ATTR_NOTHROW_LEAF_LIST
-
-/* Define an attribute list for leaf functions that do not throw
-   exceptions normally, but may throw exceptions when using
-   -fnon-call-exceptions.  */
-#define ATTR_NOTHROWCALL_LEAF_LIST (flag_non_call_exceptions ? \
-	ATTR_LEAF_LIST : ATTR_NOTHROW_LEAF_LIST)
-
-/* Make sure 0 is not a legitimate builtin.  */
-DEF_BUILTIN_STUB(BUILT_IN_NONE, (const char *)0)
-
-/* Category: math builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_ACOS, "acos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSF, "acosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ACOSH, "acosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ACOSHF, "acoshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ACOSHL, "acoshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, "acosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_ASIN, "asin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, "asinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ASINH, "asinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ASINHF, "asinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ASINHL, "asinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINL, "asinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_ATAN, "atan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_ATAN2, "atan2", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2F, "atan2f", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2L, "atan2l", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANF, "atanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ATANH, "atanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ATANHF, "atanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ATANHL, "atanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANL, "atanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_CBRT, "cbrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_CBRTF, "cbrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_CBRTL, "cbrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_CEIL, "ceil", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILF, "ceilf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILL, "ceill", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_COPYSIGN, "copysign", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNF, "copysignf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNL, "copysignl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_COS, "cos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSF, "cosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_COSH, "cosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHF, "coshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHL, "coshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSL, "cosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREM, "drem", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREMF, "dremf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREML, "dreml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERF, "erf", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ERFC, "erfc", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERFCF, "erfcf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERFCL, "erfcl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERFF, "erff", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ERFL, "erfl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_EXP, "exp", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10, "exp10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10F, "exp10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10L, "exp10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXP2, "exp2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXP2F, "exp2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXP2L, "exp2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPF, "expf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPL, "expl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXPM1, "expm1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXPM1F, "expm1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXPM1L, "expm1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_FABS, "fabs", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSF, "fabsf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSL, "fabsl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FABSD32, "fabsd32", BT_FN_DFLOAT32_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FABSD64, "fabsd64", BT_FN_DFLOAT64_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FABSD128, "fabsd128", BT_FN_DFLOAT128_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FDIM, "fdim", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_FDIMF, "fdimf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_FDIML, "fdiml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_FLOOR, "floor", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORF, "floorf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORL, "floorl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMA, "fma", BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_FMAF, "fmaf", BT_FN_FLOAT_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_FMAL, "fmal", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_FMAX, "fmax", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMAXF, "fmaxf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMAXL, "fmaxl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMIN, "fmin", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMINF, "fminf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMINL, "fminl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FMOD, "fmod", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODF, "fmodf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODL, "fmodl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_FREXP, "frexp", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPF, "frexpf", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPL, "frexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA, "gamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF, "gammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL, "gammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA_R, "gamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF_R, "gammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL_R, "gammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VAL, "huge_val", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALF, "huge_valf", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALL, "huge_vall", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_HYPOT, "hypot", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_HYPOTF, "hypotf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_HYPOTL, "hypotl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_ICEIL, "iceil", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ICEILF, "iceilf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ICEILL, "iceill", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IFLOOR, "ifloor", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IFLOORF, "ifloorf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IFLOORL, "ifloorl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ILOGB, "ilogb", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ILOGBF, "ilogbf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ILOGBL, "ilogbl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_INF, "inf", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFF, "inff", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFL, "infl", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN	       (BUILT_IN_INFD32, "infd32", BT_FN_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFD64, "infd64", BT_FN_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFD128, "infd128", BT_FN_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IRINT, "irint", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IRINTF, "irintf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IRINTL, "irintl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IROUND, "iround", BT_FN_INT_DOUBLE, ATTR_MATHFN_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IROUNDF, "iroundf", BT_FN_INT_FLOAT, ATTR_MATHFN_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IROUNDL, "iroundl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0, "j0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0F, "j0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0L, "j0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1, "j1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1F, "j1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1L, "j1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_JN, "jn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNF, "jnf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNL, "jnl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_LCEIL, "lceil", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LCEILF, "lceilf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LCEILL, "lceill", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_LDEXP, "ldexp", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPF, "ldexpf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPL, "ldexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_LFLOOR, "lfloor", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LFLOORF, "lfloorf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LFLOORL, "lfloorl", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_LGAMMA, "lgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_LGAMMAF, "lgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_LGAMMAL, "lgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMA_R, "lgamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAF_R, "lgammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAL_R, "lgammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_GCC_BUILTIN        (BUILT_IN_LLCEIL, "llceil", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLCEILF, "llceilf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLCEILL, "llceill", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLFLOOR, "llfloor", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORF, "llfloorf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORL, "llfloorl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_LLRINT, "llrint", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLRINTF, "llrintf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLRINTL, "llrintl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLROUND, "llround", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLROUNDF, "llroundf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLROUNDL, "llroundl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_LOG, "log", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_LOG10, "log10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10F, "log10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10L, "log10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG1P, "log1p", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG1PF, "log1pf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG1PL, "log1pl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG2, "log2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG2F, "log2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG2L, "log2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOGB, "logb", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOGBF, "logbf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOGBL, "logbl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGF, "logf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGL, "logl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LRINT, "lrint", BT_FN_LONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LRINTF, "lrintf", BT_FN_LONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LRINTL, "lrintl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LROUND, "lround", BT_FN_LONG_DOUBLE, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LROUNDF, "lroundf", BT_FN_LONG_FLOAT, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LROUNDL, "lroundl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_MODF, "modf", BT_FN_DOUBLE_DOUBLE_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFF, "modff", BT_FN_FLOAT_FLOAT_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFL, "modfl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_C99_BUILTIN        (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_C99_BUILTIN        (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NAND32, "nand32", BT_FN_DFLOAT32_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NAND64, "nand64", BT_FN_DFLOAT64_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NAND128, "nand128", BT_FN_DFLOAT128_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANS, "nans", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANSF, "nansf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANSL, "nansl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_C99_BUILTIN        (BUILT_IN_NEARBYINT, "nearbyint", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTF, "nearbyintf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTL, "nearbyintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTER, "nextafter", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERF, "nextafterf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERL, "nextafterl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARD, "nexttoward", BT_FN_DOUBLE_DOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDF, "nexttowardf", BT_FN_FLOAT_FLOAT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDL, "nexttowardl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_POW, "pow", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10, "pow10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10F, "pow10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10L, "pow10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_POWF, "powf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_POWI, "powi", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_POWIF, "powif", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_POWIL, "powil", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_POWL, "powl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMAINDER, "remainder", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMAINDERF, "remainderf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMAINDERL, "remainderl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMQUO, "remquo", BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_REMQUOF, "remquof", BT_FN_FLOAT_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_REMQUOL, "remquol", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ROUND, "round", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ROUNDF, "roundf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ROUNDL, "roundl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALB, "scalb", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBF, "scalbf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBL, "scalbl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBLN, "scalbln", BT_FN_DOUBLE_DOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBLNF, "scalblnf", BT_FN_FLOAT_FLOAT_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBLNL, "scalblnl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBN, "scalbn", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBNF, "scalbnf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBNL, "scalbnl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITF, "signbitf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITL, "signbitl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD32, "signbitd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD64, "signbitd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD128, "signbitd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICAND, "significand", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDF, "significandf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDL, "significandl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_SIN, "sin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOS, "sincos", BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSF, "sincosf", BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSL, "sincosl", BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINF, "sinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_SINH, "sinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHF, "sinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHL, "sinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINL, "sinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_SQRT, "sqrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTF, "sqrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTL, "sqrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_TAN, "tan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANF, "tanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_TANH, "tanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHF, "tanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHL, "tanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANL, "tanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_TGAMMA, "tgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_TGAMMAF, "tgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_TGAMMAL, "tgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_TRUNC, "trunc", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_TRUNCF, "truncf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_TRUNCL, "truncl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0, "y0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0F, "y0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0L, "y0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1, "y1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1F, "y1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1L, "y1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_YN, "yn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNF, "ynf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNL, "ynl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-
-/* Category: _Complex math builtins.  */
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABS, "cabs", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSF, "cabsf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSL, "cabsl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOS, "cacos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSF, "cacosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSH, "cacosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHF, "cacoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHL, "cacoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSL, "cacosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARG, "carg", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGF, "cargf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGL, "cargl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASIN, "casin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINF, "casinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINH, "casinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHF, "casinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHL, "casinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINL, "casinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATAN, "catan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANF, "catanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANH, "catanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHF, "catanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHL, "catanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANL, "catanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOS, "ccos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSF, "ccosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSH, "ccosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHF, "ccoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHL, "ccoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSL, "ccosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXP, "cexp", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPF, "cexpf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPL, "cexpl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_CEXPI, "cexpi", BT_FN_COMPLEX_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_CEXPIF, "cexpif", BT_FN_COMPLEX_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_CEXPIL, "cexpil", BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAG, "cimag", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAGF, "cimagf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAGL, "cimagl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOG, "clog", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGF, "clogf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGL, "clogl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10, "clog10", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10F, "clog10f", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10L, "clog10l", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJ, "conj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJF, "conjf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJL, "conjl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOW, "cpow", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWF, "cpowf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWL, "cpowl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJ, "cproj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJF, "cprojf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJL, "cprojl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREAL, "creal", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALF, "crealf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALL, "creall", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSIN, "csin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINF, "csinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINH, "csinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHF, "csinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHL, "csinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINL, "csinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRT, "csqrt", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTF, "csqrtf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTL, "csqrtl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTAN, "ctan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANF, "ctanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANH, "ctanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHF, "ctanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHL, "ctanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANL, "ctanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-
-/* Category: string/memory builtins.  */
-/* bcmp, bcopy and bzero have traditionally accepted NULL pointers
-   when the length parameter is zero, so don't apply attribute "nonnull".  */
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCMP, "bcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCOPY, "bcopy", BT_FN_VOID_CONST_PTR_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_BZERO, "bzero", BT_FN_VOID_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_INDEX, "index", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMCHR, "memchr", BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMCMP, "memcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_RINDEX, "rindex", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY, "stpncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCASECMP, "strcasecmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCMP, "strcmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCSPN, "strcspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRDUP, "strdup", BT_FN_STRING_CONST_STRING, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNDUP, "strndup", BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCASECMP, "strncasecmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRNCAT, "strncat", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRNCMP, "strncmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRNCPY, "strncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRPBRK, "strpbrk", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRRCHR, "strrchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRSPN, "strspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRSTR, "strstr", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-
-/* Category: stdio builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_FPRINTF, "fprintf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_UNLOCKED, "fprintf_unlocked", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_PUTC, "putc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTC_UNLOCKED, "putc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FPUTC, "fputc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTC_UNLOCKED, "fputc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FPUTS, "fputs", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTS_UNLOCKED, "fputs_unlocked", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FSCANF, "fscanf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_SCANF_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_FWRITE, "fwrite", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FWRITE_UNLOCKED, "fwrite_unlocked", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_PRINTF, "printf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_UNLOCKED, "printf_unlocked", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
-DEF_LIB_BUILTIN        (BUILT_IN_PUTCHAR, "putchar", BT_FN_INT_INT, ATTR_NULL)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTCHAR_UNLOCKED, "putchar_unlocked", BT_FN_INT_INT, ATTR_NULL)
-DEF_LIB_BUILTIN        (BUILT_IN_PUTS, "puts", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTS_UNLOCKED, "puts_unlocked", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_SCANF, "scanf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_SCANF_1_2)
-DEF_C99_BUILTIN        (BUILT_IN_SNPRINTF, "snprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_3_4)
-DEF_LIB_BUILTIN        (BUILT_IN_SPRINTF, "sprintf", BT_FN_INT_STRING_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_SSCANF, "sscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_FORMAT_SCANF_NOTHROW_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_VFPRINTF, "vfprintf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
-DEF_C99_BUILTIN        (BUILT_IN_VFSCANF, "vfscanf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_2_0)
-DEF_LIB_BUILTIN        (BUILT_IN_VPRINTF, "vprintf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_1_0)
-DEF_C99_BUILTIN        (BUILT_IN_VSCANF, "vscanf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_1_0)
-DEF_C99_BUILTIN        (BUILT_IN_VSNPRINTF, "vsnprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_3_0)
-DEF_LIB_BUILTIN        (BUILT_IN_VSPRINTF, "vsprintf", BT_FN_INT_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_2_0)
-DEF_C99_BUILTIN        (BUILT_IN_VSSCANF, "vsscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_NOTHROW_2_0)
-
-/* Category: ctype builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_ISALNUM, "isalnum", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISALPHA, "isalpha", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISASCII, "isascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ISBLANK, "isblank", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISCNTRL, "iscntrl", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISDIGIT, "isdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISGRAPH, "isgraph", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISLOWER, "islower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISPRINT, "isprint", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISPUNCT, "ispunct", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISSPACE, "isspace", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISUPPER, "isupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISXDIGIT, "isxdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_TOASCII, "toascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_TOLOWER, "tolower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_TOUPPER, "toupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-
-/* Category: wctype builtins.  */
-DEF_C94_BUILTIN        (BUILT_IN_ISWALNUM, "iswalnum", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWALPHA, "iswalpha", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ISWBLANK, "iswblank", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWCNTRL, "iswcntrl", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWDIGIT, "iswdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWGRAPH, "iswgraph", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWLOWER, "iswlower", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWPRINT, "iswprint", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWPUNCT, "iswpunct", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWSPACE, "iswspace", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWUPPER, "iswupper", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWXDIGIT, "iswxdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_TOWLOWER, "towlower", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_TOWUPPER, "towupper", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-
-/* Category: miscellaneous builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_ABORT, "abort", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ABS, "abs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_AGGREGATE_INCOMING_ADDRESS, "aggregate_incoming_address", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ALLOCA, "alloca", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_APPLY, "apply", BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_APPLY_ARGS, "apply_args", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_BSWAP16, "bswap16", BT_FN_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_BSWAP32, "bswap32", BT_FN_UINT32_UINT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_BSWAP64, "bswap64", BT_FN_UINT64_UINT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_CLEAR_CACHE, "__clear_cache", BT_FN_VOID_PTR_PTR, ATTR_NOTHROW_LEAF_LIST)
-/* [trans-mem]: Adjust BUILT_IN_TM_CALLOC if BUILT_IN_CALLOC is changed.  */
-DEF_LIB_BUILTIN        (BUILT_IN_CALLOC, "calloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLASSIFY_TYPE, "classify_type", BT_FN_INT_VAR, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZ, "clz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZIMAX, "clzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZL, "clzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZLL, "clzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CONSTANT_P, "constant_p", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZ, "ctz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZIMAX, "ctzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZL, "ctzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZLL, "ctzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSB, "clrsb", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSBIMAX, "clrsbimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSBL, "clrsbl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSBLL, "clrsbll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DCGETTEXT, "dcgettext", BT_FN_STRING_CONST_STRING_CONST_STRING_INT, ATTR_FORMAT_ARG_2)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DGETTEXT, "dgettext", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_FORMAT_ARG_2)
-DEF_GCC_BUILTIN        (BUILT_IN_DWARF_CFA, "dwarf_cfa", BT_FN_PTR, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_DWARF_SP_COLUMN, "dwarf_sp_column", BT_FN_UINT, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN, "eh_return", BT_FN_VOID_PTRMODE_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN_DATA_REGNO, "eh_return_data_regno", BT_FN_INT_INT, ATTR_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECL, "execl", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLP, "execlp", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLE, "execle", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_NOTHROW_SENTINEL_1)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECV, "execv", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVP, "execvp", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVE, "execve", BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_EXIT, "exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EXPECT, "expect", BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ASSUME_ALIGNED, "assume_aligned", BT_FN_PTR_CONST_PTR_SIZE_VAR, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EXTEND_POINTER, "extend_pointer", BT_FN_UNWINDWORD_PTR, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EXTRACT_RETURN_ADDR, "extract_return_addr", BT_FN_PTR_PTR, ATTR_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFS, "ffs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSIMAX, "ffsimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSL, "ffsl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSLL, "ffsll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_FORK, "fork", BT_FN_PID, ATTR_NOTHROW_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FRAME_ADDRESS, "frame_address", BT_FN_PTR_UINT, ATTR_NULL)
-/* [trans-mem]: Adjust BUILT_IN_TM_FREE if BUILT_IN_FREE is changed.  */
-DEF_LIB_BUILTIN        (BUILT_IN_FREE, "free", BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FROB_RETURN_ADDR, "frob_return_addr", BT_FN_PTR_PTR, ATTR_NULL)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GETTEXT, "gettext", BT_FN_STRING_CONST_STRING, ATTR_FORMAT_ARG_1)
-DEF_C99_BUILTIN        (BUILT_IN_IMAXABS, "imaxabs", BT_FN_INTMAX_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INIT_DWARF_REG_SIZES, "init_dwarf_reg_size_table", BT_FN_VOID_PTR, ATTR_NULL)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITE, "finite", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEF, "finitef", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEL, "finitel", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED32, "finited32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED64, "finited64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED128, "finited128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FPCLASSIFY, "fpclassify", BT_FN_INT_INT_INT_INT_INT_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISFINITE, "isfinite", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISINF_SIGN, "isinf_sign", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ISINF, "isinf", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFF, "isinff", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFL, "isinfl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD32, "isinfd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD64, "isinfd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD128, "isinfd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ISNAN, "isnan", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANF, "isnanf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANL, "isnanl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND32, "isnand32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND64, "isnand64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND128, "isnand128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ISNORMAL, "isnormal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISGREATER, "isgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISGREATEREQUAL, "isgreaterequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISLESS, "isless", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISLESSEQUAL, "islessequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISLESSGREATER, "islessgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISUNORDERED, "isunordered", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_LABS, "labs", BT_FN_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_LLABS, "llabs", BT_FN_LONGLONG_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LONGJMP, "longjmp", BT_FN_VOID_PTR_INT, ATTR_NORETURN_NOTHROW_LIST)
-/* [trans-mem]: Adjust BUILT_IN_TM_MALLOC if BUILT_IN_MALLOC is changed.  */
-DEF_LIB_BUILTIN        (BUILT_IN_MALLOC, "malloc", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_NEXT_ARG, "next_arg", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITY, "parity", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITYIMAX, "parityimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITYL, "parityl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITYLL, "parityll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNT, "popcount", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTIMAX, "popcountimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTL, "popcountl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTLL, "popcountll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POSIX_MEMALIGN, "posix_memalign", BT_FN_INT_PTRPTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_PREFETCH, "prefetch", BT_FN_VOID_CONST_PTR_VAR, ATTR_NOVOPS_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_REALLOC, "realloc", BT_FN_PTR_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_RETURN, "return", BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_RETURN_ADDRESS, "return_address", BT_FN_PTR_UINT, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SAVEREGS, "saveregs", BT_FN_PTR_VAR, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_SETJMP, "setjmp", BT_FN_INT_PTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRFMON, "strfmon", BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_STRFMON_NOTHROW_3_4)
-DEF_LIB_BUILTIN        (BUILT_IN_STRFTIME, "strftime", BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR, ATTR_FORMAT_STRFTIME_NOTHROW_3_0)
-DEF_GCC_BUILTIN        (BUILT_IN_TRAP, "trap", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UNREACHABLE, "unreachable", BT_FN_VOID, ATTR_CONST_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UNWIND_INIT, "unwind_init", BT_FN_VOID, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_UPDATE_SETJMP_BUF, "update_setjmp_buf", BT_FN_VOID_PTR_INT, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_END, "va_end", BT_FN_VOID_VALIST_REF, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_START, "va_start", BT_FN_VOID_VALIST_REF_VAR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK, "va_arg_pack", BT_FN_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK_LEN, "va_arg_pack_len", BT_FN_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN__EXIT, "_exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN__EXIT2, "_Exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-
-/* Implementing nested functions.  */
-DEF_BUILTIN_STUB (BUILT_IN_INIT_TRAMPOLINE, "__builtin_init_trampoline")
-DEF_BUILTIN_STUB (BUILT_IN_INIT_HEAP_TRAMPOLINE, "__builtin_init_heap_trampoline")
-DEF_BUILTIN_STUB (BUILT_IN_ADJUST_TRAMPOLINE, "__builtin_adjust_trampoline")
-DEF_BUILTIN_STUB (BUILT_IN_NONLOCAL_GOTO, "__builtin_nonlocal_goto")
-
-/* Implementing __builtin_setjmp.  */
-DEF_BUILTIN_STUB (BUILT_IN_SETJMP_SETUP, "__builtin_setjmp_setup")
-DEF_BUILTIN_STUB (BUILT_IN_SETJMP_RECEIVER, "__builtin_setjmp_receiver")
-
-/* Implementing variable sized local variables.  */
-DEF_BUILTIN_STUB (BUILT_IN_STACK_SAVE, "__builtin_stack_save")
-DEF_BUILTIN_STUB (BUILT_IN_STACK_RESTORE, "__builtin_stack_restore")
-DEF_BUILTIN_STUB (BUILT_IN_ALLOCA_WITH_ALIGN, "__builtin_alloca_with_align")
-
-/* Object size checking builtins.  */
-DEF_GCC_BUILTIN	       (BUILT_IN_OBJECT_SIZE, "object_size", BT_FN_SIZE_CONST_PTR_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY_CHK, "__stpncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCAT_CHK, "__strncat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCPY_CHK, "__strncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SNPRINTF_CHK, "__snprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_5_6)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SPRINTF_CHK, "__sprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_4_5)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSNPRINTF_CHK, "__vsnprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_5_0)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSPRINTF_CHK, "__vsprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_4_0)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_CHK, "__fprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_3_4)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_CHK, "__printf_chk", BT_FN_INT_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VFPRINTF_CHK, "__vfprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_3_0)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VPRINTF_CHK, "__vprintf_chk", BT_FN_INT_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
-
-/* Profiling hooks.  */
-DEF_BUILTIN (BUILT_IN_PROFILE_FUNC_ENTER, "__cyg_profile_func_enter", BUILT_IN_NORMAL, BT_FN_VOID_PTR_PTR, BT_LAST,
-	     false, false, false, ATTR_NULL, true, true)
-DEF_BUILTIN (BUILT_IN_PROFILE_FUNC_EXIT, "__cyg_profile_func_exit", BUILT_IN_NORMAL, BT_FN_VOID_PTR_PTR, BT_LAST,
-	     false, false, false, ATTR_NULL, true, true)
-
-/* TLS thread pointer related builtins.  */
-DEF_BUILTIN (BUILT_IN_THREAD_POINTER, "__builtin_thread_pointer",
-	     BUILT_IN_NORMAL, BT_FN_PTR, BT_LAST,
-	     false, false, true, ATTR_CONST_NOTHROW_LIST, true,
-	     targetm.have_tls)
-
-DEF_BUILTIN (BUILT_IN_SET_THREAD_POINTER, "__builtin_set_thread_pointer",
-	     BUILT_IN_NORMAL, BT_FN_VOID_PTR, BT_LAST,
-	     false, false, true, ATTR_NOTHROW_LIST, true,
-	     targetm.have_tls)
-
-/* TLS emulation.  */
-DEF_BUILTIN (BUILT_IN_EMUTLS_GET_ADDRESS, targetm.emutls.get_address,
-	     BUILT_IN_NORMAL,
-	     BT_FN_PTR_PTR,  BT_FN_PTR_PTR,
-	     true, true, true, ATTR_CONST_NOTHROW_NONNULL_LEAF, false,
-	     !targetm.have_tls)
-DEF_BUILTIN (BUILT_IN_EMUTLS_REGISTER_COMMON,
-	     targetm.emutls.register_common, BUILT_IN_NORMAL,
-	     BT_FN_VOID_PTR_WORD_WORD_PTR, BT_FN_VOID_PTR_WORD_WORD_PTR,
-	     true, true, true, ATTR_NOTHROW_LEAF_LIST, false,
-	     !targetm.have_tls)
-
-/* Exception support.  */
-DEF_BUILTIN_STUB (BUILT_IN_UNWIND_RESUME, "__builtin_unwind_resume")
-DEF_BUILTIN_STUB (BUILT_IN_CXA_END_CLEANUP, "__builtin_cxa_end_cleanup")
-DEF_BUILTIN_STUB (BUILT_IN_EH_POINTER, "__builtin_eh_pointer")
-DEF_BUILTIN_STUB (BUILT_IN_EH_FILTER, "__builtin_eh_filter")
-DEF_BUILTIN_STUB (BUILT_IN_EH_COPY_VALUES, "__builtin_eh_copy_values")
-
-/* __FILE__, __LINE__, __FUNCTION__ as builtins.  */
-DEF_GCC_BUILTIN (BUILT_IN_FILE, "FILE", BT_FN_CONST_STRING, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN (BUILT_IN_FUNCTION, "FUNCTION", BT_FN_CONST_STRING, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN (BUILT_IN_LINE, "LINE", BT_FN_INT, ATTR_NOTHROW_LEAF_LIST)
-
-#if 0
-/* Synchronization Primitives.  */
-#include "sync-builtins.def"
-
-/* OpenMP builtins.  */
-#include "omp-builtins.def"
-
-/* Cilk keywords builtins.  */
-#include "cilk-builtins.def"
-
-/* GTM builtins. */
-#include "gtm-builtins.def"
-
-/* Sanitizer builtins. */
-#include "sanitizer.def"
-
-/* Cilk Plus builtins.  */
-#include "cilkplus.def"
-#endif
Index: src/libcfa/concurrency/CtxSwitch-i386.S
===================================================================
--- src/libcfa/concurrency/CtxSwitch-i386.S	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/concurrency/CtxSwitch-i386.S	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,90 @@
+//                               -*- Mode: Asm -*-
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// CtxSwitch-i386.S --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Dec 6 12:27:26 2016
+// Last Modified By : Thierry Delisle
+// Last Modified On : Tue Dec 6 12:27:26 2016
+// Update Count     : 0
+//
+// This  library is free  software; you  can redistribute  it and/or  modify it
+// under the terms of the GNU Lesser General Public License as published by the
+// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
+// option) any later version.
+//
+// This library is distributed in the  hope that it will be useful, but WITHOUT
+// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+// for more details.
+//
+// You should  have received a  copy of the  GNU Lesser General  Public License
+// along  with this library.
+//
+
+// This context switch routine depends on the fact that the stack of a new
+// thread has been set up to look like the thread has saved its context in
+// the normal manner.
+//
+// void CtxSwitch( machine_context *from, machine_context *to );
+
+// Offsets in the context structure. This needs to be synchronized with the
+// high level code a little better.
+
+#define PTR_BYTE	4
+#define SP_OFFSET	( 0 * PTR_BYTE )
+#define FP_OFFSET	( 1 * PTR_BYTE )
+#define PC_OFFSET	( 2 * PTR_BYTE )
+
+.text
+	.align 2
+.globl	CtxSwitch
+CtxSwitch:
+
+	// Copy the "from" context argument from the stack to register eax
+	// Return address is at 0(%esp), with parameters following
+
+	movl 4(%esp),%eax
+
+	// Save volatile registers on the stack.
+
+	pushl %ebx
+	pushl %edi
+	pushl %esi
+
+	// Save old context in the "from" area.
+
+	movl %esp,SP_OFFSET(%eax)
+	movl %ebp,FP_OFFSET(%eax)
+//	movl 4(%ebp),%ebx	// save previous eip for debugger
+//	movl %ebx,PC_OFFSET(%eax)
+
+	// Copy the "to" context argument from the stack to register eax
+	// Having pushed three words (= 12 bytes) on the stack, the
+	// argument is now at 8 + 12 = 20(%esp)
+
+	movl 20(%esp),%eax
+
+	// Load new context from the "to" area.
+
+	movl SP_OFFSET(%eax),%esp
+	movl FP_OFFSET(%eax),%ebp
+
+	// Load volatile registers from the stack.
+
+	popl %esi
+	popl %edi
+	popl %ebx
+
+	// Return to thread.
+
+	ret
+
+// Local Variables: //
+// compile-command: "make install" //
+// End: //
Index: src/libcfa/concurrency/CtxSwitch-i686.S
===================================================================
--- src/libcfa/concurrency/CtxSwitch-i686.S	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/concurrency/CtxSwitch-i686.S	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,1 @@
+CtxSwitch-i386.S
Index: src/libcfa/concurrency/CtxSwitch-x86_64.S
===================================================================
--- src/libcfa/concurrency/CtxSwitch-x86_64.S	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/concurrency/CtxSwitch-x86_64.S	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,89 @@
+//                               -*- Mode: Asm -*- 
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// CtxSwitch-x86_64.S --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Thierry Delisle
+// Last Modified On : Mon Nov 28 12:27:26 2016
+// Update Count     : 0
+//
+// This  library is free  software; you  can redistribute  it and/or  modify it
+// under the terms of the GNU Lesser General Public License as published by the
+// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
+// option) any later version.
+// 
+// This library is distributed in the  hope that it will be useful, but WITHOUT
+// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+// for more details.
+// 
+// You should  have received a  copy of the  GNU Lesser General  Public License
+// along  with this library.
+// 
+
+// This context switch routine depends on the fact that the stack of a new
+// thread has been set up to look like the thread has saved its context in
+// the normal manner.
+//
+// void CtxSwitch( machine_context *from, machine_context *to );
+
+// Offsets in the context structure. This needs to be synchronized with the
+// high level code a little better.
+
+#define PTR_BYTE	8
+#define SP_OFFSET	( 0 * PTR_BYTE )
+#define FP_OFFSET	( 1 * PTR_BYTE )
+#define PC_OFFSET	( 2 * PTR_BYTE )
+
+.text
+	.align 2
+.globl	CtxSwitch
+CtxSwitch:
+
+	// Save volatile registers on the stack.
+
+	pushq %r15
+	pushq %r14
+	pushq %r13
+	pushq %r12
+	pushq %rbx
+
+	// Save old context in the "from" area.
+
+	movq %rsp,SP_OFFSET(%rdi)
+	movq %rbp,FP_OFFSET(%rdi)
+
+	// Load new context from the "to" area.
+
+	movq SP_OFFSET(%rsi),%rsp
+	movq FP_OFFSET(%rsi),%rbp
+
+	// Load volatile registers from the stack.
+
+	popq %rbx
+	popq %r12
+	popq %r13
+	popq %r14
+	popq %r15
+
+	// Return to thread.
+
+	ret
+
+.text
+	.align 2
+.globl	CtxInvokeStub
+CtxInvokeStub:
+	movq %rbx, %rdi 
+	jmp *%r12
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/concurrency/invoke.c
===================================================================
--- src/libcfa/concurrency/invoke.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/concurrency/invoke.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,81 @@
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "libhdr.h"
+#include "invoke.h"
+
+#define __CFA_INVOKE_PRIVATE__
+#include "invoke.h"
+
+// magically invoke the "main" of the most derived class
+// Called from the kernel when starting a coroutine or task so must switch back to user mode.
+
+extern void __suspend_no_inline__F___1(void);
+
+void CtxInvokeCoroutine(
+      void (*main)(void *), 
+      struct coroutine *(*get_coroutine)(void *), 
+      void *this
+) {
+      LIB_DEBUG_PRINTF("Invoke : Received %p (main %p, get_c %p)\n", this, main, get_coroutine);
+
+      struct coroutine* cor = get_coroutine( this );
+
+      if(cor->state == Primed) {
+            __suspend_no_inline__F___1();
+      }
+
+      cor->state = Active;
+
+      main( this );
+}
+
+
+void CtxStart(
+      void (*main)(void *), 
+      struct coroutine *(*get_coroutine)(void *), 
+      void *this, 
+      void (*invoke)(void *)
+) {
+      LIB_DEBUG_PRINTF("StartCoroutine : Passing in %p (main %p, get_c %p) to %p\n", this, main, get_coroutine, invoke);
+
+      struct coStack_t* stack = &get_coroutine( this )->stack;
+
+#if defined( __i386__ )
+
+	struct FakeStack {
+	    void *fixedRegisters[3];		  	// fixed registers ebx, edi, esi (popped on 1st uSwitch, values unimportant)
+	    void *rturn;				      // where to go on return from uSwitch
+	    void *dummyReturn;				// fake return compiler would have pushed on call to uInvoke
+	    void *argument[3];				// for 16-byte ABI, 16-byte alignment starts here
+	    void *padding;				// padding to force 16-byte alignment, as "base" is 16-byte aligned
+	};
+
+	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
+	((struct machine_context_t *)stack->context)->FP = NULL;		// terminate stack with NULL fp
+
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->dummyReturn = NULL;
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->argument[0] = this;     // argument to invoke
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->rturn = invoke;
+
+#elif defined( __x86_64__ )
+
+      struct FakeStack {
+            void *fixedRegisters[5];			// fixed registers rbx, r12, r13, r14, r15
+            void *rturn;					// where to go on return from uSwitch
+            void *dummyReturn;				// NULL return address to provide proper alignment
+      };
+
+      ((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
+      ((struct machine_context_t *)stack->context)->FP = NULL;		// terminate stack with NULL fp
+
+      ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->dummyReturn = NULL;
+      ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->rturn = CtxInvokeStub;
+      ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[0] = this;
+      ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[1] = invoke;
+#else
+      #error Only __i386__ and __x86_64__ is supported for threads in cfa
+#endif
+}
Index: src/libcfa/concurrency/invoke.h
===================================================================
--- src/libcfa/concurrency/invoke.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/concurrency/invoke.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,56 @@
+#include <stdbool.h>
+#include <stdint.h>
+
+#ifdef __CFORALL__
+extern "C" {
+#endif
+
+#if ! defined(__CFA_INVOKE_PRIVATE__)
+#ifndef _INVOKE_H_
+#define _INVOKE_H_
+
+      #define unlikely(x)    __builtin_expect(!!(x), 0)
+
+      struct coStack_t {
+            unsigned int size;		// size of stack
+            void *storage;			// pointer to stack
+            void *limit;			// stack grows towards stack limit
+            void *base;				// base of stack
+            void *context;			// address of cfa_context_t
+            void *top;				// address of top of storage
+            bool userStack;	
+      };
+
+      enum coroutine_state { Start, Inactive, Active, Halt, Primed };
+
+      struct coroutine {
+            struct coStack_t stack;
+            const char *name;			// textual name for coroutine/task, initialized by uC++ generated code
+            int errno_;				// copy of global UNIX variable errno
+            enum coroutine_state state;	// current execution status for coroutine
+            bool notHalted;			// indicate if execuation state is not halted
+
+            struct coroutine *starter;	// first coroutine to resume this one
+            struct coroutine *last;		// last coroutine to resume this one
+      };
+
+#endif //_INVOKE_H_
+#else //! defined(__CFA_INVOKE_PRIVATE__)
+#ifndef _INVOKE_PRIVATE_H_
+#define _INVOKE_PRIVATE_H_
+      
+      struct machine_context_t {
+            void *SP;
+            void *FP;
+            void *PC;
+      };
+
+      // assembler routines that performs the context switch
+      extern void CtxInvokeStub( void );
+      void CtxSwitch( void *from, void *to ) asm ("CtxSwitch");
+
+#endif //_INVOKE_PRIVATE_H_
+#endif //! defined(__CFA_INVOKE_PRIVATE__)
+#ifdef __CFORALL__
+}
+#endif
Index: src/libcfa/concurrency/threads
===================================================================
--- src/libcfa/concurrency/threads	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/concurrency/threads	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,118 @@
+//                              -*- Mode: CFA -*-
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// threads --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Thierry Delisle
+// Last Modified On : Mon Nov 28 12:27:26 2016
+// Update Count     : 0
+//
+
+#ifndef __THREADS_H__
+#define __THREADS_H__
+
+#include "assert"       //
+#include "invoke.h"
+
+//-----------------------------------------------------------------------------
+// Coroutine trait
+// Anything that implements this trait can be resumed.
+// Anything that is resumed is a coroutine.
+trait is_coroutine(dtype T) {
+      void co_main(T* this);
+      coroutine* get_coroutine(T* this);
+};
+
+//-----------------------------------------------------------------------------
+// Ctors and dtors
+void ?{}(coStack_t* this);
+void ?{}(coroutine* this);
+void ^?{}(coStack_t* this);
+void ^?{}(coroutine* this);
+
+//-----------------------------------------------------------------------------
+// Public coroutine API
+static inline void suspend();
+
+forall(dtype T | is_coroutine(T))
+static inline void resume(T* cor);
+
+forall(dtype T | is_coroutine(T))
+void prime(T* cor);
+
+//-----------------------------------------------------------------------------
+// PRIVATE exposed because of inline
+
+// Start coroutine routines
+extern "C" {
+      forall(dtype T | is_coroutine(T))
+      void CtxInvokeCoroutine(T* this);
+
+      forall(dtype T | is_coroutine(T))
+      void CtxStart(T* this, void (*invoke)(T*));
+}
+
+// Get current coroutine
+extern coroutine* current_coroutine; //PRIVATE, never use directly
+static inline coroutine* this_coroutine(void) {
+	return current_coroutine;
+}
+
+// Private wrappers for context switch and stack creation
+extern void corCxtSw(coroutine* src, coroutine* dst);
+extern void create_stack( coStack_t* this, unsigned int storageSize );
+
+// Suspend implementation inlined for performance
+static inline void suspend() {
+      coroutine* src = this_coroutine();		// optimization
+
+	assertf( src->last != 0, 
+		"Attempt to suspend coroutine %.256s (%p) that has never been resumed.\n"
+		"Possible cause is a suspend executed in a member called by a coroutine user rather than by the coroutine main.",
+		src->name, src );
+	assertf( src->last->notHalted, 
+		"Attempt by coroutine %.256s (%p) to suspend back to terminated coroutine %.256s (%p).\n"
+		"Possible cause is terminated coroutine's main routine has already returned.",
+		src->name, src, src->last->name, src->last );
+
+	corCxtSw( src, src->last );
+}
+
+// Resume implementation inlined for performance
+forall(dtype T | is_coroutine(T))
+static inline void resume(T* cor) {
+	coroutine* src = this_coroutine();		// optimization
+	coroutine* dst = get_coroutine(cor);
+
+      if( unlikely(!dst->stack.base) ) {
+		create_stack(&dst->stack, dst->stack.size);
+		CtxStart(cor, CtxInvokeCoroutine);
+	}
+
+      // not resuming self ?
+	if ( src != dst ) {
+		assertf( dst->notHalted , 
+			"Attempt by coroutine %.256s (%p) to resume terminated coroutine %.256s (%p).\n"
+			"Possible cause is terminated coroutine's main routine has already returned.",
+			src->name, src, dst->name, dst );
+
+            // set last resumer
+		dst->last = src;
+	} // if
+
+      // always done for performance testing
+	corCxtSw( src, dst );
+}
+
+#endif //__THREADS_H__
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/concurrency/threads.c
===================================================================
--- src/libcfa/concurrency/threads.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/concurrency/threads.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,182 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// threads.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Thierry Delisle
+// Last Modified On : Mon Nov 28 12:27:26 2016
+// Update Count     : 0
+//
+
+extern "C" {
+#include <stddef.h>
+#include <malloc.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/mman.h>
+}
+
+#include "threads"
+#include "libhdr.h"
+
+#define __CFA_INVOKE_PRIVATE__
+#include "invoke.h"
+
+//-----------------------------------------------------------------------------
+// Global state variables
+
+// minimum feasible stack size in bytes
+#define MinStackSize 1000
+static size_t pageSize = 0;				// architecture pagesize HACK, should go in proper runtime singleton
+
+//Extra private desctructor for the main
+//FIXME the main should not actually allocate a stack
+//Since the main is never resumed the extra stack does not cause 
+//any problem but it is wasted memory
+void ?{}(coStack_t* this, size_t size);
+void ?{}(coroutine* this, size_t size);
+
+//Main coroutine
+//FIXME do not construct a stack for the main
+coroutine main_coroutine = { 1000 };
+
+//Current coroutine
+//Will need to be in TLS when multi-threading is added
+coroutine* current_coroutine = &main_coroutine;
+
+//-----------------------------------------------------------------------------
+// Coroutine ctors and dtors
+void ?{}(coStack_t* this) {
+	this->size		= 10240;	// size of stack
+	this->storage	= NULL;	// pointer to stack
+	this->limit		= NULL;	// stack grows towards stack limit
+	this->base		= NULL;	// base of stack
+	this->context	= NULL;	// address of cfa_context_t
+	this->top		= NULL;	// address of top of storage
+	this->userStack	= false;	
+}
+
+void ?{}(coStack_t* this, size_t size) {
+	this{};
+	this->size = size;
+
+	create_stack(this, this->size);
+}
+
+void ?{}(coroutine* this) {
+	this->name = "Anonymous Coroutine";
+	this->errno_ = 0;
+	this->state = Start;
+      this->notHalted = true;
+	this->starter = NULL;
+	this->last = NULL;
+}
+
+void ?{}(coroutine* this, size_t size) {
+	this{};
+	(&this->stack){size};
+}
+
+void ^?{}(coStack_t* this) {
+	if ( ! this->userStack ) {
+		LIB_DEBUG_DO(
+			if ( mprotect( this->storage, pageSize, PROT_READ | PROT_WRITE ) == -1 ) {
+				abortf( "(coStack_t *)%p.^?{}() : internal error, mprotect failure, error(%d) %s.", this, errno, strerror( errno ) );
+			}
+		);
+		free( this->storage );
+	}
+}
+
+void ^?{}(coroutine* this) {}
+
+// Part of the Public API
+// Not inline since only ever called once per coroutine
+forall(dtype T | is_coroutine(T))
+void prime(T* cor) {
+	coroutine* this = get_coroutine(cor);
+	assert(this->state == Start);
+
+	this->state = Primed;
+	resume(cor);
+}
+
+// We need to call suspend from invoke.c, so we expose this wrapper that
+// is not inline (We can't inline Cforall in C)
+void suspend_no_inline(void) {
+	suspend();
+}
+
+void corCxtSw(coroutine* src, coroutine* dst) {
+	// THREAD_GETMEM( This )->disableInterrupts();
+
+	// set state of current coroutine to inactive
+	src->state = Inactive;
+
+	// set new coroutine that task is executing
+	current_coroutine = dst;			
+
+	// context switch to specified coroutine
+	CtxSwitch( src->stack.context, dst->stack.context );
+	// when CtxSwitch returns we are back in the src coroutine		
+
+	// set state of new coroutine to active
+	src->state = Active;
+
+	// THREAD_GETMEM( This )->enableInterrupts();
+} //ctxSwitchDirect
+
+void create_stack( coStack_t* this, unsigned int storageSize ) {
+	//TEMP HACK do this on proper kernel startup
+	if(pageSize == 0ul) pageSize = sysconf( _SC_PAGESIZE );
+
+	size_t cxtSize = libCeiling( sizeof(machine_context_t), 8 ); // minimum alignment
+
+	if ( (intptr_t)this->storage == 0 ) {
+		this->userStack = false;
+		this->size = libCeiling( storageSize, 16 );
+		// use malloc/memalign because "new" raises an exception for out-of-memory
+		
+		// assume malloc has 8 byte alignment so add 8 to allow rounding up to 16 byte alignment
+		LIB_DEBUG_DO( this->storage = memalign( pageSize, cxtSize + this->size + pageSize ) );
+		LIB_NO_DEBUG_DO( this->storage = malloc( cxtSize + this->size + 8 ) );
+
+		LIB_DEBUG_DO(
+			if ( mprotect( this->storage, pageSize, PROT_NONE ) == -1 ) {
+				abortf( "(uMachContext &)%p.createContext() : internal error, mprotect failure, error(%d) %s.", this, (int)errno, strerror( (int)errno ) );
+			} // if
+		);
+
+		if ( (intptr_t)this->storage == 0 ) {
+			abortf( "Attempt to allocate %d bytes of storage for coroutine or task execution-state but insufficient memory available.", this->size );
+		} // if
+
+		LIB_DEBUG_DO( this->limit = (char *)this->storage + pageSize );
+		LIB_NO_DEBUG_DO( this->limit = (char *)libCeiling( (unsigned long)this->storage, 16 ) ); // minimum alignment
+
+	} else {
+		assertf( ((size_t)this->storage & (libAlign() - 1)) != 0ul, "Stack storage %p for task/coroutine must be aligned on %d byte boundary.", this->storage, (int)libAlign() );
+		this->userStack = true;
+		this->size = storageSize - cxtSize;
+
+		if ( this->size % 16 != 0u ) this->size -= 8;
+
+		this->limit = (char *)libCeiling( (unsigned long)this->storage, 16 ); // minimum alignment
+	} // if
+	assertf( this->size >= MinStackSize, "Stack size %d provides less than minimum of %d bytes for a stack.", this->size, MinStackSize );
+
+	this->base = (char *)this->limit + this->size;
+	this->context = this->base;
+	this->top = (char *)this->context + cxtSize;
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/extras.c
===================================================================
--- src/libcfa/extras.c	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ 	(revision )
@@ -1,3 +1,0 @@
-#include <stddef.h>
-#include <stdlib.h>
-#include <stdio.h>
Index: src/libcfa/extras.regx
===================================================================
--- src/libcfa/extras.regx	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ 	(revision )
@@ -1,8 +1,0 @@
-typedef.* size_t;
-typedef.* ptrdiff_t;
-extern.* abort\(.*\).*
-extern.* atexit\(.*\).*
-extern.* exit\(.*\).*
-extern.* free\(.*\).*
-extern.*\*malloc\(.*\).*
-extern.* printf\(.*\).*
Index: src/libcfa/libhdr.h
===================================================================
--- src/libcfa/libhdr.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/libhdr.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,28 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// libhdr.h --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Thierry Delisle
+// Last Modified On : Mon Nov 28 12:27:26 2016
+// Update Count     : 0
+//
+
+#ifndef __LIB_HDR_H__
+#define __LIB_HDR_H__
+
+#include "libalign.h"
+#include "libdebug.h"
+#include "libtools.h"
+
+#endif //__LIB_HDR_H__
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/libhdr/libalign.h
===================================================================
--- src/libcfa/libhdr/libalign.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/libhdr/libalign.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,68 @@
+//                              -*- Mode: C++ -*- 
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// libdebug.h --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Thierry Delisle
+// Last Modified On : Mon Nov 28 12:27:26 2016
+// Update Count     : 0
+//
+// This  library is free  software; you  can redistribute  it and/or  modify it
+// under the terms of the GNU Lesser General Public License as published by the
+// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
+// option) any later version.
+// 
+// This library is distributed in the  hope that it will be useful, but WITHOUT
+// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+// for more details.
+// 
+// You should  have received a  copy of the  GNU Lesser General  Public License
+// along  with this library.
+// 
+
+
+#ifndef __LIB_ALIGN_H__
+#define __LIB_ALIGN_H__
+
+#include "assert"
+
+// Minimum size used to align memory boundaries for memory allocations. 
+#define libAlign() (sizeof(double))
+
+// Check for power of 2
+static inline bool libPow2( unsigned long int value ) {
+    // clears all bits below value, rounding value down to the next lower multiple of value
+    return (value & (value - 1ul)) == 0ul;
+} // libPow2
+
+
+// Returns value aligned at the floor of align.
+static inline unsigned long int libFloor( unsigned long int value, unsigned long int align ) {
+    assert( libPow2( align ) );
+    // clears all bits above or equal to align, getting (value % align), the phase of value with regards to align
+    return value & -align;
+} // libFloor
+
+
+// Returns value aligned at the ceiling of align.
+
+static inline unsigned long int libCeiling( unsigned long int value, unsigned long int align ) {
+    assert( libPow2( align ) );
+    // "negate, round down, negate" is the same as round up
+    return -libFloor( -value, align );
+} // uCeiling
+
+
+#endif // __LIB_ALIGN_H__
+
+
+// Local Variables: //
+// compile-command: "make install" //
+// End: //
Index: src/libcfa/libhdr/libdebug.h
===================================================================
--- src/libcfa/libhdr/libdebug.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/libhdr/libdebug.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,40 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// libdebug.h --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Thierry Delisle
+// Last Modified On : Mon Nov 28 12:27:26 2016
+// Update Count     : 0
+//
+
+#ifndef __LIB_DEBUG_H__
+#define __LIB_DEBUG_H__
+
+#ifdef __CFA_DEBUG__
+      #define LIB_DEBUG_DO(x) x
+      #define LIB_NO_DEBUG_DO(x) ((void)0)
+#else
+      #define LIB_DEBUG_DO(x) ((void)0)
+      #define LIB_NO_DEBUG_DO(x) x      
+#endif
+
+#ifdef __CFA_DEBUG_PRINT__
+      #define LIB_DEBUG_PRINTF(...)   printf (__VA_ARGS__)
+      #define LIB_DEBUG_FPRINTF(...) fprintf (stderr, __VA_ARGS__)
+#else
+      #define LIB_DEBUG_PRINTF(...)  ((void)0)
+      #define LIB_DEBUG_FPRINTF(...) ((void)0)
+#endif
+
+#endif //__LIB_DEBUG_H__
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/libhdr/libtools.h
===================================================================
--- src/libcfa/libhdr/libtools.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/libcfa/libhdr/libtools.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,32 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// ools.h --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Thierry Delisle
+// Last Modified On : Mon Nov 28 12:27:26 2016
+// Update Count     : 0
+//
+
+#ifndef __LIB_TOOLS_H__
+#define __LIB_TOOLS_H__
+
+// void abortf( const char *fmt, ... ) {
+//     abort();
+//     // CONTROL NEVER REACHES HERE!
+// } // libAbort
+
+#define abortf(...) abort();
+
+
+#endif //__LIB_TOOLS_H__
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/prelude.cf
===================================================================
--- src/libcfa/prelude.cf	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ 	(revision )
@@ -1,800 +1,0 @@
-//                               -*- Mode: C -*-
-//
-// Copyright (C) Glen Ditchfield 1994, 1999
-//
-// prelude.cf -- Standard Cforall Preample for C99
-//
-// Author           : Glen Ditchfield
-// Created On       : Sat Nov 29 07:23:41 2014
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 18:04:40 2016
-// Update Count     : 92
-//
-
-# 2 "prelude.cf"  // needed for error messages from this file
-
-// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
-
-// ------------------------------------------------------------
-//
-// Section 4.1 Primary Expressions
-//
-// ------------------------------------------------------------
-
-const int 0, 1;
-
-forall ( dtype DT ) const DT * const	0;
-forall ( ftype FT ) FT * const		0;
-
-// ------------------------------------------------------------
-//
-// Section 4.2 Postfix Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?++( _Bool * ),				?++( volatile _Bool * );
-_Bool			?--( _Bool * ),				?--( volatile _Bool * );
-unsigned char		?++( unsigned char * ),			?++( volatile unsigned char * );
-signed int		?++( signed int * ),			?++( volatile signed int * );
-signed int		?--( signed int * ),			?--( volatile signed int * );
-unsigned int		?++( unsigned int * ),			?++( volatile unsigned int * );
-unsigned int		?--( unsigned int * ),			?--( volatile unsigned int * );
-signed long int		?++( signed long int * ),		?++( volatile signed long int * );
-signed long int		?--( signed long int * ),		?--( volatile signed long int * );
-unsigned long int	?++( unsigned long int * ),		?++( volatile unsigned long int * );
-unsigned long int	?--( unsigned long int * ),		?--( volatile unsigned long int * );
-signed long long int	?++( signed long long int * ),		?++( volatile signed long long int * );
-signed long long int	?--( signed long long int * ),		?--( volatile signed long long int * );
-unsigned long long int	?++( unsigned long long int * ),	?++( volatile unsigned long long int * );
-unsigned long long int	?--( unsigned long long int * ),	?--( volatile unsigned long long int * );
-float			?++( float * ),				?++( volatile float * );
-float			?--( float * ),				?--( volatile float * );
-double			?++( double * ),			?++( volatile double * );
-double			?--( double * ),			?--( volatile double * );
-long double		?++( long double * ),			?++( volatile long double * );
-long double		?--( long double * ),			?--( volatile long double * );
-float _Complex		?++( float _Complex * ),		?++( volatile float _Complex * );
-float _Complex		?--( float _Complex * ),		?--( volatile float _Complex * );
-double _Complex		?++( double _Complex * ),		?++( volatile double _Complex * );
-double _Complex		?--( double _Complex * ),		?--( volatile double _Complex * );
-long double _Complex	?++( long double _Complex * ),		?++( volatile long double _Complex * );
-long double _Complex	?--( long double _Complex * ),		?--( volatile long double _Complex * );
-
-forall( otype T ) T *			 ?++(		     T ** );
-forall( otype T ) const T *		 ?++( const	     T ** );
-forall( otype T ) volatile T *		 ?++(	    volatile T ** );
-forall( otype T ) const volatile T *	 ?++( const volatile T ** );
-forall( otype T ) T *			 ?--(		     T ** );
-forall( otype T ) const T *		 ?--( const	     T ** );
-forall( otype T ) volatile T *		 ?--(	    volatile T ** );
-forall( otype T ) const volatile T *	 ?--( const volatile T ** );
-
-forall( otype T ) lvalue T		 ?[?](		      T *,	    ptrdiff_t );
-forall( otype T ) const lvalue T	 ?[?]( const	      T *,	    ptrdiff_t );
-forall( otype T ) volatile lvalue T	 ?[?](       volatile T *,	    ptrdiff_t );
-forall( otype T ) const volatile lvalue T ?[?]( const volatile T *,	    ptrdiff_t );
-forall( otype T ) lvalue T		 ?[?](		ptrdiff_t,		  T * );
-forall( otype T ) const lvalue T	 ?[?](		ptrdiff_t, const	  T * );
-forall( otype T ) volatile lvalue T	 ?[?](		ptrdiff_t,	 volatile T * );
-forall( otype T ) const volatile lvalue T ?[?](		ptrdiff_t, const volatile T * );
-
-// ------------------------------------------------------------
-//
-// Section 4.3 Unary Operators
-//
-// ------------------------------------------------------------
-
-_Bool			++?( _Bool * ),				--?( _Bool * );
-signed int		++?( signed int * ),			--?( signed int * );
-unsigned int		++?( unsigned int * ),			--?( unsigned int * );
-signed long int		++?( signed long int * ),		--?( signed long int * );
-unsigned long int	++?( unsigned long int * ),		--?( unsigned long int * );
-signed long long int	++?( signed long long int * ),		--?( signed long long int * );
-unsigned long long int	++?( unsigned long long int * ),	--?( unsigned long long int * );
-float			++?( float * ),				--?( float * );
-double			++?( double * ),			--?( double * );
-long double		++?( long double * ),			--?( long double * );
-float _Complex		++?( float _Complex * ),		--?( float _Complex * );
-double _Complex		++?( double _Complex * ),		--?( double _Complex * );
-long double _Complex	++?( long double _Complex * ),		--?( long double _Complex * );
-
-forall( otype T ) T *			 ++?(		     T ** );
-forall( otype T ) const T *		 ++?( const	     T ** );
-forall( otype T ) volatile T *		 ++?(	    volatile T ** );
-forall( otype T ) const volatile T *	 ++?( const volatile T ** );
-forall( otype T ) T *			 --?(		     T ** );
-forall( otype T ) const T *		 --?( const	     T ** );
-forall( otype T ) volatile T *		 --?(	    volatile T ** );
-forall( otype T ) const volatile T *	 --?( const volatile T ** );
-
-forall( dtype T | sized(T) ) lvalue T		 *?(		     T * );
-forall( dtype T | sized(T) ) const lvalue T		 *?( const	     T * );
-forall( dtype T | sized(T) ) volatile lvalue T	 *?(       volatile  T * );
-forall( dtype T | sized(T) ) const volatile lvalue T *?( const volatile  T * );
-forall( ftype FT ) lvalue FT		 *?( FT * );
-
-_Bool			+?( _Bool ),			-?( _Bool ),			~?( _Bool );
-signed int		+?( signed int ),		-?( signed int ),		~?( signed int );
-unsigned int		+?( unsigned int ),		-?( unsigned int ),		~?( unsigned int );
-signed long int		+?( signed long int ),		-?( signed long int ),		~?( signed long int );
-unsigned long int	+?( unsigned long int ),	-?( unsigned long int ),	~?( unsigned long int );
-signed long long int	+?( signed long long int ),	-?( signed long long int ),	~?( signed long long int );
-unsigned long long int	+?( unsigned long long int ),	-?( unsigned long long int ),	~?( unsigned long long int );
-float			+?( float ),			-?( float );
-double			+?( double ),			-?( double );
-long double		+?( long double ),		-?( long double );
-float _Complex		+?( float _Complex ),		-?( float _Complex );
-double _Complex		+?( double _Complex ),		-?( double _Complex );
-long double _Complex	+?( long double _Complex ),	-?( long double _Complex );
-
-signed int	!?( signed int ),		!?( unsigned int ),
-		!?( long int ),			!?( unsigned long int ),
-		!?( long long int ),		!?( unsigned long long int ),
-		!?( float ),			!?( double ),			!?( long double ),
-		!?( float _Complex ),		!?( double _Complex ),		!?( long double _Complex );
-
-forall ( dtype DT ) int !?( const volatile DT * );
-forall ( ftype FT ) int !?( FT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.5 Multiplicative Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?*?( _Bool, _Bool ),					?/?( _Bool, _Bool ),				?%?( _Bool, _Bool );
-signed int		?*?( signed int, signed int ),				?/?( signed int, signed int ),			?%?( signed int, signed int );
-unsigned int		?*?( unsigned int, unsigned int ),			?/?( unsigned int, unsigned int ),		?%?( unsigned int, unsigned int );
-signed long int		?*?( signed long int, signed long int ),		?/?( signed long int, signed long int ),	?%?( signed long int, signed long int );
-unsigned long int	?*?( unsigned long int, unsigned long int ),		?/?( unsigned long int, unsigned long int ),	?%?( unsigned long int, unsigned long int );
-signed long long int	?*?( signed long long int, signed long long int ),	?/?( signed long long int, signed long long int ), ?%?( signed long long int, signed long long int );
-unsigned long long int	?*?( unsigned long long int, unsigned long long int ),	?/?( unsigned long long int, unsigned long long int ), ?%?( unsigned long long int, unsigned long long int );
-float			?*?( float, float ),					?/?( float, float );
-double			?*?( double, double ),					?/?( double, double );
-long double		?*?( long double, long double ),			?/?( long double, long double );
-// gcc does not support _Imaginary
-//float _Imaginary	?*?( float _Imaginary, float _Imaginary),		?/?( float _Imaginary, float _Imaginary );
-//double _Imaginary	?*?( double _Imaginary, double _Imaginary),		?/?( double _Imaginary, double _Imaginary );
-//long double _Imaginary	?*?( long double _Imaginary, long double _Imaginary),	?/?( long double _Imaginary, long double _Imaginary );
-float _Complex		?*?( float _Complex, float _Complex ),			?/?( float _Complex, float _Complex );
-double _Complex		?*?( double _Complex, double _Complex ),		?/?( double _Complex, double _Complex );
-long double _Complex	?*?( long double _Complex, long double _Complex ),	?/?( long double _Complex, long double _Complex );
-
-// ------------------------------------------------------------
-//
-// Section 4.6 Additive Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?+?( _Bool, _Bool ),					?-?( _Bool, _Bool );
-signed int		?+?( signed int, signed int ),				?-?( signed int, signed int );
-unsigned int		?+?( unsigned int, unsigned int ),			?-?( unsigned int, unsigned int );
-signed long int		?+?( signed long int, signed long int ),		?-?( signed long int, signed long int );
-unsigned long int	?+?( unsigned long int, unsigned long int ),		?-?( unsigned long int, unsigned long int );
-signed long long int	?+?( signed long long int, long long int  signed),	?-?( signed long long int, signed long long int );
-unsigned long long int	?+?( unsigned long long int, unsigned long long int ),	?-?( unsigned long long int, unsigned long long int );
-float			?+?( float, float ),					?-?( float, float );
-double			?+?( double, double ),					?-?( double, double );
-long double		?+?( long double, long double ),			?-?( long double, long double );
-float _Complex		?+?( float _Complex, float _Complex ),			?-?( float _Complex, float _Complex );
-double _Complex		?+?( double _Complex, double _Complex ),		?-?( double _Complex, double _Complex );
-long double _Complex	?+?( long double _Complex, long double _Complex ),	?-?( long double _Complex, long double _Complex );
-
-forall( otype T ) T *			?+?(		    T *,	  ptrdiff_t );
-forall( otype T ) T *			?+?(	      ptrdiff_t,		T * );
-forall( otype T ) const T *		?+?( const	    T *,	  ptrdiff_t );
-forall( otype T ) const T *		?+?(	      ptrdiff_t, const		T * );
-forall( otype T ) volatile T *		?+?(	   volatile T *,	  ptrdiff_t );
-forall( otype T ) volatile T *		?+?(	      ptrdiff_t,       volatile T * );
-forall( otype T ) const volatile T *	?+?( const volatile T *,	  ptrdiff_t );
-forall( otype T ) const volatile T *	?+?(	      ptrdiff_t, const volatile T * );
-forall( otype T ) T *			?-?(		    T *,	  ptrdiff_t );
-forall( otype T ) const T *		?-?( const	    T *,	  ptrdiff_t );
-forall( otype T ) volatile T *		?-?(	   volatile T *,	  ptrdiff_t );
-forall( otype T ) const volatile T *	?-?( const volatile T *,	  ptrdiff_t );
-forall( otype T ) ptrdiff_t		?-?( const volatile T *, const volatile T * );
-
-// ------------------------------------------------------------
-//
-// Section 4.7 Bitwise Shift Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?<<?( _Bool, _Bool ),					?>>?( _Bool, _Bool );
-signed int		?<<?( signed int, signed int ),				?>>?( signed int, signed int );
-unsigned int		?<<?( unsigned int, unsigned int ),			?>>?( unsigned int, unsigned int );
-signed long int		?<<?( signed long int, signed long int ),		?>>?( signed long int, signed long int );
-unsigned long int	?<<?( unsigned long int, unsigned long int ),		?>>?( unsigned long int, unsigned long int );
-signed long long int	?<<?( signed long long int, signed long long int ),	?>>?( signed long long int, signed long long int );
-unsigned long long int	?<<?( unsigned long long int, unsigned long long int ),	?>>?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.8 Relational Operators
-//
-// ------------------------------------------------------------
-
-signed int ?<?( _Bool, _Bool ),						?<=?( _Bool, _Bool ),
-	   ?>?( _Bool, _Bool ),						?>=?( _Bool, _Bool );
-signed int ?<?( unsigned char, unsigned char ),				?<=?( unsigned char, unsigned char ),
-	   ?>?( unsigned char, unsigned char ),				?>=?( unsigned char, unsigned char );
-signed int ?<?( signed int, signed int ),				?<=?( signed int, signed int ),
-	   ?>?( signed int, signed int ),				?>=?( signed int, signed int );
-signed int ?<?( unsigned int, unsigned int ),				?<=?( unsigned int, unsigned int ),
-	   ?>?( unsigned int, unsigned int ),				?>=?( unsigned int, unsigned int );
-signed int ?<?( signed long int, signed long int ),			?<=?( signed long int, signed long int ),
-	   ?>?( signed long int, signed long int ),			?>=?( signed long int, signed long int );
-signed int ?<?( unsigned long int, unsigned long int ),			?<=?( unsigned long int, unsigned long int ),
-	   ?>?( unsigned long int, unsigned long int ),			?>=?( unsigned long int, unsigned long int );
-signed int ?<?( signed long long int, signed long long int ),		?<=?( signed long long int, signed long long int ),
-	   ?>?( signed long long int, signed long long int ),		?>=?( signed long long int, signed long long int );
-signed int ?<?( unsigned long long int, unsigned long long int ),	?<=?( unsigned long long int, unsigned long long int ),
-	   ?>?( unsigned long long int, unsigned long long int ),	?>=?( unsigned long long int, unsigned long long int );
-signed int ?<?( float, float ),						?<=?( float, float ),
-	   ?>?( float, float ),						?>=?( float, float );
-signed int ?<?( double, double ),					?<=?( double, double ),
-	   ?>?( double, double ),					?>=?( double, double );
-signed int ?<?( long double, long double ),				?<=?( long double, long double ),
-	   ?>?( long double, long double ),				?>=?( long double, long double );
-
-forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
-forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
-forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
-forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.9 Equality Operators
-//
-// ------------------------------------------------------------
-
-signed int ?==?( _Bool, _Bool ),					?!=?( _Bool, _Bool );
-signed int ?==?( signed int, signed int ),				?!=?( signed int, signed int );
-signed int ?==?( unsigned int, unsigned int ),				?!=?( unsigned int, unsigned int );
-signed int ?==?( signed long int, signed long int ),			?!=?( signed long int, signed long int );
-signed int ?==?( unsigned long int, unsigned long int ),		?!=?( unsigned long int, unsigned long int );
-signed int ?==?( signed long long int, long long int  signed),		?!=?( signed long long int, signed long long int );
-signed int ?==?( unsigned long long int, unsigned long long int ),	?!=?( unsigned long long int, unsigned long long int );
-signed int ?==?( float, float ),					?!=?( float, float );
-signed int ?==?( double, double ),					?!=?( double, double );
-signed int ?==?( long double, long double ),				?!=?( long double, long double );
-signed int ?==?( float _Complex, float _Complex ),			?!=?( float _Complex, float _Complex );
-signed int ?==?( double _Complex, double _Complex ),			?!=?( double _Complex, double _Complex );
-signed int ?==?( long double _Complex, long double _Complex ),		?!=?( long double _Complex, long double _Complex );
-
-forall( dtype DT ) signed int ?==?(		   DT *,		DT * );
-forall( dtype DT ) signed int ?==?( const	   DT *, const		DT * );
-forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
-forall( ftype FT ) signed int ?==?( FT *, FT * );
-forall( dtype DT ) signed int ?!=?(		   DT *,		DT * );
-forall( dtype DT ) signed int ?!=?( const	   DT *, const		DT * );
-forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
-forall( ftype FT ) signed int ?!=?( FT *, FT * );
-
-forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
-forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
-forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
-forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
-
-forall( dtype DT ) signed int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
-forall( dtype DT ) signed int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
-forall( ftype FT ) signed int ?==?( FT *, forall( ftype FT2 )FT2 * );
-forall( ftype FT ) signed int ?==?( forall( ftype FT2 )FT2 *, FT * );
-forall( dtype DT ) signed int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
-forall( dtype DT ) signed int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
-forall( ftype FT ) signed int ?!=?( FT *, forall( ftype FT2 )FT2 * );
-forall( ftype FT ) signed int ?!=?( forall( ftype FT2 )FT2 *, FT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.10 Bitwise AND Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?&?( _Bool, _Bool );
-signed int		?&?( signed int, signed int );
-unsigned int		?&?( unsigned int, unsigned int );
-signed long int		?&?( signed long int, signed long int );
-unsigned long int	?&?( unsigned long int, unsigned long int );
-signed long long int	?&?( signed long long int, signed long long int );
-unsigned long long int	?&?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.11 Bitwise XOR Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?^?( _Bool, _Bool );
-signed int		?^?( signed int, signed int );
-unsigned int		?^?( unsigned int, unsigned int );
-signed long int		?^?( signed long int, signed long int );
-unsigned long int	?^?( unsigned long int, unsigned long int );
-signed long long int	?^?( signed long long int, signed long long int );
-unsigned long long int	?^?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.12 Bitwise OR Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?|?( _Bool, _Bool );
-signed int		?|?( signed int, signed int );
-unsigned int		?|?( unsigned int, unsigned int );
-signed long int		?|?( signed long int, signed long int );
-unsigned long int	?|?( unsigned long int, unsigned long int );
-signed long long int	?|?( signed long long int, signed long long int );
-unsigned long long int	?|?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.16 Assignment Operator
-//
-// ------------------------------------------------------------
-
-forall( ftype FT ) FT *			?=?( FT **, FT * );
-forall( ftype FT ) FT *			?=?( FT * volatile *, FT * );
-
-forall( dtype DT ) DT *			?=?(		     DT *	   *,			DT * );
-forall( dtype DT ) DT *			?=?(		     DT * volatile *,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   *,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile *,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   *, const		DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile *, const		DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,			DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,			DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,	    volatile	DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,	    volatile	DT * );
-
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,			DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,			DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *, const		DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const		DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *,	    volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,	    volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *, const volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile	DT * );
-
-forall( dtype DT ) DT *			?=?(		     DT *	   *,			void * );
-forall( dtype DT ) DT *			?=?(		     DT * volatile *,			void * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   *,			void * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile *,			void * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   *, const		void * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile *, const		void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,			void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,			void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,	    volatile	void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,	    volatile	void * );
-
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,			void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *,			void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *, const		void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *, const		void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,	    volatile	void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *,	    volatile	void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *, const volatile	void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *, const volatile	void * );
-
-forall( dtype DT ) void *		 ?=?(		     void *	     *,			DT * );
-forall( dtype DT ) void *		 ?=?(		     void * volatile *,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void *	     *,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void * volatile *,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void *	     *, const		DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void * volatile *, const		DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     *,			DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile *,			DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     *,	      volatile	DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile *,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *,			DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,			DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *, const		DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const		DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *, const volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const volatile	DT * );
-
-void *			?=?(		    void *	    *,		      void * );
-void *			?=?(		    void * volatile *,		      void * );
-const void *		?=?( const	    void *	    *,		      void * );
-const void *		?=?( const	    void * volatile *,		      void * );
-const void *		?=?( const	    void *	    *, const	      void * );
-const void *		?=?( const	    void * volatile *, const	      void * );
-volatile void *		?=?(	   volatile void *	    *,		      void * );
-volatile void *		?=?(	   volatile void * volatile *,		      void * );
-volatile void *		?=?(	   volatile void *	    *,	     volatile void * );
-volatile void *		?=?(	   volatile void * volatile *,	     volatile void * );
-const volatile void *	?=?( const volatile void *	    *,		      void * );
-const volatile void *	?=?( const volatile void * volatile *,		      void * );
-const volatile void *	?=?( const volatile void *	    *, const	      void * );
-const volatile void *	?=?( const volatile void * volatile *, const	      void * );
-const volatile void *	?=?( const volatile void *	    *,	     volatile void * );
-const volatile void *	?=?( const volatile void * volatile *,	     volatile void * );
-const volatile void *	?=?( const volatile void *	    *, const volatile void * );
-const volatile void *	?=?( const volatile void * volatile *, const volatile void * );
-
-//forall( dtype DT ) DT *			?=?(		    DT *	  *, forall( dtype DT2 ) const DT2 * );
-//forall( dtype DT ) DT *			?=?(		    DT * volatile *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) const DT *		?=?( const	    DT *	  *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) const DT *		?=?( const	    DT * volatile *, forall( dtype DT2 ) const DT2 * );
-//forall( dtype DT ) volatile DT *	?=?( volatile	    DT *	  *, forall( dtype DT2 ) const DT2 * );
-//forall( dtype DT ) volatile DT *	?=?( volatile	    DT * volatile *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile DT *	  *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
-
-forall( ftype FT ) FT *			?=?( FT *	   *, forall( ftype FT2 ) FT2 * );
-forall( ftype FT ) FT *			?=?( FT * volatile *, forall( ftype FT2 ) FT2 * );
-
-forall( otype T ) T *			?+=?(		     T *	  *, ptrdiff_t );
-forall( otype T ) T *			?+=?(		     T * volatile *, ptrdiff_t );
-forall( otype T ) const T *		?+=?( const	     T *	  *, ptrdiff_t );
-forall( otype T ) const T *		?+=?( const	     T * volatile *, ptrdiff_t );
-forall( otype T ) volatile T *		?+=?(	    volatile T *	  *, ptrdiff_t );
-forall( otype T ) volatile T *		?+=?(	    volatile T * volatile *, ptrdiff_t );
-forall( otype T ) const volatile T *	?+=?( const volatile T *	  *, ptrdiff_t );
-forall( otype T ) const volatile T *	?+=?( const volatile T * volatile *, ptrdiff_t );
-forall( otype T ) T *			?-=?(		     T *	  *, ptrdiff_t );
-forall( otype T ) T *			?-=?(		     T * volatile *, ptrdiff_t );
-forall( otype T ) const T *		?-=?( const	     T *	  *, ptrdiff_t );
-forall( otype T ) const T *		?-=?( const	     T * volatile *, ptrdiff_t );
-forall( otype T ) volatile T *		?-=?(	    volatile T *	  *, ptrdiff_t );
-forall( otype T ) volatile T *		?-=?(	    volatile T * volatile *, ptrdiff_t );
-forall( otype T ) const volatile T *	?-=?( const volatile T *	  *, ptrdiff_t );
-forall( otype T ) const volatile T *	?-=?( const volatile T * volatile *, ptrdiff_t );
-
-_Bool			?=?( _Bool *, _Bool ),					?=?( volatile _Bool *, _Bool );
-char			?=?( char *, char ),					?=?( volatile char *, char );
-char signed		?=?( char signed *, char signed ),			?=?( volatile char signed *, char signed );
-char unsigned		?=?( char unsigned *, char unsigned ),			?=?( volatile char unsigned *, char unsigned );
-int short		?=?( int short *, int short ),				?=?( volatile int short *, int short );
-int short unsigned	?=?( int short unsigned *, int short unsigned ),	?=?( volatile int short unsigned *, int short unsigned );
-signed int		?=?( signed int *, signed int ),			?=?( volatile signed int *, signed int );
-unsigned int		?=?( unsigned *, unsigned ),				?=?( volatile unsigned *, unsigned );
-signed long int		?=?( signed long int *, signed long int ),		?=?( volatile signed long int *, signed long int );
-unsigned long int	?=?( unsigned long int *, unsigned long int ),		?=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?=?( signed long long int *, signed long long int ),	?=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?=?( unsigned long long int *, unsigned long long int ), ?=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?*=?( _Bool *, _Bool ),					?*=?( volatile _Bool *, _Bool );
-char			?*=?( char *, char ),					?*=?( volatile char *, char );
-char signed		?*=?( char signed *, char signed ),			?*=?( volatile char signed *, char signed );
-char unsigned		?*=?( char unsigned *, char unsigned ),			?*=?( volatile char unsigned *, char unsigned );
-int short		?*=?( int short *, int short ),				?*=?( volatile int short *, int short );
-int short unsigned	?*=?( int short unsigned *, int short unsigned ),	?*=?( volatile int short unsigned *, int short unsigned );
-signed int		?*=?( signed int *, signed int ),			?*=?( volatile signed int *, signed int );
-unsigned int		?*=?( unsigned *, unsigned ),				?*=?( volatile unsigned *, unsigned );
-signed long int		?*=?( signed long int *, signed long int ),		?*=?( volatile signed long int *, signed long int );
-unsigned long int	?*=?( unsigned long int *, unsigned long int ),		?*=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?*=?( signed long long int *, signed long long int ),	?*=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?*=?( unsigned long long int *, unsigned long long int ), ?*=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?/=?( _Bool *, _Bool ),					?/=?( volatile _Bool *, _Bool );
-char			?/=?( char *, char ),					?/=?( volatile char *, char );
-char signed		?/=?( char signed *, char signed ),			?/=?( volatile char signed *, char signed );
-char unsigned		?/=?( char unsigned *, char unsigned ),			?/=?( volatile char unsigned *, char unsigned );
-int short		?/=?( int short *, int short ),				?/=?( volatile int short *, int short );
-int short unsigned	?/=?( int short unsigned *, int short unsigned ),	?/=?( volatile int short unsigned *, int short unsigned );
-signed int		?/=?( signed int *, signed int ),			?/=?( volatile signed int *, signed int );
-unsigned int		?/=?( unsigned *, unsigned ),				?/=?( volatile unsigned *, unsigned );
-signed long int		?/=?( signed long int *, signed long int ),		?/=?( volatile signed long int *, signed long int );
-unsigned long int	?/=?( unsigned long int *, unsigned long int ),		?/=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?/=?( signed long long int *, signed long long int ),	?/=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?/=?( unsigned long long int *, unsigned long long int ), ?/=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?%=?( _Bool *, _Bool ),					?%=?( volatile _Bool *, _Bool );
-char			?%=?( char *, char ),					?%=?( volatile char *, char );
-char signed		?%=?( char signed *, char signed ),			?%=?( volatile char signed *, char signed );
-char unsigned		?%=?( char unsigned *, char unsigned ),			?%=?( volatile char unsigned *, char unsigned );
-int short		?%=?( int short *, int short ),				?%=?( volatile int short *, int short );
-int short unsigned	?%=?( int short unsigned *, int short unsigned ),	?%=?( volatile int short unsigned *, int short unsigned );
-signed int		?%=?( signed int *, signed int ),			?%=?( volatile signed int *, signed int );
-unsigned int		?%=?( unsigned *, unsigned ),				?%=?( volatile unsigned *, unsigned );
-signed long int		?%=?( signed long int *, signed long int ),		?%=?( volatile signed long int *, signed long int );
-unsigned long int	?%=?( unsigned long int *, unsigned long int ),		?%=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?%=?( signed long long int *, signed long long int ),	?%=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?%=?( unsigned long long int *, unsigned long long int ), ?%=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?+=?( _Bool *, _Bool ),					?+=?( volatile _Bool *, _Bool );
-char			?+=?( char *, char ),					?+=?( volatile char *, char );
-char signed		?+=?( char signed *, char signed ),			?+=?( volatile char signed *, char signed );
-char unsigned		?+=?( char unsigned *, char unsigned ),			?+=?( volatile char unsigned *, char unsigned );
-int short		?+=?( int short *, int short ),				?+=?( volatile int short *, int short );
-int short unsigned	?+=?( int short unsigned *, int short unsigned ),	?+=?( volatile int short unsigned *, int short unsigned );
-signed int		?+=?( signed int *, signed int ),			?+=?( volatile signed int *, signed int );
-unsigned int		?+=?( unsigned *, unsigned ),				?+=?( volatile unsigned *, unsigned );
-signed long int		?+=?( signed long int *, signed long int ),		?+=?( volatile signed long int *, signed long int );
-unsigned long int	?+=?( unsigned long int *, unsigned long int ),		?+=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?+=?( signed long long int *, signed long long int ),	?+=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?+=?( unsigned long long int *, unsigned long long int ), ?+=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?-=?( _Bool *, _Bool ),					?-=?( volatile _Bool *, _Bool );
-char			?-=?( char *, char ),					?-=?( volatile char *, char );
-char signed		?-=?( char signed *, char signed ),			?-=?( volatile char signed *, char signed );
-char unsigned		?-=?( char unsigned *, char unsigned ),			?-=?( volatile char unsigned *, char unsigned );
-int short		?-=?( int short *, int short ),				?-=?( volatile int short *, int short );
-int short unsigned	?-=?( int short unsigned *, int short unsigned ),	?-=?( volatile int short unsigned *, int short unsigned );
-signed int		?-=?( signed int *, signed int ),			?-=?( volatile signed int *, signed int );
-unsigned int		?-=?( unsigned *, unsigned ),				?-=?( volatile unsigned *, unsigned );
-signed long int		?-=?( signed long int *, signed long int ),		?-=?( volatile signed long int *, signed long int );
-unsigned long int	?-=?( unsigned long int *, unsigned long int ),		?-=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?-=?( signed long long int *, signed long long int ),	?-=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?-=?( unsigned long long int *, unsigned long long int ), ?-=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?<<=?( _Bool *, _Bool ),				?<<=?( volatile _Bool *, _Bool );
-char			?<<=?( char *, char ),					?<<=?( volatile char *, char );
-char signed		?<<=?( char signed *, char signed ),			?<<=?( volatile char signed *, char signed );
-char unsigned		?<<=?( char unsigned *, char unsigned ),		?<<=?( volatile char unsigned *, char unsigned );
-int short		?<<=?( int short *, int short ),			?<<=?( volatile int short *, int short );
-int short unsigned	?<<=?( int short unsigned *, int short unsigned ),	?<<=?( volatile int short unsigned *, int short unsigned );
-signed int		?<<=?( signed int *, signed int ),			?<<=?( volatile signed int *, signed int );
-unsigned int		?<<=?( unsigned *, unsigned ),				?<<=?( volatile unsigned *, unsigned );
-signed long int		?<<=?( signed long int *, signed long int ),		?<<=?( volatile signed long int *, signed long int );
-unsigned long int	?<<=?( unsigned long int *, unsigned long int ),	?<<=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?<<=?( signed long long int *, signed long long int ),	?<<=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?<<=?( unsigned long long int *, unsigned long long int ), ?<<=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?>>=?( _Bool *, _Bool ),				?>>=?( volatile _Bool *, _Bool );
-char			?>>=?( char *, char ),					?>>=?( volatile char *, char );
-char signed		?>>=?( char signed *, char signed ),			?>>=?( volatile char signed *, char signed );
-char unsigned		?>>=?( char unsigned *, char unsigned ),		?>>=?( volatile char unsigned *, char unsigned );
-int short		?>>=?( int short *, int short ),			?>>=?( volatile int short *, int short );
-int short unsigned	?>>=?( int short unsigned *, int short unsigned ),	?>>=?( volatile int short unsigned *, int short unsigned );
-signed int		?>>=?( signed int *, signed int ),			?>>=?( volatile signed int *, signed int );
-unsigned int		?>>=?( unsigned *, unsigned ),				?>>=?( volatile unsigned *, unsigned );
-signed long int		?>>=?( signed long int *, signed long int ),		?>>=?( volatile signed long int *, signed long int );
-unsigned long int	?>>=?( unsigned long int *, unsigned long int ),	?>>=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?>>=?( signed long long int *, signed long long int ),	?>>=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?>>=?( unsigned long long int *, unsigned long long int ), ?>>=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?&=?( _Bool *, _Bool ),					?&=?( volatile _Bool *, _Bool );
-char			?&=?( char *, char ),					?&=?( volatile char *, char );
-char signed		?&=?( char signed *, char signed ),			?&=?( volatile char signed *, char signed );
-char unsigned		?&=?( char unsigned *, char unsigned ),			?&=?( volatile char unsigned *, char unsigned );
-int short		?&=?( int short *, int short ),				?&=?( volatile int short *, int short );
-int short unsigned	?&=?( int short unsigned *, int short unsigned ),	?&=?( volatile int short unsigned *, int short unsigned );
-signed int		?&=?( signed int *, signed int ),			?&=?( volatile signed int *, signed int );
-unsigned int		?&=?( unsigned *, unsigned ),				?&=?( volatile unsigned *, unsigned );
-signed long int		?&=?( signed long int *, signed long int ),		?&=?( volatile signed long int *, signed long int );
-unsigned long int	?&=?( unsigned long int *, unsigned long int ),		?&=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?&=?( signed long long int *, signed long long int ),	?&=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?&=?( unsigned long long int *, unsigned long long int ), ?&=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?|=?( _Bool *, _Bool ),					?|=?( volatile _Bool *, _Bool );
-char			?|=?( char *, char ),					?|=?( volatile char *, char );
-char signed		?|=?( char signed *, char signed ),			?|=?( volatile char signed *, char signed );
-char unsigned		?|=?( char unsigned *, char unsigned ),			?|=?( volatile char unsigned *, char unsigned );
-int short		?|=?( int short *, int short ),				?|=?( volatile int short *, int short );
-int short unsigned	?|=?( int short unsigned *, int short unsigned ),	?|=?( volatile int short unsigned *, int short unsigned );
-signed int		?|=?( signed int *, signed int ),			?|=?( volatile signed int *, signed int );
-unsigned int		?|=?( unsigned *, unsigned ),				?|=?( volatile unsigned *, unsigned );
-signed long int		?|=?( signed long int *, signed long int ),		?|=?( volatile signed long int *, signed long int );
-unsigned long int	?|=?( unsigned long int *, unsigned long int ),		?|=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?|=?( signed long long int *, signed long long int ),	?|=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?|=?( unsigned long long int *, unsigned long long int ), ?|=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?^=?( _Bool *, _Bool ),					?^=?( volatile _Bool *, _Bool );
-char			?^=?( char *, char ),					?^=?( volatile char *, char );
-char signed		?^=?( char signed *, char signed ),			?^=?( volatile char signed *, char signed );
-char unsigned		?^=?( char unsigned *, char unsigned ),			?^=?( volatile char unsigned *, char unsigned );
-int short		?^=?( int short *, int short ),				?^=?( volatile int short *, int short );
-int short unsigned	?^=?( int short unsigned *, int short unsigned ),	?^=?( volatile int short unsigned *, int short unsigned );
-signed int		?^=?( signed int *, signed int ),			?^=?( volatile signed int *, signed int );
-unsigned int		?^=?( unsigned *, unsigned ),				?^=?( volatile unsigned *, unsigned );
-signed long int		?^=?( signed long int *, signed long int ),		?^=?( volatile signed long int *, signed long int );
-unsigned long int	?^=?( unsigned long int *, unsigned long int ),		?^=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?^=?( signed long long int *, signed long long int ),	?^=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?^=?( unsigned long long int *, unsigned long long int ), ?^=?( volatile unsigned long long int *, unsigned long long int );
-
-float			?=?(  float *, float ), ?=?(  volatile float *, float ),
-			?*=?( float *, float ), ?*=?( volatile float *, float ),
-			?/=?( float *, float ), ?/=?( volatile float *, float ),
-			?+=?( float *, float ), ?+=?( volatile float *, float ),
-			?-=?( float *, float ), ?-=?( volatile float *, float );
-
-double			?=?(  double *, double ), ?=?(  volatile double *, double ),
-			?*=?( double *, double ), ?*=?( volatile double *, double ),
-			?/=?( double *, double ), ?/=?( volatile double *, double ),
-			?+=?( double *, double ), ?+=?( volatile double *, double ),
-			?-=?( double *, double ), ?-=?( volatile double *, double );
-
-long double		?=?(  long double *, long double ), ?=?(  volatile long double *, long double ),
-			?*=?( long double *, long double ), ?*=?( volatile long double *, long double ),
-			?/=?( long double *, long double ), ?/=?( volatile long double *, long double ),
-			?+=?( long double *, long double ), ?+=?( volatile long double *, long double ),
-			?-=?( long double *, long double ), ?-=?( volatile long double *, long double );
-
-float _Complex		?=?(  float _Complex *, float _Complex ), ?=?(  volatile float _Complex *, float _Complex ),
-			?*=?( float _Complex *, float _Complex ), ?*=?( volatile float _Complex *, float _Complex ),
-			?/=?( float _Complex *, float _Complex ), ?/=?( volatile float _Complex *, float _Complex ),
-			?+=?( float _Complex *, float _Complex ), ?+=?( volatile float _Complex *, float _Complex ),
-			?-=?( float _Complex *, float _Complex ), ?-=?( volatile float _Complex *, float _Complex );
-
-double _Complex		?=?(  double _Complex *, double _Complex ), ?=?(  volatile double _Complex *, double _Complex ),
-			?*=?( double _Complex *, double _Complex ), ?*=?( volatile double _Complex *, double _Complex ),
-			?/=?( double _Complex *, double _Complex ), ?/=?( volatile double _Complex *, double _Complex ),
-			?+=?( double _Complex *, double _Complex ), ?+=?( volatile double _Complex *, double _Complex ),
-			?-=?( double _Complex *, double _Complex ), ?-=?( volatile double _Complex *, double _Complex );
-
-long double _Complex	?=?(  long double _Complex *, long double _Complex ), ?=?(  volatile long double _Complex *, long double _Complex ),
-			?*=?( long double _Complex *, long double _Complex ), ?*=?( volatile long double _Complex *, long double _Complex ),
-			?/=?( long double _Complex *, long double _Complex ), ?/=?( volatile long double _Complex *, long double _Complex ),
-			?+=?( long double _Complex *, long double _Complex ), ?+=?( volatile long double _Complex *, long double _Complex ),
-			?-=?( long double _Complex *, long double _Complex ), ?-=?( volatile long double _Complex *, long double _Complex );
-
-
-
-
-
-// ------------------------------------------------------------
-//
-// Section ??? Constructors and Destructors
-//
-// ------------------------------------------------------------
-
-// default ctor
-void	?{}( _Bool * );
-void	?{}( char * );
-void	?{}( unsigned char * );
-void	?{}( char signed * );
-void	?{}( int short * );
-void	?{}( int short unsigned * );
-void	?{}( signed int * );
-void	?{}( unsigned int * );
-void	?{}( signed long int * );
-void	?{}( unsigned long int * );
-void	?{}( signed long long int * );
-void	?{}( unsigned long long int * );
-void	?{}( float * );
-void	?{}( double * );
-void	?{}( long double * );
-void	?{}( float _Complex * );
-void	?{}( double _Complex * );
-void	?{}( long double _Complex * );
-
-// copy ctor
-void	?{}( _Bool *, _Bool );
-void	?{}( char *, char );
-void	?{}( unsigned char *, unsigned char );
-void	?{}( char signed *, char signed );
-void	?{}( int short *, int short );
-void	?{}( int short unsigned *, int short unsigned );
-void	?{}( signed int *, signed int);
-void	?{}( unsigned int *, unsigned int);
-void	?{}( signed long int *, signed long int);
-void	?{}( unsigned long int *, unsigned long int);
-void	?{}( signed long long int *, signed long long int);
-void	?{}( unsigned long long int *, unsigned long long int);
-void	?{}( float *, float);
-void	?{}( double *, double);
-void	?{}( long double *, long double);
-void	?{}( float _Complex *, float _Complex);
-void	?{}( double _Complex *, double _Complex);
-void	?{}( long double _Complex *, long double _Complex);
-
-// dtor
-void	^?{}( _Bool * );
-void	^?{}( char * );
-void	^?{}( char unsigned * );
-void	^?{}( char signed * );
-void	^?{}( int short * );
-void	^?{}( int short unsigned * );
-void	^?{}( signed int * );
-void	^?{}( unsigned int * );
-void	^?{}( signed long int * );
-void	^?{}( unsigned long int * );
-void	^?{}( signed long long int * );
-void	^?{}( unsigned long long int * );
-void	^?{}( float * );
-void	^?{}( double * );
-void	^?{}( long double * );
-void	^?{}( float _Complex * );
-void	^?{}( double _Complex * );
-void	^?{}( long double _Complex * );
-
-// // default ctor
-// forall( dtype DT ) void	 ?{}(		     DT ** );
-// forall( dtype DT ) void	 ?{}( const	     DT ** );
-// forall( dtype DT ) void	 ?{}(	    volatile DT ** );
-// forall( dtype DT ) void	 ?{}( const volatile DT ** );
-
-// // copy ctor
-// forall( dtype DT ) void	 ?{}(		     DT **, DT* );
-// forall( dtype DT ) void	 ?{}( const	     DT **, DT* );
-// forall( dtype DT ) void	 ?{}(	    volatile DT **, DT* );
-// forall( dtype DT ) void	 ?{}( const volatile DT **, DT* );
-
-// // dtor
-// forall( dtype DT ) void	^?{}(		     DT ** );
-// forall( dtype DT ) void	^?{}( const	     DT ** );
-// forall( dtype DT ) void	^?{}(	    volatile DT ** );
-// forall( dtype DT ) void	^?{}( const volatile DT ** );
-
-// copied from assignment section
-// copy constructors
-forall( ftype FT ) void ?{}( FT **, FT * );
-forall( ftype FT ) void ?{}( FT * volatile *, FT * );
-
-forall( dtype DT ) void ?{}(		     DT *	   *,			DT * );
-forall( dtype DT ) void ?{}( const	     DT *	   *,			DT * );
-forall( dtype DT ) void ?{}( const	     DT *	   *, const		DT * );
-forall( dtype DT ) void ?{}(	   volatile  DT *	   *,			DT * );
-forall( dtype DT ) void ?{}(	   volatile  DT *	   *,	    volatile	DT * );
-
-forall( dtype DT ) void ?{}( const volatile  DT *	   *,			DT * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   *, const		DT * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   *,	    volatile	DT * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   *, const volatile	DT * );
-
-forall( dtype DT ) void ?{}(		     DT *	   *,			void * );
-forall( dtype DT ) void ?{}( const	     DT *	   *,			void * );
-forall( dtype DT ) void ?{}( const	     DT *	   *, const		void * );
-forall( dtype DT ) void ?{}(	   volatile  DT *	   *,			void * );
-forall( dtype DT ) void ?{}(	   volatile  DT *	   *,	    volatile	void * );
-
-forall( dtype DT ) void ?{}( const volatile  DT *	   *,			void * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   *, const		void * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   *,	    volatile	void * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   *, const volatile	void * );
-
-forall( dtype DT ) void ?{}(		     void *	     *,			DT * );
-forall( dtype DT ) void ?{}( const	     void *	     *,			DT * );
-forall( dtype DT ) void ?{}( const	     void *	     *, const		DT * );
-forall( dtype DT ) void ?{}(	    volatile void *	     *,			DT * );
-forall( dtype DT ) void ?{}(	    volatile void *	     *,	      volatile	DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     *,			DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     *, const		DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     *,	      volatile	DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     *, const volatile	DT * );
-
-void 	?{}(		    void *	    *,		      void * );
-void 	?{}( const	    void *	    *,		      void * );
-void 	?{}( const	    void *	    *, const	      void * );
-void 	?{}(	   volatile void *	    *,		      void * );
-void 	?{}(	   volatile void *	    *,	     volatile void * );
-void 	?{}( const volatile void *	    *,		      void * );
-void 	?{}( const volatile void *	    *, const	      void * );
-void 	?{}( const volatile void *	    *,	     volatile void * );
-void 	?{}( const volatile void *	    *, const volatile void * );
-
-//forall( dtype DT ) void ?{}(		    DT *	  *, forall( dtype DT2 ) const DT2 * );
-//forall( dtype DT ) void ?{}(		    DT * volatile *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) void ?{}( const	    DT *	  *, forall( dtype DT2 ) const DT2 * );
-//forall( dtype DT ) void ?{}( volatile	    DT *	  *, forall( dtype DT2 ) const DT2 * );
-//forall( dtype DT ) void ?{}( volatile	    DT * volatile *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) void ?{}( const volatile DT *	  *, forall( dtype DT2 ) const DT2 * );
-
-forall( ftype FT ) void	?{}( FT *	   *, forall( ftype FT2 ) FT2 * );
-
-// default ctors
-forall( ftype FT ) void	?{}( FT *	   * );
-
-forall( dtype DT ) void	?{}(		     DT *	   *);
-forall( dtype DT ) void	?{}( const	     DT *	   *);
-forall( dtype DT ) void	?{}(	   volatile  DT *	   *);
-forall( dtype DT ) void ?{}( const volatile  DT *	   *);
-
-void 	?{}(		    void *	    *);
-void 	?{}( const	    void *	    *);
-void 	?{}(	   volatile void *	    *);
-void 	?{}( const volatile void *	    *);
-
-// dtors
-forall( ftype FT ) void	^?{}( FT *	   * );
-
-forall( dtype DT ) void	^?{}(		     DT *	   *);
-forall( dtype DT ) void	^?{}( const	     DT *	   *);
-forall( dtype DT ) void	^?{}(	   volatile  DT *	   *);
-forall( dtype DT ) void ^?{}( const volatile  DT *	   *);
-
-void 	^?{}(		    void *	    *);
-void 	^?{}( const	    void *	    *);
-void 	^?{}(	   volatile void *	    *);
-void 	^?{}( const volatile void *	    *);
-
-// Local Variables: //
-// mode: c //
-// tab-width: 8 //
-// End: //
Index: src/libcfa/prototypes.awk
===================================================================
--- src/libcfa/prototypes.awk	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ 	(revision )
@@ -1,135 +1,0 @@
-#
-# Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-#
-# The contents of this file are covered under the licence agreement in the
-# file "LICENCE" distributed with Cforall.
-#
-# prototypes.awk -- 
-#
-# Author           : Peter A. Buhr
-# Created On       : Sat May 16 07:57:37 2015
-# Last Modified By : Peter A. Buhr
-# Last Modified On : Tue Jul  5 14:32:52 2016
-# Update Count     : 32
-# 
-
-# http://llvm.org/svn/llvm-project/cfe/trunk/include/clang/Basic/Builtins.def
-
-BEGIN {
-    FS = "("
-    # order so string search is longest string
-    types[0]  = "UINTMAX";					vtypes[0]  = "unsigned long int"
-    types[1]  = "UINT16";					vtypes[1]  = "short int"
-    types[2]  = "UINT32";					vtypes[2]  = "int"
-    types[3]  = "UINT64";					vtypes[3]  = "long long int"
-    types[4]  = "UINT";						vtypes[4]  = "unsigned int"
-    types[5]  = "INTMAX";					vtypes[5]  = "long int"
-    types[6]  = "INTPTR";					vtypes[6]  = "int *"
-    types[7]  = "WINT";						vtypes[7]  = "unsigned int"
-    types[8]  = "INT";						vtypes[8]  = "int"
-    types[9]  = "ULONGLONG";				vtypes[9]  = "unsigned long long"
-    types[10] = "ULONG";					vtypes[10] = "unsigned long"
-    types[11] = "UNSIGNED";					vtypes[11] = "unsigned"
-    types[12] = "COMPLEX_LONGDOUBLE";		vtypes[12] = "_Complex long double"
-    types[13] = "COMPLEX_DOUBLE";			vtypes[13] = "_Complex double"
-    types[14] = "COMPLEX_FLOAT";			vtypes[14] = "_Complex float"
-    types[15] = "LONGDOUBLEPTR";			vtypes[15] = "long double *"
-    types[16] = "LONGDOUBLE";				vtypes[16] = "long double"
-    types[17] = "LONGLONG";					vtypes[17] = "long long"
-    types[18] = "LONG";						vtypes[18] = "long"
-    types[19] = "DFLOAT32";					vtypes[19] = "_Decimal32"
-    types[20] = "DFLOAT64";					vtypes[20] = "_Decimal64"
-    types[21] = "DFLOAT128";				vtypes[21] = "_Decimal128"
-    types[22] = "DOUBLEPTR";				vtypes[22] = "double *"
-    types[23] = "DOUBLE";					vtypes[23] = "double"
-    types[24] = "FLOATPTR";					vtypes[24] = "float *"
-    types[25] = "FLOAT";					vtypes[25] = "float"
-    types[26] = "CONST_PTR";				vtypes[26] = "const void *"
-    types[27] = "CONST_STRING";				vtypes[27] = "const char *"
-    types[28] = "PTR_FN_VOID_VAR_PTR_SIZE";	vtypes[28] = ""
-    types[29] = "PTR_CONST_STRING";			vtypes[29] = "char *const"
-    types[30] = "PTRMODE_PTR";				vtypes[30] = ""
-    types[31] = "PTRPTR";					vtypes[31] = "void **"
-    types[32] = "PTR";						vtypes[32] = "void *"
-    types[33] = "VOID";						vtypes[33] = "void"
-    types[34] = "STRING";					vtypes[34] = "char *"
-    types[35] = "FILEPTR";					vtypes[35] = "struct _IO_FILE *"
-    types[36] = "SIZE";						vtypes[36] = "unsigned long"
-    types[37] = "VAR";						vtypes[37] = "..."
-    types[38] = "VALIST_ARG";				vtypes[38] = "__builtin_va_list"
-    types[39] = "VALIST_REF";				vtypes[39] = "__builtin_va_list"
-    types[40] = "UNWINDWORD";				vtypes[40] = "void *"
-    types[41] = "WORD";						vtypes[41] = ""
-    types[42] = "SSIZE";					vtypes[42] = "long int"
-    types[43] = "PID";						vtypes[43] = "int"
-    N = 44
-} # BEGIN
-
-/^BT_/ { prototypes[$1] = $1 }
-
-END {
-    printf( "#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)\n" );
-    printf( "#define FUNC_SIMPLE(RETURN, NAME, ARGS...) RETURN NAME(ARGS);\n" );
-    printf( "#define BT_LAST(NAME) FUNC_SIMPLE(void, NAME)\n\n" );
-
-    # generate C types for macros names
-    for ( i = 0; i < N; i += 1 ) {
-		printf( "#define BT_%s %s\n", types[i], vtypes[i] )
-    } # for
-    printf( "\n" )
-
-    for ( prototype in prototypes ) {
-		if ( index( "BT_LAST", prototype ) == 1 ) {
-			continue
-		} # if
-
-		printf( "#define %s(NAME) FUNC_SIMPLE(", prototype )
-
-		if ( sub( "BT_FN_", "", prototype ) == 0 ) {
-			printf( "\n********** BAD MACRO NAME \"%s\" **********\n", prototype )
-			exit 0
-		} # if
-
-		# generate function return type as macro
-		for ( t = 0; t < N; t += 1 ) {					# find longest match 
-			type = types[t];
-			if ( index( prototype, type ) == 1 ) {		# found match
-				printf( "BT_%s, NAME", type )
-				sub( type, "", prototype )
-				break;
-			} # if
-		} # for
-
-		# generate function parameter types as macro
-		if ( index( prototype, "VAR" ) != 2 ) {			# C-style empty parameters ?
-			for ( p = 0; length( prototype ) > 0; p += 1 ) { # until all parameters types are removed
-				sub( "_", "", prototype)				# remove "_"
-				printf( ", ", type )
-				temp = prototype
-				for ( t = 0; t < N; t += 1 ) {			# find longest match
-					type = types[t];
-					if ( index( prototype, type ) == 1 ) { # found match
-						printf( "BT_%s", type )
-						sub( type, "", prototype )
-						break;
-					} # if
-				} # for
-				if ( temp == prototype ) {				# no match found for parameter in macro table
-					printf( "\n********** MISSING TYPE \"%s\" **********\n", prototype )
-					exit 0
-				} # if
-			} # for
-		} # if
-		printf( ")\n" )
-    } # for
-
-	# extras
-	printf( "\n#include \"builtins.def\"\n\n" );
-	printf( "extern const char *__PRETTY_FUNCTION__;\n" );
-} # END
-
-# Local Variables: #
-# tab-width: 4 #
-# mode: awk #
-# compile-command: "make install" #
-# End: #
Index: src/libcfa/prototypes.c
===================================================================
--- src/libcfa/prototypes.c	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ 	(revision )
@@ -1,2 +1,0 @@
-#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)
-#include "builtins.def"
Index: src/libcfa/stdhdr/assert.h
===================================================================
--- src/libcfa/stdhdr/assert.h	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/libcfa/stdhdr/assert.h	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -14,7 +14,14 @@
 // 
 
+#ifdef __CFORALL__
 extern "C" {
-#include_next <assert.h>								// has internal check for multiple expansion
+#endif //__CFORALL__
+
+// has internal check for multiple expansion
+#include_next <assert.h>
+
+#ifdef __CFORALL__
 } // extern "C"
+#endif //__CFORALL__
 
 // Local Variables: //
Index: src/main.cc
===================================================================
--- src/main.cc	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/main.cc	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -10,6 +10,6 @@
 // Created On       : Fri May 15 23:12:02 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Oct 30 10:11:38 2016
-// Update Count     : 435
+// Last Modified On : Wed Dec 14 14:35:54 2016
+// Update Count     : 436
 //
 
@@ -178,10 +178,10 @@
 		if ( ! nopreludep ) {							// include gcc builtins
 			// -l is for initial build ONLY and builtins.cf is not in the lib directory so access it here.
-			FILE * builtins = fopen( libcfap | treep ? "builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
+			FILE * builtins = fopen( libcfap | treep ? "../prelude/builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
 			assertf( builtins, "cannot open builtins.cf\n" );
 			parse( builtins, LinkageSpec::Compiler );
 
 			// read the extra prelude in, if not generating the cfa library
-			FILE * extras = fopen( libcfap | treep ? "extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
+			FILE * extras = fopen( libcfap | treep ? "../prelude/extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
 			assertf( extras, "cannot open extras.cf\n" );
 			parse( extras, LinkageSpec::C );
@@ -189,5 +189,5 @@
 			if ( ! libcfap ) {
 				// read the prelude in, if not generating the cfa library
-				FILE * prelude = fopen( treep ? "prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
+				FILE * prelude = fopen( treep ? "../prelude/prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
 				assertf( prelude, "cannot open prelude.cf\n" );
 				parse( prelude, LinkageSpec::Intrinsic );
Index: src/prelude/Makefile.am
===================================================================
--- src/prelude/Makefile.am	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/prelude/Makefile.am	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,48 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am --
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 08:54:01 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Wed Dec 14 15:00:35 2016
+## Update Count     : 205
+###############################################################################
+
+# create object files in directory with source files
+AUTOMAKE_OPTIONS = subdir-objects
+
+# put into lib for now
+cfalibdir = ${libdir}
+cfalib_DATA = builtins.cf extras.cf prelude.cf
+noinst_DATA = ../libcfa/libcfa-prelude.c
+
+# create extra forward types/declarations to reduce inclusion of library files
+extras.cf : extras.regx extras.c
+	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
+
+# create forward declarations for gcc builtins
+builtins.cf : builtins.c
+	${AM_V_GEN}if [ -e $< ] ; then \
+		@BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
+	fi
+
+builtins.c : builtins.def prototypes.awk
+	${AM_V_GEN}if [ -e $< ] ; then \
+		@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
+	fi
+
+builtins.def :
+
+prototypes.awk :
+
+../libcfa/libcfa-prelude.c : prelude.cf extras.cf builtins.cf ${abs_top_srcdir}/src/driver/cfa-cpp
+	${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l prelude.cf $@  # use src/cfa-cpp as not in lib until after install
+
+
+MAINTAINERCLEANFILES = builtins.c builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
Index: src/prelude/Makefile.in
===================================================================
--- src/prelude/Makefile.in	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/prelude/Makefile.in	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,445 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/prelude
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(cfalibdir)"
+DATA = $(cfalib_DATA) $(noinst_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKEND_CC = @BACKEND_CC@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFA_BACKEND_CC = @CFA_BACKEND_CC@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_FLAGS = @CFA_FLAGS@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MACHINE_TYPE = @MACHINE_TYPE@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# create object files in directory with source files
+AUTOMAKE_OPTIONS = subdir-objects
+
+# put into lib for now
+cfalibdir = ${libdir}
+cfalib_DATA = builtins.cf extras.cf prelude.cf
+noinst_DATA = ../libcfa/libcfa-prelude.c
+MAINTAINERCLEANFILES = builtins.c builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/prelude/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign src/prelude/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-cfalibDATA: $(cfalib_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(cfalibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfalibdir)"
+	@list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cfalibdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(cfalibdir)" || exit $$?; \
+	done
+
+uninstall-cfalibDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir)
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(cfalibdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cfalibDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-cfalibDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-cfalibDATA install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am uninstall uninstall-am uninstall-cfalibDATA
+
+
+# create extra forward types/declarations to reduce inclusion of library files
+extras.cf : extras.regx extras.c
+	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
+
+# create forward declarations for gcc builtins
+builtins.cf : builtins.c
+	${AM_V_GEN}if [ -e $< ] ; then \
+		@BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
+	fi
+
+builtins.c : builtins.def prototypes.awk
+	${AM_V_GEN}if [ -e $< ] ; then \
+		@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
+	fi
+
+builtins.def :
+
+prototypes.awk :
+
+../libcfa/libcfa-prelude.c : prelude.cf extras.cf builtins.cf ${abs_top_srcdir}/src/driver/cfa-cpp
+	${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l prelude.cf $@  # use src/cfa-cpp as not in lib until after install
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: src/prelude/builtins.c
===================================================================
--- src/prelude/builtins.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/prelude/builtins.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,217 @@
+#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)
+#define FUNC_SIMPLE(RETURN, NAME, ARGS...) RETURN NAME(ARGS);
+#define BT_LAST(NAME) FUNC_SIMPLE(void, NAME)
+
+#define BT_UINTMAX unsigned long int
+#define BT_UINT16 short int
+#define BT_UINT32 int
+#define BT_UINT64 long long int
+#define BT_UINT unsigned int
+#define BT_INTMAX long int
+#define BT_INTPTR int *
+#define BT_WINT unsigned int
+#define BT_INT int
+#define BT_ULONGLONG unsigned long long
+#define BT_ULONG unsigned long
+#define BT_UNSIGNED unsigned
+#define BT_COMPLEX_LONGDOUBLE _Complex long double
+#define BT_COMPLEX_DOUBLE _Complex double
+#define BT_COMPLEX_FLOAT _Complex float
+#define BT_LONGDOUBLEPTR long double *
+#define BT_LONGDOUBLE long double
+#define BT_LONGLONG long long
+#define BT_LONG long
+#define BT_DFLOAT32 _Decimal32
+#define BT_DFLOAT64 _Decimal64
+#define BT_DFLOAT128 _Decimal128
+#define BT_DOUBLEPTR double *
+#define BT_DOUBLE double
+#define BT_FLOATPTR float *
+#define BT_FLOAT float
+#define BT_CONST_PTR const void *
+#define BT_CONST_STRING const char *
+#define BT_PTR_FN_VOID_VAR_PTR_SIZE 
+#define BT_PTR_CONST_STRING char *const
+#define BT_PTRMODE_PTR 
+#define BT_PTRPTR void **
+#define BT_PTR void *
+#define BT_VOID void
+#define BT_STRING char *
+#define BT_FILEPTR struct _IO_FILE *
+#define BT_SIZE unsigned long
+#define BT_VAR ...
+#define BT_VALIST_ARG __builtin_va_list
+#define BT_VALIST_REF __builtin_va_list
+#define BT_UNWINDWORD void *
+#define BT_WORD 
+#define BT_SSIZE long int
+#define BT_PID int
+
+#define BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_LONGDOUBLE)
+#define BT_FN_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VALIST_ARG)
+#define BT_FN_VOID_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR)
+#define BT_FN_INT_CONST_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
+#define BT_FN_VOID_VALIST_REF(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF)
+#define BT_FN_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_COMPLEX_FLOAT)
+#define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR)
+#define BT_FN_VOID_PTR_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_PTR)
+#define BT_FN_FLOAT_FLOAT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONGDOUBLE)
+#define BT_FN_INT_UINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINT)
+#define BT_FN_CONST_STRING(NAME) FUNC_SIMPLE(BT_CONST_STRING, NAME)
+#define BT_FN_FLOAT_FLOAT_FLOATPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOATPTR)
+#define BT_FN_INT_INT_INT_INT_INT_INT_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_INT, BT_INT, BT_INT, BT_INT, BT_VAR)
+#define BT_FN_INT_INT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT)
+#define BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
+#define BT_FN_INT_LONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONG)
+#define BT_FN_INT_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR)
+#define BT_FN_VOID_PTR_WORD_WORD_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_WORD, BT_WORD, BT_PTR)
+#define BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
+#define BT_FN_INT_DFLOAT128(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT128)
+#define BT_FN_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE)
+#define BT_FN_FLOAT_CONST_STRING(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_CONST_STRING)
+#define BT_FN_LONGDOUBLE_LONGDOUBLE_INT(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INT)
+#define BT_FN_FLOAT_FLOAT_INT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INT)
+#define BT_FN_INT_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING)
+#define BT_FN_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGDOUBLE)
+#define BT_FN_SIZE_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING, BT_CONST_STRING)
+#define BT_FN_VOID_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_SIZE)
+#define BT_FN_INT_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING)
+#define BT_FN_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME)
+#define BT_FN_INT_UINTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINTMAX)
+#define BT_FN_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME)
+#define BT_FN_INT(NAME) FUNC_SIMPLE(BT_INT, NAME)
+#define BT_FN_FLOAT_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_INTPTR)
+#define BT_FN_DOUBLE_DOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONGDOUBLE)
+#define BT_FN_PTR_CONST_PTR_SIZE_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_SIZE, BT_VAR)
+#define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
+#define BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE)
+#define BT_FN_STRING_CONST_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
+#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONG(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONG)
+#define BT_FN_COMPLEX_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_DOUBLE)
+#define BT_FN_VOID(NAME) FUNC_SIMPLE(BT_VOID, NAME)
+#define BT_FN_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT)
+#define BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
+#define BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_FLOAT, BT_FLOATPTR, BT_FLOATPTR)
+#define BT_FN_INT_DFLOAT64(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT64)
+#define BT_FN_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INTPTR)
+#define BT_FN_WINT_WINT(NAME) FUNC_SIMPLE(BT_WINT, NAME, BT_WINT)
+#define BT_FN_LONGLONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGDOUBLE)
+#define BT_FN_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE)
+#define BT_FN_DFLOAT64_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_CONST_STRING)
+#define BT_FN_DOUBLE_DOUBLE_INT(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INT)
+#define BT_FN_INTMAX_INTMAX(NAME) FUNC_SIMPLE(BT_INTMAX, NAME, BT_INTMAX)
+#define BT_FN_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VAR)
+#define BT_FN_LONG_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG, BT_LONG)
+#define BT_FN_DOUBLE_DOUBLE_LONG(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONG)
+#define BT_FN_LONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONGDOUBLE)
+#define BT_FN_FLOAT_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_FLOAT)
+#define BT_FN_VOID_VALIST_REF_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF, BT_VAR)
+#define BT_FN_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING)
+#define BT_FN_VOID_VALIST_REF_VALIST_ARG(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF, BT_VALIST_ARG)
+#define BT_FN_LONGDOUBLE_CONST_STRING(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_CONST_STRING)
+#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INTPTR)
+#define BT_FN_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE)
+#define BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
+#define BT_FN_STRING_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING)
+#define BT_FN_VOID_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_INT)
+#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE)
+#define BT_FN_INT_ULONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONGLONG)
+#define BT_FN_INT_FILEPTR_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VAR)
+#define BT_FN_LONGLONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_DOUBLE)
+#define BT_FN_INT_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VAR)
+#define BT_FN_VOID_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_INT)
+#define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT)
+#define BT_FN_INT_WINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_WINT)
+#define BT_FN_PTR_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE)
+#define BT_FN_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_INT)
+#define BT_FN_INT_FLOAT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FLOAT)
+#define BT_FN_DOUBLE_CONST_STRING(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_CONST_STRING)
+#define BT_FN_LONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_FLOAT)
+#define BT_FN_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE, BT_SIZE)
+#define BT_FN_STRING_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE)
+#define BT_FN_LONGLONG_LONGLONG(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGLONG)
+#define BT_FN_PTR_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR)
+#define BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
+#define BT_FN_FLOAT_FLOAT_LONG(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONG)
+#define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE)
+#define BT_FN_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_SIZE)
+#define BT_FN_PTR_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME)
+#define BT_FN_SIZE_CONST_PTR_INT(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_INT)
+#define BT_FN_INT_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING)
+#define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
+#define BT_FN_INT_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
+#define BT_FN_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME)
+#define BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INTPTR)
+#define BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
+#define BT_FN_PTR_UINT(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_UINT)
+#define BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
+#define BT_FN_DFLOAT128_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_CONST_STRING)
+#define BT_FN_DOUBLE_DOUBLE_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLEPTR)
+#define BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_SSIZE, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR)
+#define BT_FN_DFLOAT32_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_DFLOAT32)
+#define BT_FN_INT_PTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTR)
+#define BT_FN_UINT32_UINT32(NAME) FUNC_SIMPLE(BT_UINT32, NAME, BT_UINT32)
+#define BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR_FN_VOID_VAR_PTR_SIZE)
+#define BT_FN_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DOUBLE)
+#define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR)
+#define BT_FN_INT_ULONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONG)
+#define BT_FN_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INTPTR)
+#define BT_FN_UINT64_UINT64(NAME) FUNC_SIMPLE(BT_UINT64, NAME, BT_UINT64)
+#define BT_FN_STRING_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING)
+#define BT_FN_INT_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
+#define BT_FN_PTR_PTR_INT_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
+#define BT_FN_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_COMPLEX_DOUBLE)
+#define BT_FN_VOID_CONST_PTR_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_VAR)
+#define BT_FN_INT_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME)
+#define BT_FN_INT_PTRPTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTRPTR, BT_SIZE, BT_SIZE)
+#define BT_FN_INT_CONST_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VAR)
+#define BT_FN_INT_DFLOAT32(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT32)
+#define BT_FN_DFLOAT64_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_DFLOAT64)
+#define BT_FN_VOID_CONST_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_PTR, BT_SIZE)
+#define BT_FN_UNWINDWORD_PTR(NAME) FUNC_SIMPLE(BT_UNWINDWORD, NAME, BT_PTR)
+#define BT_FN_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT)
+#define BT_FN_COMPLEX_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_FLOAT)
+#define BT_FN_UINT(NAME) FUNC_SIMPLE(BT_UINT, NAME)
+#define BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_INTPTR)
+#define BT_FN_UINT16_UINT16(NAME) FUNC_SIMPLE(BT_UINT16, NAME, BT_UINT16)
+#define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
+#define BT_FN_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE)
+#define BT_FN_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG)
+#define BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
+#define BT_FN_FLOAT_INT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_INT, BT_FLOAT)
+#define BT_FN_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME)
+#define BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
+#define BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_DOUBLE, BT_DOUBLEPTR, BT_DOUBLEPTR)
+#define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
+#define BT_FN_LONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_DOUBLE)
+#define BT_FN_SIZE_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING)
+#define BT_FN_LONGLONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_FLOAT)
+#define BT_FN_INT_CONST_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
+#define BT_FN_PTR_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE)
+#define BT_FN_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME)
+#define BT_FN_PID(NAME) FUNC_SIMPLE(BT_PID, NAME)
+#define BT_FN_INT_CONST_STRING_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_FILEPTR)
+#define BT_FN_INT_LONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGLONG)
+#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
+#define BT_FN_INT_INT_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_FILEPTR)
+#define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
+#define BT_FN_VOID_PTRMODE_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTRMODE_PTR)
+#define BT_FN_INT_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VAR)
+#define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE)
+#define BT_FN_DFLOAT32_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_CONST_STRING)
+#define BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
+#define BT_FN_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_SIZE)
+#define BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VAR)
+#define BT_FN_DFLOAT128_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_DFLOAT128)
+#define BT_FN_DOUBLE_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_INT, BT_DOUBLE)
+#define BT_FN_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME)
+#define BT_FN_LONGDOUBLE_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_INT, BT_LONGDOUBLE)
+#define BT_FN_PTR_CONST_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_INT, BT_SIZE)
+#define BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_LONGDOUBLE, BT_LONGDOUBLEPTR, BT_LONGDOUBLEPTR)
+#define BT_FN_INT_INTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INTMAX)
+#define BT_FN_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME)
+#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLEPTR)
+
+#include "builtins.def"
+
+extern const char *__PRETTY_FUNCTION__;
Index: src/prelude/builtins.def
===================================================================
--- src/prelude/builtins.def	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/prelude/builtins.def	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,874 @@
+/* This file contains the definitions and documentation for the
+   builtins used in the GNU compiler.
+   Copyright (C) 2000-2014 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Before including this file, you should define a macro:
+
+     DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,
+                  FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND)
+
+   This macro will be called once for each builtin function.  The
+   ENUM will be of type `enum built_in_function', and will indicate
+   which builtin function is being processed.  The NAME of the builtin
+   function (which will always start with `__builtin_') is a string
+   literal.  The CLASS is of type `enum built_in_class' and indicates
+   what kind of builtin is being processed.
+
+   Some builtins are actually two separate functions.  For example,
+   for `strcmp' there are two builtin functions; `__builtin_strcmp'
+   and `strcmp' itself.  Both behave identically.  Other builtins
+   define only the `__builtin' variant.  If BOTH_P is TRUE, then this
+   builtin has both variants; otherwise, it is has only the first
+   variant.
+
+   TYPE indicates the type of the function.  The symbols correspond to
+   enumerals from builtin-types.def.  If BOTH_P is true, then LIBTYPE
+   is the type of the non-`__builtin_' variant.  Otherwise, LIBTYPE
+   should be ignored.
+
+   If FALLBACK_P is true then, if for some reason, the compiler cannot
+   expand the builtin function directly, it will call the
+   corresponding library function (which does not have the
+   `__builtin_' prefix.
+
+   If NONANSI_P is true, then the non-`__builtin_' variant is not an
+   ANSI/ISO library function, and so we should pretend it does not
+   exist when compiling in ANSI conformant mode.
+
+   ATTRs is an attribute list as defined in builtin-attrs.def that
+   describes the attributes of this builtin function.
+
+   IMPLICIT specifies condition when the builtin can be produced by
+   compiler.  For instance C90 reserves floorf function, but does not
+   define it's meaning.  When user uses floorf we may assume that the
+   floorf has the meaning we expect, but we can't produce floorf by
+   simplifying floor((double)float) since the runtime need not implement
+   it.
+
+   The builtins is registered only if COND is true.  */
+
+/* A GCC builtin (like __builtin_saveregs) is provided by the
+   compiler, but does not correspond to a function in the standard
+   library.  */
+#undef DEF_GCC_BUILTIN
+#define DEF_GCC_BUILTIN(ENUM, NAME, TYPE, ATTRS)		\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,	\
+	       false, false, false, ATTRS, true, true)
+
+/* Like DEF_GCC_BUILTIN, except we don't prepend "__builtin_".  */
+#undef DEF_SYNC_BUILTIN
+#define DEF_SYNC_BUILTIN(ENUM, NAME, TYPE, ATTRS)		\
+  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,	\
+	       false, false, false, ATTRS, true, true)
+
+/* A library builtin (like __builtin_strchr) is a builtin equivalent
+   of an ANSI/ISO standard library function.  In addition to the
+   `__builtin' version, we will create an ordinary version (e.g,
+   `strchr') as well.  If we cannot compute the answer using the
+   builtin function, we will fall back to the standard library
+   version.  */
+#undef DEF_LIB_BUILTIN
+#define DEF_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, false, ATTRS, true, true)
+
+/* Like DEF_LIB_BUILTIN, except that the function is not one that is
+   specified by ANSI/ISO C.  So, when we're being fully conformant we
+   ignore the version of these builtins that does not begin with
+   __builtin.  */
+#undef DEF_EXT_LIB_BUILTIN
+#define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, true, ATTRS, false, true)
+
+/* Like DEF_LIB_BUILTIN, except that the function is only a part of
+   the standard in C94 or above.  */
+#undef DEF_C94_BUILTIN
+#define DEF_C94_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, !flag_isoc94, ATTRS, targetm.libc_has_function (function_c94), true)
+
+/* Like DEF_LIB_BUILTIN, except that the function is only a part of
+   the standard in C99 or above.  */
+#undef DEF_C99_BUILTIN
+#define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
+
+/* Like DEF_C99_BUILTIN, but for complex math functions.  */
+#undef DEF_C99_COMPL_BUILTIN
+#define DEF_C99_COMPL_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_math_complex), true)
+
+/* Builtin that is specified by C99 and C90 reserve the name for future use.
+   We can still recognize the builtin in C90 mode but we can't produce it
+   implicitly.  */
+#undef DEF_C99_C90RES_BUILTIN
+#define DEF_C99_C90RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
+
+/* Builtin that C99 reserve the name for future use. We can still recognize
+   the builtin in C99 mode but we can't produce it implicitly.  */
+#undef DEF_EXT_C99RES_BUILTIN
+#define DEF_EXT_C99RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
+	      true, true, true, ATTRS, false, true)
+
+/* Allocate the enum and the name for a builtin, but do not actually
+   define it here at all.  */
+#undef DEF_BUILTIN_STUB
+#define DEF_BUILTIN_STUB(ENUM, NAME) \
+  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_LAST, BT_LAST, false, false, \
+	       false, ATTR_LAST, false, false)
+
+/* Builtin used by the implementation of GNU OpenMP.  None of these are
+   actually implemented in the compiler; they're all in libgomp.  */
+#undef DEF_GOMP_BUILTIN
+#define DEF_GOMP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
+               false, true, true, ATTRS, false, \
+	       (flag_openmp || flag_tree_parallelize_loops))
+
+/* Builtin used by implementation of Cilk Plus.  Most of these are decomposed
+   by the compiler but a few are implemented in libcilkrts.  */ 
+#undef DEF_CILK_BUILTIN_STUB
+#define DEF_CILK_BUILTIN_STUB(ENUM, NAME) \
+  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_LAST, BT_LAST, false, false, \
+	       false, ATTR_LAST, false, false)
+
+/* Builtin used by the implementation of GNU TM.  These
+   functions are mapped to the actual implementation of the STM library. */
+#undef DEF_TM_BUILTIN
+#define DEF_TM_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
+	       true, true, true, ATTRS, false, flag_tm)
+
+/* Builtin used by the implementation of libsanitizer. These
+   functions are mapped to the actual implementation of the 
+   libtsan library. */
+#undef DEF_SANITIZER_BUILTIN
+#define DEF_SANITIZER_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
+	       true, true, true, ATTRS, true, \
+	      (flag_sanitize & (SANITIZE_ADDRESS | SANITIZE_THREAD \
+				| SANITIZE_UNDEFINED)))
+
+#undef DEF_CILKPLUS_BUILTIN
+#define DEF_CILKPLUS_BUILTIN(ENUM, NAME, TYPE, ATTRS)  \
+  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_FN_INT_VAR, BT_LAST, \
+  	       false, false, false, ATTRS, false, flag_cilkplus) 
+
+/* Define an attribute list for math functions that are normally
+   "impure" because some of them may write into global memory for
+   `errno'.  If !flag_errno_math they are instead "const".  */
+#undef ATTR_MATHFN_ERRNO
+#define ATTR_MATHFN_ERRNO (flag_errno_math ? \
+	ATTR_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
+
+/* Define an attribute list for math functions that are normally
+   "const" but if flag_rounding_math is set they are instead "pure".
+   This distinction accounts for the fact that some math functions
+   check the rounding mode which is akin to examining global
+   memory.  */
+#undef ATTR_MATHFN_FPROUNDING
+#define ATTR_MATHFN_FPROUNDING (flag_rounding_math ? \
+	ATTR_PURE_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
+
+/* Define an attribute list for math functions that are normally
+   "impure" because some of them may write into global memory for
+   `errno'.  If !flag_errno_math, we can possibly use "pure" or
+   "const" depending on whether we care about FP rounding.  */
+#undef ATTR_MATHFN_FPROUNDING_ERRNO
+#define ATTR_MATHFN_FPROUNDING_ERRNO (flag_errno_math ? \
+	ATTR_NOTHROW_LEAF_LIST : ATTR_MATHFN_FPROUNDING)
+
+/* Define an attribute list for math functions that need to mind FP
+   rounding, but because they store into memory they are never "const"
+   or "pure".  Use of this macro is mainly for documentation and
+   maintenance purposes.  */
+#undef ATTR_MATHFN_FPROUNDING_STORE
+#define ATTR_MATHFN_FPROUNDING_STORE ATTR_NOTHROW_LEAF_LIST
+
+/* Define an attribute list for leaf functions that do not throw
+   exceptions normally, but may throw exceptions when using
+   -fnon-call-exceptions.  */
+#define ATTR_NOTHROWCALL_LEAF_LIST (flag_non_call_exceptions ? \
+	ATTR_LEAF_LIST : ATTR_NOTHROW_LEAF_LIST)
+
+/* Make sure 0 is not a legitimate builtin.  */
+DEF_BUILTIN_STUB(BUILT_IN_NONE, (const char *)0)
+
+/* Category: math builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_ACOS, "acos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSF, "acosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ACOSH, "acosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ACOSHF, "acoshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ACOSHL, "acoshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, "acosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_ASIN, "asin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, "asinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ASINH, "asinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ASINHF, "asinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ASINHL, "asinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINL, "asinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_ATAN, "atan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_ATAN2, "atan2", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2F, "atan2f", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2L, "atan2l", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANF, "atanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ATANH, "atanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ATANHF, "atanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ATANHL, "atanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANL, "atanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CBRT, "cbrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CBRTF, "cbrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CBRTL, "cbrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_CEIL, "ceil", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILF, "ceilf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILL, "ceill", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_COPYSIGN, "copysign", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNF, "copysignf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNL, "copysignl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_COS, "cos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSF, "cosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_COSH, "cosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHF, "coshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHL, "coshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSL, "cosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREM, "drem", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREMF, "dremf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREML, "dreml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERF, "erf", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ERFC, "erfc", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERFCF, "erfcf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERFCL, "erfcl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERFF, "erff", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ERFL, "erfl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_EXP, "exp", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10, "exp10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10F, "exp10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10L, "exp10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXP2, "exp2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXP2F, "exp2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXP2L, "exp2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPF, "expf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPL, "expl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXPM1, "expm1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXPM1F, "expm1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXPM1L, "expm1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_FABS, "fabs", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSF, "fabsf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSL, "fabsl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FABSD32, "fabsd32", BT_FN_DFLOAT32_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FABSD64, "fabsd64", BT_FN_DFLOAT64_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FABSD128, "fabsd128", BT_FN_DFLOAT128_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FDIM, "fdim", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_FDIMF, "fdimf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_FDIML, "fdiml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_FLOOR, "floor", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORF, "floorf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORL, "floorl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMA, "fma", BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_FMAF, "fmaf", BT_FN_FLOAT_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_FMAL, "fmal", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_FMAX, "fmax", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMAXF, "fmaxf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMAXL, "fmaxl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMIN, "fmin", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMINF, "fminf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMINL, "fminl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FMOD, "fmod", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODF, "fmodf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODL, "fmodl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_FREXP, "frexp", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPF, "frexpf", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPL, "frexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA, "gamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF, "gammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL, "gammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA_R, "gamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF_R, "gammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL_R, "gammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VAL, "huge_val", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALF, "huge_valf", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALL, "huge_vall", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_HYPOT, "hypot", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_HYPOTF, "hypotf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_HYPOTL, "hypotl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_ICEIL, "iceil", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_ICEILF, "iceilf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_ICEILL, "iceill", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_IFLOOR, "ifloor", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_IFLOORF, "ifloorf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_IFLOORL, "ifloorl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ILOGB, "ilogb", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ILOGBF, "ilogbf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ILOGBL, "ilogbl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_INF, "inf", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFF, "inff", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFL, "infl", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN	       (BUILT_IN_INFD32, "infd32", BT_FN_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFD64, "infd64", BT_FN_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFD128, "infd128", BT_FN_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_IRINT, "irint", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_IRINTF, "irintf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_IRINTL, "irintl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_IROUND, "iround", BT_FN_INT_DOUBLE, ATTR_MATHFN_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_IROUNDF, "iroundf", BT_FN_INT_FLOAT, ATTR_MATHFN_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_IROUNDL, "iroundl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0, "j0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0F, "j0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0L, "j0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1, "j1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1F, "j1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1L, "j1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_JN, "jn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNF, "jnf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNL, "jnl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_LCEIL, "lceil", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LCEILF, "lceilf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LCEILL, "lceill", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_LDEXP, "ldexp", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPF, "ldexpf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPL, "ldexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_LFLOOR, "lfloor", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LFLOORF, "lfloorf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LFLOORL, "lfloorl", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_LGAMMA, "lgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_LGAMMAF, "lgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_LGAMMAL, "lgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMA_R, "lgamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAF_R, "lgammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAL_R, "lgammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_GCC_BUILTIN        (BUILT_IN_LLCEIL, "llceil", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLCEILF, "llceilf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLCEILL, "llceill", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLFLOOR, "llfloor", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORF, "llfloorf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORL, "llfloorl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_LLRINT, "llrint", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLRINTF, "llrintf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLRINTL, "llrintl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLROUND, "llround", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLROUNDF, "llroundf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLROUNDL, "llroundl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_LOG, "log", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_LOG10, "log10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10F, "log10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10L, "log10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG1P, "log1p", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG1PF, "log1pf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG1PL, "log1pl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG2, "log2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG2F, "log2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG2L, "log2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOGB, "logb", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOGBF, "logbf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOGBL, "logbl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGF, "logf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGL, "logl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LRINT, "lrint", BT_FN_LONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LRINTF, "lrintf", BT_FN_LONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LRINTL, "lrintl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LROUND, "lround", BT_FN_LONG_DOUBLE, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LROUNDF, "lroundf", BT_FN_LONG_FLOAT, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LROUNDL, "lroundl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_MODF, "modf", BT_FN_DOUBLE_DOUBLE_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFF, "modff", BT_FN_FLOAT_FLOAT_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFL, "modfl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NAND32, "nand32", BT_FN_DFLOAT32_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NAND64, "nand64", BT_FN_DFLOAT64_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NAND128, "nand128", BT_FN_DFLOAT128_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NANS, "nans", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NANSF, "nansf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NANSL, "nansl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NEARBYINT, "nearbyint", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTF, "nearbyintf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTL, "nearbyintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTER, "nextafter", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERF, "nextafterf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERL, "nextafterl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARD, "nexttoward", BT_FN_DOUBLE_DOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDF, "nexttowardf", BT_FN_FLOAT_FLOAT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDL, "nexttowardl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_POW, "pow", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10, "pow10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10F, "pow10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10L, "pow10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_POWF, "powf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_POWI, "powi", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_POWIF, "powif", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_POWIL, "powil", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_POWL, "powl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMAINDER, "remainder", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMAINDERF, "remainderf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMAINDERL, "remainderl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMQUO, "remquo", BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_REMQUOF, "remquof", BT_FN_FLOAT_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_REMQUOL, "remquol", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ROUND, "round", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ROUNDF, "roundf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ROUNDL, "roundl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALB, "scalb", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBF, "scalbf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBL, "scalbl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBLN, "scalbln", BT_FN_DOUBLE_DOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBLNF, "scalblnf", BT_FN_FLOAT_FLOAT_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBLNL, "scalblnl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBN, "scalbn", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBNF, "scalbnf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBNL, "scalbnl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITF, "signbitf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITL, "signbitl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD32, "signbitd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD64, "signbitd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD128, "signbitd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICAND, "significand", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDF, "significandf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDL, "significandl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_SIN, "sin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOS, "sincos", BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSF, "sincosf", BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSL, "sincosl", BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINF, "sinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_SINH, "sinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHF, "sinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHL, "sinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINL, "sinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_SQRT, "sqrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTF, "sqrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTL, "sqrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_TAN, "tan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANF, "tanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_TANH, "tanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHF, "tanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHL, "tanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANL, "tanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_TGAMMA, "tgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_TGAMMAF, "tgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_TGAMMAL, "tgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_TRUNC, "trunc", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_TRUNCF, "truncf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_TRUNCL, "truncl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0, "y0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0F, "y0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0L, "y0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1, "y1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1F, "y1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1L, "y1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_YN, "yn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNF, "ynf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNL, "ynl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+
+/* Category: _Complex math builtins.  */
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABS, "cabs", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSF, "cabsf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSL, "cabsl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOS, "cacos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSF, "cacosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSH, "cacosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHF, "cacoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHL, "cacoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSL, "cacosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARG, "carg", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGF, "cargf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGL, "cargl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASIN, "casin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINF, "casinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINH, "casinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHF, "casinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHL, "casinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINL, "casinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATAN, "catan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANF, "catanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANH, "catanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHF, "catanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHL, "catanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANL, "catanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOS, "ccos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSF, "ccosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSH, "ccosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHF, "ccoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHL, "ccoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSL, "ccosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXP, "cexp", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPF, "cexpf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPL, "cexpl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_CEXPI, "cexpi", BT_FN_COMPLEX_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_CEXPIF, "cexpif", BT_FN_COMPLEX_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_CEXPIL, "cexpil", BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAG, "cimag", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAGF, "cimagf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAGL, "cimagl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOG, "clog", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGF, "clogf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGL, "clogl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10, "clog10", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10F, "clog10f", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10L, "clog10l", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJ, "conj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJF, "conjf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJL, "conjl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOW, "cpow", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWF, "cpowf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWL, "cpowl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJ, "cproj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJF, "cprojf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJL, "cprojl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREAL, "creal", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALF, "crealf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALL, "creall", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSIN, "csin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINF, "csinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINH, "csinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHF, "csinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHL, "csinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINL, "csinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRT, "csqrt", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTF, "csqrtf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTL, "csqrtl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTAN, "ctan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANF, "ctanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANH, "ctanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHF, "ctanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHL, "ctanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANL, "ctanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+
+/* Category: string/memory builtins.  */
+/* bcmp, bcopy and bzero have traditionally accepted NULL pointers
+   when the length parameter is zero, so don't apply attribute "nonnull".  */
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCMP, "bcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCOPY, "bcopy", BT_FN_VOID_CONST_PTR_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_BZERO, "bzero", BT_FN_VOID_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_INDEX, "index", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMCHR, "memchr", BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMCMP, "memcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_RINDEX, "rindex", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY, "stpncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCASECMP, "strcasecmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCMP, "strcmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCSPN, "strcspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRDUP, "strdup", BT_FN_STRING_CONST_STRING, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNDUP, "strndup", BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCASECMP, "strncasecmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRNCAT, "strncat", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRNCMP, "strncmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRNCPY, "strncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRPBRK, "strpbrk", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRRCHR, "strrchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRSPN, "strspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRSTR, "strstr", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+
+/* Category: stdio builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_FPRINTF, "fprintf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_UNLOCKED, "fprintf_unlocked", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_PUTC, "putc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTC_UNLOCKED, "putc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FPUTC, "fputc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTC_UNLOCKED, "fputc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FPUTS, "fputs", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTS_UNLOCKED, "fputs_unlocked", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FSCANF, "fscanf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_SCANF_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_FWRITE, "fwrite", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FWRITE_UNLOCKED, "fwrite_unlocked", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_PRINTF, "printf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_UNLOCKED, "printf_unlocked", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
+DEF_LIB_BUILTIN        (BUILT_IN_PUTCHAR, "putchar", BT_FN_INT_INT, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTCHAR_UNLOCKED, "putchar_unlocked", BT_FN_INT_INT, ATTR_NULL)
+DEF_LIB_BUILTIN        (BUILT_IN_PUTS, "puts", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTS_UNLOCKED, "puts_unlocked", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_SCANF, "scanf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_SCANF_1_2)
+DEF_C99_BUILTIN        (BUILT_IN_SNPRINTF, "snprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_3_4)
+DEF_LIB_BUILTIN        (BUILT_IN_SPRINTF, "sprintf", BT_FN_INT_STRING_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_SSCANF, "sscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_FORMAT_SCANF_NOTHROW_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_VFPRINTF, "vfprintf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
+DEF_C99_BUILTIN        (BUILT_IN_VFSCANF, "vfscanf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_2_0)
+DEF_LIB_BUILTIN        (BUILT_IN_VPRINTF, "vprintf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_1_0)
+DEF_C99_BUILTIN        (BUILT_IN_VSCANF, "vscanf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_1_0)
+DEF_C99_BUILTIN        (BUILT_IN_VSNPRINTF, "vsnprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_3_0)
+DEF_LIB_BUILTIN        (BUILT_IN_VSPRINTF, "vsprintf", BT_FN_INT_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_2_0)
+DEF_C99_BUILTIN        (BUILT_IN_VSSCANF, "vsscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_NOTHROW_2_0)
+
+/* Category: ctype builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_ISALNUM, "isalnum", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISALPHA, "isalpha", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISASCII, "isascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ISBLANK, "isblank", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISCNTRL, "iscntrl", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISDIGIT, "isdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISGRAPH, "isgraph", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISLOWER, "islower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISPRINT, "isprint", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISPUNCT, "ispunct", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISSPACE, "isspace", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISUPPER, "isupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISXDIGIT, "isxdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_TOASCII, "toascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_TOLOWER, "tolower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_TOUPPER, "toupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+
+/* Category: wctype builtins.  */
+DEF_C94_BUILTIN        (BUILT_IN_ISWALNUM, "iswalnum", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWALPHA, "iswalpha", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ISWBLANK, "iswblank", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWCNTRL, "iswcntrl", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWDIGIT, "iswdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWGRAPH, "iswgraph", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWLOWER, "iswlower", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWPRINT, "iswprint", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWPUNCT, "iswpunct", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWSPACE, "iswspace", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWUPPER, "iswupper", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWXDIGIT, "iswxdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_TOWLOWER, "towlower", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_TOWUPPER, "towupper", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+
+/* Category: miscellaneous builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_ABORT, "abort", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ABS, "abs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_AGGREGATE_INCOMING_ADDRESS, "aggregate_incoming_address", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ALLOCA, "alloca", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_APPLY, "apply", BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_APPLY_ARGS, "apply_args", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_BSWAP16, "bswap16", BT_FN_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_BSWAP32, "bswap32", BT_FN_UINT32_UINT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_BSWAP64, "bswap64", BT_FN_UINT64_UINT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_CLEAR_CACHE, "__clear_cache", BT_FN_VOID_PTR_PTR, ATTR_NOTHROW_LEAF_LIST)
+/* [trans-mem]: Adjust BUILT_IN_TM_CALLOC if BUILT_IN_CALLOC is changed.  */
+DEF_LIB_BUILTIN        (BUILT_IN_CALLOC, "calloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLASSIFY_TYPE, "classify_type", BT_FN_INT_VAR, ATTR_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZ, "clz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZIMAX, "clzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZL, "clzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZLL, "clzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CONSTANT_P, "constant_p", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZ, "ctz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZIMAX, "ctzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZL, "ctzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZLL, "ctzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLRSB, "clrsb", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLRSBIMAX, "clrsbimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLRSBL, "clrsbl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLRSBLL, "clrsbll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DCGETTEXT, "dcgettext", BT_FN_STRING_CONST_STRING_CONST_STRING_INT, ATTR_FORMAT_ARG_2)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DGETTEXT, "dgettext", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_FORMAT_ARG_2)
+DEF_GCC_BUILTIN        (BUILT_IN_DWARF_CFA, "dwarf_cfa", BT_FN_PTR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_DWARF_SP_COLUMN, "dwarf_sp_column", BT_FN_UINT, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN, "eh_return", BT_FN_VOID_PTRMODE_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN_DATA_REGNO, "eh_return_data_regno", BT_FN_INT_INT, ATTR_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECL, "execl", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLP, "execlp", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLE, "execle", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_NOTHROW_SENTINEL_1)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECV, "execv", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVP, "execvp", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVE, "execve", BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_EXIT, "exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EXPECT, "expect", BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_ASSUME_ALIGNED, "assume_aligned", BT_FN_PTR_CONST_PTR_SIZE_VAR, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EXTEND_POINTER, "extend_pointer", BT_FN_UNWINDWORD_PTR, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EXTRACT_RETURN_ADDR, "extract_return_addr", BT_FN_PTR_PTR, ATTR_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFS, "ffs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSIMAX, "ffsimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSL, "ffsl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSLL, "ffsll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_FORK, "fork", BT_FN_PID, ATTR_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FRAME_ADDRESS, "frame_address", BT_FN_PTR_UINT, ATTR_NULL)
+/* [trans-mem]: Adjust BUILT_IN_TM_FREE if BUILT_IN_FREE is changed.  */
+DEF_LIB_BUILTIN        (BUILT_IN_FREE, "free", BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FROB_RETURN_ADDR, "frob_return_addr", BT_FN_PTR_PTR, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GETTEXT, "gettext", BT_FN_STRING_CONST_STRING, ATTR_FORMAT_ARG_1)
+DEF_C99_BUILTIN        (BUILT_IN_IMAXABS, "imaxabs", BT_FN_INTMAX_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INIT_DWARF_REG_SIZES, "init_dwarf_reg_size_table", BT_FN_VOID_PTR, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITE, "finite", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEF, "finitef", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEL, "finitel", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED32, "finited32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED64, "finited64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED128, "finited128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FPCLASSIFY, "fpclassify", BT_FN_INT_INT_INT_INT_INT_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISFINITE, "isfinite", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISINF_SIGN, "isinf_sign", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ISINF, "isinf", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFF, "isinff", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFL, "isinfl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD32, "isinfd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD64, "isinfd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD128, "isinfd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ISNAN, "isnan", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANF, "isnanf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANL, "isnanl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND32, "isnand32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND64, "isnand64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND128, "isnand128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_ISNORMAL, "isnormal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISGREATER, "isgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISGREATEREQUAL, "isgreaterequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISLESS, "isless", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISLESSEQUAL, "islessequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISLESSGREATER, "islessgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISUNORDERED, "isunordered", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_LABS, "labs", BT_FN_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_LLABS, "llabs", BT_FN_LONGLONG_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LONGJMP, "longjmp", BT_FN_VOID_PTR_INT, ATTR_NORETURN_NOTHROW_LIST)
+/* [trans-mem]: Adjust BUILT_IN_TM_MALLOC if BUILT_IN_MALLOC is changed.  */
+DEF_LIB_BUILTIN        (BUILT_IN_MALLOC, "malloc", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_NEXT_ARG, "next_arg", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITY, "parity", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITYIMAX, "parityimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITYL, "parityl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITYLL, "parityll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNT, "popcount", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTIMAX, "popcountimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTL, "popcountl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTLL, "popcountll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POSIX_MEMALIGN, "posix_memalign", BT_FN_INT_PTRPTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_PREFETCH, "prefetch", BT_FN_VOID_CONST_PTR_VAR, ATTR_NOVOPS_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_REALLOC, "realloc", BT_FN_PTR_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_RETURN, "return", BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_RETURN_ADDRESS, "return_address", BT_FN_PTR_UINT, ATTR_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_SAVEREGS, "saveregs", BT_FN_PTR_VAR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_SETJMP, "setjmp", BT_FN_INT_PTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRFMON, "strfmon", BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_STRFMON_NOTHROW_3_4)
+DEF_LIB_BUILTIN        (BUILT_IN_STRFTIME, "strftime", BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR, ATTR_FORMAT_STRFTIME_NOTHROW_3_0)
+DEF_GCC_BUILTIN        (BUILT_IN_TRAP, "trap", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UNREACHABLE, "unreachable", BT_FN_VOID, ATTR_CONST_NORETURN_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UNWIND_INIT, "unwind_init", BT_FN_VOID, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_UPDATE_SETJMP_BUF, "update_setjmp_buf", BT_FN_VOID_PTR_INT, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_END, "va_end", BT_FN_VOID_VALIST_REF, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_START, "va_start", BT_FN_VOID_VALIST_REF_VAR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK, "va_arg_pack", BT_FN_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK_LEN, "va_arg_pack_len", BT_FN_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN__EXIT, "_exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN__EXIT2, "_Exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+
+/* Implementing nested functions.  */
+DEF_BUILTIN_STUB (BUILT_IN_INIT_TRAMPOLINE, "__builtin_init_trampoline")
+DEF_BUILTIN_STUB (BUILT_IN_INIT_HEAP_TRAMPOLINE, "__builtin_init_heap_trampoline")
+DEF_BUILTIN_STUB (BUILT_IN_ADJUST_TRAMPOLINE, "__builtin_adjust_trampoline")
+DEF_BUILTIN_STUB (BUILT_IN_NONLOCAL_GOTO, "__builtin_nonlocal_goto")
+
+/* Implementing __builtin_setjmp.  */
+DEF_BUILTIN_STUB (BUILT_IN_SETJMP_SETUP, "__builtin_setjmp_setup")
+DEF_BUILTIN_STUB (BUILT_IN_SETJMP_RECEIVER, "__builtin_setjmp_receiver")
+
+/* Implementing variable sized local variables.  */
+DEF_BUILTIN_STUB (BUILT_IN_STACK_SAVE, "__builtin_stack_save")
+DEF_BUILTIN_STUB (BUILT_IN_STACK_RESTORE, "__builtin_stack_restore")
+DEF_BUILTIN_STUB (BUILT_IN_ALLOCA_WITH_ALIGN, "__builtin_alloca_with_align")
+
+/* Object size checking builtins.  */
+DEF_GCC_BUILTIN	       (BUILT_IN_OBJECT_SIZE, "object_size", BT_FN_SIZE_CONST_PTR_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY_CHK, "__stpncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCAT_CHK, "__strncat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCPY_CHK, "__strncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SNPRINTF_CHK, "__snprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_5_6)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SPRINTF_CHK, "__sprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_4_5)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSNPRINTF_CHK, "__vsnprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_5_0)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSPRINTF_CHK, "__vsprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_4_0)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_CHK, "__fprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_3_4)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_CHK, "__printf_chk", BT_FN_INT_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VFPRINTF_CHK, "__vfprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_3_0)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VPRINTF_CHK, "__vprintf_chk", BT_FN_INT_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
+
+/* Profiling hooks.  */
+DEF_BUILTIN (BUILT_IN_PROFILE_FUNC_ENTER, "__cyg_profile_func_enter", BUILT_IN_NORMAL, BT_FN_VOID_PTR_PTR, BT_LAST,
+	     false, false, false, ATTR_NULL, true, true)
+DEF_BUILTIN (BUILT_IN_PROFILE_FUNC_EXIT, "__cyg_profile_func_exit", BUILT_IN_NORMAL, BT_FN_VOID_PTR_PTR, BT_LAST,
+	     false, false, false, ATTR_NULL, true, true)
+
+/* TLS thread pointer related builtins.  */
+DEF_BUILTIN (BUILT_IN_THREAD_POINTER, "__builtin_thread_pointer",
+	     BUILT_IN_NORMAL, BT_FN_PTR, BT_LAST,
+	     false, false, true, ATTR_CONST_NOTHROW_LIST, true,
+	     targetm.have_tls)
+
+DEF_BUILTIN (BUILT_IN_SET_THREAD_POINTER, "__builtin_set_thread_pointer",
+	     BUILT_IN_NORMAL, BT_FN_VOID_PTR, BT_LAST,
+	     false, false, true, ATTR_NOTHROW_LIST, true,
+	     targetm.have_tls)
+
+/* TLS emulation.  */
+DEF_BUILTIN (BUILT_IN_EMUTLS_GET_ADDRESS, targetm.emutls.get_address,
+	     BUILT_IN_NORMAL,
+	     BT_FN_PTR_PTR,  BT_FN_PTR_PTR,
+	     true, true, true, ATTR_CONST_NOTHROW_NONNULL_LEAF, false,
+	     !targetm.have_tls)
+DEF_BUILTIN (BUILT_IN_EMUTLS_REGISTER_COMMON,
+	     targetm.emutls.register_common, BUILT_IN_NORMAL,
+	     BT_FN_VOID_PTR_WORD_WORD_PTR, BT_FN_VOID_PTR_WORD_WORD_PTR,
+	     true, true, true, ATTR_NOTHROW_LEAF_LIST, false,
+	     !targetm.have_tls)
+
+/* Exception support.  */
+DEF_BUILTIN_STUB (BUILT_IN_UNWIND_RESUME, "__builtin_unwind_resume")
+DEF_BUILTIN_STUB (BUILT_IN_CXA_END_CLEANUP, "__builtin_cxa_end_cleanup")
+DEF_BUILTIN_STUB (BUILT_IN_EH_POINTER, "__builtin_eh_pointer")
+DEF_BUILTIN_STUB (BUILT_IN_EH_FILTER, "__builtin_eh_filter")
+DEF_BUILTIN_STUB (BUILT_IN_EH_COPY_VALUES, "__builtin_eh_copy_values")
+
+/* __FILE__, __LINE__, __FUNCTION__ as builtins.  */
+DEF_GCC_BUILTIN (BUILT_IN_FILE, "FILE", BT_FN_CONST_STRING, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN (BUILT_IN_FUNCTION, "FUNCTION", BT_FN_CONST_STRING, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN (BUILT_IN_LINE, "LINE", BT_FN_INT, ATTR_NOTHROW_LEAF_LIST)
+
+#if 0
+/* Synchronization Primitives.  */
+#include "sync-builtins.def"
+
+/* OpenMP builtins.  */
+#include "omp-builtins.def"
+
+/* Cilk keywords builtins.  */
+#include "cilk-builtins.def"
+
+/* GTM builtins. */
+#include "gtm-builtins.def"
+
+/* Sanitizer builtins. */
+#include "sanitizer.def"
+
+/* Cilk Plus builtins.  */
+#include "cilkplus.def"
+#endif
Index: src/prelude/extras.c
===================================================================
--- src/prelude/extras.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/prelude/extras.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,3 @@
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
Index: src/prelude/extras.regx
===================================================================
--- src/prelude/extras.regx	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/prelude/extras.regx	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,8 @@
+typedef.* size_t;
+typedef.* ptrdiff_t;
+extern.* abort\(.*\).*
+extern.* atexit\(.*\).*
+extern.* exit\(.*\).*
+extern.* free\(.*\).*
+extern.*\*malloc\(.*\).*
+extern.* printf\(.*\).*
Index: src/prelude/prelude.cf
===================================================================
--- src/prelude/prelude.cf	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/prelude/prelude.cf	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,808 @@
+//                               -*- Mode: C -*-
+//
+// Copyright (C) Glen Ditchfield 1994, 1999
+//
+// prelude.cf -- Standard Cforall Preample for C99
+//
+// Author           : Glen Ditchfield
+// Created On       : Sat Nov 29 07:23:41 2014
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 18:04:40 2016
+// Update Count     : 92
+//
+
+# 2 "prelude.cf"  // needed for error messages from this file
+
+// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
+
+// ------------------------------------------------------------
+//
+// Section 4.1 Primary Expressions
+//
+// ------------------------------------------------------------
+
+//We have none
+
+// ------------------------------------------------------------
+//
+// Section 4.2 Postfix Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?++( _Bool * ),				?++( volatile _Bool * );
+_Bool			?--( _Bool * ),				?--( volatile _Bool * );
+unsigned char		?++( unsigned char * ),			?++( volatile unsigned char * );
+signed int		?++( signed int * ),			?++( volatile signed int * );
+signed int		?--( signed int * ),			?--( volatile signed int * );
+unsigned int		?++( unsigned int * ),			?++( volatile unsigned int * );
+unsigned int		?--( unsigned int * ),			?--( volatile unsigned int * );
+signed long int		?++( signed long int * ),		?++( volatile signed long int * );
+signed long int		?--( signed long int * ),		?--( volatile signed long int * );
+unsigned long int	?++( unsigned long int * ),		?++( volatile unsigned long int * );
+unsigned long int	?--( unsigned long int * ),		?--( volatile unsigned long int * );
+signed long long int	?++( signed long long int * ),		?++( volatile signed long long int * );
+signed long long int	?--( signed long long int * ),		?--( volatile signed long long int * );
+unsigned long long int	?++( unsigned long long int * ),	?++( volatile unsigned long long int * );
+unsigned long long int	?--( unsigned long long int * ),	?--( volatile unsigned long long int * );
+float			?++( float * ),				?++( volatile float * );
+float			?--( float * ),				?--( volatile float * );
+double			?++( double * ),			?++( volatile double * );
+double			?--( double * ),			?--( volatile double * );
+long double		?++( long double * ),			?++( volatile long double * );
+long double		?--( long double * ),			?--( volatile long double * );
+float _Complex		?++( float _Complex * ),		?++( volatile float _Complex * );
+float _Complex		?--( float _Complex * ),		?--( volatile float _Complex * );
+double _Complex		?++( double _Complex * ),		?++( volatile double _Complex * );
+double _Complex		?--( double _Complex * ),		?--( volatile double _Complex * );
+long double _Complex	?++( long double _Complex * ),		?++( volatile long double _Complex * );
+long double _Complex	?--( long double _Complex * ),		?--( volatile long double _Complex * );
+
+forall( otype T ) T *			 ?++(		     T ** );
+forall( otype T ) const T *		 ?++( const	     T ** );
+forall( otype T ) volatile T *		 ?++(	    volatile T ** );
+forall( otype T ) const volatile T *	 ?++( const volatile T ** );
+forall( otype T ) T *			 ?--(		     T ** );
+forall( otype T ) const T *		 ?--( const	     T ** );
+forall( otype T ) volatile T *		 ?--(	    volatile T ** );
+forall( otype T ) const volatile T *	 ?--( const volatile T ** );
+
+forall( otype T ) lvalue T		 ?[?](		      T *,	    ptrdiff_t );
+forall( otype T ) const lvalue T	 ?[?]( const	      T *,	    ptrdiff_t );
+forall( otype T ) volatile lvalue T	 ?[?](       volatile T *,	    ptrdiff_t );
+forall( otype T ) const volatile lvalue T ?[?]( const volatile T *,	    ptrdiff_t );
+forall( otype T ) lvalue T		 ?[?](		ptrdiff_t,		  T * );
+forall( otype T ) const lvalue T	 ?[?](		ptrdiff_t, const	  T * );
+forall( otype T ) volatile lvalue T	 ?[?](		ptrdiff_t,	 volatile T * );
+forall( otype T ) const volatile lvalue T ?[?](		ptrdiff_t, const volatile T * );
+
+// ------------------------------------------------------------
+//
+// Section 4.3 Unary Operators
+//
+// ------------------------------------------------------------
+
+_Bool			++?( _Bool * ),				--?( _Bool * );
+signed int		++?( signed int * ),			--?( signed int * );
+unsigned int		++?( unsigned int * ),			--?( unsigned int * );
+signed long int		++?( signed long int * ),		--?( signed long int * );
+unsigned long int	++?( unsigned long int * ),		--?( unsigned long int * );
+signed long long int	++?( signed long long int * ),		--?( signed long long int * );
+unsigned long long int	++?( unsigned long long int * ),	--?( unsigned long long int * );
+float			++?( float * ),				--?( float * );
+double			++?( double * ),			--?( double * );
+long double		++?( long double * ),			--?( long double * );
+float _Complex		++?( float _Complex * ),		--?( float _Complex * );
+double _Complex		++?( double _Complex * ),		--?( double _Complex * );
+long double _Complex	++?( long double _Complex * ),		--?( long double _Complex * );
+
+forall( otype T ) T *			 ++?(		     T ** );
+forall( otype T ) const T *		 ++?( const	     T ** );
+forall( otype T ) volatile T *		 ++?(	    volatile T ** );
+forall( otype T ) const volatile T *	 ++?( const volatile T ** );
+forall( otype T ) T *			 --?(		     T ** );
+forall( otype T ) const T *		 --?( const	     T ** );
+forall( otype T ) volatile T *		 --?(	    volatile T ** );
+forall( otype T ) const volatile T *	 --?( const volatile T ** );
+
+forall( dtype T | sized(T) ) lvalue T		 *?(		     T * );
+forall( dtype T | sized(T) ) const lvalue T		 *?( const	     T * );
+forall( dtype T | sized(T) ) volatile lvalue T	 *?(       volatile  T * );
+forall( dtype T | sized(T) ) const volatile lvalue T *?( const volatile  T * );
+forall( ftype FT ) lvalue FT		 *?( FT * );
+
+_Bool			+?( _Bool ),			-?( _Bool ),			~?( _Bool );
+signed int		+?( signed int ),		-?( signed int ),		~?( signed int );
+unsigned int		+?( unsigned int ),		-?( unsigned int ),		~?( unsigned int );
+signed long int		+?( signed long int ),		-?( signed long int ),		~?( signed long int );
+unsigned long int	+?( unsigned long int ),	-?( unsigned long int ),	~?( unsigned long int );
+signed long long int	+?( signed long long int ),	-?( signed long long int ),	~?( signed long long int );
+unsigned long long int	+?( unsigned long long int ),	-?( unsigned long long int ),	~?( unsigned long long int );
+float			+?( float ),			-?( float );
+double			+?( double ),			-?( double );
+long double		+?( long double ),		-?( long double );
+float _Complex		+?( float _Complex ),		-?( float _Complex );
+double _Complex		+?( double _Complex ),		-?( double _Complex );
+long double _Complex	+?( long double _Complex ),	-?( long double _Complex );
+
+signed int	!?( signed int ),		!?( unsigned int ),
+		!?( long int ),			!?( unsigned long int ),
+		!?( long long int ),		!?( unsigned long long int ),
+		!?( float ),			!?( double ),			!?( long double ),
+		!?( float _Complex ),		!?( double _Complex ),		!?( long double _Complex );
+
+forall ( dtype DT ) int !?( const volatile DT * );
+forall ( ftype FT ) int !?( FT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.5 Multiplicative Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?*?( _Bool, _Bool ),					?/?( _Bool, _Bool ),				?%?( _Bool, _Bool );
+signed int		?*?( signed int, signed int ),				?/?( signed int, signed int ),			?%?( signed int, signed int );
+unsigned int		?*?( unsigned int, unsigned int ),			?/?( unsigned int, unsigned int ),		?%?( unsigned int, unsigned int );
+signed long int		?*?( signed long int, signed long int ),		?/?( signed long int, signed long int ),	?%?( signed long int, signed long int );
+unsigned long int	?*?( unsigned long int, unsigned long int ),		?/?( unsigned long int, unsigned long int ),	?%?( unsigned long int, unsigned long int );
+signed long long int	?*?( signed long long int, signed long long int ),	?/?( signed long long int, signed long long int ), ?%?( signed long long int, signed long long int );
+unsigned long long int	?*?( unsigned long long int, unsigned long long int ),	?/?( unsigned long long int, unsigned long long int ), ?%?( unsigned long long int, unsigned long long int );
+float			?*?( float, float ),					?/?( float, float );
+double			?*?( double, double ),					?/?( double, double );
+long double		?*?( long double, long double ),			?/?( long double, long double );
+// gcc does not support _Imaginary
+//float _Imaginary	?*?( float _Imaginary, float _Imaginary),		?/?( float _Imaginary, float _Imaginary );
+//double _Imaginary	?*?( double _Imaginary, double _Imaginary),		?/?( double _Imaginary, double _Imaginary );
+//long double _Imaginary	?*?( long double _Imaginary, long double _Imaginary),	?/?( long double _Imaginary, long double _Imaginary );
+float _Complex		?*?( float _Complex, float _Complex ),			?/?( float _Complex, float _Complex );
+double _Complex		?*?( double _Complex, double _Complex ),		?/?( double _Complex, double _Complex );
+long double _Complex	?*?( long double _Complex, long double _Complex ),	?/?( long double _Complex, long double _Complex );
+
+// ------------------------------------------------------------
+//
+// Section 4.6 Additive Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?+?( _Bool, _Bool ),					?-?( _Bool, _Bool );
+signed int		?+?( signed int, signed int ),				?-?( signed int, signed int );
+unsigned int		?+?( unsigned int, unsigned int ),			?-?( unsigned int, unsigned int );
+signed long int		?+?( signed long int, signed long int ),		?-?( signed long int, signed long int );
+unsigned long int	?+?( unsigned long int, unsigned long int ),		?-?( unsigned long int, unsigned long int );
+signed long long int	?+?( signed long long int, long long int  signed),	?-?( signed long long int, signed long long int );
+unsigned long long int	?+?( unsigned long long int, unsigned long long int ),	?-?( unsigned long long int, unsigned long long int );
+float			?+?( float, float ),					?-?( float, float );
+double			?+?( double, double ),					?-?( double, double );
+long double		?+?( long double, long double ),			?-?( long double, long double );
+float _Complex		?+?( float _Complex, float _Complex ),			?-?( float _Complex, float _Complex );
+double _Complex		?+?( double _Complex, double _Complex ),		?-?( double _Complex, double _Complex );
+long double _Complex	?+?( long double _Complex, long double _Complex ),	?-?( long double _Complex, long double _Complex );
+
+forall( otype T ) T *			?+?(		    T *,	  ptrdiff_t );
+forall( otype T ) T *			?+?(	      ptrdiff_t,		T * );
+forall( otype T ) const T *		?+?( const	    T *,	  ptrdiff_t );
+forall( otype T ) const T *		?+?(	      ptrdiff_t, const		T * );
+forall( otype T ) volatile T *		?+?(	   volatile T *,	  ptrdiff_t );
+forall( otype T ) volatile T *		?+?(	      ptrdiff_t,       volatile T * );
+forall( otype T ) const volatile T *	?+?( const volatile T *,	  ptrdiff_t );
+forall( otype T ) const volatile T *	?+?(	      ptrdiff_t, const volatile T * );
+forall( otype T ) T *			?-?(		    T *,	  ptrdiff_t );
+forall( otype T ) const T *		?-?( const	    T *,	  ptrdiff_t );
+forall( otype T ) volatile T *		?-?(	   volatile T *,	  ptrdiff_t );
+forall( otype T ) const volatile T *	?-?( const volatile T *,	  ptrdiff_t );
+forall( otype T ) ptrdiff_t		?-?( const volatile T *, const volatile T * );
+
+// ------------------------------------------------------------
+//
+// Section 4.7 Bitwise Shift Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?<<?( _Bool, _Bool ),					?>>?( _Bool, _Bool );
+signed int		?<<?( signed int, signed int ),				?>>?( signed int, signed int );
+unsigned int		?<<?( unsigned int, unsigned int ),			?>>?( unsigned int, unsigned int );
+signed long int		?<<?( signed long int, signed long int ),		?>>?( signed long int, signed long int );
+unsigned long int	?<<?( unsigned long int, unsigned long int ),		?>>?( unsigned long int, unsigned long int );
+signed long long int	?<<?( signed long long int, signed long long int ),	?>>?( signed long long int, signed long long int );
+unsigned long long int	?<<?( unsigned long long int, unsigned long long int ),	?>>?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.8 Relational Operators
+//
+// ------------------------------------------------------------
+
+signed int ?<?( _Bool, _Bool ),						?<=?( _Bool, _Bool ),
+	   ?>?( _Bool, _Bool ),						?>=?( _Bool, _Bool );
+signed int ?<?( unsigned char, unsigned char ),				?<=?( unsigned char, unsigned char ),
+	   ?>?( unsigned char, unsigned char ),				?>=?( unsigned char, unsigned char );
+signed int ?<?( signed int, signed int ),				?<=?( signed int, signed int ),
+	   ?>?( signed int, signed int ),				?>=?( signed int, signed int );
+signed int ?<?( unsigned int, unsigned int ),				?<=?( unsigned int, unsigned int ),
+	   ?>?( unsigned int, unsigned int ),				?>=?( unsigned int, unsigned int );
+signed int ?<?( signed long int, signed long int ),			?<=?( signed long int, signed long int ),
+	   ?>?( signed long int, signed long int ),			?>=?( signed long int, signed long int );
+signed int ?<?( unsigned long int, unsigned long int ),			?<=?( unsigned long int, unsigned long int ),
+	   ?>?( unsigned long int, unsigned long int ),			?>=?( unsigned long int, unsigned long int );
+signed int ?<?( signed long long int, signed long long int ),		?<=?( signed long long int, signed long long int ),
+	   ?>?( signed long long int, signed long long int ),		?>=?( signed long long int, signed long long int );
+signed int ?<?( unsigned long long int, unsigned long long int ),	?<=?( unsigned long long int, unsigned long long int ),
+	   ?>?( unsigned long long int, unsigned long long int ),	?>=?( unsigned long long int, unsigned long long int );
+signed int ?<?( float, float ),						?<=?( float, float ),
+	   ?>?( float, float ),						?>=?( float, float );
+signed int ?<?( double, double ),					?<=?( double, double ),
+	   ?>?( double, double ),					?>=?( double, double );
+signed int ?<?( long double, long double ),				?<=?( long double, long double ),
+	   ?>?( long double, long double ),				?>=?( long double, long double );
+
+forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
+forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
+forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
+forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.9 Equality Operators
+//
+// ------------------------------------------------------------
+
+signed int ?==?( _Bool, _Bool ),							?!=?( _Bool, _Bool );
+signed int ?==?( signed int, signed int ),					?!=?( signed int, signed int );
+signed int ?==?( unsigned int, unsigned int ),					?!=?( unsigned int, unsigned int );
+signed int ?==?( signed long int, signed long int ),				?!=?( signed long int, signed long int );
+signed int ?==?( unsigned long int, unsigned long int ),			?!=?( unsigned long int, unsigned long int );
+signed int ?==?( signed long long int, long long int  signed),		?!=?( signed long long int, signed long long int );
+signed int ?==?( unsigned long long int, unsigned long long int ),	?!=?( unsigned long long int, unsigned long long int );
+signed int ?==?( float, float ),							?!=?( float, float );
+signed int ?==?( double, double ),							?!=?( double, double );
+signed int ?==?( long double, long double ),					?!=?( long double, long double );
+signed int ?==?( float _Complex, float _Complex ),				?!=?( float _Complex, float _Complex );
+signed int ?==?( double _Complex, double _Complex ),				?!=?( double _Complex, double _Complex );
+signed int ?==?( long double _Complex, long double _Complex ),		?!=?( long double _Complex, long double _Complex );
+signed int ?==?( zero_t, zero_t ),							?!=?( zero_t, zero_t );
+signed int ?==?( one_t, one_t ),							?!=?( one_t, one_t );
+
+forall( dtype DT ) signed int ?==?(		   DT *,		DT * );
+forall( dtype DT ) signed int ?==?( const	   DT *, const		DT * );
+forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
+forall( ftype FT ) signed int ?==?( FT *, FT * );
+forall( dtype DT ) signed int ?!=?(		   DT *,		DT * );
+forall( dtype DT ) signed int ?!=?( const	   DT *, const		DT * );
+forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
+forall( ftype FT ) signed int ?!=?( FT *, FT * );
+
+// forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
+// forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
+// forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
+// forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
+
+// forall( dtype DT ) signed int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
+// forall( dtype DT ) signed int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
+// forall( ftype FT ) signed int ?==?( FT *, forall( ftype FT2 )FT2 * );
+// forall( ftype FT ) signed int ?==?( forall( ftype FT2 )FT2 *, FT * );
+// forall( dtype DT ) signed int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
+// forall( dtype DT ) signed int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
+// forall( ftype FT ) signed int ?!=?( FT *, forall( ftype FT2 )FT2 * );
+// forall( ftype FT ) signed int ?!=?( forall( ftype FT2 )FT2 *, FT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.10 Bitwise AND Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?&?( _Bool, _Bool );
+signed int		?&?( signed int, signed int );
+unsigned int		?&?( unsigned int, unsigned int );
+signed long int		?&?( signed long int, signed long int );
+unsigned long int	?&?( unsigned long int, unsigned long int );
+signed long long int	?&?( signed long long int, signed long long int );
+unsigned long long int	?&?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.11 Bitwise XOR Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?^?( _Bool, _Bool );
+signed int		?^?( signed int, signed int );
+unsigned int		?^?( unsigned int, unsigned int );
+signed long int		?^?( signed long int, signed long int );
+unsigned long int	?^?( unsigned long int, unsigned long int );
+signed long long int	?^?( signed long long int, signed long long int );
+unsigned long long int	?^?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.12 Bitwise OR Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?|?( _Bool, _Bool );
+signed int		?|?( signed int, signed int );
+unsigned int		?|?( unsigned int, unsigned int );
+signed long int		?|?( signed long int, signed long int );
+unsigned long int	?|?( unsigned long int, unsigned long int );
+signed long long int	?|?( signed long long int, signed long long int );
+unsigned long long int	?|?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.16 Assignment Operator
+//
+// ------------------------------------------------------------
+
+forall( ftype FT ) FT *			?=?( FT **, FT * );
+forall( ftype FT ) FT *			?=?( FT * volatile *, FT * );
+
+forall( dtype DT ) DT *			?=?(		     DT *	   *,			DT * );
+forall( dtype DT ) DT *			?=?(		     DT * volatile *,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   *,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile *,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   *, const		DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile *, const		DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,			DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,			DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,	    volatile	DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,	    volatile	DT * );
+
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,			DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,			DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *, const		DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const		DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *,	    volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,	    volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *, const volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile	DT * );
+
+forall( dtype DT ) DT *			?=?(		     DT *	   *,			void * );
+forall( dtype DT ) DT *			?=?(		     DT * volatile *,			void * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   *,			void * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile *,			void * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   *, const		void * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile *, const		void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,			void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,			void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,	    volatile	void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,	    volatile	void * );
+
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,			void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *,			void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *, const		void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *, const		void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,	    volatile	void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *,	    volatile	void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *, const volatile	void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *, const volatile	void * );
+
+forall( dtype DT ) void *		 ?=?(		     void *	     *,			DT * );
+forall( dtype DT ) void *		 ?=?(		     void * volatile *,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void *	     *,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void * volatile *,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void *	     *, const		DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void * volatile *, const		DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     *,			DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile *,			DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     *,	      volatile	DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile *,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *,			DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,			DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *, const		DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const		DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *, const volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const volatile	DT * );
+
+void *			?=?(		    void *	    *,		      void * );
+void *			?=?(		    void * volatile *,		      void * );
+const void *		?=?( const	    void *	    *,		      void * );
+const void *		?=?( const	    void * volatile *,		      void * );
+const void *		?=?( const	    void *	    *, const	      void * );
+const void *		?=?( const	    void * volatile *, const	      void * );
+volatile void *		?=?(	   volatile void *	    *,		      void * );
+volatile void *		?=?(	   volatile void * volatile *,		      void * );
+volatile void *		?=?(	   volatile void *	    *,	     volatile void * );
+volatile void *		?=?(	   volatile void * volatile *,	     volatile void * );
+const volatile void *	?=?( const volatile void *	    *,		      void * );
+const volatile void *	?=?( const volatile void * volatile *,		      void * );
+const volatile void *	?=?( const volatile void *	    *, const	      void * );
+const volatile void *	?=?( const volatile void * volatile *, const	      void * );
+const volatile void *	?=?( const volatile void *	    *,	     volatile void * );
+const volatile void *	?=?( const volatile void * volatile *,	     volatile void * );
+const volatile void *	?=?( const volatile void *	    *, const volatile void * );
+const volatile void *	?=?( const volatile void * volatile *, const volatile void * );
+
+//forall( dtype DT ) DT *			?=?(		    DT *	  *, forall( dtype DT2 ) const DT2 * );
+//forall( dtype DT ) DT *			?=?(		    DT * volatile *, forall( dtype DT2 ) const DT2 * );
+forall( dtype DT ) const DT *		?=?( const	    DT *	  *, forall( dtype DT2 ) const DT2 * );
+forall( dtype DT ) const DT *		?=?( const	    DT * volatile *, forall( dtype DT2 ) const DT2 * );
+//forall( dtype DT ) volatile DT *	?=?( volatile	    DT *	  *, forall( dtype DT2 ) const DT2 * );
+//forall( dtype DT ) volatile DT *	?=?( volatile	    DT * volatile *, forall( dtype DT2 ) const DT2 * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile DT *	  *, forall( dtype DT2 ) const DT2 * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
+
+forall( ftype FT ) FT *			?=?( FT *	   *, forall( ftype FT2 ) FT2 * );
+forall( ftype FT ) FT *			?=?( FT * volatile *, forall( ftype FT2 ) FT2 * );
+
+forall( otype T ) T *			?+=?(		     T *	  *, ptrdiff_t );
+forall( otype T ) T *			?+=?(		     T * volatile *, ptrdiff_t );
+forall( otype T ) const T *		?+=?( const	     T *	  *, ptrdiff_t );
+forall( otype T ) const T *		?+=?( const	     T * volatile *, ptrdiff_t );
+forall( otype T ) volatile T *		?+=?(	    volatile T *	  *, ptrdiff_t );
+forall( otype T ) volatile T *		?+=?(	    volatile T * volatile *, ptrdiff_t );
+forall( otype T ) const volatile T *	?+=?( const volatile T *	  *, ptrdiff_t );
+forall( otype T ) const volatile T *	?+=?( const volatile T * volatile *, ptrdiff_t );
+forall( otype T ) T *			?-=?(		     T *	  *, ptrdiff_t );
+forall( otype T ) T *			?-=?(		     T * volatile *, ptrdiff_t );
+forall( otype T ) const T *		?-=?( const	     T *	  *, ptrdiff_t );
+forall( otype T ) const T *		?-=?( const	     T * volatile *, ptrdiff_t );
+forall( otype T ) volatile T *		?-=?(	    volatile T *	  *, ptrdiff_t );
+forall( otype T ) volatile T *		?-=?(	    volatile T * volatile *, ptrdiff_t );
+forall( otype T ) const volatile T *	?-=?( const volatile T *	  *, ptrdiff_t );
+forall( otype T ) const volatile T *	?-=?( const volatile T * volatile *, ptrdiff_t );
+
+_Bool			?=?( _Bool *, _Bool ),					?=?( volatile _Bool *, _Bool );
+char			?=?( char *, char ),					?=?( volatile char *, char );
+char signed		?=?( char signed *, char signed ),			?=?( volatile char signed *, char signed );
+char unsigned		?=?( char unsigned *, char unsigned ),			?=?( volatile char unsigned *, char unsigned );
+int short		?=?( int short *, int short ),				?=?( volatile int short *, int short );
+int short unsigned	?=?( int short unsigned *, int short unsigned ),	?=?( volatile int short unsigned *, int short unsigned );
+signed int		?=?( signed int *, signed int ),			?=?( volatile signed int *, signed int );
+unsigned int		?=?( unsigned *, unsigned ),				?=?( volatile unsigned *, unsigned );
+signed long int		?=?( signed long int *, signed long int ),		?=?( volatile signed long int *, signed long int );
+unsigned long int	?=?( unsigned long int *, unsigned long int ),		?=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?=?( signed long long int *, signed long long int ),	?=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?=?( unsigned long long int *, unsigned long long int ), ?=?( volatile unsigned long long int *, unsigned long long int );
+zero_t		?=?( zero_t *, zero_t );
+one_t			?=?( one_t *, one_t );
+
+
+_Bool			?*=?( _Bool *, _Bool ),					?*=?( volatile _Bool *, _Bool );
+char			?*=?( char *, char ),					?*=?( volatile char *, char );
+char signed		?*=?( char signed *, char signed ),			?*=?( volatile char signed *, char signed );
+char unsigned		?*=?( char unsigned *, char unsigned ),			?*=?( volatile char unsigned *, char unsigned );
+int short		?*=?( int short *, int short ),				?*=?( volatile int short *, int short );
+int short unsigned	?*=?( int short unsigned *, int short unsigned ),	?*=?( volatile int short unsigned *, int short unsigned );
+signed int		?*=?( signed int *, signed int ),			?*=?( volatile signed int *, signed int );
+unsigned int		?*=?( unsigned *, unsigned ),				?*=?( volatile unsigned *, unsigned );
+signed long int		?*=?( signed long int *, signed long int ),		?*=?( volatile signed long int *, signed long int );
+unsigned long int	?*=?( unsigned long int *, unsigned long int ),		?*=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?*=?( signed long long int *, signed long long int ),	?*=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?*=?( unsigned long long int *, unsigned long long int ), ?*=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?/=?( _Bool *, _Bool ),					?/=?( volatile _Bool *, _Bool );
+char			?/=?( char *, char ),					?/=?( volatile char *, char );
+char signed		?/=?( char signed *, char signed ),			?/=?( volatile char signed *, char signed );
+char unsigned		?/=?( char unsigned *, char unsigned ),			?/=?( volatile char unsigned *, char unsigned );
+int short		?/=?( int short *, int short ),				?/=?( volatile int short *, int short );
+int short unsigned	?/=?( int short unsigned *, int short unsigned ),	?/=?( volatile int short unsigned *, int short unsigned );
+signed int		?/=?( signed int *, signed int ),			?/=?( volatile signed int *, signed int );
+unsigned int		?/=?( unsigned *, unsigned ),				?/=?( volatile unsigned *, unsigned );
+signed long int		?/=?( signed long int *, signed long int ),		?/=?( volatile signed long int *, signed long int );
+unsigned long int	?/=?( unsigned long int *, unsigned long int ),		?/=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?/=?( signed long long int *, signed long long int ),	?/=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?/=?( unsigned long long int *, unsigned long long int ), ?/=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?%=?( _Bool *, _Bool ),					?%=?( volatile _Bool *, _Bool );
+char			?%=?( char *, char ),					?%=?( volatile char *, char );
+char signed		?%=?( char signed *, char signed ),			?%=?( volatile char signed *, char signed );
+char unsigned		?%=?( char unsigned *, char unsigned ),			?%=?( volatile char unsigned *, char unsigned );
+int short		?%=?( int short *, int short ),				?%=?( volatile int short *, int short );
+int short unsigned	?%=?( int short unsigned *, int short unsigned ),	?%=?( volatile int short unsigned *, int short unsigned );
+signed int		?%=?( signed int *, signed int ),			?%=?( volatile signed int *, signed int );
+unsigned int		?%=?( unsigned *, unsigned ),				?%=?( volatile unsigned *, unsigned );
+signed long int		?%=?( signed long int *, signed long int ),		?%=?( volatile signed long int *, signed long int );
+unsigned long int	?%=?( unsigned long int *, unsigned long int ),		?%=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?%=?( signed long long int *, signed long long int ),	?%=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?%=?( unsigned long long int *, unsigned long long int ), ?%=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?+=?( _Bool *, _Bool ),					?+=?( volatile _Bool *, _Bool );
+char			?+=?( char *, char ),					?+=?( volatile char *, char );
+char signed		?+=?( char signed *, char signed ),			?+=?( volatile char signed *, char signed );
+char unsigned		?+=?( char unsigned *, char unsigned ),			?+=?( volatile char unsigned *, char unsigned );
+int short		?+=?( int short *, int short ),				?+=?( volatile int short *, int short );
+int short unsigned	?+=?( int short unsigned *, int short unsigned ),	?+=?( volatile int short unsigned *, int short unsigned );
+signed int		?+=?( signed int *, signed int ),			?+=?( volatile signed int *, signed int );
+unsigned int		?+=?( unsigned *, unsigned ),				?+=?( volatile unsigned *, unsigned );
+signed long int		?+=?( signed long int *, signed long int ),		?+=?( volatile signed long int *, signed long int );
+unsigned long int	?+=?( unsigned long int *, unsigned long int ),		?+=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?+=?( signed long long int *, signed long long int ),	?+=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?+=?( unsigned long long int *, unsigned long long int ), ?+=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?-=?( _Bool *, _Bool ),					?-=?( volatile _Bool *, _Bool );
+char			?-=?( char *, char ),					?-=?( volatile char *, char );
+char signed		?-=?( char signed *, char signed ),			?-=?( volatile char signed *, char signed );
+char unsigned		?-=?( char unsigned *, char unsigned ),			?-=?( volatile char unsigned *, char unsigned );
+int short		?-=?( int short *, int short ),				?-=?( volatile int short *, int short );
+int short unsigned	?-=?( int short unsigned *, int short unsigned ),	?-=?( volatile int short unsigned *, int short unsigned );
+signed int		?-=?( signed int *, signed int ),			?-=?( volatile signed int *, signed int );
+unsigned int		?-=?( unsigned *, unsigned ),				?-=?( volatile unsigned *, unsigned );
+signed long int		?-=?( signed long int *, signed long int ),		?-=?( volatile signed long int *, signed long int );
+unsigned long int	?-=?( unsigned long int *, unsigned long int ),		?-=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?-=?( signed long long int *, signed long long int ),	?-=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?-=?( unsigned long long int *, unsigned long long int ), ?-=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?<<=?( _Bool *, _Bool ),				?<<=?( volatile _Bool *, _Bool );
+char			?<<=?( char *, char ),					?<<=?( volatile char *, char );
+char signed		?<<=?( char signed *, char signed ),			?<<=?( volatile char signed *, char signed );
+char unsigned		?<<=?( char unsigned *, char unsigned ),		?<<=?( volatile char unsigned *, char unsigned );
+int short		?<<=?( int short *, int short ),			?<<=?( volatile int short *, int short );
+int short unsigned	?<<=?( int short unsigned *, int short unsigned ),	?<<=?( volatile int short unsigned *, int short unsigned );
+signed int		?<<=?( signed int *, signed int ),			?<<=?( volatile signed int *, signed int );
+unsigned int		?<<=?( unsigned *, unsigned ),				?<<=?( volatile unsigned *, unsigned );
+signed long int		?<<=?( signed long int *, signed long int ),		?<<=?( volatile signed long int *, signed long int );
+unsigned long int	?<<=?( unsigned long int *, unsigned long int ),	?<<=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?<<=?( signed long long int *, signed long long int ),	?<<=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?<<=?( unsigned long long int *, unsigned long long int ), ?<<=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?>>=?( _Bool *, _Bool ),				?>>=?( volatile _Bool *, _Bool );
+char			?>>=?( char *, char ),					?>>=?( volatile char *, char );
+char signed		?>>=?( char signed *, char signed ),			?>>=?( volatile char signed *, char signed );
+char unsigned		?>>=?( char unsigned *, char unsigned ),		?>>=?( volatile char unsigned *, char unsigned );
+int short		?>>=?( int short *, int short ),			?>>=?( volatile int short *, int short );
+int short unsigned	?>>=?( int short unsigned *, int short unsigned ),	?>>=?( volatile int short unsigned *, int short unsigned );
+signed int		?>>=?( signed int *, signed int ),			?>>=?( volatile signed int *, signed int );
+unsigned int		?>>=?( unsigned *, unsigned ),				?>>=?( volatile unsigned *, unsigned );
+signed long int		?>>=?( signed long int *, signed long int ),		?>>=?( volatile signed long int *, signed long int );
+unsigned long int	?>>=?( unsigned long int *, unsigned long int ),	?>>=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?>>=?( signed long long int *, signed long long int ),	?>>=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?>>=?( unsigned long long int *, unsigned long long int ), ?>>=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?&=?( _Bool *, _Bool ),					?&=?( volatile _Bool *, _Bool );
+char			?&=?( char *, char ),					?&=?( volatile char *, char );
+char signed		?&=?( char signed *, char signed ),			?&=?( volatile char signed *, char signed );
+char unsigned		?&=?( char unsigned *, char unsigned ),			?&=?( volatile char unsigned *, char unsigned );
+int short		?&=?( int short *, int short ),				?&=?( volatile int short *, int short );
+int short unsigned	?&=?( int short unsigned *, int short unsigned ),	?&=?( volatile int short unsigned *, int short unsigned );
+signed int		?&=?( signed int *, signed int ),			?&=?( volatile signed int *, signed int );
+unsigned int		?&=?( unsigned *, unsigned ),				?&=?( volatile unsigned *, unsigned );
+signed long int		?&=?( signed long int *, signed long int ),		?&=?( volatile signed long int *, signed long int );
+unsigned long int	?&=?( unsigned long int *, unsigned long int ),		?&=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?&=?( signed long long int *, signed long long int ),	?&=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?&=?( unsigned long long int *, unsigned long long int ), ?&=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?|=?( _Bool *, _Bool ),					?|=?( volatile _Bool *, _Bool );
+char			?|=?( char *, char ),					?|=?( volatile char *, char );
+char signed		?|=?( char signed *, char signed ),			?|=?( volatile char signed *, char signed );
+char unsigned		?|=?( char unsigned *, char unsigned ),			?|=?( volatile char unsigned *, char unsigned );
+int short		?|=?( int short *, int short ),				?|=?( volatile int short *, int short );
+int short unsigned	?|=?( int short unsigned *, int short unsigned ),	?|=?( volatile int short unsigned *, int short unsigned );
+signed int		?|=?( signed int *, signed int ),			?|=?( volatile signed int *, signed int );
+unsigned int		?|=?( unsigned *, unsigned ),				?|=?( volatile unsigned *, unsigned );
+signed long int		?|=?( signed long int *, signed long int ),		?|=?( volatile signed long int *, signed long int );
+unsigned long int	?|=?( unsigned long int *, unsigned long int ),		?|=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?|=?( signed long long int *, signed long long int ),	?|=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?|=?( unsigned long long int *, unsigned long long int ), ?|=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?^=?( _Bool *, _Bool ),					?^=?( volatile _Bool *, _Bool );
+char			?^=?( char *, char ),					?^=?( volatile char *, char );
+char signed		?^=?( char signed *, char signed ),			?^=?( volatile char signed *, char signed );
+char unsigned		?^=?( char unsigned *, char unsigned ),			?^=?( volatile char unsigned *, char unsigned );
+int short		?^=?( int short *, int short ),				?^=?( volatile int short *, int short );
+int short unsigned	?^=?( int short unsigned *, int short unsigned ),	?^=?( volatile int short unsigned *, int short unsigned );
+signed int		?^=?( signed int *, signed int ),			?^=?( volatile signed int *, signed int );
+unsigned int		?^=?( unsigned *, unsigned ),				?^=?( volatile unsigned *, unsigned );
+signed long int		?^=?( signed long int *, signed long int ),		?^=?( volatile signed long int *, signed long int );
+unsigned long int	?^=?( unsigned long int *, unsigned long int ),		?^=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?^=?( signed long long int *, signed long long int ),	?^=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?^=?( unsigned long long int *, unsigned long long int ), ?^=?( volatile unsigned long long int *, unsigned long long int );
+
+float			?=?(  float *, float ), ?=?(  volatile float *, float ),
+			?*=?( float *, float ), ?*=?( volatile float *, float ),
+			?/=?( float *, float ), ?/=?( volatile float *, float ),
+			?+=?( float *, float ), ?+=?( volatile float *, float ),
+			?-=?( float *, float ), ?-=?( volatile float *, float );
+
+double			?=?(  double *, double ), ?=?(  volatile double *, double ),
+			?*=?( double *, double ), ?*=?( volatile double *, double ),
+			?/=?( double *, double ), ?/=?( volatile double *, double ),
+			?+=?( double *, double ), ?+=?( volatile double *, double ),
+			?-=?( double *, double ), ?-=?( volatile double *, double );
+
+long double		?=?(  long double *, long double ), ?=?(  volatile long double *, long double ),
+			?*=?( long double *, long double ), ?*=?( volatile long double *, long double ),
+			?/=?( long double *, long double ), ?/=?( volatile long double *, long double ),
+			?+=?( long double *, long double ), ?+=?( volatile long double *, long double ),
+			?-=?( long double *, long double ), ?-=?( volatile long double *, long double );
+
+float _Complex		?=?(  float _Complex *, float _Complex ), ?=?(  volatile float _Complex *, float _Complex ),
+			?*=?( float _Complex *, float _Complex ), ?*=?( volatile float _Complex *, float _Complex ),
+			?/=?( float _Complex *, float _Complex ), ?/=?( volatile float _Complex *, float _Complex ),
+			?+=?( float _Complex *, float _Complex ), ?+=?( volatile float _Complex *, float _Complex ),
+			?-=?( float _Complex *, float _Complex ), ?-=?( volatile float _Complex *, float _Complex );
+
+double _Complex		?=?(  double _Complex *, double _Complex ), ?=?(  volatile double _Complex *, double _Complex ),
+			?*=?( double _Complex *, double _Complex ), ?*=?( volatile double _Complex *, double _Complex ),
+			?/=?( double _Complex *, double _Complex ), ?/=?( volatile double _Complex *, double _Complex ),
+			?+=?( double _Complex *, double _Complex ), ?+=?( volatile double _Complex *, double _Complex ),
+			?-=?( double _Complex *, double _Complex ), ?-=?( volatile double _Complex *, double _Complex );
+
+long double _Complex	?=?(  long double _Complex *, long double _Complex ), ?=?(  volatile long double _Complex *, long double _Complex ),
+			?*=?( long double _Complex *, long double _Complex ), ?*=?( volatile long double _Complex *, long double _Complex ),
+			?/=?( long double _Complex *, long double _Complex ), ?/=?( volatile long double _Complex *, long double _Complex ),
+			?+=?( long double _Complex *, long double _Complex ), ?+=?( volatile long double _Complex *, long double _Complex ),
+			?-=?( long double _Complex *, long double _Complex ), ?-=?( volatile long double _Complex *, long double _Complex );
+
+
+
+
+
+// ------------------------------------------------------------
+//
+// Section ??? Constructors and Destructors
+//
+// ------------------------------------------------------------
+
+// default ctor
+void	?{}( _Bool * );
+void	?{}( char * );
+void	?{}( unsigned char * );
+void	?{}( char signed * );
+void	?{}( int short * );
+void	?{}( int short unsigned * );
+void	?{}( signed int * );
+void	?{}( unsigned int * );
+void	?{}( signed long int * );
+void	?{}( unsigned long int * );
+void	?{}( signed long long int * );
+void	?{}( unsigned long long int * );
+void	?{}( float * );
+void	?{}( double * );
+void	?{}( long double * );
+void	?{}( float _Complex * );
+void	?{}( double _Complex * );
+void	?{}( long double _Complex * );
+void	?{}( zero_t * );
+void	?{}( one_t * );
+
+// copy ctor
+void	?{}( _Bool *, _Bool );
+void	?{}( char *, char );
+void	?{}( unsigned char *, unsigned char );
+void	?{}( char signed *, char signed );
+void	?{}( int short *, int short );
+void	?{}( int short unsigned *, int short unsigned );
+void	?{}( signed int *, signed int);
+void	?{}( unsigned int *, unsigned int);
+void	?{}( signed long int *, signed long int);
+void	?{}( unsigned long int *, unsigned long int);
+void	?{}( signed long long int *, signed long long int);
+void	?{}( unsigned long long int *, unsigned long long int);
+void	?{}( float *, float);
+void	?{}( double *, double);
+void	?{}( long double *, long double);
+void	?{}( float _Complex *, float _Complex);
+void	?{}( double _Complex *, double _Complex);
+void	?{}( long double _Complex *, long double _Complex);
+void	?{}( zero_t *, zero_t );
+void	?{}( one_t *, one_t );
+
+// dtor
+void	^?{}( _Bool * );
+void	^?{}( char * );
+void	^?{}( char unsigned * );
+void	^?{}( char signed * );
+void	^?{}( int short * );
+void	^?{}( int short unsigned * );
+void	^?{}( signed int * );
+void	^?{}( unsigned int * );
+void	^?{}( signed long int * );
+void	^?{}( unsigned long int * );
+void	^?{}( signed long long int * );
+void	^?{}( unsigned long long int * );
+void	^?{}( float * );
+void	^?{}( double * );
+void	^?{}( long double * );
+void	^?{}( float _Complex * );
+void	^?{}( double _Complex * );
+void	^?{}( long double _Complex * );
+void	^?{}( zero_t * );
+void	^?{}( one_t * );
+
+// // default ctor
+// forall( dtype DT ) void	 ?{}(		     DT ** );
+// forall( dtype DT ) void	 ?{}( const	     DT ** );
+// forall( dtype DT ) void	 ?{}(	    volatile DT ** );
+// forall( dtype DT ) void	 ?{}( const volatile DT ** );
+
+// // copy ctor
+// forall( dtype DT ) void	 ?{}(		     DT **, DT* );
+// forall( dtype DT ) void	 ?{}( const	     DT **, DT* );
+// forall( dtype DT ) void	 ?{}(	    volatile DT **, DT* );
+// forall( dtype DT ) void	 ?{}( const volatile DT **, DT* );
+
+// // dtor
+// forall( dtype DT ) void	^?{}(		     DT ** );
+// forall( dtype DT ) void	^?{}( const	     DT ** );
+// forall( dtype DT ) void	^?{}(	    volatile DT ** );
+// forall( dtype DT ) void	^?{}( const volatile DT ** );
+
+// copied from assignment section
+// copy constructors
+forall( ftype FT ) void ?{}( FT **, FT * );
+forall( ftype FT ) void ?{}( FT * volatile *, FT * );
+
+forall( dtype DT ) void ?{}(		     DT *	   *,			DT * );
+forall( dtype DT ) void ?{}( const	     DT *	   *,			DT * );
+forall( dtype DT ) void ?{}( const	     DT *	   *, const		DT * );
+forall( dtype DT ) void ?{}(	   volatile  DT *	   *,			DT * );
+forall( dtype DT ) void ?{}(	   volatile  DT *	   *,	    volatile	DT * );
+
+forall( dtype DT ) void ?{}( const volatile  DT *	   *,			DT * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   *, const		DT * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   *,	    volatile	DT * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   *, const volatile	DT * );
+
+forall( dtype DT ) void ?{}(		     DT *	   *,			void * );
+forall( dtype DT ) void ?{}( const	     DT *	   *,			void * );
+forall( dtype DT ) void ?{}( const	     DT *	   *, const		void * );
+forall( dtype DT ) void ?{}(	   volatile  DT *	   *,			void * );
+forall( dtype DT ) void ?{}(	   volatile  DT *	   *,	    volatile	void * );
+
+forall( dtype DT ) void ?{}( const volatile  DT *	   *,			void * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   *, const		void * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   *,	    volatile	void * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   *, const volatile	void * );
+
+forall( dtype DT ) void ?{}(		     void *	     *,			DT * );
+forall( dtype DT ) void ?{}( const	     void *	     *,			DT * );
+forall( dtype DT ) void ?{}( const	     void *	     *, const		DT * );
+forall( dtype DT ) void ?{}(	    volatile void *	     *,			DT * );
+forall( dtype DT ) void ?{}(	    volatile void *	     *,	      volatile	DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     *,			DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     *, const		DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     *,	      volatile	DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     *, const volatile	DT * );
+
+void 	?{}(		    void *	    *,		      void * );
+void 	?{}( const	    void *	    *,		      void * );
+void 	?{}( const	    void *	    *, const	      void * );
+void 	?{}(	   volatile void *	    *,		      void * );
+void 	?{}(	   volatile void *	    *,	     volatile void * );
+void 	?{}( const volatile void *	    *,		      void * );
+void 	?{}( const volatile void *	    *, const	      void * );
+void 	?{}( const volatile void *	    *,	     volatile void * );
+void 	?{}( const volatile void *	    *, const volatile void * );
+
+//forall( dtype DT ) void ?{}(		    DT *	  *, forall( dtype DT2 ) const DT2 * );
+//forall( dtype DT ) void ?{}(		    DT * volatile *, forall( dtype DT2 ) const DT2 * );
+forall( dtype DT ) void ?{}( const	    DT *	  *, forall( dtype DT2 ) const DT2 * );
+//forall( dtype DT ) void ?{}( volatile	    DT *	  *, forall( dtype DT2 ) const DT2 * );
+//forall( dtype DT ) void ?{}( volatile	    DT * volatile *, forall( dtype DT2 ) const DT2 * );
+forall( dtype DT ) void ?{}( const volatile DT *	  *, forall( dtype DT2 ) const DT2 * );
+
+forall( ftype FT ) void	?{}( FT *	   *, forall( ftype FT2 ) FT2 * );
+
+// default ctors
+forall( ftype FT ) void	?{}( FT *	   * );
+
+forall( dtype DT ) void	?{}(		     DT *	   *);
+forall( dtype DT ) void	?{}( const	     DT *	   *);
+forall( dtype DT ) void	?{}(	   volatile  DT *	   *);
+forall( dtype DT ) void ?{}( const volatile  DT *	   *);
+
+void 	?{}(		    void *	    *);
+void 	?{}( const	    void *	    *);
+void 	?{}(	   volatile void *	    *);
+void 	?{}( const volatile void *	    *);
+
+// dtors
+forall( ftype FT ) void	^?{}( FT *	   * );
+
+forall( dtype DT ) void	^?{}(		     DT *	   *);
+forall( dtype DT ) void	^?{}( const	     DT *	   *);
+forall( dtype DT ) void	^?{}(	   volatile  DT *	   *);
+forall( dtype DT ) void ^?{}( const volatile  DT *	   *);
+
+void 	^?{}(		    void *	    *);
+void 	^?{}( const	    void *	    *);
+void 	^?{}(	   volatile void *	    *);
+void 	^?{}( const volatile void *	    *);
+
+// Local Variables: //
+// mode: c //
+// tab-width: 8 //
+// End: //
Index: src/prelude/prototypes.awk
===================================================================
--- src/prelude/prototypes.awk	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/prelude/prototypes.awk	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,135 @@
+#
+# Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+#
+# The contents of this file are covered under the licence agreement in the
+# file "LICENCE" distributed with Cforall.
+#
+# prototypes.awk -- 
+#
+# Author           : Peter A. Buhr
+# Created On       : Sat May 16 07:57:37 2015
+# Last Modified By : Peter A. Buhr
+# Last Modified On : Tue Jul  5 14:32:52 2016
+# Update Count     : 32
+# 
+
+# http://llvm.org/svn/llvm-project/cfe/trunk/include/clang/Basic/Builtins.def
+
+BEGIN {
+    FS = "("
+    # order so string search is longest string
+    types[0]  = "UINTMAX";					vtypes[0]  = "unsigned long int"
+    types[1]  = "UINT16";					vtypes[1]  = "short int"
+    types[2]  = "UINT32";					vtypes[2]  = "int"
+    types[3]  = "UINT64";					vtypes[3]  = "long long int"
+    types[4]  = "UINT";						vtypes[4]  = "unsigned int"
+    types[5]  = "INTMAX";					vtypes[5]  = "long int"
+    types[6]  = "INTPTR";					vtypes[6]  = "int *"
+    types[7]  = "WINT";						vtypes[7]  = "unsigned int"
+    types[8]  = "INT";						vtypes[8]  = "int"
+    types[9]  = "ULONGLONG";				vtypes[9]  = "unsigned long long"
+    types[10] = "ULONG";					vtypes[10] = "unsigned long"
+    types[11] = "UNSIGNED";					vtypes[11] = "unsigned"
+    types[12] = "COMPLEX_LONGDOUBLE";		vtypes[12] = "_Complex long double"
+    types[13] = "COMPLEX_DOUBLE";			vtypes[13] = "_Complex double"
+    types[14] = "COMPLEX_FLOAT";			vtypes[14] = "_Complex float"
+    types[15] = "LONGDOUBLEPTR";			vtypes[15] = "long double *"
+    types[16] = "LONGDOUBLE";				vtypes[16] = "long double"
+    types[17] = "LONGLONG";					vtypes[17] = "long long"
+    types[18] = "LONG";						vtypes[18] = "long"
+    types[19] = "DFLOAT32";					vtypes[19] = "_Decimal32"
+    types[20] = "DFLOAT64";					vtypes[20] = "_Decimal64"
+    types[21] = "DFLOAT128";				vtypes[21] = "_Decimal128"
+    types[22] = "DOUBLEPTR";				vtypes[22] = "double *"
+    types[23] = "DOUBLE";					vtypes[23] = "double"
+    types[24] = "FLOATPTR";					vtypes[24] = "float *"
+    types[25] = "FLOAT";					vtypes[25] = "float"
+    types[26] = "CONST_PTR";				vtypes[26] = "const void *"
+    types[27] = "CONST_STRING";				vtypes[27] = "const char *"
+    types[28] = "PTR_FN_VOID_VAR_PTR_SIZE";	vtypes[28] = ""
+    types[29] = "PTR_CONST_STRING";			vtypes[29] = "char *const"
+    types[30] = "PTRMODE_PTR";				vtypes[30] = ""
+    types[31] = "PTRPTR";					vtypes[31] = "void **"
+    types[32] = "PTR";						vtypes[32] = "void *"
+    types[33] = "VOID";						vtypes[33] = "void"
+    types[34] = "STRING";					vtypes[34] = "char *"
+    types[35] = "FILEPTR";					vtypes[35] = "struct _IO_FILE *"
+    types[36] = "SIZE";						vtypes[36] = "unsigned long"
+    types[37] = "VAR";						vtypes[37] = "..."
+    types[38] = "VALIST_ARG";				vtypes[38] = "__builtin_va_list"
+    types[39] = "VALIST_REF";				vtypes[39] = "__builtin_va_list"
+    types[40] = "UNWINDWORD";				vtypes[40] = "void *"
+    types[41] = "WORD";						vtypes[41] = ""
+    types[42] = "SSIZE";					vtypes[42] = "long int"
+    types[43] = "PID";						vtypes[43] = "int"
+    N = 44
+} # BEGIN
+
+/^BT_/ { prototypes[$1] = $1 }
+
+END {
+    printf( "#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)\n" );
+    printf( "#define FUNC_SIMPLE(RETURN, NAME, ARGS...) RETURN NAME(ARGS);\n" );
+    printf( "#define BT_LAST(NAME) FUNC_SIMPLE(void, NAME)\n\n" );
+
+    # generate C types for macros names
+    for ( i = 0; i < N; i += 1 ) {
+		printf( "#define BT_%s %s\n", types[i], vtypes[i] )
+    } # for
+    printf( "\n" )
+
+    for ( prototype in prototypes ) {
+		if ( index( "BT_LAST", prototype ) == 1 ) {
+			continue
+		} # if
+
+		printf( "#define %s(NAME) FUNC_SIMPLE(", prototype )
+
+		if ( sub( "BT_FN_", "", prototype ) == 0 ) {
+			printf( "\n********** BAD MACRO NAME \"%s\" **********\n", prototype )
+			exit 0
+		} # if
+
+		# generate function return type as macro
+		for ( t = 0; t < N; t += 1 ) {					# find longest match 
+			type = types[t];
+			if ( index( prototype, type ) == 1 ) {		# found match
+				printf( "BT_%s, NAME", type )
+				sub( type, "", prototype )
+				break;
+			} # if
+		} # for
+
+		# generate function parameter types as macro
+		if ( index( prototype, "VAR" ) != 2 ) {			# C-style empty parameters ?
+			for ( p = 0; length( prototype ) > 0; p += 1 ) { # until all parameters types are removed
+				sub( "_", "", prototype)				# remove "_"
+				printf( ", ", type )
+				temp = prototype
+				for ( t = 0; t < N; t += 1 ) {			# find longest match
+					type = types[t];
+					if ( index( prototype, type ) == 1 ) { # found match
+						printf( "BT_%s", type )
+						sub( type, "", prototype )
+						break;
+					} # if
+				} # for
+				if ( temp == prototype ) {				# no match found for parameter in macro table
+					printf( "\n********** MISSING TYPE \"%s\" **********\n", prototype )
+					exit 0
+				} # if
+			} # for
+		} # if
+		printf( ")\n" )
+    } # for
+
+	# extras
+	printf( "\n#include \"builtins.def\"\n\n" );
+	printf( "extern const char *__PRETTY_FUNCTION__;\n" );
+} # END
+
+# Local Variables: #
+# tab-width: 4 #
+# mode: awk #
+# compile-command: "make install" #
+# End: #
Index: src/prelude/prototypes.c
===================================================================
--- src/prelude/prototypes.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/prelude/prototypes.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,2 @@
+#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)
+#include "builtins.def"
Index: src/tests/.expect/32/declarationSpecifier.txt
===================================================================
--- src/tests/.expect/32/declarationSpecifier.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/32/declarationSpecifier.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -20,16 +20,16 @@
 static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
 static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1);
+static inline void ___constructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))=___src__13s__anonymous0_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
     ((void)((*___dst__P13s__anonymous0_1).__i__i_1=___src__13s__anonymous0_1.__i__i_1));
     return ((struct __anonymous0 )___src__13s__anonymous0_1);
-}
-static inline void ___constructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))=___src__13s__anonymous0_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P13s__anonymous0i_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, int __i__i_1){
@@ -44,16 +44,16 @@
 static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1);
 static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1);
+static inline void ___constructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))=___src__13s__anonymous1_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous1 ___operator_assign__F13s__anonymous1_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
     ((void)((*___dst__P13s__anonymous1_1).__i__i_1=___src__13s__anonymous1_1.__i__i_1));
     return ((struct __anonymous1 )___src__13s__anonymous1_1);
-}
-static inline void ___constructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))=___src__13s__anonymous1_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P13s__anonymous1i_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, int __i__i_1){
@@ -68,16 +68,16 @@
 static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
 static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1);
+static inline void ___constructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))=___src__13s__anonymous2_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
     ((void)((*___dst__P13s__anonymous2_1).__i__i_1=___src__13s__anonymous2_1.__i__i_1));
     return ((struct __anonymous2 )___src__13s__anonymous2_1);
-}
-static inline void ___constructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))=___src__13s__anonymous2_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P13s__anonymous2i_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, int __i__i_1){
@@ -92,16 +92,16 @@
 static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1);
 static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1);
+static inline void ___constructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))=___src__13s__anonymous3_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous3 ___operator_assign__F13s__anonymous3_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
     ((void)((*___dst__P13s__anonymous3_1).__i__i_1=___src__13s__anonymous3_1.__i__i_1));
     return ((struct __anonymous3 )___src__13s__anonymous3_1);
-}
-static inline void ___constructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))=___src__13s__anonymous3_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P13s__anonymous3i_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, int __i__i_1){
@@ -116,16 +116,16 @@
 static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1);
 static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1);
+static inline void ___constructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))=___src__13s__anonymous4_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous4 ___operator_assign__F13s__anonymous4_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
     ((void)((*___dst__P13s__anonymous4_1).__i__i_1=___src__13s__anonymous4_1.__i__i_1));
     return ((struct __anonymous4 )___src__13s__anonymous4_1);
-}
-static inline void ___constructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))=___src__13s__anonymous4_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P13s__anonymous4i_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, int __i__i_1){
@@ -140,16 +140,16 @@
 static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1);
 static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1);
+static inline void ___constructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))=___src__13s__anonymous5_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous5 ___operator_assign__F13s__anonymous5_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
     ((void)((*___dst__P13s__anonymous5_1).__i__i_1=___src__13s__anonymous5_1.__i__i_1));
     return ((struct __anonymous5 )___src__13s__anonymous5_1);
-}
-static inline void ___constructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))=___src__13s__anonymous5_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P13s__anonymous5i_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, int __i__i_1){
@@ -164,16 +164,16 @@
 static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1);
 static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1);
+static inline void ___constructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))=___src__13s__anonymous6_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous6 ___operator_assign__F13s__anonymous6_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
     ((void)((*___dst__P13s__anonymous6_1).__i__i_1=___src__13s__anonymous6_1.__i__i_1));
     return ((struct __anonymous6 )___src__13s__anonymous6_1);
-}
-static inline void ___constructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))=___src__13s__anonymous6_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P13s__anonymous6i_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, int __i__i_1){
@@ -188,16 +188,16 @@
 static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1);
 static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1);
+static inline void ___constructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))=___src__13s__anonymous7_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous7 ___operator_assign__F13s__anonymous7_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
     ((void)((*___dst__P13s__anonymous7_1).__i__i_1=___src__13s__anonymous7_1.__i__i_1));
     return ((struct __anonymous7 )___src__13s__anonymous7_1);
-}
-static inline void ___constructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))=___src__13s__anonymous7_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
-    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P13s__anonymous7i_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, int __i__i_1){
@@ -220,16 +220,16 @@
 static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1);
 static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1);
+static inline void ___constructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))=___src__13s__anonymous8_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ^?{} */);
+}
 static inline struct __anonymous8 ___operator_assign__F13s__anonymous8_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
     ((void)((*___dst__P13s__anonymous8_1).__i__s_1=___src__13s__anonymous8_1.__i__s_1));
     return ((struct __anonymous8 )___src__13s__anonymous8_1);
-}
-static inline void ___constructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
-    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
-    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))=___src__13s__anonymous8_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
-    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P13s__anonymous8s_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, short __i__s_1){
@@ -244,16 +244,16 @@
 static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1);
 static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1);
+static inline void ___constructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))=___src__13s__anonymous9_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ^?{} */);
+}
 static inline struct __anonymous9 ___operator_assign__F13s__anonymous9_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
     ((void)((*___dst__P13s__anonymous9_1).__i__s_1=___src__13s__anonymous9_1.__i__s_1));
     return ((struct __anonymous9 )___src__13s__anonymous9_1);
-}
-static inline void ___constructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
-    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
-    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))=___src__13s__anonymous9_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
-    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P13s__anonymous9s_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, short __i__s_1){
@@ -268,16 +268,16 @@
 static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1);
 static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1);
+static inline void ___constructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))=___src__14s__anonymous10_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ^?{} */);
+}
 static inline struct __anonymous10 ___operator_assign__F14s__anonymous10_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
     ((void)((*___dst__P14s__anonymous10_1).__i__s_1=___src__14s__anonymous10_1.__i__s_1));
     return ((struct __anonymous10 )___src__14s__anonymous10_1);
-}
-static inline void ___constructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))=___src__14s__anonymous10_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous10s_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, short __i__s_1){
@@ -292,16 +292,16 @@
 static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1);
 static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1);
+static inline void ___constructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))=___src__14s__anonymous11_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ^?{} */);
+}
 static inline struct __anonymous11 ___operator_assign__F14s__anonymous11_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
     ((void)((*___dst__P14s__anonymous11_1).__i__s_1=___src__14s__anonymous11_1.__i__s_1));
     return ((struct __anonymous11 )___src__14s__anonymous11_1);
-}
-static inline void ___constructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))=___src__14s__anonymous11_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous11s_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, short __i__s_1){
@@ -316,16 +316,16 @@
 static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1);
 static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1);
+static inline void ___constructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))=___src__14s__anonymous12_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ^?{} */);
+}
 static inline struct __anonymous12 ___operator_assign__F14s__anonymous12_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
     ((void)((*___dst__P14s__anonymous12_1).__i__s_1=___src__14s__anonymous12_1.__i__s_1));
     return ((struct __anonymous12 )___src__14s__anonymous12_1);
-}
-static inline void ___constructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))=___src__14s__anonymous12_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous12s_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, short __i__s_1){
@@ -340,16 +340,16 @@
 static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1);
 static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1);
+static inline void ___constructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))=___src__14s__anonymous13_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ^?{} */);
+}
 static inline struct __anonymous13 ___operator_assign__F14s__anonymous13_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
     ((void)((*___dst__P14s__anonymous13_1).__i__s_1=___src__14s__anonymous13_1.__i__s_1));
     return ((struct __anonymous13 )___src__14s__anonymous13_1);
-}
-static inline void ___constructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))=___src__14s__anonymous13_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous13s_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, short __i__s_1){
@@ -364,16 +364,16 @@
 static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1);
 static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1);
+static inline void ___constructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))=___src__14s__anonymous14_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ^?{} */);
+}
 static inline struct __anonymous14 ___operator_assign__F14s__anonymous14_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
     ((void)((*___dst__P14s__anonymous14_1).__i__s_1=___src__14s__anonymous14_1.__i__s_1));
     return ((struct __anonymous14 )___src__14s__anonymous14_1);
-}
-static inline void ___constructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))=___src__14s__anonymous14_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous14s_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, short __i__s_1){
@@ -388,16 +388,16 @@
 static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1);
 static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1);
+static inline void ___constructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))=___src__14s__anonymous15_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ^?{} */);
+}
 static inline struct __anonymous15 ___operator_assign__F14s__anonymous15_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
     ((void)((*___dst__P14s__anonymous15_1).__i__s_1=___src__14s__anonymous15_1.__i__s_1));
     return ((struct __anonymous15 )___src__14s__anonymous15_1);
-}
-static inline void ___constructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))=___src__14s__anonymous15_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
-    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous15s_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, short __i__s_1){
@@ -428,16 +428,16 @@
 static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1);
 static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1);
+static inline void ___constructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))=___src__14s__anonymous16_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous16 ___operator_assign__F14s__anonymous16_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
     ((void)((*___dst__P14s__anonymous16_1).__i__i_1=___src__14s__anonymous16_1.__i__i_1));
     return ((struct __anonymous16 )___src__14s__anonymous16_1);
-}
-static inline void ___constructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))=___src__14s__anonymous16_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous16i_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, int __i__i_1){
@@ -452,16 +452,16 @@
 static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1);
 static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1);
+static inline void ___constructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))=___src__14s__anonymous17_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous17 ___operator_assign__F14s__anonymous17_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
     ((void)((*___dst__P14s__anonymous17_1).__i__i_1=___src__14s__anonymous17_1.__i__i_1));
     return ((struct __anonymous17 )___src__14s__anonymous17_1);
-}
-static inline void ___constructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))=___src__14s__anonymous17_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous17i_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, int __i__i_1){
@@ -476,16 +476,16 @@
 static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1);
 static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1);
+static inline void ___constructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))=___src__14s__anonymous18_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous18 ___operator_assign__F14s__anonymous18_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
     ((void)((*___dst__P14s__anonymous18_1).__i__i_1=___src__14s__anonymous18_1.__i__i_1));
     return ((struct __anonymous18 )___src__14s__anonymous18_1);
-}
-static inline void ___constructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))=___src__14s__anonymous18_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous18i_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, int __i__i_1){
@@ -500,16 +500,16 @@
 static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1);
 static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1);
+static inline void ___constructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))=___src__14s__anonymous19_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous19 ___operator_assign__F14s__anonymous19_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
     ((void)((*___dst__P14s__anonymous19_1).__i__i_1=___src__14s__anonymous19_1.__i__i_1));
     return ((struct __anonymous19 )___src__14s__anonymous19_1);
-}
-static inline void ___constructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))=___src__14s__anonymous19_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous19i_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, int __i__i_1){
@@ -524,16 +524,16 @@
 static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1);
 static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1);
+static inline void ___constructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))=___src__14s__anonymous20_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous20 ___operator_assign__F14s__anonymous20_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
     ((void)((*___dst__P14s__anonymous20_1).__i__i_1=___src__14s__anonymous20_1.__i__i_1));
     return ((struct __anonymous20 )___src__14s__anonymous20_1);
-}
-static inline void ___constructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))=___src__14s__anonymous20_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous20i_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, int __i__i_1){
@@ -548,16 +548,16 @@
 static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1);
 static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1);
+static inline void ___constructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))=___src__14s__anonymous21_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous21 ___operator_assign__F14s__anonymous21_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
     ((void)((*___dst__P14s__anonymous21_1).__i__i_1=___src__14s__anonymous21_1.__i__i_1));
     return ((struct __anonymous21 )___src__14s__anonymous21_1);
-}
-static inline void ___constructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))=___src__14s__anonymous21_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous21i_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, int __i__i_1){
@@ -572,16 +572,16 @@
 static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1);
 static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1);
+static inline void ___constructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))=___src__14s__anonymous22_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous22 ___operator_assign__F14s__anonymous22_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
     ((void)((*___dst__P14s__anonymous22_1).__i__i_1=___src__14s__anonymous22_1.__i__i_1));
     return ((struct __anonymous22 )___src__14s__anonymous22_1);
-}
-static inline void ___constructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))=___src__14s__anonymous22_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous22i_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, int __i__i_1){
@@ -596,16 +596,16 @@
 static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1);
 static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1);
+static inline void ___constructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))=___src__14s__anonymous23_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ^?{} */);
+}
 static inline struct __anonymous23 ___operator_assign__F14s__anonymous23_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
     ((void)((*___dst__P14s__anonymous23_1).__i__i_1=___src__14s__anonymous23_1.__i__i_1));
     return ((struct __anonymous23 )___src__14s__anonymous23_1);
-}
-static inline void ___constructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ?{} */);
-}
-static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))=___src__14s__anonymous23_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
-    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ^?{} */);
 }
 static inline void ___constructor__F_P14s__anonymous23i_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, int __i__i_1){
@@ -622,6 +622,6 @@
 static inline volatile const short __f48__FCVs___1();
 int main(int __argc__i_1, const char **__argv__PPCc_1){
-    int _retVal0 = { 0 };
-    ((void)(_retVal0=0) /* ?{} */);
-    return ((int )_retVal0);
-}
+    int ___retval_main__i_1;
+    ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
+    return ((int )___retval_main__i_1);
+}
Index: src/tests/.expect/32/extension.txt
===================================================================
--- src/tests/.expect/32/extension.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/32/extension.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -61,20 +61,14 @@
 }
 static inline void ___constructor__F_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
-    void *_tmp_cp_ret0;
-    ((void)((_tmp_cp_ret0=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret0));
-    ((void)(_tmp_cp_ret0) /* ^?{} */);
+    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
 }
 static inline void ___destructor__F_P2uU_autogen___1(union U *___dst__P2uU_1){
 }
 static inline union U ___operator_assign__F2uU_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
-    void *_tmp_cp_ret1;
-    ((void)((_tmp_cp_ret1=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret1));
-    ((void)(_tmp_cp_ret1) /* ^?{} */);
+    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
     return ((union U )___src__2uU_1);
 }
 static inline void ___constructor__F_P2uUi_autogen___1(union U *___dst__P2uU_1, int __src__i_1){
-    void *_tmp_cp_ret2;
-    ((void)((_tmp_cp_ret2=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int ))) , _tmp_cp_ret2));
-    ((void)(_tmp_cp_ret2) /* ^?{} */);
+    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int )));
 }
 __extension__ enum E {
@@ -97,12 +91,12 @@
     __extension__ int __c__i_2;
     ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
-    int _tmp_cp_ret3;
-    ((void)((_tmp_cp_ret3=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret3));
-    ((void)(_tmp_cp_ret3) /* ^?{} */);
+    int _tmp_cp_ret0;
+    ((void)((_tmp_cp_ret0=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret0));
+    ((void)(_tmp_cp_ret0) /* ^?{} */);
     ((void)__extension__ sizeof(3));
-    ((void)__extension__ (((int )(3!=0)) || ((int )(4!=0))));
+    ((void)__extension__ (((int )(3!=((int )0))) || ((int )(4!=((int )0)))));
     ((void)__extension__ __alignof__(__extension__ __a__i_2));
-    ((void)(((int )(__extension__ __a__i_2!=0)) || ((int )((((int )(__extension__ __b__i_2!=0)) && ((int )(__extension__ __c__i_2!=0)))!=0))));
-    ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=0)) ? __extension__ __c__i_2 : __extension__ __c__i_2));
+    ((void)(((int )(__extension__ __a__i_2!=((int )0))) || ((int )((((int )(__extension__ __b__i_2!=((int )0))) && ((int )(__extension__ __c__i_2!=((int )0))))!=((int )0)))));
+    ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=((int )0))) ? __extension__ __c__i_2 : __extension__ __c__i_2));
     ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
     ((void)((__extension__ __a__i_2 , __extension__ __b__i_2) , __extension__ __c__i_2));
Index: src/tests/.expect/32/gccExtensions.txt
===================================================================
--- src/tests/.expect/32/gccExtensions.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/32/gccExtensions.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -5,5 +5,5 @@
 extern void exit(int __status);
 extern int printf(const char *__restrict __format, ...);
-extern int __x__i_1;
+extern int __x__i_1 asm ( "xx" );
 int main(int __argc__i_1, const char **__argv__PPCc_1){
     int ___retval_main__i_1;
@@ -11,6 +11,6 @@
     asm ( "nop" :  :  :  );
     asm ( "nop" :  :  :  );
-    static int __y__i_2;
-    static int *__z__Pi_2;
+    static int __y__i_2 asm ( "yy" );
+    static int *__z__Pi_2 asm ( "zz" );
     int __src__i_2;
     int __dst__i_2;
@@ -160,5 +160,5 @@
     int __m2__A0A0i_2[((unsigned int )10)][((unsigned int )10)];
     int __m3__A0A0i_2[((unsigned int )10)][((unsigned int )10)];
-    ((void)(___retval_main__i_1=0) /* ?{} */);
+    ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
     return ((int )___retval_main__i_1);
 }
Index: src/tests/.expect/64/declarationSpecifier.txt
===================================================================
--- src/tests/.expect/64/declarationSpecifier.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/64/declarationSpecifier.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -623,5 +623,5 @@
 int main(int __argc__i_1, const char **__argv__PPCc_1){
     int ___retval_main__i_1;
-    ((void)(___retval_main__i_1=0) /* ?{} */);
+    ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
     return ((int )___retval_main__i_1);
 }
Index: src/tests/.expect/64/extension.txt
===================================================================
--- src/tests/.expect/64/extension.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/64/extension.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -61,20 +61,14 @@
 }
 static inline void ___constructor__F_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
-    void *_tmp_cp_ret0;
-    ((void)((_tmp_cp_ret0=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret0));
-    ((void)(_tmp_cp_ret0) /* ^?{} */);
+    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
 }
 static inline void ___destructor__F_P2uU_autogen___1(union U *___dst__P2uU_1){
 }
 static inline union U ___operator_assign__F2uU_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
-    void *_tmp_cp_ret1;
-    ((void)((_tmp_cp_ret1=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret1));
-    ((void)(_tmp_cp_ret1) /* ^?{} */);
+    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
     return ((union U )___src__2uU_1);
 }
 static inline void ___constructor__F_P2uUi_autogen___1(union U *___dst__P2uU_1, int __src__i_1){
-    void *_tmp_cp_ret2;
-    ((void)((_tmp_cp_ret2=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int ))) , _tmp_cp_ret2));
-    ((void)(_tmp_cp_ret2) /* ^?{} */);
+    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int )));
 }
 __extension__ enum E {
@@ -97,12 +91,12 @@
     __extension__ int __c__i_2;
     ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
-    int _tmp_cp_ret3;
-    ((void)((_tmp_cp_ret3=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret3));
-    ((void)(_tmp_cp_ret3) /* ^?{} */);
+    int _tmp_cp_ret0;
+    ((void)((_tmp_cp_ret0=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret0));
+    ((void)(_tmp_cp_ret0) /* ^?{} */);
     ((void)__extension__ sizeof(3));
-    ((void)__extension__ (((int )(3!=0)) || ((int )(4!=0))));
+    ((void)__extension__ (((int )(3!=((int )0))) || ((int )(4!=((int )0)))));
     ((void)__extension__ __alignof__(__extension__ __a__i_2));
-    ((void)(((int )(__extension__ __a__i_2!=0)) || ((int )((((int )(__extension__ __b__i_2!=0)) && ((int )(__extension__ __c__i_2!=0)))!=0))));
-    ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=0)) ? __extension__ __c__i_2 : __extension__ __c__i_2));
+    ((void)(((int )(__extension__ __a__i_2!=((int )0))) || ((int )((((int )(__extension__ __b__i_2!=((int )0))) && ((int )(__extension__ __c__i_2!=((int )0))))!=((int )0)))));
+    ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=((int )0))) ? __extension__ __c__i_2 : __extension__ __c__i_2));
     ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
     ((void)((__extension__ __a__i_2 , __extension__ __b__i_2) , __extension__ __c__i_2));
Index: src/tests/.expect/64/gccExtensions.txt
===================================================================
--- src/tests/.expect/64/gccExtensions.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/64/gccExtensions.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -5,5 +5,5 @@
 extern void exit(int __status);
 extern int printf(const char *__restrict __format, ...);
-extern int __x__i_1;
+extern int __x__i_1 asm ( "xx" );
 int main(int __argc__i_1, const char **__argv__PPCc_1){
     int ___retval_main__i_1;
@@ -11,6 +11,6 @@
     asm ( "nop" :  :  :  );
     asm ( "nop" :  :  :  );
-    static int __y__i_2;
-    static int *__z__Pi_2;
+    static int __y__i_2 asm ( "yy" );
+    static int *__z__Pi_2 asm ( "zz" );
     int __src__i_2;
     int __dst__i_2;
@@ -160,5 +160,5 @@
     int __m2__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
     int __m3__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
-    ((void)(___retval_main__i_1=0) /* ?{} */);
+    ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
     return ((int )___retval_main__i_1);
 }
Index: src/tests/.expect/castError.txt
===================================================================
--- src/tests/.expect/castError.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/castError.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -1,3 +1,2 @@
-CFA Version 1.0.0 (debug)
 Error: Can't choose between 3 alternatives for expression Cast of:
   Name: f
Index: src/tests/.expect/completeTypeError.txt
===================================================================
--- src/tests/.expect/completeTypeError.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/completeTypeError.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -1,3 +1,2 @@
-CFA Version 1.0.0 (debug)
 Error: No reasonable alternatives for expression Applying untyped: 
   Name: *?
Index: src/tests/.expect/constant0-1DP.txt
===================================================================
--- src/tests/.expect/constant0-1DP.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/constant0-1DP.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -1,3 +1,2 @@
-CFA Version 1.0.0 (debug)
 Error: duplicate object definition for 0: signed int
 Error: duplicate object definition for 0: const signed int
Index: src/tests/.expect/constant0-1NDDP.txt
===================================================================
--- src/tests/.expect/constant0-1NDDP.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/constant0-1NDDP.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -1,3 +1,2 @@
-CFA Version 1.0.0 (debug)
 Error: duplicate object definition for 0: signed int
 Error: duplicate object definition for 0: const signed int
Index: src/tests/.expect/coroutine.txt
===================================================================
--- src/tests/.expect/coroutine.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/tests/.expect/coroutine.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,10 @@
+0 0
+1 1
+1 1
+2 2
+3 3
+5 5
+8 8
+13 13
+21 21
+34 34
Index: src/tests/.expect/declarationErrors.txt
===================================================================
--- src/tests/.expect/declarationErrors.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/declarationErrors.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -1,3 +1,2 @@
-CFA Version 1.0.0 (debug)
 Error: duplicate static in declaration of x1: static const volatile short int 
 
Index: src/tests/.expect/dtor-early-exit-ERR1.txt
===================================================================
--- src/tests/.expect/dtor-early-exit-ERR1.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/dtor-early-exit-ERR1.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -1,3 +1,2 @@
-CFA Version 1.0.0 (debug)
 Error: jump to label 'L1' crosses initialization of y Branch (Goto)
 
Index: src/tests/.expect/dtor-early-exit-ERR2.txt
===================================================================
--- src/tests/.expect/dtor-early-exit-ERR2.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/dtor-early-exit-ERR2.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -1,3 +1,2 @@
-CFA Version 1.0.0 (debug)
 Error: jump to label 'L2' crosses initialization of y Branch (Goto)
 
Index: src/tests/.expect/memberCtors-ERR1.txt
===================================================================
--- src/tests/.expect/memberCtors-ERR1.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/memberCtors-ERR1.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -1,3 +1,2 @@
-CFA Version 1.0.0 (debug)
 Error: in void ?{}(struct B *b), field a2 used before being constructed
 make: *** [memberCtors-ERR1] Error 1
Index: src/tests/.expect/scopeErrors.txt
===================================================================
--- src/tests/.expect/scopeErrors.txt	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/.expect/scopeErrors.txt	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -1,3 +1,2 @@
-CFA Version 1.0.0 (debug)
 Error: duplicate object definition for thisIsAnError: signed int
 Error: duplicate function definition for butThisIsAnError: function
Index: src/tests/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/Makefile.am	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -15,6 +15,9 @@
 ###############################################################################
 
+debug=yes
+
 # applies to both programs
-CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ # TEMPORARY: does not build with -O2
+EXTRA_FLAGS =
+CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ ${EXTRA_FLAGS}
 CC = @CFA_BINDIR@/cfa
 
@@ -30,5 +33,5 @@
 
 all-tests :
-	@+python test.py --all		# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
+	@+python test.py --all --debug=${debug}		# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
 
 clean-local :
@@ -54,5 +57,5 @@
 
 declarationSpecifier: declarationSpecifier.c
-	${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}
+	${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
 
 gccExtensions : gccExtensions.c
@@ -63,6 +66,6 @@
 
 memberCtors-ERR1: memberCtors.c
-	${CC} ${CFALGS} -DERR1 ${<} -o ${@}
+	${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
 
 completeTypeError : completeTypeError.c
-	${CC} ${CFALGS} -DERR1 ${<} -o ${@}
+	${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
Index: src/tests/Makefile.in
===================================================================
--- src/tests/Makefile.in	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/Makefile.in	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -35,4 +35,6 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
 EXTRA_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
 	avl_test$(EXEEXT) constant0-1DP$(EXEEXT) \
@@ -111,4 +113,7 @@
 BACKEND_CC = @BACKEND_CC@
 CC = @CFA_BINDIR@/cfa
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
 CCDEPMODE = @CCDEPMODE@
 CFA_BACKEND_CC = @CFA_BACKEND_CC@
@@ -118,7 +123,5 @@
 CFA_LIBDIR = @CFA_LIBDIR@
 CFA_PREFIX = @CFA_PREFIX@
-
-# applies to both programs
-CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ # TEMPORARY: does not build with -O2
+CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ ${EXTRA_FLAGS}
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
@@ -147,4 +150,5 @@
 LIBS = @LIBS@
 LTLIBOBJS = @LTLIBOBJS@
+MACHINE_TYPE = @MACHINE_TYPE@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -178,5 +182,9 @@
 am__untar = @am__untar@
 bindir = @bindir@
+build = @build@
 build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
 builddir = @builddir@
 datadir = @datadir@
@@ -185,5 +193,9 @@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+host = @host@
 host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
 htmldir = @htmldir@
 includedir = @includedir@
@@ -209,4 +221,8 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+debug = yes
+
+# applies to both programs
+EXTRA_FLAGS = 
 fstream_test_SOURCES = fstream_test.c
 vector_test_SOURCES = vector/vector_int.c vector/array.c vector/vector_test.c
@@ -638,5 +654,5 @@
 
 all-tests :
-	@+python test.py --all		# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
+	@+python test.py --all --debug=${debug}		# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
 
 clean-local :
@@ -662,5 +678,5 @@
 
 declarationSpecifier: declarationSpecifier.c
-	${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}
+	${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
 
 gccExtensions : gccExtensions.c
@@ -671,8 +687,8 @@
 
 memberCtors-ERR1: memberCtors.c
-	${CC} ${CFALGS} -DERR1 ${<} -o ${@}
+	${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
 
 completeTypeError : completeTypeError.c
-	${CC} ${CFALGS} -DERR1 ${<} -o ${@}
+	${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
Index: src/tests/coroutine.c
===================================================================
--- src/tests/coroutine.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/tests/coroutine.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,65 @@
+#include <fstream>
+#include <threads>
+
+struct Fibonacci {
+      int fn; // used for communication
+      coroutine c;
+};
+
+void ?{}(Fibonacci* this) {
+      this->fn = 0;
+}
+
+coroutine* get_coroutine(Fibonacci* this) {
+      return &this->c;
+}
+
+void co_main(Fibonacci* this) {
+#ifdef MORE_DEBUG
+      sout | "Starting main of coroutine " | this | endl;
+      sout | "Started from " | this->c.last | endl;
+#endif
+      int fn1, fn2; 		// retained between resumes
+      this->fn = 0;
+      fn1 = this->fn;
+      suspend(); 		// return to last resume
+
+      this->fn = 1;
+      fn2 = fn1;
+      fn1 = this->fn;
+      suspend(); 		// return to last resume
+
+      for ( ;; ) {
+            this->fn = fn1 + fn2;
+            fn2 = fn1;
+            fn1 = this->fn;
+            suspend(); 	// return to last resume
+      }
+}
+
+int next(Fibonacci* this) {
+      resume(this); // transfer to last suspend
+      return this->fn;
+}
+
+int main() {
+      Fibonacci f1, f2;
+#ifdef MORE_DEBUG      
+      Fibonacci *pf1 = &f1, *pf2 = &f2;
+      coroutine *cf1 = &f1.c, *cf2 = &f2.c;
+      covptr_t  *vf1 = vtable(pf1), *vf2 = vtable(pf2);
+      coroutine *cv1 = get_coroutine(vf1), *cv2 = get_coroutine(vf2);
+      Fibonacci *ov1 = (Fibonacci *)get_object(vf1), *ov2 = (Fibonacci *)get_object(vf2);
+
+      sout | "User coroutines : " | pf1 | ' ' | pf2 | endl;
+      sout | "Coroutine data  : " | cf1 | ' ' | cf2 | endl;
+      sout | "Vptr address    : " | vf1 | ' ' | vf2 | endl;
+      sout | "Vptr obj data   : " | ov1 | ' ' | ov2 | endl;
+      sout | "Vptr cor data   : " | cv1 | ' ' | cv2 | endl;
+#endif
+      for ( int i = 1; i <= 10; i += 1 ) {
+            sout | next(&f1) | ' ' | next(&f2) | endl;
+      }
+
+      return 0;
+}
Index: src/tests/test.py
===================================================================
--- src/tests/test.py	(revision 5802a4f31015077b7a4161befcee3c8e98f2d693)
+++ src/tests/test.py	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -104,5 +104,5 @@
 #               running test functions
 ################################################################################
-def run_single_test(test, generate, dry_run):
+def run_single_test(test, generate, dry_run, debug):
 
 	# find the output file based on the test name and options flag
@@ -113,6 +113,8 @@
 	sh("rm -f %s > /dev/null 2>&1" % test.name, dry_run)
 
+	options = "-debug" if debug else "-nodebug";
+
 	# build, skipping to next test on error
-	make_ret, _ = sh("%s %s 2> %s 1> /dev/null" % (make_cmd, test.name, out_file), dry_run)
+	make_ret, _ = sh("""%s EXTRA_FLAGS="-quiet %s" %s 2> %s 1> /dev/null""" % (make_cmd, options, test.name, out_file), dry_run)
 
 	# if the make command succeds continue otherwise skip to diff
@@ -165,10 +167,10 @@
 	return retcode, error
 
-def run_test_instance(t, generate, dry_run) :
+def run_test_instance(t, generate, dry_run, debug) :
 	# print formated name
 	name_txt = "%20s  " % t.name
 
 	#run the test instance and collect the result
-	test_failed, error = run_single_test(t, generate, dry_run)
+	test_failed, error = run_single_test(t, generate, dry_run, debug)
 
 	# update output based on current action
@@ -194,5 +196,5 @@
 
 # run the given list of tests with the given parameters
-def run_tests(tests, generate, dry_run, jobs) :
+def run_tests(tests, generate, dry_run, jobs, debug) :
 	# clean the sandbox from previous commands
 	sh("%s clean > /dev/null 2>&1" % make_cmd, dry_run)
@@ -207,5 +209,5 @@
 	pool = Pool(jobs)
 	try :
-		results = pool.map_async(partial(run_test_instance, generate=generate, dry_run=dry_run), tests ).get(99999999)
+		results = pool.map_async(partial(run_test_instance, generate=generate, dry_run=dry_run, debug=debug), tests ).get(99999999)
 	except KeyboardInterrupt:
 		pool.terminate()
@@ -222,4 +224,13 @@
 	return 0
 
+def yes_no(string):
+	if string == "yes" :
+		return True
+	if string == "no" :
+		return False
+	raise argparse.ArgumentTypeError(msg)
+	return False
+
+
 ################################################################################
 #               main loop
@@ -227,4 +238,5 @@
 # create a parser with the arguments for the tests script
 parser = argparse.ArgumentParser(description='Script which runs cforall tests')
+parser.add_argument('--debug', help='Run all tests in debug or release', type=yes_no, default='no')
 parser.add_argument('--dry-run', help='Don\'t run the tests, only output the commands', action='store_true')
 parser.add_argument('--list', help='List all test available', action='store_true')
@@ -296,5 +308,5 @@
 	sys.exit(1)
 
-print('Running on %i cores' % options.jobs)
+print('Running (%s) on %i cores' % ("debug" if options.debug else "no debug", options.jobs))
 make_cmd = "make" if make_flags else ("make -j%i" % options.jobs)
 
@@ -305,3 +317,3 @@
 else :
 	# otherwise run all tests and make sure to return the correct error code
-	sys.exit( run_tests(tests, options.regenerate_expected, options.dry_run, options.jobs) )
+	sys.exit( run_tests(tests, options.regenerate_expected, options.dry_run, options.jobs, options.debug) )
Index: src/tests/voidPtr.c
===================================================================
--- src/tests/voidPtr.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
+++ src/tests/voidPtr.c	(revision 66f8528e75e91260ef63ddd93ec58ba5e42ae5dc)
@@ -0,0 +1,17 @@
+int main() {
+	int i, j;
+	void *a = &i, *b = &j;
+
+	if ( a == 0 ) {
+		abort();
+	}
+
+	if ( a == b ) {
+		abort();
+	}
+
+	if ( ! a ) {
+		abort();
+	}	
+}
+
