
#line 3 "cftoken.c"

#define  YY_INT_ALIGNED short int

/* A lexical scanner generated by flex */

#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
#define YY_FLEX_SUBMINOR_VERSION 35
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif

/* First, we deal with  platform-specific or compiler-specific issues. */

/* begin standard C headers. */
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>

/* end standard C headers. */

/* flex integer type definitions */

#ifndef FLEXINT_H
#define FLEXINT_H

/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */

#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L

/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
 * if you want the limit (max/min) macros for int types. 
 */
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS 1
#endif

#include <inttypes.h>
typedef int8_t flex_int8_t;
typedef uint8_t flex_uint8_t;
typedef int16_t flex_int16_t;
typedef uint16_t flex_uint16_t;
typedef int32_t flex_int32_t;
typedef uint32_t flex_uint32_t;
#else
typedef signed char flex_int8_t;
typedef short int flex_int16_t;
typedef int flex_int32_t;
typedef unsigned char flex_uint8_t; 
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;

/* Limits of integral types. */
#ifndef INT8_MIN
#define INT8_MIN               (-128)
#endif
#ifndef INT16_MIN
#define INT16_MIN              (-32767-1)
#endif
#ifndef INT32_MIN
#define INT32_MIN              (-2147483647-1)
#endif
#ifndef INT8_MAX
#define INT8_MAX               (127)
#endif
#ifndef INT16_MAX
#define INT16_MAX              (32767)
#endif
#ifndef INT32_MAX
#define INT32_MAX              (2147483647)
#endif
#ifndef UINT8_MAX
#define UINT8_MAX              (255U)
#endif
#ifndef UINT16_MAX
#define UINT16_MAX             (65535U)
#endif
#ifndef UINT32_MAX
#define UINT32_MAX             (4294967295U)
#endif

#endif /* ! C99 */

#endif /* ! FLEXINT_H */

#ifdef __cplusplus

/* The "const" storage-class-modifier is valid. */
#define YY_USE_CONST

#else	/* ! __cplusplus */

/* C99 requires __STDC__ to be defined as 1. */
#if defined (__STDC__)

#define YY_USE_CONST

#endif	/* defined (__STDC__) */
#endif	/* ! __cplusplus */

#ifdef YY_USE_CONST
#define yyconst const
#else
#define yyconst
#endif

/* Returned upon end-of-file. */
#define YY_NULL 0

/* Promotes a possibly negative, possibly signed char to an unsigned
 * integer for use as an array index.  If the signed char is negative,
 * we want to instead treat it as an 8-bit unsigned char, hence the
 * double cast.
 */
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)

/* Enter a start condition.  This macro really ought to take a parameter,
 * but we do it the disgusting crufty way forced on us by the ()-less
 * definition of BEGIN.
 */
#define BEGIN (yy_start) = 1 + 2 *

/* Translate the current start state into a value that can be later handed
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 * compatibility.
 */
#define YY_START (((yy_start) - 1) / 2)
#define YYSTATE YY_START

/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)

/* Special action meaning "start processing a new file". */
#define YY_NEW_FILE yyrestart(yyin  )

#define YY_END_OF_BUFFER_CHAR 0

/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
#define YY_BUF_SIZE 16384
#endif

/* The state buf must be large enough to hold one state per character in the main buffer.
 */
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))

#ifndef YY_TYPEDEF_YY_BUFFER_STATE
#define YY_TYPEDEF_YY_BUFFER_STATE
typedef struct yy_buffer_state *YY_BUFFER_STATE;
#endif

extern int yyleng;

extern FILE *yyin, *yyout;

#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2

    #define YY_LESS_LINENO(n)
    
/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
		*yy_cp = (yy_hold_char); \
		YY_RESTORE_YY_MORE_OFFSET \
		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
		} \
	while ( 0 )

#define unput(c) yyunput( c, (yytext_ptr)  )

#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
typedef size_t yy_size_t;
#endif

#ifndef YY_STRUCT_YY_BUFFER_STATE
#define YY_STRUCT_YY_BUFFER_STATE
struct yy_buffer_state
	{
	FILE *yy_input_file;

	char *yy_ch_buf;		/* input buffer */
	char *yy_buf_pos;		/* current position in input buffer */

	/* Size of input buffer in bytes, not including room for EOB
	 * characters.
	 */
	yy_size_t yy_buf_size;

	/* Number of characters read into yy_ch_buf, not including EOB
	 * characters.
	 */
	int yy_n_chars;

	/* Whether we "own" the buffer - i.e., we know we created it,
	 * and can realloc() it to grow it, and should free() it to
	 * delete it.
	 */
	int yy_is_our_buffer;

	/* Whether this is an "interactive" input source; if so, and
	 * if we're using stdio for input, then we want to use getc()
	 * instead of fread(), to make sure we stop fetching input after
	 * each newline.
	 */
	int yy_is_interactive;

	/* Whether we're considered to be at the beginning of a line.
	 * If so, '^' rules will be active on the next match, otherwise
	 * not.
	 */
	int yy_at_bol;

    int yy_bs_lineno; /**< The line count. */
    int yy_bs_column; /**< The column count. */
    
	/* Whether to try to fill the input buffer when we reach the
	 * end of it.
	 */
	int yy_fill_buffer;

	int yy_buffer_status;

#define YY_BUFFER_NEW 0
#define YY_BUFFER_NORMAL 1
	/* When an EOF's been seen but there's still some text to process
	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
	 * shouldn't try reading from the input source any more.  We might
	 * still have a bunch of tokens to match, though, because of
	 * possible backing-up.
	 *
	 * When we actually see the EOF, we change the status to "new"
	 * (via yyrestart()), so that the user can continue scanning by
	 * just pointing yyin at a new input file.
	 */
#define YY_BUFFER_EOF_PENDING 2

	};
#endif /* !YY_STRUCT_YY_BUFFER_STATE */

/* Stack of input buffers. */
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */

/* We provide macros for accessing buffer states in case in the
 * future we want to put the buffer states in a more general
 * "scanner state".
 *
 * Returns the top of the stack, or NULL.
 */
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                          : NULL)

/* Same as previous macro, but useful when we know that the buffer stack is not
 * NULL or when we need an lvalue. For internal use only.
 */
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]

/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;
static int yy_n_chars;		/* number of characters read into yy_ch_buf */
int yyleng;

/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
static int yy_init = 0;		/* whether we need to initialize */
static int yy_start = 0;	/* start state number */

/* Flag which is used to allow yywrap()'s to do buffer switches
 * instead of setting up a fresh yyin.  A bit of a hack ...
 */
static int yy_did_buffer_switch_on_eof;

void yyrestart (FILE *input_file  );
void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
void yy_delete_buffer (YY_BUFFER_STATE b  );
void yy_flush_buffer (YY_BUFFER_STATE b  );
void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
void yypop_buffer_state (void );

static void yyensure_buffer_stack (void );
static void yy_load_buffer_state (void );
static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );

#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )

YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );

void *yyalloc (yy_size_t  );
void *yyrealloc (void *,yy_size_t  );
void yyfree (void *  );

#define yy_new_buffer yy_create_buffer

#define yy_set_interactive(is_interactive) \
	{ \
	if ( ! YY_CURRENT_BUFFER ){ \
        yyensure_buffer_stack (); \
		YY_CURRENT_BUFFER_LVALUE =    \
            yy_create_buffer(yyin,YY_BUF_SIZE ); \
	} \
	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
	}

#define yy_set_bol(at_bol) \
	{ \
	if ( ! YY_CURRENT_BUFFER ){\
        yyensure_buffer_stack (); \
		YY_CURRENT_BUFFER_LVALUE =    \
            yy_create_buffer(yyin,YY_BUF_SIZE ); \
	} \
	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
	}

#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)

/* Begin user sect3 */

typedef unsigned char YY_CHAR;

FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;

typedef int yy_state_type;

extern int yylineno;

int yylineno = 1;

extern char *yytext;
#define yytext_ptr yytext

static yy_state_type yy_get_previous_state (void );
static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
static int yy_get_next_buffer (void );
static void yy_fatal_error (yyconst char msg[]  );

/* Done after the current pattern has been matched and before the
 * corresponding action - sets up yytext.
 */
#define YY_DO_BEFORE_ACTION \
	(yytext_ptr) = yy_bp; \
	(yytext_ptr) -= (yy_more_len); \
	yyleng = (size_t) (yy_cp - (yytext_ptr)); \
	(yy_hold_char) = *yy_cp; \
	*yy_cp = '\0'; \
	(yy_c_buf_p) = yy_cp;

#define YY_NUM_RULES 301
#define YY_END_OF_BUFFER 302
/* This struct is not used in this scanner,
   but its presence is necessary. */
struct yy_trans_info
	{
	flex_int32_t yy_verify;
	flex_int32_t yy_nxt;
	};
static yyconst flex_int16_t yy_accept[1781] =
    {   0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      302,  300,  296,  297,  300,  298,  300,  300,  292,  292,
      292,  295,  299,  283,  300,  300,  300,  300,  295,  295,
      295,  295,  295,  295,  300,  300,  300,  300,  300,  300,
      300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
      295,  300,  300,  300,  300,  300,  300,  300,  300,  295,
      300,  300,    2,    6,   14,  295,  295,  300,  300,  300,

       17,   28,  295,  295,  300,  300,  300,  295,  300,  300,
      300,   30,   36,  295,  295,  300,  300,   38,   45,  295,
      300,  300,  300,   92,   99,   89,  295,  295,  295,  295,
      300,  300,  300,  300,  300,  300,  300,  300,   62,   90,
      295,  295,  300,  300,  300,  300,   47,   60,  107,  300,
      295,  295,  300,  106,  119,  295,  295,  295,  295,  300,
      300,  300,  300,  300,  300,  108,  295,  300,  123,  126,
      295,  295,  295,  295,  295,  295,  300,  300,  300,  300,
      300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
      300,  124,  295,  295,  295,  295,  300,  300,  300,  300,

      183,  184,  197,  300,  300,  296,    0,  294,  298,  202,
      200,  295,  295,  292,    0,  295,    0,  284,  285,  286,
        0,  295,  295,  204,    0,    0,    0,  295,  295,  295,
        0,  295,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  291,    0,
        0,  198,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  295,  295,    0,    0,    0,
        0,  295,    0,    0,  291,    0,    0,    0,    0,    0,

      295,    0,    0,    0,    0,    0,    0,    0,    0,  295,
        0,  295,    0,  295,    0,    0,    0,    0,    0,    0,
        0,  291,    0,    0,    0,    0,    0,    0,    0,    0,
        0,  295,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  295,    0,  295,  295,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,  291,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

        0,    0,    0,    0,    0,    0,  202,  202,  200,  295,
      293,  295,    0,  201,  295,  222,    0,    0,    0,    0,
        0,    0,  295,  211,    0,  295,  203,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  248,  237,
      288,    0,    0,    0,  199,  246,    0,  219,  213,    0,
        0,  287,    0,    0,  281,  208,    0,    0,  209,    0,
        0,    0,  290,    0,    0,    0,    0,    0,    0,   19,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      295,    0,    0,    0,    0,    0,  295,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

        0,    0,    0,    0,  295,    0,    0,    0,  295,    0,
        0,    0,    0,    0,    0,    0,    0,   78,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  103,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,  130,  170,  203,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  287,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

        0,    0,    0,    0,    0,    0,  202,  200,  212,    0,
        0,    0,    0,  283,    0,    0,    0,    0,    0,    0,
        0,  282,  275,    0,    0,  289,    0,  206,  214,    0,
        0,  236,  288,    0,    0,    0,  221,    0,    0,    0,
        0,    0,    0,  287,  238,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    7,    0,    0,    0,    0,    0,    0,    3,
        0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  295,   65,

        0,    0,   79,    0,    0,    0,    0,   76,    0,    0,
        0,    0,    0,    0,    0,    0,   51,    0,   49,   50,
        0,    0,    0,    0,  104,    0,    0,  115,    0,    0,
        0,    0,    0,    0,    0,  114,    0,    0,    0,  127,
      169,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  128,
        0,    0,    0,    0,  161,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  168,    0,
        0,    0,  143,    0,    0,  187,    0,    0,    0,    0,
        0,    0,  186,    0,    0,  217,    0,    0,    0,  283,

        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      289,    0,  207,    0,  276,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,  239,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,   91,    0,    4,    0,    0,    0,    0,    0,
        0,   24,   20,    0,    0,    0,    0,    0,    0,   41,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,   75,   66,    0,    0,    0,
        0,    0,    0,    0,    0,   67,    0,    0,    0,    0,

      102,    0,  105,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,  164,    0,    0,    0,
        0,    0,    0,  163,    0,  159,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      174,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  279,    0,    0,    0,    0,
        0,    0,    0,  261,    0,    0,    0,    0,    0,    0,
      205,  288,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  262,  263,  260,  287,  241,    0,

        0,    0,  243,  245,  278,    0,    0,    0,    0,    0,
        0,    0,    0,    0,   37,    0,    0,    0,  120,  100,
        5,    0,    0,    0,    0,    0,   11,   25,   26,   27,
       22,    0,    0,    0,    0,    0,    0,    0,   39,    0,
        0,    0,    0,    0,   96,   97,    0,    0,    0,    0,
       81,    0,    0,    0,    0,    0,    0,    0,    0,    0,
       77,    0,    0,   74,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,  146,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,  177,    0,    0,    0,  162,    0,  153,    0,    0,
        0,    0,    0,    0,  192,    0,    0,    0,  195,    0,
      277,    0,    0,  215,    0,  247,    0,    0,  235,  252,
      253,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,  249,    0,    0,    0,    0,    0,    0,    0,    0,
      224,    0,    0,    0,    0,    0,    0,    0,   15,   46,
        0,   29,    1,    0,    0,    8,   13,    0,   21,    0,
        0,    0,    0,    0,    0,    0,    0,   93,    0,    0,
       95,    0,    0,    0,    0,    0,    0,    0,   85,    0,

        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,   53,   54,   52,   48,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,  122,    0,  142,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  166,
        0,    0,    0,    0,    0,  154,  134,    0,  149,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,  216,  225,  280,  218,  210,    0,  227,    0,    0,
        0,  250,  251,  254,  255,  256,  257,  258,  226,  220,
        0,  223,  240,  242,  244,    0,    0,    0,    0,    0,

        0,    0,   61,   12,    0,    0,    0,    0,    0,    0,
        0,   43,    0,    0,   94,    0,    0,    0,    0,    0,
        0,    0,    0,    0,   64,   63,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,  113,    0,    0,  110,    0,    0,    0,  150,    0,
        0,    0,  176,    0,    0,    0,    0,  175,    0,    0,
        0,    0,  167,  180,    0,    0,    0,    0,    0,    0,
        0,    0,  182,    0,    0,    0,    0,    0,    0,    0,
        0,  191,    0,    0,    0,  185,  196,    0,  228,    0,
        0,    0,    0,    0,    0,  274,  273,    0,    0,    0,

        0,    0,    0,    0,    0,    0,   31,    0,   42,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,   84,
       87,   80,    0,   86,    0,   56,    0,   57,    0,   55,
      101,    0,    0,    0,    0,    0,  109,  121,    0,    0,
      171,    0,  172,    0,    0,    0,    0,    0,  135,  131,
      165,    0,    0,    0,    0,    0,    0,  178,  144,    0,
      148,  132,    0,    0,    0,    0,    0,    0,    0,    0,
      193,    0,  264,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  194,   16,    0,    0,    0,    0,    0,
        0,    0,    0,    0,   73,    0,    0,    0,    0,    0,

        0,    0,    0,   58,    0,    0,    0,    0,  111,    0,
      129,    0,    0,    0,    0,  136,    0,    0,    0,    0,
      151,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  230,    0,    0,    0,  232,  234,
        0,    0,    0,    0,    0,    0,    0,    0,   10,    0,
        0,    0,    0,    0,   40,    0,    0,   70,   69,    0,
       72,    0,    0,   88,    0,   59,    0,    0,    0,    0,
        0,  173,    0,    0,    0,    0,    0,    0,    0,    0,
      179,    0,    0,    0,  147,    0,    0,  138,    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,   71,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  155,
        0,    0,    0,    0,    0,    0,  229,  231,  233,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,   82,    0,   83,    0,    0,
        0,  112,    0,  125,    0,  133,    0,  137,  158,    0,
        0,    0,  156,    0,    0,    0,    0,    0,    0,    0,
        0,    0,  259,    0,    0,    0,    0,   18,    9,   35,
       33,    0,   44,   98,   68,    0,    0,    0,    0,    0,

        0,  145,    0,  160,    0,    0,    0,    0,  190,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,  152,  157,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  270,  269,  272,  271,   32,    0,    0,
        0,  141,  139,    0,    0,    0,    0,  268,  266,  267,
      265,    0,    0,    0,  140,  181,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      116,    0,  188,    0,  118,  189,    0,    0,  117,    0
    } ;

static yyconst flex_int32_t yy_ec[256] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    2,    1,    4,    5,    1,    6,    1,    1,    1,
        1,    1,    1,    7,    8,    9,   10,   11,   12,   13,
       14,   15,   16,   17,   18,   19,   20,   21,   22,    1,
        1,    1,    1,    1,   23,   24,   23,   23,   23,   23,
       25,   25,   25,   25,   26,   25,   27,   25,   25,   25,
       25,   25,   25,   28,   25,   25,   25,   25,   25,   25,
       29,    1,   30,    1,   31,    1,   32,   33,   34,   35,

       36,   37,   38,   39,   40,   41,   42,   43,   44,   45,
       46,   47,   48,   49,   50,   51,   52,   53,   54,   55,
       56,   57,   58,    1,   59,    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,    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,    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,    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
    } ;

static yyconst flex_int32_t yy_meta[60] =
    {   0,
        1,    1,    2,    1,    1,    3,    1,    1,    3,    1,
        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
        5,    1,    6,    6,    7,    7,    7,    7,    1,    1,
        1,    6,    6,    6,    6,    6,    6,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    1,    1
    } ;

static yyconst flex_int16_t yy_base[1793] =
    {   0,
        0,    0,   26,   44,   27,   58,   68,   87, 2115, 2114,
       90,  106,  103,  114,  134,  136,   98,  143,  196,    0,
      165,  167,    0,    0,    0,    0,  215,  227,  279,    0,
       31,   40,  332,    0,  360,  388,    0,    0,   61,   81,
     2135, 2138, 2132, 2138, 2129,    0,    0,    0,  442, 2077,
      130, 2125, 2138, 2124, 2105, 2104, 2103,    0,  172,   93,
       75,  169,  226,  100, 2076,  135,  120,  174, 2068,  222,
       16,   77, 2075,  208,  199,  229,  231, 2087, 2090, 2085,
      261, 2070,  237,  252,  254,  164,  268,  238,  293,  285,
      229,  245, 2138, 2138, 2138,  297,  269,  297,  140,  307,

     2138, 2138,  300,  339,  367,  181, 2087,  388,  316,  375,
      377, 2138, 2138, 2083,  394,  402,  431, 2138, 2138,  458,
      446,  264,  322, 2138, 2138, 2138,   71,  463,  466,  465,
      285,  473,  454,  480,  485,  489,  501, 2077, 2138, 2138,
     2065,  503,  389,   51,  489, 2079, 2138, 2138, 2138, 2082,
     2068,  357,  305, 2138, 2138, 2060,  493,  518,  521,  526,
      280,  512,   82,  529,  538, 2138, 2066,  540, 2138, 2138,
     2072,  544,  545,  574,  556,  561,  354,  570,  252,  428,
      562,  582,  451,  550,  589,  596,  606,  581, 2073, 2072,
      498, 2138, 2055,  616,  627,  631, 2056,  611,  587,  624,

     2138, 2138, 2138,  385,  618, 2103, 2100, 2138,    0, 2097,
        0,    0, 2096, 2046,    0,  374, 2065, 2138, 2138, 2138,
     2069,  181,  592, 2138, 2053, 2051, 2045,  635,  308,  643,
     2045,   61, 2047, 2050, 2057, 2041, 2058, 2037, 2055, 2043,
     2050, 2051, 2028, 2048, 2032, 2065, 2035, 2044, 2033, 2034,
     2039, 2138, 2035, 2038,  425, 2032, 2040, 2037, 2038, 2036,
     2030, 2020, 2028, 2019, 2017, 2027, 2017, 2009, 2010, 2015,
     2008, 2021, 2022, 2023, 2004, 2015, 2017,  610,  502, 2007,
     2010,  448, 2000, 2002, 2011,  648,  645, 2012, 2010, 2008,
     1994,  664, 1993, 2004,  638, 1991, 2005, 1983, 1992, 1987,

      656, 1985, 2002, 1984, 1980, 1980, 1979, 1980, 1996,  665,
     1976,  499, 1981,  667, 1975, 1978, 1989, 1990, 1987, 1975,
     1968, 1973, 1973, 1966, 1969, 1979, 1960, 1969, 1961, 1965,
     1958,  646, 1963,  634, 1958, 1973,  546, 1960,  642, 1958,
     1957, 1951, 1950, 1956, 1965, 1962, 1960, 1965, 1945, 1950,
      664, 1947, 1953, 1953,  668, 1939,  681,  684, 1957, 1957,
     1937, 1946, 1950, 1937,  671, 1934, 1937, 1945, 1944,  309,
      661,  547, 1942, 1938, 1942, 1945, 1924, 1929, 1937, 1922,
     1935,  694, 1938,  673, 1921, 1919,  511, 1916, 1917,  440,
      669, 1925,  671, 1932, 1952, 1910, 1910, 1909, 1928, 1924,

     1907, 1906, 1918,  677, 1903, 1916,    0, 1946,    0,    0,
        0,  686, 1915, 2138,  704, 2138, 1938, 1895, 1912, 1911,
     1895, 1894,  716, 1913, 1893,  717, 2138, 1906, 1896, 1908,
     1905, 1889, 1888, 1889, 1903, 1888, 1893, 1890, 2138, 2138,
      677, 1884, 1899, 1886, 2138, 2138, 1897, 2138, 2138, 1882,
      688,  682,  727, 1881, 2138, 2138, 1889, 1887, 2138, 1874,
     1887, 1870, 2138, 1873,  703,  710, 1876, 1871, 1866, 2138,
      709, 1881, 1876, 1861, 1867, 1867, 1875, 1864, 1857, 1859,
      724, 1856, 1863, 1868, 1873, 1863,  738, 1856, 1855, 1860,
     1854, 1855, 1857, 1861, 1855, 1854, 1861, 1850, 1851, 1845,

     1853, 1837, 1837, 1836,  740, 1846, 1839, 1846,  741, 1867,
     1829, 1837, 1832, 1846, 1827,  704,  718, 2138, 1845, 1832,
     1834, 1837, 1832, 1820, 1820, 1820, 1832, 1832, 1815, 1814,
      706, 1814, 1807, 1817, 2138, 1817, 1808, 1820, 1822, 1810,
     1807,  718, 1819, 1814, 1822, 1806, 1815, 1805, 1813, 1799,
     1811, 1810, 1794, 1793, 1803, 1804, 1791, 2138, 1809, 1808,
     1804, 1798, 1802, 1799,  720, 1803, 1782, 1796, 1795, 1783,
     1793, 1783,  724, 1787, 1795,  730, 1769, 1774, 1774, 1782,
     1771, 1780, 1772, 1766, 1777,  726, 1781, 1763, 1774, 1766,
     1776, 1763, 1770, 1767, 1788, 1756, 1767, 1769, 1766, 1754,

      736, 1763, 1765, 1764, 1759, 1790,    0, 2138, 2138, 1765,
     1760, 1760, 1757, 1743, 1749, 1779, 1745, 1757,  730, 1748,
     1775, 2138, 2138, 1739, 1754, 1734, 1743, 1765, 2138, 1737,
     1745, 2138, 2138, 1728,  779, 1746, 1746, 1726, 1740, 1729,
     1737, 1732, 1726, 2138, 2138,  764, 1751, 1757, 1732, 1718,
     1726, 1734, 1718, 1724, 1719, 1721, 1709, 1707, 1724, 1721,
     1725, 1715, 2138, 1704, 1702, 1715, 1702, 1704, 1702, 1717,
     1695,  737, 1694, 1705, 1694, 1696, 1704, 1692, 2138, 1703,
     1699, 1686, 1693, 1690, 1701, 1689, 1700, 1688, 1697, 1679,
     1680, 1697, 1691, 1690, 1673, 1693, 1687, 1691,  763, 2138,

     1674, 1668, 2138, 1676, 1703, 1685, 1670, 2138, 1677, 1683,
     1661, 1681, 1660, 1674, 1694, 1677, 2138, 1676, 2138, 2138,
     1657, 1665, 1674, 1647, 2138, 1655, 1665, 1650, 1650, 1642,
     1646, 1645, 1660, 1656, 1642, 2138, 1636, 1642, 1654, 2138,
     1639, 1632,  738, 1643, 1637, 1649,  764, 1647, 1632, 1650,
     1645, 1631, 1628, 1641, 1637, 1638, 1641, 1642, 1622, 2138,
     1641, 1636, 1619, 1633, 2138, 1628, 1617, 1631, 1629, 1619,
     1617, 1622, 1614, 1624, 1628, 1626, 1623, 1610, 2138, 1603,
     1617, 1622, 2138, 1613, 1615, 1600, 1600, 1592, 1607, 1599,
     1614, 1593, 2138, 1598, 1630, 2138, 1591, 1593, 1595, 2138,

      116,  169,  177,  189,  299,  376,  394,  769,  410,  737,
     2138,  561, 2138,  603, 2138,  639,  789,  768,  778,  790,
      790,  786,  792,  754,  771,  770,  778,  777,  759,  776,
      781,  800,  805,  805,  809,  772, 2138,  774,  788,  777,
      796,  792,  794,  790,  796,  795,  788,  800,  790,  800,
      801,  792, 2138,  788, 2138,  793,  804,  807,  800,  805,
      794,  833, 2138,  793,  805,  801,  800,  809,  803,  805,
      813,  810,  807,  823,  807,  819,  817,  851,  820,  828,
      818,  818,  826,  839,  836,  841, 2138,  823,  825,  826,
      826,  827,  833,  850,  838, 2138,  851,  849,  849,  840,

     2138,  843, 2138,  843,  854,  844,  852,  853,  858,  848,
      862,  855,  860,  851,  855,  867, 2138,  859,  872,  871,
      876,  873,  861, 2138,  866, 2138,  880,  873,  865,  883,
      867,  886,  875,  879,  886,  885,  873,  892,  871,  894,
     2138,  914,  896,  878,  880,  879,  897,  898,  882,  883,
      886,  900,  881,  891,  908,  895,  895,  895,  908,  904,
      913,  906,  935,  931,  899, 2138,  900,  911,  933,  909,
      918,  941,  922, 2138,  941,  943,  929,  926,  923,  932,
     2138,  914,  952,  952,  952,  950,  949,  955,  952,  952,
      922,  929,  943,  940, 2138, 2138, 2138,  927, 2138,  962,

      960,  968, 2138, 2138, 2138,  942,  934,  952,  937,  930,
      956,  951,  953,  952, 2138,  954,  954,  946, 2138, 2138,
     2138,  944,  955,  960,  961,  966, 2138, 2138, 2138, 2138,
     2138,  961,  960,  957,  962,  972,  958,  969,  975,  976,
      959,  977,  974,  976, 2138, 2138,  961,  964,  968,  976,
     2138,  970,  966,  968,  983,  977,  979,  980,  977,  984,
     2138,  993,  991, 2138,  992,  979,  997,  980,  986,  978,
      998,  990,  991,  987,  989,  989, 1004,  998,  998,  998,
     1005, 1000,  996,  998, 1013, 1010,  999, 2138, 1009,  998,
     1003, 1023, 1018, 1006, 1021, 1027, 1017, 1021, 1027, 1023,

     1020, 1028, 1021, 1035, 1018, 1033, 1036, 1040, 1024, 1042,
     1039, 2138, 1021, 1042, 1039, 2138, 1029, 2138, 1050, 1043,
     1040, 1033, 1033, 1035, 2138, 1057, 1047, 1048, 2138, 1050,
     2138, 1055, 1063, 2138, 1060, 2138, 1084, 1083, 2138, 2138,
     2138, 1057, 1084, 1069, 1067, 1088, 1087, 1086, 1093, 1090,
     1093, 2138, 1096, 1071, 1077, 1063, 1070, 1097, 1100, 1104,
     2138, 1083, 1079, 1070, 1071, 1091, 1087, 1084, 2138, 2138,
     1087, 2138, 2138, 1094, 1093, 2138, 2138, 1079, 2138, 1076,
     1099, 1074, 1098, 1099, 1099, 1090, 1104, 2138, 1094, 1102,
     2138, 1099, 1094, 1089, 1093, 1091, 1113, 1099, 2138, 1114,

     1132, 1133, 1097, 1093, 1101, 1107, 1117, 1119, 1109, 1106,
     1113, 1122, 2138, 2138, 2138, 2138, 1107, 1120, 1111, 1122,
     1123, 1128, 1114, 1114, 1132, 1116, 2138, 1129, 2138, 1136,
     1124, 1140, 1136, 1125, 1137, 1140, 1141, 1138, 1123, 1142,
     1150, 1131, 1137, 1131, 1149, 1148, 1136, 1135, 1149, 2138,
     1154, 1156, 1157, 1143, 1151, 2138, 2138, 1146, 2138, 1150,
     1166, 1164, 1167, 1154, 1161, 1155, 1163, 1165, 1168, 1172,
     1174, 2138, 2138, 2138, 2138, 2138, 1162, 2138, 1200, 1165,
     1167, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138,
     1182, 2138, 2138, 2138, 2138, 1174, 1185, 1179, 1190, 1190,

     1179, 1189, 2138, 2138, 1194, 1191, 1192, 1186, 1194, 1192,
     1190, 2138, 1201, 1199, 2138, 1188, 1191, 1185, 1189, 1193,
     1191, 1206, 1190, 1198, 2138, 2138, 1197, 1209, 1196, 1197,
     1197, 1200, 1198, 1209, 1219, 1204, 1204, 1221, 1216, 1211,
     1222, 2138, 1219, 1213, 2138, 1211, 1209, 1231, 2138, 1208,
     1233, 1210, 2138, 1236, 1237, 1233, 1239, 2138, 1237, 1216,
     1233, 1238, 2138, 2138, 1235, 1240, 1220, 1229, 1243, 1234,
     1234, 1250, 1252, 1233, 1240, 1242, 1251, 1253, 1240, 1253,
     1258, 2138, 1247, 1259, 1249, 2138, 2138, 1263, 2138, 1281,
     1279, 1287, 1250, 1269, 1267, 2138, 2138, 1272, 1273, 1253,

     1272, 1258, 1257, 1274, 1279, 1275, 1282, 1278, 2138, 1264,
     1281, 1285, 1280, 1272, 1286, 1270, 1288, 1277, 1275, 2138,
     2138, 2138, 1271, 2138, 1272, 2138, 1280, 2138, 1292, 2138,
     2138, 1297, 1284, 1286, 1283, 1296, 2138, 2138, 1298, 1284,
     2138, 1296, 2138, 1293, 1291, 1290, 1294, 1295, 2138, 2138,
     2138, 1305, 1294, 1308, 1294, 1301, 1293, 2138, 2138, 1314,
     2138, 2138, 1309, 1301, 1302, 1316, 1317, 1314, 1323, 1311,
     2138, 1308, 2138, 1341, 1346, 1346, 1350, 1333, 1334, 1335,
     1333, 1334, 1324, 2138, 2138, 1334, 1340, 1321, 1328, 1331,
     1341, 1325, 1328, 1335, 2138, 1329, 1344, 1330, 1346, 1341,

     1352, 1352, 1342, 2138, 1340, 1339, 1346, 1361, 2138, 1353,
     2138, 1358, 1352, 1350, 1351, 2138, 1353, 1354, 1360, 1351,
     2138, 1365, 1352, 1359, 1366, 1359, 1361, 1357, 1364, 1398,
     1366, 1361, 1382, 1374, 2138, 1399, 1397, 1405, 2138, 2138,
     1384, 1385, 1378, 1378, 1386, 1380, 1388, 1390, 2138, 1384,
     1395, 1390, 1393, 1388, 2138, 1395, 1392, 2138, 2138, 1390,
     2138, 1404, 1401, 2138, 1389, 2138, 1399, 1409, 1409, 1406,
     1412, 2138, 1409, 1402, 1403, 1396, 1412, 1417, 1410, 1411,
     2138, 1416, 1436, 1399, 2138, 1404, 1425, 2138, 1417, 1426,
     1408, 1443, 1446, 1449, 1420, 1428, 1422, 1430, 1431, 1428,

     1420, 1430, 1422, 1429, 1437, 1434, 1424, 1431, 2138, 1427,
     1425, 1443, 1440, 2138, 1439, 1436, 1451, 1441, 1436, 1435,
     1451, 1448, 1433, 1458, 1442, 1449, 1450, 1457, 1461, 2138,
     1440, 1457, 1464, 1453, 1457, 1462, 2138, 2138, 2138, 1462,
     1454, 1464, 1456, 1450, 1471, 1455, 1473, 1457, 1475, 1456,
     1470, 1475, 1477, 1466, 1481, 2138, 1473, 2138, 1474, 1477,
     1483, 2138, 1466, 2138, 1489, 2138, 1490, 2138, 2138, 1489,
     1486, 1485, 2138, 1491, 1490, 1485, 1493, 1488, 1497, 1481,
     1499, 1483, 2138, 1492, 1502, 1494, 1504, 2138, 2138, 2138,
     2138, 1490, 2138, 2138, 2138, 1511, 1505, 1498, 1498, 1490,

     1496, 2138, 1512, 2138, 1509, 1514, 1520, 1506, 2138, 1508,
     1518, 1510, 1520, 1506, 1509, 1508, 1511, 1522, 1530, 1517,
     1515, 1529, 2138, 2138, 1517, 1531, 1534, 1525, 1521, 1520,
     1523, 1522, 1525, 2138, 2138, 2138, 2138, 2138, 1532, 1527,
     1537, 2138, 2138, 1529, 1537, 1544, 1541, 2138, 2138, 2138,
     2138, 1544, 1543, 1533, 2138, 2138, 1534, 1535, 1541, 1537,
     1550, 1551, 1552, 1543, 1554, 1550, 1549, 1552, 1557, 1554,
     2138, 1564, 2138, 1549, 2138, 2138, 1562, 1558, 2138, 2138,
     1602, 1609, 1613, 1607, 1617, 1620, 1622, 1625, 1626, 1630,
     1633, 1627

    } ;

static yyconst flex_int16_t yy_def[1793] =
    {   0,
     1780,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,   19,
        1,    1,    1,    1,    1,    1,    1,    1,    1,   29,
        1,    1,    1,   33,    1,    1,    1,    1,    1,    1,
     1780, 1780, 1780, 1780, 1781, 1782, 1783, 1784, 1780,   49,
       49, 1785, 1780, 1785, 1780, 1780, 1780, 1786, 1785, 1785,
     1785, 1785, 1785, 1785, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1785, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1785,
     1780, 1780, 1780, 1780, 1780, 1785, 1785, 1780, 1780, 1780,

     1780, 1780, 1785, 1785, 1780, 1780, 1780, 1785, 1780, 1780,
     1780, 1780, 1780,   59, 1785, 1780, 1780, 1780, 1780, 1785,
     1780, 1780, 1780, 1780, 1780, 1780,   59, 1785, 1785, 1785,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
       59, 1785, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1786,
       59, 1785, 1780, 1780, 1780,   59, 1785, 1785, 1785, 1780,
     1780, 1780, 1780, 1780, 1780, 1780,   59, 1780, 1780, 1780,
       59,  142, 1785, 1785, 1785, 1785, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780,   59, 1785, 1785, 1785, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1781, 1780, 1782, 1787,
     1788, 1789, 1785,   49, 1790, 1785, 1780, 1780, 1780, 1780,
     1786, 1785, 1785, 1780, 1780, 1780, 1780, 1785, 1785, 1785,
     1780, 1785, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1785, 1785, 1780, 1780, 1780,
     1780, 1785, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1785, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1785,
     1780, 1785, 1780, 1785, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1785, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1785, 1780, 1785, 1785, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1791, 1787, 1792, 1789,
     1790, 1785, 1780, 1780, 1785, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1785, 1780, 1780, 1785, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1785, 1780, 1780, 1780, 1780, 1780, 1785, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1785, 1780, 1780, 1780, 1785, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1791, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1785, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,

     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,    0,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780

    } ;

static yyconst flex_int16_t yy_nxt[2198] =
    {   0,
       42,   43,   44,   45,   46,   42,   42,   47,   42,   48,
       49,   50,   50,   51,   50,   50,   50,   50,   50,   50,
       52,   53,   52,   54,   42,   55,   56,   57,   58,   42,
       42,   59,   60,   61,   62,   63,   64,   65,   66,   67,
       42,   68,   69,   70,   71,   72,   73,   42,   74,   75,
       76,   77,   78,   42,   79,   80,   42,   42,   42,   81,
       90,  249,  167,   82,   91,   83,  212,  250,   84,   85,
      168,  167,   86,  426,   87,   88,   89,   81,   92,  168,
      212,   82,  203,   83,   93,   94,   84,   85,  169,   95,
       86,   90,   87,   88,   89,   91,  335,  169,  212,  254,

       96,   97,  203,  204,  310,  212,  228,   98,   95,   92,
      229,  102,  205,  251,   99,   93,   94,  100,  349,   96,
       97,  252,  311,  204,  103,  104,   98,  102,  253,  105,
      254,  120,  205,   99,  106,  226,  100,  121,  108,  234,
      103,  104,  122,  107,  123,  105,  109,  235,  227,  108,
      106,  110,  111,  240,  241,  124,  125,  109,  968,  107,
      112,  113,  110,  111,  216,  114,  242,  114,  115,  217,
      115,  112,  113,  116,  212,  116,  120,  212,  237,  289,
      238,  969,  121,  117, 1780,  117,  212,  122,  290,  123,
      239,  118,  119,  118,  119,  278,  141,  142,  141,  142,

      124,  125,  126,  143,  230,  143,  222,  223,  970,  243,
      224,  144,  279,  144,  145,  415,  145,  146,  231,  146,
      244,  225,  147,  148,  147,  148,  295,  127,  128,  129,
      130,  212,  250,  131,  258,  132,  149,  259,  133,  971,
      134,  255,  135,  150,  136,  137,  151,  256,  149,  138,
      260,  152,  153,  139,  140,  150,  246,  257,  151,  232,
      261,  247,  262,  152,  153,  265,  212,  248,  263,  281,
      240,  272,  154,  258,  212,  233,  259,  284,  236,  265,
      266,  273,  264,  242,  154,  155,  274,  372,  246,  260,
      212,  275,  228,  247,  285,  307,  229,  276,  244,  277,

      228,  255,  212,  280,  287,  212,  270,  256,  245,  249,
      156,  157,  158,  212,  159,  250,  228,  257,  160,  347,
      229,  161,  162,  283,  261,  163,  262,  164,  286,  165,
      240,  241,  282,  316,  236,  292,  245,  166,  170,  226,
      291,  288,  258,  242,  212,  259,  264,  298,  567,  231,
      246,  972,  227,  341,  236,  247,  422,  308,  260,  568,
      309,  248,  212,  171,  172,  173,  174,  175,  176,  177,
      254,  178,  232,  179,  180,  181,  182,  183,  184,  212,
      185,  186,  187,  188,  189,  190,  191,  293,  233,  367,
      192,  193,  194,  212,  195,  196,  234,  197,  198,  212,

      240,  241,  199,  236,  235,  340,  299,  973,  255,  412,
      200,  294,  258,  242,  256,  259,  405,  201,  202,  193,
      194,  232,  195,  196,  257,  197,  198,  300,  260,  230,
      199,  974,  237,  302,  334,  240,  241,  233,  200,  448,
      449,  245,  297,  231,  239,  201,  202,  212,  242,  977,
      213,  303,  214,  214,  214,  214,  214,  214,  214,  214,
      214,  214,  213,  212,  213,  213,  258,  373,  212,  259,
      212,  212,  454,  213,  213,  213,  213,  213,  213,  240,
      241,  304,  260,  379,  245,  457,  590,  251,  318,  228,
      306,  477,  242,  229,  312,  252,  215,  228,  212,  319,

      314,  229,  253,  305,  212,  226,  240,  241,  212,  315,
      245,  313,  320,  395,  231,  321,  323,  317,  227,  242,
      326,  324,  255,  212,  258,  322,  212,  259,  256,  396,
      325,  250,  327,  254,  332,  226,  258,  447,  257,  259,
      336,  474,  333,  507,  586,  226,  246,  328,  343,  228,
      212,  247,  260,  229,  232,  587,  329,  248,  227,  240,
      346,  212,  255,  344,  350,  345,  212,  348,  256,  261,
      233,  262,  242,  240,  241,  355,  357,  351,  257,  212,
      358,  380,  570, 1780,  353,  381,  242,  359,  382,  232,
      461,  264,  383,  374,  532,  980,  246,  212,  384,  356,

      234,  247,  437,  240,  368,  364,  366,  375,  235,  230,
      365,  369,  360,  377,  370,  265,  371,  376,  361,  362,
      363,  212,  255,  231,  385,  392,  403,  378,  256,  386,
      266,  387,  212,  250,  259,  388,  212,  261,  257,  262,
      212,  416,  402,  245,  472,  391,  389,  390,  212,  981,
      212,  212,  265,  212,  237,  261,  238,  262,  226,  264,
      473,  212,  230,  404,  232,  399,  239,  266,  406,  212,
      212,  398,  212,  212,  982,  400,  231,  264,  420,  423,
      233,  481,  443,  529,  421,  432,  212,  534,  490,  212,
      415,  212,  424,  482,  436,  527,  487,  535,  505,  496,

      423,  457,  561,  509,  562,  580,  457,  547,  447,  212,
      569,  553,  591,  424,  457,  461,  424,  551,  583,  593,
      604,  212,  212,  640,  420,  581,  633,  643,  634,  212,
      421,  644,  554,  656,  624,  609,  641,  642,  645,  646,
      647,  629,  648,  212,  661,  212,  212,  706,  636,  629,
      649,  629,  611,  708,  657,  635,  721,  707,  618,  761,
      636,  621,  731,  764,  753,  671,  789,  790,  212,  805,
      635,  643,  699,  806,  774,  644,  857,  916,  985,  832,
      978,  803,  803,  618,  975,  695,  979,  976,  986,  677,
      817,  818,  819,  820,  833,  821,  822,  823,  920,  983,

      987,  988,  989,  990,  984,  991,  992,  921,  993,  994,
      995,  996,  922,  997,  883,  998,  999, 1000, 1001, 1003,
     1002, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
     1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022,
     1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
     1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042,
     1043, 1044, 1045, 1046, 1047, 1048, 1051, 1052, 1053, 1054,
     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1049, 1050, 1062,
     1063, 1064, 1065, 1069, 1071, 1072, 1073, 1074, 1066, 1075,
     1076, 1077, 1078, 1079, 1067, 1070, 1080, 1081, 1082, 1083,

     1084, 1085, 1068, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
     1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
     1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
     1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132,
     1133, 1134, 1135, 1136, 1137, 1139, 1140, 1138, 1141, 1142,
     1143, 1144, 1145,  633, 1146, 1147, 1148, 1149, 1150, 1151,
     1152, 1153, 1154, 1155, 1156, 1157,  644, 1158, 1159, 1160,
     1161, 1162, 1163, 1164, 1166, 1165, 1167, 1168, 1169, 1170,
     1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180,

     1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
     1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200,
     1201, 1202, 1203, 1204, 1205, 1206, 1208, 1209, 1210, 1212,
     1213, 1214, 1211, 1215, 1216, 1207, 1217, 1218, 1219, 1220,
     1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230,
     1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1240, 1241,
     1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251,
     1253, 1239, 1254, 1255, 1256, 1252, 1257, 1258, 1260, 1261,
     1262, 1263, 1264, 1265, 1266, 1267, 1164, 1268, 1165, 1269,
     1259, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278,

     1279, 1280, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289,
     1290, 1291, 1292, 1293, 1294, 1281, 1295, 1296, 1297, 1298,
     1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308,
     1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318,
     1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328,
     1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338,
     1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348,
     1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358,
     1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368,
     1369, 1370, 1372, 1373, 1374, 1375, 1376, 1377, 1379, 1380,

     1381, 1382, 1383, 1378, 1384, 1385, 1277, 1386, 1371, 1387,
     1388, 1389, 1390, 1391, 1393, 1392, 1394, 1395, 1396, 1397,
     1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407,
     1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417,
     1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427,
     1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437,
     1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447,
     1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457,
     1458, 1459, 1460, 1461, 1462, 1463, 1465, 1466, 1464, 1467,
     1468, 1469, 1470, 1471, 1472, 1473, 1474, 1476, 1477, 1478,

     1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488,
     1489, 1475, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497,
     1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507,
     1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517,
     1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527,
     1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537,
     1539, 1538, 1540, 1541, 1542, 1543, 1544, 1546, 1548, 1549,
     1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559,
     1560, 1561, 1545, 1547, 1562, 1563, 1564, 1565, 1566, 1567,
     1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577,

     1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587,
     1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1597, 1599,
     1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609,
     1610, 1611, 1612, 1596, 1598, 1613, 1614, 1615, 1616, 1617,
     1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627,
     1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637,
     1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647,
     1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657,
     1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667,
     1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677,

     1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687,
     1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697,
     1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707,
     1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717,
     1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727,
     1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737,
     1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747,
     1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757,
     1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767,
     1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777,

     1778, 1779,  207,  207,  207,  207,  207,  207,  207,  209,
      211,  209,  209,  209,  209,  209,  210,  210,  210,  213,
      213,  213,  213,  221,  408,  408,  408,  408,  409,  410,
      608,  410,  410,  411,  967,  411,  607,  966,  607,  607,
      965,  964,  963,  962,  961,  960,  959,  958,  957,  800,
      956,  955,  954,  953,  952,  951,  950,  949,  948,  947,
      946,  945,  944,  943,  942,  941,  940,  939,  938,  937,
      936,  935,  934,  933,  932,  931,  930,  929,  928,  927,
      926,  925,  924,  923,  919,  918,  917,  915,  800,  914,
      913,  912,  911,  910,  909,  908,  907,  906,  905,  800,

      904,  903,  902,  901,  900,  899,  898,  897,  896,  895,
      894,  893,  892,  891,  890,  889,  888,  887,  886,  885,
      884,  882,  881,  880,  879,  878,  877,  876,  875,  874,
      873,  872,  871,  870,  869,  868,  867,  866,  865,  864,
      863,  862,  861,  860,  859,  858,  856,  839,  855,  854,
      853,  852,  851,  850,  849,  848,  847,  846,  845,  844,
      843,  842,  841,  840,  839,  838,  837,  836,  835,  834,
      831,  830,  829,  828,  827,  826,  825,  824,  816,  815,
      814,  813,  812,  811,  810,  809,  808,  807,  804,  803,
      802,  801,  800,  799,  798,  797,  796,  795,  794,  793,

      792,  791,  788,  787,  786,  785,  784,  783,  782,  781,
      780,  779,  778,  777,  776,  775,  773,  772,  771,  770,
      769,  768,  767,  766,  765,  763,  762,  760,  759,  758,
      757,  756,  755,  754,  752,  751,  750,  749,  748,  747,
      746,  745,  744,  743,  742,  741,  740,  739,  738,  737,
      736,  735,  734,  733,  732,  730,  729,  728,  727,  726,
      725,  724,  723,  722,  720,  719,  718,  717,  716,  715,
      714,  713,  712,  711,  710,  709,  705,  704,  703,  702,
      701,  700,  698,  697,  696,  694,  693,  692,  691,  690,
      689,  688,  687,  686,  685,  684,  683,  682,  681,  680,

      679,  678,  676,  675,  674,  673,  672,  670,  669,  668,
      667,  666,  665,  664,  663,  662,  660,  659,  658,  655,
      654,  653,  652,  651,  650,  649,  639,  638,  637,  636,
      635,  632,  631,  630,  629,  628,  627,  626,  625,  624,
      623,  622,  620,  619,  617,  616,  615,  614,  613,  612,
      610,  407,  606,  605,  603,  602,  601,  600,  599,  598,
      597,  596,  595,  594,  592,  589,  588,  585,  584,  582,
      579,  578,  577,  576,  575,  574,  573,  572,  571,  566,
      565,  564,  563,  560,  559,  558,  557,  556,  555,  552,
      550,  549,  548,  546,  545,  544,  543,  542,  541,  540,

      539,  538,  537,  536,  533,  531,  530,  528,  526,  525,
      524,  523,  522,  521,  520,  519,  518,  517,  516,  515,
      514,  513,  512,  511,  510,  508,  506,  504,  503,  502,
      501,  500,  499,  498,  497,  495,  494,  493,  492,  491,
      489,  488,  486,  485,  484,  483,  480,  479,  478,  476,
      475,  471,  470,  469,  468,  467,  466,  465,  464,  463,
      462,  461,  460,  459,  458,  457,  456,  455,  454,  453,
      452,  451,  450,  447,  446,  445,  444,  443,  442,  441,
      440,  439,  438,  437,  436,  435,  434,  433,  432,  431,
      430,  429,  428,  427,  425,  419,  418,  417,  414,  413,

     1780,  212,  407,  208,  206,  401,  397,  394,  393,  354,
      352,  342,  339,  338,  337,  331,  330,  301,  296,  271,
      269,  268,  267,  254,  245,  236,  220,  219,  218,  212,
      212, 1780,  208,  206, 1780,  101,  101,   41, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780

    } ;

static yyconst flex_int16_t yy_chk[2198] =
    {   0,
        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,    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,    3,
        5,   71,   31,    3,    5,    3,  232,   71,    3,    3,
       31,   32,    3,  232,    3,    3,    3,    4,    5,   32,
       61,    4,   39,    4,    5,    5,    4,    4,   31,    7,
        4,    6,    4,    4,    4,    6,  144,   32,   60,  144,

        7,    7,   40,   39,  127,   64,   61,    7,    8,    6,
       61,   11,   39,   72,    7,    6,    6,    7,  163,    8,
        8,   72,  127,   40,   11,   11,    8,   12,   72,   11,
      163,   17,   40,    8,   11,   60,    8,   17,   13,   64,
       12,   12,   17,   11,   17,   12,   13,   64,   60,   14,
       12,   13,   13,   67,   67,   17,   17,   14,  801,   12,
       13,   13,   14,   14,   51,   15,   67,   16,   15,   51,
       16,   14,   14,   15,   62,   16,   18,   59,   66,   99,
       66,  802,   18,   15,   51,   16,  222,   18,   99,   18,
       66,   15,   15,   16,   16,   86,   21,   21,   22,   22,

       18,   18,   19,   21,   62,   22,   59,   59,  803,   68,
       59,   21,   86,   22,   21,  222,   22,   21,   62,   22,
       68,   59,   21,   21,   22,   22,  106,   19,   19,   19,
       19,   63,  106,   19,   75,   19,   27,   75,   19,  804,
       19,   74,   19,   27,   19,   19,   27,   74,   28,   19,
       75,   27,   27,   19,   19,   28,   70,   74,   28,   63,
       76,   70,   76,   28,   28,   77,   81,   70,   76,   88,
       83,   83,   27,   88,   97,   63,   88,   91,   91,   92,
       77,   83,   76,   83,   28,   29,   84,  179,   85,   88,
       90,   84,   81,   85,   92,  122,   81,   84,  179,   85,

       97,   87,   96,   87,   97,  103,   81,   87,   84,  122,
       29,   29,   29,  229,   29,  122,   90,   87,   29,  161,
       90,   29,   29,   90,   89,   29,   89,   29,   96,   29,
       98,   98,   89,  131,  131,  103,  161,   29,   33,   96,
      100,   98,  100,   98,  104,  100,   89,  109,  370,  103,
      109,  805,   96,  153,  153,  109,  229,  123,  100,  370,
      123,  109,  152,   33,   33,   33,   33,   33,   33,   33,
      123,   33,  104,   33,   33,   33,   33,   33,   33,  216,
       33,   33,   33,   33,   33,   33,   33,  104,  104,  177,
       33,   35,   35,  108,   35,   35,  152,   35,   35,  115,

      105,  105,   35,  177,  152,  152,  110,  806,  110,  216,
       35,  105,  111,  105,  110,  111,  204,   35,   35,   36,
       36,  108,   36,   36,  110,   36,   36,  111,  111,  115,
       36,  807,  143,  115,  143,  116,  116,  108,   36,  255,
      255,  204,  108,  115,  143,   36,   36,   49,  116,  809,
       49,  116,   49,   49,   49,   49,   49,   49,   49,   49,
       49,   49,   49,  120,   49,   49,  117,  180,  128,  117,
      130,  129,  390,   49,   49,   49,   49,   49,   49,  121,
      121,  117,  117,  183,  180,  282,  390,  183,  133,  120,
      121,  282,  121,  120,  128,  183,   49,  129,  157,  133,

      130,  129,  183,  120,  312,  128,  132,  132,  142,  130,
      133,  129,  134,  191,  130,  134,  135,  132,  128,  132,
      136,  135,  136,  158,  145,  134,  159,  145,  136,  191,
      135,  134,  137,  135,  142,  157,  137,  279,  136,  137,
      145,  279,  142,  312,  387,  142,  162,  137,  157,  158,
      173,  162,  137,  158,  159,  387,  137,  162,  142,  160,
      160,  175,  164,  158,  164,  159,  176,  162,  164,  165,
      159,  165,  160,  168,  168,  172,  173,  165,  164,  174,
      173,  184,  372,  172,  168,  184,  168,  173,  184,  175,
      337,  165,  184,  181,  337,  812,  181,  223,  184,  172,

      176,  181,  372,  178,  178,  175,  176,  181,  176,  174,
      175,  178,  174,  182,  178,  188,  178,  181,  174,  174,
      174,  194,  185,  174,  185,  188,  199,  182,  185,  186,
      188,  186,  195,  182,  186,  186,  196,  187,  185,  187,
      228,  223,  198,  199,  278,  187,  186,  186,  230,  814,
      287,  332,  205,  286,  198,  200,  198,  200,  194,  187,
      278,  301,  195,  200,  196,  195,  198,  205,  205,  292,
      310,  194,  314,  355,  816,  196,  195,  200,  228,  230,
      196,  286,  295,  334,  228,  334,  357,  339,  295,  358,
      301,  412,  230,  287,  371,  332,  292,  339,  310,  301,

      292,  351,  365,  314,  365,  382,  391,  351,  384,  415,
      371,  357,  391,  292,  404,  393,  314,  355,  384,  393,
      404,  423,  426,  451,  357,  382,  441,  452,  441,  481,
      357,  452,  358,  465,  465,  412,  451,  451,  453,  453,
      453,  466,  453,  487,  471,  505,  509,  516,  517,  542,
      531,  565,  415,  517,  466,  471,  531,  516,  423,  573,
      576,  426,  542,  576,  565,  481,  601,  601,  699,  619,
      573,  586,  509,  619,  586,  586,  672,  743,  818,  646,
      810,  672,  743,  509,  808,  505,  810,  808,  819,  487,
      635,  635,  635,  635,  646,  635,  635,  635,  747,  817,

      820,  821,  822,  823,  817,  824,  825,  747,  826,  827,
      828,  829,  747,  830,  699,  831,  832,  833,  833,  834,
      833,  835,  836,  838,  839,  840,  841,  842,  843,  844,
      845,  846,  847,  848,  849,  850,  851,  852,  854,  856,
      857,  858,  859,  860,  861,  862,  862,  862,  864,  865,
      866,  867,  868,  869,  870,  871,  872,  873,  874,  875,
      876,  877,  878,  878,  879,  880,  881,  882,  883,  884,
      885,  886,  888,  889,  890,  891,  892,  880,  880,  893,
      894,  895,  897,  898,  899,  900,  902,  904,  897,  905,
      906,  907,  908,  909,  897,  898,  910,  911,  912,  913,

      914,  915,  897,  916,  918,  919,  920,  921,  922,  923,
      925,  927,  928,  929,  930,  931,  932,  933,  934,  935,
      936,  937,  938,  939,  940,  942,  943,  944,  945,  946,
      947,  948,  949,  950,  951,  952,  953,  954,  955,  956,
      957,  958,  959,  960,  961,  962,  963,  964,  965,  967,
      968,  969,  970,  971,  972,  973,  975,  972,  976,  977,
      978,  979,  980,  982,  983,  984,  985,  986,  987,  988,
      989,  990,  991,  992,  993,  994,  998, 1000, 1001, 1002,
     1006, 1007, 1008, 1009, 1010, 1009, 1011, 1012, 1013, 1014,
     1016, 1017, 1018, 1022, 1023, 1024, 1025, 1026, 1032, 1033,

     1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
     1044, 1047, 1048, 1049, 1050, 1052, 1053, 1054, 1055, 1056,
     1057, 1058, 1059, 1060, 1062, 1063, 1065, 1066, 1067, 1068,
     1069, 1070, 1067, 1071, 1072, 1063, 1073, 1074, 1075, 1076,
     1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
     1087, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097,
     1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107,
     1108, 1095, 1109, 1110, 1111, 1107, 1113, 1114, 1115, 1117,
     1119, 1120, 1121, 1122, 1123, 1124, 1121, 1126, 1121, 1127,
     1114, 1128, 1130, 1132, 1133, 1135, 1137, 1138, 1142, 1143,

     1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1153, 1154,
     1155, 1156, 1157, 1158, 1159, 1145, 1160, 1162, 1163, 1164,
     1165, 1166, 1167, 1168, 1171, 1174, 1175, 1178, 1180, 1181,
     1182, 1183, 1184, 1185, 1186, 1187, 1189, 1190, 1192, 1193,
     1194, 1195, 1196, 1197, 1198, 1200, 1201, 1202, 1203, 1204,
     1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1217, 1218,
     1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1228, 1230,
     1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240,
     1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1251,
     1252, 1253, 1254, 1255, 1258, 1260, 1261, 1262, 1263, 1264,

     1265, 1266, 1267, 1262, 1268, 1269, 1268, 1270, 1253, 1271,
     1277, 1279, 1279, 1279, 1280, 1279, 1281, 1291, 1296, 1297,
     1298, 1299, 1300, 1301, 1302, 1305, 1306, 1307, 1308, 1309,
     1310, 1311, 1313, 1314, 1316, 1317, 1318, 1319, 1320, 1321,
     1322, 1323, 1324, 1327, 1328, 1329, 1330, 1331, 1332, 1333,
     1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1343, 1344,
     1346, 1347, 1348, 1350, 1351, 1352, 1354, 1355, 1356, 1357,
     1359, 1360, 1361, 1362, 1365, 1366, 1367, 1368, 1369, 1370,
     1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1376, 1379,
     1380, 1381, 1383, 1384, 1385, 1388, 1390, 1391, 1392, 1393,

     1394, 1395, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
     1406, 1390, 1407, 1408, 1410, 1411, 1412, 1413, 1414, 1415,
     1416, 1417, 1418, 1419, 1423, 1425, 1427, 1429, 1432, 1433,
     1434, 1435, 1436, 1439, 1440, 1442, 1444, 1445, 1446, 1447,
     1448, 1452, 1453, 1454, 1455, 1456, 1457, 1460, 1463, 1464,
     1465, 1466, 1467, 1468, 1469, 1470, 1472, 1474, 1475, 1475,
     1476, 1475, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1486,
     1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1496, 1497,
     1498, 1499, 1481, 1482, 1500, 1501, 1502, 1503, 1505, 1506,
     1507, 1508, 1510, 1512, 1513, 1514, 1515, 1517, 1518, 1519,

     1520, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530,
     1531, 1532, 1533, 1534, 1536, 1537, 1538, 1541, 1542, 1543,
     1544, 1545, 1546, 1547, 1548, 1550, 1551, 1552, 1553, 1554,
     1556, 1557, 1560, 1541, 1542, 1562, 1563, 1565, 1567, 1568,
     1569, 1570, 1571, 1573, 1574, 1575, 1576, 1577, 1578, 1579,
     1580, 1582, 1583, 1584, 1586, 1587, 1589, 1590, 1591, 1592,
     1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602,
     1603, 1604, 1605, 1606, 1607, 1608, 1610, 1611, 1612, 1613,
     1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624,
     1625, 1626, 1627, 1628, 1629, 1631, 1632, 1633, 1634, 1635,

     1636, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648,
     1649, 1650, 1651, 1652, 1653, 1654, 1655, 1657, 1659, 1660,
     1661, 1663, 1665, 1667, 1670, 1671, 1672, 1674, 1675, 1676,
     1677, 1678, 1679, 1680, 1681, 1682, 1684, 1685, 1686, 1687,
     1692, 1696, 1697, 1698, 1699, 1700, 1701, 1703, 1705, 1706,
     1707, 1708, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717,
     1718, 1719, 1720, 1721, 1722, 1725, 1726, 1727, 1728, 1729,
     1730, 1731, 1732, 1733, 1739, 1740, 1741, 1744, 1745, 1746,
     1747, 1752, 1753, 1754, 1757, 1758, 1759, 1760, 1761, 1762,
     1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1772, 1774,

     1777, 1778, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1782,
     1784, 1782, 1782, 1782, 1782, 1782, 1783, 1783, 1783, 1785,
     1785, 1785, 1785, 1786, 1787, 1787, 1787, 1787, 1788, 1789,
     1792, 1789, 1789, 1790,  799, 1790, 1791,  798, 1791, 1791,
      797,  795,  794,  792,  791,  790,  789,  788,  787,  786,
      785,  784,  782,  781,  780,  778,  777,  776,  775,  774,
      773,  772,  771,  770,  769,  768,  767,  766,  764,  763,
      762,  761,  759,  758,  757,  756,  755,  754,  753,  752,
      751,  750,  749,  748,  746,  745,  744,  742,  741,  739,
      738,  737,  735,  734,  733,  732,  731,  730,  729,  728,

      727,  726,  724,  723,  722,  721,  718,  716,  715,  714,
      713,  712,  711,  710,  709,  707,  706,  705,  704,  702,
      701,  698,  697,  696,  695,  694,  693,  692,  691,  690,
      689,  688,  687,  686,  685,  684,  683,  682,  681,  680,
      678,  677,  676,  675,  674,  673,  671,  670,  669,  668,
      667,  666,  665,  664,  662,  661,  660,  659,  658,  657,
      656,  655,  654,  653,  652,  651,  650,  649,  648,  647,
      643,  642,  641,  640,  639,  638,  637,  636,  634,  631,
      630,  628,  627,  626,  625,  624,  621,  620,  618,  617,
      616,  615,  614,  613,  612,  611,  610,  606,  605,  604,

      603,  602,  600,  599,  598,  597,  596,  595,  594,  593,
      592,  591,  590,  589,  588,  587,  585,  584,  583,  582,
      581,  580,  579,  578,  577,  575,  574,  572,  571,  570,
      569,  568,  567,  566,  564,  563,  562,  561,  560,  559,
      557,  556,  555,  554,  553,  552,  551,  550,  549,  548,
      547,  546,  545,  544,  543,  541,  540,  539,  538,  537,
      536,  534,  533,  532,  530,  529,  528,  527,  526,  525,
      524,  523,  522,  521,  520,  519,  515,  514,  513,  512,
      511,  510,  508,  507,  506,  504,  503,  502,  501,  500,
      499,  498,  497,  496,  495,  494,  493,  492,  491,  490,

      489,  488,  486,  485,  484,  483,  482,  480,  479,  478,
      477,  476,  475,  474,  473,  472,  469,  468,  467,  464,
      462,  461,  460,  458,  457,  454,  450,  447,  444,  443,
      442,  438,  437,  436,  435,  434,  433,  432,  431,  430,
      429,  428,  425,  424,  422,  421,  420,  419,  418,  417,
      413,  408,  406,  405,  403,  402,  401,  400,  399,  398,
      397,  396,  395,  394,  392,  389,  388,  386,  385,  383,
      381,  380,  379,  378,  377,  376,  375,  374,  373,  369,
      368,  367,  366,  364,  363,  362,  361,  360,  359,  356,
      354,  353,  352,  350,  349,  348,  347,  346,  345,  344,

      343,  342,  341,  340,  338,  336,  335,  333,  331,  330,
      329,  328,  327,  326,  325,  324,  323,  322,  321,  320,
      319,  318,  317,  316,  315,  313,  311,  309,  308,  307,
      306,  305,  304,  303,  302,  300,  299,  298,  297,  296,
      294,  293,  291,  290,  289,  288,  285,  284,  283,  281,
      280,  277,  276,  275,  274,  273,  272,  271,  270,  269,
      268,  267,  266,  265,  264,  263,  262,  261,  260,  259,
      258,  257,  256,  254,  253,  251,  250,  249,  248,  247,
      246,  245,  244,  243,  242,  241,  240,  239,  238,  237,
      236,  235,  234,  233,  231,  227,  226,  225,  221,  217,

      214,  213,  210,  207,  206,  197,  193,  190,  189,  171,
      167,  156,  151,  150,  146,  141,  138,  114,  107,   82,
       80,   79,   78,   73,   69,   65,   57,   56,   55,   54,
       52,   50,   45,   43,   41,   10,    9, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780,
     1780, 1780, 1780, 1780, 1780, 1780, 1780

    } ;

static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;

extern int yy_flex_debug;
int yy_flex_debug = 0;

/* The intent behind this definition is that it'll catch
 * any uses of REJECT which flex missed.
 */
#define REJECT reject_used_but_not_detected
static int yy_more_flag = 0;
static int yy_more_len = 0;
#define yymore() ((yy_more_flag) = 1)
#define YY_MORE_ADJ (yy_more_len)
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
#line 1 "cftoken.l"
/*	$NetBSD: cftoken.l,v 1.11.4.2 2007/09/03 18:07:29 mgrooms Exp $	*/
/* Id: cftoken.l,v 1.53 2006/08/22 18:17:17 manubsd Exp */
#line 6 "cftoken.l"
/*
 * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 and 2003 WIDE Project.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the project nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#include "config.h"

#include <sys/types.h>
#include <sys/param.h>
#include <sys/socket.h>

#include <netinet/in.h>
#include PATH_IPSEC_H

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <limits.h>
#include <ctype.h>
#include <glob.h>
#ifdef HAVE_STDARG_H
#include <stdarg.h>
#else
#include <varargs.h>
#endif

#include "var.h"
#include "misc.h"
#include "vmbuf.h"
#include "plog.h"
#include "debug.h"

#include "algorithm.h"
#include "cfparse_proto.h"
#include "cftoken_proto.h"
#include "localconf.h"
#include "oakley.h"
#include "isakmp_var.h"
#include "isakmp.h"
#include "ipsec_doi.h"
#include "policy.h"
#include "proposal.h"
#include "remoteconf.h"
#ifdef GC
#include "gcmalloc.h"
#endif

#include "cfparse.h"

int yyerrorcount = 0;

#if defined(YIPS_DEBUG)
#  define YYDB plog(LLV_DEBUG2, LOCATION, NULL,                                \
		"begin <%d>%s\n", yy_start, yytext);
#  define YYD {                                                                \
	plog(LLV_DEBUG2, LOCATION, NULL, "<%d>%s",                             \
	    yy_start, loglevel >= LLV_DEBUG2 ? "\n" : "");                     \
}
#else
#  define YYDB
#  define YYD
#endif /* defined(YIPS_DEBUG) */

#define MAX_INCLUDE_DEPTH 10

static struct include_stack {
	char *path;
	FILE *fp;
	YY_BUFFER_STATE prevstate;
	int lineno;
	glob_t matches;
	int matchon;
} incstack[MAX_INCLUDE_DEPTH];
static int incstackp = 0;

static int yy_first_time = 1;
/* common seciton */
/*octet		(([01]?{digit}?{digit})|((2([0-4]{digit}))|(25[0-5]))) */






#line 1640 "cftoken.c"

#define INITIAL 0
#define S_INI 1
#define S_PRIV 2
#define S_PTH 3
#define S_INF 4
#define S_LOG 5
#define S_PAD 6
#define S_LST 7
#define S_RTRY 8
#define S_CFG 9
#define S_LDAP 10
#define S_ALGST 11
#define S_ALGCL 12
#define S_SAINF 13
#define S_SAINFS 14
#define S_RMT 15
#define S_RMTS 16
#define S_RMTP 17
#define S_SA 18
#define S_GSSENC 19

#ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
 * down here because we want the user's section 1 to have been scanned first.
 * The user has a chance to override it with an option.
 */
#include <unistd.h>
#endif

#ifndef YY_EXTRA_TYPE
#define YY_EXTRA_TYPE void *
#endif

static int yy_init_globals (void );

/* Accessor methods to globals.
   These are made visible to non-reentrant scanners for convenience. */

int yylex_destroy (void );

int yyget_debug (void );

void yyset_debug (int debug_flag  );

YY_EXTRA_TYPE yyget_extra (void );

void yyset_extra (YY_EXTRA_TYPE user_defined  );

FILE *yyget_in (void );

void yyset_in  (FILE * in_str  );

FILE *yyget_out (void );

void yyset_out  (FILE * out_str  );

int yyget_leng (void );

char *yyget_text (void );

int yyget_lineno (void );

void yyset_lineno (int line_number  );

/* Macros after this point can all be overridden by user definitions in
 * section 1.
 */
#ifdef ANDROID_CHANGES
#include <fcntl.h>

int glob (__const char *__restrict __pattern, int __flags, int *__errfunc, glob_t *__restrict __pglob) {
	// Just simply open the config file instead.
	int fd = open(__pattern, O_RDONLY);
	if (fd != -1) {
		__pglob->gl_pathc = 1;
		__pglob->gl_pathv = (char**) malloc(sizeof(char*));
		__pglob->gl_pathv[0] = __pattern;
		__pglob->gl_offs = 0;
		close(fd);
		return 0;
  	}
	return -1;
}

void globfree(glob_t *pglob) {
	if (pglob->gl_pathc != 0) {
		free(pglob->gl_pathv);
	}
}
#endif

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int yywrap (void );
#else
extern int yywrap (void );
#endif
#endif

    static void yyunput (int c,char *buf_ptr  );
    
#ifndef yytext_ptr
static void yy_flex_strncpy (char *,yyconst char *,int );
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen (yyconst char * );
#endif

#ifndef YY_NO_INPUT

#ifdef __cplusplus
static int yyinput (void );
#else
static int input (void );
#endif

#endif

/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#define YY_READ_BUF_SIZE 8192
#endif

/* Copy whatever the last rule matched to the standard output. */
#ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
 * we now use fwrite().
 */
#define ECHO fwrite( yytext, yyleng, 1, yyout )
#endif

/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 * is returned in "result".
 */
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
		{ \
		int c = '*'; \
		size_t n; \
		for ( n = 0; n < max_size && \
			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
			buf[n] = (char) c; \
		if ( c == '\n' ) \
			buf[n++] = (char) c; \
		if ( c == EOF && ferror( yyin ) ) \
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
		result = n; \
		} \
	else \
		{ \
		errno=0; \
		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
			{ \
			if( errno != EINTR) \
				{ \
				YY_FATAL_ERROR( "input in flex scanner failed" ); \
				break; \
				} \
			errno=0; \
			clearerr(yyin); \
			} \
		}\
\

#endif

/* No semi-colon after return; correct usage is to write "yyterminate();" -
 * we don't want an extra ';' after the "return" because that will cause
 * some compilers to complain about unreachable statements.
 */
#ifndef yyterminate
#define yyterminate() return YY_NULL
#endif

/* Number of entries by which start-condition stack grows. */
#ifndef YY_START_STACK_INCR
#define YY_START_STACK_INCR 25
#endif

/* Report a fatal error. */
#ifndef YY_FATAL_ERROR
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
#endif

/* end tables serialization structures and prototypes */

/* Default declaration of generated scanner - a define so the user can
 * easily add parameters.
 */
#ifndef YY_DECL
#define YY_DECL_IS_OURS 1

extern int yylex (void);

#define YY_DECL int yylex (void)
#endif /* !YY_DECL */

/* Code executed at the beginning of each rule, after yytext and yyleng
 * have been set up.
 */
#ifndef YY_USER_ACTION
#define YY_USER_ACTION
#endif

/* Code executed at the end of each rule. */
#ifndef YY_BREAK
#define YY_BREAK break;
#endif

#define YY_RULE_SETUP \
	YY_USER_ACTION

/** The main scanner function which does all the work.
 */
YY_DECL
{
	register yy_state_type yy_current_state;
	register char *yy_cp, *yy_bp;
	register int yy_act;
    
#line 142 "cftoken.l"


	if (yy_first_time) {
		BEGIN S_INI;
		yy_first_time = 0;
	}


	/* privsep */
#line 1851 "cftoken.c"

	if ( !(yy_init) )
		{
		(yy_init) = 1;

#ifdef YY_USER_INIT
		YY_USER_INIT;
#endif

		if ( ! (yy_start) )
			(yy_start) = 1;	/* first start state */

		if ( ! yyin )
			yyin = stdin;

		if ( ! yyout )
			yyout = stdout;

		if ( ! YY_CURRENT_BUFFER ) {
			yyensure_buffer_stack ();
			YY_CURRENT_BUFFER_LVALUE =
				yy_create_buffer(yyin,YY_BUF_SIZE );
		}

		yy_load_buffer_state( );
		}

	while ( 1 )		/* loops until end-of-file is reached */
		{
		(yy_more_len) = 0;
		if ( (yy_more_flag) )
			{
			(yy_more_len) = (yy_c_buf_p) - (yytext_ptr);
			(yy_more_flag) = 0;
			}
		yy_cp = (yy_c_buf_p);

		/* Support of yytext. */
		*yy_cp = (yy_hold_char);

		/* yy_bp points to the position in yy_ch_buf of the start of
		 * the current run.
		 */
		yy_bp = yy_cp;

		yy_current_state = (yy_start);
yy_match:
		do
			{
			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
			if ( yy_accept[yy_current_state] )
				{
				(yy_last_accepting_state) = yy_current_state;
				(yy_last_accepting_cpos) = yy_cp;
				}
			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
				{
				yy_current_state = (int) yy_def[yy_current_state];
				if ( yy_current_state >= 1781 )
					yy_c = yy_meta[(unsigned int) yy_c];
				}
			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
			++yy_cp;
			}
		while ( yy_base[yy_current_state] != 2138 );

yy_find_action:
		yy_act = yy_accept[yy_current_state];
		if ( yy_act == 0 )
			{ /* have to back up */
			yy_cp = (yy_last_accepting_cpos);
			yy_current_state = (yy_last_accepting_state);
			yy_act = yy_accept[yy_current_state];
			}

		YY_DO_BEFORE_ACTION;

do_action:	/* This label is used only to access EOF actions. */

		switch ( yy_act )
	{ /* beginning of action switch */
			case 0: /* must back up */
			/* undo the effects of YY_DO_BEFORE_ACTION */
			*yy_cp = (yy_hold_char);
			yy_cp = (yy_last_accepting_cpos);
			yy_current_state = (yy_last_accepting_state);
			goto yy_find_action;

case 1:
YY_RULE_SETUP
#line 151 "cftoken.l"
{ BEGIN S_PRIV; YYDB; return(PRIVSEP); }
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 152 "cftoken.l"
{ return(BOC); }
	YY_BREAK
case 3:
YY_RULE_SETUP
#line 153 "cftoken.l"
{ YYD; return(USER); }
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 154 "cftoken.l"
{ YYD; return(GROUP); }
	YY_BREAK
case 5:
YY_RULE_SETUP
#line 155 "cftoken.l"
{ YYD; return(CHROOT); }
	YY_BREAK
case 6:
YY_RULE_SETUP
#line 156 "cftoken.l"
{ BEGIN S_INI; return(EOC); }
	YY_BREAK
/* path */
case 7:
YY_RULE_SETUP
#line 159 "cftoken.l"
{ BEGIN S_PTH; YYDB; return(PATH); }
	YY_BREAK
case 8:
YY_RULE_SETUP
#line 160 "cftoken.l"
{ YYD; yylval.num = LC_PATHTYPE_INCLUDE;
				return(PATHTYPE); }
	YY_BREAK
case 9:
YY_RULE_SETUP
#line 162 "cftoken.l"
{ YYD; yylval.num = LC_PATHTYPE_PSK;
				return(PATHTYPE); }
	YY_BREAK
case 10:
YY_RULE_SETUP
#line 164 "cftoken.l"
{ YYD; yylval.num = LC_PATHTYPE_CERT;
				return(PATHTYPE); }
	YY_BREAK
case 11:
YY_RULE_SETUP
#line 166 "cftoken.l"
{ YYD; yylval.num = LC_PATHTYPE_SCRIPT;
				return(PATHTYPE); }
	YY_BREAK
case 12:
YY_RULE_SETUP
#line 168 "cftoken.l"
{ YYD; yylval.num = LC_PATHTYPE_BACKUPSA;
				return(PATHTYPE); }
	YY_BREAK
case 13:
YY_RULE_SETUP
#line 170 "cftoken.l"
{ YYD; yylval.num = LC_PATHTYPE_PIDFILE;
				return(PATHTYPE); }
	YY_BREAK
case 14:
YY_RULE_SETUP
#line 172 "cftoken.l"
{ BEGIN S_INI; YYDB; return(EOS); }
	YY_BREAK
/* include */
case 15:
YY_RULE_SETUP
#line 175 "cftoken.l"
{ YYDB; return(INCLUDE); }
	YY_BREAK
/* self information */
case 16:
YY_RULE_SETUP
#line 178 "cftoken.l"
{ BEGIN S_INF; YYDB; yywarn("it is obsoleted.  use \"my_identifier\" in each remote directives."); return(IDENTIFIER); }
	YY_BREAK
case 17:
YY_RULE_SETUP
#line 179 "cftoken.l"
{ BEGIN S_INI; return(EOS); }
	YY_BREAK
/* special */
case 18:
YY_RULE_SETUP
#line 182 "cftoken.l"
{ YYDB; return(COMPLEX_BUNDLE); }
	YY_BREAK
/* logging */
case 19:
YY_RULE_SETUP
#line 185 "cftoken.l"
{ BEGIN S_LOG; YYDB; return(LOGGING); }
	YY_BREAK
case 20:
YY_RULE_SETUP
#line 186 "cftoken.l"
{ YYD; yylval.num = LLV_ERROR; return(LOGLEV); }
	YY_BREAK
case 21:
YY_RULE_SETUP
#line 187 "cftoken.l"
{ YYD; yylval.num = LLV_WARNING; return(LOGLEV); }
	YY_BREAK
case 22:
YY_RULE_SETUP
#line 188 "cftoken.l"
{ YYD; yylval.num = LLV_NOTIFY; return(LOGLEV); }
	YY_BREAK
case 23:
YY_RULE_SETUP
#line 189 "cftoken.l"
{ YYD; yylval.num = LLV_INFO; return(LOGLEV); }
	YY_BREAK
case 24:
YY_RULE_SETUP
#line 190 "cftoken.l"
{ YYD; yylval.num = LLV_DEBUG; return(LOGLEV); }
	YY_BREAK
case 25:
YY_RULE_SETUP
#line 191 "cftoken.l"
{ YYD; yylval.num = LLV_DEBUG2; return(LOGLEV); }
	YY_BREAK
case 26:
YY_RULE_SETUP
#line 192 "cftoken.l"
{ YYD; yywarn("it is obsoleted.  use \"debug2\""); yylval.num = LLV_DEBUG2; return(LOGLEV); }
	YY_BREAK
case 27:
YY_RULE_SETUP
#line 193 "cftoken.l"
{ YYD; yywarn("it is obsoleted.  use \"debug2\""); yylval.num = LLV_DEBUG2; return(LOGLEV); }
	YY_BREAK
case 28:
YY_RULE_SETUP
#line 194 "cftoken.l"
{ BEGIN S_INI; return(EOS); }
	YY_BREAK
/* padding */
case 29:
YY_RULE_SETUP
#line 197 "cftoken.l"
{ BEGIN S_PAD; YYDB; return(PADDING); }
	YY_BREAK
case 30:
YY_RULE_SETUP
#line 198 "cftoken.l"
{ return(BOC); }
	YY_BREAK
case 31:
YY_RULE_SETUP
#line 199 "cftoken.l"
{ YYD; return(PAD_RANDOMIZE); }
	YY_BREAK
case 32:
YY_RULE_SETUP
#line 200 "cftoken.l"
{ YYD; return(PAD_RANDOMIZELEN); }
	YY_BREAK
case 33:
YY_RULE_SETUP
#line 201 "cftoken.l"
{ YYD; return(PAD_MAXLEN); }
	YY_BREAK
case 34:
YY_RULE_SETUP
#line 202 "cftoken.l"
{ YYD; return(PAD_STRICT); }
	YY_BREAK
case 35:
YY_RULE_SETUP
#line 203 "cftoken.l"
{ YYD; return(PAD_EXCLTAIL); }
	YY_BREAK
case 36:
YY_RULE_SETUP
#line 204 "cftoken.l"
{ BEGIN S_INI; return(EOC); }
	YY_BREAK
/* listen */
case 37:
YY_RULE_SETUP
#line 207 "cftoken.l"
{ BEGIN S_LST; YYDB; return(LISTEN); }
	YY_BREAK
case 38:
YY_RULE_SETUP
#line 208 "cftoken.l"
{ return(BOC); }
	YY_BREAK
case 39:
YY_RULE_SETUP
#line 209 "cftoken.l"
{ YYD; return(X_ISAKMP); }
	YY_BREAK
case 40:
YY_RULE_SETUP
#line 210 "cftoken.l"
{ YYD; return(X_ISAKMP_NATT); }
	YY_BREAK
case 41:
YY_RULE_SETUP
#line 211 "cftoken.l"
{ YYD; return(X_ADMIN); }
	YY_BREAK
case 42:
YY_RULE_SETUP
#line 212 "cftoken.l"
{ YYD; return(ADMINSOCK); }
	YY_BREAK
case 43:
YY_RULE_SETUP
#line 213 "cftoken.l"
{ YYD; return(DISABLED); }
	YY_BREAK
case 44:
YY_RULE_SETUP
#line 214 "cftoken.l"
{ YYD; return(STRICT_ADDRESS); }
	YY_BREAK
case 45:
YY_RULE_SETUP
#line 215 "cftoken.l"
{ BEGIN S_INI; return(EOC); }
	YY_BREAK
/* ldap config */
case 46:
YY_RULE_SETUP
#line 218 "cftoken.l"
{ BEGIN S_LDAP; YYDB; return(LDAPCFG); }
	YY_BREAK
case 47:
YY_RULE_SETUP
#line 219 "cftoken.l"
{ return(BOC); }
	YY_BREAK
case 48:
YY_RULE_SETUP
#line 220 "cftoken.l"
{ YYD; return(LDAP_PVER); }
	YY_BREAK
case 49:
YY_RULE_SETUP
#line 221 "cftoken.l"
{ YYD; return(LDAP_HOST); }
	YY_BREAK
case 50:
YY_RULE_SETUP
#line 222 "cftoken.l"
{ YYD; return(LDAP_PORT); }
	YY_BREAK
case 51:
YY_RULE_SETUP
#line 223 "cftoken.l"
{ YYD; return(LDAP_BASE); }
	YY_BREAK
case 52:
YY_RULE_SETUP
#line 224 "cftoken.l"
{ YYD; return(LDAP_SUBTREE); }
	YY_BREAK
case 53:
YY_RULE_SETUP
#line 225 "cftoken.l"
{ YYD; return(LDAP_BIND_DN); }
	YY_BREAK
case 54:
YY_RULE_SETUP
#line 226 "cftoken.l"
{ YYD; return(LDAP_BIND_PW); }
	YY_BREAK
case 55:
YY_RULE_SETUP
#line 227 "cftoken.l"
{ YYD; return(LDAP_ATTR_USER); }
	YY_BREAK
case 56:
YY_RULE_SETUP
#line 228 "cftoken.l"
{ YYD; return(LDAP_ATTR_ADDR); }
	YY_BREAK
case 57:
YY_RULE_SETUP
#line 229 "cftoken.l"
{ YYD; return(LDAP_ATTR_MASK); }
	YY_BREAK
case 58:
YY_RULE_SETUP
#line 230 "cftoken.l"
{ YYD; return(LDAP_ATTR_GROUP); }
	YY_BREAK
case 59:
YY_RULE_SETUP
#line 231 "cftoken.l"
{ YYD; return(LDAP_ATTR_MEMBER); }
	YY_BREAK
case 60:
YY_RULE_SETUP
#line 232 "cftoken.l"
{ BEGIN S_INI; return(EOC); }
	YY_BREAK
/* mode_cfg */
case 61:
YY_RULE_SETUP
#line 235 "cftoken.l"
{ BEGIN S_CFG; YYDB; return(MODECFG); }
	YY_BREAK
case 62:
YY_RULE_SETUP
#line 236 "cftoken.l"
{ return(BOC); }
	YY_BREAK
case 63:
YY_RULE_SETUP
#line 237 "cftoken.l"
{ YYD; return(CFG_NET4); }
	YY_BREAK
case 64:
YY_RULE_SETUP
#line 238 "cftoken.l"
{ YYD; return(CFG_MASK4); }
	YY_BREAK
case 65:
YY_RULE_SETUP
#line 239 "cftoken.l"
{ YYD; return(CFG_DNS4); }
	YY_BREAK
case 66:
YY_RULE_SETUP
#line 240 "cftoken.l"
{ YYD; return(CFG_NBNS4); }
	YY_BREAK
case 67:
YY_RULE_SETUP
#line 241 "cftoken.l"
{ YYD; return(CFG_NBNS4); }
	YY_BREAK
case 68:
YY_RULE_SETUP
#line 242 "cftoken.l"
{ YYD; return(CFG_DEFAULT_DOMAIN); }
	YY_BREAK
case 69:
YY_RULE_SETUP
#line 243 "cftoken.l"
{ YYD; return(CFG_AUTH_SOURCE); }
	YY_BREAK
case 70:
YY_RULE_SETUP
#line 244 "cftoken.l"
{ YYD; return(CFG_AUTH_GROUPS); }
	YY_BREAK
case 71:
YY_RULE_SETUP
#line 245 "cftoken.l"
{ YYD; return(CFG_GROUP_SOURCE); }
	YY_BREAK
case 72:
YY_RULE_SETUP
#line 246 "cftoken.l"
{ YYD; return(CFG_CONF_SOURCE); }
	YY_BREAK
case 73:
YY_RULE_SETUP
#line 247 "cftoken.l"
{ YYD; return(CFG_ACCOUNTING); }
	YY_BREAK
case 74:
YY_RULE_SETUP
#line 248 "cftoken.l"
{ YYD; return(CFG_SYSTEM); }
	YY_BREAK
case 75:
YY_RULE_SETUP
#line 249 "cftoken.l"
{ YYD; return(CFG_LOCAL); }
	YY_BREAK
case 76:
YY_RULE_SETUP
#line 250 "cftoken.l"
{ YYD; return(CFG_NONE); }
	YY_BREAK
case 77:
YY_RULE_SETUP
#line 251 "cftoken.l"
{ YYD; return(CFG_RADIUS); }
	YY_BREAK
case 78:
YY_RULE_SETUP
#line 252 "cftoken.l"
{ YYD; return(CFG_PAM); }
	YY_BREAK
case 79:
YY_RULE_SETUP
#line 253 "cftoken.l"
{ YYD; return(CFG_LDAP); }
	YY_BREAK
case 80:
YY_RULE_SETUP
#line 254 "cftoken.l"
{ YYD; return(CFG_POOL_SIZE); }
	YY_BREAK
case 81:
YY_RULE_SETUP
#line 255 "cftoken.l"
{ YYD; return(CFG_MOTD); }
	YY_BREAK
case 82:
YY_RULE_SETUP
#line 256 "cftoken.l"
{ YYD; return(CFG_AUTH_THROTTLE); }
	YY_BREAK
case 83:
YY_RULE_SETUP
#line 257 "cftoken.l"
{ YYD; return(CFG_SPLIT_NETWORK); }
	YY_BREAK
case 84:
YY_RULE_SETUP
#line 258 "cftoken.l"
{ YYD; return(CFG_SPLIT_LOCAL); }
	YY_BREAK
case 85:
YY_RULE_SETUP
#line 259 "cftoken.l"
{ YYD; return(CFG_SPLIT_INCLUDE); }
	YY_BREAK
case 86:
YY_RULE_SETUP
#line 260 "cftoken.l"
{ YYD; return(CFG_SPLIT_DNS); }
	YY_BREAK
case 87:
YY_RULE_SETUP
#line 261 "cftoken.l"
{ YYD; return(CFG_PFS_GROUP); }
	YY_BREAK
case 88:
YY_RULE_SETUP
#line 262 "cftoken.l"
{ YYD; return(CFG_SAVE_PASSWD); }
	YY_BREAK
case 89:
YY_RULE_SETUP
#line 263 "cftoken.l"
{ YYD; return(COMMA); }
	YY_BREAK
case 90:
YY_RULE_SETUP
#line 264 "cftoken.l"
{ BEGIN S_INI; return(EOC); }
	YY_BREAK
/* timer */
case 91:
YY_RULE_SETUP
#line 267 "cftoken.l"
{ BEGIN S_RTRY; YYDB; return(RETRY); }
	YY_BREAK
case 92:
YY_RULE_SETUP
#line 268 "cftoken.l"
{ return(BOC); }
	YY_BREAK
case 93:
YY_RULE_SETUP
#line 269 "cftoken.l"
{ YYD; return(RETRY_COUNTER); }
	YY_BREAK
case 94:
YY_RULE_SETUP
#line 270 "cftoken.l"
{ YYD; return(RETRY_INTERVAL); }
	YY_BREAK
case 95:
YY_RULE_SETUP
#line 271 "cftoken.l"
{ YYD; return(RETRY_PERSEND); }
	YY_BREAK
case 96:
YY_RULE_SETUP
#line 272 "cftoken.l"
{ YYD; return(RETRY_PHASE1); }
	YY_BREAK
case 97:
YY_RULE_SETUP
#line 273 "cftoken.l"
{ YYD; return(RETRY_PHASE2); }
	YY_BREAK
case 98:
YY_RULE_SETUP
#line 274 "cftoken.l"
{ YYD; return(NATT_KA); }
	YY_BREAK
case 99:
YY_RULE_SETUP
#line 275 "cftoken.l"
{ BEGIN S_INI; return(EOC); }
	YY_BREAK
/* sainfo */
case 100:
YY_RULE_SETUP
#line 278 "cftoken.l"
{ BEGIN S_SAINF; YYDB; return(SAINFO); }
	YY_BREAK
case 101:
YY_RULE_SETUP
#line 279 "cftoken.l"
{ YYD; return(ANONYMOUS); }
	YY_BREAK
case 102:
YY_RULE_SETUP
#line 280 "cftoken.l"
{ YYD; return(PORTANY); }
	YY_BREAK
case 103:
YY_RULE_SETUP
#line 281 "cftoken.l"
{ YYD; return(ANY); }
	YY_BREAK
case 104:
YY_RULE_SETUP
#line 282 "cftoken.l"
{ YYD; return(FROM); }
	YY_BREAK
case 105:
YY_RULE_SETUP
#line 283 "cftoken.l"
{ YYD; return(GROUP); }
	YY_BREAK
/* sainfo spec */
case 106:
YY_RULE_SETUP
#line 285 "cftoken.l"
{ BEGIN S_SAINFS; return(BOC); }
	YY_BREAK
case 107:
YY_RULE_SETUP
#line 286 "cftoken.l"
{ BEGIN S_INI; return(EOS); }
	YY_BREAK
case 108:
YY_RULE_SETUP
#line 287 "cftoken.l"
{ BEGIN S_INI; return(EOC); }
	YY_BREAK
case 109:
YY_RULE_SETUP
#line 288 "cftoken.l"
{ YYD; return(PFS_GROUP); }
	YY_BREAK
case 110:
YY_RULE_SETUP
#line 289 "cftoken.l"
{ YYD; return(REMOTEID); }
	YY_BREAK
case 111:
YY_RULE_SETUP
#line 290 "cftoken.l"
{ YYD; yywarn("it is obsoleted.  use \"my_identifier\"."); return(IDENTIFIER); }
	YY_BREAK
case 112:
YY_RULE_SETUP
#line 291 "cftoken.l"
{ YYD; return(MY_IDENTIFIER); }
	YY_BREAK
case 113:
YY_RULE_SETUP
#line 292 "cftoken.l"
{ YYD; return(LIFETIME); }
	YY_BREAK
case 114:
YY_RULE_SETUP
#line 293 "cftoken.l"
{ YYD; return(LIFETYPE_TIME); }
	YY_BREAK
case 115:
YY_RULE_SETUP
#line 294 "cftoken.l"
{ YYD; return(LIFETYPE_BYTE); }
	YY_BREAK
case 116:
YY_RULE_SETUP
#line 295 "cftoken.l"
{ YYD; yylval.num = algclass_ipsec_enc; return(ALGORITHM_CLASS); }
	YY_BREAK
case 117:
YY_RULE_SETUP
#line 296 "cftoken.l"
{ YYD; yylval.num = algclass_ipsec_auth; return(ALGORITHM_CLASS); }
	YY_BREAK
case 118:
YY_RULE_SETUP
#line 297 "cftoken.l"
{ YYD; yylval.num = algclass_ipsec_comp; return(ALGORITHM_CLASS); }
	YY_BREAK
case 119:
YY_RULE_SETUP
#line 298 "cftoken.l"
{ YYD; return(COMMA); }
	YY_BREAK
/* remote */
case 120:
YY_RULE_SETUP
#line 301 "cftoken.l"
{ BEGIN S_RMT; YYDB; return(REMOTE); }
	YY_BREAK
case 121:
YY_RULE_SETUP
#line 302 "cftoken.l"
{ YYD; return(ANONYMOUS); }
	YY_BREAK
case 122:
YY_RULE_SETUP
#line 303 "cftoken.l"
{ YYD; return(INHERIT); }
	YY_BREAK
/* remote spec */
case 123:
YY_RULE_SETUP
#line 305 "cftoken.l"
{ BEGIN S_RMTS; return(BOC); }
	YY_BREAK
case 124:
YY_RULE_SETUP
#line 306 "cftoken.l"
{ BEGIN S_INI; return(EOC); }
	YY_BREAK
case 125:
YY_RULE_SETUP
#line 307 "cftoken.l"
{ YYD; return(EXCHANGE_MODE); }
	YY_BREAK
case 126:
YY_RULE_SETUP
#line 308 "cftoken.l"
{ YYD; /* XXX ignored, but to be handled. */ ; }
	YY_BREAK
case 127:
YY_RULE_SETUP
#line 309 "cftoken.l"
{ YYD; yylval.num = ISAKMP_ETYPE_BASE; return(EXCHANGETYPE); }
	YY_BREAK
case 128:
YY_RULE_SETUP
#line 310 "cftoken.l"
{ YYD; yylval.num = ISAKMP_ETYPE_IDENT; return(EXCHANGETYPE); }
	YY_BREAK
case 129:
YY_RULE_SETUP
#line 311 "cftoken.l"
{ YYD; yylval.num = ISAKMP_ETYPE_AGG; return(EXCHANGETYPE); }
	YY_BREAK
case 130:
YY_RULE_SETUP
#line 312 "cftoken.l"
{ YYD; return(DOI); }
	YY_BREAK
case 131:
YY_RULE_SETUP
#line 313 "cftoken.l"
{ YYD; yylval.num = IPSEC_DOI; return(DOITYPE); }
	YY_BREAK
case 132:
YY_RULE_SETUP
#line 314 "cftoken.l"
{ YYD; return(SITUATION); }
	YY_BREAK
case 133:
YY_RULE_SETUP
#line 315 "cftoken.l"
{ YYD; yylval.num = IPSECDOI_SIT_IDENTITY_ONLY; return(SITUATIONTYPE); }
	YY_BREAK
case 134:
YY_RULE_SETUP
#line 316 "cftoken.l"
{ YYD; yylval.num = IPSECDOI_SIT_SECRECY; return(SITUATIONTYPE); }
	YY_BREAK
case 135:
YY_RULE_SETUP
#line 317 "cftoken.l"
{ YYD; yylval.num = IPSECDOI_SIT_INTEGRITY; return(SITUATIONTYPE); }
	YY_BREAK
case 136:
YY_RULE_SETUP
#line 318 "cftoken.l"
{ YYD; yywarn("it is obsoleted.  use \"my_identifier\"."); return(IDENTIFIER); }
	YY_BREAK
case 137:
YY_RULE_SETUP
#line 319 "cftoken.l"
{ YYD; return(MY_IDENTIFIER); }
	YY_BREAK
case 138:
YY_RULE_SETUP
#line 320 "cftoken.l"
{ YYD; return(XAUTH_LOGIN); /* formerly identifier type login */ }
	YY_BREAK
case 139:
YY_RULE_SETUP
#line 321 "cftoken.l"
{ YYD; return(PEERS_IDENTIFIER); }
	YY_BREAK
case 140:
YY_RULE_SETUP
#line 322 "cftoken.l"
{ YYD; return(VERIFY_IDENTIFIER); }
	YY_BREAK
case 141:
YY_RULE_SETUP
#line 323 "cftoken.l"
{ YYD; return(CERTIFICATE_TYPE); }
	YY_BREAK
case 142:
YY_RULE_SETUP
#line 324 "cftoken.l"
{ YYD; return(CA_TYPE); }
	YY_BREAK
case 143:
YY_RULE_SETUP
#line 325 "cftoken.l"
{ YYD; yylval.num = ISAKMP_CERT_X509SIGN; return(CERT_X509); }
	YY_BREAK
case 144:
YY_RULE_SETUP
#line 326 "cftoken.l"
{ YYD; yylval.num = ISAKMP_CERT_PLAINRSA; return(CERT_PLAINRSA); }
	YY_BREAK
case 145:
YY_RULE_SETUP
#line 327 "cftoken.l"
{ YYD; return(PEERS_CERTFILE); }
	YY_BREAK
case 146:
YY_RULE_SETUP
#line 328 "cftoken.l"
{ YYD; return(DNSSEC); }
	YY_BREAK
case 147:
YY_RULE_SETUP
#line 329 "cftoken.l"
{ YYD; return(VERIFY_CERT); }
	YY_BREAK
case 148:
YY_RULE_SETUP
#line 330 "cftoken.l"
{ YYD; return(SEND_CERT); }
	YY_BREAK
case 149:
YY_RULE_SETUP
#line 331 "cftoken.l"
{ YYD; return(SEND_CR); }
	YY_BREAK
case 150:
YY_RULE_SETUP
#line 332 "cftoken.l"
{ YYD; return(DH_GROUP); }
	YY_BREAK
case 151:
YY_RULE_SETUP
#line 333 "cftoken.l"
{ YYD; return(NONCE_SIZE); }
	YY_BREAK
case 152:
YY_RULE_SETUP
#line 334 "cftoken.l"
{ YYD; return(GENERATE_POLICY); }
	YY_BREAK
case 153:
YY_RULE_SETUP
#line 335 "cftoken.l"
{ YYD; yylval.num = GENERATE_POLICY_UNIQUE; return(GENERATE_LEVEL); }
	YY_BREAK
case 154:
YY_RULE_SETUP
#line 336 "cftoken.l"
{ YYD; yylval.num = GENERATE_POLICY_REQUIRE; return(GENERATE_LEVEL); }
	YY_BREAK
case 155:
YY_RULE_SETUP
#line 337 "cftoken.l"
{ YYD; yywarn("it is obsoleted.  use \"support_proxy\"."); return(SUPPORT_PROXY); }
	YY_BREAK
case 156:
YY_RULE_SETUP
#line 338 "cftoken.l"
{ YYD; return(SUPPORT_PROXY); }
	YY_BREAK
case 157:
YY_RULE_SETUP
#line 339 "cftoken.l"
{ YYD; return(INITIAL_CONTACT); }
	YY_BREAK
case 158:
YY_RULE_SETUP
#line 340 "cftoken.l"
{ YYD; return(NAT_TRAVERSAL); }
	YY_BREAK
case 159:
YY_RULE_SETUP
#line 341 "cftoken.l"
{ YYD; return(REMOTE_FORCE_LEVEL); }
	YY_BREAK
case 160:
YY_RULE_SETUP
#line 342 "cftoken.l"
{ YYD; return(PROPOSAL_CHECK); }
	YY_BREAK
case 161:
YY_RULE_SETUP
#line 343 "cftoken.l"
{ YYD; yylval.num = PROP_CHECK_OBEY; return(PROPOSAL_CHECK_LEVEL); }
	YY_BREAK
case 162:
YY_RULE_SETUP
#line 344 "cftoken.l"
{ YYD; yylval.num = PROP_CHECK_STRICT; return(PROPOSAL_CHECK_LEVEL); }
	YY_BREAK
case 163:
YY_RULE_SETUP
#line 345 "cftoken.l"
{ YYD; yylval.num = PROP_CHECK_EXACT; return(PROPOSAL_CHECK_LEVEL); }
	YY_BREAK
case 164:
YY_RULE_SETUP
#line 346 "cftoken.l"
{ YYD; yylval.num = PROP_CHECK_CLAIM; return(PROPOSAL_CHECK_LEVEL); }
	YY_BREAK
case 165:
YY_RULE_SETUP
#line 347 "cftoken.l"
{ YYD; return(KEEPALIVE); }
	YY_BREAK
case 166:
YY_RULE_SETUP
#line 348 "cftoken.l"
{ YYD; return(PASSIVE); }
	YY_BREAK
case 167:
YY_RULE_SETUP
#line 349 "cftoken.l"
{ YYD; return(LIFETIME); }
	YY_BREAK
case 168:
YY_RULE_SETUP
#line 350 "cftoken.l"
{ YYD; return(LIFETYPE_TIME); }
	YY_BREAK
case 169:
YY_RULE_SETUP
#line 351 "cftoken.l"
{ YYD; return(LIFETYPE_BYTE); }
	YY_BREAK
case 170:
YY_RULE_SETUP
#line 352 "cftoken.l"
{ YYD; return(DPD); }
	YY_BREAK
case 171:
YY_RULE_SETUP
#line 353 "cftoken.l"
{ YYD; return(DPD_DELAY); }
	YY_BREAK
case 172:
YY_RULE_SETUP
#line 354 "cftoken.l"
{ YYD; return(DPD_RETRY); }
	YY_BREAK
case 173:
YY_RULE_SETUP
#line 355 "cftoken.l"
{ YYD; return(DPD_MAXFAIL); }
	YY_BREAK
case 174:
YY_RULE_SETUP
#line 356 "cftoken.l"
{ YYD; return(PH1ID); }
	YY_BREAK
case 175:
YY_RULE_SETUP
#line 357 "cftoken.l"
{ YYD; return(IKE_FRAG); }
	YY_BREAK
case 176:
YY_RULE_SETUP
#line 358 "cftoken.l"
{ YYD; return(ESP_FRAG); }
	YY_BREAK
case 177:
YY_RULE_SETUP
#line 359 "cftoken.l"
{ YYD; return(SCRIPT); }
	YY_BREAK
case 178:
YY_RULE_SETUP
#line 360 "cftoken.l"
{ YYD; return(PHASE1_UP); }
	YY_BREAK
case 179:
YY_RULE_SETUP
#line 361 "cftoken.l"
{ YYD; return(PHASE1_DOWN); }
	YY_BREAK
case 180:
YY_RULE_SETUP
#line 362 "cftoken.l"
{ YYD; return(MODE_CFG); }
	YY_BREAK
case 181:
YY_RULE_SETUP
#line 363 "cftoken.l"
{ YYD; return(WEAK_PHASE1_CHECK); }
	YY_BREAK
/* remote proposal */
case 182:
YY_RULE_SETUP
#line 365 "cftoken.l"
{ BEGIN S_RMTP; YYDB; return(PROPOSAL); }
	YY_BREAK
case 183:
YY_RULE_SETUP
#line 366 "cftoken.l"
{ return(BOC); }
	YY_BREAK
case 184:
YY_RULE_SETUP
#line 367 "cftoken.l"
{ BEGIN S_RMTS; return(EOC); }
	YY_BREAK
case 185:
YY_RULE_SETUP
#line 368 "cftoken.l"
{ YYD; return(LIFETIME); }
	YY_BREAK
case 186:
YY_RULE_SETUP
#line 369 "cftoken.l"
{ YYD; return(LIFETYPE_TIME); }
	YY_BREAK
case 187:
YY_RULE_SETUP
#line 370 "cftoken.l"
{ YYD; return(LIFETYPE_BYTE); }
	YY_BREAK
case 188:
YY_RULE_SETUP
#line 371 "cftoken.l"
{ YYD; yylval.num = algclass_isakmp_enc; return(ALGORITHM_CLASS); }
	YY_BREAK
case 189:
YY_RULE_SETUP
#line 372 "cftoken.l"
{ YYD; yylval.num = algclass_isakmp_ameth; return(ALGORITHM_CLASS); }
	YY_BREAK
case 190:
YY_RULE_SETUP
#line 373 "cftoken.l"
{ YYD; yylval.num = algclass_isakmp_hash; return(ALGORITHM_CLASS); }
	YY_BREAK
case 191:
YY_RULE_SETUP
#line 374 "cftoken.l"
{ YYD; return(DH_GROUP); }
	YY_BREAK
case 192:
YY_RULE_SETUP
#line 375 "cftoken.l"
{ YYD; return(GSS_ID); }
	YY_BREAK
case 193:
YY_RULE_SETUP
#line 376 "cftoken.l"
{ YYD; return(GSS_ID); } /* for back compatibility */
	YY_BREAK
/* GSS ID encoding type (global) */
case 194:
YY_RULE_SETUP
#line 379 "cftoken.l"
{ BEGIN S_GSSENC; YYDB; return(GSS_ID_ENC); }
	YY_BREAK
case 195:
YY_RULE_SETUP
#line 380 "cftoken.l"
{ YYD; yylval.num = LC_GSSENC_LATIN1;
				return(GSS_ID_ENCTYPE); }
	YY_BREAK
case 196:
YY_RULE_SETUP
#line 382 "cftoken.l"
{ YYD; yylval.num = LC_GSSENC_UTF16LE;
				return(GSS_ID_ENCTYPE); }
	YY_BREAK
case 197:
YY_RULE_SETUP
#line 384 "cftoken.l"
{ BEGIN S_INI; YYDB; return(EOS); }
	YY_BREAK
/* parameter */
case 198:
YY_RULE_SETUP
#line 387 "cftoken.l"
{ YYD; yylval.num = TRUE; return(SWITCH); }
	YY_BREAK
case 199:
YY_RULE_SETUP
#line 388 "cftoken.l"
{ YYD; yylval.num = FALSE; return(SWITCH); }
	YY_BREAK
/* prefix */
case 200:
YY_RULE_SETUP
#line 391 "cftoken.l"
{
			YYD;
			yytext++;
			yylval.num = atoi(yytext);
			return(PREFIX);
		}
	YY_BREAK
/* port number */
case 201:
YY_RULE_SETUP
#line 399 "cftoken.l"
{
			char *p = yytext;
			YYD;
			while (*++p != ']') ;
			*p = 0;
			yytext++;
			yylval.num = atoi(yytext);
			return(PORT);
		}
	YY_BREAK
/* address range */
case 202:
YY_RULE_SETUP
#line 410 "cftoken.l"
{
                        YYD;
                        yytext++;
			yylval.val = vmalloc(yyleng + 1);
			if (yylval.val == NULL) {
				yyerror("vmalloc failed");
				return -1;
			}
			memcpy(yylval.val->v, yytext, yylval.val->l);
                        return(ADDRRANGE);
                } 
	YY_BREAK
/* upper protocol */
case 203:
YY_RULE_SETUP
#line 423 "cftoken.l"
{ YYD; yylval.num = IPPROTO_ESP; return(UL_PROTO); }
	YY_BREAK
case 204:
YY_RULE_SETUP
#line 424 "cftoken.l"
{ YYD; yylval.num = IPPROTO_AH; return(UL_PROTO); }
	YY_BREAK
case 205:
YY_RULE_SETUP
#line 425 "cftoken.l"
{ YYD; yylval.num = IPPROTO_IPCOMP; return(UL_PROTO); }
	YY_BREAK
case 206:
YY_RULE_SETUP
#line 426 "cftoken.l"
{ YYD; yylval.num = IPPROTO_ICMP; return(UL_PROTO); }
	YY_BREAK
case 207:
YY_RULE_SETUP
#line 427 "cftoken.l"
{ YYD; yylval.num = IPPROTO_ICMPV6; return(UL_PROTO); }
	YY_BREAK
case 208:
YY_RULE_SETUP
#line 428 "cftoken.l"
{ YYD; yylval.num = IPPROTO_TCP; return(UL_PROTO); }
	YY_BREAK
case 209:
YY_RULE_SETUP
#line 429 "cftoken.l"
{ YYD; yylval.num = IPPROTO_UDP; return(UL_PROTO); }
	YY_BREAK
/* algorithm type */
case 210:
YY_RULE_SETUP
#line 432 "cftoken.l"
{ YYD; yylval.num = algtype_des_iv64;	return(ALGORITHMTYPE); }
	YY_BREAK
case 211:
YY_RULE_SETUP
#line 433 "cftoken.l"
{ YYD; yylval.num = algtype_des;	return(ALGORITHMTYPE); }
	YY_BREAK
case 212:
YY_RULE_SETUP
#line 434 "cftoken.l"
{ YYD; yylval.num = algtype_3des;	return(ALGORITHMTYPE); }
	YY_BREAK
case 213:
YY_RULE_SETUP
#line 435 "cftoken.l"
{ YYD; yylval.num = algtype_rc5;	return(ALGORITHMTYPE); }
	YY_BREAK
case 214:
YY_RULE_SETUP
#line 436 "cftoken.l"
{ YYD; yylval.num = algtype_idea;	return(ALGORITHMTYPE); }
	YY_BREAK
case 215:
YY_RULE_SETUP
#line 437 "cftoken.l"
{ YYD; yylval.num = algtype_cast128;	return(ALGORITHMTYPE); }
	YY_BREAK
case 216:
YY_RULE_SETUP
#line 438 "cftoken.l"
{ YYD; yylval.num = algtype_blowfish;	return(ALGORITHMTYPE); }
	YY_BREAK
case 217:
YY_RULE_SETUP
#line 439 "cftoken.l"
{ YYD; yylval.num = algtype_3idea;	return(ALGORITHMTYPE); }
	YY_BREAK
case 218:
YY_RULE_SETUP
#line 440 "cftoken.l"
{ YYD; yylval.num = algtype_des_iv32;	return(ALGORITHMTYPE); }
	YY_BREAK
case 219:
YY_RULE_SETUP
#line 441 "cftoken.l"
{ YYD; yylval.num = algtype_rc4;	return(ALGORITHMTYPE); }
	YY_BREAK
case 220:
YY_RULE_SETUP
#line 442 "cftoken.l"
{ YYD; yylval.num = algtype_null_enc;	return(ALGORITHMTYPE); }
	YY_BREAK
case 221:
YY_RULE_SETUP
#line 443 "cftoken.l"
{ YYD; yylval.num = algtype_null_enc;	return(ALGORITHMTYPE); }
	YY_BREAK
case 222:
YY_RULE_SETUP
#line 444 "cftoken.l"
{ YYD; yylval.num = algtype_aes;	return(ALGORITHMTYPE); }
	YY_BREAK
case 223:
YY_RULE_SETUP
#line 445 "cftoken.l"
{ YYD; yylval.num = algtype_aes;	return(ALGORITHMTYPE); }
	YY_BREAK
case 224:
YY_RULE_SETUP
#line 446 "cftoken.l"
{ YYD; yylval.num = algtype_twofish;	return(ALGORITHMTYPE); }
	YY_BREAK
case 225:
YY_RULE_SETUP
#line 447 "cftoken.l"
{ YYD; yylval.num = algtype_camellia;	return(ALGORITHMTYPE); }
	YY_BREAK
case 226:
YY_RULE_SETUP
#line 448 "cftoken.l"
{ YYD; yylval.num = algtype_non_auth;	return(ALGORITHMTYPE); }
	YY_BREAK
case 227:
YY_RULE_SETUP
#line 449 "cftoken.l"
{ YYD; yylval.num = algtype_hmac_md5;	return(ALGORITHMTYPE); }
	YY_BREAK
case 228:
YY_RULE_SETUP
#line 450 "cftoken.l"
{ YYD; yylval.num = algtype_hmac_sha1;	return(ALGORITHMTYPE); }
	YY_BREAK
case 229:
YY_RULE_SETUP
#line 451 "cftoken.l"
{ YYD; yylval.num = algtype_hmac_sha2_256;	return(ALGORITHMTYPE); }
	YY_BREAK
case 230:
YY_RULE_SETUP
#line 452 "cftoken.l"
{ YYD; yylval.num = algtype_hmac_sha2_256;	return(ALGORITHMTYPE); }
	YY_BREAK
case 231:
YY_RULE_SETUP
#line 453 "cftoken.l"
{ YYD; yylval.num = algtype_hmac_sha2_384;	return(ALGORITHMTYPE); }
	YY_BREAK
case 232:
YY_RULE_SETUP
#line 454 "cftoken.l"
{ YYD; yylval.num = algtype_hmac_sha2_384;	return(ALGORITHMTYPE); }
	YY_BREAK
case 233:
YY_RULE_SETUP
#line 455 "cftoken.l"
{ YYD; yylval.num = algtype_hmac_sha2_512;	return(ALGORITHMTYPE); }
	YY_BREAK
case 234:
YY_RULE_SETUP
#line 456 "cftoken.l"
{ YYD; yylval.num = algtype_hmac_sha2_512;	return(ALGORITHMTYPE); }
	YY_BREAK
case 235:
YY_RULE_SETUP
#line 457 "cftoken.l"
{ YYD; yylval.num = algtype_des_mac;	return(ALGORITHMTYPE); }
	YY_BREAK
case 236:
YY_RULE_SETUP
#line 458 "cftoken.l"
{ YYD; yylval.num = algtype_kpdk;	return(ALGORITHMTYPE); }
	YY_BREAK
case 237:
YY_RULE_SETUP
#line 459 "cftoken.l"
{ YYD; yylval.num = algtype_md5;	return(ALGORITHMTYPE); }
	YY_BREAK
case 238:
YY_RULE_SETUP
#line 460 "cftoken.l"
{ YYD; yylval.num = algtype_sha1;	return(ALGORITHMTYPE); }
	YY_BREAK
case 239:
YY_RULE_SETUP
#line 461 "cftoken.l"
{ YYD; yylval.num = algtype_tiger;	return(ALGORITHMTYPE); }
	YY_BREAK
case 240:
YY_RULE_SETUP
#line 462 "cftoken.l"
{ YYD; yylval.num = algtype_sha2_256;	return(ALGORITHMTYPE); }
	YY_BREAK
case 241:
YY_RULE_SETUP
#line 463 "cftoken.l"
{ YYD; yylval.num = algtype_sha2_256;	return(ALGORITHMTYPE); }
	YY_BREAK
case 242:
YY_RULE_SETUP
#line 464 "cftoken.l"
{ YYD; yylval.num = algtype_sha2_384;	return(ALGORITHMTYPE); }
	YY_BREAK
case 243:
YY_RULE_SETUP
#line 465 "cftoken.l"
{ YYD; yylval.num = algtype_sha2_384;	return(ALGORITHMTYPE); }
	YY_BREAK
case 244:
YY_RULE_SETUP
#line 466 "cftoken.l"
{ YYD; yylval.num = algtype_sha2_512;	return(ALGORITHMTYPE); }
	YY_BREAK
case 245:
YY_RULE_SETUP
#line 467 "cftoken.l"
{ YYD; yylval.num = algtype_sha2_512;	return(ALGORITHMTYPE); }
	YY_BREAK
case 246:
YY_RULE_SETUP
#line 468 "cftoken.l"
{ YYD; yylval.num = algtype_oui;	return(ALGORITHMTYPE); }
	YY_BREAK
case 247:
YY_RULE_SETUP
#line 469 "cftoken.l"
{ YYD; yylval.num = algtype_deflate;	return(ALGORITHMTYPE); }
	YY_BREAK
case 248:
YY_RULE_SETUP
#line 470 "cftoken.l"
{ YYD; yylval.num = algtype_lzs;	return(ALGORITHMTYPE); }
	YY_BREAK
case 249:
YY_RULE_SETUP
#line 471 "cftoken.l"
{ YYD; yylval.num = algtype_modp768;	return(ALGORITHMTYPE); }
	YY_BREAK
case 250:
YY_RULE_SETUP
#line 472 "cftoken.l"
{ YYD; yylval.num = algtype_modp1024;	return(ALGORITHMTYPE); }
	YY_BREAK
case 251:
YY_RULE_SETUP
#line 473 "cftoken.l"
{ YYD; yylval.num = algtype_modp1536;	return(ALGORITHMTYPE); }
	YY_BREAK
case 252:
YY_RULE_SETUP
#line 474 "cftoken.l"
{ YYD; yylval.num = algtype_ec2n155;	return(ALGORITHMTYPE); }
	YY_BREAK
case 253:
YY_RULE_SETUP
#line 475 "cftoken.l"
{ YYD; yylval.num = algtype_ec2n185;	return(ALGORITHMTYPE); }
	YY_BREAK
case 254:
YY_RULE_SETUP
#line 476 "cftoken.l"
{ YYD; yylval.num = algtype_modp2048;	return(ALGORITHMTYPE); }
	YY_BREAK
case 255:
YY_RULE_SETUP
#line 477 "cftoken.l"
{ YYD; yylval.num = algtype_modp3072;	return(ALGORITHMTYPE); }
	YY_BREAK
case 256:
YY_RULE_SETUP
#line 478 "cftoken.l"
{ YYD; yylval.num = algtype_modp4096;	return(ALGORITHMTYPE); }
	YY_BREAK
case 257:
YY_RULE_SETUP
#line 479 "cftoken.l"
{ YYD; yylval.num = algtype_modp6144;	return(ALGORITHMTYPE); }
	YY_BREAK
case 258:
YY_RULE_SETUP
#line 480 "cftoken.l"
{ YYD; yylval.num = algtype_modp8192;	return(ALGORITHMTYPE); }
	YY_BREAK
case 259:
YY_RULE_SETUP
#line 481 "cftoken.l"
{ YYD; yylval.num = algtype_psk;	return(ALGORITHMTYPE); }
	YY_BREAK
case 260:
YY_RULE_SETUP
#line 482 "cftoken.l"
{ YYD; yylval.num = algtype_rsasig;	return(ALGORITHMTYPE); }
	YY_BREAK
case 261:
YY_RULE_SETUP
#line 483 "cftoken.l"
{ YYD; yylval.num = algtype_dsssig;	return(ALGORITHMTYPE); }
	YY_BREAK
case 262:
YY_RULE_SETUP
#line 484 "cftoken.l"
{ YYD; yylval.num = algtype_rsaenc;	return(ALGORITHMTYPE); }
	YY_BREAK
case 263:
YY_RULE_SETUP
#line 485 "cftoken.l"
{ YYD; yylval.num = algtype_rsarev;	return(ALGORITHMTYPE); }
	YY_BREAK
case 264:
YY_RULE_SETUP
#line 486 "cftoken.l"
{ YYD; yylval.num = algtype_gssapikrb;	return(ALGORITHMTYPE); }
	YY_BREAK
case 265:
YY_RULE_SETUP
#line 487 "cftoken.l"
{
#ifdef ENABLE_HYBRID
	YYD; yylval.num = algtype_hybrid_rsa_s; return(ALGORITHMTYPE);
#else
	yyerror("racoon not configured with --enable-hybrid");
#endif
}
	YY_BREAK
case 266:
YY_RULE_SETUP
#line 494 "cftoken.l"
{
#ifdef ENABLE_HYBRID
	YYD; yylval.num = algtype_hybrid_dss_s; return(ALGORITHMTYPE);
#else
	yyerror("racoon not configured with --enable-hybrid");
#endif
}
	YY_BREAK
case 267:
YY_RULE_SETUP
#line 501 "cftoken.l"
{
#ifdef ENABLE_HYBRID
	YYD; yylval.num = algtype_hybrid_rsa_c; return(ALGORITHMTYPE);
#else
	yyerror("racoon not configured with --enable-hybrid");
#endif
}
	YY_BREAK
case 268:
YY_RULE_SETUP
#line 508 "cftoken.l"
{
#ifdef ENABLE_HYBRID
	YYD; yylval.num = algtype_hybrid_dss_c; return(ALGORITHMTYPE);
#else
	yyerror("racoon not configured with --enable-hybrid");
#endif
}
	YY_BREAK
case 269:
YY_RULE_SETUP
#line 515 "cftoken.l"
{
#ifdef ENABLE_HYBRID
	YYD; yylval.num = algtype_xauth_psk_s; return(ALGORITHMTYPE);
#else
	yyerror("racoon not configured with --enable-hybrid");
#endif
}
	YY_BREAK
case 270:
YY_RULE_SETUP
#line 522 "cftoken.l"
{
#ifdef ENABLE_HYBRID
	YYD; yylval.num = algtype_xauth_psk_c; return(ALGORITHMTYPE);
#else
	yyerror("racoon not configured with --enable-hybrid");
#endif
}
	YY_BREAK
case 271:
YY_RULE_SETUP
#line 529 "cftoken.l"
{
#ifdef ENABLE_HYBRID
	YYD; yylval.num = algtype_xauth_rsa_s; return(ALGORITHMTYPE);
#else
	yyerror("racoon not configured with --enable-hybrid");
#endif
}
	YY_BREAK
case 272:
YY_RULE_SETUP
#line 536 "cftoken.l"
{
#ifdef ENABLE_HYBRID
	YYD; yylval.num = algtype_xauth_rsa_c; return(ALGORITHMTYPE);
#else
	yyerror("racoon not configured with --enable-hybrid");
#endif
}
	YY_BREAK
/* identifier type */
case 273:
YY_RULE_SETUP
#line 546 "cftoken.l"
{ YYD; yywarn("it is obsoleted."); return(VENDORID); }
	YY_BREAK
case 274:
YY_RULE_SETUP
#line 547 "cftoken.l"
{ YYD; yylval.num = IDTYPE_USERFQDN; return(IDENTIFIERTYPE); }
	YY_BREAK
case 275:
YY_RULE_SETUP
#line 548 "cftoken.l"
{ YYD; yylval.num = IDTYPE_FQDN; return(IDENTIFIERTYPE); }
	YY_BREAK
case 276:
YY_RULE_SETUP
#line 549 "cftoken.l"
{ YYD; yylval.num = IDTYPE_KEYID; return(IDENTIFIERTYPE); }
	YY_BREAK
case 277:
YY_RULE_SETUP
#line 550 "cftoken.l"
{ YYD; yylval.num = IDTYPE_ADDRESS; return(IDENTIFIERTYPE); }
	YY_BREAK
case 278:
YY_RULE_SETUP
#line 551 "cftoken.l"
{ YYD; yylval.num = IDTYPE_SUBNET; return(IDENTIFIERTYPE); }
	YY_BREAK
case 279:
YY_RULE_SETUP
#line 552 "cftoken.l"
{ YYD; yylval.num = IDTYPE_ASN1DN; return(IDENTIFIERTYPE); }
	YY_BREAK
case 280:
YY_RULE_SETUP
#line 553 "cftoken.l"
{ YYD; yywarn("certname will be obsoleted in near future."); yylval.num = IDTYPE_ASN1DN; return(IDENTIFIERTYPE); }
	YY_BREAK
/* identifier qualifier */
case 281:
YY_RULE_SETUP
#line 556 "cftoken.l"
{ YYD; yylval.num = IDQUAL_TAG;  return(IDENTIFIERQUAL); }
	YY_BREAK
case 282:
YY_RULE_SETUP
#line 557 "cftoken.l"
{ YYD; yylval.num = IDQUAL_FILE; return(IDENTIFIERQUAL); }
	YY_BREAK
/* units */
case 283:
YY_RULE_SETUP
#line 560 "cftoken.l"
{ YYD; return(UNITTYPE_BYTE); }
	YY_BREAK
case 284:
YY_RULE_SETUP
#line 561 "cftoken.l"
{ YYD; return(UNITTYPE_KBYTES); }
	YY_BREAK
case 285:
YY_RULE_SETUP
#line 562 "cftoken.l"
{ YYD; return(UNITTYPE_MBYTES); }
	YY_BREAK
case 286:
YY_RULE_SETUP
#line 563 "cftoken.l"
{ YYD; return(UNITTYPE_TBYTES); }
	YY_BREAK
case 287:
YY_RULE_SETUP
#line 564 "cftoken.l"
{ YYD; return(UNITTYPE_SEC); }
	YY_BREAK
case 288:
YY_RULE_SETUP
#line 565 "cftoken.l"
{ YYD; return(UNITTYPE_MIN); }
	YY_BREAK
case 289:
YY_RULE_SETUP
#line 566 "cftoken.l"
{ YYD; return(UNITTYPE_HOUR); }
	YY_BREAK
/* boolean */
case 290:
YY_RULE_SETUP
#line 569 "cftoken.l"
{ YYD; yylval.num = TRUE; return(BOOLEAN); }
	YY_BREAK
case 291:
YY_RULE_SETUP
#line 570 "cftoken.l"
{ YYD; yylval.num = FALSE; return(BOOLEAN); }
	YY_BREAK
case 292:
YY_RULE_SETUP
#line 572 "cftoken.l"
{
			char *bp;

			YYD;
			yylval.num = strtol(yytext, &bp, 10);
			return(NUMBER);
		}
	YY_BREAK
case 293:
YY_RULE_SETUP
#line 580 "cftoken.l"
{
			char *p;

			YYD; 
			yylval.val = vmalloc(yyleng + (yyleng & 1) + 1);
			if (yylval.val == NULL) {
				yyerror("vmalloc failed");
				return -1;
			}

			p = yylval.val->v;
			*p++ = '0';
			*p++ = 'x';

			/* fixed string if length is odd. */
			if (yyleng & 1)
				*p++ = '0';
			memcpy(p, &yytext[2], yyleng - 1);

			return(HEXSTRING);
		}
	YY_BREAK
case 294:
/* rule 294 can match eol */
YY_RULE_SETUP
#line 602 "cftoken.l"
{
			char *p = yytext;

			YYD;
			while (*++p != '"') ;
			*p = '\0';

			yylval.val = vmalloc(yyleng - 1);
			if (yylval.val == NULL) {
				yyerror("vmalloc failed");
				return -1;
			}
			memcpy(yylval.val->v, &yytext[1], yylval.val->l);

			return(QUOTEDSTRING);
		}
	YY_BREAK
case 295:
YY_RULE_SETUP
#line 619 "cftoken.l"
{
			YYD;

			yylval.val = vmalloc(yyleng + 1);
			if (yylval.val == NULL) {
				yyerror("vmalloc failed");
				return -1;
			}
			memcpy(yylval.val->v, yytext, yylval.val->l);

			return(ADDRSTRING);
		}
	YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(S_INI):
case YY_STATE_EOF(S_PRIV):
case YY_STATE_EOF(S_PTH):
case YY_STATE_EOF(S_INF):
case YY_STATE_EOF(S_LOG):
case YY_STATE_EOF(S_PAD):
case YY_STATE_EOF(S_LST):
case YY_STATE_EOF(S_RTRY):
case YY_STATE_EOF(S_CFG):
case YY_STATE_EOF(S_LDAP):
case YY_STATE_EOF(S_ALGST):
case YY_STATE_EOF(S_ALGCL):
case YY_STATE_EOF(S_SAINF):
case YY_STATE_EOF(S_SAINFS):
case YY_STATE_EOF(S_RMT):
case YY_STATE_EOF(S_RMTS):
case YY_STATE_EOF(S_RMTP):
case YY_STATE_EOF(S_SA):
case YY_STATE_EOF(S_GSSENC):
#line 632 "cftoken.l"
{
			yy_delete_buffer(YY_CURRENT_BUFFER);
			incstackp--;
    nextfile:
			if (incstack[incstackp].matchon <
			    incstack[incstackp].matches.gl_pathc) {
				char* filepath = incstack[incstackp].matches.gl_pathv[incstack[incstackp].matchon];
				incstack[incstackp].matchon++;
				incstackp++;
				if (yycf_set_buffer(filepath) != 0) {
					incstackp--;
					goto nextfile;
				}
				yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE));
				BEGIN(S_INI);
			} else {
				globfree(&incstack[incstackp].matches);
				if (incstackp == 0)
					yyterminate();
				else
					yy_switch_to_buffer(incstack[incstackp].prevstate);
			}
		}
	YY_BREAK
/* ... */
case 296:
YY_RULE_SETUP
#line 657 "cftoken.l"
{ ; }
	YY_BREAK
case 297:
/* rule 297 can match eol */
YY_RULE_SETUP
#line 658 "cftoken.l"
{ incstack[incstackp].lineno++; }
	YY_BREAK
case 298:
YY_RULE_SETUP
#line 659 "cftoken.l"
{ YYD; }
	YY_BREAK
case 299:
YY_RULE_SETUP
#line 660 "cftoken.l"
{ return(EOS); }
	YY_BREAK
case 300:
YY_RULE_SETUP
#line 661 "cftoken.l"
{ yymore(); }
	YY_BREAK
case 301:
YY_RULE_SETUP
#line 663 "cftoken.l"
ECHO;
	YY_BREAK
#line 3650 "cftoken.c"

	case YY_END_OF_BUFFER:
		{
		/* Amount of text matched not including the EOB char. */
		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;

		/* Undo the effects of YY_DO_BEFORE_ACTION. */
		*yy_cp = (yy_hold_char);
		YY_RESTORE_YY_MORE_OFFSET

		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
			{
			/* We're scanning a new file or input source.  It's
			 * possible that this happened because the user
			 * just pointed yyin at a new source and called
			 * yylex().  If so, then we have to assure
			 * consistency between YY_CURRENT_BUFFER and our
			 * globals.  Here is the right place to do so, because
			 * this is the first action (other than possibly a
			 * back-up) that will match for the new input source.
			 */
			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
			}

		/* Note that here we test for yy_c_buf_p "<=" to the position
		 * of the first EOB in the buffer, since yy_c_buf_p will
		 * already have been incremented past the NUL character
		 * (since all states make transitions on EOB to the
		 * end-of-buffer state).  Contrast this with the test
		 * in input().
		 */
		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
			{ /* This was really a NUL. */
			yy_state_type yy_next_state;

			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;

			yy_current_state = yy_get_previous_state(  );

			/* Okay, we're now positioned to make the NUL
			 * transition.  We couldn't have
			 * yy_get_previous_state() go ahead and do it
			 * for us because it doesn't know how to deal
			 * with the possibility of jamming (and we don't
			 * want to build jamming into it because then it
			 * will run more slowly).
			 */

			yy_next_state = yy_try_NUL_trans( yy_current_state );

			yy_bp = (yytext_ptr) + YY_MORE_ADJ;

			if ( yy_next_state )
				{
				/* Consume the NUL. */
				yy_cp = ++(yy_c_buf_p);
				yy_current_state = yy_next_state;
				goto yy_match;
				}

			else
				{
				yy_cp = (yy_c_buf_p);
				goto yy_find_action;
				}
			}

		else switch ( yy_get_next_buffer(  ) )
			{
			case EOB_ACT_END_OF_FILE:
				{
				(yy_did_buffer_switch_on_eof) = 0;

				if ( yywrap( ) )
					{
					/* Note: because we've taken care in
					 * yy_get_next_buffer() to have set up
					 * yytext, we can now set up
					 * yy_c_buf_p so that if some total
					 * hoser (like flex itself) wants to
					 * call the scanner after we return the
					 * YY_NULL, it'll still work - another
					 * YY_NULL will get returned.
					 */
					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;

					yy_act = YY_STATE_EOF(YY_START);
					goto do_action;
					}

				else
					{
					if ( ! (yy_did_buffer_switch_on_eof) )
						YY_NEW_FILE;
					}
				break;
				}

			case EOB_ACT_CONTINUE_SCAN:
				(yy_c_buf_p) =
					(yytext_ptr) + yy_amount_of_matched_text;

				yy_current_state = yy_get_previous_state(  );

				yy_cp = (yy_c_buf_p);
				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
				goto yy_match;

			case EOB_ACT_LAST_MATCH:
				(yy_c_buf_p) =
				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];

				yy_current_state = yy_get_previous_state(  );

				yy_cp = (yy_c_buf_p);
				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
				goto yy_find_action;
			}
		break;
		}

	default:
		YY_FATAL_ERROR(
			"fatal flex scanner internal error--no action found" );
	} /* end of action switch */
		} /* end of scanning one token */
} /* end of yylex */

/* yy_get_next_buffer - try to read in a new buffer
 *
 * Returns a code representing an action:
 *	EOB_ACT_LAST_MATCH -
 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 *	EOB_ACT_END_OF_FILE - end of file
 */
static int yy_get_next_buffer (void)
{
    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
	register char *source = (yytext_ptr);
	register int number_to_move, i;
	int ret_val;

	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
		YY_FATAL_ERROR(
		"fatal flex scanner internal error--end of buffer missed" );

	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
		{ /* Don't try to fill the buffer, so this is an EOF. */
		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
			{
			/* We matched a single character, the EOB, so
			 * treat this as a final EOF.
			 */
			return EOB_ACT_END_OF_FILE;
			}

		else
			{
			/* We matched some text prior to the EOB, first
			 * process it.
			 */
			return EOB_ACT_LAST_MATCH;
			}
		}

	/* Try to read more data. */

	/* First move last chars to start of buffer. */
	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;

	for ( i = 0; i < number_to_move; ++i )
		*(dest++) = *(source++);

	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
		/* don't do the read, it's not guaranteed to return an EOF,
		 * just force an EOF
		 */
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;

	else
		{
			int num_to_read =
			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;

		while ( num_to_read <= 0 )
			{ /* Not enough room in the buffer - grow it. */

			/* just a shorter name for the current buffer */
			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;

			int yy_c_buf_p_offset =
				(int) ((yy_c_buf_p) - b->yy_ch_buf);

			if ( b->yy_is_our_buffer )
				{
				int new_size = b->yy_buf_size * 2;

				if ( new_size <= 0 )
					b->yy_buf_size += b->yy_buf_size / 8;
				else
					b->yy_buf_size *= 2;

				b->yy_ch_buf = (char *)
					/* Include room in for 2 EOB chars. */
					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
				}
			else
				/* Can't grow it, we don't own it. */
				b->yy_ch_buf = 0;

			if ( ! b->yy_ch_buf )
				YY_FATAL_ERROR(
				"fatal error - scanner input buffer overflow" );

			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];

			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
						number_to_move - 1;

			}

		if ( num_to_read > YY_READ_BUF_SIZE )
			num_to_read = YY_READ_BUF_SIZE;

		/* Read in more data. */
		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
			(yy_n_chars), (size_t) num_to_read );

		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
		}

	if ( (yy_n_chars) == 0 )
		{
		if ( number_to_move == YY_MORE_ADJ )
			{
			ret_val = EOB_ACT_END_OF_FILE;
			yyrestart(yyin  );
			}

		else
			{
			ret_val = EOB_ACT_LAST_MATCH;
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
				YY_BUFFER_EOF_PENDING;
			}
		}

	else
		ret_val = EOB_ACT_CONTINUE_SCAN;

	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
		/* Extend the array by 50%, plus the number we really need. */
		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
	}

	(yy_n_chars) += number_to_move;
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;

	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];

	return ret_val;
}

/* yy_get_previous_state - get the state just before the EOB char was reached */

    static yy_state_type yy_get_previous_state (void)
{
	register yy_state_type yy_current_state;
	register char *yy_cp;
    
	yy_current_state = (yy_start);

	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
		{
		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
		if ( yy_accept[yy_current_state] )
			{
			(yy_last_accepting_state) = yy_current_state;
			(yy_last_accepting_cpos) = yy_cp;
			}
		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
			{
			yy_current_state = (int) yy_def[yy_current_state];
			if ( yy_current_state >= 1781 )
				yy_c = yy_meta[(unsigned int) yy_c];
			}
		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
		}

	return yy_current_state;
}

/* yy_try_NUL_trans - try to make a transition on the NUL character
 *
 * synopsis
 *	next_state = yy_try_NUL_trans( current_state );
 */
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
{
	register int yy_is_jam;
    	register char *yy_cp = (yy_c_buf_p);

	register YY_CHAR yy_c = 1;
	if ( yy_accept[yy_current_state] )
		{
		(yy_last_accepting_state) = yy_current_state;
		(yy_last_accepting_cpos) = yy_cp;
		}
	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
		{
		yy_current_state = (int) yy_def[yy_current_state];
		if ( yy_current_state >= 1781 )
			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 == 1780);

	return yy_is_jam ? 0 : yy_current_state;
}

    static void yyunput (int c, register char * yy_bp )
{
	register char *yy_cp;
    
    yy_cp = (yy_c_buf_p);

	/* undo effects of setting up yytext */
	*yy_cp = (yy_hold_char);

	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
		{ /* need to shift things up to make room */
		/* +2 for EOB chars. */
		register int number_to_move = (yy_n_chars) + 2;
		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
		register char *source =
				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];

		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
			*--dest = *--source;

		yy_cp += (int) (dest - source);
		yy_bp += (int) (dest - source);
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;

		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
			YY_FATAL_ERROR( "flex scanner push-back overflow" );
		}

	*--yy_cp = (char) c;

	(yytext_ptr) = yy_bp;
	(yy_hold_char) = *yy_cp;
	(yy_c_buf_p) = yy_cp;
}

#ifndef YY_NO_INPUT
#ifdef __cplusplus
    static int yyinput (void)
#else
    static int input  (void)
#endif

{
	int c;
    
	*(yy_c_buf_p) = (yy_hold_char);

	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
		{
		/* yy_c_buf_p now points to the character we want to return.
		 * If this occurs *before* the EOB characters, then it's a
		 * valid NUL; if not, then we've hit the end of the buffer.
		 */
		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
			/* This was really a NUL. */
			*(yy_c_buf_p) = '\0';

		else
			{ /* need more input */
			int offset = (yy_c_buf_p) - (yytext_ptr);
			++(yy_c_buf_p);

			switch ( yy_get_next_buffer(  ) )
				{
				case EOB_ACT_LAST_MATCH:
					/* This happens because yy_g_n_b()
					 * sees that we've accumulated a
					 * token and flags that we need to
					 * try matching the token before
					 * proceeding.  But for input(),
					 * there's no matching to consider.
					 * So convert the EOB_ACT_LAST_MATCH
					 * to EOB_ACT_END_OF_FILE.
					 */

					/* Reset buffer status. */
					yyrestart(yyin );

					/*FALLTHROUGH*/

				case EOB_ACT_END_OF_FILE:
					{
					if ( yywrap( ) )
						return EOF;

					if ( ! (yy_did_buffer_switch_on_eof) )
						YY_NEW_FILE;
#ifdef __cplusplus
					return yyinput();
#else
					return input();
#endif
					}

				case EOB_ACT_CONTINUE_SCAN:
					(yy_c_buf_p) = (yytext_ptr) + offset;
					break;
				}
			}
		}

	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
	*(yy_c_buf_p) = '\0';	/* preserve yytext */
	(yy_hold_char) = *++(yy_c_buf_p);

	return c;
}
#endif	/* ifndef YY_NO_INPUT */

/** Immediately switch to a different input stream.
 * @param input_file A readable stream.
 * 
 * @note This function does not reset the start condition to @c INITIAL .
 */
    void yyrestart  (FILE * input_file )
{
    
	if ( ! YY_CURRENT_BUFFER ){
        yyensure_buffer_stack ();
		YY_CURRENT_BUFFER_LVALUE =
            yy_create_buffer(yyin,YY_BUF_SIZE );
	}

	yy_init_buffer(YY_CURRENT_BUFFER,input_file );
	yy_load_buffer_state( );
}

/** Switch to a different input buffer.
 * @param new_buffer The new input buffer.
 * 
 */
    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
{
    
	/* TODO. We should be able to replace this entire function body
	 * with
	 *		yypop_buffer_state();
	 *		yypush_buffer_state(new_buffer);
     */
	yyensure_buffer_stack ();
	if ( YY_CURRENT_BUFFER == new_buffer )
		return;

	if ( YY_CURRENT_BUFFER )
		{
		/* Flush out information for old buffer. */
		*(yy_c_buf_p) = (yy_hold_char);
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
		}

	YY_CURRENT_BUFFER_LVALUE = new_buffer;
	yy_load_buffer_state( );

	/* We don't actually know whether we did this switch during
	 * EOF (yywrap()) processing, but the only time this flag
	 * is looked at is after yywrap() is called, so it's safe
	 * to go ahead and always set it.
	 */
	(yy_did_buffer_switch_on_eof) = 1;
}

static void yy_load_buffer_state  (void)
{
    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
	(yy_hold_char) = *(yy_c_buf_p);
}

/** Allocate and initialize an input buffer state.
 * @param file A readable stream.
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
 * 
 * @return the allocated buffer state.
 */
    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
{
	YY_BUFFER_STATE b;
    
	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_buf_size = size;

	/* yy_ch_buf has to be 2 characters longer than the size given because
	 * we need to put in 2 end-of-buffer characters.
	 */
	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
	if ( ! b->yy_ch_buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_is_our_buffer = 1;

	yy_init_buffer(b,file );

	return b;
}

/** Destroy the buffer.
 * @param b a buffer created with yy_create_buffer()
 * 
 */
    void yy_delete_buffer (YY_BUFFER_STATE  b )
{
    
	if ( ! b )
		return;

	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;

	if ( b->yy_is_our_buffer )
		yyfree((void *) b->yy_ch_buf  );

	yyfree((void *) b  );
}

#ifndef __cplusplus
extern int isatty (int );
#endif /* __cplusplus */
    
/* Initializes or reinitializes a buffer.
 * This function is sometimes called more than once on the same buffer,
 * such as during a yyrestart() or at EOF.
 */
    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )

{
	int oerrno = errno;
    
	yy_flush_buffer(b );

	b->yy_input_file = file;
	b->yy_fill_buffer = 1;

    /* If b is the current buffer, then yy_init_buffer was _probably_
     * called from yyrestart() or through yy_get_next_buffer.
     * In that case, we don't want to reset the lineno or column.
     */
    if (b != YY_CURRENT_BUFFER){
        b->yy_bs_lineno = 1;
        b->yy_bs_column = 0;
    }

        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
    
	errno = oerrno;
}

/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
 * 
 */
    void yy_flush_buffer (YY_BUFFER_STATE  b )
{
    	if ( ! b )
		return;

	b->yy_n_chars = 0;

	/* We always need two end-of-buffer characters.  The first causes
	 * a transition to the end-of-buffer state.  The second causes
	 * a jam in that state.
	 */
	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;

	b->yy_buf_pos = &b->yy_ch_buf[0];

	b->yy_at_bol = 1;
	b->yy_buffer_status = YY_BUFFER_NEW;

	if ( b == YY_CURRENT_BUFFER )
		yy_load_buffer_state( );
}

/** Pushes the new state onto the stack. The new state becomes
 *  the current state. This function will allocate the stack
 *  if necessary.
 *  @param new_buffer The new state.
 *  
 */
void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
{
    	if (new_buffer == NULL)
		return;

	yyensure_buffer_stack();

	/* This block is copied from yy_switch_to_buffer. */
	if ( YY_CURRENT_BUFFER )
		{
		/* Flush out information for old buffer. */
		*(yy_c_buf_p) = (yy_hold_char);
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
		}

	/* Only push if top exists. Otherwise, replace top. */
	if (YY_CURRENT_BUFFER)
		(yy_buffer_stack_top)++;
	YY_CURRENT_BUFFER_LVALUE = new_buffer;

	/* copied from yy_switch_to_buffer. */
	yy_load_buffer_state( );
	(yy_did_buffer_switch_on_eof) = 1;
}

/** Removes and deletes the top of the stack, if present.
 *  The next element becomes the new top.
 *  
 */
void yypop_buffer_state (void)
{
    	if (!YY_CURRENT_BUFFER)
		return;

	yy_delete_buffer(YY_CURRENT_BUFFER );
	YY_CURRENT_BUFFER_LVALUE = NULL;
	if ((yy_buffer_stack_top) > 0)
		--(yy_buffer_stack_top);

	if (YY_CURRENT_BUFFER) {
		yy_load_buffer_state( );
		(yy_did_buffer_switch_on_eof) = 1;
	}
}

/* Allocates the stack if it does not exist.
 *  Guarantees space for at least one push.
 */
static void yyensure_buffer_stack (void)
{
	int num_to_alloc;
    
	if (!(yy_buffer_stack)) {

		/* First allocation is just for 2 elements, since we don't know if this
		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
		 * immediate realloc on the next call.
         */
		num_to_alloc = 1;
		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
								(num_to_alloc * sizeof(struct yy_buffer_state*)
								);
		if ( ! (yy_buffer_stack) )
			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
								  
		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
				
		(yy_buffer_stack_max) = num_to_alloc;
		(yy_buffer_stack_top) = 0;
		return;
	}

	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){

		/* Increase the buffer to prepare for a possible push. */
		int grow_size = 8 /* arbitrary grow size */;

		num_to_alloc = (yy_buffer_stack_max) + grow_size;
		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
								((yy_buffer_stack),
								num_to_alloc * sizeof(struct yy_buffer_state*)
								);
		if ( ! (yy_buffer_stack) )
			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );

		/* zero only the new slots.*/
		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
		(yy_buffer_stack_max) = num_to_alloc;
	}
}

/** Setup the input buffer state to scan directly from a user-specified character buffer.
 * @param base the character buffer
 * @param size the size in bytes of the character buffer
 * 
 * @return the newly allocated buffer state object. 
 */
YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
{
	YY_BUFFER_STATE b;
    
	if ( size < 2 ||
	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
	     base[size-1] != YY_END_OF_BUFFER_CHAR )
		/* They forgot to leave room for the EOB's. */
		return 0;

	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );

	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
	b->yy_buf_pos = b->yy_ch_buf = base;
	b->yy_is_our_buffer = 0;
	b->yy_input_file = 0;
	b->yy_n_chars = b->yy_buf_size;
	b->yy_is_interactive = 0;
	b->yy_at_bol = 1;
	b->yy_fill_buffer = 0;
	b->yy_buffer_status = YY_BUFFER_NEW;

	yy_switch_to_buffer(b  );

	return b;
}

/** Setup the input buffer state to scan a string. The next call to yylex() will
 * scan from a @e copy of @a str.
 * @param yystr a NUL-terminated string to scan
 * 
 * @return the newly allocated buffer state object.
 * @note If you want to scan bytes that may contain NUL values, then use
 *       yy_scan_bytes() instead.
 */
YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
{
    
	return yy_scan_bytes(yystr,strlen(yystr) );
}

/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
 * scan from a @e copy of @a bytes.
 * @param bytes the byte buffer to scan
 * @param len the number of bytes in the buffer pointed to by @a bytes.
 * 
 * @return the newly allocated buffer state object.
 */
YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
{
	YY_BUFFER_STATE b;
	char *buf;
	yy_size_t n;
	int i;
    
	/* Get memory for full buffer, including space for trailing EOB's. */
	n = _yybytes_len + 2;
	buf = (char *) yyalloc(n  );
	if ( ! buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );

	for ( i = 0; i < _yybytes_len; ++i )
		buf[i] = yybytes[i];

	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;

	b = yy_scan_buffer(buf,n );
	if ( ! b )
		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );

	/* It's okay to grow etc. this buffer, and we should throw it
	 * away when we're done.
	 */
	b->yy_is_our_buffer = 1;

	return b;
}

#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif

static void yy_fatal_error (yyconst char* msg )
{
    	(void) fprintf( stderr, "%s\n", msg );
	exit( YY_EXIT_FAILURE );
}

/* Redefine yyless() so it works in section 3 code. */

#undef yyless
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
		yytext[yyleng] = (yy_hold_char); \
		(yy_c_buf_p) = yytext + yyless_macro_arg; \
		(yy_hold_char) = *(yy_c_buf_p); \
		*(yy_c_buf_p) = '\0'; \
		yyleng = yyless_macro_arg; \
		} \
	while ( 0 )

/* Accessor  methods (get/set functions) to struct members. */

/** Get the current line number.
 * 
 */
int yyget_lineno  (void)
{
        
    return yylineno;
}

/** Get the input stream.
 * 
 */
FILE *yyget_in  (void)
{
        return yyin;
}

/** Get the output stream.
 * 
 */
FILE *yyget_out  (void)
{
        return yyout;
}

/** Get the length of the current token.
 * 
 */
int yyget_leng  (void)
{
        return yyleng;
}

/** Get the current token.
 * 
 */

char *yyget_text  (void)
{
        return yytext;
}

/** Set the current line number.
 * @param line_number
 * 
 */
void yyset_lineno (int  line_number )
{
    
    yylineno = line_number;
}

/** Set the input stream. This does not discard the current
 * input buffer.
 * @param in_str A readable stream.
 * 
 * @see yy_switch_to_buffer
 */
void yyset_in (FILE *  in_str )
{
        yyin = in_str ;
}

void yyset_out (FILE *  out_str )
{
        yyout = out_str ;
}

int yyget_debug  (void)
{
        return yy_flex_debug;
}

void yyset_debug (int  bdebug )
{
        yy_flex_debug = bdebug ;
}

static int yy_init_globals (void)
{
        /* Initialization is the same as for the non-reentrant scanner.
     * This function is called from yylex_destroy(), so don't allocate here.
     */

    (yy_buffer_stack) = 0;
    (yy_buffer_stack_top) = 0;
    (yy_buffer_stack_max) = 0;
    (yy_c_buf_p) = (char *) 0;
    (yy_init) = 0;
    (yy_start) = 0;

/* Defined in main.c */
#ifdef YY_STDINIT
    yyin = stdin;
    yyout = stdout;
#else
    yyin = (FILE *) 0;
    yyout = (FILE *) 0;
#endif

    /* For future reference: Set errno on error, since we are called by
     * yylex_init()
     */
    return 0;
}

/* yylex_destroy is for both reentrant and non-reentrant scanners. */
int yylex_destroy  (void)
{
    
    /* Pop the buffer stack, destroying each element. */
	while(YY_CURRENT_BUFFER){
		yy_delete_buffer(YY_CURRENT_BUFFER  );
		YY_CURRENT_BUFFER_LVALUE = NULL;
		yypop_buffer_state();
	}

	/* Destroy the stack itself. */
	yyfree((yy_buffer_stack) );
	(yy_buffer_stack) = NULL;

    /* Reset the globals. This is important in a non-reentrant scanner so the next time
     * yylex() is called, initialization will occur. */
    yy_init_globals( );

    return 0;
}

/*
 * Internal utility routines.
 */

#ifndef yytext_ptr
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
{
	register int i;
	for ( i = 0; i < n; ++i )
		s1[i] = s2[i];
}
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen (yyconst char * s )
{
	register int n;
	for ( n = 0; s[n]; ++n )
		;

	return n;
}
#endif

void *yyalloc (yy_size_t  size )
{
	return (void *) malloc( size );
}

void *yyrealloc  (void * ptr, yy_size_t  size )
{
	/* The cast to (char *) in the following accommodates both
	 * implementations that use char* generic pointers, and those
	 * that use void* generic pointers.  It works with the latter
	 * because both ANSI C and C++ allow castless assignment from
	 * any pointer type to void*, and deal with argument conversions
	 * as though doing an assignment.
	 */
	return (void *) realloc( (char *) ptr, size );
}

void yyfree (void * ptr )
{
	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
}

#define YYTABLES_NAME "yytables"

#line 663 "cftoken.l"



void
yyerror(char *s, ...)
{
	char fmt[512];

	va_list ap;
#ifdef HAVE_STDARG_H
	va_start(ap, s);
#else
	va_start(ap);
#endif
	snprintf(fmt, sizeof(fmt), "%s:%d: \"%s\" %s\n",
		incstack[incstackp].path, incstack[incstackp].lineno,
		yytext, s);
	plogv(LLV_ERROR, LOCATION, NULL, fmt, ap);
	va_end(ap);

	yyerrorcount++;
}

void
yywarn(char *s, ...)
{
	char fmt[512];

	va_list ap;
#ifdef HAVE_STDARG_H
	va_start(ap, s);
#else
	va_start(ap);
#endif
	snprintf(fmt, sizeof(fmt), "%s:%d: \"%s\" %s\n",
		incstack[incstackp].path, incstack[incstackp].lineno,
		yytext, s);
	plogv(LLV_WARNING, LOCATION, NULL, fmt, ap);
	va_end(ap);
}

int
yycf_switch_buffer(path)
	char *path;
{
	char *filepath = NULL;

	/* got the include file name */
	if (incstackp >= MAX_INCLUDE_DEPTH) {
		plog(LLV_ERROR, LOCATION, NULL,
			"Includes nested too deeply");
		return -1;
	}

	if (glob(path, GLOB_TILDE, NULL, &incstack[incstackp].matches) != 0 ||
	    incstack[incstackp].matches.gl_pathc == 0) {
		plog(LLV_ERROR, LOCATION, NULL,
			"glob found no matches for path \"%s\"\n", path);
		return -1;
	}
	incstack[incstackp].matchon = 0;
	incstack[incstackp].prevstate = YY_CURRENT_BUFFER;

    nextmatch:
	if (incstack[incstackp].matchon >= incstack[incstackp].matches.gl_pathc)
		return -1;
	filepath =
	    incstack[incstackp].matches.gl_pathv[incstack[incstackp].matchon];
	incstack[incstackp].matchon++;
	incstackp++;

	if (yycf_set_buffer(filepath) != 0) {
	      incstackp--;
	      goto nextmatch;
	}

	yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE));

	BEGIN(S_INI);

	return 0;
}

int
yycf_set_buffer(path)
	char *path;
{
	yyin = fopen(path, "r");
	if (yyin == NULL) {
		fprintf(stderr, "failed to open file %s (%s)\n",
			path, strerror(errno));
		plog(LLV_ERROR, LOCATION, NULL,
			"failed to open file %s (%s)\n",
			path, strerror(errno));
		return -1;
	}

	/* initialize */
	incstack[incstackp].fp = yyin;
	if (incstack[incstackp].path != NULL)
		racoon_free(incstack[incstackp].path);
	incstack[incstackp].path = racoon_strdup(path);
	STRDUP_FATAL(incstack[incstackp].path);
	incstack[incstackp].lineno = 1;
	plog(LLV_DEBUG, LOCATION, NULL,
		"reading config file %s\n", path);

	return 0;
}

void
yycf_init_buffer()
{
	int i;

	for (i = 0; i < MAX_INCLUDE_DEPTH; i++)
		memset(&incstack[i], 0, sizeof(incstack[i]));
	incstackp = 0;
}

void
yycf_clean_buffer()
{
	int i;

	for (i = 0; i < MAX_INCLUDE_DEPTH; i++) {
		if (incstack[i].path != NULL) {
			fclose(incstack[i].fp);
			racoon_free(incstack[i].path);
			incstack[i].path = NULL;
		}
	}
}


