
#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 6
#define YY_FLEX_SUBMINOR_VERSION 4
#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

/* C++ systems might need __STDC_LIMIT_MACROS defined 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

#ifndef SIZE_MAX
#define SIZE_MAX               (~(size_t)0)
#endif

#endif /* ! C99 */

#endif /* ! FLEXINT_H */

/* begin standard C++ headers. */

/* TODO: this is always defined, so inline it */
#define yyconst const

#if defined(__GNUC__) && __GNUC__ >= 3
#define yynoreturn __attribute__((__noreturn__))
#else
#define yynoreturn
#endif

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

/* Promotes a possibly negative, possibly signed char to an
 *   integer in range [0..255] for use as an array index.
 */
#define YY_SC_TO_UI(c) ((YY_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
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k.
 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
 * Ditto for the __ia64__ case accordingly.
 */
#define YY_BUF_SIZE 32768
#else
#define YY_BUF_SIZE 16384
#endif /* __ia64__ */
#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

#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
typedef size_t yy_size_t;
#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
    
    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
     *       access to the local variable yy_act. Since yyless() is a macro, it would break
     *       existing scanners that call yyless() from OUTSIDE yylex.
     *       One obvious solution it to make yy_act a global. I tried that, and saw
     *       a 5% performance hit in a non-yylineno scanner, because yy_act is
     *       normally declared as a register variable-- so it is not worth it.
     */
    #define  YY_LESS_LINENO(n) \
            do { \
                int yyl;\
                for ( yyl = n; yyl < yyleng; ++yyl )\
                    if ( yytext[yyl] == '\n' )\
                        --yylineno;\
            }while(0)
    #define YY_LINENO_REWIND_TO(dst) \
            do {\
                const char *p;\
                for ( p = yy_cp-1; p >= (dst); --p)\
                    if ( *p == '\n' )\
                        --yylineno;\
            }while(0)
    
/* 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_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.
	 */
	int 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 = NULL; /**< 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 = NULL;
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 ( const char *yy_str  );
YY_BUFFER_STATE yy_scan_bytes ( const 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 */

#define yywrap() (/*CONSTCOND*/1)
#define YY_SKIP_YYWRAP
typedef flex_uint8_t YY_CHAR;

FILE *yyin = NULL, *yyout = NULL;

typedef int yy_state_type;

extern int yylineno;
int yylineno = 1;

extern char *yytext;
#ifdef yytext_ptr
#undef yytext_ptr
#endif
#define yytext_ptr yytext

static const flex_int16_t yy_nxt[][43] =
    {
    {
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0
    },

    {
        9,   10,   11,   12,   13,   14,   15,   16,   17,   14,
       18,   19,   20,   21,   21,   22,   23,   24,   25,   26,
       21,   21,   27,   28,   29,   30,   21,   21,   31,   32,
       21,   33,   21,   34,   35,   36,   37,   38,   21,   39,
       21,   21,   40

    },

    {
        9,   10,   11,   12,   13,   14,   15,   16,   17,   14,
       18,   19,   20,   21,   21,   22,   23,   24,   25,   26,
       21,   21,   27,   28,   29,   30,   21,   21,   31,   32,
       21,   33,   21,   34,   35,   36,   37,   38,   21,   39,
       21,   21,   40
    },

    {
        9,   41,   42,   43,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41,   41

    },

    {
        9,   41,   42,   43,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41,   41
    },

    {
        9,   44,   45,   46,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44

    },

    {
        9,   44,   45,   46,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44
    },

    {
        9,   47,   47,   48,   47,   49,   47,   50,   47,   49,
       47,   47,   47,   47,   47,   47,   47,   47,   47,   51,
       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
       47,   47,   47

    },

    {
        9,   47,   47,   48,   47,   49,   47,   50,   47,   49,
       47,   47,   47,   47,   47,   47,   47,   47,   47,   51,
       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
       47,   47,   47
    },

    {
       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
       -9,   -9,   -9

    },

    {
        9,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
      -10,  -10,  -10
    },

    {
        9,  -11,   52,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11,  -11

    },

    {
        9,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
      -12,  -12,  -12
    },

    {
        9,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
      -13,  -13,  -13,  -13,  -13,  -13,  -13,   53,  -13,  -13,
      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
      -13,  -13,  -13

    },

    {
        9,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14,  -14
    },

    {
        9,   54,   54,  -15,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54,   54

    },

    {
        9,  -16,  -16,  -16,  -16,  -16,  -16,   55,  -16,  -16,
      -16,  -16,  -16,   55,   55,  -16,  -16,  -16,  -16,  -16,
       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
       55,   55,  -16
    },

    {
        9,  -17,  -17,  -17,  -17,  -17,  -17,  -17,   56,  -17,
      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
      -17,  -17,  -17

    },

    {
        9,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
      -18,  -18,  -18
    },

    {
        9,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
      -19,  -19,  -19

    },

    {
        9,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
      -20,  -20,  -20,  -20,  -20,  -20,  -20,   57,  -20,  -20,
      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
      -20,  -20,  -20
    },

    {
        9,  -21,  -21,  -21,  -21,  -21,  -21,   55,  -21,  -21,
      -21,  -21,  -21,   58,   58,  -21,  -21,  -21,  -21,  -21,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -21

    },

    {
        9,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
      -22,  -22,  -22,  -22,  -22,  -22,  -22,   59,  -22,  -22,
      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
      -22,  -22,  -22
    },

    {
        9,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
      -23,  -23,  -23,  -23,  -23,  -23,  -23,   60,  -23,  -23,
      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
      -23,  -23,  -23

    },

    {
        9,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
      -24,  -24,  -24
    },

    {
        9,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
      -25,  -25,  -25,  -25,  -25,  -25,  -25,   61,  -25,  -25,
      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
      -25,  -25,  -25

    },

    {
        9,  -26,  -26,   62,  -26,  -26,  -26,  -26,  -26,  -26,
      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
      -26,  -26,  -26
    },

    {
        9,  -27,  -27,  -27,  -27,  -27,  -27,   55,  -27,  -27,
      -27,  -27,  -27,   58,   58,  -27,  -27,  -27,  -27,  -27,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   63,   58,   58,   58,   58,   58,   58,
       58,   58,  -27

    },

    {
        9,  -28,  -28,  -28,  -28,  -28,  -28,   55,  -28,  -28,
      -28,  -28,  -28,   58,   58,  -28,  -28,  -28,  -28,  -28,
       58,   58,   58,   58,   58,   58,   58,   58,   64,   58,
       58,   58,   58,   65,   58,   58,   58,   58,   58,   58,
       58,   58,  -28
    },

    {
        9,  -29,  -29,  -29,  -29,  -29,  -29,   55,  -29,  -29,
      -29,  -29,  -29,   58,   58,  -29,  -29,  -29,  -29,  -29,
       58,   58,   58,   58,   58,   66,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -29

    },

    {
        9,  -30,  -30,  -30,  -30,  -30,  -30,   55,  -30,  -30,
      -30,  -30,  -30,   58,   58,  -30,  -30,  -30,  -30,  -30,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   67,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -30
    },

    {
        9,  -31,  -31,  -31,  -31,  -31,  -31,   55,  -31,  -31,
      -31,  -31,  -31,   58,   58,  -31,  -31,  -31,  -31,  -31,
       58,   58,   58,   58,   58,   68,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -31

    },

    {
        9,  -32,  -32,  -32,  -32,  -32,  -32,   55,  -32,  -32,
      -32,  -32,  -32,   58,   58,  -32,  -32,  -32,  -32,  -32,
       58,   58,   58,   58,   58,   58,   69,   58,   58,   58,
       58,   70,   71,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -32
    },

    {
        9,  -33,  -33,  -33,  -33,  -33,  -33,   55,  -33,  -33,
      -33,  -33,  -33,   58,   58,  -33,  -33,  -33,  -33,  -33,
       58,   72,   58,   58,   58,   73,   58,   58,   58,   58,
       58,   58,   58,   74,   58,   58,   58,   58,   58,   58,
       58,   58,  -33

    },

    {
        9,  -34,  -34,  -34,  -34,  -34,  -34,   55,  -34,  -34,
      -34,  -34,  -34,   58,   58,  -34,  -34,  -34,  -34,  -34,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   75,   58,   76,   58,   58,   58,   58,   58,
       58,   58,  -34
    },

    {
        9,  -35,  -35,  -35,  -35,  -35,  -35,   55,  -35,  -35,
      -35,  -35,  -35,   58,   58,  -35,  -35,  -35,  -35,  -35,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   77,   58,   58,   58,   58,
       58,   58,  -35

    },

    {
        9,  -36,  -36,  -36,  -36,  -36,  -36,   55,  -36,  -36,
      -36,  -36,  -36,   58,   58,  -36,  -36,  -36,  -36,  -36,
       58,   78,   58,   58,   58,   79,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -36
    },

    {
        9,  -37,  -37,  -37,  -37,  -37,  -37,   55,  -37,  -37,
      -37,  -37,  -37,   58,   58,  -37,  -37,  -37,  -37,  -37,
       58,   58,   58,   58,   58,   80,   58,   58,   58,   58,
       58,   58,   58,   81,   58,   58,   58,   82,   58,   58,
       58,   58,  -37

    },

    {
        9,  -38,  -38,  -38,  -38,  -38,  -38,   55,  -38,  -38,
      -38,  -38,  -38,   58,   58,  -38,  -38,  -38,  -38,  -38,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   83,   58,   58,   58,   58,
       58,   58,  -38
    },

    {
        9,  -39,  -39,  -39,  -39,  -39,  -39,   55,  -39,  -39,
      -39,  -39,  -39,   58,   58,  -39,  -39,  -39,  -39,  -39,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   84,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -39

    },

    {
        9,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,   85
    },

    {
        9,   86,   87,  -41,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86

    },

    {
        9,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
      -42,  -42,  -42
    },

    {
        9,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
      -43,  -43,  -43

    },

    {
        9,   88,   88,  -44,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88
    },

    {
        9,  -45,   89,   90,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45,  -45

    },

    {
        9,   91,  -46,  -46,   91,   91,   91,   91,   91,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
       91,   91,   91
    },

    {
        9,   92,   92,  -47,   92,  -47,   92,  -47,   92,  -47,
       92,   92,   92,   92,   92,   92,   92,   92,   92,  -47,
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
       92,   92,   92

    },

    {
        9,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48,  -48
    },

    {
        9,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49,  -49

    },

    {
        9,   93,   93,  -50,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93,   93
    },

    {
        9,   94,   94,  -51,   94,   94,   94,   94,   94,   94,
       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
       94,   94,   94

    },

    {
        9,  -52,   52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
      -52,  -52,  -52
    },

    {
        9,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
      -53,  -53,  -53

    },

    {
        9,   54,   54,  -54,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54,   54
    },

    {
        9,  -55,  -55,  -55,  -55,  -55,  -55,   55,  -55,  -55,
      -55,  -55,  -55,   55,   55,  -55,  -55,  -55,  -55,  -55,
       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
       55,   55,  -55

    },

    {
        9,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
      -56,  -56,  -56
    },

    {
        9,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
      -57,  -57,  -57

    },

    {
        9,  -58,  -58,  -58,  -58,  -58,  -58,   55,  -58,  -58,
      -58,  -58,  -58,   58,   58,  -58,  -58,  -58,  -58,  -58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -58
    },

    {
        9,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
      -59,  -59,  -59

    },

    {
        9,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
      -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
      -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
      -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
      -60,  -60,  -60
    },

    {
        9,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
      -61,  -61,  -61

    },

    {
        9,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
      -62,  -62,  -62
    },

    {
        9,  -63,  -63,  -63,  -63,  -63,  -63,   55,  -63,  -63,
      -63,  -63,  -63,   58,   58,  -63,  -63,  -63,  -63,  -63,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   95,   58,   58,   58,   58,   58,   58,
       58,   58,  -63

    },

    {
        9,  -64,  -64,  -64,  -64,  -64,  -64,   55,  -64,  -64,
      -64,  -64,  -64,   58,   58,  -64,  -64,  -64,  -64,  -64,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   96,   58,   58,   58,   58,   58,   58,
       58,   58,  -64
    },

    {
        9,  -65,  -65,  -65,  -65,  -65,  -65,   55,  -65,  -65,
      -65,  -65,  -65,   58,   58,  -65,  -65,  -65,  -65,  -65,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   97,   98,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -65

    },

    {
        9,  -66,  -66,  -66,  -66,  -66,  -66,   55,  -66,  -66,
      -66,  -66,  -66,   58,   58,  -66,  -66,  -66,  -66,  -66,
       58,   58,   58,   58,   58,   58,   99,   58,   58,   58,
       58,   58,   58,   58,  100,   58,   58,   58,   58,   58,
       58,   58,  -66
    },

    {
        9,  -67,  -67,  -67,  -67,  -67,  -67,   55,  -67,  -67,
      -67,  -67,  -67,   58,   58,  -67,  -67,  -67,  -67,  -67,
       58,   58,   58,   58,  101,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -67

    },

    {
        9,  -68,  -68,  -68,  -68,  -68,  -68,   55,  -68,  -68,
      -68,  -68,  -68,   58,   58,  -68,  -68,  -68,  -68,  -68,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      102,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      103,   58,  -68
    },

    {
        9,  -69,  -69,  -69,  -69,  -69,  -69,   55,  -69,  -69,
      -69,  -69,  -69,   58,   58,  -69,  -69,  -69,  -69,  -69,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -69

    },

    {
        9,  -70,  -70,  -70,  -70,  -70,  -70,   55,  -70,  -70,
      -70,  -70,  -70,   58,   58,  -70,  -70,  -70,  -70,  -70,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  104,   58,   58,   58,   58,   58,
       58,   58,  -70
    },

    {
        9,  -71,  -71,  -71,  -71,  -71,  -71,   55,  -71,  -71,
      -71,  -71,  -71,   58,   58,  -71,  -71,  -71,  -71,  -71,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  105,   58,   58,
       58,   58,  -71

    },

    {
        9,  -72,  -72,  -72,  -72,  -72,  -72,   55,  -72,  -72,
      -72,  -72,  -72,   58,   58,  -72,  -72,  -72,  -72,  -72,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  106,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -72
    },

    {
        9,  -73,  -73,  -73,  -73,  -73,  -73,   55,  -73,  -73,
      -73,  -73,  -73,   58,   58,  -73,  -73,  -73,  -73,  -73,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  107,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -73

    },

    {
        9,  -74,  -74,  -74,  -74,  -74,  -74,   55,  -74,  -74,
      -74,  -74,  -74,   58,   58,  -74,  -74,  -74,  -74,  -74,
       58,   58,   58,   58,  108,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -74
    },

    {
        9,  -75,  -75,  -75,  -75,  -75,  -75,   55,  -75,  -75,
      -75,  -75,  -75,   58,   58,  -75,  -75,  -75,  -75,  -75,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -75

    },

    {
        9,  -76,  -76,  -76,  -76,  -76,  -76,   55,  -76,  -76,
      -76,  -76,  -76,   58,   58,  -76,  -76,  -76,  -76,  -76,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  109,   58,   58,
       58,   58,  -76
    },

    {
        9,  -77,  -77,  -77,  -77,  -77,  -77,   55,  -77,  -77,
      -77,  -77,  -77,   58,   58,  -77,  -77,  -77,  -77,  -77,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  110,   58,   58,   58,   58,   58,   58,
       58,   58,  -77

    },

    {
        9,  -78,  -78,  -78,  -78,  -78,  -78,   55,  -78,  -78,
      -78,  -78,  -78,   58,   58,  -78,  -78,  -78,  -78,  -78,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  111,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -78
    },

    {
        9,  -79,  -79,  -79,  -79,  -79,  -79,   55,  -79,  -79,
      -79,  -79,  -79,   58,   58,  -79,  -79,  -79,  -79,  -79,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  112,   58,   58,   58,
       58,   58,  -79

    },

    {
        9,  -80,  -80,  -80,  -80,  -80,  -80,   55,  -80,  -80,
      -80,  -80,  -80,   58,   58,  -80,  -80,  -80,  -80,  -80,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      113,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -80
    },

    {
        9,  -81,  -81,  -81,  -81,  -81,  -81,   55,  -81,  -81,
      -81,  -81,  -81,   58,   58,  -81,  -81,  -81,  -81,  -81,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  114,   58,
       58,   58,  -81

    },

    {
        9,  -82,  -82,  -82,  -82,  -82,  -82,   55,  -82,  -82,
      -82,  -82,  -82,   58,   58,  -82,  -82,  -82,  -82,  -82,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  115,   58,   58,   58,   58,
       58,   58,  -82
    },

    {
        9,  -83,  -83,  -83,  -83,  -83,  -83,   55,  -83,  -83,
      -83,  -83,  -83,   58,   58,  -83,  -83,  -83,  -83,  -83,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  116,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -83

    },

    {
        9,  -84,  -84,  -84,  -84,  -84,  -84,   55,  -84,  -84,
      -84,  -84,  -84,   58,   58,  -84,  -84,  -84,  -84,  -84,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  117,   58,   58,   58,
       58,   58,  -84
    },

    {
        9,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
      -85,  -85,  -85

    },

    {
        9,   86,   87,  -86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86
    },

    {
        9,   87,   87,  -87,   87,   87,   87,   87,   87,   87,
       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
       87,   87,   87

    },

    {
        9,   88,   88,  -88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88
    },

    {
        9,  -89,   89,   90,  -89,  -89,  -89,  -89,  -89,  -89,
      -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
      -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
      -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
      -89,  -89,  -89

    },

    {
        9,   91,  -90,  -90,   91,   91,   91,   91,   91,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
       91,   91,   91
    },

    {
        9,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
      -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
      -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
      -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
      -91,  -91,  -91

    },

    {
        9,   92,   92,  -92,   92,  -92,   92,  -92,   92,  -92,
       92,   92,   92,   92,   92,   92,   92,   92,   92,  -92,
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
       92,   92,   92
    },

    {
        9,   93,   93,  -93,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93,   93

    },

    {
        9,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
      -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
      -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
      -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
      -94,  -94,  -94
    },

    {
        9,  -95,  -95,  -95,  -95,  -95,  -95,   55,  -95,  -95,
      -95,  -95,  -95,   58,   58,  -95,  -95,  -95,  -95,  -95,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      118,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -95

    },

    {
        9,  -96,  -96,  -96,  -96,  -96,  -96,   55,  -96,  -96,
      -96,  -96,  -96,   58,   58,  -96,  -96,  -96,  -96,  -96,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  119,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -96
    },

    {
        9,  -97,  -97,  -97,  -97,  -97,  -97,   55,  -97,  -97,
      -97,  -97,  -97,   58,   58,  -97,  -97,  -97,  -97,  -97,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  120,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -97

    },

    {
        9,  -98,  -98,  -98,  -98,  -98,  -98,   55,  -98,  -98,
      -98,  -98,  -98,   58,   58,  -98,  -98,  -98,  -98,  -98,
       58,   58,   58,   58,   58,   58,  121,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -98
    },

    {
        9,  -99,  -99,  -99,  -99,  -99,  -99,   55,  -99,  -99,
      -99,  -99,  -99,   58,   58,  -99,  -99,  -99,  -99,  -99,
      122,  123,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  -99

    },

    {
        9, -100, -100, -100, -100, -100, -100,   55, -100, -100,
     -100, -100, -100,   58,   58, -100, -100, -100, -100, -100,
       58,   58,   58,   58,   58,  124,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -100
    },

    {
        9, -101, -101, -101, -101, -101, -101,   55, -101, -101,
     -101, -101, -101,   58,   58, -101, -101, -101, -101, -101,
       58,   58,   58,  125,   58,   58,   58,   58,   58,  126,
       58,  127,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -101

    },

    {
        9, -102, -102, -102, -102, -102, -102,   55, -102, -102,
     -102, -102, -102,   58,   58, -102, -102, -102, -102, -102,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  128,   58,   58,   58,   58,   58,
       58,   58, -102
    },

    {
        9, -103, -103, -103, -103, -103, -103,   55, -103, -103,
     -103, -103, -103,   58,   58, -103, -103, -103, -103, -103,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -103

    },

    {
        9, -104, -104, -104, -104, -104, -104,   55, -104, -104,
     -104, -104, -104,   58,   58, -104, -104, -104, -104, -104,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      129,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -104
    },

    {
        9, -105, -105, -105, -105, -105, -105,   55, -105, -105,
     -105, -105, -105,   58,   58, -105, -105, -105, -105, -105,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -105

    },

    {
        9, -106, -106, -106, -106, -106, -106,   55, -106, -106,
     -106, -106, -106,   58,   58, -106, -106, -106, -106, -106,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  130,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -106
    },

    {
        9, -107, -107, -107, -107, -107, -107,   55, -107, -107,
     -107, -107, -107,   58,   58, -107, -107, -107, -107, -107,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  131,   58,
       58,   58, -107

    },

    {
        9, -108, -108, -108, -108, -108, -108,   55, -108, -108,
     -108, -108, -108,   58,   58, -108, -108, -108, -108, -108,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  132,   58,
       58,   58, -108
    },

    {
        9, -109, -109, -109, -109, -109, -109,   55, -109, -109,
     -109, -109, -109,   58,   58, -109, -109, -109, -109, -109,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  133,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -109

    },

    {
        9, -110, -110, -110, -110, -110, -110,   55, -110, -110,
     -110, -110, -110,   58,   58, -110, -110, -110, -110, -110,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  134,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -110
    },

    {
        9, -111, -111, -111, -111, -111, -111,   55, -111, -111,
     -111, -111, -111,   58,   58, -111, -111, -111, -111, -111,
       58,   58,   58,   58,   58,   58,   58,  135,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -111

    },

    {
        9, -112, -112, -112, -112, -112, -112,   55, -112, -112,
     -112, -112, -112,   58,   58, -112, -112, -112, -112, -112,
       58,   58,   58,   58,   58,  136,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -112
    },

    {
        9, -113, -113, -113, -113, -113, -113,   55, -113, -113,
     -113, -113, -113,   58,   58, -113, -113, -113, -113, -113,
       58,   58,   58,   58,   58,  137,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -113

    },

    {
        9, -114, -114, -114, -114, -114, -114,   55, -114, -114,
     -114, -114, -114,   58,   58, -114, -114, -114, -114, -114,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  138,   58,   58,   58,   58,
       58,   58, -114
    },

    {
        9, -115, -115, -115, -115, -115, -115,   55, -115, -115,
     -115, -115, -115,   58,   58, -115, -115, -115, -115, -115,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  139,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -115

    },

    {
        9, -116, -116, -116, -116, -116, -116,   55, -116, -116,
     -116, -116, -116,   58,   58, -116, -116, -116, -116, -116,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  140,   58,   58,   58,
       58,   58, -116
    },

    {
        9, -117, -117, -117, -117, -117, -117,   55, -117, -117,
     -117, -117, -117,   58,   58, -117, -117, -117, -117, -117,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  141,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -117

    },

    {
        9, -118, -118, -118, -118, -118, -118,   55, -118, -118,
     -118, -118, -118,   58,   58, -118, -118, -118, -118, -118,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -118
    },

    {
        9, -119, -119, -119, -119, -119, -119,   55, -119, -119,
     -119, -119, -119,   58,   58, -119, -119, -119, -119, -119,
       58,   58,   58,  142,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -119

    },

    {
        9, -120, -120, -120, -120, -120, -120,   55, -120, -120,
     -120, -120, -120,   58,   58, -120, -120, -120, -120, -120,
       58,   58,   58,   58,   58,  143,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -120
    },

    {
        9, -121, -121, -121, -121, -121, -121,   55, -121, -121,
     -121, -121, -121,   58,   58, -121, -121, -121, -121, -121,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  144,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -121

    },

    {
        9, -122, -122, -122, -122, -122, -122,   55, -122, -122,
     -122, -122, -122,   58,   58, -122, -122, -122, -122, -122,
       58,   58,  145,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  146,   58,   58,
       58,   58, -122
    },

    {
        9, -123, -123, -123, -123, -123, -123,   55, -123, -123,
     -123, -123, -123,   58,   58, -123, -123, -123, -123, -123,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  147,   58,
       58,   58, -123

    },

    {
        9, -124, -124, -124, -124, -124, -124,   55, -124, -124,
     -124, -124, -124,   58,   58, -124, -124, -124, -124, -124,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  148,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -124
    },

    {
        9, -125, -125, -125, -125, -125, -125,   55, -125, -125,
     -125, -125, -125,   58,   58, -125, -125, -125, -125, -125,
       58,   58,   58,   58,   58,   58,   58,   58,  149,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -125

    },

    {
        9, -126, -126, -126, -126, -126, -126,   55, -126, -126,
     -126, -126, -126,   58,   58, -126, -126, -126, -126, -126,
       58,   58,   58,   58,   58,   58,  150,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -126
    },

    {
        9, -127, -127, -127, -127, -127, -127,   55, -127, -127,
     -127, -127, -127,   58,   58, -127, -127, -127, -127, -127,
       58,   58,   58,   58,   58,  151,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -127

    },

    {
        9, -128, -128, -128, -128, -128, -128,   55, -128, -128,
     -128, -128, -128,   58,   58, -128, -128, -128, -128, -128,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -128
    },

    {
        9, -129, -129, -129, -129, -129, -129,   55, -129, -129,
     -129, -129, -129,   58,   58, -129, -129, -129, -129, -129,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  152, -129

    },

    {
        9, -130, -130, -130, -130, -130, -130,   55, -130, -130,
     -130, -130, -130,   58,   58, -130, -130, -130, -130, -130,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  153,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -130
    },

    {
        9, -131, -131, -131, -131, -131, -131,   55, -131, -131,
     -131, -131, -131,   58,   58, -131, -131, -131, -131, -131,
       58,   58,   58,  154,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -131

    },

    {
        9, -132, -132, -132, -132, -132, -132,   55, -132, -132,
     -132, -132, -132,   58,   58, -132, -132, -132, -132, -132,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      155,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -132
    },

    {
        9, -133, -133, -133, -133, -133, -133,   55, -133, -133,
     -133, -133, -133,   58,   58, -133, -133, -133, -133, -133,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  156,   58,   58,   58,   58,   58,   58,
       58,   58, -133

    },

    {
        9, -134, -134, -134, -134, -134, -134,   55, -134, -134,
     -134, -134, -134,   58,   58, -134, -134, -134, -134, -134,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  157,   58,   58,   58,   58,   58,
       58,   58, -134
    },

    {
        9, -135, -135, -135, -135, -135, -135,   55, -135, -135,
     -135, -135, -135,   58,   58, -135, -135, -135, -135, -135,
       58,   58,   58,   58,   58,  158,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -135

    },

    {
        9, -136, -136, -136, -136, -136, -136,   55, -136, -136,
     -136, -136, -136,   58,   58, -136, -136, -136, -136, -136,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  159,   58,   58,
       58,   58, -136
    },

    {
        9, -137, -137, -137, -137, -137, -137,   55, -137, -137,
     -137, -137, -137,   58,   58, -137, -137, -137, -137, -137,
       58,   58,   58,  160,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -137

    },

    {
        9, -138, -138, -138, -138, -138, -138,   55, -138, -138,
     -138, -138, -138,   58,   58, -138, -138, -138, -138, -138,
       58,   58,   58,  161,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -138
    },

    {
        9, -139, -139, -139, -139, -139, -139,   55, -139, -139,
     -139, -139, -139,   58,   58, -139, -139, -139, -139, -139,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  162,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -139

    },

    {
        9, -140, -140, -140, -140, -140, -140,   55, -140, -140,
     -140, -140, -140,   58,   58, -140, -140, -140, -140, -140,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  163,   58,   58,
       58,   58, -140
    },

    {
        9, -141, -141, -141, -141, -141, -141,   55, -141, -141,
     -141, -141, -141,   58,   58, -141, -141, -141, -141, -141,
       58,   58,  164,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -141

    },

    {
        9, -142, -142, -142, -142, -142, -142,   55, -142, -142,
     -142, -142, -142,   58,   58, -142, -142, -142, -142, -142,
       58,   58,   58,   58,   58,  165,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -142
    },

    {
        9, -143, -143, -143, -143, -143, -143,   55, -143, -143,
     -143, -143, -143,   58,   58, -143, -143, -143, -143, -143,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  166,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -143

    },

    {
        9, -144, -144, -144, -144, -144, -144,   55, -144, -144,
     -144, -144, -144,   58,   58, -144, -144, -144, -144, -144,
       58,   58,   58,   58,   58,   58,   58,  167,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -144
    },

    {
        9, -145, -145, -145, -145, -145, -145,   55, -145, -145,
     -145, -145, -145,   58,   58, -145, -145, -145, -145, -145,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  168,   58,   58,   58,   58,   58,   58,
       58,   58, -145

    },

    {
        9, -146, -146, -146, -146, -146, -146,   55, -146, -146,
     -146, -146, -146,   58,   58, -146, -146, -146, -146, -146,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  169,   58,   58,   58,   58,
       58,   58, -146
    },

    {
        9, -147, -147, -147, -147, -147, -147,   55, -147, -147,
     -147, -147, -147,   58,   58, -147, -147, -147, -147, -147,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      170,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -147

    },

    {
        9, -148, -148, -148, -148, -148, -148,   55, -148, -148,
     -148, -148, -148,   58,   58, -148, -148, -148, -148, -148,
       58,   58,   58,   58,  171,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -148
    },

    {
        9, -149, -149, -149, -149, -149, -149,   55, -149, -149,
     -149, -149, -149,   58,   58, -149, -149, -149, -149, -149,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  172,   58,   58,   58,   58,   58,   58,
       58,   58, -149

    },

    {
        9, -150, -150, -150, -150, -150, -150,   55, -150, -150,
     -150, -150, -150,   58,   58, -150, -150, -150, -150, -150,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -150
    },

    {
        9, -151, -151, -151, -151, -151, -151,   55, -151, -151,
     -151, -151, -151,   58,   58, -151, -151, -151, -151, -151,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  173,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -151

    },

    {
        9, -152, -152, -152, -152, -152, -152,   55, -152, -152,
     -152, -152, -152,   58,   58, -152, -152, -152, -152, -152,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -152
    },

    {
        9, -153, -153, -153, -153, -153, -153,   55, -153, -153,
     -153, -153, -153,   58,   58, -153, -153, -153, -153, -153,
       58,   58,   58,   58,   58,  174,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -153

    },

    {
        9, -154, -154, -154, -154, -154, -154,   55, -154, -154,
     -154, -154, -154,   58,   58, -154, -154, -154, -154, -154,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  175,   58,   58,   58,   58,   58,   58,
       58,   58, -154
    },

    {
        9, -155, -155, -155, -155, -155, -155,   55, -155, -155,
     -155, -155, -155,   58,   58, -155, -155, -155, -155, -155,
       58,   58,   58,   58,   58,  176,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -155

    },

    {
        9, -156, -156, -156, -156, -156, -156,   55, -156, -156,
     -156, -156, -156,   58,   58, -156, -156, -156, -156, -156,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  177,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -156
    },

    {
        9, -157, -157, -157, -157, -157, -157,   55, -157, -157,
     -157, -157, -157,   58,   58, -157, -157, -157, -157, -157,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  178,   58,   58,
       58,   58, -157

    },

    {
        9, -158, -158, -158, -158, -158, -158,   55, -158, -158,
     -158, -158, -158,   58,   58, -158, -158, -158, -158, -158,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -158
    },

    {
        9, -159, -159, -159, -159, -159, -159,   55, -159, -159,
     -159, -159, -159,   58,   58, -159, -159, -159, -159, -159,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -159

    },

    {
        9, -160, -160, -160, -160, -160, -160,   55, -160, -160,
     -160, -160, -160,   58,   58, -160, -160, -160, -160, -160,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  179,   58,   58,
       58,   58, -160
    },

    {
        9, -161, -161, -161, -161, -161, -161,   55, -161, -161,
     -161, -161, -161,   58,   58, -161, -161, -161, -161, -161,
       58,   58,   58,   58,   58,  180,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -161

    },

    {
        9, -162, -162, -162, -162, -162, -162,   55, -162, -162,
     -162, -162, -162,   58,   58, -162, -162, -162, -162, -162,
       58,   58,   58,   58,   58,   58,   58,  181,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -162
    },

    {
        9, -163, -163, -163, -163, -163, -163,   55, -163, -163,
     -163, -163, -163,   58,   58, -163, -163, -163, -163, -163,
       58,  182,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -163

    },

    {
        9, -164, -164, -164, -164, -164, -164,   55, -164, -164,
     -164, -164, -164,   58,   58, -164, -164, -164, -164, -164,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      183,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -164
    },

    {
        9, -165, -165, -165, -165, -165, -165,   55, -165, -165,
     -165, -165, -165,   58,   58, -165, -165, -165, -165, -165,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -165

    },

    {
        9, -166, -166, -166, -166, -166, -166,   55, -166, -166,
     -166, -166, -166,   58,   58, -166, -166, -166, -166, -166,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  184,   58,   58,
       58,   58, -166
    },

    {
        9, -167, -167, -167, -167, -167, -167,   55, -167, -167,
     -167, -167, -167,   58,   58, -167, -167, -167, -167, -167,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -167

    },

    {
        9, -168, -168, -168, -168, -168, -168,   55, -168, -168,
     -168, -168, -168,   58,   58, -168, -168, -168, -168, -168,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  185,   58,   58,   58,   58,   58,   58,
       58,   58, -168
    },

    {
        9, -169, -169, -169, -169, -169, -169,   55, -169, -169,
     -169, -169, -169,   58,   58, -169, -169, -169, -169, -169,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  186,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -169

    },

    {
        9, -170, -170, -170, -170, -170, -170,   55, -170, -170,
     -170, -170, -170,   58,   58, -170, -170, -170, -170, -170,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  187,   58,   58,
       58,   58, -170
    },

    {
        9, -171, -171, -171, -171, -171, -171,   55, -171, -171,
     -171, -171, -171,   58,   58, -171, -171, -171, -171, -171,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  188,   58,   58,   58,
       58,   58, -171

    },

    {
        9, -172, -172, -172, -172, -172, -172,   55, -172, -172,
     -172, -172, -172,   58,   58, -172, -172, -172, -172, -172,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  189,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -172
    },

    {
        9, -173, -173, -173, -173, -173, -173,   55, -173, -173,
     -173, -173, -173,   58,   58, -173, -173, -173, -173, -173,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  190,   58,
       58,   58, -173

    },

    {
        9, -174, -174, -174, -174, -174, -174,   55, -174, -174,
     -174, -174, -174,   58,   58, -174, -174, -174, -174, -174,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  191,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -174
    },

    {
        9, -175, -175, -175, -175, -175, -175,   55, -175, -175,
     -175, -175, -175,   58,   58, -175, -175, -175, -175, -175,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  192,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -175

    },

    {
        9, -176, -176, -176, -176, -176, -176,   55, -176, -176,
     -176, -176, -176,   58,   58, -176, -176, -176, -176, -176,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  193,   58,   58,   58,
       58,   58, -176
    },

    {
        9, -177, -177, -177, -177, -177, -177,   55, -177, -177,
     -177, -177, -177,   58,   58, -177, -177, -177, -177, -177,
       58,  194,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -177

    },

    {
        9, -178, -178, -178, -178, -178, -178,   55, -178, -178,
     -178, -178, -178,   58,   58, -178, -178, -178, -178, -178,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -178
    },

    {
        9, -179, -179, -179, -179, -179, -179,   55, -179, -179,
     -179, -179, -179,   58,   58, -179, -179, -179, -179, -179,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -179

    },

    {
        9, -180, -180, -180, -180, -180, -180,   55, -180, -180,
     -180, -180, -180,   58,   58, -180, -180, -180, -180, -180,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -180
    },

    {
        9, -181, -181, -181, -181, -181, -181,   55, -181, -181,
     -181, -181, -181,   58,   58, -181, -181, -181, -181, -181,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -181

    },

    {
        9, -182, -182, -182, -182, -182, -182,   55, -182, -182,
     -182, -182, -182,   58,   58, -182, -182, -182, -182, -182,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  195,   58,   58,
       58,   58, -182
    },

    {
        9, -183, -183, -183, -183, -183, -183,   55, -183, -183,
     -183, -183, -183,   58,   58, -183, -183, -183, -183, -183,
       58,   58,   58,   58,   58,  196,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -183

    },

    {
        9, -184, -184, -184, -184, -184, -184,   55, -184, -184,
     -184, -184, -184,   58,   58, -184, -184, -184, -184, -184,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -184
    },

    {
        9, -185, -185, -185, -185, -185, -185,   55, -185, -185,
     -185, -185, -185,   58,   58, -185, -185, -185, -185, -185,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      197,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -185

    },

    {
        9, -186, -186, -186, -186, -186, -186,   55, -186, -186,
     -186, -186, -186,   58,   58, -186, -186, -186, -186, -186,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  198,   58,   58,   58,
       58,   58, -186
    },

    {
        9, -187, -187, -187, -187, -187, -187,   55, -187, -187,
     -187, -187, -187,   58,   58, -187, -187, -187, -187, -187,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -187

    },

    {
        9, -188, -188, -188, -188, -188, -188,   55, -188, -188,
     -188, -188, -188,   58,   58, -188, -188, -188, -188, -188,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -188
    },

    {
        9, -189, -189, -189, -189, -189, -189,   55, -189, -189,
     -189, -189, -189,   58,   58, -189, -189, -189, -189, -189,
       58,   58,   58,  199,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -189

    },

    {
        9, -190, -190, -190, -190, -190, -190,   55, -190, -190,
     -190, -190, -190,   58,   58, -190, -190, -190, -190, -190,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -190
    },

    {
        9, -191, -191, -191, -191, -191, -191,   55, -191, -191,
     -191, -191, -191,   58,   58, -191, -191, -191, -191, -191,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  200,   58,
       58,   58, -191

    },

    {
        9, -192, -192, -192, -192, -192, -192,   55, -192, -192,
     -192, -192, -192,   58,   58, -192, -192, -192, -192, -192,
       58,   58,   58,   58,   58,   58,  201,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -192
    },

    {
        9, -193, -193, -193, -193, -193, -193,   55, -193, -193,
     -193, -193, -193,   58,   58, -193, -193, -193, -193, -193,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -193

    },

    {
        9, -194, -194, -194, -194, -194, -194,   55, -194, -194,
     -194, -194, -194,   58,   58, -194, -194, -194, -194, -194,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      202,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -194
    },

    {
        9, -195, -195, -195, -195, -195, -195,   55, -195, -195,
     -195, -195, -195,   58,   58, -195, -195, -195, -195, -195,
       58,   58,   58,   58,   58,  203,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -195

    },

    {
        9, -196, -196, -196, -196, -196, -196,   55, -196, -196,
     -196, -196, -196,   58,   58, -196, -196, -196, -196, -196,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -196
    },

    {
        9, -197, -197, -197, -197, -197, -197,   55, -197, -197,
     -197, -197, -197,   58,   58, -197, -197, -197, -197, -197,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -197

    },

    {
        9, -198, -198, -198, -198, -198, -198,   55, -198, -198,
     -198, -198, -198,   58,   58, -198, -198, -198, -198, -198,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  204,   58,   58,
       58,   58, -198
    },

    {
        9, -199, -199, -199, -199, -199, -199,   55, -199, -199,
     -199, -199, -199,   58,   58, -199, -199, -199, -199, -199,
       58,   58,   58,   58,   58,  205,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -199

    },

    {
        9, -200, -200, -200, -200, -200, -200,   55, -200, -200,
     -200, -200, -200,   58,   58, -200, -200, -200, -200, -200,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -200
    },

    {
        9, -201, -201, -201, -201, -201, -201,   55, -201, -201,
     -201, -201, -201,   58,   58, -201, -201, -201, -201, -201,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  206,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -201

    },

    {
        9, -202, -202, -202, -202, -202, -202,   55, -202, -202,
     -202, -202, -202,   58,   58, -202, -202, -202, -202, -202,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -202
    },

    {
        9, -203, -203, -203, -203, -203, -203,   55, -203, -203,
     -203, -203, -203,   58,   58, -203, -203, -203, -203, -203,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -203

    },

    {
        9, -204, -204, -204, -204, -204, -204,   55, -204, -204,
     -204, -204, -204,   58,   58, -204, -204, -204, -204, -204,
       58,  207,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -204
    },

    {
        9, -205, -205, -205, -205, -205, -205,   55, -205, -205,
     -205, -205, -205,   58,   58, -205, -205, -205, -205, -205,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -205

    },

    {
        9, -206, -206, -206, -206, -206, -206,   55, -206, -206,
     -206, -206, -206,   58,   58, -206, -206, -206, -206, -206,
       58,   58,   58,   58,   58,   58,   58,  208,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -206
    },

    {
        9, -207, -207, -207, -207, -207, -207,   55, -207, -207,
     -207, -207, -207,   58,   58, -207, -207, -207, -207, -207,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  209,   58,   58,
       58,   58, -207

    },

    {
        9, -208, -208, -208, -208, -208, -208,   55, -208, -208,
     -208, -208, -208,   58,   58, -208, -208, -208, -208, -208,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -208
    },

    {
        9, -209, -209, -209, -209, -209, -209,   55, -209, -209,
     -209, -209, -209,   58,   58, -209, -209, -209, -209, -209,
       58,   58,   58,   58,   58,  210,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -209

    },

    {
        9, -210, -210, -210, -210, -210, -210,   55, -210, -210,
     -210, -210, -210,   58,   58, -210, -210, -210, -210, -210,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58, -210
    },

    } ;

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 yynoreturn yy_fatal_error ( const 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; \
	yyleng = (int) (yy_cp - yy_bp); \
	(yy_hold_char) = *yy_cp; \
	*yy_cp = '\0'; \
	(yy_c_buf_p) = yy_cp;
#define YY_NUM_RULES 64
#define YY_END_OF_BUFFER 65
/* 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 const flex_int16_t yy_accept[211] =
    {   0,
        2,    2,    0,    0,    0,    0,    0,    0,   65,   51,
        2,    4,   43,   48,    1,   50,   51,   44,   45,   51,
       49,   51,   39,   37,   41,   51,   49,   49,   49,   49,
       49,   49,   49,   49,   49,   49,   49,   49,   49,   51,
       52,   54,   53,   63,   60,   62,   56,   59,   58,   55,
       57,    2,   38,    1,   50,   36,   47,   49,   46,   40,
       42,    3,   49,   49,   49,   49,   49,   49,   18,   49,
       49,   49,   49,   49,   25,   49,   49,   49,   49,   49,
       49,   49,   49,   49,   35,   52,   52,   63,   60,   62,
       61,   56,   55,   57,   49,   49,   49,   49,   49,   49,

       49,   49,   17,   49,   20,   49,   49,   49,   49,   49,
       49,   49,   49,   49,   49,   49,   49,    5,   49,   49,
       49,   49,   49,   49,   49,   49,   49,   16,   49,   49,
       22,   49,   49,   49,   49,   49,   49,   49,   49,   49,
       49,   49,   49,   49,   49,   49,   49,   49,   49,   14,
       49,   19,   49,   49,   49,   49,   49,   28,   29,   49,
       49,   49,   49,   49,    6,   49,    8,   49,   49,   49,
       49,   49,   49,   49,   49,   49,   49,   27,   30,   31,
       32,   49,   49,    7,   49,   49,   11,   12,   49,   15,
       49,   49,   24,   49,   49,   34,    9,   49,   49,   21,

       49,   26,   33,   49,   13,   49,   49,   23,   49,   10
    } ;

static const YY_CHAR 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,    4,    5,    6,    7,    1,    8,    9,   10,
       11,    1,   12,    1,   13,   14,   14,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   15,    1,   16,
       17,   18,    1,    1,   13,   13,   13,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        1,   19,    1,    1,   20,    1,   21,   22,   23,   24,

       25,   26,   27,   28,   29,   13,   13,   30,   31,   32,
       33,   34,   13,   35,   36,   37,   38,   39,   13,   40,
       41,   13,    1,   42,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    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
    } ;

/* Table of booleans, true if rule could match eol. */
static const flex_int32_t yy_rule_can_match_eol[65] =
    {   0,
0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 
    0, 1, 1, 0, 0,     };

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
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
 */

#include <assert.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <glob.h>
#include <libgen.h>

#include "lkc.h"
#include "parser.tab.h"

#define YY_DECL		static int yylex1(void)

#define START_STRSIZE	16

static struct {
	struct file *file;
	int lineno;
} current_pos;

static int prev_prev_token = T_EOL;
static int prev_token = T_EOL;
static char *text;
static int text_size, text_asize;

struct buffer {
	struct buffer *parent;
	YY_BUFFER_STATE state;
};

static struct buffer *current_buf;

static int last_ts, first_ts;

static char *expand_token(const char *in, size_t n);
static void append_expanded_string(const char *in);
static void zconf_endhelp(void);
static void zconf_endfile(void);

static void new_string(void)
{
	text = xmalloc(START_STRSIZE);
	text_asize = START_STRSIZE;
	text_size = 0;
	*text = 0;
}

static void append_string(const char *str, int size)
{
	int new_size = text_size + size + 1;
	if (new_size > text_asize) {
		new_size += START_STRSIZE - 1;
		new_size &= -START_STRSIZE;
		text = xrealloc(text, new_size);
		text_asize = new_size;
	}
	memcpy(text + text_size, str, size);
	text_size += size;
	text[text_size] = 0;
}

static void alloc_string(const char *str, int size)
{
	text = xmalloc(size + 1);
	memcpy(text, str, size);
	text[size] = 0;
}

static void warn_ignored_character(char chr)
{
	fprintf(stderr,
	        "%s:%d:warning: ignoring unsupported character '%c'\n",
	        current_file->name, yylineno, chr);
}

#define INITIAL 0
#define ASSIGN_VAL 1
#define HELP 2
#define STRING 3

#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.
 */

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

#ifndef YY_NO_UNPUT
    
    static void yyunput ( int c, char *buf_ptr  );
    
#endif

#ifndef yytext_ptr
static void yy_flex_strncpy ( char *, const char *, int );
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen ( const 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
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k */
#define YY_READ_BUF_SIZE 16384
#else
#define YY_READ_BUF_SIZE 8192
#endif /* __ia64__ */
#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 do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
#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) \
	errno=0; \
	while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \
	{ \
		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 /*LINTED*/break;
#endif

#define YY_RULE_SETUP \
	YY_USER_ACTION

/** The main scanner function which does all the work.
 */
YY_DECL
{
	yy_state_type yy_current_state;
	char *yy_cp, *yy_bp;
	int yy_act;
    
	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(  );
		}

	{

	char open_quote = 0;

	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
		{
		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:
		while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)]  ]) > 0 )
			++yy_cp;

		yy_current_state = -yy_current_state;

yy_find_action:
		yy_act = yy_accept[yy_current_state];

		YY_DO_BEFORE_ACTION;

		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
			{
			int yyl;
			for ( yyl = 0; yyl < yyleng; ++yyl )
				if ( yytext[yyl] == '\n' )
					
    yylineno++;
;
			}

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

		switch ( yy_act )
	{ /* beginning of action switch */
case 1:
YY_RULE_SETUP
/* ignore comment */
	YY_BREAK
case 2:
YY_RULE_SETUP
/* whitespaces */
	YY_BREAK
case 3:
/* rule 3 can match eol */
YY_RULE_SETUP
/* escaped new line */
	YY_BREAK
case 4:
/* rule 4 can match eol */
YY_RULE_SETUP
return T_EOL;
	YY_BREAK
case 5:
YY_RULE_SETUP
return T_BOOL;
	YY_BREAK
case 6:
YY_RULE_SETUP
return T_CHOICE;
	YY_BREAK
case 7:
YY_RULE_SETUP
return T_COMMENT;
	YY_BREAK
case 8:
YY_RULE_SETUP
return T_CONFIG;
	YY_BREAK
case 9:
YY_RULE_SETUP
return T_DEF_BOOL;
	YY_BREAK
case 10:
YY_RULE_SETUP
return T_DEF_TRISTATE;
	YY_BREAK
case 11:
YY_RULE_SETUP
return T_DEFAULT;
	YY_BREAK
case 12:
YY_RULE_SETUP
return T_DEPENDS;
	YY_BREAK
case 13:
YY_RULE_SETUP
return T_ENDCHOICE;
	YY_BREAK
case 14:
YY_RULE_SETUP
return T_ENDIF;
	YY_BREAK
case 15:
YY_RULE_SETUP
return T_ENDMENU;
	YY_BREAK
case 16:
YY_RULE_SETUP
return T_HELP;
	YY_BREAK
case 17:
YY_RULE_SETUP
return T_HEX;
	YY_BREAK
case 18:
YY_RULE_SETUP
return T_IF;
	YY_BREAK
case 19:
YY_RULE_SETUP
return T_IMPLY;
	YY_BREAK
case 20:
YY_RULE_SETUP
return T_INT;
	YY_BREAK
case 21:
YY_RULE_SETUP
return T_MAINMENU;
	YY_BREAK
case 22:
YY_RULE_SETUP
return T_MENU;
	YY_BREAK
case 23:
YY_RULE_SETUP
return T_MENUCONFIG;
	YY_BREAK
case 24:
YY_RULE_SETUP
return T_MODULES;
	YY_BREAK
case 25:
YY_RULE_SETUP
return T_ON;
	YY_BREAK
case 26:
YY_RULE_SETUP
return T_OPTIONAL;
	YY_BREAK
case 27:
YY_RULE_SETUP
return T_PROMPT;
	YY_BREAK
case 28:
YY_RULE_SETUP
return T_RANGE;
	YY_BREAK
case 29:
YY_RULE_SETUP
return T_RESET;
	YY_BREAK
case 30:
YY_RULE_SETUP
return T_SELECT;
	YY_BREAK
case 31:
YY_RULE_SETUP
return T_SOURCE;
	YY_BREAK
case 32:
YY_RULE_SETUP
return T_STRING;
	YY_BREAK
case 33:
YY_RULE_SETUP
return T_TRISTATE;
	YY_BREAK
case 34:
YY_RULE_SETUP
return T_VISIBLE;
	YY_BREAK
case 35:
YY_RULE_SETUP
return T_OR;
	YY_BREAK
case 36:
YY_RULE_SETUP
return T_AND;
	YY_BREAK
case 37:
YY_RULE_SETUP
return T_EQUAL;
	YY_BREAK
case 38:
YY_RULE_SETUP
return T_UNEQUAL;
	YY_BREAK
case 39:
YY_RULE_SETUP
return T_LESS;
	YY_BREAK
case 40:
YY_RULE_SETUP
return T_LESS_EQUAL;
	YY_BREAK
case 41:
YY_RULE_SETUP
return T_GREATER;
	YY_BREAK
case 42:
YY_RULE_SETUP
return T_GREATER_EQUAL;
	YY_BREAK
case 43:
YY_RULE_SETUP
return T_NOT;
	YY_BREAK
case 44:
YY_RULE_SETUP
return T_OPEN_PAREN;
	YY_BREAK
case 45:
YY_RULE_SETUP
return T_CLOSE_PAREN;
	YY_BREAK
case 46:
YY_RULE_SETUP
return T_COLON_EQUAL;
	YY_BREAK
case 47:
YY_RULE_SETUP
return T_PLUS_EQUAL;
	YY_BREAK
case 48:
YY_RULE_SETUP
{
				open_quote = yytext[0];
				new_string();
				BEGIN(STRING);
			}
	YY_BREAK
case 49:
YY_RULE_SETUP
{
				alloc_string(yytext, yyleng);
				yylval.string = text;
				return T_WORD;
			}
	YY_BREAK
case 50:
YY_RULE_SETUP
{
				/* this token includes at least one '$' */
				yylval.string = expand_token(yytext, yyleng);
				if (strlen(yylval.string))
					return T_WORD;
				free(yylval.string);
			}
	YY_BREAK
case 51:
YY_RULE_SETUP
warn_ignored_character(*yytext);
	YY_BREAK

case 52:
YY_RULE_SETUP
{
		alloc_string(yytext, yyleng);
		yylval.string = text;
		return T_ASSIGN_VAL;
	}
	YY_BREAK
case 53:
/* rule 53 can match eol */
YY_RULE_SETUP
{ BEGIN(INITIAL); return T_EOL; }
	YY_BREAK
case 54:
YY_RULE_SETUP

	YY_BREAK

case 55:
YY_RULE_SETUP
append_expanded_string(yytext);
	YY_BREAK
case 56:
YY_RULE_SETUP
{
		append_string(yytext, yyleng);
	}
	YY_BREAK
case 57:
YY_RULE_SETUP
{
		append_string(yytext + 1, yyleng - 1);
	}
	YY_BREAK
case 58:
YY_RULE_SETUP
{
		if (open_quote == yytext[0]) {
			BEGIN(INITIAL);
			yylval.string = text;
			return T_WORD_QUOTE;
		} else
			append_string(yytext, 1);
	}
	YY_BREAK
case 59:
/* rule 59 can match eol */
YY_RULE_SETUP
{
		fprintf(stderr,
			"%s:%d:warning: multi-line strings not supported\n",
			zconf_curname(), zconf_lineno());
		unput('\n');
		BEGIN(INITIAL);
		yylval.string = text;
		return T_WORD_QUOTE;
	}
	YY_BREAK
case YY_STATE_EOF(STRING):
{
		BEGIN(INITIAL);
		yylval.string = text;
		return T_WORD_QUOTE;
	}
	YY_BREAK

case 60:
YY_RULE_SETUP
{
		int ts, i;

		ts = 0;
		for (i = 0; i < yyleng; i++) {
			if (yytext[i] == '\t')
				ts = (ts & ~7) + 8;
			else
				ts++;
		}
		last_ts = ts;
		if (first_ts) {
			if (ts < first_ts) {
				zconf_endhelp();
				return T_HELPTEXT;
			}
			ts -= first_ts;
			while (ts > 8) {
				append_string("        ", 8);
				ts -= 8;
			}
			append_string("        ", ts);
		}
	}
	YY_BREAK
case 61:
/* rule 61 can match eol */
*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
YY_LINENO_REWIND_TO(yy_cp - 1);
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
{
		zconf_endhelp();
		return T_HELPTEXT;
	}
	YY_BREAK
case 62:
/* rule 62 can match eol */
YY_RULE_SETUP
{
		append_string("\n", 1);
	}
	YY_BREAK
case 63:
YY_RULE_SETUP
{
		while (yyleng) {
			if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t'))
				break;
			yyleng--;
		}
		append_string(yytext, yyleng);
		if (!first_ts)
			first_ts = last_ts;
	}
	YY_BREAK
case YY_STATE_EOF(HELP):
{
		zconf_endhelp();
		return T_HELPTEXT;
	}
	YY_BREAK

case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(ASSIGN_VAL):
{
	BEGIN(INITIAL);

	if (prev_token != T_EOL && prev_token != T_HELPTEXT)
		fprintf(stderr, "%s:%d:warning: no new line at end of file\n",
			current_file->name, yylineno);

	if (current_file) {
		zconf_endfile();
		return T_EOL;
	}
	fclose(yyin);
	yyterminate();
}
	YY_BREAK
case 64:
YY_RULE_SETUP
YY_FATAL_ERROR( "flex scanner jammed" );
	YY_BREAK

	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 user's declarations */
} /* 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)
{
    	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
	char *source = (yytext_ptr);
	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_LVALUE;

			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,
							 (yy_size_t) (b->yy_buf_size + 2)  );
				}
			else
				/* Can't grow it, we don't own it. */
				b->yy_ch_buf = NULL;

			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), 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_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
		/* Extend the array by 50%, plus the number we really need. */
		int 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, (yy_size_t) new_size  );
		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
		/* "- 2" to take care of EOB's */
		YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
	}

	(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)
{
	yy_state_type yy_current_state;
	char *yy_cp;
    
	yy_current_state = (yy_start);

	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
		{
		yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
		}

	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 )
{
	int yy_is_jam;
    
	yy_current_state = yy_nxt[yy_current_state][1];
	yy_is_jam = (yy_current_state <= 0);

		return yy_is_jam ? 0 : yy_current_state;
}

#ifndef YY_NO_UNPUT

    static void yyunput (int c, char * yy_bp )
{
	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. */
		int number_to_move = (yy_n_chars) + 2;
		char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
		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) = (int) 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;

    if ( c == '\n' ){
        --yylineno;
    }

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

#endif

#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 = (int) ((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 0;

					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);

	if ( c == '\n' )
		
    yylineno++;
;

	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( (yy_size_t) (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  );
}

/* 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 = 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)
{
	yy_size_t 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; /* After all that talk, this was set to 1 anyways... */
		(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. */
		yy_size_t 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 NULL;

	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 = (int) (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 = NULL;
	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 (const char * yystr )
{
    
	return yy_scan_bytes( yystr, (int) 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 yybytes the byte buffer to scan
 * @param _yybytes_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  (const 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 = (yy_size_t) (_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 yynoreturn yy_fatal_error (const char* msg )
{
			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 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.
     */

    /* We do not touch yylineno unless the option is enabled. */
    yylineno =  1;
    
    (yy_buffer_stack) = NULL;
    (yy_buffer_stack_top) = 0;
    (yy_buffer_stack_max) = 0;
    (yy_c_buf_p) = NULL;
    (yy_init) = 0;
    (yy_start) = 0;

/* Defined in main.c */
#ifdef YY_STDINIT
    yyin = stdin;
    yyout = stdout;
#else
    yyin = NULL;
    yyout = NULL;
#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, const char * s2, int n )
{
		
	int i;
	for ( i = 0; i < n; ++i )
		s1[i] = s2[i];
}
#endif

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

	return n;
}
#endif

void *yyalloc (yy_size_t  size )
{
			return 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 realloc(ptr, size);
}

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

#define YYTABLES_NAME "yytables"

/* second stage lexer */
int yylex(void)
{
	int token;

repeat:
	token = yylex1();

	if (prev_token == T_EOL || prev_token == T_HELPTEXT) {
		if (token == T_EOL) {
			/* Do not pass unneeded T_EOL to the parser. */
			goto repeat;
		} else {
			/*
			 * For the parser, update file/lineno at the first token
			 * of each statement. Generally, \n is a statement
			 * terminator in Kconfig, but it is not always true
			 * because \n could be escaped by a backslash.
			 */
			current_pos.file = current_file;
			current_pos.lineno = yylineno;
		}
	}

	if (prev_prev_token == T_EOL && prev_token == T_WORD &&
	    (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL))
		BEGIN(ASSIGN_VAL);

	prev_prev_token = prev_token;
	prev_token = token;

	return token;
}

static char *expand_token(const char *in, size_t n)
{
	char *out;
	int c;
	char c2;
	const char *rest, *end;

	new_string();
	append_string(in, n);

	/* get the whole line because we do not know the end of token. */
	while ((c = input()) != EOF) {
		if (c == '\n') {
			unput(c);
			break;
		}
		c2 = c;
		append_string(&c2, 1);
	}

	rest = text;
	out = expand_one_token(&rest);

	/* push back unused characters to the input stream */
	end = rest + strlen(rest);
	while (end > rest)
		unput(*--end);

	free(text);

	return out;
}

static void append_expanded_string(const char *str)
{
	const char *end;
	char *res;

	str++;

	res = expand_dollar(&str);

	/* push back unused characters to the input stream */
	end = str + strlen(str);
	while (end > str)
		unput(*--end);

	append_string(res, strlen(res));

	free(res);
}

void zconf_starthelp(void)
{
	new_string();
	last_ts = first_ts = 0;
	BEGIN(HELP);
}

static void zconf_endhelp(void)
{
	yylval.string = text;
	BEGIN(INITIAL);
}

/*
 * Try to open specified file with following names:
 * ./name
 * $(srctree)/name
 * The latter is used when srctree is separate from objtree
 * when compiling the kernel.
 * Return NULL if file is not found.
 */
FILE *zconf_fopen(const char *name)
{
	char *env, fullname[PATH_MAX+1];
	FILE *f;

	f = fopen(name, "r");
	if (!f && name != NULL && name[0] != '/') {
		env = getenv(SRCTREE);
		if (env) {
			snprintf(fullname, sizeof(fullname),
				 "%s/%s", env, name);
			f = fopen(fullname, "r");
		}
	}
	return f;
}

void zconf_initscan(const char *name)
{
	yyin = zconf_fopen(name);
	if (!yyin) {
		fprintf(stderr, "can't find file %s\n", name);
		exit(1);
	}

	current_buf = xmalloc(sizeof(*current_buf));
	memset(current_buf, 0, sizeof(*current_buf));

	current_file = file_lookup(name);
	yylineno = 1;
}

static void __zconf_nextfile(const char *name)
{
	struct file *iter;
	struct file *file = file_lookup(name);
	struct buffer *buf = xmalloc(sizeof(*buf));
	memset(buf, 0, sizeof(*buf));

	current_buf->state = YY_CURRENT_BUFFER;
	yyin = zconf_fopen(file->name);
	if (!yyin) {
		fprintf(stderr, "%s:%d: can't open file \"%s\"\n",
			zconf_curname(), zconf_lineno(), file->name);
		exit(1);
	}
	yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
	buf->parent = current_buf;
	current_buf = buf;

	current_file->lineno = yylineno;
	file->parent = current_file;

	for (iter = current_file; iter; iter = iter->parent) {
		if (!strcmp(iter->name, file->name)) {
			fprintf(stderr,
				"Recursive inclusion detected.\n"
				"Inclusion path:\n"
				"  current file : %s\n", file->name);
			iter = file;
			do {
				iter = iter->parent;
				fprintf(stderr, "  included from: %s:%d\n",
					iter->name, iter->lineno - 1);
			} while (strcmp(iter->name, file->name));
			exit(1);
		}
	}

	yylineno = 1;
	current_file = file;
}

void zconf_nextfile(const char *name)
{
	glob_t gl;
	int err;
	int i;
	char path[PATH_MAX], *p;

	err = glob(name, GLOB_ERR | GLOB_MARK, NULL, &gl);

	/* ignore wildcard patterns that return no result */
	if (err == GLOB_NOMATCH && strchr(name, '*')) {
		err = 0;
		gl.gl_pathc = 0;
	}

	if (err == GLOB_NOMATCH) {
		p = strdup(current_file->name);
		if (p) {
			snprintf(path, sizeof(path), "%s/%s", dirname(p), name);
			err = glob(path, GLOB_ERR | GLOB_MARK, NULL, &gl);
			free(p);
		}
	}

	if (err) {
		const char *reason = "unknown error";

		switch (err) {
		case GLOB_NOSPACE:
			reason = "out of memory";
			break;
		case GLOB_ABORTED:
			reason = "read error";
			break;
		case GLOB_NOMATCH:
			reason = "No files found";
			break;
		default:
			break;
		}

		printf("%s:%d: glob failed: %s \"%s\"\n", zconf_curname(), zconf_lineno(),
			reason, name);

		exit(1);
	}

	for (i = 0; i < gl.gl_pathc; i++)
		__zconf_nextfile(gl.gl_pathv[i]);
}

static void zconf_endfile(void)
{
	struct buffer *parent;

	current_file = current_file->parent;
	if (current_file)
		yylineno = current_file->lineno;

	parent = current_buf->parent;
	if (parent) {
		fclose(yyin);
		yy_delete_buffer(YY_CURRENT_BUFFER);
		yy_switch_to_buffer(parent->state);
	}
	free(current_buf);
	current_buf = parent;
}

int zconf_lineno(void)
{
	return current_pos.lineno;
}

const char *zconf_curname(void)
{
	return current_pos.file ? current_pos.file->name : "<none>";
}

