diff -Nru yabasic-2.90.1/aclocal.m4 yabasic-2.90.2/aclocal.m4 --- yabasic-2.90.1/aclocal.m4 2021-07-11 11:55:31.000000000 +0000 +++ yabasic-2.90.2/aclocal.m4 2022-01-07 05:49:37.000000000 +0000 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.1 -*- Autoconf -*- +# generated automatically by aclocal 1.16.3 -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2020 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# Copyright (C) 2002-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -35,7 +35,7 @@ [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.16.1], [], +m4_if([$1], [1.16.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,14 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.1])dnl +[AM_AUTOMAKE_VERSION([1.16.3])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -110,7 +110,7 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -141,7 +141,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -332,7 +332,7 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -371,7 +371,9 @@ done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi @@ -398,7 +400,7 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -595,7 +597,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -616,7 +618,7 @@ fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# Copyright (C) 2003-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -637,7 +639,7 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -680,7 +682,7 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -701,12 +703,7 @@ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then @@ -719,7 +716,7 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -748,7 +745,7 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -795,7 +792,7 @@ # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -814,7 +811,7 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -895,7 +892,7 @@ rm -f conftest.file ]) -# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# Copyright (C) 2009-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -955,7 +952,7 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -983,7 +980,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# Copyright (C) 2006-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1002,7 +999,7 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# Copyright (C) 2004-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -Nru yabasic-2.90.1/AUTHORS yabasic-2.90.2/AUTHORS --- yabasic-2.90.1/AUTHORS 2021-07-04 12:47:00.000000000 +0000 +++ yabasic-2.90.2/AUTHORS 2022-01-06 21:15:48.000000000 +0000 @@ -1,5 +1,5 @@ -Many Individuals have contributed to yabasic; either by testing -new versions, asking for features, adding documentation or giving -encouragement. +Marc Ihm. Many other Individuals have contributed to yabasic; either +by testing new versions, asking for features, adding documentation or +giving encouragement. diff -Nru yabasic-2.90.1/bison.c yabasic-2.90.2/bison.c --- yabasic-2.90.1/bison.c 2021-07-11 12:27:06.000000000 +0000 +++ yabasic-2.90.2/bison.c 2022-01-08 20:05:40.000000000 +0000 @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.7.5. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -34,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -41,14 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30705 -/* Bison version. */ -#define YYBISON_VERSION "3.5.1" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -70,7 +71,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de BISON part @@ -202,260 +203,324 @@ # endif # endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY_YY_BISON_H_INCLUDED -# define YY_YY_BISON_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - tFNUM = 258, - tSYMBOL = 259, - tSTRSYM = 260, - tDOCU = 261, - tDIGITS = 262, - tHEXDIGITS = 263, - tBINDIGITS = 264, - tSTRING = 265, - tFOR = 266, - tTO = 267, - tSTEP = 268, - tNEXT = 269, - tWHILE = 270, - tWEND = 271, - tREPEAT = 272, - tUNTIL = 273, - tIMPORT = 274, - tGOTO = 275, - tGOSUB = 276, - tLABEL = 277, - tON = 278, - tSUB = 279, - tENDSUB = 280, - tLOCAL = 281, - tSTATIC = 282, - tEXPORT = 283, - tERROR = 284, - tEXECUTE = 285, - tEXECUTE2 = 286, - tCOMPILE = 287, - tRUNTIME_CREATED_SUB = 288, - tINTERRUPT = 289, - tBREAK = 290, - tCONTINUE = 291, - tSWITCH = 292, - tSEND = 293, - tCASE = 294, - tDEFAULT = 295, - tLOOP = 296, - tDO = 297, - tSEP = 298, - tEOPROG = 299, - tIF = 300, - tTHEN = 301, - tELSE = 302, - tELSIF = 303, - tENDIF = 304, - tIMPLICITENDIF = 305, - tUSING = 306, - tPRINT = 307, - tINPUT = 308, - tRETURN = 309, - tDIM = 310, - tEND = 311, - tEXIT = 312, - tAT = 313, - tSCREEN = 314, - tREVERSE = 315, - tCOLOUR = 316, - tBACKCOLOUR = 317, - tAND = 318, - tOR = 319, - tNOT = 320, - tBITNOT = 321, - tEOR = 322, - tSHL = 323, - tSHR = 324, - tNEQ = 325, - tLEQ = 326, - tGEQ = 327, - tLTN = 328, - tGTN = 329, - tEQU = 330, - tPOW = 331, - tREAD = 332, - tDATA = 333, - tRESTORE = 334, - tOPEN = 335, - tCLOSE = 336, - tSEEK = 337, - tTELL = 338, - tAS = 339, - tREADING = 340, - tWRITING = 341, - tORIGIN = 342, - tWINDOW = 343, - tDOT = 344, - tLINE = 345, - tCIRCLE = 346, - tTRIANGLE = 347, - tTEXT = 348, - tCLEAR = 349, - tFILL = 350, - tPRINTER = 351, - tWAIT = 352, - tBELL = 353, - tLET = 354, - tARDIM = 355, - tARSIZE = 356, - tBIND = 357, - tRECT = 358, - tGETBIT = 359, - tPUTBIT = 360, - tGETCHAR = 361, - tPUTCHAR = 362, - tNEW = 363, - tCURVE = 364, - tSIN = 365, - tASIN = 366, - tCOS = 367, - tACOS = 368, - tTAN = 369, - tATAN = 370, - tEXP = 371, - tLOG = 372, - tSQRT = 373, - tSQR = 374, - tMYEOF = 375, - tABS = 376, - tSIG = 377, - tINT = 378, - tCEIL = 379, - tFLOOR = 380, - tFRAC = 381, - tROUND = 382, - tMOD = 383, - tRAN = 384, - tVAL = 385, - tLEFT = 386, - tRIGHT = 387, - tMID = 388, - tLEN = 389, - tMIN = 390, - tMAX = 391, - tSTR = 392, - tINKEY = 393, - tCHR = 394, - tASC = 395, - tHEX = 396, - tDEC = 397, - tBIN = 398, - tUPPER = 399, - tLOWER = 400, - tMOUSEX = 401, - tMOUSEY = 402, - tMOUSEB = 403, - tMOUSEMOD = 404, - tTRIM = 405, - tLTRIM = 406, - tRTRIM = 407, - tINSTR = 408, - tRINSTR = 409, - tCHOMP = 410, - tSYSTEM = 411, - tSYSTEM2 = 412, - tPEEK = 413, - tPEEK2 = 414, - tPOKE = 415, - tFRNFN_CALL = 416, - tFRNFN_CALL2 = 417, - tFRNFN_SIZE = 418, - tFRNBF_ALLOC = 419, - tFRNBF_FREE = 420, - tFRNBF_SIZE = 421, - tFRNBF_DUMP = 422, - tFRNBF_SET = 423, - tFRNBF_GET = 424, - tFRNBF_GET2 = 425, - tFRNBF_GET_BUFFER = 426, - tFRNBF_SET_BUFFER = 427, - tDATE = 428, - tTIME = 429, - tTOKEN = 430, - tTOKENALT = 431, - tSPLIT = 432, - tSPLITALT = 433, - tGLOB = 434, - tSTART_PROGRAM = 435, - tSTART_EXPRESSION = 436, - tSTART_STRING_EXPRESSION = 437, - tSTART_ASSIGNMENT = 438, - tSTART_FUNCTION_DEFINITION = 439, - tEVAL = 440, - tEVAL2 = 441, - UMINUS = 442 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE +#include "bison.h" +/* Symbol kind. */ +enum yysymbol_kind_t { - - double fnum; /* double number */ - int inum; /* integer number */ - int token; /* token of command */ - int sep; /* number of newlines */ - char *string; /* quoted string */ - char *symbol; /* general symbol */ - char *digits; /* string of digits */ - char *docu; /* embedded documentation */ - - + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_tFNUM = 3, /* tFNUM */ + YYSYMBOL_tSYMBOL = 4, /* tSYMBOL */ + YYSYMBOL_tSTRSYM = 5, /* tSTRSYM */ + YYSYMBOL_tDOCU = 6, /* tDOCU */ + YYSYMBOL_tDIGITS = 7, /* tDIGITS */ + YYSYMBOL_tHEXDIGITS = 8, /* tHEXDIGITS */ + YYSYMBOL_tBINDIGITS = 9, /* tBINDIGITS */ + YYSYMBOL_tSTRING = 10, /* tSTRING */ + YYSYMBOL_tFOR = 11, /* tFOR */ + YYSYMBOL_tTO = 12, /* tTO */ + YYSYMBOL_tSTEP = 13, /* tSTEP */ + YYSYMBOL_tNEXT = 14, /* tNEXT */ + YYSYMBOL_tWHILE = 15, /* tWHILE */ + YYSYMBOL_tWEND = 16, /* tWEND */ + YYSYMBOL_tREPEAT = 17, /* tREPEAT */ + YYSYMBOL_tUNTIL = 18, /* tUNTIL */ + YYSYMBOL_tIMPORT = 19, /* tIMPORT */ + YYSYMBOL_tGOTO = 20, /* tGOTO */ + YYSYMBOL_tGOSUB = 21, /* tGOSUB */ + YYSYMBOL_tLABEL = 22, /* tLABEL */ + YYSYMBOL_tON = 23, /* tON */ + YYSYMBOL_tSUB = 24, /* tSUB */ + YYSYMBOL_tENDSUB = 25, /* tENDSUB */ + YYSYMBOL_tLOCAL = 26, /* tLOCAL */ + YYSYMBOL_tSTATIC = 27, /* tSTATIC */ + YYSYMBOL_tEXPORT = 28, /* tEXPORT */ + YYSYMBOL_tERROR = 29, /* tERROR */ + YYSYMBOL_tEXECUTE = 30, /* tEXECUTE */ + YYSYMBOL_tEXECUTE2 = 31, /* tEXECUTE2 */ + YYSYMBOL_tCOMPILE = 32, /* tCOMPILE */ + YYSYMBOL_tRUNTIME_CREATED_SUB = 33, /* tRUNTIME_CREATED_SUB */ + YYSYMBOL_tINTERRUPT = 34, /* tINTERRUPT */ + YYSYMBOL_tBREAK = 35, /* tBREAK */ + YYSYMBOL_tCONTINUE = 36, /* tCONTINUE */ + YYSYMBOL_tSWITCH = 37, /* tSWITCH */ + YYSYMBOL_tSEND = 38, /* tSEND */ + YYSYMBOL_tCASE = 39, /* tCASE */ + YYSYMBOL_tDEFAULT = 40, /* tDEFAULT */ + YYSYMBOL_tLOOP = 41, /* tLOOP */ + YYSYMBOL_tDO = 42, /* tDO */ + YYSYMBOL_tSEP = 43, /* tSEP */ + YYSYMBOL_tEOPROG = 44, /* tEOPROG */ + YYSYMBOL_tIF = 45, /* tIF */ + YYSYMBOL_tTHEN = 46, /* tTHEN */ + YYSYMBOL_tELSE = 47, /* tELSE */ + YYSYMBOL_tELSIF = 48, /* tELSIF */ + YYSYMBOL_tENDIF = 49, /* tENDIF */ + YYSYMBOL_tIMPLICITENDIF = 50, /* tIMPLICITENDIF */ + YYSYMBOL_tUSING = 51, /* tUSING */ + YYSYMBOL_tPRINT = 52, /* tPRINT */ + YYSYMBOL_tINPUT = 53, /* tINPUT */ + YYSYMBOL_tRETURN = 54, /* tRETURN */ + YYSYMBOL_tDIM = 55, /* tDIM */ + YYSYMBOL_tEND = 56, /* tEND */ + YYSYMBOL_tEXIT = 57, /* tEXIT */ + YYSYMBOL_tAT = 58, /* tAT */ + YYSYMBOL_tSCREEN = 59, /* tSCREEN */ + YYSYMBOL_tREVERSE = 60, /* tREVERSE */ + YYSYMBOL_tCOLOUR = 61, /* tCOLOUR */ + YYSYMBOL_tBACKCOLOUR = 62, /* tBACKCOLOUR */ + YYSYMBOL_tAND = 63, /* tAND */ + YYSYMBOL_tOR = 64, /* tOR */ + YYSYMBOL_tNOT = 65, /* tNOT */ + YYSYMBOL_tBITNOT = 66, /* tBITNOT */ + YYSYMBOL_tEOR = 67, /* tEOR */ + YYSYMBOL_tSHL = 68, /* tSHL */ + YYSYMBOL_tSHR = 69, /* tSHR */ + YYSYMBOL_tNEQ = 70, /* tNEQ */ + YYSYMBOL_tLEQ = 71, /* tLEQ */ + YYSYMBOL_tGEQ = 72, /* tGEQ */ + YYSYMBOL_tLTN = 73, /* tLTN */ + YYSYMBOL_tGTN = 74, /* tGTN */ + YYSYMBOL_tEQU = 75, /* tEQU */ + YYSYMBOL_tEQU2 = 76, /* tEQU2 */ + YYSYMBOL_tPOW = 77, /* tPOW */ + YYSYMBOL_tREAD = 78, /* tREAD */ + YYSYMBOL_tDATA = 79, /* tDATA */ + YYSYMBOL_tRESTORE = 80, /* tRESTORE */ + YYSYMBOL_tOPEN = 81, /* tOPEN */ + YYSYMBOL_tCLOSE = 82, /* tCLOSE */ + YYSYMBOL_tSEEK = 83, /* tSEEK */ + YYSYMBOL_tTELL = 84, /* tTELL */ + YYSYMBOL_tAS = 85, /* tAS */ + YYSYMBOL_tREADING = 86, /* tREADING */ + YYSYMBOL_tWRITING = 87, /* tWRITING */ + YYSYMBOL_tORIGIN = 88, /* tORIGIN */ + YYSYMBOL_tWINDOW = 89, /* tWINDOW */ + YYSYMBOL_tDOT = 90, /* tDOT */ + YYSYMBOL_tLINE = 91, /* tLINE */ + YYSYMBOL_tCIRCLE = 92, /* tCIRCLE */ + YYSYMBOL_tTRIANGLE = 93, /* tTRIANGLE */ + YYSYMBOL_tTEXT = 94, /* tTEXT */ + YYSYMBOL_tCLEAR = 95, /* tCLEAR */ + YYSYMBOL_tFILL = 96, /* tFILL */ + YYSYMBOL_tPRINTER = 97, /* tPRINTER */ + YYSYMBOL_tWAIT = 98, /* tWAIT */ + YYSYMBOL_tBELL = 99, /* tBELL */ + YYSYMBOL_tLET = 100, /* tLET */ + YYSYMBOL_tARDIM = 101, /* tARDIM */ + YYSYMBOL_tARSIZE = 102, /* tARSIZE */ + YYSYMBOL_tBIND = 103, /* tBIND */ + YYSYMBOL_tRECT = 104, /* tRECT */ + YYSYMBOL_tGETBIT = 105, /* tGETBIT */ + YYSYMBOL_tPUTBIT = 106, /* tPUTBIT */ + YYSYMBOL_tGETCHAR = 107, /* tGETCHAR */ + YYSYMBOL_tPUTCHAR = 108, /* tPUTCHAR */ + YYSYMBOL_tNEW = 109, /* tNEW */ + YYSYMBOL_tCURVE = 110, /* tCURVE */ + YYSYMBOL_tSIN = 111, /* tSIN */ + YYSYMBOL_tASIN = 112, /* tASIN */ + YYSYMBOL_tCOS = 113, /* tCOS */ + YYSYMBOL_tACOS = 114, /* tACOS */ + YYSYMBOL_tTAN = 115, /* tTAN */ + YYSYMBOL_tATAN = 116, /* tATAN */ + YYSYMBOL_tEXP = 117, /* tEXP */ + YYSYMBOL_tLOG = 118, /* tLOG */ + YYSYMBOL_tSQRT = 119, /* tSQRT */ + YYSYMBOL_tSQR = 120, /* tSQR */ + YYSYMBOL_tMYEOF = 121, /* tMYEOF */ + YYSYMBOL_tABS = 122, /* tABS */ + YYSYMBOL_tSIG = 123, /* tSIG */ + YYSYMBOL_tINT = 124, /* tINT */ + YYSYMBOL_tCEIL = 125, /* tCEIL */ + YYSYMBOL_tFLOOR = 126, /* tFLOOR */ + YYSYMBOL_tFRAC = 127, /* tFRAC */ + YYSYMBOL_tROUND = 128, /* tROUND */ + YYSYMBOL_tMOD = 129, /* tMOD */ + YYSYMBOL_tRAN = 130, /* tRAN */ + YYSYMBOL_tVAL = 131, /* tVAL */ + YYSYMBOL_tLEFT = 132, /* tLEFT */ + YYSYMBOL_tRIGHT = 133, /* tRIGHT */ + YYSYMBOL_tMID = 134, /* tMID */ + YYSYMBOL_tLEN = 135, /* tLEN */ + YYSYMBOL_tMIN = 136, /* tMIN */ + YYSYMBOL_tMAX = 137, /* tMAX */ + YYSYMBOL_tSTR = 138, /* tSTR */ + YYSYMBOL_tINKEY = 139, /* tINKEY */ + YYSYMBOL_tCHR = 140, /* tCHR */ + YYSYMBOL_tASC = 141, /* tASC */ + YYSYMBOL_tHEX = 142, /* tHEX */ + YYSYMBOL_tDEC = 143, /* tDEC */ + YYSYMBOL_tBIN = 144, /* tBIN */ + YYSYMBOL_tUPPER = 145, /* tUPPER */ + YYSYMBOL_tLOWER = 146, /* tLOWER */ + YYSYMBOL_tMOUSEX = 147, /* tMOUSEX */ + YYSYMBOL_tMOUSEY = 148, /* tMOUSEY */ + YYSYMBOL_tMOUSEB = 149, /* tMOUSEB */ + YYSYMBOL_tMOUSEMOD = 150, /* tMOUSEMOD */ + YYSYMBOL_tTRIM = 151, /* tTRIM */ + YYSYMBOL_tLTRIM = 152, /* tLTRIM */ + YYSYMBOL_tRTRIM = 153, /* tRTRIM */ + YYSYMBOL_tINSTR = 154, /* tINSTR */ + YYSYMBOL_tRINSTR = 155, /* tRINSTR */ + YYSYMBOL_tCHOMP = 156, /* tCHOMP */ + YYSYMBOL_tSYSTEM = 157, /* tSYSTEM */ + YYSYMBOL_tSYSTEM2 = 158, /* tSYSTEM2 */ + YYSYMBOL_tPEEK = 159, /* tPEEK */ + YYSYMBOL_tPEEK2 = 160, /* tPEEK2 */ + YYSYMBOL_tPOKE = 161, /* tPOKE */ + YYSYMBOL_tFRNFN_CALL = 162, /* tFRNFN_CALL */ + YYSYMBOL_tFRNFN_CALL2 = 163, /* tFRNFN_CALL2 */ + YYSYMBOL_tFRNFN_SIZE = 164, /* tFRNFN_SIZE */ + YYSYMBOL_tFRNBF_ALLOC = 165, /* tFRNBF_ALLOC */ + YYSYMBOL_tFRNBF_FREE = 166, /* tFRNBF_FREE */ + YYSYMBOL_tFRNBF_SIZE = 167, /* tFRNBF_SIZE */ + YYSYMBOL_tFRNBF_DUMP = 168, /* tFRNBF_DUMP */ + YYSYMBOL_tFRNBF_SET = 169, /* tFRNBF_SET */ + YYSYMBOL_tFRNBF_GET = 170, /* tFRNBF_GET */ + YYSYMBOL_tFRNBF_GET2 = 171, /* tFRNBF_GET2 */ + YYSYMBOL_tFRNBF_GET_BUFFER = 172, /* tFRNBF_GET_BUFFER */ + YYSYMBOL_tFRNBF_SET_BUFFER = 173, /* tFRNBF_SET_BUFFER */ + YYSYMBOL_tDATE = 174, /* tDATE */ + YYSYMBOL_tTIME = 175, /* tTIME */ + YYSYMBOL_tTOKEN = 176, /* tTOKEN */ + YYSYMBOL_tTOKENALT = 177, /* tTOKENALT */ + YYSYMBOL_tSPLIT = 178, /* tSPLIT */ + YYSYMBOL_tSPLITALT = 179, /* tSPLITALT */ + YYSYMBOL_tGLOB = 180, /* tGLOB */ + YYSYMBOL_tSTART_PROGRAM = 181, /* tSTART_PROGRAM */ + YYSYMBOL_tSTART_EXPRESSION = 182, /* tSTART_EXPRESSION */ + YYSYMBOL_tSTART_STRING_EXPRESSION = 183, /* tSTART_STRING_EXPRESSION */ + YYSYMBOL_tSTART_ASSIGNMENT = 184, /* tSTART_ASSIGNMENT */ + YYSYMBOL_tSTART_FUNCTION_DEFINITION = 185, /* tSTART_FUNCTION_DEFINITION */ + YYSYMBOL_tEVAL = 186, /* tEVAL */ + YYSYMBOL_tEVAL2 = 187, /* tEVAL2 */ + YYSYMBOL_188_ = 188, /* '-' */ + YYSYMBOL_189_ = 189, /* '+' */ + YYSYMBOL_190_ = 190, /* '*' */ + YYSYMBOL_191_ = 191, /* '/' */ + YYSYMBOL_UMINUS = 192, /* UMINUS */ + YYSYMBOL_193_ = 193, /* ';' */ + YYSYMBOL_194_ = 194, /* ',' */ + YYSYMBOL_195_ = 195, /* '(' */ + YYSYMBOL_196_ = 196, /* ')' */ + YYSYMBOL_197_ = 197, /* '#' */ + YYSYMBOL_YYACCEPT = 198, /* $accept */ + YYSYMBOL_program_or_expression = 199, /* program_or_expression */ + YYSYMBOL_program = 200, /* program */ + YYSYMBOL_statement_list = 201, /* statement_list */ + YYSYMBOL_202_1 = 202, /* $@1 */ + YYSYMBOL_203_2 = 203, /* $@2 */ + YYSYMBOL_assignment = 204, /* assignment */ + YYSYMBOL_statement = 205, /* statement */ + YYSYMBOL_206_3 = 206, /* $@3 */ + YYSYMBOL_207_4 = 207, /* $@4 */ + YYSYMBOL_208_5 = 208, /* $@5 */ + YYSYMBOL_209_6 = 209, /* $@6 */ + YYSYMBOL_210_7 = 210, /* $@7 */ + YYSYMBOL_211_8 = 211, /* $@8 */ + YYSYMBOL_clear_fill_clause = 212, /* clear_fill_clause */ + YYSYMBOL_string_assignment = 213, /* string_assignment */ + YYSYMBOL_to = 214, /* to */ + YYSYMBOL_open_clause = 215, /* open_clause */ + YYSYMBOL_seek_clause = 216, /* seek_clause */ + YYSYMBOL_string_scalar_or_array = 217, /* string_scalar_or_array */ + YYSYMBOL_string_expression = 218, /* string_expression */ + YYSYMBOL_string_function = 219, /* string_function */ + YYSYMBOL_number_assignment = 220, /* number_assignment */ + YYSYMBOL_expression = 221, /* expression */ + YYSYMBOL_222_9 = 222, /* $@9 */ + YYSYMBOL_223_10 = 223, /* $@10 */ + YYSYMBOL_arrayref = 224, /* arrayref */ + YYSYMBOL_string_arrayref = 225, /* string_arrayref */ + YYSYMBOL_coordinates = 226, /* coordinates */ + YYSYMBOL_function = 227, /* function */ + YYSYMBOL_const = 228, /* const */ + YYSYMBOL_number = 229, /* number */ + YYSYMBOL_symbol_or_lineno = 230, /* symbol_or_lineno */ + YYSYMBOL_dimlist = 231, /* dimlist */ + YYSYMBOL_function_or_array = 232, /* function_or_array */ + YYSYMBOL_stringfunction_or_array = 233, /* stringfunction_or_array */ + YYSYMBOL_call_list = 234, /* call_list */ + YYSYMBOL_235_11 = 235, /* $@11 */ + YYSYMBOL_calls = 236, /* calls */ + YYSYMBOL_call_item = 237, /* call_item */ + YYSYMBOL_function_definition = 238, /* function_definition */ + YYSYMBOL_239_12 = 239, /* $@12 */ + YYSYMBOL_240_13 = 240, /* $@13 */ + YYSYMBOL_241_14 = 241, /* $@14 */ + YYSYMBOL_endsub = 242, /* endsub */ + YYSYMBOL_function_name = 243, /* function_name */ + YYSYMBOL_export = 244, /* export */ + YYSYMBOL_local_list = 245, /* local_list */ + YYSYMBOL_local_item = 246, /* local_item */ + YYSYMBOL_static_list = 247, /* static_list */ + YYSYMBOL_static_item = 248, /* static_item */ + YYSYMBOL_paramlist = 249, /* paramlist */ + YYSYMBOL_paramitem = 250, /* paramitem */ + YYSYMBOL_for_loop = 251, /* for_loop */ + YYSYMBOL_252_15 = 252, /* $@15 */ + YYSYMBOL_253_16 = 253, /* $@16 */ + YYSYMBOL_254_17 = 254, /* $@17 */ + YYSYMBOL_255_18 = 255, /* $@18 */ + YYSYMBOL_next = 256, /* next */ + YYSYMBOL_step_part = 257, /* step_part */ + YYSYMBOL_next_symbol = 258, /* next_symbol */ + YYSYMBOL_switch_number_or_string = 259, /* switch_number_or_string */ + YYSYMBOL_260_19 = 260, /* $@19 */ + YYSYMBOL_sep_list = 261, /* sep_list */ + YYSYMBOL_number_or_string = 262, /* number_or_string */ + YYSYMBOL_case_list = 263, /* case_list */ + YYSYMBOL_264_20 = 264, /* $@20 */ + YYSYMBOL_default = 265, /* default */ + YYSYMBOL_266_21 = 266, /* $@21 */ + YYSYMBOL_do_loop = 267, /* do_loop */ + YYSYMBOL_268_22 = 268, /* $@22 */ + YYSYMBOL_loop = 269, /* loop */ + YYSYMBOL_while_loop = 270, /* while_loop */ + YYSYMBOL_271_23 = 271, /* $@23 */ + YYSYMBOL_272_24 = 272, /* $@24 */ + YYSYMBOL_wend = 273, /* wend */ + YYSYMBOL_repeat_loop = 274, /* repeat_loop */ + YYSYMBOL_275_25 = 275, /* $@25 */ + YYSYMBOL_until = 276, /* until */ + YYSYMBOL_if_clause = 277, /* if_clause */ + YYSYMBOL_278_26 = 278, /* $@26 */ + YYSYMBOL_279_27 = 279, /* $@27 */ + YYSYMBOL_280_28 = 280, /* $@28 */ + YYSYMBOL_281_29 = 281, /* $@29 */ + YYSYMBOL_endif = 282, /* endif */ + YYSYMBOL_short_if = 283, /* short_if */ + YYSYMBOL_284_30 = 284, /* $@30 */ + YYSYMBOL_end_of_if = 285, /* end_of_if */ + YYSYMBOL_else_part = 286, /* else_part */ + YYSYMBOL_elsif_part = 287, /* elsif_part */ + YYSYMBOL_288_31 = 288, /* $@31 */ + YYSYMBOL_289_32 = 289, /* $@32 */ + YYSYMBOL_maybe_then = 290, /* maybe_then */ + YYSYMBOL_inputlist = 291, /* inputlist */ + YYSYMBOL_292_33 = 292, /* $@33 */ + YYSYMBOL_input = 293, /* input */ + YYSYMBOL_readlist = 294, /* readlist */ + YYSYMBOL_readitem = 295, /* readitem */ + YYSYMBOL_datalist = 296, /* datalist */ + YYSYMBOL_printlist = 297, /* printlist */ + YYSYMBOL_using = 298, /* using */ + YYSYMBOL_inputbody = 299, /* inputbody */ + YYSYMBOL_300_34 = 300, /* $@34 */ + YYSYMBOL_301_35 = 301, /* $@35 */ + YYSYMBOL_302_36 = 302, /* $@36 */ + YYSYMBOL_303_37 = 303, /* $@37 */ + YYSYMBOL_304_38 = 304, /* $@38 */ + YYSYMBOL_prompt = 305, /* prompt */ + YYSYMBOL_printintro = 306, /* printintro */ + YYSYMBOL_hashed_number = 307, /* hashed_number */ + YYSYMBOL_goto_list = 308, /* goto_list */ + YYSYMBOL_gosub_list = 309 /* gosub_list */ }; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif +typedef enum yysymbol_kind_t yysymbol_kind_t; -/* Location type. */ -#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE -{ - int first_line; - int first_column; - int last_line; - int last_column; -}; -# define YYLTYPE_IS_DECLARED 1 -# define YYLTYPE_IS_TRIVIAL 1 -#endif - - -extern YYSTYPE yylval; -extern YYLTYPE yylloc; -int yyparse (void); - -#endif /* !YY_YY_BISON_H_INCLUDED */ /* Unqualified %code blocks. */ @@ -508,6 +573,18 @@ typedef short yytype_int16; #endif +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -567,6 +644,7 @@ #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + /* Stored state numbers (used for stacks). */ typedef yytype_int16 yy_state_t; @@ -585,6 +663,7 @@ # endif #endif + #ifndef YY_ATTRIBUTE_PURE # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) @@ -603,9 +682,9 @@ /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ @@ -642,7 +721,7 @@ #define YY_ASSERT(E) ((void) (0 && (E))) -#if ! defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -707,8 +786,7 @@ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* !defined yyoverflow */ #if (! defined yyoverflow \ && (! defined __cplusplus \ @@ -776,25 +854,27 @@ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 192 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 6134 +#define YYLAST 6557 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 197 +#define YYNTOKENS 198 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 111 +#define YYNNTS 112 /* YYNRULES -- Number of rules. */ -#define YYNRULES 476 +#define YYNRULES 479 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1135 +#define YYNSTATES 1140 -#define YYUNDEFTOK 2 -#define YYMAXUTOK 442 +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 443 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ @@ -803,9 +883,9 @@ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 196, 2, 2, 2, 2, - 194, 195, 189, 188, 193, 187, 2, 190, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 192, + 2, 2, 2, 2, 2, 197, 2, 2, 2, 2, + 195, 196, 190, 189, 194, 188, 2, 191, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 193, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -844,123 +924,136 @@ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 191 + 185, 186, 187, 192 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 190, 190, 191, 192, 193, 194, 197, 200, 201, - 201, 205, 206, 207, 208, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 226, 227, 227, 228, 229, 230, 231, 232, 233, - 234, 234, 236, 236, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 248, 249, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 266, 267, 268, - 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 321, 322, 323, - 324, 325, 329, 330, 331, 332, 333, 334, 337, 338, - 341, 342, 343, 344, 345, 348, 349, 352, 353, 356, - 357, 358, 359, 360, 361, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 407, 408, 411, 411, - 412, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 445, 448, 451, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 527, 528, 529, 532, - 533, 534, 535, 538, 539, 542, 543, 544, 545, 548, - 551, 554, 554, 557, 558, 559, 562, 563, 566, 567, - 570, 566, 575, 576, 579, 580, 583, 584, 585, 586, - 589, 590, 593, 594, 595, 596, 599, 600, 603, 604, - 605, 606, 609, 610, 611, 614, 615, 616, 617, 620, - 621, 626, 641, 620, 646, 647, 648, 649, 650, 651, - 654, 655, 658, 659, 664, 664, 668, 669, 672, 673, - 677, 679, 678, 683, 684, 684, 688, 688, 694, 695, - 696, 697, 698, 699, 703, 704, 703, 710, 711, 715, - 715, 720, 721, 722, 723, 724, 725, 728, 729, 729, - 731, 728, 735, 736, 737, 738, 739, 740, 743, 743, - 748, 749, 752, 753, 756, 758, 760, 757, 764, 765, - 768, 769, 769, 772, 773, 775, 776, 780, 781, 784, - 785, 787, 788, 792, 793, 794, 795, 798, 799, 800, - 801, 802, 805, 806, 807, 810, 810, 811, 811, 812, - 812, 813, 813, 814, 814, 817, 818, 821, 822, 823, - 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, - 834, 837, 838, 840, 841, 844, 845 + 0, 191, 191, 192, 193, 194, 195, 198, 201, 202, + 202, 202, 205, 206, 207, 208, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 226, 227, 227, 228, 229, 230, 231, 232, + 233, 234, 234, 236, 236, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 248, 249, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 266, 267, + 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 321, 322, + 323, 324, 325, 329, 330, 331, 332, 333, 334, 337, + 338, 341, 342, 343, 344, 345, 348, 349, 352, 353, + 356, 357, 358, 359, 360, 361, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 407, 408, 411, + 411, 412, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 447, 450, 453, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 525, 526, 529, + 530, 531, 534, 535, 536, 537, 540, 541, 544, 545, + 546, 547, 550, 553, 556, 556, 559, 560, 561, 564, + 565, 568, 569, 572, 568, 577, 578, 581, 582, 585, + 586, 587, 588, 591, 592, 595, 596, 597, 598, 601, + 602, 605, 606, 607, 608, 611, 612, 613, 616, 617, + 618, 619, 622, 623, 628, 643, 622, 648, 649, 650, + 651, 652, 653, 656, 657, 660, 661, 666, 666, 670, + 671, 674, 675, 679, 681, 680, 685, 686, 686, 690, + 690, 696, 697, 698, 699, 700, 701, 705, 706, 705, + 712, 713, 717, 717, 722, 723, 724, 725, 726, 727, + 730, 731, 731, 733, 730, 737, 738, 739, 740, 741, + 742, 745, 745, 750, 751, 754, 755, 758, 760, 762, + 759, 766, 767, 770, 771, 771, 774, 775, 777, 778, + 782, 783, 786, 787, 789, 790, 794, 795, 796, 797, + 800, 801, 802, 803, 804, 807, 808, 809, 812, 812, + 813, 813, 814, 814, 815, 815, 816, 816, 819, 820, + 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, + 833, 834, 835, 836, 839, 840, 842, 843, 846, 847 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "tFNUM", "tSYMBOL", "tSTRSYM", "tDOCU", - "tDIGITS", "tHEXDIGITS", "tBINDIGITS", "tSTRING", "tFOR", "tTO", "tSTEP", - "tNEXT", "tWHILE", "tWEND", "tREPEAT", "tUNTIL", "tIMPORT", "tGOTO", - "tGOSUB", "tLABEL", "tON", "tSUB", "tENDSUB", "tLOCAL", "tSTATIC", - "tEXPORT", "tERROR", "tEXECUTE", "tEXECUTE2", "tCOMPILE", - "tRUNTIME_CREATED_SUB", "tINTERRUPT", "tBREAK", "tCONTINUE", "tSWITCH", - "tSEND", "tCASE", "tDEFAULT", "tLOOP", "tDO", "tSEP", "tEOPROG", "tIF", - "tTHEN", "tELSE", "tELSIF", "tENDIF", "tIMPLICITENDIF", "tUSING", - "tPRINT", "tINPUT", "tRETURN", "tDIM", "tEND", "tEXIT", "tAT", "tSCREEN", - "tREVERSE", "tCOLOUR", "tBACKCOLOUR", "tAND", "tOR", "tNOT", "tBITNOT", - "tEOR", "tSHL", "tSHR", "tNEQ", "tLEQ", "tGEQ", "tLTN", "tGTN", "tEQU", - "tPOW", "tREAD", "tDATA", "tRESTORE", "tOPEN", "tCLOSE", "tSEEK", - "tTELL", "tAS", "tREADING", "tWRITING", "tORIGIN", "tWINDOW", "tDOT", - "tLINE", "tCIRCLE", "tTRIANGLE", "tTEXT", "tCLEAR", "tFILL", "tPRINTER", - "tWAIT", "tBELL", "tLET", "tARDIM", "tARSIZE", "tBIND", "tRECT", - "tGETBIT", "tPUTBIT", "tGETCHAR", "tPUTCHAR", "tNEW", "tCURVE", "tSIN", - "tASIN", "tCOS", "tACOS", "tTAN", "tATAN", "tEXP", "tLOG", "tSQRT", - "tSQR", "tMYEOF", "tABS", "tSIG", "tINT", "tCEIL", "tFLOOR", "tFRAC", - "tROUND", "tMOD", "tRAN", "tVAL", "tLEFT", "tRIGHT", "tMID", "tLEN", - "tMIN", "tMAX", "tSTR", "tINKEY", "tCHR", "tASC", "tHEX", "tDEC", "tBIN", - "tUPPER", "tLOWER", "tMOUSEX", "tMOUSEY", "tMOUSEB", "tMOUSEMOD", - "tTRIM", "tLTRIM", "tRTRIM", "tINSTR", "tRINSTR", "tCHOMP", "tSYSTEM", - "tSYSTEM2", "tPEEK", "tPEEK2", "tPOKE", "tFRNFN_CALL", "tFRNFN_CALL2", - "tFRNFN_SIZE", "tFRNBF_ALLOC", "tFRNBF_FREE", "tFRNBF_SIZE", - "tFRNBF_DUMP", "tFRNBF_SET", "tFRNBF_GET", "tFRNBF_GET2", + "\"end of file\"", "error", "\"invalid token\"", "tFNUM", "tSYMBOL", + "tSTRSYM", "tDOCU", "tDIGITS", "tHEXDIGITS", "tBINDIGITS", "tSTRING", + "tFOR", "tTO", "tSTEP", "tNEXT", "tWHILE", "tWEND", "tREPEAT", "tUNTIL", + "tIMPORT", "tGOTO", "tGOSUB", "tLABEL", "tON", "tSUB", "tENDSUB", + "tLOCAL", "tSTATIC", "tEXPORT", "tERROR", "tEXECUTE", "tEXECUTE2", + "tCOMPILE", "tRUNTIME_CREATED_SUB", "tINTERRUPT", "tBREAK", "tCONTINUE", + "tSWITCH", "tSEND", "tCASE", "tDEFAULT", "tLOOP", "tDO", "tSEP", + "tEOPROG", "tIF", "tTHEN", "tELSE", "tELSIF", "tENDIF", "tIMPLICITENDIF", + "tUSING", "tPRINT", "tINPUT", "tRETURN", "tDIM", "tEND", "tEXIT", "tAT", + "tSCREEN", "tREVERSE", "tCOLOUR", "tBACKCOLOUR", "tAND", "tOR", "tNOT", + "tBITNOT", "tEOR", "tSHL", "tSHR", "tNEQ", "tLEQ", "tGEQ", "tLTN", + "tGTN", "tEQU", "tEQU2", "tPOW", "tREAD", "tDATA", "tRESTORE", "tOPEN", + "tCLOSE", "tSEEK", "tTELL", "tAS", "tREADING", "tWRITING", "tORIGIN", + "tWINDOW", "tDOT", "tLINE", "tCIRCLE", "tTRIANGLE", "tTEXT", "tCLEAR", + "tFILL", "tPRINTER", "tWAIT", "tBELL", "tLET", "tARDIM", "tARSIZE", + "tBIND", "tRECT", "tGETBIT", "tPUTBIT", "tGETCHAR", "tPUTCHAR", "tNEW", + "tCURVE", "tSIN", "tASIN", "tCOS", "tACOS", "tTAN", "tATAN", "tEXP", + "tLOG", "tSQRT", "tSQR", "tMYEOF", "tABS", "tSIG", "tINT", "tCEIL", + "tFLOOR", "tFRAC", "tROUND", "tMOD", "tRAN", "tVAL", "tLEFT", "tRIGHT", + "tMID", "tLEN", "tMIN", "tMAX", "tSTR", "tINKEY", "tCHR", "tASC", "tHEX", + "tDEC", "tBIN", "tUPPER", "tLOWER", "tMOUSEX", "tMOUSEY", "tMOUSEB", + "tMOUSEMOD", "tTRIM", "tLTRIM", "tRTRIM", "tINSTR", "tRINSTR", "tCHOMP", + "tSYSTEM", "tSYSTEM2", "tPEEK", "tPEEK2", "tPOKE", "tFRNFN_CALL", + "tFRNFN_CALL2", "tFRNFN_SIZE", "tFRNBF_ALLOC", "tFRNBF_FREE", + "tFRNBF_SIZE", "tFRNBF_DUMP", "tFRNBF_SET", "tFRNBF_GET", "tFRNBF_GET2", "tFRNBF_GET_BUFFER", "tFRNBF_SET_BUFFER", "tDATE", "tTIME", "tTOKEN", "tTOKENALT", "tSPLIT", "tSPLITALT", "tGLOB", "tSTART_PROGRAM", "tSTART_EXPRESSION", "tSTART_STRING_EXPRESSION", "tSTART_ASSIGNMENT", "tSTART_FUNCTION_DEFINITION", "tEVAL", "tEVAL2", "'-'", "'+'", "'*'", "'/'", "UMINUS", "';'", "','", "'('", "')'", "'#'", "$accept", - "program_or_expression", "program", "statement_list", "$@1", - "assignment", "statement", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", + "program_or_expression", "program", "statement_list", "$@1", "$@2", + "assignment", "statement", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "clear_fill_clause", "string_assignment", "to", "open_clause", "seek_clause", "string_scalar_or_array", "string_expression", - "string_function", "number_assignment", "expression", "$@8", "$@9", + "string_function", "number_assignment", "expression", "$@9", "$@10", "arrayref", "string_arrayref", "coordinates", "function", "const", "number", "symbol_or_lineno", "dimlist", "function_or_array", - "stringfunction_or_array", "call_list", "$@10", "calls", "call_item", - "function_definition", "$@11", "$@12", "$@13", "endsub", "function_name", + "stringfunction_or_array", "call_list", "$@11", "calls", "call_item", + "function_definition", "$@12", "$@13", "$@14", "endsub", "function_name", "export", "local_list", "local_item", "static_list", "static_item", - "paramlist", "paramitem", "for_loop", "$@14", "$@15", "$@16", "$@17", - "next", "step_part", "next_symbol", "switch_number_or_string", "$@18", - "sep_list", "number_or_string", "case_list", "$@19", "default", "$@20", - "do_loop", "$@21", "loop", "while_loop", "$@22", "$@23", "wend", - "repeat_loop", "$@24", "until", "if_clause", "$@25", "$@26", "$@27", - "$@28", "endif", "short_if", "$@29", "end_of_if", "else_part", - "elsif_part", "$@30", "$@31", "maybe_then", "inputlist", "$@32", "input", + "paramlist", "paramitem", "for_loop", "$@15", "$@16", "$@17", "$@18", + "next", "step_part", "next_symbol", "switch_number_or_string", "$@19", + "sep_list", "number_or_string", "case_list", "$@20", "default", "$@21", + "do_loop", "$@22", "loop", "while_loop", "$@23", "$@24", "wend", + "repeat_loop", "$@25", "until", "if_clause", "$@26", "$@27", "$@28", + "$@29", "endif", "short_if", "$@30", "end_of_if", "else_part", + "elsif_part", "$@31", "$@32", "maybe_then", "inputlist", "$@33", "input", "readlist", "readitem", "datalist", "printlist", "using", "inputbody", - "$@33", "$@34", "$@35", "$@36", "$@37", "prompt", "printintro", + "$@34", "$@35", "$@36", "$@37", "$@38", "prompt", "printintro", "hashed_number", "goto_list", "gosub_list", YY_NULLPTR }; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} #endif -# ifdef YYPRINT +#ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const yytype_int16 yytoknum[] = @@ -983,17 +1076,17 @@ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 45, 43, 42, - 47, 442, 59, 44, 40, 41, 35 + 435, 436, 437, 438, 439, 440, 441, 442, 45, 43, + 42, 47, 443, 59, 44, 40, 41, 35 }; -# endif +#endif -#define YYPACT_NINF (-825) +#define YYPACT_NINF (-832) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-398) +#define YYTABLE_NINF (-401) #define yytable_value_is_error(Yyn) \ 0 @@ -1002,120 +1095,120 @@ STATE-NUM. */ static const yytype_int16 yypact[] = { - -77, 4059, 3546, 1605, 85, 161, 69, -48, -36, -825, - -825, -825, -825, -825, 75, 75, 75, 3170, -825, -825, - -825, 1605, -825, -825, 1605, 52, 108, -825, -825, -825, - 3546, -35, -825, 3546, 262, -825, 3546, 3546, 3546, 301, - 43, 75, 1821, 1188, 2209, 8, 3546, 2982, 3546, 199, - 30, 3546, -825, 106, 1605, 1605, 1605, 41, 28, 63, - 83, 97, 99, 2209, 1605, 1605, 1605, -825, 120, -825, - -825, -37, -825, -825, -825, -825, 117, 137, -825, 208, - -825, -825, -825, -825, -825, -825, -825, -825, 136, 138, - -825, -825, -825, -825, 154, 163, 166, 174, 3546, 189, - 206, 227, 237, 243, 245, 267, 309, 317, 335, 350, - 356, 360, 366, 417, 430, 434, 436, 442, 464, 473, - 486, 494, 507, 539, 550, 554, 559, 563, 566, 567, - 575, 576, 577, 578, 579, 580, 581, 586, 587, 591, - 602, 603, 604, 605, 609, 611, 612, 613, 621, 622, - 623, 624, 627, 629, 632, 633, 634, 635, 637, 638, - 639, 641, 646, 650, 651, 654, 655, 656, 657, 660, - 664, 665, 666, 667, 668, 669, 674, 3546, 3546, 352, - -825, 503, -825, -825, -825, -825, 1605, -14, 235, 117, - 137, 391, -825, 3546, -825, 1605, -825, 383, 3546, 3901, - -825, -825, -825, -825, -825, 323, 64, 365, 367, 269, - -825, 3546, -825, 269, -825, -825, 3546, 3901, 522, 675, - 401, 677, 7, 3546, -34, 352, 3762, 681, 684, 280, - 3762, 352, 5234, 352, 5268, 689, 690, 453, -825, -825, - 170, 170, -825, -825, 455, -825, 3546, 1605, 3546, 27, - 3762, 484, -825, -825, -825, -825, 530, 1605, 5286, -825, - 3546, -825, 0, 626, -825, -825, 3546, 3358, -825, -825, - 3762, -825, -825, 269, -6, -6, -825, 489, 489, 489, - 2403, 1605, 532, 683, 269, 31, 55, -825, 827, 3546, - 3546, 3546, 3546, 1605, -825, -825, -825, 3546, 3546, 883, - 3546, 3546, 3546, 3546, 2015, 2209, 397, 397, 3546, 3546, - 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, - 2209, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 2596, - 1605, 1605, 1605, 1605, 1605, 3546, 3546, 3546, 2789, 3546, - 1605, 3546, 1605, 3546, 1605, 1605, 375, 1265, 1390, 1534, - 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 2209, 1605, - -825, -825, 1605, 3546, 1605, 1605, 1605, 1605, 1605, 557, - 679, 1605, 489, 1605, 489, 1605, 1605, 1605, 809, 47, - 1399, 1605, 1605, 1605, 1605, 1605, 1605, 1605, -825, -825, - -825, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, - 3546, 3546, -151, -825, -825, -825, 3762, 691, 269, 694, - 812, 3762, 42, -825, -825, -825, -825, 696, 702, 704, - -825, 705, 706, 708, -825, 352, 3762, 712, -825, 352, - 3762, 855, 414, 856, 3901, 3546, 717, 1605, -825, -825, - 3546, 352, 692, 211, 722, 13, -825, 893, -825, -825, - 558, 3546, 3546, -825, -825, 301, -825, -825, 68, 5300, - 269, 3762, 571, 3622, 3546, 269, 3546, -825, -34, -825, - -825, 3546, 1605, -825, 3546, 0, 3546, 3546, 723, 720, - 725, 726, -825, 1413, -131, 3546, 3546, 3546, 3546, 3901, - 728, 0, 0, 3762, 269, 682, 729, 735, 5362, 5376, - 1651, 5396, 5428, 5442, 737, 303, 730, 739, 741, 742, - 744, 745, 736, 748, 0, 5456, 2033, 2227, 2614, 2810, - 2996, 719, 3184, 738, 3372, 3777, 756, 3955, 4113, 4212, - 4257, 4271, 4288, 4320, 5470, -825, 4340, -125, 87, 88, - 152, -107, 5504, 5524, 292, 874, -825, 4354, 4416, -79, - 4430, 2, 4448, -62, -46, -825, -7, -825, 25, -825, - 109, -825, 143, 193, 265, 302, 263, 289, 314, 364, - 376, 343, 757, 11, 766, 767, 377, 4482, 392, 191, - 300, 482, 483, -825, -825, 501, -101, 509, -70, 512, - 393, 394, -825, -825, 269, 269, 269, 269, 269, 269, - -825, 3546, 3546, 896, 368, 334, 38, 72, -58, -825, - -4, -4, 809, 809, -825, -825, -825, 3901, -825, -825, - 3546, -825, -825, -825, -825, 75, 75, -825, -825, 365, - -825, -825, 367, 3546, -825, 900, -825, -825, -825, -825, - -825, -825, -825, -825, 649, 5538, 3546, 241, 4496, 2480, - -825, -825, 3546, 3546, -825, -825, 3546, -825, 709, 768, - 769, 771, 780, 5598, 5612, 781, 786, -825, -825, -825, - 3546, 898, 899, -825, 529, 5632, 3762, -825, -825, 541, - -825, 3546, 5666, 5680, -825, 3546, 3546, 3546, -825, -825, - 352, 3762, 352, 3762, 5694, 5708, -825, 3546, 3546, 3546, - -825, -825, -825, -825, -825, 3546, 3546, -825, 3546, 3546, - 3546, -825, 1605, -825, 3725, -825, 789, 790, -825, -825, - 3546, 3546, 3546, 3546, -825, -825, -825, -825, -825, 3546, - -825, -825, 3546, -825, -825, -825, -825, -825, -825, -825, - -825, -825, -825, -825, 3546, -825, -825, 3546, 3546, 3546, - -825, 3546, 3546, -825, 1605, -825, -825, -825, -825, -825, - 3546, -825, -825, -825, -825, -825, -825, -825, -825, -825, - -825, -825, 1605, 1605, -825, -825, -825, -825, -825, 1605, - -825, -825, -825, -825, -825, -825, 3546, -825, 3546, 3546, - 3546, 981, 1605, -825, 981, 1605, -825, 1605, -825, -825, - 883, 5944, 3546, 29, 3762, -825, 795, -825, 797, 796, - 800, -825, 802, 803, -825, -825, -825, 676, 3901, -825, - -825, -825, 3546, 5740, 1605, 934, -825, 1605, 269, 352, - 692, 5760, 709, 709, 4510, 813, 814, -825, 816, -825, - -825, -825, -825, 3546, 3546, -825, -825, 5774, 2209, 2209, - 1605, 1605, 1605, -825, 3546, 3546, 815, 4524, 4558, 930, - 1605, 1605, 3762, 0, -825, 817, 4576, 4590, 4652, 4666, - 4686, 395, 818, 259, -825, -825, 4718, 4732, 819, 81, - 4746, 4760, 4794, 4814, 4828, 1315, 4888, 4902, 277, 4922, - 283, 322, 396, 4956, 5836, 5850, 4970, -30, 413, 5, - 421, 422, 96, -825, -825, -825, 75, 75, -825, -825, - -825, -825, 3546, 973, 980, 976, 4984, 3546, 424, 826, - 340, -825, 3546, -825, -825, -825, -825, -825, -825, 828, - 830, 3762, 3762, 1605, -825, -825, 269, 269, 543, 5868, - 3762, -825, 946, 947, 3546, 951, 544, 269, 3546, 734, - -825, -825, -825, -825, -825, -825, -825, 1605, -825, -825, - -825, -825, 3546, -825, -825, -825, -825, -825, 3546, -825, - -825, -825, 1605, -825, -825, 3546, -825, 3546, -825, -825, - -825, 1605, 3546, -825, 1605, -825, -825, 1605, -825, -825, - -825, 3546, -825, -825, -825, -825, -825, 979, 680, 4998, - 970, 3546, 1605, 5030, 709, 834, 835, 709, -825, -825, - 269, 1605, 1605, 1605, 1605, 5050, 1605, 3546, -825, 837, - 838, 15, -825, 427, 5902, 5064, 437, 5126, 5140, 438, - 5158, 439, 450, 279, 3901, 4217, 3546, 986, -825, 841, - -825, 842, 5916, 452, -825, -825, -825, -825, -825, 269, - 269, 269, 269, 962, 269, 3762, 843, 844, 734, -825, - -825, 3546, -825, -825, -825, -825, -825, -825, -825, -825, - 3546, -825, 976, 1004, 589, 3901, -825, 1605, 3546, 3546, - -825, 893, 1605, -825, -825, -825, 3901, 5192, 3762, 3901, - -825, -825, 976, 625, 348, 5930, 5206, 709, 269, 18, - -825, 976, 3901, -825, -825, -825, -825, -825, -825, -825, - 1605, -825, 3546, -825, -825, -825, -825, -825, 710, 976, - 454, 5220, -825, -825, -825, -825, -825, -825, 1039, 979, - -825, -825, -825, -825, -825 + 519, 3814, 3247, 2369, 79, 24, 66, -22, -21, -832, + -832, -832, -832, -832, 26, 26, 26, 2869, -832, -832, + -832, 2369, -832, -832, 2369, -7, 25, -832, -832, -832, + 3247, -10, -832, 3247, 232, -832, 3247, 3247, 3247, 301, + 15, 26, 1459, 1117, 1903, -25, 3247, 2680, 3247, 23, + -40, 3247, -832, 22, 2369, 2369, 2369, -18, -109, -88, + -55, 5, 48, 1903, 2369, 2369, 2369, -832, 77, -832, + -832, -24, -832, -832, -832, -832, 42, 110, -832, 171, + -832, -832, -832, -832, -832, -832, -832, -832, 57, 78, + -832, -832, -832, -832, 84, 94, 96, 137, 3247, 145, + 177, 223, 225, 255, 258, 270, 272, 283, 294, 297, + 300, 312, 348, 351, 375, 387, 390, 401, 416, 420, + 435, 442, 474, 476, 503, 510, 514, 526, 531, 535, + 540, 544, 549, 552, 553, 557, 561, 565, 566, 569, + 570, 575, 576, 577, 578, 579, 580, 581, 586, 587, + 588, 591, 592, 594, 598, 604, 605, 607, 608, 610, + 611, 612, 613, 614, 615, 616, 617, 618, 619, 623, + 630, 631, 632, 633, 634, 635, 639, 3247, 3247, 185, + -832, 799, -832, -832, -832, -832, 2369, -36, 139, 42, + 110, 183, -832, 3247, -832, 2369, -832, 325, 3247, 3655, + -832, -832, -832, -832, -832, 333, 589, 380, 645, 274, + -832, 3247, -832, 274, -832, -832, 3247, 3655, 95, 640, + 445, 641, 6, 3247, -11, 185, 6366, 642, 643, 331, + 6366, 185, 1361, 185, 5526, 649, 652, 366, -832, -832, + 638, 638, -832, -832, 463, -832, 3247, 2369, 3247, 27, + 6366, 646, -832, -832, -832, -832, 654, 2369, 5546, -832, + 3247, -832, 8, 655, -832, -832, 3247, 3058, -832, -832, + 6366, -832, -832, 274, 4, 4, -832, 506, 506, 506, + 2098, 2369, 398, 658, 274, -74, 0, -832, 556, 3247, + 3247, 3247, 3247, 2369, -832, -832, -832, 3247, 3247, 1260, + 3247, 3247, 3247, 3247, 1708, 1903, 692, 692, 3247, 3247, + 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, + 1903, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 2292, + 2369, 2369, 2369, 2369, 2369, 3247, 3247, 3247, 2486, 3247, + 2369, 3247, 2369, 3247, 2369, 2369, 376, 1786, 1981, 2175, + 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 1903, 2369, + -832, -832, 2369, 3247, 2369, 2369, 2369, 2369, 2369, 637, + 657, 2369, 506, 2369, 506, 2369, 2369, 2369, 707, 159, + 1611, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, -832, + -832, -832, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, + 3247, 3247, 3247, 3247, -124, -832, -832, -832, 6366, 659, + 274, 662, 710, 6366, 44, -832, -832, -832, -832, 664, + 665, 660, -832, 666, 669, 671, -832, 185, 6366, 672, + -832, 185, 6366, 758, 482, 821, 3655, 3247, 673, 2369, + -832, -832, 3247, 185, 942, 216, 683, 10, -832, 869, + -832, -832, 709, 3247, 3247, -832, -832, 301, -832, -832, + 36, 5577, 274, 6366, 629, 3426, 3247, 274, 3247, -832, + -11, -832, -832, 3247, 2369, -832, 3247, 8, 3247, 3247, + 685, 689, 690, 694, -832, 3262, -78, 3247, 3247, 3247, + 3247, -832, 696, 8, 8, 6366, 274, 713, 691, 695, + 5623, 5655, 3968, 5675, 5706, 5721, 698, 3, 701, 705, + 697, 702, 706, 708, 711, 712, 8, 5752, 4014, 4045, + 4077, 4097, 4112, 1304, 4143, 1319, 4174, 4206, 714, 4241, + 4272, 4303, 4335, 4350, 4370, 4401, 5784, -832, 4432, -52, + 21, 99, 160, -32, 5804, 5850, 341, 2696, -832, 4479, + 4499, -12, 4530, 98, 4561, 108, 142, -832, 161, -832, + 170, -832, 233, -832, 242, 265, 305, 316, 194, 239, + 317, 344, 346, 373, 715, 164, 716, 717, 349, 4576, + 360, 181, 245, 290, 330, -832, -832, 438, 32, 439, + 73, 449, 363, 365, -832, -832, 274, 274, 274, 274, + 274, 274, 274, -832, 3247, 3247, 606, 51, 746, 268, + 29, 86, 174, -832, -48, -48, 707, 707, -832, -832, + -832, 3655, -832, -832, 3247, -832, -832, -832, -832, 26, + 26, -832, -832, 380, -832, -832, 645, 3247, -832, 843, + -832, -832, -832, -832, -832, -832, -832, -832, 670, 5881, + 3247, 182, 4608, 2563, -832, -832, 3247, 3247, -832, -832, + 3247, -832, 724, 720, 725, 727, 728, 5913, 5933, 731, + 732, -832, -832, -832, 3247, 818, 839, -832, 462, 5948, + 6366, -832, -832, 479, -832, 3247, 5979, 6010, -832, 3247, + 3247, 3247, -832, -832, 185, 6366, 185, 6366, 6042, 6077, + 3655, 3247, 3247, 3247, -832, -832, -832, -832, -832, 3247, + 3247, -832, 3247, 3247, 3247, -832, 2369, -832, 3478, -832, + 734, 735, -832, -832, 3247, 3247, 3247, 3247, -832, -832, + -832, -832, -832, 3247, -832, -832, 3247, -832, -832, -832, + -832, -832, -832, -832, -832, -832, -832, -832, 3247, -832, + -832, 3247, 3247, 3247, -832, 3247, 3247, -832, 2369, -832, + -832, -832, -832, -832, 3247, -832, -832, -832, -832, -832, + -832, -832, -832, -832, -832, -832, 2369, 2369, -832, -832, + -832, -832, -832, 2369, -832, -832, -832, -832, -832, -832, + 3247, -832, 3247, 3247, 3247, 924, 2369, -832, 924, 2369, + -832, 2369, -832, -832, 1260, 3697, 3247, 65, 6366, -832, + 738, -832, 739, 742, 743, -832, 744, 745, -832, -832, + -832, 693, 3655, -832, -832, -832, 3247, 6108, 2369, 884, + -832, 2369, 274, 185, 942, 6139, 724, 724, 4628, 748, + 749, -832, 751, -832, -832, -832, -832, 3247, 3247, -832, + -832, 6171, 1903, 1903, 2369, 2369, 2369, -832, 3247, 3247, + 750, 4659, 4705, 2884, 2369, 2369, -832, 6366, 8, -832, + 753, 4737, 4757, 4788, 4803, 4834, 368, 755, 193, -832, + -832, 4866, 4886, 756, 59, 4932, 4963, 4995, 5015, 5030, + 3073, 5061, 5092, 230, 5124, 236, 266, 369, 5159, 6186, + 6206, 5190, 74, 377, 134, 394, 395, 75, -832, -832, + -832, 26, 26, -832, -832, -832, -832, 3247, 906, 915, + 911, 5221, 3247, 399, 760, 286, -832, 3247, -832, -832, + -832, -832, -832, -832, 761, 762, 6366, 6366, 2369, -832, + -832, 274, 274, 496, 6237, 6366, -832, 881, 886, 3247, + 887, 497, 274, 3247, 733, -832, -832, -832, -832, -832, + -832, -832, 2369, -832, -832, -832, -832, 3247, -832, -832, + -832, -832, -832, 3247, -832, -832, -832, 2369, -832, -832, + 3247, -832, 3247, -832, -832, -832, 2369, 3247, -832, 2369, + -832, -832, 2369, -832, -832, -832, 3247, -832, -832, -832, + -832, -832, 916, 682, 5253, 901, 3247, 2369, 5268, 724, + 767, 770, 724, -832, -832, 274, 2369, 2369, 2369, 2369, + 5288, 2369, 3247, -832, 772, 773, 212, -832, 404, 6268, + 5319, 405, 5350, 5397, 409, 5417, 418, 423, 504, 3655, + 3973, 3247, 922, -832, 775, -832, 777, 6315, 427, -832, + -832, -832, -832, -832, 274, 274, 274, 274, 898, 274, + 6366, 778, 779, 733, -832, -832, 3247, -832, -832, -832, + -832, -832, -832, -832, -832, 3247, -832, 911, 938, 1252, + 3655, -832, 2369, 3247, 3247, -832, 869, 2369, -832, -832, + -832, 3655, 5448, 6366, 3655, -832, -832, 911, 590, 308, + 6335, 5479, 724, 274, 45, -832, 911, 3655, -832, -832, + -832, -832, -832, -832, -832, 2369, -832, 3247, -832, -832, + -832, -832, -832, 626, 911, 440, 5494, -832, -832, -832, + -832, -832, -832, 973, 916, -832, -832, -832, -832, -832 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1123,154 +1216,154 @@ means the default is an error. */ static const yytype_int16 yydefact[] = { - 0, 117, 0, 0, 0, 326, 0, 0, 0, 111, - 349, 384, 389, 17, 0, 0, 0, 0, 30, 32, - 327, 0, 311, 311, 0, 328, 24, 26, 364, 376, - 0, 457, 54, 66, 0, 108, 109, 0, 0, 0, - 0, 64, 0, 0, 0, 0, 0, 0, 0, 118, - 119, 0, 99, 0, 0, 0, 0, 0, 0, 0, - 0, 100, 0, 0, 0, 0, 0, 2, 9, 16, - 8, 0, 11, 45, 47, 13, 28, 29, 27, 0, - 19, 20, 23, 22, 21, 34, 35, 299, 207, 139, - 300, 301, 302, 142, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, - 0, 0, 0, 0, 0, 266, 269, 272, 275, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 168, 170, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 140, 0, 220, 201, 206, 141, 0, 0, 0, 0, - 0, 0, 1, 0, 311, 0, 311, 0, 0, 15, - 304, 303, 36, 37, 44, 0, 0, 0, 0, 18, - 49, 313, 50, 48, 329, 25, 0, 15, 408, 0, - 461, 0, 0, 437, 453, 68, 67, 0, 0, 69, - 110, 59, 0, 61, 0, 429, 431, 62, 427, 433, - 0, 0, 434, 296, 63, 65, 0, 95, 0, 0, - 472, 0, 92, 97, 85, 46, 0, 0, 0, 73, - 0, 56, 78, 0, 94, 93, 0, 0, 120, 121, - 98, 12, 14, 112, 0, 0, 84, 0, 0, 0, - 0, 0, 0, 0, 113, 0, 0, 7, 0, 0, - 0, 0, 0, 0, 318, 311, 311, 0, 0, 192, + 0, 118, 0, 0, 0, 329, 0, 0, 0, 112, + 352, 387, 392, 18, 0, 0, 0, 0, 31, 33, + 330, 0, 314, 314, 0, 331, 25, 27, 367, 379, + 0, 460, 55, 67, 0, 109, 110, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, 0, 119, + 120, 0, 100, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 0, 0, 0, 0, 0, 2, 9, 17, + 8, 0, 12, 46, 48, 14, 29, 30, 28, 0, + 20, 21, 24, 23, 22, 35, 36, 302, 209, 140, + 303, 304, 305, 143, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, + 0, 0, 0, 0, 0, 269, 272, 275, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 169, 171, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 141, 0, 223, 203, 208, 142, 0, 0, 0, 0, + 0, 0, 1, 0, 314, 0, 314, 0, 0, 16, + 307, 306, 37, 38, 45, 0, 0, 0, 0, 19, + 50, 316, 51, 49, 332, 26, 0, 16, 411, 0, + 464, 0, 0, 440, 456, 69, 68, 0, 0, 70, + 111, 60, 0, 62, 0, 432, 434, 63, 430, 436, + 0, 0, 437, 299, 64, 66, 0, 96, 0, 0, + 475, 0, 93, 98, 86, 47, 0, 0, 0, 74, + 0, 57, 79, 0, 95, 94, 0, 0, 121, 122, + 99, 13, 15, 113, 0, 0, 85, 0, 0, 0, + 0, 0, 0, 0, 114, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 321, 314, 314, 0, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 311, 311, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 190, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 5, 6, 186, 0, 122, 0, - 0, 385, 9, 38, 39, 40, 42, 332, 333, 31, - 330, 338, 339, 33, 336, 316, 317, 312, 314, 369, - 368, 0, 9, 0, 15, 0, 0, 0, 458, 459, - 0, 440, 442, 51, 0, 0, 55, 455, 311, 311, - 0, 0, 0, 311, 311, 0, 298, 297, 0, 0, - 96, 471, 0, 0, 0, 72, 0, 77, 453, 129, - 128, 0, 0, 74, 0, 80, 0, 0, 137, 0, - 0, 0, 101, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 187, 127, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 246, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, - 0, 0, 0, 0, 0, 267, 0, 270, 0, 273, - 0, 276, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 169, 171, 0, 0, 0, 0, 0, - 0, 0, 144, 221, 215, 217, 219, 216, 218, 214, - 143, 0, 0, 194, 196, 198, 195, 197, 193, 212, - 209, 208, 210, 211, 309, 310, 350, 15, 396, 394, - 0, 395, 391, 393, 390, 0, 0, 311, 311, 0, - 311, 311, 0, 0, 366, 370, 383, 381, 382, 379, - 378, 380, 377, 398, 9, 0, 0, 0, 0, 0, - 438, 52, 53, 0, 445, 447, 0, 456, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 428, 435, 436, - 0, 0, 0, 132, 131, 135, 224, 57, 75, 88, - 79, 0, 0, 0, 311, 0, 0, 0, 102, 103, - 104, 105, 106, 107, 0, 0, 10, 0, 0, 0, - 324, 325, 319, 288, 182, 0, 0, 279, 0, 0, - 0, 289, 0, 290, 0, 283, 0, 0, 202, 203, - 0, 0, 0, 0, 225, 226, 227, 228, 229, 0, - 230, 232, 0, 233, 235, 236, 199, 242, 243, 237, - 239, 240, 241, 238, 0, 245, 250, 0, 0, 0, - 249, 0, 0, 152, 0, 149, 155, 156, 251, 180, - 0, 252, 181, 157, 158, 265, 268, 271, 274, 161, - 159, 160, 0, 0, 162, 258, 163, 264, 263, 0, - 172, 259, 164, 260, 165, 262, 0, 166, 0, 0, - 0, 0, 0, 175, 0, 0, 177, 0, 295, 185, - 191, 189, 0, 9, 392, 473, 41, 475, 43, 0, - 0, 331, 0, 0, 337, 315, 367, 373, 15, 410, - 411, 409, 0, 0, 0, 462, 460, 0, 443, 441, - 442, 0, 0, 0, 0, 423, 425, 454, 420, 305, - 307, 311, 311, 0, 0, 430, 432, 70, 0, 0, - 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 0, 91, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 222, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 388, 387, 386, 0, 0, 334, 335, - 340, 341, 0, 0, 0, 399, 0, 0, 0, 0, - 0, 439, 0, 446, 448, 449, 311, 311, 421, 0, - 0, 58, 60, 0, 133, 134, 130, 136, 89, 82, - 83, 138, 0, 0, 0, 0, 115, 116, 0, 342, - 277, 278, 280, 281, 282, 291, 292, 0, 293, 204, - 205, 178, 0, 231, 234, 244, 145, 146, 0, 148, - 247, 248, 0, 150, 253, 0, 254, 0, 256, 173, - 167, 0, 0, 184, 0, 285, 174, 0, 287, 176, - 200, 0, 474, 476, 371, 374, 365, 414, 464, 0, - 463, 0, 0, 0, 0, 0, 0, 0, 306, 308, - 71, 0, 0, 0, 0, 0, 0, 0, 87, 345, - 346, 0, 343, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 360, 15, 117, 0, 412, 468, 0, - 465, 0, 0, 0, 451, 450, 424, 426, 422, 90, - 81, 125, 126, 0, 124, 114, 0, 0, 0, 320, - 294, 0, 147, 151, 255, 257, 261, 183, 284, 286, - 0, 351, 372, 9, 418, 15, 400, 0, 0, 0, - 444, 455, 0, 347, 348, 344, 15, 0, 361, 15, - 419, 415, 413, 0, 0, 0, 0, 0, 123, 9, - 179, 352, 15, 407, 404, 405, 406, 402, 403, 401, - 0, 469, 0, 466, 452, 323, 322, 321, 0, 416, - 0, 0, 355, 357, 358, 359, 354, 356, 362, 414, - 470, 467, 363, 353, 417 + 314, 314, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 191, 189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 5, 6, 187, 0, + 123, 0, 0, 388, 9, 39, 40, 41, 43, 335, + 336, 32, 333, 341, 342, 34, 339, 319, 320, 315, + 317, 372, 371, 0, 9, 0, 16, 0, 0, 0, + 461, 462, 0, 443, 445, 52, 0, 0, 56, 458, + 314, 314, 0, 0, 0, 314, 314, 0, 301, 300, + 0, 0, 97, 474, 0, 0, 0, 73, 0, 78, + 456, 130, 129, 0, 0, 75, 0, 81, 0, 0, + 138, 0, 0, 0, 102, 0, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 188, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 249, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, + 0, 0, 0, 0, 0, 0, 0, 270, 0, 273, + 0, 276, 0, 279, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 170, 172, 0, 0, 0, + 0, 0, 0, 0, 145, 224, 218, 220, 222, 219, + 221, 216, 217, 144, 0, 0, 196, 198, 200, 197, + 199, 194, 195, 214, 211, 210, 212, 213, 312, 313, + 353, 16, 399, 397, 0, 398, 394, 396, 393, 0, + 0, 314, 314, 0, 314, 314, 0, 0, 369, 373, + 386, 384, 385, 382, 381, 383, 380, 401, 9, 0, + 0, 0, 0, 0, 441, 53, 54, 0, 448, 450, + 0, 459, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 431, 438, 439, 0, 0, 0, 133, 132, 136, + 227, 58, 76, 89, 80, 0, 0, 0, 314, 0, + 0, 0, 103, 104, 105, 106, 107, 108, 0, 0, + 16, 0, 0, 0, 327, 328, 322, 291, 183, 0, + 0, 282, 0, 0, 0, 292, 0, 293, 0, 286, + 0, 0, 204, 205, 0, 0, 0, 0, 228, 229, + 230, 231, 232, 0, 233, 235, 0, 236, 238, 239, + 201, 245, 246, 240, 242, 243, 244, 241, 0, 248, + 253, 0, 0, 0, 252, 0, 0, 153, 0, 150, + 156, 157, 254, 181, 0, 255, 182, 158, 159, 268, + 271, 274, 277, 162, 160, 161, 0, 0, 163, 261, + 164, 267, 266, 0, 173, 262, 165, 263, 166, 265, + 0, 167, 0, 0, 0, 0, 0, 176, 0, 0, + 178, 0, 298, 186, 192, 190, 0, 9, 395, 476, + 42, 478, 44, 0, 0, 334, 0, 0, 340, 318, + 370, 376, 16, 413, 414, 412, 0, 0, 0, 465, + 463, 0, 446, 444, 445, 0, 0, 0, 0, 426, + 428, 457, 423, 308, 310, 314, 314, 0, 0, 433, + 435, 71, 0, 0, 0, 0, 0, 77, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 87, 0, 92, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 391, 390, + 389, 0, 0, 337, 338, 343, 344, 0, 0, 0, + 402, 0, 0, 0, 0, 0, 442, 0, 449, 451, + 452, 314, 314, 424, 0, 0, 59, 61, 0, 134, + 135, 131, 137, 90, 83, 84, 139, 0, 0, 0, + 0, 116, 117, 0, 345, 280, 281, 283, 284, 285, + 294, 295, 0, 296, 206, 207, 179, 0, 234, 237, + 247, 146, 147, 0, 149, 250, 251, 0, 151, 256, + 0, 257, 0, 259, 174, 168, 0, 0, 185, 0, + 288, 175, 0, 290, 177, 202, 0, 477, 479, 374, + 377, 368, 417, 467, 0, 466, 0, 0, 0, 0, + 0, 0, 0, 309, 311, 72, 0, 0, 0, 0, + 0, 0, 0, 88, 348, 349, 0, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 363, 16, + 118, 0, 415, 471, 0, 468, 0, 0, 0, 454, + 453, 427, 429, 425, 91, 82, 126, 127, 0, 125, + 115, 0, 0, 0, 323, 297, 0, 148, 152, 258, + 260, 264, 184, 287, 289, 0, 354, 375, 9, 421, + 16, 403, 0, 0, 0, 447, 458, 0, 350, 351, + 347, 16, 0, 364, 16, 422, 418, 416, 0, 0, + 0, 0, 0, 124, 9, 180, 355, 16, 410, 407, + 408, 409, 405, 406, 404, 0, 472, 0, 469, 455, + 326, 325, 324, 0, 419, 0, 0, 358, 360, 361, + 362, 357, 359, 365, 417, 473, 470, 366, 356, 420 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -825, -825, -825, -198, -825, 1040, 556, -825, -825, -825, - -825, -825, -825, -825, 996, -242, -825, -825, -231, 801, - -825, 997, -2, -825, -825, 746, -302, -26, -825, 593, - -38, -12, -825, 6, 12, 51, -825, -825, 419, 1049, - -825, -825, -825, -825, -825, -825, -825, 426, -825, 425, - -825, 16, -825, -825, -825, -825, -825, -825, -825, -825, - -825, -825, -825, 144, -825, -825, -825, -825, -825, -825, - -825, -825, -825, -825, -825, -825, -825, -825, -825, -825, - -825, -825, -825, -825, -825, -825, -825, -825, -69, -825, - -825, -825, -824, -825, -825, -825, 610, -825, -825, 236, - 607, -825, -825, -825, -825, -825, -3, -825, 24, -825, - -825 + -832, -832, -832, -198, -832, -832, 975, 281, -832, -832, + -832, -832, -832, -832, -832, 929, -271, -832, -832, -184, + 703, -832, 930, -2, -832, -832, 679, -305, 113, -832, + 532, -33, -4, -832, 55, 63, -14, -832, -832, 354, + 990, -832, -832, -832, -832, -832, -832, -832, 364, -832, + 362, -832, -64, -832, -832, -832, -832, -832, -832, -832, + -832, -832, -832, -832, 83, -832, -832, -832, -832, -832, + -832, -832, -832, -832, -832, -832, -832, -832, -832, -832, + -832, -832, -832, -832, -832, -832, -832, -832, -832, -133, + -832, -832, -832, -831, -832, -832, -832, 545, -832, -832, + 169, 538, -832, -832, -832, -832, -832, -77, -832, 47, + -832, -832 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 6, 67, 68, 288, 69, 70, 207, 208, 625, - 626, 224, 468, 71, 72, 471, 73, 74, 479, 179, - 180, 75, 258, 602, 601, 510, 511, 259, 182, 242, - 183, 202, 229, 184, 185, 210, 211, 427, 428, 78, - 495, 865, 1086, 1117, 702, 79, 419, 420, 423, 424, - 1021, 1022, 80, 197, 802, 1089, 1118, 1128, 1071, 1133, - 81, 216, 635, 431, 817, 1034, 914, 1035, 82, 217, - 642, 83, 198, 617, 905, 84, 199, 624, 85, 433, - 818, 997, 1093, 1109, 86, 434, 821, 1076, 1037, 1102, - 1129, 1091, 837, 1007, 838, 237, 238, 244, 443, 650, - 446, 832, 833, 1004, 1081, 447, 658, 223, 251, 806, - 808 + 0, 6, 67, 68, 288, 700, 69, 70, 207, 208, + 629, 630, 224, 470, 71, 72, 473, 73, 74, 481, + 179, 180, 75, 258, 605, 604, 512, 513, 259, 182, + 242, 183, 202, 229, 184, 185, 210, 211, 429, 430, + 78, 497, 870, 1091, 1122, 706, 79, 421, 422, 425, + 426, 1026, 1027, 80, 197, 806, 1094, 1123, 1133, 1076, + 1138, 81, 216, 639, 433, 821, 1039, 919, 1040, 82, + 217, 646, 83, 198, 621, 910, 84, 199, 628, 85, + 435, 822, 1002, 1098, 1114, 86, 436, 825, 1081, 1042, + 1107, 1134, 1096, 841, 1012, 842, 237, 238, 244, 445, + 654, 448, 836, 837, 1009, 1086, 449, 662, 223, 251, + 810, 812 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1278,238 +1371,188 @@ number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 181, 412, 243, 203, 204, 513, 469, 76, 923, 924, - 189, 438, 469, 77, 439, 206, 190, 654, 397, 432, - 655, 262, 263, 219, 444, 220, 221, 193, 218, 245, - 403, 226, 476, 477, 230, 232, 234, 387, 462, 195, - 250, 250, 250, 1115, 592, 903, 87, 480, 481, 270, - 90, 91, 92, 239, 289, 290, 618, 387, 619, 189, - 620, 250, 1116, 387, 689, 190, 291, 255, 256, 192, - 746, 87, 397, 904, 212, 90, 91, 92, 668, 200, - 214, 387, 201, 621, 415, 416, 622, 283, 750, 7, - 8, 623, 792, 469, 793, 257, 299, 381, 382, 383, - 384, 385, 386, 1, 2, 3, 4, 5, 991, 387, - 7, 8, 395, 396, 397, 215, 758, 381, 382, 383, - 384, 385, 386, 795, 269, 796, 387, 389, 390, 398, - 399, 400, 401, 763, 391, 392, 393, 394, 395, 396, - 397, 586, 387, 588, 389, 390, 194, 396, 397, 764, - 276, 391, 392, 393, 394, 395, 396, 397, 196, 389, - 390, 222, 445, 984, 287, 985, 391, 392, 393, 394, - 395, 396, 397, 87, 387, 378, 380, 90, 91, 92, - 1045, 387, 387, 1048, 53, 400, 401, 470, 765, 20, - 387, 406, 292, 470, 25, 760, 411, 761, 987, 387, - 988, 440, 456, 457, 779, 76, 780, 656, 1058, 426, - 1059, 77, 293, 387, 430, 387, 58, 59, 60, 387, - 766, 442, 277, 76, 487, 398, 399, 400, 401, 77, - 240, 241, 294, 681, 467, 387, 644, 58, 59, 60, - 473, 475, 592, 387, 459, 407, 461, 409, 488, 698, - 699, 398, 399, 400, 401, 240, 241, 278, 264, 398, - 399, 400, 401, 490, 491, 492, 227, 228, 398, 399, - 400, 401, 722, 1114, 470, 387, 387, 279, 483, 404, - 747, 748, 514, 398, 399, 400, 401, 265, 266, 267, - 493, 280, 1070, 281, 268, 498, 499, 387, 500, 501, - 502, 503, 250, 250, 767, 235, 236, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 250, 527, - 528, 529, 530, 531, 532, 533, 534, 536, 506, 507, - 194, 387, 196, 542, 543, 545, 547, 548, 768, 550, - 387, 552, 389, 390, 526, 749, 496, 497, 295, 391, - 392, 393, 394, 395, 396, 397, 250, 296, 413, 414, - 297, 577, 381, 382, 383, 384, 385, 386, 298, 417, - 418, 421, 422, 381, 382, 383, 384, 385, 386, 387, - 89, 387, 572, 300, 786, 93, 787, 410, 769, 603, - 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 301, 508, 509, 651, 652, 392, 95, 394, 395, 396, - 397, 574, 575, 381, 382, 383, 384, 385, 386, 803, - 243, 302, 381, 382, 383, 384, 385, 386, 636, 387, - 637, 303, 638, 645, 824, 405, 825, 304, 648, 305, - 76, 394, 395, 396, 397, 678, 77, 387, 680, 663, - 664, 387, 957, 387, 958, 639, 772, 387, 640, 436, - 770, 306, 675, 641, 676, 387, 398, 399, 400, 401, - 972, 387, 973, 450, 682, 683, 975, 387, 976, 107, - 387, 108, 773, 691, 693, 694, 695, 753, 387, 897, - 387, 387, 899, 788, 478, 76, 712, 771, 713, 659, - 660, 77, 387, 307, 665, 666, 130, 131, 132, 774, - 387, 308, 136, 137, 138, 977, 140, 978, 142, 143, - 144, 398, 399, 400, 401, 149, 150, 151, 387, 309, - 154, 387, 156, 1002, 158, 592, 387, 160, 777, 162, - 387, 1110, 164, 1111, 310, 166, 167, 388, 168, 169, - 311, 171, 387, 173, 312, 398, 399, 400, 401, 775, - 313, 176, 661, 662, 387, 387, 389, 390, -397, 186, - 555, 776, 783, 391, 392, 393, 394, 395, 396, 397, - 387, 387, 387, 387, 387, 389, 390, 785, 798, 799, - 955, 979, 391, 392, 393, 394, 395, 396, 397, 800, - 801, 387, 381, 382, 383, 384, 385, 386, 986, 387, - 387, 314, 387, 805, 807, 387, 989, 990, 804, 1000, - 915, 948, 1060, 76, 315, 387, 387, 387, 316, 77, - 317, 426, 1063, 1066, 1068, 1090, 318, 962, 387, 1103, - 387, 1104, 387, 1105, 823, 1069, 455, 1080, 458, 1130, - 830, 831, 389, 390, 834, 853, 671, 672, 319, 391, - 392, 393, 394, 395, 396, 397, 1106, 320, 847, 1107, - 387, 387, 863, 864, 1108, 789, 790, 463, 809, 810, - 321, 812, 813, 857, 858, 859, 700, 701, 322, 387, - 398, 399, 400, 401, 791, 862, 878, 387, 819, 820, - 387, 323, 794, 866, 867, 797, 868, 869, 870, 398, - 399, 400, 401, 835, 836, 912, 913, 387, 876, 877, - 387, 879, 850, 464, 1122, 485, 1123, 880, 1124, 387, - 881, 387, 387, 324, 852, 856, 1011, 1017, 1019, 1020, - 1038, 1039, 882, 649, 325, 883, 884, 885, 326, 886, - 887, 1125, 583, 327, 1126, 389, 390, 328, 889, 1127, - 329, 330, 391, 392, 393, 394, 395, 396, 397, 331, - 332, 333, 334, 335, 336, 337, 398, 399, 400, 401, - 338, 339, 389, 390, 893, 340, 894, 895, 896, 391, - 392, 393, 394, 395, 396, 397, 341, 342, 343, 344, - 902, 389, 390, 345, 187, 346, 347, 348, 391, 392, - 393, 394, 395, 396, 397, 349, 350, 351, 352, 472, - 916, 353, 209, 354, 76, 213, 355, 356, 357, 358, - 77, 359, 360, 361, 225, 362, 1072, 1073, 231, 233, - 363, 931, 932, 249, 364, 365, 250, 250, 366, 367, - 368, 369, 939, 940, 370, 273, 274, 275, 371, 372, - 373, 374, 375, 376, 282, 284, 285, 286, 377, 435, - 489, 437, 934, 935, 584, 448, 486, 1092, 449, 398, - 399, 400, 401, 453, 454, 397, 614, 616, 1099, 615, - 627, 1101, 929, 930, 992, 993, 628, 629, 634, 630, - 631, 632, 643, 657, 1119, 633, 398, 399, 400, 401, - 430, 646, 729, 685, 730, 999, 653, 684, 686, 687, - 1003, 697, 1018, 714, 703, 398, 399, 400, 401, 720, - 704, 732, 711, 733, 715, 716, 717, 389, 390, 718, - 719, 721, 1015, 816, 391, 392, 393, 394, 395, 396, - 397, 736, 778, 391, 392, 393, 394, 395, 396, 397, - 1024, 781, 782, 839, 840, 841, 1025, 392, 393, 394, - 395, 396, 397, 1027, 842, 1028, 845, 1005, 1006, 379, - 1030, 846, 848, 849, 874, 875, 509, 402, 906, 1033, - 907, 908, 919, 389, 390, 909, 408, 910, 911, 1042, - 391, 392, 393, 394, 395, 396, 397, 926, 927, 928, - 941, 949, 425, 956, 961, 1055, 995, 429, 996, -9, - 1001, 1013, 1014, 1008, 441, 1009, 1016, 1036, 1041, 1046, - 1047, 1056, 1057, 1075, 1074, 1077, 1078, 1082, 1083, 1084, - 76, 76, -375, 1132, 188, 696, 77, 77, 460, 271, - 272, 669, 815, 512, 191, 811, 994, 814, 465, 1087, - 1134, 398, 399, 400, 401, 667, 921, 754, 1088, 755, - 398, 399, 400, 401, 1085, 677, 1095, 1096, 1097, 0, - 0, 76, 484, 398, 399, 400, 401, 77, 0, 0, - 0, 0, 76, 0, 494, 76, 0, 0, 77, 0, - 0, 77, 0, 0, 0, 505, 0, 0, 76, 0, - 1121, 0, 0, 0, 77, 0, 0, 398, 399, 400, - 401, 0, 0, 944, 0, 945, 0, 0, 0, 0, - 0, 537, 538, 539, 540, 541, 0, 0, 544, 0, - 0, 549, 0, 551, 0, 553, 554, 556, 558, 560, - 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, - 573, 0, 0, 576, 0, 578, 579, 580, 581, 582, - 0, 0, 585, 0, 587, 0, 589, 590, 591, 0, - 0, 0, 594, 595, 596, 597, 598, 599, 600, 0, - 0, 87, 88, 89, 0, 90, 91, 92, 93, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 94, 95, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 97, 98, 99, 100, 101, 102, 0, 0, - 0, 0, 0, 0, 674, 0, 0, 0, 103, 0, - 89, 104, 0, 679, 0, 93, 252, 0, 0, 0, - 0, 0, 0, 0, 253, 0, 690, 692, 105, 106, - 0, 0, 107, 0, 108, 0, 95, 254, 109, 110, + 181, 414, 515, 478, 479, 928, 929, 243, 405, 212, + 440, 203, 204, 441, 658, 206, 471, 659, 87, 434, + 471, 214, 90, 91, 92, 239, 7, 8, 218, 399, + 200, 226, 215, 201, 230, 232, 234, 245, 464, 87, + 250, 250, 250, 90, 91, 92, 672, 446, 219, 270, + 220, 221, 20, 193, 195, 269, 76, 25, 622, 189, + 623, 250, 624, 257, 77, 388, 192, 190, 289, 290, + 1120, 471, 594, 381, 382, 383, 384, 385, 386, 387, + 291, 908, 264, 7, 8, 625, 277, 996, 626, 1121, + 255, 256, 276, 627, 482, 483, 299, 381, 382, 383, + 384, 385, 386, 387, 397, 398, 399, 278, 189, 909, + 283, 388, 265, 266, 267, 388, 190, 292, 693, 268, + 489, 287, 390, 391, 395, 396, 397, 398, 399, 392, + 393, 394, 395, 396, 397, 398, 399, 388, 390, 391, + 279, -400, 402, 403, 750, 392, 393, 394, 395, 396, + 397, 398, 399, 388, 58, 59, 60, 388, 390, 391, + 262, 263, 398, 399, 754, 392, 393, 394, 395, 396, + 397, 398, 399, 194, 196, 378, 380, 388, 1050, 53, + 409, 1053, 411, 406, 762, 293, 447, 222, 588, 388, + 590, 408, 388, 388, 490, 294, 413, 716, 472, 717, + 280, 442, 472, 240, 241, 660, 685, 458, 459, 428, + 388, 58, 59, 60, 432, 751, 388, 400, 401, 402, + 403, 444, 702, 703, 240, 241, 796, 407, 797, 381, + 382, 383, 384, 385, 386, 387, 227, 228, 648, 400, + 401, 402, 403, 281, 461, 726, 463, 400, 401, 402, + 403, 399, 194, 472, 76, 381, 382, 383, 384, 385, + 386, 387, 77, 400, 401, 402, 403, 799, 989, 800, + 990, 1119, 76, 196, 400, 401, 402, 403, 485, 295, + 77, 498, 499, 400, 401, 402, 403, 388, 388, 296, + 495, 297, 764, 752, 765, 500, 501, 388, 502, 503, + 504, 505, 250, 250, 767, 235, 236, 517, 518, 519, + 520, 521, 522, 523, 524, 525, 526, 527, 250, 529, + 530, 531, 532, 533, 534, 535, 536, 538, 992, 412, + 993, 388, 298, 544, 545, 547, 549, 550, 768, 552, + 300, 554, 396, 397, 398, 399, 576, 577, 388, 388, + 388, 508, 509, 388, 753, 594, 250, 769, 783, 388, + 784, 579, 400, 401, 402, 403, 770, 528, 415, 416, + 388, 388, 301, 469, 388, 790, 828, 791, 829, 475, + 477, 89, 388, 388, 419, 420, 93, 962, 776, 963, + 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, + 616, 617, 492, 493, 494, 574, 1063, 95, 1064, 655, + 656, 381, 382, 383, 384, 385, 386, 387, 302, 388, + 303, 516, 388, 807, 977, 388, 978, 243, 388, 771, + 980, 388, 981, 777, 388, 649, 663, 664, 772, 792, + 652, 669, 670, 381, 382, 383, 384, 385, 386, 387, + 304, 667, 668, 305, 388, 388, 400, 401, 402, 403, + 982, 773, 983, 388, 679, 306, 680, 307, 381, 382, + 383, 384, 385, 386, 387, 388, 686, 687, 308, 388, + 1007, 107, 594, 108, 793, 695, 697, 698, 699, 309, + 902, 76, 310, 904, 388, 311, 640, 388, 641, 77, + 642, 774, 1115, 438, 1116, 388, 388, 312, 130, 131, + 132, 480, 775, 778, 136, 137, 138, 1075, 140, 388, + 142, 143, 144, 643, 794, 452, 644, 149, 150, 151, + 388, 645, 154, 388, 156, 388, 158, 757, 388, 160, + 779, 162, 780, 313, 164, 787, 314, 166, 167, 388, + 168, 169, 388, 171, 388, 173, 789, 388, 388, 802, + 457, 803, 388, 176, 960, 984, 388, 390, 391, 781, + 315, 186, 557, 991, 392, 393, 394, 395, 396, 397, + 398, 399, 316, 388, 388, 317, 682, 388, 388, 684, + 994, 995, 487, 388, 388, 1005, 318, 953, 388, 491, + 1065, 1068, 804, 805, 1108, 1071, 1109, 388, 1110, 417, + 418, 319, 388, 967, 1073, 320, 388, 813, 814, 1074, + 816, 817, 808, 1085, 920, 809, 811, 388, 388, 388, + 321, 1111, 795, 798, 1112, 428, 1135, 322, 388, 1113, + 1127, 87, 1128, 801, 1129, 90, 91, 92, 827, 423, + 424, 388, 390, 391, 834, 835, 854, 460, 838, 392, + 393, 394, 395, 396, 397, 398, 399, 1130, 388, 323, + 1131, 324, 851, 856, 860, 1132, 76, 393, 394, 395, + 396, 397, 398, 399, 77, 388, 388, 861, 862, 863, + 1016, 1022, 400, 401, 402, 403, 510, 511, 325, 867, + 1, 2, 3, 4, 5, 326, 187, 871, 872, 327, + 873, 874, 875, 665, 666, 675, 676, 704, 705, 823, + 824, 328, 881, 882, 209, 884, 329, 213, 839, 840, + 330, 885, 917, 918, 886, 331, 225, 1024, 1025, 332, + 231, 233, 1043, 1044, 333, 249, 887, 334, 335, 888, + 889, 890, 336, 891, 892, 76, 337, 273, 274, 275, + 338, 339, 894, 77, 340, 341, 282, 284, 285, 286, + 342, 343, 344, 345, 346, 347, 348, 400, 401, 402, + 403, 349, 350, 351, 399, 620, 352, 353, 898, 354, + 899, 900, 901, 355, 400, 401, 402, 403, 857, 356, + 357, 638, 358, 359, 907, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 868, 869, 393, 370, 395, + 396, 397, 398, 399, 921, 371, 372, 373, 374, 375, + 376, 934, 935, 585, 377, 437, 439, 450, 451, 883, + 465, 1077, 1078, 389, 455, 936, 937, 456, 466, 474, + 250, 250, 488, 586, 633, 618, 944, 945, 619, 631, + 632, 634, 390, 391, 635, 636, 637, 647, 650, 392, + 393, 394, 395, 396, 397, 398, 399, 76, 657, 661, + 688, 379, 1097, 689, 690, 77, 820, 707, 691, 404, + 701, 708, 720, 1104, 715, 718, 1106, 721, 410, 939, + 940, 719, 722, 852, 723, 724, 725, 997, 998, 1124, + 740, 782, 785, 786, 427, 432, 843, 1010, 1011, 431, + 1004, 844, 845, 846, 853, 1008, 443, 849, 850, 511, + 879, 880, 911, 912, 400, 401, 402, 403, 913, 914, + 915, 916, 924, 931, 932, 933, 946, 1020, 954, 1000, + 462, 961, 966, 1001, -9, 1006, 1018, 1013, 1014, 1046, + 467, 1019, 1021, 1051, 1041, 1029, 1052, 1061, 1062, 1080, + 1082, 1030, 1083, 1087, 1088, 1089, -378, 1137, 1032, 188, + 1033, 866, 271, 272, 486, 1035, 514, 400, 401, 402, + 403, 819, 673, 653, 1038, 191, 496, 815, 818, 1090, + 999, 1139, 671, 926, 1047, 390, 391, 507, 681, 1102, + 0, 0, 392, 393, 394, 395, 396, 397, 398, 399, + 1060, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 539, 540, 541, 542, 543, 0, 1079, + 546, 0, 0, 551, 0, 553, 0, 555, 556, 558, + 560, 562, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 575, 0, 1092, 578, 1023, 580, 581, 582, + 583, 584, 0, 1093, 587, 0, 589, 0, 591, 592, + 593, 1100, 1101, 0, 596, 597, 598, 599, 600, 601, + 602, 603, 0, 0, 76, 76, 0, 0, 0, 0, + 0, 0, 77, 77, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1126, 0, 0, 0, 0, + 87, 88, 89, 0, 90, 91, 92, 93, 0, 0, + 400, 401, 402, 403, 0, 76, 0, 0, 0, 0, + 0, 0, 651, 77, 0, 0, 76, 94, 95, 76, + 0, 0, 0, 0, 77, 0, 0, 77, 0, 0, + 0, 0, 76, 0, 0, 0, 0, 0, 678, 0, + 77, 0, 0, 0, 0, 0, 0, 683, 0, 0, + 96, 97, 98, 99, 100, 101, 102, 0, 0, 0, + 694, 696, 0, 0, 0, 0, 0, 0, 103, 0, + 0, 104, 0, 0, 0, 0, 252, 0, 0, 0, + 0, 0, 0, 0, 253, 0, 0, 0, 105, 106, + 0, 0, 107, 0, 108, 0, 0, 254, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 0, 159, 160, 161, 162, 0, 163, 164, 0, 165, 166, 167, - 0, 168, 169, 170, 171, 172, 173, 174, 0, 107, - 0, 108, 0, 175, 176, 177, 0, 0, 389, 390, - 0, 0, 178, 0, 248, 391, 392, 393, 394, 395, - 396, 397, 0, 0, 0, 89, 130, 131, 132, 0, - 93, 0, 136, 137, 138, 0, 140, 0, 142, 143, - 144, 0, 0, 0, 0, 149, 150, 151, 0, 0, - 154, 95, 156, 0, 158, 0, 0, 160, 0, 162, - 0, 0, 164, 0, 425, 166, 167, 0, 168, 169, - 0, 171, 0, 173, 0, 0, 0, 0, 0, 0, - 828, 176, 0, 829, 0, 0, 0, 0, 0, 186, - 557, 0, 389, 390, 0, 0, 0, 0, 0, 391, - 392, 393, 394, 395, 396, 397, 389, 390, 0, 0, - 0, 0, 0, 391, 392, 393, 394, 395, 396, 397, - 0, 0, 0, 0, 107, 0, 108, 0, 0, 0, - 0, 0, 398, 399, 400, 401, 0, 0, 968, 0, - 969, 0, 0, 871, 0, 873, 0, 0, 0, 0, - 0, 130, 131, 132, 0, 0, 0, 136, 137, 138, - 0, 140, 0, 142, 143, 144, 0, 0, 0, 89, - 149, 150, 151, 0, 93, 154, 0, 156, 0, 158, - 0, 0, 160, 0, 162, 888, 0, 164, 0, 0, - 166, 167, 0, 168, 169, 95, 171, 0, 173, 0, - 0, 0, 0, 890, 891, 0, 176, 0, 0, 0, - 892, 0, 0, 0, 186, 559, 398, 399, 400, 401, - 0, 0, 0, 898, 593, 0, 900, 0, 901, 0, - 398, 399, 400, 401, 0, 0, 0, 0, 688, 0, - 89, 0, 0, 0, 0, 93, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 918, 0, 0, 920, 0, - 0, 0, 0, 0, 0, 0, 95, 0, 107, 0, - 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 936, 937, 938, 0, 0, 0, 0, 0, 0, - 0, 946, 947, 0, 0, 130, 131, 132, 0, 0, - 0, 136, 137, 138, 0, 140, 0, 142, 143, 144, - 0, 0, 0, 0, 149, 150, 151, 0, 0, 154, - 0, 156, 0, 158, 0, 0, 160, 0, 162, 0, - 0, 164, 0, 0, 166, 167, 0, 168, 169, 107, - 171, 108, 173, 429, 389, 390, 0, 0, 0, 0, - 176, 391, 392, 393, 394, 395, 396, 397, 186, 561, - 0, 0, 0, 0, 1010, 0, 130, 131, 132, 0, - 0, 0, 136, 137, 138, 0, 140, 0, 142, 143, - 144, 0, 0, 0, 0, 149, 150, 151, 1023, 0, - 154, 0, 156, 0, 158, 0, 0, 160, 0, 162, - 0, 0, 164, 1026, 0, 166, 167, 0, 168, 169, - 0, 171, 1029, 173, 0, 1031, 0, 0, 1032, 0, - 0, 176, 0, 0, 0, 0, 0, 0, 0, 186, - 0, 0, 0, 1043, 0, 0, 0, 0, 0, 0, - 0, 0, 1049, 1050, 1051, 1052, 0, 1054, 0, 0, - 0, 0, 0, 0, 87, 88, 89, 0, 90, 91, - 92, 93, 0, 0, 0, 0, 0, 0, 398, 399, - 400, 401, 0, 0, 0, 0, 707, 0, 0, 0, - 0, 94, 95, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1094, 0, - 0, 0, 0, 1098, 96, 97, 98, 99, 100, 101, - 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 103, 0, 0, 104, 0, 0, 0, 0, 246, - 0, 1120, 0, 0, 0, 0, 0, 247, 0, 0, - 0, 105, 106, 0, 0, 107, 0, 108, 0, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 0, 159, 160, 161, 162, 0, 163, 164, 0, - 165, 166, 167, 0, 168, 169, 170, 171, 172, 173, - 174, 0, 0, 0, 0, 0, 175, 176, 177, 0, - 0, 0, 0, 0, 0, 178, 0, 248, 87, 88, - 89, 0, 90, 91, 92, 93, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 94, 95, 0, 0, 0, + 0, 168, 169, 170, 171, 172, 173, 174, 1095, 0, + 0, 0, 0, 175, 176, 177, 0, 0, 0, 0, + 0, 0, 178, 0, 248, 390, 391, 0, 0, 0, + 0, 0, 392, 393, 394, 395, 396, 397, 398, 399, + 392, 393, 394, 395, 396, 397, 398, 399, 0, 0, + 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 832, 0, 0, 833, + 0, 0, 0, 0, 0, 0, 0, 390, 391, 0, + 0, 0, 0, 0, 392, 393, 394, 395, 396, 397, + 398, 399, 390, 391, 0, 0, 0, 0, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 876, + 0, 878, 0, 0, 390, 391, 0, 0, 0, 0, + 0, 392, 393, 394, 395, 396, 397, 398, 399, 0, + 400, 401, 402, 403, 0, 0, 0, 0, 400, 401, + 402, 403, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 893, 87, 88, 89, 0, 90, 91, 92, 93, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 895, + 896, 0, 0, 0, 0, 0, 897, 0, 0, 94, + 95, 0, 400, 401, 402, 403, 0, 0, 733, 903, + 734, 0, 905, 0, 906, 0, 0, 400, 401, 402, + 403, 0, 0, 736, 0, 737, 0, 0, 0, 0, + 0, 0, 96, 97, 98, 99, 100, 101, 102, 0, + 0, 923, 0, 0, 925, 0, 0, 0, 0, 0, + 103, 0, 0, 104, 0, 0, 0, 0, 246, 400, + 401, 402, 403, 0, 0, 453, 247, 941, 942, 943, + 105, 106, 0, 0, 107, 0, 108, 951, 952, 0, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 431, 159, 160, 161, 162, 0, 163, 164, 0, 165, + 166, 167, 0, 168, 169, 170, 171, 172, 173, 174, + 0, 1015, 0, 0, 0, 175, 176, 177, 0, 0, + 0, 0, 0, 0, 178, 0, 248, 0, 0, 0, + 0, 0, 0, 0, 0, 1028, 0, 0, 0, 0, + 0, 0, 0, 0, 390, 391, 0, 0, 0, 0, + 1031, 392, 393, 394, 395, 396, 397, 398, 399, 1034, + 0, 0, 1036, 0, 0, 1037, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1048, 87, 88, 89, 0, 90, 91, 92, 93, 1054, + 1055, 1056, 1057, 0, 1059, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, - 98, 99, 100, 101, 102, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 103, 389, 390, 104, 0, - 0, 0, 0, 391, 392, 393, 394, 395, 396, 397, - 0, 504, 0, 0, 0, 105, 106, 0, 0, 107, - 0, 108, 0, 0, 0, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 0, 159, 160, 161, 162, - 0, 163, 164, 0, 165, 166, 167, 0, 168, 169, - 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, - 175, 176, 177, 0, 0, 0, 0, 0, 0, 178, - 0, 248, 87, 88, 89, 0, 90, 91, 92, 93, - 398, 399, 400, 401, 0, 0, 0, 0, 724, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, - 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 97, 98, 99, 100, 101, 102, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 389, 390, 104, 0, 0, 0, 0, 391, 392, 393, - 394, 395, 396, 397, 0, 0, 0, 0, 0, 105, - 106, 0, 0, 107, 0, 108, 0, 0, 0, 109, + 0, 96, 97, 98, 99, 100, 101, 102, 0, 0, + 0, 0, 0, 0, 0, 1099, 0, 0, 0, 103, + 1103, 89, 104, 0, 0, 0, 93, 0, 0, 400, + 401, 402, 403, 0, 0, 506, 0, 595, 0, 105, + 106, 0, 0, 107, 0, 108, 0, 95, 1125, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, @@ -1517,19 +1560,58 @@ 150, 151, 152, 153, 154, 155, 156, 157, 158, 0, 159, 160, 161, 162, 0, 163, 164, 0, 165, 166, 167, 0, 168, 169, 170, 171, 172, 173, 174, 0, - 0, 0, 0, 0, 175, 176, 177, 0, 0, 0, + 0, 107, 0, 108, 175, 176, 177, 0, 0, 0, 0, 0, 0, 178, 0, 248, 87, 88, 89, 0, - 90, 91, 92, 93, 398, 399, 400, 401, 0, 0, - 0, 0, 725, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 94, 95, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 92, 93, 0, 0, 0, 0, 130, 131, + 132, 0, 0, 0, 136, 137, 138, 0, 140, 0, + 142, 143, 144, 94, 95, 0, 0, 149, 150, 151, + 0, 0, 154, 0, 156, 0, 158, 0, 0, 160, + 0, 162, 0, 0, 164, 0, 0, 166, 167, 0, + 168, 169, 0, 171, 0, 173, 96, 97, 98, 99, + 100, 101, 102, 176, 0, 0, 0, 0, 0, 0, + 0, 186, 559, 0, 103, 0, 89, 104, 0, 0, + 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 106, 0, 0, 107, 0, + 108, 0, 95, 0, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 0, 159, 160, 161, 162, 0, + 163, 164, 0, 165, 166, 167, 0, 168, 169, 170, + 171, 172, 173, 174, 0, 0, 107, 0, 108, 175, + 176, 177, 0, 0, 0, 0, 0, 0, 178, 0, + 248, 87, 88, 89, 0, 90, 91, 92, 93, 0, + 0, 0, 0, 130, 131, 132, 0, 0, 0, 136, + 137, 138, 0, 140, 0, 142, 143, 144, 94, 95, + 0, 0, 149, 150, 151, 0, 0, 154, 0, 156, + 0, 158, 0, 0, 160, 0, 162, 0, 0, 164, + 0, 0, 166, 167, 0, 168, 169, 0, 171, 0, + 173, 96, 97, 98, 99, 100, 101, 102, 176, 0, + 0, 0, 0, 0, 0, 0, 186, 561, 0, 103, + 89, 0, 104, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 106, 0, 0, 107, 0, 108, 95, 0, 0, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 0, + 159, 160, 161, 162, 0, 163, 164, 0, 165, 166, + 167, 0, 168, 169, 170, 171, 172, 173, 174, 0, + 107, 0, 108, 0, 175, 176, 177, 0, 0, 0, + 0, 0, 0, 178, 484, 87, 88, 89, 0, 90, + 91, 92, 93, 0, 0, 0, 0, 130, 131, 132, + 0, 0, 0, 136, 137, 138, 0, 140, 0, 142, + 143, 144, 94, 95, 0, 0, 149, 150, 151, 0, + 0, 154, 0, 156, 0, 158, 0, 0, 160, 0, + 162, 0, 0, 164, 0, 0, 166, 167, 0, 168, + 169, 0, 171, 0, 173, 96, 97, 98, 99, 100, + 101, 102, 176, 0, 0, 0, 0, 0, 0, 0, + 186, 563, 0, 103, 89, 0, 104, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 97, 98, 99, - 100, 101, 102, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 103, 0, 89, 104, 0, 0, 0, - 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 0, 0, 107, 0, 108, - 0, 95, 0, 109, 110, 111, 112, 113, 114, 115, + 95, 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, @@ -1537,7 +1619,7 @@ 156, 157, 158, 0, 159, 160, 161, 162, 0, 163, 164, 0, 165, 166, 167, 0, 168, 169, 170, 171, 172, 173, 174, 0, 107, 0, 108, 0, 175, 176, - 177, 0, 0, 0, 0, 0, 0, 178, 482, 87, + 177, 0, 0, 0, 0, 0, 0, 178, 537, 87, 88, 89, 0, 90, 91, 92, 93, 0, 0, 0, 0, 130, 131, 132, 0, 0, 0, 136, 137, 138, 0, 140, 0, 142, 143, 144, 94, 95, 0, 0, @@ -1545,66 +1627,47 @@ 0, 0, 160, 0, 162, 0, 0, 164, 0, 0, 166, 167, 0, 168, 169, 0, 171, 0, 173, 96, 97, 98, 99, 100, 101, 102, 176, 0, 0, 0, - 0, 0, 0, 0, 827, 0, 103, 389, 390, 104, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 0, 0, 0, 0, 0, 105, 106, 0, 0, - 107, 0, 108, 0, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 0, 159, 160, 161, - 162, 0, 163, 164, 0, 165, 166, 167, 0, 168, - 169, 170, 171, 172, 173, 174, 0, 0, 0, 0, - 0, 175, 176, 177, 0, 0, 0, 0, 0, 0, - 178, 535, 87, 88, 89, 0, 90, 91, 92, 93, - 0, 398, 399, 400, 401, 0, 0, 0, 0, 726, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, - 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 186, 0, 0, 103, 89, 0, + 104, 0, 0, 93, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 106, 0, + 0, 107, 0, 108, 95, 0, 0, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 0, 159, 160, + 161, 162, 0, 163, 164, 0, 165, 166, 167, 0, + 168, 169, 170, 171, 172, 173, 174, 0, 107, 0, + 108, 0, 175, 176, 177, 0, 0, 0, 0, 0, + 0, 178, 548, 87, 88, 89, 0, 90, 91, 92, + 93, 0, 260, 0, 0, 130, 131, 132, 0, 0, + 0, 136, 137, 138, 0, 140, 0, 142, 143, 144, + 94, 95, 0, 0, 149, 150, 151, 0, 0, 154, + 0, 156, 0, 158, 0, 0, 160, 0, 162, 0, + 0, 164, 0, 261, 166, 167, 0, 168, 169, 0, + 171, 0, 173, 96, 97, 98, 99, 100, 101, 102, + 176, 0, 0, 0, 0, 0, 0, 0, 831, 390, + 391, 103, 0, 0, 104, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 0, 0, 0, 0, 0, 0, + 0, 105, 106, 0, 0, 107, 0, 108, 0, 0, + 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 0, 159, 160, 161, 162, 0, 163, 164, 0, + 165, 166, 167, 0, 168, 169, 170, 171, 172, 173, + 174, 0, 0, 0, 0, 0, 175, 176, 177, 0, + 0, 0, 87, 88, 89, 178, 90, 91, 92, 93, + 0, 0, 0, 0, 400, 401, 402, 403, 0, 0, + 758, 0, 759, 0, 0, 0, 0, 0, 0, 94, + 95, 0, 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, 99, 100, 101, 102, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 0, 0, 104, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 0, 0, 105, - 106, 0, 0, 107, 0, 108, 0, 0, 0, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 0, - 159, 160, 161, 162, 0, 163, 164, 0, 165, 166, - 167, 0, 168, 169, 170, 171, 172, 173, 174, 0, - 0, 0, 0, 0, 175, 176, 177, 0, 0, 0, - 0, 0, 0, 178, 546, 87, 88, 89, 0, 90, - 91, 92, 93, 0, 260, 0, 0, 398, 399, 400, - 401, 0, 0, 0, 0, 727, 0, 0, 0, 0, - 0, 0, 94, 95, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 261, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 97, 98, 99, 100, - 101, 102, 0, 0, 0, 0, 0, 0, 0, 389, - 390, 0, 103, 0, 0, 104, 391, 392, 393, 394, - 395, 396, 397, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 105, 106, 0, 0, 107, 0, 108, 0, - 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 0, 159, 160, 161, 162, 0, 163, 164, - 0, 165, 166, 167, 0, 168, 169, 170, 171, 172, - 173, 174, 0, 0, 0, 0, 0, 175, 176, 177, - 0, 0, 0, 87, 88, 89, 178, 90, 91, 92, - 93, 0, 0, 398, 399, 400, 401, 0, 0, 0, - 0, 728, 0, 0, 0, 0, 0, 0, 0, 0, - 94, 95, 0, 0, 205, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 97, 98, 99, 100, 101, 102, - 0, 0, 0, 0, 0, 0, 0, 389, 390, 0, - 103, 0, 0, 104, 391, 392, 393, 394, 395, 396, - 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 390, 391, 0, + 103, 0, 0, 104, 392, 393, 394, 395, 396, 397, + 398, 399, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 0, 0, 107, 0, 108, 0, 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, @@ -1615,14 +1678,33 @@ 166, 167, 0, 168, 169, 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 175, 176, 177, 0, 0, 0, 87, 88, 89, 178, 90, 91, 92, 93, 0, - 474, 398, 399, 400, 401, 0, 0, 0, 0, 731, - 0, 0, 0, 0, 0, 0, 0, 0, 94, 95, + 476, 0, 400, 401, 402, 403, 0, 0, 949, 0, + 950, 0, 0, 0, 0, 0, 0, 0, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, 99, 100, 101, 102, 0, 0, - 0, 0, 0, 0, 0, 389, 390, 0, 103, 0, - 0, 104, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 0, 0, 0, 0, 0, 390, 391, 0, 103, + 0, 0, 104, 392, 393, 394, 395, 396, 397, 398, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 106, 0, 0, 107, 0, 108, 0, 0, 0, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 0, + 159, 160, 161, 162, 0, 163, 164, 0, 165, 166, + 167, 0, 168, 169, 170, 171, 172, 173, 174, 0, + 0, 0, 0, 0, 175, 176, 177, 0, 0, 0, + 87, 88, 89, 178, 90, 91, 92, 93, 0, 0, + 0, 400, 401, 402, 403, 0, 0, 973, 0, 974, + 0, 0, 0, 0, 0, 0, 0, 94, 95, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 97, 98, 99, 100, 101, 102, 0, 0, 0, + 0, 0, 0, 0, 0, 390, 391, 0, 103, 0, + 0, 104, 392, 393, 394, 395, 396, 397, 398, 399, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 0, 0, 107, 0, 108, 0, 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, @@ -1632,1117 +1714,1212 @@ 151, 152, 153, 154, 155, 156, 157, 158, 0, 159, 160, 161, 162, 0, 163, 164, 0, 165, 166, 167, 0, 168, 169, 170, 171, 172, 173, 174, 0, 0, - 0, 0, 0, 175, 176, 177, 0, 0, 0, 87, - 88, 89, 178, 90, 91, 92, 93, 0, 0, 398, - 399, 400, 401, 0, 0, 0, 0, 734, 0, 0, - 0, 0, 0, 0, 0, 0, 94, 95, 0, 0, + 0, 89, 0, 175, 176, 177, 93, 0, 0, 0, + 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, + 400, 401, 402, 403, 0, 0, 0, 95, 692, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 0, 0, 0, 0, 93, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 677, 0, 0, 0, 0, 0, 0, + 0, 107, 0, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 130, 131, + 132, 0, 0, 0, 136, 137, 138, 0, 140, 0, + 142, 143, 144, 0, 0, 877, 0, 149, 150, 151, + 0, 0, 154, 107, 156, 108, 158, 0, 0, 160, + 0, 162, 0, 0, 164, 0, 0, 166, 167, 0, + 168, 169, 0, 171, 0, 173, 0, 0, 0, 0, + 130, 131, 132, 176, 0, 0, 136, 137, 138, 0, + 140, 186, 142, 143, 144, 0, 0, 0, 0, 149, + 150, 151, 0, 0, 154, 0, 156, 0, 158, 0, + 0, 160, 0, 162, 0, 0, 164, 0, 0, 166, + 167, 0, 168, 169, 0, 171, 0, 173, 0, 7, + 8, 9, 0, 0, 0, 176, 10, 0, 0, 0, + 11, 0, 12, 186, 13, 14, 15, 16, 17, -329, + 0, 18, 19, 20, 21, 22, 23, 24, 25, 0, + 26, 27, 28, 0, 0, 0, 0, 29, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 34, 35, 36, 0, 0, 0, 37, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 39, 40, 41, 42, 43, 44, 0, + 0, 0, 0, 0, 45, 46, 47, -118, -118, 48, + 49, 50, 0, 51, 52, 53, 0, 0, 54, -118, + 390, 55, 0, 56, 57, 0, 0, 392, 393, 394, + 395, 396, 397, 398, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 58, 59, 60, + 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 0, 63, 0, 7, 8, + 9, 64, 0, 0, 65, 10, 0, 0, 66, 11, + 0, 12, 0, 13, 14, 15, 16, 17, -329, 0, + 18, 19, 20, 21, 22, 23, 24, 25, 0, 26, + 27, 28, 0, 0, 0, 0, 29, -16, -16, 30, + 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, + 35, 36, 0, 0, 0, 37, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 400, 401, 402, 403, 0, + 0, 0, 39, 40, 41, 42, 43, 44, 0, 0, + 0, 0, 0, 45, 46, 47, 0, 0, 48, 49, + 50, 0, 51, 52, 53, 0, 0, 54, 0, 0, + 55, 0, 56, 57, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 58, 59, 60, 0, + 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 62, 0, 0, 0, 63, 0, 7, 8, 9, + 64, 0, 0, 65, 10, 0, 0, 66, 11, 0, + 12, 0, 13, 14, 15, 16, 17, -329, 0, 18, + 19, 20, 21, 22, 23, 24, 25, 0, 26, 27, + 28, -16, 0, 0, 0, 29, -16, 0, 30, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, + 36, 390, 391, 0, 37, 38, 0, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 0, 0, 0, 0, + 0, 39, 40, 41, 42, 43, 44, 0, 0, 0, + 0, 0, 45, 46, 47, 0, 0, 48, 49, 50, + 0, 51, 52, 53, 0, 0, 54, 390, 391, 55, + 0, 56, 57, 0, 392, 393, 394, 395, 396, 397, + 398, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 58, 59, 60, 390, 391, + 0, 0, 61, 0, 0, 392, 393, 394, 395, 396, + 397, 398, 399, 0, 0, 0, 0, 0, 0, 0, + 62, 0, 0, 0, 63, 0, 0, 0, 0, 64, + 390, 391, 65, 0, 0, 0, 66, 392, 393, 394, + 395, 396, 397, 398, 399, 0, 400, 401, 402, 403, + 390, 391, 0, 0, 711, 0, 0, 392, 393, 394, + 395, 396, 397, 398, 399, 390, 391, 0, 0, 0, + 0, 0, 392, 393, 394, 395, 396, 397, 398, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 400, 401, 402, 403, 390, 391, 0, 0, + 728, 0, 0, 392, 393, 394, 395, 396, 397, 398, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 400, 401, 402, 403, 390, 391, 0, + 0, 729, 0, 0, 392, 393, 394, 395, 396, 397, + 398, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 400, 401, 402, 403, 390, + 391, 0, 0, 730, 0, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 0, 400, 401, 402, 403, 0, + 0, 0, 0, 731, 0, 0, 0, 0, 0, 0, + 400, 401, 402, 403, 390, 391, 0, 0, 732, 0, + 0, 392, 393, 394, 395, 396, 397, 398, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 400, 401, 402, 403, 390, 391, 0, 0, 735, + 0, 0, 392, 393, 394, 395, 396, 397, 398, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 400, 401, 402, 403, 390, 391, 0, 0, + 738, 0, 0, 392, 393, 394, 395, 396, 397, 398, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 400, 401, 402, 403, 390, 391, + 0, 0, 739, 0, 0, 392, 393, 394, 395, 396, + 397, 398, 399, 390, 391, 0, 0, 0, 0, 0, + 392, 393, 394, 395, 396, 397, 398, 399, 0, 400, + 401, 402, 403, 390, 391, 0, 0, 741, 0, 0, + 392, 393, 394, 395, 396, 397, 398, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 400, 401, 402, 403, 390, 391, 0, 0, 742, 0, + 0, 392, 393, 394, 395, 396, 397, 398, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 400, 401, 402, 403, 390, 391, 0, 0, 743, + 0, 0, 392, 393, 394, 395, 396, 397, 398, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 400, 401, 402, 403, 0, 0, 0, + 0, 744, 0, 0, 0, 0, 0, 0, 400, 401, + 402, 403, 390, 391, 0, 0, 745, 0, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 0, 400, 401, + 402, 403, 390, 391, 0, 0, 746, 0, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, + 401, 402, 403, 390, 391, 0, 0, 747, 0, 0, + 392, 393, 394, 395, 396, 397, 398, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 400, 401, 402, 403, 390, 391, 0, 0, 749, 0, + 0, 392, 393, 394, 395, 396, 397, 398, 399, 390, + 391, 0, 0, 0, 0, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 400, 401, 402, + 403, 390, 391, 0, 0, 760, 0, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 0, 400, 401, 402, + 403, 390, 391, 0, 0, 761, 0, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 400, 401, + 402, 403, 390, 391, 0, 0, 763, 0, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, + 401, 402, 403, 0, 0, 0, 0, 766, 0, 0, + 0, 0, 0, 0, 400, 401, 402, 403, 390, 391, + 0, 0, 788, 0, 0, 392, 393, 394, 395, 396, + 397, 398, 399, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 400, 401, 402, 403, + 390, 391, 0, 0, 830, 0, 0, 392, 393, 394, + 395, 396, 397, 398, 399, 0, 400, 401, 402, 403, + 390, 391, 0, 0, 930, 0, 0, 392, 393, 394, + 395, 396, 397, 398, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 400, 401, 402, + 403, 390, 391, 0, 0, 947, 0, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 390, 391, 0, 0, + 0, 0, 0, 392, 393, 394, 395, 396, 397, 398, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 400, 401, 402, 403, 390, 391, 0, + 0, 948, 0, 0, 392, 393, 394, 395, 396, 397, + 398, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 400, 401, 402, 403, 390, + 391, 0, 0, 955, 0, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 0, 400, 401, 402, 403, 390, + 391, 0, 0, 956, 0, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 400, 401, 402, 403, + 0, 0, 0, 0, 957, 0, 0, 0, 0, 0, + 0, 400, 401, 402, 403, 390, 391, 0, 0, 958, + 0, 0, 392, 393, 394, 395, 396, 397, 398, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 400, 401, 402, 403, 390, 391, 0, 0, + 959, 0, 0, 392, 393, 394, 395, 396, 397, 398, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 400, 401, 402, 403, 390, 391, + 0, 0, 964, 0, 0, 392, 393, 394, 395, 396, + 397, 398, 399, 0, 400, 401, 402, 403, 390, 391, + 0, 0, 965, 0, 0, 392, 393, 394, 395, 396, + 397, 398, 399, 390, 391, 0, 0, 0, 0, 0, + 392, 393, 394, 395, 396, 397, 398, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 400, 401, 402, 403, 390, 391, 0, 0, 968, 0, + 0, 392, 393, 394, 395, 396, 397, 398, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 400, 401, 402, 403, 390, 391, 0, 0, 969, + 0, 0, 392, 393, 394, 395, 396, 397, 398, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 400, 401, 402, 403, 390, 391, 0, + 0, 970, 0, 0, 392, 393, 394, 395, 396, 397, + 398, 399, 0, 400, 401, 402, 403, 0, 0, 0, + 0, 971, 0, 0, 0, 0, 0, 0, 400, 401, + 402, 403, 390, 391, 0, 0, 972, 0, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, + 401, 402, 403, 390, 391, 0, 0, 975, 0, 0, + 392, 393, 394, 395, 396, 397, 398, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 400, 401, 402, 403, 390, 391, 0, 0, 976, 0, + 0, 392, 393, 394, 395, 396, 397, 398, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 400, 401, 402, 403, 390, 391, 0, 0, + 979, 0, 0, 392, 393, 394, 395, 396, 397, 398, + 399, 390, 391, 0, 0, 0, 0, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 0, 400, 401, 402, + 403, 390, 391, 0, 0, 985, 0, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 400, 401, + 402, 403, 390, 391, 0, 0, 988, 0, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, + 401, 402, 403, 390, 391, 0, 0, 1003, 0, 0, + 392, 393, 394, 395, 396, 397, 398, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 400, 401, 402, 403, 0, 0, 0, 0, 1045, + 0, 0, 0, 0, 0, 0, 400, 401, 402, 403, + 390, 391, 0, 0, 1049, 0, 0, 392, 393, 394, + 395, 396, 397, 398, 399, 0, 400, 401, 402, 403, + 390, 391, 0, 0, 1058, 0, 0, 392, 393, 394, + 395, 396, 397, 398, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 400, 401, 402, + 403, 390, 391, 0, 0, 1067, 0, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 400, 401, + 402, 403, 390, 391, 0, 0, 1069, 0, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 390, 391, 0, + 0, 0, 0, 0, 392, 393, 394, 395, 396, 397, + 398, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 400, 401, 402, 403, 390, + 391, 0, 0, 1070, 0, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 0, 400, 401, 402, 403, 390, + 391, 0, 0, 1072, 0, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 400, 401, 402, 403, + 390, 391, 0, 0, 1105, 0, 0, 392, 393, 394, + 395, 396, 397, 398, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 400, 401, 402, + 403, 0, 0, 0, 0, 1118, 0, 0, 0, 0, + 0, 0, 400, 401, 402, 403, 390, 391, 0, 0, + 1136, 0, 0, 392, 393, 394, 395, 396, 397, 398, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 400, 401, 402, 403, 390, 391, + 454, 0, 0, 0, 0, 392, 393, 394, 395, 396, + 397, 398, 399, 0, 400, 401, 402, 403, 390, 391, + 468, 0, 0, 0, 0, 392, 393, 394, 395, 396, + 397, 398, 399, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 400, 401, 402, 403, 390, + 391, 674, 0, 0, 0, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 390, 391, 0, 0, 0, 0, + 0, 392, 393, 394, 395, 396, 397, 398, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 400, 401, 402, 403, 390, 391, 709, 0, 0, + 0, 0, 392, 393, 394, 395, 396, 397, 398, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 400, 401, 402, 403, 390, 391, 710, + 0, 0, 0, 0, 392, 393, 394, 395, 396, 397, + 398, 399, 0, 400, 401, 402, 403, 390, 391, 712, + 0, 0, 0, 0, 392, 393, 394, 395, 396, 397, + 398, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 400, 401, 402, 403, 0, 0, + 713, 0, 0, 0, 0, 0, 0, 0, 0, 400, + 401, 402, 403, 390, 391, 714, 0, 0, 0, 0, + 392, 393, 394, 395, 396, 397, 398, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 400, 401, 402, 403, 390, 391, 727, 0, 0, 0, + 0, 392, 393, 394, 395, 396, 397, 398, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 400, 401, 402, 403, 390, 391, 748, 0, + 0, 0, 0, 392, 393, 394, 395, 396, 397, 398, + 399, 0, 400, 401, 402, 403, 390, 391, 755, 0, + 0, 0, 0, 392, 393, 394, 395, 396, 397, 398, + 399, 390, 391, 0, 0, 0, 0, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 400, 401, + 402, 403, 390, 391, 756, 0, 0, 0, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, + 401, 402, 403, 390, 391, 826, 0, 0, 0, 0, + 392, 393, 394, 395, 396, 397, 398, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 400, 401, 402, 403, 390, 391, 847, 0, 0, + 0, 0, 392, 393, 394, 395, 396, 397, 398, 399, + 0, 400, 401, 402, 403, 0, 0, 848, 0, 0, + 0, 0, 0, 0, 0, 0, 400, 401, 402, 403, + 390, 391, 855, 0, 0, 0, 0, 392, 393, 394, + 395, 396, 397, 398, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 400, 401, 402, + 403, 390, 391, 858, 0, 0, 0, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 400, 401, + 402, 403, 390, 391, 859, 0, 0, 0, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 400, 401, 402, 403, 390, 391, 864, 0, 0, 0, + 0, 392, 393, 394, 395, 396, 397, 398, 399, 390, + 391, 0, 0, 0, 0, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 0, 400, 401, 402, 403, 390, + 391, 865, 0, 0, 0, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 400, 401, 402, 403, + 390, 391, 922, 0, 0, 0, 0, 392, 393, 394, + 395, 396, 397, 398, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 400, 401, 402, + 403, 390, 391, 927, 0, 0, 0, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, + 401, 402, 403, 0, 0, 938, 0, 0, 0, 0, + 0, 0, 0, 0, 400, 401, 402, 403, 390, 391, + 986, 0, 0, 0, 0, 392, 393, 394, 395, 396, + 397, 398, 399, 0, 400, 401, 402, 403, 390, 391, + 987, 0, 0, 0, 0, 392, 393, 394, 395, 396, + 397, 398, 399, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 400, 401, 402, 403, 390, + 391, 1017, 0, 0, 0, 0, 392, 393, 394, 395, + 396, 397, 398, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 400, 401, 402, 403, + 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 97, 98, 99, 100, 101, 102, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 89, 0, 104, - 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 105, 106, 0, 0, - 107, 0, 108, 95, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 0, 159, 160, 161, - 162, 0, 163, 164, 0, 165, 166, 167, 673, 168, - 169, 170, 171, 172, 173, 174, 107, 0, 108, 0, - 89, 175, 176, 177, 0, 93, 0, 0, 0, 0, - 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 130, 131, 132, 95, 0, 0, 136, - 137, 138, 0, 140, 0, 142, 143, 144, 0, 0, - 0, 0, 149, 150, 151, 0, 0, 154, 0, 156, - 0, 158, 0, 0, 160, 0, 162, 0, 0, 164, - 0, 0, 166, 167, 0, 168, 169, 0, 171, 0, - 173, 0, 0, 0, 0, 0, 0, 0, 176, 0, - 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, - 0, 872, 0, 0, 0, 389, 390, 0, 0, 107, - 0, 108, 391, 392, 393, 394, 395, 396, 397, 0, - 389, 390, 0, 0, 0, 0, 0, 391, 392, 393, - 394, 395, 396, 397, 0, 0, 130, 131, 132, 0, - 0, 0, 136, 137, 138, 0, 140, 0, 142, 143, - 144, 0, 0, 0, 0, 149, 150, 151, 0, 0, - 154, 0, 156, 0, 158, 0, 0, 160, 0, 162, - 0, 0, 164, 0, 0, 166, 167, 0, 168, 169, - 0, 171, 0, 173, 0, 7, 8, 9, 0, 0, - 0, 176, 10, 0, 0, 0, 11, 0, 12, 186, - 13, 14, 15, 16, 17, -326, 0, 18, 19, 20, - 21, 22, 23, 24, 25, 0, 26, 27, 28, 0, - 0, 0, 0, 29, 0, 0, 30, 0, 0, 398, - 399, 400, 401, 31, 32, 33, 34, 35, 36, 0, - 0, 0, 37, 38, 398, 399, 400, 401, 0, 0, - 0, 0, 735, 0, 0, 0, 0, 0, 39, 40, - 41, 42, 43, 44, 0, 0, 0, 0, 0, 45, - 46, 47, -117, -117, 48, 49, 50, 0, 51, 52, - 53, 0, 0, 54, -117, 0, 55, 0, 56, 57, - 0, 0, 0, 0, 0, 0, 0, 0, 389, 390, - 0, 0, 0, 0, 0, 391, 392, 393, 394, 395, - 396, 397, 58, 59, 60, 0, 0, 0, 0, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, - 0, 63, 0, 7, 8, 9, 64, 0, 0, 65, - 10, 0, 0, 66, 11, 0, 12, 0, 13, 14, - 15, 16, 17, -326, 0, 18, 19, 20, 21, 22, - 23, 24, 25, 0, 26, 27, 28, 0, 0, 0, - 0, 29, -15, -15, 30, 0, 0, 0, 0, 0, - 0, 31, 32, 33, 34, 35, 36, 0, 0, 0, - 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, - 43, 44, 398, 399, 400, 401, 0, 45, 46, 47, - 737, 0, 48, 49, 50, 0, 51, 52, 53, 0, - 0, 54, 0, 0, 55, 0, 56, 57, 0, 0, - 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, - 0, 0, 0, 391, 392, 393, 394, 395, 396, 397, - 58, 59, 60, 0, 0, 0, 0, 61, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 62, 0, 0, 0, 63, - 0, 7, 8, 9, 64, 0, 0, 65, 10, 0, - 0, 66, 11, 0, 12, 0, 13, 14, 15, 16, - 17, -326, 0, 18, 19, 20, 21, 22, 23, 24, - 25, 0, 26, 27, 28, -15, 0, 0, 0, 29, - -15, 0, 30, 0, 0, 0, 0, 0, 0, 31, - 32, 33, 34, 35, 36, 389, 390, 0, 37, 38, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 0, - 0, 0, 0, 0, 39, 40, 41, 42, 43, 44, - 398, 399, 400, 401, 0, 45, 46, 47, 738, 0, - 48, 49, 50, 0, 51, 52, 53, 0, 0, 54, - 389, 390, 55, 0, 56, 57, 0, 391, 392, 393, - 394, 395, 396, 397, 389, 390, 0, 0, 0, 0, - 0, 391, 392, 393, 394, 395, 396, 397, 58, 59, - 60, 389, 390, 0, 0, 61, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 0, 0, 0, 0, 0, - 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, - 0, 0, 64, 389, 390, 65, 0, 0, 0, 66, - 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, - 399, 400, 401, 389, 390, 0, 0, 739, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 389, 390, 0, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 398, 399, 400, 401, 0, 0, - 0, 0, 740, 0, 0, 0, 0, 0, 398, 399, - 400, 401, 0, 0, 0, 0, 741, 0, 0, 0, - 0, 0, 0, 0, 0, 398, 399, 400, 401, 389, - 390, 0, 0, 742, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 389, 390, 0, 0, 743, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, - 401, 0, 0, 0, 0, 745, 0, 0, 0, 0, - 0, 398, 399, 400, 401, 389, 390, 0, 0, 756, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 389, - 390, 0, 0, 0, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 389, 390, 0, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 0, 0, 398, 399, 400, 401, 0, 0, 0, - 0, 757, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 389, 390, 0, 0, 759, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 389, - 390, 0, 0, 762, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, - 399, 400, 401, 0, 0, 0, 0, 784, 0, 0, - 0, 0, 0, 398, 399, 400, 401, 0, 0, 0, - 0, 826, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 0, 0, 0, 0, 925, 0, 0, 0, 0, - 0, 398, 399, 400, 401, 389, 390, 0, 0, 942, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 389, - 390, 0, 0, 0, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 0, 0, 398, 399, 400, 401, 389, - 390, 0, 0, 943, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 0, 0, 0, - 0, 950, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 389, 390, 0, 0, 951, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 389, 390, 0, 0, 0, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 389, - 390, 0, 0, 0, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, - 399, 400, 401, 0, 0, 0, 0, 952, 0, 0, - 0, 0, 0, 398, 399, 400, 401, 389, 390, 0, - 0, 953, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 0, 0, 398, 399, 400, 401, 389, 390, 0, - 0, 954, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 389, 390, 0, 0, 0, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 0, - 0, 0, 0, 959, 0, 0, 0, 0, 0, 398, - 399, 400, 401, 0, 0, 0, 0, 960, 0, 0, - 0, 0, 0, 398, 399, 400, 401, 0, 0, 0, - 0, 963, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 389, 390, 0, 0, 964, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 389, 390, 0, 0, 0, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 0, - 0, 398, 399, 400, 401, 389, 390, 0, 0, 965, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 0, - 0, 398, 399, 400, 401, 0, 0, 0, 0, 966, - 0, 0, 0, 0, 0, 398, 399, 400, 401, 389, - 390, 0, 0, 967, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 389, 390, 0, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 389, 390, 0, 0, 0, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 0, - 0, 0, 0, 970, 0, 0, 0, 0, 0, 398, - 399, 400, 401, 389, 390, 0, 0, 971, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, - 399, 400, 401, 389, 390, 0, 0, 974, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 389, 390, 0, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 0, 0, 398, 399, 400, 401, 0, 0, 0, - 0, 980, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 0, 0, 0, 0, 983, 0, 0, 0, 0, - 0, 398, 399, 400, 401, 0, 0, 0, 0, 998, - 0, 0, 0, 0, 0, 398, 399, 400, 401, 389, - 390, 0, 0, 1040, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 389, 390, 0, 0, 1044, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, - 401, 0, 0, 0, 0, 1053, 0, 0, 0, 0, - 0, 398, 399, 400, 401, 389, 390, 0, 0, 1062, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 389, - 390, 0, 0, 0, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 389, 390, 0, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 0, 0, 398, 399, 400, 401, 0, 0, 0, - 0, 1064, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 389, 390, 0, 0, 1065, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 389, - 390, 0, 0, 1067, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, - 399, 400, 401, 0, 0, 0, 0, 1100, 0, 0, - 0, 0, 0, 398, 399, 400, 401, 0, 0, 0, - 0, 1113, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 0, 0, 0, 0, 1131, 0, 0, 0, 0, - 0, 398, 399, 400, 401, 389, 390, 451, 0, 0, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 389, - 390, 0, 0, 0, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 0, 0, 398, 399, 400, 401, 389, - 390, 452, 0, 0, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 0, 0, 466, - 0, 0, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 389, 390, 670, 0, 0, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 389, 390, 0, 0, 0, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 389, - 390, 0, 0, 0, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, - 399, 400, 401, 0, 0, 705, 0, 0, 0, 0, - 0, 0, 0, 398, 399, 400, 401, 389, 390, 706, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 0, 0, 398, 399, 400, 401, 389, 390, 708, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 389, 390, 0, 0, 0, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 0, - 0, 709, 0, 0, 0, 0, 0, 0, 0, 398, - 399, 400, 401, 0, 0, 710, 0, 0, 0, 0, - 0, 0, 0, 398, 399, 400, 401, 0, 0, 723, - 0, 0, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 389, 390, 744, 0, 0, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 389, 390, 0, 0, 0, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 0, - 0, 398, 399, 400, 401, 389, 390, 751, 0, 0, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 0, - 0, 398, 399, 400, 401, 0, 0, 752, 0, 0, - 0, 0, 0, 0, 0, 398, 399, 400, 401, 389, - 390, 822, 0, 0, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 389, 390, 0, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 389, 390, 0, 0, 0, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 0, - 0, 843, 0, 0, 0, 0, 0, 0, 0, 398, - 399, 400, 401, 389, 390, 844, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, - 399, 400, 401, 389, 390, 851, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 389, 390, 0, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 0, 0, 398, 399, 400, 401, 0, 0, 854, - 0, 0, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 0, 0, 855, 0, 0, 0, 0, 0, 0, - 0, 398, 399, 400, 401, 0, 0, 860, 0, 0, - 0, 0, 0, 0, 0, 398, 399, 400, 401, 389, - 390, 861, 0, 0, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 389, 390, 917, 0, 0, 0, 0, 391, 392, - 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, - 401, 0, 0, 922, 0, 0, 0, 0, 0, 0, - 0, 398, 399, 400, 401, 389, 390, 933, 0, 0, - 0, 0, 391, 392, 393, 394, 395, 396, 397, 389, - 390, 0, 0, 0, 0, 0, 391, 392, 393, 394, - 395, 396, 397, 389, 390, 0, 0, 0, 0, 0, - 391, 392, 393, 394, 395, 396, 397, 389, 0, 0, - 0, 0, 0, 0, 391, 392, 393, 394, 395, 396, - 397, 0, 0, 398, 399, 400, 401, 0, 0, 981, - 0, 0, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 0, 0, 982, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 398, 399, 400, 401, 0, - 0, 1012, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 398, - 399, 400, 401, 0, 0, 1061, 0, 0, 0, 0, - 0, 0, 0, 398, 399, 400, 401, 0, 0, 1079, - 0, 0, 0, 0, 0, 0, 0, 398, 399, 400, - 401, 0, 0, 1112, 0, 0, 0, 0, 0, 0, - 0, 398, 399, 400, 401 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 400, 401, 402, 403, 0, 0, 1084, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 400, 401, 402, 403, 0, 0, 1117, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 400, 401, 402, 403 }; static const yytype_int16 yycheck[] = { - 2, 199, 40, 15, 16, 307, 12, 1, 832, 833, - 4, 4, 12, 1, 7, 17, 4, 4, 76, 217, - 7, 47, 48, 58, 58, 60, 61, 75, 30, 41, - 44, 33, 274, 275, 36, 37, 38, 188, 11, 75, - 42, 43, 44, 25, 195, 16, 3, 278, 279, 51, - 7, 8, 9, 10, 91, 92, 14, 188, 16, 53, - 18, 63, 44, 188, 195, 53, 103, 43, 44, 0, - 195, 3, 76, 44, 23, 7, 8, 9, 10, 4, - 28, 188, 7, 41, 20, 21, 44, 63, 195, 4, - 5, 49, 193, 12, 195, 87, 98, 70, 71, 72, - 73, 74, 75, 180, 181, 182, 183, 184, 12, 188, - 4, 5, 74, 75, 76, 7, 195, 70, 71, 72, - 73, 74, 75, 193, 94, 195, 188, 63, 64, 187, - 188, 189, 190, 195, 70, 71, 72, 73, 74, 75, - 76, 372, 188, 374, 63, 64, 194, 75, 76, 195, - 109, 70, 71, 72, 73, 74, 75, 76, 194, 63, - 64, 196, 196, 193, 44, 195, 70, 71, 72, 73, - 74, 75, 76, 3, 188, 177, 178, 7, 8, 9, - 1004, 188, 188, 1007, 99, 189, 190, 193, 195, 28, - 188, 193, 75, 193, 33, 193, 198, 195, 193, 188, - 195, 194, 240, 241, 193, 199, 195, 194, 193, 211, - 195, 199, 75, 188, 216, 188, 131, 132, 133, 188, - 195, 223, 194, 217, 193, 187, 188, 189, 190, 217, - 187, 188, 24, 475, 260, 188, 434, 131, 132, 133, - 266, 267, 195, 188, 246, 194, 248, 196, 193, 491, - 492, 187, 188, 189, 190, 187, 188, 194, 59, 187, - 188, 189, 190, 289, 290, 291, 4, 5, 187, 188, - 189, 190, 514, 1097, 193, 188, 188, 194, 280, 44, - 193, 193, 308, 187, 188, 189, 190, 88, 89, 90, - 292, 194, 13, 194, 95, 297, 298, 188, 300, 301, - 302, 303, 304, 305, 195, 4, 5, 309, 310, 311, + 2, 199, 307, 274, 275, 836, 837, 40, 44, 23, + 4, 15, 16, 7, 4, 17, 12, 7, 3, 217, + 12, 28, 7, 8, 9, 10, 4, 5, 30, 77, + 4, 33, 7, 7, 36, 37, 38, 41, 11, 3, + 42, 43, 44, 7, 8, 9, 10, 58, 58, 51, + 60, 61, 28, 75, 75, 95, 1, 33, 14, 4, + 16, 63, 18, 88, 1, 189, 0, 4, 92, 93, + 25, 12, 196, 70, 71, 72, 73, 74, 75, 76, + 104, 16, 59, 4, 5, 41, 195, 12, 44, 44, + 43, 44, 110, 49, 278, 279, 98, 70, 71, 72, + 73, 74, 75, 76, 75, 76, 77, 195, 53, 44, + 63, 189, 89, 90, 91, 189, 53, 75, 196, 96, + 194, 44, 63, 64, 73, 74, 75, 76, 77, 70, + 71, 72, 73, 74, 75, 76, 77, 189, 63, 64, + 195, 46, 190, 191, 196, 70, 71, 72, 73, 74, + 75, 76, 77, 189, 132, 133, 134, 189, 63, 64, + 47, 48, 76, 77, 196, 70, 71, 72, 73, 74, + 75, 76, 77, 195, 195, 177, 178, 189, 1009, 100, + 194, 1012, 196, 44, 196, 75, 197, 197, 372, 189, + 374, 193, 189, 189, 194, 24, 198, 194, 194, 196, + 195, 195, 194, 188, 189, 195, 477, 240, 241, 211, + 189, 132, 133, 134, 216, 194, 189, 188, 189, 190, + 191, 223, 493, 494, 188, 189, 194, 44, 196, 70, + 71, 72, 73, 74, 75, 76, 4, 5, 436, 188, + 189, 190, 191, 195, 246, 516, 248, 188, 189, 190, + 191, 77, 195, 194, 199, 70, 71, 72, 73, 74, + 75, 76, 199, 188, 189, 190, 191, 194, 194, 196, + 196, 1102, 217, 195, 188, 189, 190, 191, 280, 195, + 217, 295, 296, 188, 189, 190, 191, 189, 189, 195, + 292, 195, 194, 194, 196, 297, 298, 189, 300, 301, + 302, 303, 304, 305, 196, 4, 5, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 304, 305, - 194, 188, 194, 335, 336, 337, 338, 339, 195, 341, - 188, 343, 63, 64, 320, 193, 295, 296, 194, 70, - 71, 72, 73, 74, 75, 76, 358, 194, 35, 36, - 194, 363, 70, 71, 72, 73, 74, 75, 194, 4, - 5, 4, 5, 70, 71, 72, 73, 74, 75, 188, - 5, 188, 358, 194, 193, 10, 195, 4, 195, 391, + 322, 323, 324, 325, 326, 327, 328, 329, 194, 4, + 196, 189, 195, 335, 336, 337, 338, 339, 196, 341, + 195, 343, 74, 75, 76, 77, 360, 361, 189, 189, + 189, 304, 305, 189, 194, 196, 358, 196, 194, 189, + 196, 363, 188, 189, 190, 191, 196, 320, 35, 36, + 189, 189, 195, 260, 189, 194, 194, 196, 196, 266, + 267, 5, 189, 189, 4, 5, 10, 194, 194, 196, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 194, 4, 5, 192, 193, 71, 31, 73, 74, 75, - 76, 360, 361, 70, 71, 72, 73, 74, 75, 617, - 458, 194, 70, 71, 72, 73, 74, 75, 14, 188, - 16, 194, 18, 435, 193, 44, 195, 194, 440, 194, - 434, 73, 74, 75, 76, 471, 434, 188, 474, 451, - 452, 188, 193, 188, 195, 41, 193, 188, 44, 58, - 195, 194, 464, 49, 466, 188, 187, 188, 189, 190, - 193, 188, 195, 193, 476, 477, 193, 188, 195, 104, - 188, 106, 193, 485, 486, 487, 488, 195, 188, 791, - 188, 188, 794, 193, 5, 489, 193, 195, 195, 448, - 449, 489, 188, 194, 453, 454, 131, 132, 133, 195, - 188, 194, 137, 138, 139, 193, 141, 195, 143, 144, - 145, 187, 188, 189, 190, 150, 151, 152, 188, 194, - 155, 188, 157, 193, 159, 195, 188, 162, 195, 164, - 188, 193, 167, 195, 194, 170, 171, 44, 173, 174, - 194, 176, 188, 178, 194, 187, 188, 189, 190, 195, - 194, 186, 4, 5, 188, 188, 63, 64, 46, 194, - 195, 195, 195, 70, 71, 72, 73, 74, 75, 76, - 188, 188, 188, 188, 188, 63, 64, 195, 195, 195, - 195, 195, 70, 71, 72, 73, 74, 75, 76, 601, - 602, 188, 70, 71, 72, 73, 74, 75, 195, 188, - 188, 194, 188, 625, 626, 188, 195, 195, 620, 195, - 818, 863, 195, 617, 194, 188, 188, 188, 194, 617, - 194, 633, 195, 195, 195, 46, 194, 879, 188, 14, - 188, 16, 188, 18, 646, 195, 193, 195, 193, 195, - 652, 653, 63, 64, 656, 681, 85, 86, 194, 70, - 71, 72, 73, 74, 75, 76, 41, 194, 670, 44, - 188, 188, 698, 699, 49, 193, 193, 193, 627, 628, - 194, 630, 631, 685, 686, 687, 4, 5, 194, 188, - 187, 188, 189, 190, 193, 697, 722, 188, 49, 50, - 188, 194, 193, 705, 706, 193, 708, 709, 710, 187, - 188, 189, 190, 4, 5, 39, 40, 188, 720, 721, - 188, 723, 193, 193, 14, 193, 16, 729, 18, 188, - 732, 188, 188, 194, 193, 684, 193, 193, 4, 5, - 60, 61, 744, 51, 194, 747, 748, 749, 194, 751, - 752, 41, 195, 194, 44, 63, 64, 194, 760, 49, - 194, 194, 70, 71, 72, 73, 74, 75, 76, 194, - 194, 194, 194, 194, 194, 194, 187, 188, 189, 190, - 194, 194, 63, 64, 786, 194, 788, 789, 790, 70, - 71, 72, 73, 74, 75, 76, 194, 194, 194, 194, - 802, 63, 64, 194, 3, 194, 194, 194, 70, 71, - 72, 73, 74, 75, 76, 194, 194, 194, 194, 193, - 822, 194, 21, 194, 818, 24, 194, 194, 194, 194, - 818, 194, 194, 194, 33, 194, 1034, 1035, 37, 38, - 194, 843, 844, 42, 194, 194, 848, 849, 194, 194, - 194, 194, 854, 855, 194, 54, 55, 56, 194, 194, - 194, 194, 194, 194, 63, 64, 65, 66, 194, 194, - 43, 194, 848, 849, 195, 194, 193, 1075, 194, 187, - 188, 189, 190, 194, 194, 76, 195, 75, 1086, 195, - 194, 1089, 841, 842, 906, 907, 194, 193, 43, 194, - 194, 193, 46, 10, 1102, 193, 187, 188, 189, 190, - 912, 194, 193, 193, 195, 917, 194, 194, 193, 193, - 922, 193, 948, 193, 195, 187, 188, 189, 190, 193, - 195, 193, 195, 195, 195, 194, 194, 63, 64, 195, - 195, 193, 944, 43, 70, 71, 72, 73, 74, 75, - 76, 195, 195, 70, 71, 72, 73, 74, 75, 76, - 962, 195, 195, 195, 195, 194, 968, 71, 72, 73, - 74, 75, 76, 975, 194, 977, 195, 926, 927, 178, - 982, 195, 84, 84, 195, 195, 5, 186, 193, 991, - 193, 195, 58, 63, 64, 195, 195, 195, 195, 1001, - 70, 71, 72, 73, 74, 75, 76, 194, 194, 193, - 195, 194, 211, 195, 195, 1017, 43, 216, 38, 43, - 194, 75, 75, 195, 223, 195, 75, 48, 58, 195, - 195, 194, 194, 47, 1036, 194, 194, 75, 195, 195, - 1034, 1035, 38, 4, 4, 489, 1034, 1035, 247, 53, - 53, 458, 633, 307, 5, 629, 912, 632, 257, 1061, - 1129, 187, 188, 189, 190, 455, 830, 193, 1070, 195, - 187, 188, 189, 190, 1058, 468, 1078, 1079, 1081, -1, - -1, 1075, 281, 187, 188, 189, 190, 1075, -1, -1, - -1, -1, 1086, -1, 293, 1089, -1, -1, 1086, -1, - -1, 1089, -1, -1, -1, 304, -1, -1, 1102, -1, - 1112, -1, -1, -1, 1102, -1, -1, 187, 188, 189, - 190, -1, -1, 193, -1, 195, -1, -1, -1, -1, - -1, 330, 331, 332, 333, 334, -1, -1, 337, -1, - -1, 340, -1, 342, -1, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, -1, -1, 362, -1, 364, 365, 366, 367, 368, - -1, -1, 371, -1, 373, -1, 375, 376, 377, -1, - -1, -1, 381, 382, 383, 384, 385, 386, 387, -1, - -1, 3, 4, 5, -1, 7, 8, 9, 10, -1, + 402, 403, 289, 290, 291, 358, 194, 31, 196, 193, + 194, 70, 71, 72, 73, 74, 75, 76, 195, 189, + 195, 308, 189, 621, 194, 189, 196, 460, 189, 196, + 194, 189, 196, 194, 189, 437, 450, 451, 196, 194, + 442, 455, 456, 70, 71, 72, 73, 74, 75, 76, + 195, 453, 454, 195, 189, 189, 188, 189, 190, 191, + 194, 196, 196, 189, 466, 195, 468, 195, 70, 71, + 72, 73, 74, 75, 76, 189, 478, 479, 195, 189, + 194, 105, 196, 107, 194, 487, 488, 489, 490, 195, + 795, 436, 195, 798, 189, 195, 14, 189, 16, 436, + 18, 196, 194, 58, 196, 189, 189, 195, 132, 133, + 134, 5, 196, 196, 138, 139, 140, 13, 142, 189, + 144, 145, 146, 41, 194, 194, 44, 151, 152, 153, + 189, 49, 156, 189, 158, 189, 160, 196, 189, 163, + 196, 165, 196, 195, 168, 196, 195, 171, 172, 189, + 174, 175, 189, 177, 189, 179, 196, 189, 189, 196, + 194, 196, 189, 187, 196, 196, 189, 63, 64, 196, + 195, 195, 196, 196, 70, 71, 72, 73, 74, 75, + 76, 77, 195, 189, 189, 195, 473, 189, 189, 476, + 196, 196, 194, 189, 189, 196, 195, 868, 189, 43, + 196, 196, 604, 605, 14, 196, 16, 189, 18, 20, + 21, 195, 189, 884, 196, 195, 189, 631, 632, 196, + 634, 635, 624, 196, 822, 629, 630, 189, 189, 189, + 195, 41, 194, 194, 44, 637, 196, 195, 189, 49, + 14, 3, 16, 194, 18, 7, 8, 9, 650, 4, + 5, 189, 63, 64, 656, 657, 194, 194, 660, 70, + 71, 72, 73, 74, 75, 76, 77, 41, 189, 195, + 44, 195, 674, 194, 688, 49, 621, 71, 72, 73, + 74, 75, 76, 77, 621, 189, 189, 689, 690, 691, + 194, 194, 188, 189, 190, 191, 4, 5, 195, 701, + 181, 182, 183, 184, 185, 195, 3, 709, 710, 195, + 712, 713, 714, 4, 5, 86, 87, 4, 5, 49, + 50, 195, 724, 725, 21, 727, 195, 24, 4, 5, + 195, 733, 39, 40, 736, 195, 33, 4, 5, 195, + 37, 38, 60, 61, 195, 42, 748, 195, 195, 751, + 752, 753, 195, 755, 756, 700, 195, 54, 55, 56, + 195, 195, 764, 700, 195, 195, 63, 64, 65, 66, + 195, 195, 195, 195, 195, 195, 195, 188, 189, 190, + 191, 195, 195, 195, 77, 75, 195, 195, 790, 195, + 792, 793, 794, 195, 188, 189, 190, 191, 685, 195, + 195, 43, 195, 195, 806, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 702, 703, 71, 195, 73, + 74, 75, 76, 77, 826, 195, 195, 195, 195, 195, + 195, 845, 846, 196, 195, 195, 195, 195, 195, 726, + 194, 1039, 1040, 44, 195, 847, 848, 195, 194, 194, + 852, 853, 194, 196, 194, 196, 858, 859, 196, 195, + 195, 195, 63, 64, 195, 194, 194, 46, 195, 70, + 71, 72, 73, 74, 75, 76, 77, 822, 195, 10, + 195, 178, 1080, 194, 194, 822, 43, 196, 194, 186, + 194, 196, 195, 1091, 196, 194, 1094, 195, 195, 852, + 853, 196, 196, 85, 196, 194, 194, 911, 912, 1107, + 196, 196, 196, 196, 211, 917, 196, 931, 932, 216, + 922, 196, 195, 195, 85, 927, 223, 196, 196, 5, + 196, 196, 194, 194, 188, 189, 190, 191, 196, 196, + 196, 196, 58, 195, 195, 194, 196, 949, 195, 43, + 247, 196, 196, 38, 43, 195, 75, 196, 196, 58, + 257, 75, 75, 196, 48, 967, 196, 195, 195, 47, + 195, 973, 195, 75, 196, 196, 38, 4, 980, 4, + 982, 700, 53, 53, 281, 987, 307, 188, 189, 190, + 191, 637, 460, 51, 996, 5, 293, 633, 636, 1063, + 917, 1134, 457, 834, 1006, 63, 64, 304, 470, 1086, + -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, + 1022, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 330, 331, 332, 333, 334, -1, 1041, + 337, -1, -1, 340, -1, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 1066, 362, 953, 364, 365, 366, + 367, 368, -1, 1075, 371, -1, 373, -1, 375, 376, + 377, 1083, 1084, -1, 381, 382, 383, 384, 385, 386, + 387, 388, -1, -1, 1039, 1040, -1, -1, -1, -1, + -1, -1, 1039, 1040, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1117, -1, -1, -1, -1, + 3, 4, 5, -1, 7, 8, 9, 10, -1, -1, + 188, 189, 190, 191, -1, 1080, -1, -1, -1, -1, + -1, -1, 439, 1080, -1, -1, 1091, 30, 31, 1094, + -1, -1, -1, -1, 1091, -1, -1, 1094, -1, -1, + -1, -1, 1107, -1, -1, -1, -1, -1, 465, -1, + 1107, -1, -1, -1, -1, -1, -1, 474, -1, -1, + 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, + 487, 488, -1, -1, -1, -1, -1, -1, 81, -1, + -1, 84, -1, -1, -1, -1, 89, -1, -1, -1, + -1, -1, -1, -1, 97, -1, -1, -1, 101, 102, + -1, -1, 105, -1, 107, -1, -1, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, + 163, 164, 165, -1, 167, 168, -1, 170, 171, 172, + -1, 174, 175, 176, 177, 178, 179, 180, 46, -1, + -1, -1, -1, 186, 187, 188, -1, -1, -1, -1, + -1, -1, 195, -1, 197, 63, 64, -1, -1, -1, + -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + 637, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 653, -1, -1, 656, + -1, -1, -1, -1, -1, -1, -1, 63, 64, -1, + -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, + 76, 77, 63, 64, -1, -1, -1, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 716, + -1, 718, -1, -1, 63, 64, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + 188, 189, 190, 191, -1, -1, -1, -1, 188, 189, + 190, 191, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 758, 3, 4, 5, -1, 7, 8, 9, 10, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 776, + 777, -1, -1, -1, -1, -1, 783, -1, -1, 30, + 31, -1, 188, 189, 190, 191, -1, -1, 194, 796, + 196, -1, 799, -1, 801, -1, -1, 188, 189, 190, + 191, -1, -1, 194, -1, 196, -1, -1, -1, -1, + -1, -1, 63, 64, 65, 66, 67, 68, 69, -1, + -1, 828, -1, -1, 831, -1, -1, -1, -1, -1, + 81, -1, -1, 84, -1, -1, -1, -1, 89, 188, + 189, 190, 191, -1, -1, 194, 97, 854, 855, 856, + 101, 102, -1, -1, 105, -1, 107, 864, 865, -1, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 917, 162, 163, 164, 165, -1, 167, 168, -1, 170, + 171, 172, -1, 174, 175, 176, 177, 178, 179, 180, + -1, 938, -1, -1, -1, 186, 187, 188, -1, -1, + -1, -1, -1, -1, 195, -1, 197, -1, -1, -1, + -1, -1, -1, -1, -1, 962, -1, -1, -1, -1, + -1, -1, -1, -1, 63, 64, -1, -1, -1, -1, + 977, 70, 71, 72, 73, 74, 75, 76, 77, 986, + -1, -1, 989, -1, -1, 992, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1007, 3, 4, 5, -1, 7, 8, 9, 10, 1016, + 1017, 1018, 1019, -1, 1021, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 437, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, 66, 67, 68, 69, -1, -1, - -1, -1, -1, -1, 463, -1, -1, -1, 80, -1, - 5, 83, -1, 472, -1, 10, 88, -1, -1, -1, - -1, -1, -1, -1, 96, -1, 485, 486, 100, 101, - -1, -1, 104, -1, 106, -1, 31, 109, 110, 111, + -1, -1, -1, -1, -1, 1082, -1, -1, -1, 81, + 1087, 5, 84, -1, -1, -1, 10, -1, -1, 188, + 189, 190, 191, -1, -1, 97, -1, 196, -1, 101, + 102, -1, -1, 105, -1, 107, -1, 31, 1115, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, -1, 161, - 162, 163, 164, -1, 166, 167, -1, 169, 170, 171, - -1, 173, 174, 175, 176, 177, 178, 179, -1, 104, - -1, 106, -1, 185, 186, 187, -1, -1, 63, 64, - -1, -1, 194, -1, 196, 70, 71, 72, 73, 74, - 75, 76, -1, -1, -1, 5, 131, 132, 133, -1, - 10, -1, 137, 138, 139, -1, 141, -1, 143, 144, - 145, -1, -1, -1, -1, 150, 151, 152, -1, -1, - 155, 31, 157, -1, 159, -1, -1, 162, -1, 164, - -1, -1, 167, -1, 633, 170, 171, -1, 173, 174, - -1, 176, -1, 178, -1, -1, -1, -1, -1, -1, - 649, 186, -1, 652, -1, -1, -1, -1, -1, 194, - 195, -1, 63, 64, -1, -1, -1, -1, -1, 70, - 71, 72, 73, 74, 75, 76, 63, 64, -1, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, - -1, -1, -1, -1, 104, -1, 106, -1, -1, -1, - -1, -1, 187, 188, 189, 190, -1, -1, 193, -1, - 195, -1, -1, 712, -1, 714, -1, -1, -1, -1, - -1, 131, 132, 133, -1, -1, -1, 137, 138, 139, - -1, 141, -1, 143, 144, 145, -1, -1, -1, 5, - 150, 151, 152, -1, 10, 155, -1, 157, -1, 159, - -1, -1, 162, -1, 164, 754, -1, 167, -1, -1, - 170, 171, -1, 173, 174, 31, 176, -1, 178, -1, - -1, -1, -1, 772, 773, -1, 186, -1, -1, -1, - 779, -1, -1, -1, 194, 195, 187, 188, 189, 190, - -1, -1, -1, 792, 195, -1, 795, -1, 797, -1, - 187, 188, 189, 190, -1, -1, -1, -1, 195, -1, - 5, -1, -1, -1, -1, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 824, -1, -1, 827, -1, - -1, -1, -1, -1, -1, -1, 31, -1, 104, -1, - 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 850, 851, 852, -1, -1, -1, -1, -1, -1, - -1, 860, 861, -1, -1, 131, 132, 133, -1, -1, - -1, 137, 138, 139, -1, 141, -1, 143, 144, 145, - -1, -1, -1, -1, 150, 151, 152, -1, -1, 155, - -1, 157, -1, 159, -1, -1, 162, -1, 164, -1, - -1, 167, -1, -1, 170, 171, -1, 173, 174, 104, - 176, 106, 178, 912, 63, 64, -1, -1, -1, -1, - 186, 70, 71, 72, 73, 74, 75, 76, 194, 195, - -1, -1, -1, -1, 933, -1, 131, 132, 133, -1, - -1, -1, 137, 138, 139, -1, 141, -1, 143, 144, - 145, -1, -1, -1, -1, 150, 151, 152, 957, -1, - 155, -1, 157, -1, 159, -1, -1, 162, -1, 164, - -1, -1, 167, 972, -1, 170, 171, -1, 173, 174, - -1, 176, 981, 178, -1, 984, -1, -1, 987, -1, - -1, 186, -1, -1, -1, -1, -1, -1, -1, 194, - -1, -1, -1, 1002, -1, -1, -1, -1, -1, -1, - -1, -1, 1011, 1012, 1013, 1014, -1, 1016, -1, -1, - -1, -1, -1, -1, 3, 4, 5, -1, 7, 8, - 9, 10, -1, -1, -1, -1, -1, -1, 187, 188, - 189, 190, -1, -1, -1, -1, 195, -1, -1, -1, - -1, 30, 31, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1077, -1, - -1, -1, -1, 1082, 63, 64, 65, 66, 67, 68, - 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 80, -1, -1, 83, -1, -1, -1, -1, 88, - -1, 1110, -1, -1, -1, -1, -1, 96, -1, -1, - -1, 100, 101, -1, -1, 104, -1, 106, -1, -1, - -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, -1, 161, 162, 163, 164, -1, 166, 167, -1, - 169, 170, 171, -1, 173, 174, 175, 176, 177, 178, - 179, -1, -1, -1, -1, -1, 185, 186, 187, -1, - -1, -1, -1, -1, -1, 194, -1, 196, 3, 4, - 5, -1, 7, 8, 9, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 30, 31, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, - 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 80, 63, 64, 83, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, - -1, 96, -1, -1, -1, 100, 101, -1, -1, 104, - -1, 106, -1, -1, -1, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, 162, 163, 164, - -1, 166, 167, -1, 169, 170, 171, -1, 173, 174, - 175, 176, 177, 178, 179, -1, -1, -1, -1, -1, - 185, 186, 187, -1, -1, -1, -1, -1, -1, 194, - -1, 196, 3, 4, 5, -1, 7, 8, 9, 10, - 187, 188, 189, 190, -1, -1, -1, -1, 195, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, - 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 63, 64, 65, 66, 67, 68, 69, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, - 63, 64, 83, -1, -1, -1, -1, 70, 71, 72, - 73, 74, 75, 76, -1, -1, -1, -1, -1, 100, - 101, -1, -1, 104, -1, 106, -1, -1, -1, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, 162, 163, 164, -1, 166, 167, -1, 169, 170, - 171, -1, 173, 174, 175, 176, 177, 178, 179, -1, - -1, -1, -1, -1, 185, 186, 187, -1, -1, -1, - -1, -1, -1, 194, -1, 196, 3, 4, 5, -1, - 7, 8, 9, 10, 187, 188, 189, 190, -1, -1, - -1, -1, 195, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 30, 31, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 63, 64, 65, 66, - 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 80, -1, 5, 83, -1, -1, -1, - 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 100, 101, -1, -1, 104, -1, 106, - -1, 31, -1, 110, 111, 112, 113, 114, 115, 116, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, 163, 164, 165, -1, 167, 168, -1, 170, 171, + 172, -1, 174, 175, 176, 177, 178, 179, 180, -1, + -1, 105, -1, 107, 186, 187, 188, -1, -1, -1, + -1, -1, -1, 195, -1, 197, 3, 4, 5, -1, + 7, 8, 9, 10, -1, -1, -1, -1, 132, 133, + 134, -1, -1, -1, 138, 139, 140, -1, 142, -1, + 144, 145, 146, 30, 31, -1, -1, 151, 152, 153, + -1, -1, 156, -1, 158, -1, 160, -1, -1, 163, + -1, 165, -1, -1, 168, -1, -1, 171, 172, -1, + 174, 175, -1, 177, -1, 179, 63, 64, 65, 66, + 67, 68, 69, 187, -1, -1, -1, -1, -1, -1, + -1, 195, 196, -1, 81, -1, 5, 84, -1, -1, + -1, 10, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 101, 102, -1, -1, 105, -1, + 107, -1, 31, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, 162, 163, 164, -1, 166, - 167, -1, 169, 170, 171, -1, 173, 174, 175, 176, - 177, 178, 179, -1, 104, -1, 106, -1, 185, 186, - 187, -1, -1, -1, -1, -1, -1, 194, 195, 3, + 157, 158, 159, 160, -1, 162, 163, 164, 165, -1, + 167, 168, -1, 170, 171, 172, -1, 174, 175, 176, + 177, 178, 179, 180, -1, -1, 105, -1, 107, 186, + 187, 188, -1, -1, -1, -1, -1, -1, 195, -1, + 197, 3, 4, 5, -1, 7, 8, 9, 10, -1, + -1, -1, -1, 132, 133, 134, -1, -1, -1, 138, + 139, 140, -1, 142, -1, 144, 145, 146, 30, 31, + -1, -1, 151, 152, 153, -1, -1, 156, -1, 158, + -1, 160, -1, -1, 163, -1, 165, -1, -1, 168, + -1, -1, 171, 172, -1, 174, 175, -1, 177, -1, + 179, 63, 64, 65, 66, 67, 68, 69, 187, -1, + -1, -1, -1, -1, -1, -1, 195, 196, -1, 81, + 5, -1, 84, -1, -1, 10, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, + 102, -1, -1, 105, -1, 107, 31, -1, -1, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, 163, 164, 165, -1, 167, 168, -1, 170, 171, + 172, -1, 174, 175, 176, 177, 178, 179, 180, -1, + 105, -1, 107, -1, 186, 187, 188, -1, -1, -1, + -1, -1, -1, 195, 196, 3, 4, 5, -1, 7, + 8, 9, 10, -1, -1, -1, -1, 132, 133, 134, + -1, -1, -1, 138, 139, 140, -1, 142, -1, 144, + 145, 146, 30, 31, -1, -1, 151, 152, 153, -1, + -1, 156, -1, 158, -1, 160, -1, -1, 163, -1, + 165, -1, -1, 168, -1, -1, 171, 172, -1, 174, + 175, -1, 177, -1, 179, 63, 64, 65, 66, 67, + 68, 69, 187, -1, -1, -1, -1, -1, -1, -1, + 195, 196, -1, 81, 5, -1, 84, -1, -1, 10, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 101, 102, -1, -1, 105, -1, 107, + 31, -1, -1, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, 163, 164, 165, -1, 167, + 168, -1, 170, 171, 172, -1, 174, 175, 176, 177, + 178, 179, 180, -1, 105, -1, 107, -1, 186, 187, + 188, -1, -1, -1, -1, -1, -1, 195, 196, 3, 4, 5, -1, 7, 8, 9, 10, -1, -1, -1, - -1, 131, 132, 133, -1, -1, -1, 137, 138, 139, - -1, 141, -1, 143, 144, 145, 30, 31, -1, -1, - 150, 151, 152, -1, -1, 155, -1, 157, -1, 159, - -1, -1, 162, -1, 164, -1, -1, 167, -1, -1, - 170, 171, -1, 173, 174, -1, 176, -1, 178, 63, - 64, 65, 66, 67, 68, 69, 186, -1, -1, -1, - -1, -1, -1, -1, 194, -1, 80, 63, 64, 83, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, -1, -1, -1, -1, -1, 100, 101, -1, -1, - 104, -1, 106, -1, -1, -1, 110, 111, 112, 113, + -1, 132, 133, 134, -1, -1, -1, 138, 139, 140, + -1, 142, -1, 144, 145, 146, 30, 31, -1, -1, + 151, 152, 153, -1, -1, 156, -1, 158, -1, 160, + -1, -1, 163, -1, 165, -1, -1, 168, -1, -1, + 171, 172, -1, 174, 175, -1, 177, -1, 179, 63, + 64, 65, 66, 67, 68, 69, 187, -1, -1, -1, + -1, -1, -1, -1, 195, -1, -1, 81, 5, -1, + 84, -1, -1, 10, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 101, 102, -1, + -1, 105, -1, 107, 31, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, -1, 161, 162, 163, - 164, -1, 166, 167, -1, 169, 170, 171, -1, 173, - 174, 175, 176, 177, 178, 179, -1, -1, -1, -1, - -1, 185, 186, 187, -1, -1, -1, -1, -1, -1, - 194, 195, 3, 4, 5, -1, 7, 8, 9, 10, - -1, 187, 188, 189, 190, -1, -1, -1, -1, 195, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, - 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 154, 155, 156, 157, 158, 159, 160, -1, 162, 163, + 164, 165, -1, 167, 168, -1, 170, 171, 172, -1, + 174, 175, 176, 177, 178, 179, 180, -1, 105, -1, + 107, -1, 186, 187, 188, -1, -1, -1, -1, -1, + -1, 195, 196, 3, 4, 5, -1, 7, 8, 9, + 10, -1, 12, -1, -1, 132, 133, 134, -1, -1, + -1, 138, 139, 140, -1, 142, -1, 144, 145, 146, + 30, 31, -1, -1, 151, 152, 153, -1, -1, 156, + -1, 158, -1, 160, -1, -1, 163, -1, 165, -1, + -1, 168, -1, 53, 171, 172, -1, 174, 175, -1, + 177, -1, 179, 63, 64, 65, 66, 67, 68, 69, + 187, -1, -1, -1, -1, -1, -1, -1, 195, 63, + 64, 81, -1, -1, 84, -1, 70, 71, 72, 73, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, 101, 102, -1, -1, 105, -1, 107, -1, -1, + -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, 163, 164, 165, -1, 167, 168, -1, + 170, 171, 172, -1, 174, 175, 176, 177, 178, 179, + 180, -1, -1, -1, -1, -1, 186, 187, 188, -1, + -1, -1, 3, 4, 5, 195, 7, 8, 9, 10, + -1, -1, -1, -1, 188, 189, 190, 191, -1, -1, + 194, -1, 196, -1, -1, -1, -1, -1, -1, 30, + 31, -1, -1, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, 66, 67, 68, 69, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, - -1, -1, 83, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, -1, -1, 100, - 101, -1, -1, 104, -1, 106, -1, -1, -1, 110, + -1, -1, -1, -1, -1, -1, -1, 63, 64, -1, + 81, -1, -1, 84, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + 101, 102, -1, -1, 105, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, 162, 163, 164, -1, 166, 167, -1, 169, 170, - 171, -1, 173, 174, 175, 176, 177, 178, 179, -1, - -1, -1, -1, -1, 185, 186, 187, -1, -1, -1, - -1, -1, -1, 194, 195, 3, 4, 5, -1, 7, - 8, 9, 10, -1, 12, -1, -1, 187, 188, 189, - 190, -1, -1, -1, -1, 195, -1, -1, -1, -1, - -1, -1, 30, 31, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 63, 64, 65, 66, 67, - 68, 69, -1, -1, -1, -1, -1, -1, -1, 63, - 64, -1, 80, -1, -1, 83, 70, 71, 72, 73, - 74, 75, 76, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 100, 101, -1, -1, 104, -1, 106, -1, - -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, -1, 161, 162, 163, 164, -1, 166, 167, - -1, 169, 170, 171, -1, 173, 174, 175, 176, 177, - 178, 179, -1, -1, -1, -1, -1, 185, 186, 187, - -1, -1, -1, 3, 4, 5, 194, 7, 8, 9, - 10, -1, -1, 187, 188, 189, 190, -1, -1, -1, - -1, 195, -1, -1, -1, -1, -1, -1, -1, -1, - 30, 31, -1, -1, 34, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 63, 64, 65, 66, 67, 68, 69, - -1, -1, -1, -1, -1, -1, -1, 63, 64, -1, - 80, -1, -1, 83, 70, 71, 72, 73, 74, 75, - 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 100, 101, -1, -1, 104, -1, 106, -1, -1, -1, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - -1, 161, 162, 163, 164, -1, 166, 167, -1, 169, - 170, 171, -1, 173, 174, 175, 176, 177, 178, 179, - -1, -1, -1, -1, -1, 185, 186, 187, -1, -1, - -1, 3, 4, 5, 194, 7, 8, 9, 10, -1, - 12, 187, 188, 189, 190, -1, -1, -1, -1, 195, - -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + -1, 162, 163, 164, 165, -1, 167, 168, -1, 170, + 171, 172, -1, 174, 175, 176, 177, 178, 179, 180, + -1, -1, -1, -1, -1, 186, 187, 188, -1, -1, + -1, 3, 4, 5, 195, 7, 8, 9, 10, -1, + 12, -1, 188, 189, 190, 191, -1, -1, 194, -1, + 196, -1, -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, 66, 67, 68, 69, -1, -1, - -1, -1, -1, -1, -1, 63, 64, -1, 80, -1, - -1, 83, 70, 71, 72, 73, 74, 75, 76, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, - -1, -1, 104, -1, 106, -1, -1, -1, 110, 111, + -1, -1, -1, -1, -1, -1, 63, 64, -1, 81, + -1, -1, 84, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, -1, -1, -1, -1, 101, + 102, -1, -1, 105, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, -1, 161, - 162, 163, 164, -1, 166, 167, -1, 169, 170, 171, - -1, 173, 174, 175, 176, 177, 178, 179, -1, -1, - -1, -1, -1, 185, 186, 187, -1, -1, -1, 3, - 4, 5, 194, 7, 8, 9, 10, -1, -1, 187, - 188, 189, 190, -1, -1, -1, -1, 195, -1, -1, - -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, 163, 164, 165, -1, 167, 168, -1, 170, 171, + 172, -1, 174, 175, 176, 177, 178, 179, 180, -1, + -1, -1, -1, -1, 186, 187, 188, -1, -1, -1, + 3, 4, 5, 195, 7, 8, 9, 10, -1, -1, + -1, 188, 189, 190, 191, -1, -1, 194, -1, 196, + -1, -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, - 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 80, 5, -1, 83, - -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 100, 101, -1, -1, - 104, -1, 106, 31, -1, -1, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, -1, 161, 162, 163, - 164, -1, 166, 167, -1, 169, 170, 171, 96, 173, - 174, 175, 176, 177, 178, 179, 104, -1, 106, -1, - 5, 185, 186, 187, -1, 10, -1, -1, -1, -1, - 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 131, 132, 133, 31, -1, -1, 137, - 138, 139, -1, 141, -1, 143, 144, 145, -1, -1, - -1, -1, 150, 151, 152, -1, -1, 155, -1, 157, - -1, 159, -1, -1, 162, -1, 164, -1, -1, 167, - -1, -1, 170, 171, -1, 173, 174, -1, 176, -1, - 178, -1, -1, -1, -1, -1, -1, -1, 186, -1, - -1, -1, -1, -1, -1, -1, 194, -1, -1, -1, - -1, 96, -1, -1, -1, 63, 64, -1, -1, 104, - -1, 106, 70, 71, 72, 73, 74, 75, 76, -1, - 63, 64, -1, -1, -1, -1, -1, 70, 71, 72, - 73, 74, 75, 76, -1, -1, 131, 132, 133, -1, - -1, -1, 137, 138, 139, -1, 141, -1, 143, 144, - 145, -1, -1, -1, -1, 150, 151, 152, -1, -1, - 155, -1, 157, -1, 159, -1, -1, 162, -1, 164, - -1, -1, 167, -1, -1, 170, 171, -1, 173, 174, - -1, 176, -1, 178, -1, 4, 5, 6, -1, -1, - -1, 186, 11, -1, -1, -1, 15, -1, 17, 194, - 19, 20, 21, 22, 23, 24, -1, 26, 27, 28, - 29, 30, 31, 32, 33, -1, 35, 36, 37, -1, - -1, -1, -1, 42, -1, -1, 45, -1, -1, 187, - 188, 189, 190, 52, 53, 54, 55, 56, 57, -1, - -1, -1, 61, 62, 187, 188, 189, 190, -1, -1, - -1, -1, 195, -1, -1, -1, -1, -1, 77, 78, - 79, 80, 81, 82, -1, -1, -1, -1, -1, 88, - 89, 90, 91, 92, 93, 94, 95, -1, 97, 98, - 99, -1, -1, 102, 103, -1, 105, -1, 107, 108, - -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, - -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, - 75, 76, 131, 132, 133, -1, -1, -1, -1, 138, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 156, -1, -1, - -1, 160, -1, 4, 5, 6, 165, -1, -1, 168, - 11, -1, -1, 172, 15, -1, 17, -1, 19, 20, - 21, 22, 23, 24, -1, 26, 27, 28, 29, 30, - 31, 32, 33, -1, 35, 36, 37, -1, -1, -1, - -1, 42, 43, 44, 45, -1, -1, -1, -1, -1, - -1, 52, 53, 54, 55, 56, 57, -1, -1, -1, - 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 77, 78, 79, 80, - 81, 82, 187, 188, 189, 190, -1, 88, 89, 90, - 195, -1, 93, 94, 95, -1, 97, 98, 99, -1, - -1, 102, -1, -1, 105, -1, 107, 108, -1, -1, - -1, -1, -1, -1, -1, -1, 63, 64, -1, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, - 131, 132, 133, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 156, -1, -1, -1, 160, - -1, 4, 5, 6, 165, -1, -1, 168, 11, -1, - -1, 172, 15, -1, 17, -1, 19, 20, 21, 22, - 23, 24, -1, 26, 27, 28, 29, 30, 31, 32, - 33, -1, 35, 36, 37, 38, -1, -1, -1, 42, - 43, -1, 45, -1, -1, -1, -1, -1, -1, 52, - 53, 54, 55, 56, 57, 63, 64, -1, 61, 62, - -1, -1, 70, 71, 72, 73, 74, 75, 76, -1, - -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, - 187, 188, 189, 190, -1, 88, 89, 90, 195, -1, - 93, 94, 95, -1, 97, 98, 99, -1, -1, 102, - 63, 64, 105, -1, 107, 108, -1, 70, 71, 72, - 73, 74, 75, 76, 63, 64, -1, -1, -1, -1, - -1, 70, 71, 72, 73, 74, 75, 76, 131, 132, - 133, 63, 64, -1, -1, 138, -1, -1, 70, 71, - 72, 73, 74, 75, 76, -1, -1, -1, -1, -1, - -1, -1, -1, 156, -1, -1, -1, 160, -1, -1, - -1, -1, 165, 63, 64, 168, -1, -1, -1, 172, - 70, 71, 72, 73, 74, 75, 76, -1, -1, 187, - 188, 189, 190, 63, 64, -1, -1, 195, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 63, 64, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 187, 188, 189, 190, -1, -1, - -1, -1, 195, -1, -1, -1, -1, -1, 187, 188, - 189, 190, -1, -1, -1, -1, 195, -1, -1, -1, - -1, -1, -1, -1, -1, 187, 188, 189, 190, 63, - 64, -1, -1, 195, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 187, 188, 189, - 190, 63, 64, -1, -1, 195, -1, -1, 70, 71, - 72, 73, 74, 75, 76, -1, -1, 187, 188, 189, - 190, -1, -1, -1, -1, 195, -1, -1, -1, -1, - -1, 187, 188, 189, 190, 63, 64, -1, -1, 195, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 63, - 64, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 63, 64, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, -1, -1, 187, 188, 189, 190, -1, -1, -1, - -1, 195, -1, -1, -1, -1, -1, 187, 188, 189, - 190, 63, 64, -1, -1, 195, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 187, 188, 189, 190, 63, - 64, -1, -1, 195, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, -1, -1, 187, - 188, 189, 190, -1, -1, -1, -1, 195, -1, -1, - -1, -1, -1, 187, 188, 189, 190, -1, -1, -1, - -1, 195, -1, -1, -1, -1, -1, 187, 188, 189, - 190, -1, -1, -1, -1, 195, -1, -1, -1, -1, - -1, 187, 188, 189, 190, 63, 64, -1, -1, 195, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 63, - 64, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, -1, -1, 187, 188, 189, 190, 63, - 64, -1, -1, 195, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 187, 188, 189, 190, -1, -1, -1, - -1, 195, -1, -1, -1, -1, -1, 187, 188, 189, - 190, 63, 64, -1, -1, 195, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 63, 64, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 63, - 64, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, -1, -1, 187, - 188, 189, 190, -1, -1, -1, -1, 195, -1, -1, - -1, -1, -1, 187, 188, 189, 190, 63, 64, -1, - -1, 195, -1, -1, 70, 71, 72, 73, 74, 75, - 76, -1, -1, 187, 188, 189, 190, 63, 64, -1, - -1, 195, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 63, 64, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 187, 188, 189, 190, -1, - -1, -1, -1, 195, -1, -1, -1, -1, -1, 187, - 188, 189, 190, -1, -1, -1, -1, 195, -1, -1, - -1, -1, -1, 187, 188, 189, 190, -1, -1, -1, - -1, 195, -1, -1, -1, -1, -1, 187, 188, 189, - 190, 63, 64, -1, -1, 195, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 63, 64, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, -1, - -1, 187, 188, 189, 190, 63, 64, -1, -1, 195, - -1, -1, 70, 71, 72, 73, 74, 75, 76, -1, - -1, 187, 188, 189, 190, -1, -1, -1, -1, 195, - -1, -1, -1, -1, -1, 187, 188, 189, 190, 63, - 64, -1, -1, 195, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 63, 64, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 63, 64, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 187, 188, 189, 190, -1, - -1, -1, -1, 195, -1, -1, -1, -1, -1, 187, - 188, 189, 190, 63, 64, -1, -1, 195, -1, -1, - 70, 71, 72, 73, 74, 75, 76, -1, -1, 187, - 188, 189, 190, 63, 64, -1, -1, 195, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 63, 64, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, -1, -1, 187, 188, 189, 190, -1, -1, -1, - -1, 195, -1, -1, -1, -1, -1, 187, 188, 189, - 190, -1, -1, -1, -1, 195, -1, -1, -1, -1, - -1, 187, 188, 189, 190, -1, -1, -1, -1, 195, - -1, -1, -1, -1, -1, 187, 188, 189, 190, 63, - 64, -1, -1, 195, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 187, 188, 189, - 190, 63, 64, -1, -1, 195, -1, -1, 70, 71, - 72, 73, 74, 75, 76, -1, -1, 187, 188, 189, - 190, -1, -1, -1, -1, 195, -1, -1, -1, -1, - -1, 187, 188, 189, 190, 63, 64, -1, -1, 195, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 63, - 64, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 63, 64, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, -1, -1, 187, 188, 189, 190, -1, -1, -1, - -1, 195, -1, -1, -1, -1, -1, 187, 188, 189, - 190, 63, 64, -1, -1, 195, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 187, 188, 189, 190, 63, - 64, -1, -1, 195, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, -1, -1, 187, - 188, 189, 190, -1, -1, -1, -1, 195, -1, -1, - -1, -1, -1, 187, 188, 189, 190, -1, -1, -1, - -1, 195, -1, -1, -1, -1, -1, 187, 188, 189, - 190, -1, -1, -1, -1, 195, -1, -1, -1, -1, - -1, 187, 188, 189, 190, 63, 64, 193, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 63, - 64, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, -1, -1, 187, 188, 189, 190, 63, - 64, 193, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 187, 188, 189, 190, -1, -1, 193, - -1, -1, -1, -1, -1, -1, -1, 187, 188, 189, - 190, 63, 64, 193, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 63, 64, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 63, + 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, + -1, -1, -1, -1, -1, 63, 64, -1, 81, -1, + -1, 84, 70, 71, 72, 73, 74, 75, 76, 77, + -1, -1, -1, -1, -1, -1, -1, -1, 101, 102, + -1, -1, 105, -1, 107, -1, -1, -1, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, + 163, 164, 165, -1, 167, 168, -1, 170, 171, 172, + -1, 174, 175, 176, 177, 178, 179, 180, -1, -1, + -1, 5, -1, 186, 187, 188, 10, -1, -1, -1, + -1, -1, 195, -1, -1, -1, -1, -1, -1, -1, + 188, 189, 190, 191, -1, -1, -1, 31, 196, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5, -1, -1, -1, -1, 10, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, + -1, 105, -1, 107, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 132, 133, + 134, -1, -1, -1, 138, 139, 140, -1, 142, -1, + 144, 145, 146, -1, -1, 97, -1, 151, 152, 153, + -1, -1, 156, 105, 158, 107, 160, -1, -1, 163, + -1, 165, -1, -1, 168, -1, -1, 171, 172, -1, + 174, 175, -1, 177, -1, 179, -1, -1, -1, -1, + 132, 133, 134, 187, -1, -1, 138, 139, 140, -1, + 142, 195, 144, 145, 146, -1, -1, -1, -1, 151, + 152, 153, -1, -1, 156, -1, 158, -1, 160, -1, + -1, 163, -1, 165, -1, -1, 168, -1, -1, 171, + 172, -1, 174, 175, -1, 177, -1, 179, -1, 4, + 5, 6, -1, -1, -1, 187, 11, -1, -1, -1, + 15, -1, 17, 195, 19, 20, 21, 22, 23, 24, + -1, 26, 27, 28, 29, 30, 31, 32, 33, -1, + 35, 36, 37, -1, -1, -1, -1, 42, -1, -1, + 45, -1, -1, -1, -1, -1, -1, 52, 53, 54, + 55, 56, 57, -1, -1, -1, 61, 62, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 78, 79, 80, 81, 82, 83, -1, + -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, + 95, 96, -1, 98, 99, 100, -1, -1, 103, 104, + 63, 106, -1, 108, 109, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 132, 133, 134, + -1, -1, -1, -1, 139, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 157, -1, -1, -1, 161, -1, 4, 5, + 6, 166, -1, -1, 169, 11, -1, -1, 173, 15, + -1, 17, -1, 19, 20, 21, 22, 23, 24, -1, + 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, + 36, 37, -1, -1, -1, -1, 42, 43, 44, 45, + -1, -1, -1, -1, -1, -1, 52, 53, 54, 55, + 56, 57, -1, -1, -1, 61, 62, -1, -1, -1, + -1, -1, -1, -1, -1, 188, 189, 190, 191, -1, + -1, -1, 78, 79, 80, 81, 82, 83, -1, -1, + -1, -1, -1, 89, 90, 91, -1, -1, 94, 95, + 96, -1, 98, 99, 100, -1, -1, 103, -1, -1, + 106, -1, 108, 109, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 132, 133, 134, -1, + -1, -1, -1, 139, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 157, -1, -1, -1, 161, -1, 4, 5, 6, + 166, -1, -1, 169, 11, -1, -1, 173, 15, -1, + 17, -1, 19, 20, 21, 22, 23, 24, -1, 26, + 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, + 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, + -1, -1, -1, -1, -1, 52, 53, 54, 55, 56, + 57, 63, 64, -1, 61, 62, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, 78, 79, 80, 81, 82, 83, -1, -1, -1, + -1, -1, 89, 90, 91, -1, -1, 94, 95, 96, + -1, 98, 99, 100, -1, -1, 103, 63, 64, 106, + -1, 108, 109, -1, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 132, 133, 134, 63, 64, + -1, -1, 139, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, + 157, -1, -1, -1, 161, -1, -1, -1, -1, 166, + 63, 64, 169, -1, -1, -1, 173, 70, 71, 72, + 73, 74, 75, 76, 77, -1, 188, 189, 190, 191, + 63, 64, -1, -1, 196, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, 63, 64, -1, -1, -1, + -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 188, 189, 190, 191, 63, 64, -1, -1, + 196, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 188, 189, 190, 191, 63, 64, -1, + -1, 196, -1, -1, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 188, 189, 190, 191, 63, + 64, -1, -1, 196, -1, -1, 70, 71, 72, 73, + 74, 75, 76, 77, -1, 188, 189, 190, 191, -1, + -1, -1, -1, 196, -1, -1, -1, -1, -1, -1, + 188, 189, 190, 191, 63, 64, -1, -1, 196, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 188, 189, 190, 191, 63, 64, -1, -1, 196, + -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 188, 189, 190, 191, 63, 64, -1, -1, + 196, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 188, 189, 190, 191, 63, 64, + -1, -1, 196, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, 63, 64, -1, -1, -1, -1, -1, + 70, 71, 72, 73, 74, 75, 76, 77, -1, 188, + 189, 190, 191, 63, 64, -1, -1, 196, -1, -1, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 188, 189, 190, 191, 63, 64, -1, -1, 196, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 188, 189, 190, 191, 63, 64, -1, -1, 196, + -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 188, 189, 190, 191, -1, -1, -1, + -1, 196, -1, -1, -1, -1, -1, -1, 188, 189, + 190, 191, 63, 64, -1, -1, 196, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, 188, 189, + 190, 191, 63, 64, -1, -1, 196, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 188, + 189, 190, 191, 63, 64, -1, -1, 196, -1, -1, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 188, 189, 190, 191, 63, 64, -1, -1, 196, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, 63, 64, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, -1, -1, 187, - 188, 189, 190, -1, -1, 193, -1, -1, -1, -1, - -1, -1, -1, 187, 188, 189, 190, 63, 64, 193, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, -1, -1, 187, 188, 189, 190, 63, 64, 193, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 188, 189, 190, + 191, 63, 64, -1, -1, 196, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, -1, 188, 189, 190, + 191, 63, 64, -1, -1, 196, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 188, 189, + 190, 191, 63, 64, -1, -1, 196, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 188, + 189, 190, 191, -1, -1, -1, -1, 196, -1, -1, + -1, -1, -1, -1, 188, 189, 190, 191, 63, 64, + -1, -1, 196, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 188, 189, 190, 191, + 63, 64, -1, -1, 196, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, 188, 189, 190, 191, + 63, 64, -1, -1, 196, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 188, 189, 190, + 191, 63, 64, -1, -1, 196, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, 63, 64, -1, -1, + -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 188, 189, 190, 191, 63, 64, -1, + -1, 196, -1, -1, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 188, 189, 190, 191, 63, + 64, -1, -1, 196, -1, -1, 70, 71, 72, 73, + 74, 75, 76, 77, -1, 188, 189, 190, 191, 63, + 64, -1, -1, 196, -1, -1, 70, 71, 72, 73, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 188, 189, 190, 191, + -1, -1, -1, -1, 196, -1, -1, -1, -1, -1, + -1, 188, 189, 190, 191, 63, 64, -1, -1, 196, + -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 188, 189, 190, 191, 63, 64, -1, -1, + 196, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 188, 189, 190, 191, 63, 64, + -1, -1, 196, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, -1, 188, 189, 190, 191, 63, 64, + -1, -1, 196, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, 63, 64, -1, -1, -1, -1, -1, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 188, 189, 190, 191, 63, 64, -1, -1, 196, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 188, 189, 190, 191, 63, 64, -1, -1, 196, + -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 188, 189, 190, 191, 63, 64, -1, + -1, 196, -1, -1, 70, 71, 72, 73, 74, 75, + 76, 77, -1, 188, 189, 190, 191, -1, -1, -1, + -1, 196, -1, -1, -1, -1, -1, -1, 188, 189, + 190, 191, 63, 64, -1, -1, 196, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 188, + 189, 190, 191, 63, 64, -1, -1, 196, -1, -1, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 188, 189, 190, 191, 63, 64, -1, -1, 196, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 188, 189, 190, 191, 63, 64, -1, -1, + 196, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, 63, 64, -1, -1, -1, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, -1, 188, 189, 190, + 191, 63, 64, -1, -1, 196, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 188, 189, + 190, 191, 63, 64, -1, -1, 196, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 188, + 189, 190, 191, 63, 64, -1, -1, 196, -1, -1, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 188, 189, 190, 191, -1, -1, -1, -1, 196, + -1, -1, -1, -1, -1, -1, 188, 189, 190, 191, + 63, 64, -1, -1, 196, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, 188, 189, 190, 191, + 63, 64, -1, -1, 196, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 188, 189, 190, + 191, 63, 64, -1, -1, 196, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 188, 189, + 190, 191, 63, 64, -1, -1, 196, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, 63, 64, -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 63, 64, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 187, 188, 189, 190, -1, - -1, 193, -1, -1, -1, -1, -1, -1, -1, 187, - 188, 189, 190, -1, -1, 193, -1, -1, -1, -1, - -1, -1, -1, 187, 188, 189, 190, -1, -1, 193, - -1, -1, -1, -1, -1, -1, -1, 187, 188, 189, - 190, 63, 64, 193, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 63, 64, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, -1, - -1, 187, 188, 189, 190, 63, 64, 193, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, -1, - -1, 187, 188, 189, 190, -1, -1, 193, -1, -1, - -1, -1, -1, -1, -1, 187, 188, 189, 190, 63, - 64, 193, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 63, 64, -1, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 188, 189, 190, 191, 63, + 64, -1, -1, 196, -1, -1, 70, 71, 72, 73, + 74, 75, 76, 77, -1, 188, 189, 190, 191, 63, + 64, -1, -1, 196, -1, -1, 70, 71, 72, 73, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 188, 189, 190, 191, + 63, 64, -1, -1, 196, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 188, 189, 190, + 191, -1, -1, -1, -1, 196, -1, -1, -1, -1, + -1, -1, 188, 189, 190, 191, 63, 64, -1, -1, + 196, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 188, 189, 190, 191, 63, 64, + 194, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, -1, 188, 189, 190, 191, 63, 64, + 194, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 188, 189, 190, 191, 63, + 64, 194, -1, -1, -1, -1, 70, 71, 72, 73, + 74, 75, 76, 77, 63, 64, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 188, 189, 190, 191, 63, 64, 194, -1, -1, + -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 188, 189, 190, 191, 63, 64, 194, -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 63, 64, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 187, 188, 189, 190, -1, - -1, 193, -1, -1, -1, -1, -1, -1, -1, 187, - 188, 189, 190, 63, 64, 193, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, -1, -1, 187, - 188, 189, 190, 63, 64, 193, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 63, 64, -1, + 76, 77, -1, 188, 189, 190, 191, 63, 64, 194, -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, -1, -1, 187, 188, 189, 190, -1, -1, 193, - -1, -1, -1, -1, -1, -1, -1, 187, 188, 189, - 190, -1, -1, 193, -1, -1, -1, -1, -1, -1, - -1, 187, 188, 189, 190, -1, -1, 193, -1, -1, - -1, -1, -1, -1, -1, 187, 188, 189, 190, 63, - 64, 193, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 187, 188, 189, - 190, 63, 64, 193, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, -1, -1, 187, 188, 189, - 190, -1, -1, 193, -1, -1, -1, -1, -1, -1, - -1, 187, 188, 189, 190, 63, 64, 193, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 63, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 188, 189, 190, 191, -1, -1, + 194, -1, -1, -1, -1, -1, -1, -1, -1, 188, + 189, 190, 191, 63, 64, 194, -1, -1, -1, -1, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 188, 189, 190, 191, 63, 64, 194, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 188, 189, 190, 191, 63, 64, 194, -1, + -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, -1, 188, 189, 190, 191, 63, 64, 194, -1, + -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, 63, 64, -1, -1, -1, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 188, 189, + 190, 191, 63, 64, 194, -1, -1, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 188, + 189, 190, 191, 63, 64, 194, -1, -1, -1, -1, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 188, 189, 190, 191, 63, 64, 194, -1, -1, + -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, + -1, 188, 189, 190, 191, -1, -1, 194, -1, -1, + -1, -1, -1, -1, -1, -1, 188, 189, 190, 191, + 63, 64, 194, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 188, 189, 190, + 191, 63, 64, 194, -1, -1, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 188, 189, + 190, 191, 63, 64, 194, -1, -1, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 188, 189, 190, 191, 63, 64, 194, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, 63, 64, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 63, 64, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 63, -1, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, -1, -1, 187, 188, 189, 190, -1, -1, 193, - -1, -1, -1, -1, -1, -1, -1, 187, 188, 189, - 190, -1, -1, 193, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 187, 188, 189, 190, -1, - -1, 193, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 187, - 188, 189, 190, -1, -1, 193, -1, -1, -1, -1, - -1, -1, -1, 187, 188, 189, 190, -1, -1, 193, - -1, -1, -1, -1, -1, -1, -1, 187, 188, 189, - 190, -1, -1, 193, -1, -1, -1, -1, -1, -1, - -1, 187, 188, 189, 190 + 74, 75, 76, 77, -1, 188, 189, 190, 191, 63, + 64, 194, -1, -1, -1, -1, 70, 71, 72, 73, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 188, 189, 190, 191, + 63, 64, 194, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 188, 189, 190, + 191, 63, 64, 194, -1, -1, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 188, + 189, 190, 191, -1, -1, 194, -1, -1, -1, -1, + -1, -1, -1, -1, 188, 189, 190, 191, 63, 64, + 194, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, -1, 188, 189, 190, 191, 63, 64, + 194, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 188, 189, 190, 191, 63, + 64, 194, -1, -1, -1, -1, 70, 71, 72, 73, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 188, 189, 190, 191, + -1, -1, 194, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 188, 189, 190, 191, -1, -1, 194, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 188, 189, 190, 191, -1, -1, 194, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 188, 189, 190, 191 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 180, 181, 182, 183, 184, 198, 4, 5, 6, + 0, 181, 182, 183, 184, 185, 199, 4, 5, 6, 11, 15, 17, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 42, - 45, 52, 53, 54, 55, 56, 57, 61, 62, 77, - 78, 79, 80, 81, 82, 88, 89, 90, 93, 94, - 95, 97, 98, 99, 102, 105, 107, 108, 131, 132, - 133, 138, 156, 160, 165, 168, 172, 199, 200, 202, - 203, 210, 211, 213, 214, 218, 230, 231, 236, 242, - 249, 257, 265, 268, 272, 275, 281, 3, 4, 5, + 45, 52, 53, 54, 55, 56, 57, 61, 62, 78, + 79, 80, 81, 82, 83, 89, 90, 91, 94, 95, + 96, 98, 99, 100, 103, 106, 108, 109, 132, 133, + 134, 139, 157, 161, 166, 169, 173, 200, 201, 204, + 205, 212, 213, 215, 216, 220, 232, 233, 238, 244, + 251, 259, 267, 270, 274, 277, 283, 3, 4, 5, 7, 8, 9, 10, 30, 31, 63, 64, 65, 66, - 67, 68, 69, 80, 83, 100, 101, 104, 106, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, - 162, 163, 164, 166, 167, 169, 170, 171, 173, 174, - 175, 176, 177, 178, 179, 185, 186, 187, 194, 216, - 217, 219, 225, 227, 230, 231, 194, 216, 202, 230, - 231, 236, 0, 75, 194, 75, 194, 250, 269, 273, - 4, 7, 228, 228, 228, 34, 219, 204, 205, 216, - 232, 233, 232, 216, 28, 7, 258, 266, 219, 58, - 60, 61, 196, 304, 208, 216, 219, 4, 5, 229, - 219, 216, 219, 216, 219, 4, 5, 292, 293, 10, - 187, 188, 226, 227, 294, 228, 88, 96, 196, 216, - 219, 305, 88, 96, 109, 305, 305, 87, 219, 224, - 12, 53, 224, 224, 59, 88, 89, 90, 95, 94, - 219, 211, 218, 216, 216, 216, 109, 194, 194, 194, - 194, 194, 216, 305, 216, 216, 216, 44, 201, 91, - 92, 103, 75, 75, 24, 194, 194, 194, 194, 219, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, 219, 216, - 219, 70, 71, 72, 73, 74, 75, 188, 44, 63, - 64, 70, 71, 72, 73, 74, 75, 76, 187, 188, - 189, 190, 216, 44, 44, 44, 219, 232, 216, 232, - 4, 219, 200, 35, 36, 20, 21, 4, 5, 243, - 244, 4, 5, 245, 246, 216, 219, 234, 235, 216, - 219, 260, 200, 276, 282, 194, 58, 194, 4, 7, - 194, 216, 219, 295, 58, 196, 297, 302, 194, 194, - 193, 193, 193, 194, 194, 193, 227, 227, 193, 219, - 216, 219, 11, 193, 193, 216, 193, 224, 209, 12, - 193, 212, 193, 224, 12, 224, 212, 212, 5, 215, - 215, 215, 195, 219, 216, 193, 193, 193, 193, 43, - 224, 224, 224, 219, 216, 237, 232, 232, 219, 219, - 219, 219, 219, 219, 96, 216, 305, 305, 4, 5, - 222, 223, 222, 223, 224, 219, 219, 219, 219, 219, - 219, 219, 219, 219, 219, 219, 305, 219, 219, 219, - 219, 219, 219, 219, 219, 195, 219, 216, 216, 216, - 216, 216, 219, 219, 216, 219, 195, 219, 219, 216, - 219, 216, 219, 216, 216, 195, 216, 195, 216, 195, - 216, 195, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 305, 216, 232, 232, 216, 219, 216, 216, - 216, 216, 216, 195, 195, 216, 215, 216, 215, 216, - 216, 216, 195, 195, 216, 216, 216, 216, 216, 216, - 216, 221, 220, 219, 219, 219, 219, 219, 219, 219, - 219, 219, 219, 219, 195, 195, 75, 270, 14, 16, - 18, 41, 44, 49, 274, 206, 207, 194, 194, 193, - 194, 194, 193, 193, 43, 259, 14, 16, 18, 41, - 44, 49, 267, 46, 200, 219, 194, 216, 219, 51, - 296, 192, 193, 194, 4, 7, 194, 10, 303, 232, - 232, 4, 5, 219, 219, 232, 232, 293, 10, 226, - 193, 85, 86, 96, 216, 219, 219, 297, 224, 216, - 224, 212, 219, 219, 194, 193, 193, 193, 195, 195, - 216, 219, 216, 219, 219, 219, 203, 193, 212, 212, - 4, 5, 241, 195, 195, 193, 193, 195, 193, 193, - 193, 195, 193, 195, 193, 195, 194, 194, 195, 195, - 193, 193, 212, 193, 195, 195, 195, 195, 195, 193, - 195, 195, 193, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 193, 195, 195, 193, 193, 193, - 195, 193, 193, 195, 193, 195, 195, 195, 195, 195, - 193, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 193, 193, 195, 195, 195, 195, 195, 193, - 195, 195, 195, 195, 195, 195, 193, 195, 193, 193, - 193, 193, 193, 195, 193, 193, 195, 193, 195, 195, - 219, 219, 251, 200, 219, 228, 306, 228, 307, 232, - 232, 244, 232, 232, 246, 235, 43, 261, 277, 49, - 50, 283, 193, 219, 193, 195, 195, 194, 216, 216, - 219, 219, 298, 299, 219, 4, 5, 289, 291, 195, - 195, 194, 194, 193, 193, 195, 195, 219, 84, 84, - 193, 193, 193, 224, 193, 193, 232, 219, 219, 219, - 193, 193, 219, 224, 224, 238, 219, 219, 219, 219, - 219, 216, 96, 216, 195, 195, 219, 219, 224, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 216, 219, - 216, 216, 216, 219, 219, 219, 219, 223, 216, 223, - 216, 216, 219, 16, 44, 271, 193, 193, 195, 195, - 195, 195, 39, 40, 263, 200, 219, 193, 216, 58, - 216, 296, 193, 289, 289, 195, 194, 194, 193, 232, - 232, 219, 219, 193, 305, 305, 216, 216, 216, 219, - 219, 195, 195, 195, 193, 195, 216, 216, 212, 194, - 195, 195, 195, 195, 195, 195, 195, 193, 195, 195, - 195, 195, 212, 195, 195, 195, 195, 195, 193, 195, - 195, 195, 193, 195, 195, 193, 195, 193, 195, 195, - 195, 193, 193, 195, 193, 195, 195, 193, 195, 195, - 195, 12, 228, 228, 260, 43, 38, 278, 195, 219, - 195, 194, 193, 219, 300, 232, 232, 290, 195, 195, - 216, 193, 193, 75, 75, 219, 75, 193, 224, 4, - 5, 247, 248, 216, 219, 219, 216, 219, 219, 216, - 219, 216, 216, 219, 262, 264, 48, 285, 60, 61, - 195, 58, 219, 216, 195, 289, 195, 195, 289, 216, - 216, 216, 216, 195, 216, 219, 194, 194, 193, 195, - 195, 193, 195, 195, 195, 195, 195, 195, 195, 195, - 13, 255, 200, 200, 219, 47, 284, 194, 194, 193, - 195, 301, 75, 195, 195, 248, 239, 219, 219, 252, - 46, 288, 200, 279, 216, 219, 219, 303, 216, 200, - 195, 200, 286, 14, 16, 18, 41, 44, 49, 280, - 193, 195, 193, 195, 289, 25, 44, 240, 253, 200, - 216, 219, 14, 16, 18, 41, 44, 49, 254, 287, - 195, 195, 4, 256, 285 + 67, 68, 69, 81, 84, 101, 102, 105, 107, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, + 163, 164, 165, 167, 168, 170, 171, 172, 174, 175, + 176, 177, 178, 179, 180, 186, 187, 188, 195, 218, + 219, 221, 227, 229, 232, 233, 195, 218, 204, 232, + 233, 238, 0, 75, 195, 75, 195, 252, 271, 275, + 4, 7, 230, 230, 230, 34, 221, 206, 207, 218, + 234, 235, 234, 218, 28, 7, 260, 268, 221, 58, + 60, 61, 197, 306, 210, 218, 221, 4, 5, 231, + 221, 218, 221, 218, 221, 4, 5, 294, 295, 10, + 188, 189, 228, 229, 296, 230, 89, 97, 197, 218, + 221, 307, 89, 97, 110, 307, 307, 88, 221, 226, + 12, 53, 226, 226, 59, 89, 90, 91, 96, 95, + 221, 213, 220, 218, 218, 218, 110, 195, 195, 195, + 195, 195, 218, 307, 218, 218, 218, 44, 202, 92, + 93, 104, 75, 75, 24, 195, 195, 195, 195, 221, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 221, 218, + 221, 70, 71, 72, 73, 74, 75, 76, 189, 44, + 63, 64, 70, 71, 72, 73, 74, 75, 76, 77, + 188, 189, 190, 191, 218, 44, 44, 44, 221, 234, + 218, 234, 4, 221, 201, 35, 36, 20, 21, 4, + 5, 245, 246, 4, 5, 247, 248, 218, 221, 236, + 237, 218, 221, 262, 201, 278, 284, 195, 58, 195, + 4, 7, 195, 218, 221, 297, 58, 197, 299, 304, + 195, 195, 194, 194, 194, 195, 195, 194, 229, 229, + 194, 221, 218, 221, 11, 194, 194, 218, 194, 226, + 211, 12, 194, 214, 194, 226, 12, 226, 214, 214, + 5, 217, 217, 217, 196, 221, 218, 194, 194, 194, + 194, 43, 226, 226, 226, 221, 218, 239, 234, 234, + 221, 221, 221, 221, 221, 221, 97, 218, 307, 307, + 4, 5, 224, 225, 224, 225, 226, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 307, 221, + 221, 221, 221, 221, 221, 221, 221, 196, 221, 218, + 218, 218, 218, 218, 221, 221, 218, 221, 196, 221, + 221, 218, 221, 218, 221, 218, 218, 196, 218, 196, + 218, 196, 218, 196, 218, 218, 218, 218, 218, 218, + 218, 218, 218, 218, 307, 218, 234, 234, 218, 221, + 218, 218, 218, 218, 218, 196, 196, 218, 217, 218, + 217, 218, 218, 218, 196, 196, 218, 218, 218, 218, + 218, 218, 218, 218, 223, 222, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 196, 196, + 75, 272, 14, 16, 18, 41, 44, 49, 276, 208, + 209, 195, 195, 194, 195, 195, 194, 194, 43, 261, + 14, 16, 18, 41, 44, 49, 269, 46, 201, 221, + 195, 218, 221, 51, 298, 193, 194, 195, 4, 7, + 195, 10, 305, 234, 234, 4, 5, 221, 221, 234, + 234, 295, 10, 228, 194, 86, 87, 97, 218, 221, + 221, 299, 226, 218, 226, 214, 221, 221, 195, 194, + 194, 194, 196, 196, 218, 221, 218, 221, 221, 221, + 203, 194, 214, 214, 4, 5, 243, 196, 196, 194, + 194, 196, 194, 194, 194, 196, 194, 196, 194, 196, + 195, 195, 196, 196, 194, 194, 214, 194, 196, 196, + 196, 196, 196, 194, 196, 196, 194, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 194, 196, + 196, 194, 194, 194, 196, 194, 194, 196, 194, 196, + 196, 196, 196, 196, 194, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 194, 194, 196, 196, + 196, 196, 196, 194, 196, 196, 196, 196, 196, 196, + 194, 196, 194, 194, 194, 194, 194, 196, 194, 194, + 196, 194, 196, 196, 221, 221, 253, 201, 221, 230, + 308, 230, 309, 234, 234, 246, 234, 234, 248, 237, + 43, 263, 279, 49, 50, 285, 194, 221, 194, 196, + 196, 195, 218, 218, 221, 221, 300, 301, 221, 4, + 5, 291, 293, 196, 196, 195, 195, 194, 194, 196, + 196, 221, 85, 85, 194, 194, 194, 226, 194, 194, + 234, 221, 221, 221, 194, 194, 205, 221, 226, 226, + 240, 221, 221, 221, 221, 221, 218, 97, 218, 196, + 196, 221, 221, 226, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 218, 221, 218, 218, 218, 221, 221, + 221, 221, 225, 218, 225, 218, 218, 221, 16, 44, + 273, 194, 194, 196, 196, 196, 196, 39, 40, 265, + 201, 221, 194, 218, 58, 218, 298, 194, 291, 291, + 196, 195, 195, 194, 234, 234, 221, 221, 194, 307, + 307, 218, 218, 218, 221, 221, 196, 196, 196, 194, + 196, 218, 218, 214, 195, 196, 196, 196, 196, 196, + 196, 196, 194, 196, 196, 196, 196, 214, 196, 196, + 196, 196, 196, 194, 196, 196, 196, 194, 196, 196, + 194, 196, 194, 196, 196, 196, 194, 194, 196, 194, + 196, 196, 194, 196, 196, 196, 12, 230, 230, 262, + 43, 38, 280, 196, 221, 196, 195, 194, 221, 302, + 234, 234, 292, 196, 196, 218, 194, 194, 75, 75, + 221, 75, 194, 226, 4, 5, 249, 250, 218, 221, + 221, 218, 221, 221, 218, 221, 218, 218, 221, 264, + 266, 48, 287, 60, 61, 196, 58, 221, 218, 196, + 291, 196, 196, 291, 218, 218, 218, 218, 196, 218, + 221, 195, 195, 194, 196, 196, 194, 196, 196, 196, + 196, 196, 196, 196, 196, 13, 257, 201, 201, 221, + 47, 286, 195, 195, 194, 196, 303, 75, 196, 196, + 250, 241, 221, 221, 254, 46, 290, 201, 281, 218, + 221, 221, 305, 218, 201, 196, 201, 288, 14, 16, + 18, 41, 44, 49, 282, 194, 196, 194, 196, 291, + 25, 44, 242, 255, 201, 218, 221, 14, 16, 18, + 41, 44, 49, 256, 289, 196, 196, 4, 258, 287 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 197, 198, 198, 198, 198, 198, 199, 200, 201, - 200, 202, 202, 202, 202, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 204, 203, 205, 203, 203, 203, 203, 203, 203, 203, - 206, 203, 207, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 208, 203, 209, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 210, 210, 210, - 210, 210, 211, 211, 211, 211, 211, 211, 212, 212, - 213, 213, 213, 213, 213, 214, 214, 215, 215, 216, - 216, 216, 216, 216, 216, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 218, 218, 220, 219, - 221, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 0, 198, 199, 199, 199, 199, 199, 200, 201, 202, + 203, 201, 204, 204, 204, 204, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 206, 205, 207, 205, 205, 205, 205, 205, 205, + 205, 208, 205, 209, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 210, 205, 211, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 212, 212, + 212, 212, 212, 213, 213, 213, 213, 213, 213, 214, + 214, 215, 215, 215, 215, 215, 216, 216, 217, 217, + 218, 218, 218, 218, 218, 218, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, - 219, 219, 222, 223, 224, 225, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 225, 226, 226, 226, 227, - 227, 227, 227, 228, 228, 229, 229, 229, 229, 230, - 231, 233, 232, 234, 234, 234, 235, 235, 237, 238, - 239, 236, 240, 240, 241, 241, 242, 242, 242, 242, - 243, 243, 244, 244, 244, 244, 245, 245, 246, 246, - 246, 246, 247, 247, 247, 248, 248, 248, 248, 250, - 251, 252, 253, 249, 254, 254, 254, 254, 254, 254, - 255, 255, 256, 256, 258, 257, 259, 259, 260, 260, - 261, 262, 261, 263, 264, 263, 266, 265, 267, 267, - 267, 267, 267, 267, 269, 270, 268, 271, 271, 273, - 272, 274, 274, 274, 274, 274, 274, 276, 277, 278, - 279, 275, 280, 280, 280, 280, 280, 280, 282, 281, - 283, 283, 284, 284, 285, 286, 287, 285, 288, 288, - 289, 290, 289, 291, 291, 291, 291, 292, 292, 293, - 293, 293, 293, 294, 294, 294, 294, 295, 295, 295, - 295, 295, 296, 296, 296, 298, 297, 299, 297, 300, - 297, 301, 297, 302, 297, 303, 303, 304, 304, 304, - 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, - 304, 305, 305, 306, 306, 307, 307 + 219, 219, 219, 219, 219, 219, 219, 220, 220, 222, + 221, 223, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 224, 225, 226, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, + 228, 228, 229, 229, 229, 229, 230, 230, 231, 231, + 231, 231, 232, 233, 235, 234, 236, 236, 236, 237, + 237, 239, 240, 241, 238, 242, 242, 243, 243, 244, + 244, 244, 244, 245, 245, 246, 246, 246, 246, 247, + 247, 248, 248, 248, 248, 249, 249, 249, 250, 250, + 250, 250, 252, 253, 254, 255, 251, 256, 256, 256, + 256, 256, 256, 257, 257, 258, 258, 260, 259, 261, + 261, 262, 262, 263, 264, 263, 265, 266, 265, 268, + 267, 269, 269, 269, 269, 269, 269, 271, 272, 270, + 273, 273, 275, 274, 276, 276, 276, 276, 276, 276, + 278, 279, 280, 281, 277, 282, 282, 282, 282, 282, + 282, 284, 283, 285, 285, 286, 286, 287, 288, 289, + 287, 290, 290, 291, 292, 291, 293, 293, 293, 293, + 294, 294, 295, 295, 295, 295, 296, 296, 296, 296, + 297, 297, 297, 297, 297, 298, 298, 298, 300, 299, + 301, 299, 302, 299, 303, 299, 304, 299, 305, 305, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 307, 307, 308, 308, 309, 309 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_int8 yyr2[] = { 0, 2, 2, 3, 3, 3, 3, 2, 1, 0, - 4, 1, 2, 1, 2, 0, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 0, 3, 0, 3, 1, 1, 2, 2, 3, 3, - 0, 5, 0, 5, 2, 1, 2, 1, 2, 2, - 2, 3, 4, 4, 0, 3, 0, 4, 6, 2, - 6, 2, 2, 2, 1, 2, 1, 2, 2, 2, - 5, 7, 3, 2, 3, 4, 5, 3, 2, 4, - 3, 8, 6, 6, 2, 2, 5, 7, 4, 6, - 8, 5, 2, 2, 2, 2, 3, 2, 2, 1, - 1, 3, 4, 4, 4, 4, 4, 4, 1, 1, - 2, 1, 2, 2, 8, 6, 6, 0, 1, 1, - 2, 2, 3, 10, 8, 8, 8, 3, 1, 1, - 6, 4, 4, 6, 6, 4, 6, 1, 4, 1, - 1, 1, 1, 3, 3, 6, 6, 8, 6, 4, - 6, 8, 4, 1, 3, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 6, 1, 3, - 1, 3, 4, 6, 6, 4, 6, 4, 6, 10, - 4, 4, 4, 8, 6, 4, 3, 3, 0, 4, - 0, 4, 2, 3, 3, 3, 3, 3, 3, 4, - 6, 1, 4, 4, 6, 6, 1, 1, 3, 3, - 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, - 1, 3, 3, 3, 3, 4, 4, 4, 4, 4, - 4, 6, 4, 4, 6, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 6, 4, 3, 6, 6, 4, - 4, 4, 4, 6, 6, 8, 6, 8, 4, 4, - 4, 8, 4, 4, 4, 4, 1, 3, 4, 1, - 3, 4, 1, 3, 4, 1, 3, 6, 6, 4, - 6, 6, 6, 4, 8, 6, 8, 6, 4, 4, - 4, 6, 6, 6, 8, 4, 1, 2, 2, 1, - 1, 1, 1, 1, 1, 4, 6, 4, 6, 4, - 4, 0, 2, 0, 1, 3, 1, 1, 0, 0, - 0, 11, 1, 1, 1, 1, 0, 1, 1, 2, - 1, 3, 1, 1, 4, 4, 1, 3, 1, 1, - 4, 4, 0, 1, 3, 1, 1, 3, 3, 0, - 0, 0, 0, 14, 1, 1, 1, 1, 1, 1, - 0, 2, 0, 1, 0, 7, 1, 2, 1, 1, - 0, 0, 5, 0, 0, 4, 0, 4, 1, 1, - 1, 1, 1, 1, 0, 0, 6, 1, 1, 0, - 4, 1, 2, 1, 1, 1, 1, 0, 0, 0, - 0, 11, 1, 1, 1, 1, 1, 1, 0, 5, - 1, 1, 0, 2, 0, 0, 0, 7, 0, 1, - 1, 0, 4, 1, 4, 1, 4, 1, 3, 1, - 4, 1, 4, 1, 1, 3, 3, 0, 2, 4, - 1, 3, 0, 2, 6, 0, 4, 0, 4, 0, - 6, 0, 9, 0, 3, 0, 1, 0, 2, 2, - 4, 1, 4, 6, 6, 7, 10, 12, 7, 10, - 12, 2, 1, 1, 3, 1, 3 + 0, 5, 1, 2, 1, 2, 0, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, + 1, 0, 3, 0, 3, 1, 1, 2, 2, 3, + 3, 0, 5, 0, 5, 2, 1, 2, 1, 2, + 2, 2, 3, 4, 4, 0, 3, 0, 4, 6, + 2, 6, 2, 2, 2, 1, 2, 1, 2, 2, + 2, 5, 7, 3, 2, 3, 4, 5, 3, 2, + 4, 3, 8, 6, 6, 2, 2, 5, 7, 4, + 6, 8, 5, 2, 2, 2, 2, 3, 2, 2, + 1, 1, 3, 4, 4, 4, 4, 4, 4, 1, + 1, 2, 1, 2, 2, 8, 6, 6, 0, 1, + 1, 2, 2, 3, 10, 8, 8, 8, 3, 1, + 1, 6, 4, 4, 6, 6, 4, 6, 1, 4, + 1, 1, 1, 1, 3, 3, 6, 6, 8, 6, + 4, 6, 8, 4, 1, 3, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 6, 1, + 3, 1, 3, 4, 6, 6, 4, 6, 4, 6, + 10, 4, 4, 4, 8, 6, 4, 3, 3, 0, + 4, 0, 4, 2, 3, 3, 3, 3, 3, 3, + 3, 4, 6, 1, 4, 4, 6, 6, 1, 1, + 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, + 3, 3, 3, 1, 3, 3, 3, 3, 4, 4, + 4, 4, 4, 4, 6, 4, 4, 6, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 6, 4, 3, + 6, 6, 4, 4, 4, 4, 6, 6, 8, 6, + 8, 4, 4, 4, 8, 4, 4, 4, 4, 1, + 3, 4, 1, 3, 4, 1, 3, 4, 1, 3, + 6, 6, 4, 6, 6, 6, 4, 8, 6, 8, + 6, 4, 4, 4, 6, 6, 6, 8, 4, 1, + 2, 2, 1, 1, 1, 1, 1, 1, 4, 6, + 4, 6, 4, 4, 0, 2, 0, 1, 3, 1, + 1, 0, 0, 0, 11, 1, 1, 1, 1, 0, + 1, 1, 2, 1, 3, 1, 1, 4, 4, 1, + 3, 1, 1, 4, 4, 0, 1, 3, 1, 1, + 3, 3, 0, 0, 0, 0, 14, 1, 1, 1, + 1, 1, 1, 0, 2, 0, 1, 0, 7, 1, + 2, 1, 1, 0, 0, 5, 0, 0, 4, 0, + 4, 1, 1, 1, 1, 1, 1, 0, 0, 6, + 1, 1, 0, 4, 1, 2, 1, 1, 1, 1, + 0, 0, 0, 0, 11, 1, 1, 1, 1, 1, + 1, 0, 5, 1, 1, 0, 2, 0, 0, 0, + 7, 0, 1, 1, 0, 4, 1, 4, 1, 4, + 1, 3, 1, 4, 1, 4, 1, 1, 3, 3, + 0, 2, 4, 1, 3, 0, 2, 6, 0, 4, + 0, 4, 0, 6, 0, 9, 0, 3, 0, 1, + 0, 2, 2, 4, 1, 4, 6, 6, 7, 10, + 12, 7, 10, 12, 2, 1, 1, 3, 1, 3 }; +enum { YYENOMEM = -2 }; + #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab @@ -2768,10 +2945,9 @@ } \ while (0) -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends @@ -2819,8 +2995,8 @@ This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ -#ifndef YY_LOCATION_PRINT -# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ @@ -2850,22 +3026,22 @@ return res; } -# define YY_LOCATION_PRINT(File, Loc) \ +# define YY_LOCATION_PRINT(File, Loc) \ yy_location_print_ (File, &(Loc)) -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif -#endif +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +# endif /* !defined YY_LOCATION_PRINT */ -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Type, Value, Location); \ + Kind, Value, Location); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -2876,19 +3052,20 @@ `-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) { FILE *yyoutput = yyo; - YYUSE (yyoutput); - YYUSE (yylocationp); + YY_USE (yyoutput); + YY_USE (yylocationp); if (!yyvaluep) return; # ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + if (yykind < YYNTOKENS) + YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2898,14 +3075,15 @@ `---------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) { YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); YY_LOCATION_PRINT (yyo, *yylocationp); YYFPRINTF (yyo, ": "); - yy_symbol_value_print (yyo, yytype, yyvaluep, yylocationp); + yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp); YYFPRINTF (yyo, ")"); } @@ -2938,7 +3116,8 @@ `------------------------------------------------*/ static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, + int yyrule) { int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; @@ -2950,9 +3129,9 @@ { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[+yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - , &(yylsp[(yyi + 1) - (yynrhs)]) ); + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)], + &(yylsp[(yyi + 1) - (yynrhs)])); YYFPRINTF (stderr, "\n"); } } @@ -2967,8 +3146,8 @@ multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ @@ -2991,260 +3170,31 @@ #endif -#if YYERROR_VERBOSE -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) -# else -/* Return the length of YYSTR. */ -static YYPTRDIFF_T -yystrlen (const char *yystr) -{ - YYPTRDIFF_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYPTRDIFF_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYPTRDIFF_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (yyres) - return yystpcpy (yyres, yystr) - yyres; - else - return yystrlen (yystr); -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, - yy_state_t *yyssp, int yytoken) -{ - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat: reported tokens (one for the "unexpected", - one per "expected"). */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Actual size of YYARG. */ - int yycount = 0; - /* Cumulated lengths of YYARG. */ - YYPTRDIFF_T yysize = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[+*yyssp]; - YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - yysize = yysize0; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYPTRDIFF_T yysize1 - = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - /* Don't count the "%s"s in the final size, but reserve room for - the terminator. */ - YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - ++yyp; - ++yyformat; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) { - YYUSE (yyvaluep); - YYUSE (yylocationp); + YY_USE (yyvaluep); + YY_USE (yylocationp); if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } - - -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -3259,6 +3209,8 @@ int yynerrs; + + /*----------. | yyparse. | `----------*/ @@ -3266,53 +3218,45 @@ int yyparse (void) { - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - 'yyls': related to locations. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ - /* The state stack. */ + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; + + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; - /* The location stack. */ + /* The location stack: array, bottom, top. */ YYLTYPE yylsa[YYINITDEPTH]; - YYLTYPE *yyls; - YYLTYPE *yylsp; - - /* The locations where the error started and ended. */ - YYLTYPE yyerror_range[3]; - - YYPTRDIFF_T yystacksize; + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp = yyls; int yyn; + /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; YYLTYPE yyloc; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; -#endif + /* The locations where the error started and ended. */ + YYLTYPE yyerror_range[3]; + + #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) @@ -3320,16 +3264,8 @@ Keep to zero when no symbol should be popped. */ int yylen = 0; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yylsp = yyls = yylsa; - yystacksize = YYINITDEPTH; - YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ yylsp[0] = yylloc; goto yysetstate; @@ -3353,6 +3289,7 @@ YY_IGNORE_USELESS_CAST_BEGIN *yyssp = YY_CAST (yy_state_t, yystate); YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -3402,7 +3339,7 @@ YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); YYSTACK_RELOCATE (yyls_alloc, yyls); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } @@ -3442,18 +3379,30 @@ /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); + YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (); } if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + yyerror_range[1] = yylloc; + goto yyerrlab1; + } else { yytoken = YYTRANSLATE (yychar); @@ -3525,171 +3474,175 @@ YY_REDUCE_PRINT (yyn); switch (yyn) { - case 3: + case 3: /* program_or_expression: tSTART_EXPRESSION expression tEOPROG */ {YYACCEPT;} break; - case 4: + case 4: /* program_or_expression: tSTART_STRING_EXPRESSION string_expression tEOPROG */ {YYACCEPT;} break; - case 5: + case 5: /* program_or_expression: tSTART_ASSIGNMENT assignment tEOPROG */ {YYACCEPT;} break; - case 6: + case 6: /* program_or_expression: tSTART_FUNCTION_DEFINITION function_definition tEOPROG */ {YYACCEPT;} break; - case 7: + case 7: /* program: statement_list tEOPROG */ {YYACCEPT;} break; - case 9: + case 9: /* $@1: %empty */ {if (severity_so_far >= sERROR) {YYABORT;}} break; - case 17: + case 10: /* $@2: %empty */ + {if (in_short_if > 0 && (yyvsp[0].nnl) > 0) lyyerror(sERROR,"short if-statement (i.e. without 'then' and ended by newline) does not contain any statements");} + break; + + case 18: /* statement: tIMPORT */ {report_if_missing("can not import a library in a loop or an if-statement",FALSE);} break; - case 18: + case 19: /* statement: tERROR string_expression */ {add_command(cERROR);} break; - case 24: + case 25: /* statement: tBREAK */ {add_command(cPOP_MULTI);create_mybreak(1);if (!loop_nesting && !switch_nesting) lyyerror(sERROR,"break outside loop or switch");} break; - case 25: + case 26: /* statement: tBREAK tDIGITS */ {add_command(cPOP_MULTI);create_mybreak(atoi((yyvsp[0].digits)));if (!loop_nesting && !switch_nesting) lyyerror(sERROR,"break outside loop or switch");} break; - case 26: + case 27: /* statement: tCONTINUE */ {add_command(cPOP_MULTI);add_command_with_switch_state(cCONTINUE);if (!loop_nesting) lyyerror(sERROR,"continue outside loop");} break; - case 28: + case 29: /* statement: function_or_array */ {create_call((yyvsp[0].symbol));add_command(cPOP);} break; - case 29: + case 30: /* statement: stringfunction_or_array */ {create_call((yyvsp[0].symbol));add_command(cPOP);} break; - case 30: + case 31: /* $@3: %empty */ {if (function_type==ftNONE) lyyerror(sERROR,"no use for 'local' outside functions");} break; - case 32: + case 33: /* $@4: %empty */ {if (function_type==ftNONE) lyyerror(sERROR,"no use for 'static' outside functions");} break; - case 36: + case 37: /* statement: tGOTO symbol_or_lineno */ {create_goto((function_type!=ftNONE)?dotify((yyvsp[0].symbol),TRUE):(yyvsp[0].symbol));} break; - case 37: + case 38: /* statement: tGOSUB symbol_or_lineno */ {create_gosub((function_type!=ftNONE)?dotify((yyvsp[0].symbol),TRUE):(yyvsp[0].symbol));} break; - case 38: + case 39: /* statement: tON tINTERRUPT tBREAK */ {create_exception(TRUE);} break; - case 39: + case 40: /* statement: tON tINTERRUPT tCONTINUE */ {create_exception(FALSE);} break; - case 40: + case 41: /* $@5: %empty */ {add_command(cSKIPPER);} break; - case 41: + case 42: /* statement: tON expression tGOTO $@5 goto_list */ {add_command(cNOP);} break; - case 42: + case 43: /* $@6: %empty */ {add_command(cSKIPPER);} break; - case 43: + case 44: /* statement: tON expression tGOSUB $@6 gosub_list */ {add_command(cNOP);} break; - case 44: + case 45: /* statement: tLABEL symbol_or_lineno */ {create_label((function_type!=ftNONE)?dotify((yyvsp[0].symbol),TRUE):(yyvsp[0].symbol),cLABEL);} break; - case 45: + case 46: /* statement: open_clause */ {add_command(cCHECKOPEN);} break; - case 46: + case 47: /* statement: tCLOSE hashed_number */ {add_command(cCLOSE);} break; - case 47: + case 48: /* statement: seek_clause */ {add_command(cCHECKSEEK);} break; - case 48: + case 49: /* statement: tCOMPILE string_expression */ {add_command(cCOMPILE);} break; - case 49: + case 50: /* statement: tEXECUTE call_list */ {create_execute(0);add_command(cPOP);add_command(cPOP);} break; - case 50: + case 51: /* statement: tEXECUTE2 call_list */ {create_execute(1);add_command(cPOP);add_command(cPOP);} break; - case 51: + case 52: /* statement: tPRINT printintro printlist */ {create_colour(0);create_print('n');create_pps(cPOPSTREAM,0);} break; - case 52: + case 53: /* statement: tPRINT printintro printlist ';' */ {create_colour(0);create_pps(cPOPSTREAM,0);} break; - case 53: + case 54: /* statement: tPRINT printintro printlist ',' */ {create_colour(0);create_print('t');create_pps(cPOPSTREAM,0);} break; - case 54: + case 55: /* $@7: %empty */ {tileol=FALSE;} break; - case 56: + case 57: /* $@8: %empty */ {tileol=TRUE;} break; - case 58: + case 59: /* statement: tCOLOUR expression ',' expression ',' expression */ {add_command(cGCOLOUR);} break; - case 59: + case 60: /* statement: tCOLOUR string_expression */ {add_command(cGCOLOUR2);} break; - case 60: + case 61: /* statement: tBACKCOLOUR expression ',' expression ',' expression */ {add_command(cGBACKCOLOUR);} break; - case 61: + case 62: /* statement: tBACKCOLOUR string_expression */ {add_command(cGBACKCOLOUR2);} break; - case 64: + case 65: /* statement: tRESTORE */ {create_restore("");} break; - case 65: + case 66: /* statement: tRESTORE symbol_or_lineno */ {create_restore((function_type!=ftNONE)?dotify((yyvsp[0].symbol),TRUE):(yyvsp[0].symbol));} break; - case 66: + case 67: /* statement: tRETURN */ {if (function_type!=ftNONE) { add_command(cCLEARSYMREFS);end_symref_chain(); add_command(cPOPSYMLIST); @@ -3700,1065 +3653,1073 @@ }} break; - case 67: + case 68: /* statement: tRETURN expression */ {if (function_type==ftNONE) {lyyerror(sERROR,"a value can only be returned from a subroutine"); YYABORT;} add_command(cCLEARSYMREFS);end_symref_chain();add_command(cPOPSYMLIST);create_check_return_value(ftNUMBER,function_type);add_command(cRETURN_FROM_CALL);} break; - case 68: + case 69: /* statement: tRETURN string_expression */ {if (function_type==ftNONE) {lyyerror(sERROR,"can not return value"); YYABORT;} add_command(cCLEARSYMREFS);end_symref_chain();add_command(cPOPSYMLIST);create_check_return_value(ftSTRING,function_type);add_command(cRETURN_FROM_CALL);} break; - case 70: + case 71: /* statement: tOPEN tWINDOW expression ',' expression */ {create_openwin(FALSE);} break; - case 71: + case 72: /* statement: tOPEN tWINDOW expression ',' expression ',' string_expression */ {create_openwin(TRUE);} break; - case 72: + case 73: /* statement: tWINDOW tORIGIN string_expression */ {add_command(cMOVEORIGIN);} break; - case 73: + case 74: /* statement: tDOT coordinates */ {add_command(cDOT);} break; - case 74: + case 75: /* statement: tCLEAR tDOT coordinates */ {add_command(cDOT);putindrawmode(dmCLEAR);} break; - case 75: + case 76: /* statement: tLINE coordinates to coordinates */ {create_line(2);} break; - case 76: + case 77: /* statement: tCLEAR tLINE coordinates to coordinates */ {create_line(2);putindrawmode(dmCLEAR);} break; - case 77: + case 78: /* statement: tLINE tTO coordinates */ {create_line(1);} break; - case 78: + case 79: /* statement: tLINE coordinates */ {create_line(1);} break; - case 79: + case 80: /* statement: tCLEAR tLINE tTO coordinates */ {create_line(1);putindrawmode(dmCLEAR);} break; - case 80: + case 81: /* statement: tCLEAR tLINE coordinates */ {create_line(1);putindrawmode(dmCLEAR);} break; - case 81: + case 82: /* statement: tPUTBIT string_expression to expression ',' expression ',' string_expression */ {add_command(cPUTBIT);} break; - case 82: + case 83: /* statement: tPUTBIT string_expression to expression ',' expression */ {create_pushstr("solid"); add_command(cPUTBIT);} break; - case 83: + case 84: /* statement: tPUTCHAR string_expression to expression ',' expression */ {add_command(cPUTCHAR);} break; - case 84: + case 85: /* statement: tNEW tCURVE */ {create_line(-1);} break; - case 85: + case 86: /* statement: tCLOSE tCURVE */ {create_line(0);} break; - case 86: + case 87: /* statement: clear_fill_clause tCIRCLE coordinates ',' expression */ {add_command(cCIRCLE);putindrawmode(0);} break; - case 87: + case 88: /* statement: clear_fill_clause tTRIANGLE coordinates to coordinates to coordinates */ {add_command(cTRIANGLE);putindrawmode(0);} break; - case 88: + case 89: /* statement: tTEXT coordinates ',' string_expression */ {add_command(cTEXT1);} break; - case 89: + case 90: /* statement: tTEXT coordinates ',' string_expression ',' string_expression */ {add_command(cTEXT2);} break; - case 90: + case 91: /* statement: tTEXT coordinates ',' string_expression ',' string_expression ',' string_expression */ {add_command(cTEXT3);} break; - case 91: + case 92: /* statement: clear_fill_clause tRECT coordinates to coordinates */ {add_command(cRECT);putindrawmode(0);} break; - case 92: + case 93: /* statement: tCLOSE tWINDOW */ {add_command(cCLOSEWIN);} break; - case 93: + case 94: /* statement: tCLEAR tWINDOW */ {add_command(cCLEARWIN);} break; - case 94: + case 95: /* statement: tCLEAR tSCREEN */ {add_command(cCLEARSCR);} break; - case 95: + case 96: /* statement: tOPEN tPRINTER */ {create_openprinter(0);} break; - case 96: + case 97: /* statement: tOPEN tPRINTER string_expression */ {create_openprinter(1);} break; - case 97: + case 98: /* statement: tCLOSE tPRINTER */ {add_command(cCLOSEPRN);} break; - case 98: + case 99: /* statement: tWAIT expression */ {add_command(cWAIT);} break; - case 99: + case 100: /* statement: tBELL */ {add_command(cBELL);} break; - case 100: + case 101: /* statement: tINKEY */ {create_pushdbl(-1);create_function(fINKEY);add_command(cPOP);} break; - case 101: + case 102: /* statement: tINKEY '(' ')' */ {create_pushdbl(-1);create_function(fINKEY);add_command(cPOP);} break; - case 102: + case 103: /* statement: tINKEY '(' expression ')' */ {create_function(fINKEY);add_command(cPOP);} break; - case 103: + case 104: /* statement: tSYSTEM '(' string_expression ')' */ {create_function(fSYSTEM); add_command(cPOP);} break; - case 104: + case 105: /* statement: tPOKE string_expression ',' string_expression */ {create_poke('s');} break; - case 105: + case 106: /* statement: tPOKE string_expression ',' expression */ {create_poke('d');} break; - case 106: + case 107: /* statement: tPOKE hashed_number ',' string_expression */ {create_poke('S');} break; - case 107: + case 108: /* statement: tPOKE hashed_number ',' expression */ {create_poke('D');} break; - case 108: + case 109: /* statement: tEND */ {add_command(cEND);} break; - case 109: + case 110: /* statement: tEXIT */ {create_pushdbl(0);add_command(cEXIT);} break; - case 110: + case 111: /* statement: tEXIT expression */ {add_command(cEXIT);} break; - case 111: + case 112: /* statement: tDOCU */ {create_docu((yyvsp[0].symbol));} break; - case 112: + case 113: /* statement: tBIND string_expression */ {add_command(cBIND);} break; - case 113: + case 114: /* statement: tFRNBF_FREE string_expression */ {add_command(cFRNBF_FREE);} break; - case 114: + case 115: /* statement: tFRNBF_SET string_expression ',' expression ',' string_expression ',' expression */ {add_command(cFRNBF_SET_NUMBER);} break; - case 115: + case 116: /* statement: tFRNBF_SET string_expression ',' expression ',' string_expression */ {add_command(cFRNBF_SET_STRING);} break; - case 116: + case 117: /* statement: tFRNBF_SET_BUFFER string_expression ',' expression ',' string_expression */ {add_command(cFRNBF_SET_BUFFER);} break; - case 117: + case 118: /* clear_fill_clause: %empty */ {drawmode=0;} break; - case 118: + case 119: /* clear_fill_clause: tCLEAR */ {drawmode=dmCLEAR;} break; - case 119: + case 120: /* clear_fill_clause: tFILL */ {drawmode=dmFILL;} break; - case 120: + case 121: /* clear_fill_clause: tCLEAR tFILL */ {drawmode=dmFILL+dmCLEAR;} break; - case 121: + case 122: /* clear_fill_clause: tFILL tCLEAR */ {drawmode=dmFILL+dmCLEAR;} break; - case 122: + case 123: /* string_assignment: tSTRSYM tEQU string_expression */ {add_command_with_sym_and_diag(cPOPSTRSYM,dotify((yyvsp[-2].symbol),FALSE),NULL);} break; - case 123: + case 124: /* string_assignment: tMID '(' string_scalar_or_array ',' expression ',' expression ')' tEQU string_expression */ {create_changestring(fMID);} break; - case 124: + case 125: /* string_assignment: tMID '(' string_scalar_or_array ',' expression ')' tEQU string_expression */ {create_changestring(fMID2);} break; - case 125: + case 126: /* string_assignment: tLEFT '(' string_scalar_or_array ',' expression ')' tEQU string_expression */ {create_changestring(fLEFT);} break; - case 126: + case 127: /* string_assignment: tRIGHT '(' string_scalar_or_array ',' expression ')' tEQU string_expression */ {create_changestring(fRIGHT);} break; - case 127: + case 128: /* string_assignment: stringfunction_or_array tEQU string_expression */ {create_doarray(dotify((yyvsp[-2].symbol),FALSE),ASSIGNSTRINGARRAY);} break; - case 130: + case 131: /* open_clause: tOPEN hashed_number ',' string_expression ',' string_expression */ {create_myopen(OPEN_HAS_STREAM+OPEN_HAS_MODE);} break; - case 131: + case 132: /* open_clause: tOPEN hashed_number ',' string_expression */ {create_myopen(OPEN_HAS_STREAM);} break; - case 132: + case 133: /* open_clause: tOPEN hashed_number ',' tPRINTER */ {create_myopen(OPEN_HAS_STREAM+OPEN_PRINTER);} break; - case 133: + case 134: /* open_clause: tOPEN string_expression tFOR tREADING tAS hashed_number */ {add_command(cSWAP);create_pushstr("r");create_myopen(OPEN_HAS_STREAM+OPEN_HAS_MODE);} break; - case 134: + case 135: /* open_clause: tOPEN string_expression tFOR tWRITING tAS hashed_number */ {add_command(cSWAP);create_pushstr("w");create_myopen(OPEN_HAS_STREAM+OPEN_HAS_MODE);} break; - case 135: + case 136: /* seek_clause: tSEEK hashed_number ',' expression */ {add_command(cSEEK);} break; - case 136: + case 137: /* seek_clause: tSEEK hashed_number ',' expression ',' string_expression */ {add_command(cSEEK2);} break; - case 137: + case 138: /* string_scalar_or_array: tSTRSYM */ {add_command_with_sym_and_diag(cPUSHSTRPTR,dotify((yyvsp[0].symbol),FALSE),NULL);} break; - case 138: + case 139: /* string_scalar_or_array: tSTRSYM '(' call_list ')' */ {create_doarray(dotify((yyvsp[-3].symbol),FALSE),GETSTRINGPOINTER);} break; - case 139: + case 140: /* string_expression: tSTRSYM */ {add_command_with_sym_and_diag(cPUSHSTRSYM,dotify((yyvsp[0].symbol),FALSE),NULL);} break; - case 141: + case 142: /* string_expression: stringfunction_or_array */ {add_command_with_sym_and_diag(cSTRINGFUNCTION_OR_ARRAY,(yyvsp[0].symbol),NULL);} break; - case 142: + case 143: /* string_expression: tSTRING */ {if ((yyvsp[0].string)==NULL) {lyyerror(sERROR,"String not terminated");create_pushstr("");} else {create_pushstr((yyvsp[0].string));}} break; - case 143: + case 144: /* string_expression: string_expression '+' string_expression */ {add_command(cCONCAT);} break; - case 145: + case 146: /* string_function: tLEFT '(' string_expression ',' expression ')' */ {create_function(fLEFT);} break; - case 146: + case 147: /* string_function: tRIGHT '(' string_expression ',' expression ')' */ {create_function(fRIGHT);} break; - case 147: + case 148: /* string_function: tMID '(' string_expression ',' expression ',' expression ')' */ {create_function(fMID);} break; - case 148: + case 149: /* string_function: tMID '(' string_expression ',' expression ')' */ {create_function(fMID2);} break; - case 149: + case 150: /* string_function: tSTR '(' expression ')' */ {create_function(fSTR);} break; - case 150: + case 151: /* string_function: tSTR '(' expression ',' string_expression ')' */ {create_function(fSTR2);} break; - case 151: + case 152: /* string_function: tSTR '(' expression ',' string_expression ',' string_expression ')' */ {create_function(fSTR3);} break; - case 152: + case 153: /* string_function: tSTR '(' string_expression ')' */ {create_function(fSTR4);} break; - case 153: + case 154: /* string_function: tINKEY */ {create_pushdbl(-1);create_function(fINKEY);} break; - case 154: + case 155: /* string_function: tINKEY '(' ')' */ {create_pushdbl(-1);create_function(fINKEY);} break; - case 155: + case 156: /* string_function: tINKEY '(' expression ')' */ {create_function(fINKEY);} break; - case 156: + case 157: /* string_function: tCHR '(' expression ')' */ {create_function(fCHR);} break; - case 157: + case 158: /* string_function: tUPPER '(' string_expression ')' */ {create_function(fUPPER);} break; - case 158: + case 159: /* string_function: tLOWER '(' string_expression ')' */ {create_function(fLOWER);} break; - case 159: + case 160: /* string_function: tLTRIM '(' string_expression ')' */ {create_function(fLTRIM);} break; - case 160: + case 161: /* string_function: tRTRIM '(' string_expression ')' */ {create_function(fRTRIM);} break; - case 161: + case 162: /* string_function: tTRIM '(' string_expression ')' */ {create_function(fTRIM);} break; - case 162: + case 163: /* string_function: tCHOMP '(' string_expression ')' */ {create_function(fCHOMP);} break; - case 163: + case 164: /* string_function: tSYSTEM2 '(' string_expression ')' */ {create_function(fSYSTEM2);} break; - case 164: + case 165: /* string_function: tFRNFN_CALL2 '(' call_list ')' */ {create_function(fFRNFN_CALL2);} break; - case 165: + case 166: /* string_function: tFRNBF_ALLOC '(' expression ')' */ {create_function(fFRNBF_ALLOC);} break; - case 166: + case 167: /* string_function: tFRNBF_DUMP '(' string_expression ')' */ {create_function(fFRNBF_DUMP);} break; - case 167: + case 168: /* string_function: tFRNBF_DUMP '(' string_expression ',' expression ')' */ {create_function(fFRNBF_DUMP2);} break; - case 168: + case 169: /* string_function: tDATE */ {create_function(fDATE);} break; - case 169: + case 170: /* string_function: tDATE '(' ')' */ {create_function(fDATE);} break; - case 170: + case 171: /* string_function: tTIME */ {create_function(fTIME);} break; - case 171: + case 172: /* string_function: tTIME '(' ')' */ {create_function(fTIME);} break; - case 172: + case 173: /* string_function: tPEEK2 '(' string_expression ')' */ {create_function(fPEEK2);} break; - case 173: + case 174: /* string_function: tPEEK2 '(' string_expression ',' string_expression ')' */ {create_function(fPEEK3);} break; - case 174: + case 175: /* string_function: tTOKENALT '(' string_scalar_or_array ',' string_expression ')' */ {add_command(cTOKENALT2);} break; - case 175: + case 176: /* string_function: tTOKENALT '(' string_scalar_or_array ')' */ {add_command(cTOKENALT);} break; - case 176: + case 177: /* string_function: tSPLITALT '(' string_scalar_or_array ',' string_expression ')' */ {add_command(cSPLITALT2);} break; - case 177: + case 178: /* string_function: tSPLITALT '(' string_scalar_or_array ')' */ {add_command(cSPLITALT);} break; - case 178: + case 179: /* string_function: tGETBIT '(' coordinates to coordinates ')' */ {create_function(fGETBIT);} break; - case 179: + case 180: /* string_function: tGETCHAR '(' expression ',' expression to expression ',' expression ')' */ {create_function(fGETCHAR);} break; - case 180: + case 181: /* string_function: tHEX '(' expression ')' */ {create_function(fHEX);} break; - case 181: + case 182: /* string_function: tBIN '(' expression ')' */ {create_function(fBIN);} break; - case 182: + case 183: /* string_function: tEXECUTE2 '(' call_list ')' */ {create_execute(1);add_command(cSWAP);add_command(cPOP);} break; - case 183: + case 184: /* string_function: tFRNBF_GET2 '(' string_expression ',' expression ',' expression ')' */ {create_function(fFRNBF_GET_STRING);} break; - case 184: + case 185: /* string_function: tFRNBF_GET_BUFFER '(' string_expression ',' expression ')' */ {create_function(fFRNBF_GET_BUFFER);} break; - case 185: + case 186: /* string_function: tEVAL2 '(' string_expression ')' */ {create_eval(evSTRING);} break; - case 186: + case 187: /* number_assignment: tSYMBOL tEQU expression */ {add_command_with_sym_and_diag(cPOPDBLSYM,dotify((yyvsp[-2].symbol),FALSE),NULL);} break; - case 187: + case 188: /* number_assignment: function_or_array tEQU expression */ {create_doarray((yyvsp[-2].symbol),ASSIGNARRAY);} break; - case 188: + case 189: /* $@9: %empty */ {add_command(cORSHORT);pushlabel();} break; - case 189: + case 190: /* expression: expression tOR $@9 expression */ {poplabel();create_boole('|');} break; - case 190: + case 191: /* $@10: %empty */ {add_command(cANDSHORT);pushlabel();} break; - case 191: + case 192: /* expression: expression tAND $@10 expression */ {poplabel();create_boole('&');} break; - case 192: + case 193: /* expression: tNOT expression */ {create_boole('!');} break; - case 193: + case 194: /* expression: expression tEQU expression */ {create_dblrelop('=');} break; - case 194: + case 195: /* expression: expression tEQU2 expression */ + {create_dblrelop('=');} + break; + + case 196: /* expression: expression tNEQ expression */ {create_dblrelop('!');} break; - case 195: + case 197: /* expression: expression tLTN expression */ {create_dblrelop('<');} break; - case 196: + case 198: /* expression: expression tLEQ expression */ {create_dblrelop('{');} break; - case 197: + case 199: /* expression: expression tGTN expression */ {create_dblrelop('>');} break; - case 198: + case 200: /* expression: expression tGEQ expression */ {create_dblrelop('}');} break; - case 199: + case 201: /* expression: tMYEOF '(' hashed_number ')' */ {add_command(cTESTEOF);} break; - case 200: + case 202: /* expression: tGLOB '(' string_expression ',' string_expression ')' */ {add_command(cGLOB);} break; - case 201: + case 203: /* expression: number */ {create_pushdbl((yyvsp[0].fnum));} break; - case 202: + case 204: /* expression: tARDIM '(' arrayref ')' */ {add_command_with_sym_and_diag(cARDIM,"",NULL);} break; - case 203: + case 205: /* expression: tARDIM '(' string_arrayref ')' */ {add_command_with_sym_and_diag(cARDIM,"",NULL);} break; - case 204: + case 206: /* expression: tARSIZE '(' arrayref ',' expression ')' */ {add_command_with_sym_and_diag(cARSIZE,"",NULL);} break; - case 205: + case 207: /* expression: tARSIZE '(' string_arrayref ',' expression ')' */ {add_command_with_sym_and_diag(cARSIZE,"",NULL);} break; - case 206: + case 208: /* expression: function_or_array */ {add_command_with_sym_and_diag(cFUNCTION_OR_ARRAY,(yyvsp[0].symbol),NULL);} break; - case 207: + case 209: /* expression: tSYMBOL */ {add_command_with_sym_and_diag(cPUSHDBLSYM,dotify((yyvsp[0].symbol),FALSE),NULL);} break; - case 208: + case 210: /* expression: expression '+' expression */ {create_dblbin('+');} break; - case 209: + case 211: /* expression: expression '-' expression */ {create_dblbin('-');} break; - case 210: + case 212: /* expression: expression '*' expression */ {create_dblbin('*');} break; - case 211: + case 213: /* expression: expression '/' expression */ {create_dblbin('/');} break; - case 212: + case 214: /* expression: expression tPOW expression */ {create_dblbin('^');} break; - case 213: + case 215: /* expression: '-' expression */ {add_command(cNEGATE);} break; - case 214: + case 216: /* expression: string_expression tEQU string_expression */ {create_strrelop('=');} break; - case 215: + case 217: /* expression: string_expression tEQU2 string_expression */ + {create_strrelop('=');} + break; + + case 218: /* expression: string_expression tNEQ string_expression */ {create_strrelop('!');} break; - case 216: + case 219: /* expression: string_expression tLTN string_expression */ {create_strrelop('<');} break; - case 217: + case 220: /* expression: string_expression tLEQ string_expression */ {create_strrelop('{');} break; - case 218: + case 221: /* expression: string_expression tGTN string_expression */ {create_strrelop('>');} break; - case 219: + case 222: /* expression: string_expression tGEQ string_expression */ {create_strrelop('}');} break; - case 222: + case 225: /* arrayref: tSYMBOL '(' ')' */ {create_pusharrayref(dotify((yyvsp[-2].symbol),FALSE),stNUMBERARRAYREF);} break; - case 223: + case 226: /* string_arrayref: tSTRSYM '(' ')' */ {create_pusharrayref(dotify((yyvsp[-2].symbol),FALSE),stSTRINGARRAYREF);} break; - case 225: + case 228: /* function: tSIN '(' expression ')' */ {create_function(fSIN);} break; - case 226: + case 229: /* function: tASIN '(' expression ')' */ {create_function(fASIN);} break; - case 227: + case 230: /* function: tCOS '(' expression ')' */ {create_function(fCOS);} break; - case 228: + case 231: /* function: tACOS '(' expression ')' */ {create_function(fACOS);} break; - case 229: + case 232: /* function: tTAN '(' expression ')' */ {create_function(fTAN);} break; - case 230: + case 233: /* function: tATAN '(' expression ')' */ {create_function(fATAN);} break; - case 231: + case 234: /* function: tATAN '(' expression ',' expression ')' */ {create_function(fATAN2);} break; - case 232: + case 235: /* function: tEXP '(' expression ')' */ {create_function(fEXP);} break; - case 233: + case 236: /* function: tLOG '(' expression ')' */ {create_function(fLOG);} break; - case 234: + case 237: /* function: tLOG '(' expression ',' expression ')' */ {create_function(fLOG2);} break; - case 235: + case 238: /* function: tSQRT '(' expression ')' */ {create_function(fSQRT);} break; - case 236: + case 239: /* function: tSQR '(' expression ')' */ {create_function(fSQR);} break; - case 237: + case 240: /* function: tINT '(' expression ')' */ {create_function(fINT);} break; - case 238: + case 241: /* function: tROUND '(' expression ')' */ {create_function(fROUND);} break; - case 239: + case 242: /* function: tCEIL '(' expression ')' */ {create_function(fCEIL);} break; - case 240: + case 243: /* function: tFLOOR '(' expression ')' */ {create_function(fFLOOR);} break; - case 241: + case 244: /* function: tFRAC '(' expression ')' */ {create_function(fFRAC);} break; - case 242: + case 245: /* function: tABS '(' expression ')' */ {create_function(fABS);} break; - case 243: + case 246: /* function: tSIG '(' expression ')' */ {create_function(fSIG);} break; - case 244: + case 247: /* function: tMOD '(' expression ',' expression ')' */ {create_function(fMOD);} break; - case 245: + case 248: /* function: tRAN '(' expression ')' */ {create_function(fRAN);} break; - case 246: + case 249: /* function: tRAN '(' ')' */ {create_function(fRAN2);} break; - case 247: + case 250: /* function: tMIN '(' expression ',' expression ')' */ {create_function(fMIN);} break; - case 248: + case 251: /* function: tMAX '(' expression ',' expression ')' */ {create_function(fMAX);} break; - case 249: + case 252: /* function: tLEN '(' string_expression ')' */ {create_function(fLEN);} break; - case 250: + case 253: /* function: tVAL '(' string_expression ')' */ {create_function(fVAL);} break; - case 251: + case 254: /* function: tASC '(' string_expression ')' */ {create_function(fASC);} break; - case 252: + case 255: /* function: tDEC '(' string_expression ')' */ {create_function(fDEC);} break; - case 253: + case 256: /* function: tDEC '(' string_expression ',' expression ')' */ {create_function(fDEC2);} break; - case 254: + case 257: /* function: tINSTR '(' string_expression ',' string_expression ')' */ {if (check_compat) lyyerror(sWARNING,"instr() has changed in version 2.712"); create_function(fINSTR);} break; - case 255: + case 258: /* function: tINSTR '(' string_expression ',' string_expression ',' expression ')' */ {create_function(fINSTR2);} break; - case 256: + case 259: /* function: tRINSTR '(' string_expression ',' string_expression ')' */ {create_function(fRINSTR);} break; - case 257: + case 260: /* function: tRINSTR '(' string_expression ',' string_expression ',' expression ')' */ {create_function(fRINSTR2);} break; - case 258: + case 261: /* function: tSYSTEM '(' string_expression ')' */ {create_function(fSYSTEM);} break; - case 259: + case 262: /* function: tFRNFN_CALL '(' call_list ')' */ {create_function(fFRNFN_CALL);} break; - case 260: + case 263: /* function: tFRNFN_SIZE '(' string_expression ')' */ {create_function(fFRNFN_SIZE);} break; - case 261: + case 264: /* function: tFRNBF_GET '(' string_expression ',' expression ',' string_expression ')' */ {create_function(fFRNBF_GET_NUMBER);} break; - case 262: + case 265: /* function: tFRNBF_SIZE '(' string_expression ')' */ {create_function(fFRNBF_SIZE);} break; - case 263: + case 266: /* function: tPEEK '(' hashed_number ')' */ {create_function(fPEEK4);} break; - case 264: + case 267: /* function: tPEEK '(' string_expression ')' */ {create_function(fPEEK);} break; - case 265: + case 268: /* function: tMOUSEX '(' string_expression ')' */ {create_function(fMOUSEX);} break; - case 266: + case 269: /* function: tMOUSEX */ {create_pushstr("");create_function(fMOUSEX);} break; - case 267: + case 270: /* function: tMOUSEX '(' ')' */ {create_pushstr("");create_function(fMOUSEX);} break; - case 268: + case 271: /* function: tMOUSEY '(' string_expression ')' */ {create_function(fMOUSEY);} break; - case 269: + case 272: /* function: tMOUSEY */ {create_pushstr("");create_function(fMOUSEY);} break; - case 270: + case 273: /* function: tMOUSEY '(' ')' */ {create_pushstr("");create_function(fMOUSEY);} break; - case 271: + case 274: /* function: tMOUSEB '(' string_expression ')' */ {create_function(fMOUSEB);} break; - case 272: + case 275: /* function: tMOUSEB */ {create_pushstr("");create_function(fMOUSEB);} break; - case 273: + case 276: /* function: tMOUSEB '(' ')' */ {create_pushstr("");create_function(fMOUSEB);} break; - case 274: + case 277: /* function: tMOUSEMOD '(' string_expression ')' */ {create_function(fMOUSEMOD);} break; - case 275: + case 278: /* function: tMOUSEMOD */ {create_pushstr("");create_function(fMOUSEMOD);} break; - case 276: + case 279: /* function: tMOUSEMOD '(' ')' */ {create_pushstr("");create_function(fMOUSEMOD);} break; - case 277: + case 280: /* function: tAND '(' expression ',' expression ')' */ {create_function(fAND);} break; - case 278: + case 281: /* function: tOR '(' expression ',' expression ')' */ {create_function(fOR);} break; - case 279: + case 282: /* function: tBITNOT '(' expression ')' */ {create_function(fBITNOT);} break; - case 280: + case 283: /* function: tEOR '(' expression ',' expression ')' */ {create_function(fEOR);} break; - case 281: + case 284: /* function: tSHL '(' expression ',' expression ')' */ {create_function(fSHL);} break; - case 282: + case 285: /* function: tSHR '(' expression ',' expression ')' */ {create_function(fSHR);} break; - case 283: + case 286: /* function: tTELL '(' hashed_number ')' */ {create_function(fTELL);} break; - case 284: + case 287: /* function: tTOKEN '(' string_expression ',' string_arrayref ',' string_expression ')' */ {add_command(cTOKEN2);} break; - case 285: + case 288: /* function: tTOKEN '(' string_expression ',' string_arrayref ')' */ {add_command(cTOKEN);} break; - case 286: + case 289: /* function: tSPLIT '(' string_expression ',' string_arrayref ',' string_expression ')' */ {add_command(cSPLIT2);} break; - case 287: + case 290: /* function: tSPLIT '(' string_expression ',' string_arrayref ')' */ {add_command(cSPLIT);} break; - case 288: + case 291: /* function: tEXECUTE '(' call_list ')' */ {create_execute(0);add_command(cSWAP);add_command(cPOP);} break; - case 289: + case 292: /* function: tOPEN '(' tPRINTER ')' */ {create_myopen(OPEN_PRINTER);} break; - case 290: + case 293: /* function: tOPEN '(' string_expression ')' */ {create_myopen(0);} break; - case 291: + case 294: /* function: tOPEN '(' string_expression ',' string_expression ')' */ {create_myopen(OPEN_HAS_MODE);} break; - case 292: + case 295: /* function: tOPEN '(' hashed_number ',' tPRINTER ')' */ {create_myopen(OPEN_PRINTER+OPEN_HAS_STREAM);} break; - case 293: + case 296: /* function: tOPEN '(' hashed_number ',' string_expression ')' */ {create_myopen(OPEN_HAS_STREAM);} break; - case 294: + case 297: /* function: tOPEN '(' hashed_number ',' string_expression ',' string_expression ')' */ {create_myopen(OPEN_HAS_STREAM+OPEN_HAS_MODE);} break; - case 295: + case 298: /* function: tEVAL '(' string_expression ')' */ {create_eval(evNUMBER);} break; - case 296: + case 299: /* const: number */ {(yyval.fnum)=(yyvsp[0].fnum);} break; - case 297: + case 300: /* const: '+' number */ {(yyval.fnum)=(yyvsp[0].fnum);} break; - case 298: + case 301: /* const: '-' number */ {(yyval.fnum)=-(yyvsp[0].fnum);} break; - case 299: + case 302: /* number: tFNUM */ {(yyval.fnum)=(yyvsp[0].fnum);} break; - case 300: + case 303: /* number: tDIGITS */ {(yyval.fnum)=strtod((yyvsp[0].digits),NULL);} break; - case 301: + case 304: /* number: tHEXDIGITS */ {(yyval.fnum)=(double)strtoul((yyvsp[0].digits),NULL,16);} break; - case 302: + case 305: /* number: tBINDIGITS */ {(yyval.fnum)=(double)strtoul((yyvsp[0].digits),NULL,2);} break; - case 303: + case 306: /* symbol_or_lineno: tDIGITS */ {(yyval.symbol)=my_strdup(dotify((yyvsp[0].digits),FALSE));} break; - case 304: + case 307: /* symbol_or_lineno: tSYMBOL */ {(yyval.symbol)=my_strdup(dotify((yyvsp[0].symbol),FALSE));} break; - case 305: + case 308: /* dimlist: tSYMBOL '(' call_list ')' */ {create_dim(dotify((yyvsp[-3].symbol),FALSE),'D');} break; - case 306: + case 309: /* dimlist: dimlist ',' tSYMBOL '(' call_list ')' */ {create_dim(dotify((yyvsp[-3].symbol),FALSE),'D');} break; - case 307: + case 310: /* dimlist: tSTRSYM '(' call_list ')' */ {create_dim(dotify((yyvsp[-3].symbol),FALSE),'S');} break; - case 308: + case 311: /* dimlist: dimlist ',' tSTRSYM '(' call_list ')' */ {create_dim(dotify((yyvsp[-3].symbol),FALSE),'S');} break; - case 309: + case 312: /* function_or_array: tSYMBOL '(' call_list ')' */ {(yyval.symbol)=my_strdup(dotify((yyvsp[-3].symbol),FALSE));} break; - case 310: + case 313: /* stringfunction_or_array: tSTRSYM '(' call_list ')' */ {(yyval.symbol)=my_strdup(dotify((yyvsp[-3].symbol),FALSE));} break; - case 311: + case 314: /* $@11: %empty */ {add_command(cPUSHFREE);} break; - case 318: + case 321: /* $@12: %empty */ {missing_endsub++;missing_endsub_line=yylineno;pushlabel();report_if_missing("can not define a function in a loop or an if-statement",FALSE);if (function_type!=ftNONE) {lyyerror(sERROR,"nested functions not allowed");YYABORT;}} break; - case 319: + case 322: /* $@13: %empty */ {if (exported) create_subr_link((yyvsp[0].symbol)); create_label((yyvsp[0].symbol),cUSER_FUNCTION); add_command(cPUSHSYMLIST);add_command(cCLEARSYMREFS);start_symref_chain(); create_count_params();} break; - case 320: + case 323: /* $@14: %empty */ {create_require(stFREE);add_command(cPOP);} break; - case 321: + case 324: /* function_definition: export tSUB $@12 function_name $@13 '(' paramlist ')' $@14 statement_list endsub */ {add_command(cCLEARSYMREFS);end_symref_chain();add_command(cPOPSYMLIST);create_check_return_value(ftNONE,function_type);function_type=ftNONE;add_command(cRETURN_FROM_CALL);create_endfunction();poplabel();} break; - case 322: + case 325: /* endsub: tEOPROG */ {if (missing_endsub) {sprintf(string,"subroutine starting at line %d has seen no 'end sub' at end of program",missing_endsub_line);error_without_position(sERROR,string);} YYABORT;} break; - case 323: + case 326: /* endsub: tENDSUB */ {missing_endsub--;} break; - case 324: + case 327: /* function_name: tSYMBOL */ {function_type=ftNUMBER;current_function=my_strdup(dotify((yyvsp[0].symbol),FALSE));(yyval.symbol)=my_strdup(dotify((yyvsp[0].symbol),FALSE));} break; - case 325: + case 328: /* function_name: tSTRSYM */ {function_type=ftSTRING;current_function=my_strdup(dotify((yyvsp[0].symbol),FALSE));(yyval.symbol)=my_strdup(dotify((yyvsp[0].symbol),FALSE));} break; - case 326: + case 329: /* export: %empty */ {exported=FALSE;} break; - case 327: + case 330: /* export: tEXPORT */ {exported=TRUE;} break; - case 328: + case 331: /* export: tRUNTIME_CREATED_SUB */ {exported=FALSE;} break; - case 329: + case 332: /* export: tRUNTIME_CREATED_SUB tEXPORT */ {exported=TRUE;} break; - case 332: + case 335: /* local_item: tSYMBOL */ {create_makelocal(dotify((yyvsp[0].symbol),FALSE),syNUMBER);} break; - case 333: + case 336: /* local_item: tSTRSYM */ {create_makelocal(dotify((yyvsp[0].symbol),FALSE),sySTRING);} break; - case 334: + case 337: /* local_item: tSYMBOL '(' call_list ')' */ {create_makelocal(dotify((yyvsp[-3].symbol),FALSE),syARRAY);create_dim(dotify((yyvsp[-3].symbol),FALSE),'d');} break; - case 335: + case 338: /* local_item: tSTRSYM '(' call_list ')' */ {create_makelocal(dotify((yyvsp[-3].symbol),FALSE),syARRAY);create_dim(dotify((yyvsp[-3].symbol),FALSE),'s');} break; - case 338: + case 341: /* static_item: tSYMBOL */ {create_makestatic(dotify((yyvsp[0].symbol),TRUE),syNUMBER);} break; - case 339: + case 342: /* static_item: tSTRSYM */ {create_makestatic(dotify((yyvsp[0].symbol),TRUE),sySTRING);} break; - case 340: + case 343: /* static_item: tSYMBOL '(' call_list ')' */ {create_makestatic(dotify((yyvsp[-3].symbol),TRUE),syARRAY);create_dim(dotify((yyvsp[-3].symbol),TRUE),'D');} break; - case 341: + case 344: /* static_item: tSTRSYM '(' call_list ')' */ {create_makestatic(dotify((yyvsp[-3].symbol),TRUE),syARRAY);create_dim(dotify((yyvsp[-3].symbol),TRUE),'S');} break; - case 345: + case 348: /* paramitem: tSYMBOL */ {create_require(stNUMBER);create_makelocal(dotify((yyvsp[0].symbol),FALSE),syNUMBER);add_command_with_sym_and_diag(cPOPDBLSYM,dotify((yyvsp[0].symbol),FALSE),NULL);} break; - case 346: + case 349: /* paramitem: tSTRSYM */ {create_require(stSTRING);create_makelocal(dotify((yyvsp[0].symbol),FALSE),sySTRING);add_command_with_sym_and_diag(cPOPSTRSYM,dotify((yyvsp[0].symbol),FALSE),NULL);} break; - case 347: + case 350: /* paramitem: tSYMBOL '(' ')' */ {create_require(stNUMBERARRAYREF);create_arraylink(dotify((yyvsp[-2].symbol),FALSE),stNUMBERARRAYREF);} break; - case 348: + case 351: /* paramitem: tSTRSYM '(' ')' */ {create_require(stSTRINGARRAYREF);create_arraylink(dotify((yyvsp[-2].symbol),FALSE),stSTRINGARRAYREF);} break; - case 349: + case 352: /* $@15: %empty */ {loop_nesting++;add_command(cBEGIN_LOOP_MARK);missing_next++;missing_next_line=yylineno;} break; - case 350: + case 353: /* $@16: %empty */ {pushname(dotify((yyvsp[-1].symbol),FALSE)); /* will be used by next_symbol to check equality,NULL */ add_command(cRESETSKIPONCE); add_command(cRESETSKIPONCE2); pushgoto();add_command_with_switch_state(cCONTINUE_HERE);} break; - case 351: + case 354: /* $@17: %empty */ { /* pushes another expression */ add_command(cSKIPONCE); pushlabel(); @@ -4776,395 +4737,395 @@ pushlabel();} break; - case 352: + case 355: /* $@18: %empty */ { swap();popgoto();poplabel();} break; - case 353: + case 356: /* for_loop: tFOR $@15 tSYMBOL tEQU $@16 expression tTO expression step_part $@17 statement_list $@18 next next_symbol */ {add_command(cBREAK_HERE);add_command(cEND_LOOP_MARK);loop_nesting--;} break; - case 354: + case 357: /* next: tEOPROG */ {if (missing_next) {sprintf(string,"for-loop starting at line %d has seen no 'next' at end of program",missing_next_line);error_without_position(sERROR,string);} YYABORT;} break; - case 355: + case 358: /* next: tNEXT */ {missing_next--;} break; - case 356: + case 359: /* next: tENDIF */ {report_conflicting_close("a closing next is expected before endif",'e');} break; - case 357: + case 360: /* next: tWEND */ {report_conflicting_close("a closing next is expected before wend",'w');} break; - case 358: + case 361: /* next: tUNTIL */ {report_conflicting_close("a closing next is expected before until",'l');} break; - case 359: + case 362: /* next: tLOOP */ {report_conflicting_close("a closing next is expected before loop",'l');} break; - case 360: + case 363: /* step_part: %empty */ {create_pushdbl(1);} break; - case 362: + case 365: /* next_symbol: %empty */ {pop(stSTRING);} break; - case 363: + case 366: /* next_symbol: tSYMBOL */ {if (strcmp(pop(stSTRING)->pointer,dotify((yyvsp[0].symbol),FALSE))) {lyyerror(sERROR,"'for' and 'next' do not match"); YYABORT;} } break; - case 364: + case 367: /* $@19: %empty */ {push_switch_id();add_command(cBEGIN_SWITCH_MARK);} break; - case 365: + case 368: /* switch_number_or_string: tSWITCH $@19 number_or_string sep_list case_list default tSEND */ {add_command(cBREAK_HERE);add_command(cPOP);add_command(cEND_SWITCH_MARK);pop_switch_id();} break; - case 371: + case 374: /* $@20: %empty */ {add_command(cSWITCH_COMPARE);add_command(cDECIDE);add_command(cNEXT_CASE);} break; - case 372: + case 375: /* case_list: case_list tCASE number_or_string $@20 statement_list */ {add_command(cNEXT_CASE_HERE);} break; - case 374: + case 377: /* $@21: %empty */ {add_command(cNEXT_CASE_HERE);} break; - case 376: + case 379: /* $@22: %empty */ {loop_nesting++;add_command(cBEGIN_LOOP_MARK);add_command_with_switch_state(cCONTINUE_HERE);missing_loop++;missing_loop_line=yylineno;pushgoto();} break; - case 378: + case 381: /* loop: tEOPROG */ {if (missing_loop) {sprintf(string,"do-loop starting at at line %d has seen no 'loop' at end of program",missing_loop_line);error_without_position(sERROR,string);} YYABORT;} break; - case 379: + case 382: /* loop: tLOOP */ {missing_loop--;popgoto();add_command(cBREAK_HERE);add_command(cEND_LOOP_MARK);loop_nesting--;} break; - case 380: + case 383: /* loop: tENDIF */ {report_conflicting_close("a closing loop is expected before endif",'e');} break; - case 381: + case 384: /* loop: tWEND */ {report_conflicting_close("a closing loop is expected before wend",'w');} break; - case 382: + case 385: /* loop: tUNTIL */ {report_conflicting_close("a closing loop is expected before until",'l');} break; - case 383: + case 386: /* loop: tNEXT */ {report_conflicting_close("a closing loop is expected before next",'n');} break; - case 384: + case 387: /* $@23: %empty */ {loop_nesting++;add_command(cBEGIN_LOOP_MARK);add_command_with_switch_state(cCONTINUE_HERE);missing_wend++;missing_wend_line=yylineno;pushgoto();} break; - case 385: + case 388: /* $@24: %empty */ {add_command(cDECIDE); pushlabel();} break; - case 387: + case 390: /* wend: tEOPROG */ {if (missing_wend) {sprintf(string,"while-loop starting at line %d has seen no 'wend' at end of program",missing_wend_line);error_without_position(sERROR,string);} YYABORT;} break; - case 388: + case 391: /* wend: tWEND */ {missing_wend--;swap();popgoto();poplabel();add_command(cBREAK_HERE);add_command(cEND_LOOP_MARK);loop_nesting--;} break; - case 389: + case 392: /* $@25: %empty */ {loop_nesting++;add_command(cBEGIN_LOOP_MARK);add_command_with_switch_state(cCONTINUE_HERE);missing_until++;missing_until_line=yylineno;pushgoto();} break; - case 391: + case 394: /* until: tEOPROG */ {if (missing_until) {sprintf(string,"repeat-loop starting at line %d has seen no 'until' at end of program",missing_until_line);error_without_position(sERROR,string);} YYABORT;} break; - case 392: + case 395: /* until: tUNTIL expression */ {missing_until--;add_command(cDECIDE);popgoto();add_command(cBREAK_HERE);add_command(cEND_LOOP_MARK);loop_nesting--;} break; - case 393: + case 396: /* until: tENDIF */ {report_conflicting_close("a closing until is expected before endif",'e');} break; - case 394: + case 397: /* until: tWEND */ {report_conflicting_close("a closing until is expected before wend",'w');} break; - case 395: + case 398: /* until: tLOOP */ {report_conflicting_close("a closing until is expected before loop",'l');} break; - case 396: + case 399: /* until: tNEXT */ {report_conflicting_close("a closing until is expected before next",'n');} break; - case 397: + case 400: /* $@26: %empty */ {add_command(cDECIDE);storelabel();pushlabel();} break; - case 398: + case 401: /* $@27: %empty */ {missing_endif++;missing_endif_line=yylineno;} break; - case 399: + case 402: /* $@28: %empty */ {swap();matchgoto();swap();poplabel();} break; - case 400: + case 403: /* $@29: %empty */ {poplabel();} break; - case 402: + case 405: /* endif: tEOPROG */ {if (missing_endif) {sprintf(string,"if-clause starting at line %d has seen no 'fi' at end of program",missing_endif_line);error_without_position(sERROR,string);} YYABORT;} break; - case 403: + case 406: /* endif: tENDIF */ {missing_endif--;} break; - case 404: + case 407: /* endif: tWEND */ {report_conflicting_close("a closing endif is expected before wend",'w');} break; - case 405: + case 408: /* endif: tUNTIL */ {report_conflicting_close("a closing endif is expected before until",'l');} break; - case 406: + case 409: /* endif: tLOOP */ {report_conflicting_close("a closing endif is expected before loop",'l');} break; - case 407: + case 410: /* endif: tNEXT */ {report_conflicting_close("a closing endif is expected before next",'n');} break; - case 408: - {in_short_if++;add_command(cDECIDE);pushlabel();} + case 411: /* $@30: %empty */ + {in_short_if++;add_command(cDECIDE);pushlabel();} break; - case 410: - {error(sERROR,"an if-statement without 'then' does not allow 'endif'");} + case 413: /* end_of_if: tENDIF */ + {error(sERROR,"short if-statement (i.e. without 'then') does not allow 'endif'");} break; - case 411: + case 414: /* end_of_if: tIMPLICITENDIF */ {poplabel();} break; - case 415: + case 418: /* $@31: %empty */ {add_command(cDECIDE);pushlabel();} break; - case 416: + case 419: /* $@32: %empty */ {swap();matchgoto();swap();poplabel();} break; - case 421: + case 424: /* $@33: %empty */ {add_command(cCHKPROMPT);} break; - case 423: + case 426: /* input: tSYMBOL */ {create_myread('d',tileol);add_command_with_sym_and_diag(cPOPDBLSYM,dotify((yyvsp[0].symbol),FALSE),NULL);} break; - case 424: + case 427: /* input: tSYMBOL '(' call_list ')' */ {create_myread('d',tileol);create_doarray(dotify((yyvsp[-3].symbol),FALSE),ASSIGNARRAY);} break; - case 425: + case 428: /* input: tSTRSYM */ {create_myread('s',tileol);add_command_with_sym_and_diag(cPOPSTRSYM,dotify((yyvsp[0].symbol),FALSE),NULL);} break; - case 426: + case 429: /* input: tSTRSYM '(' call_list ')' */ {create_myread('s',tileol);create_doarray(dotify((yyvsp[-3].symbol),FALSE),ASSIGNSTRINGARRAY);} break; - case 429: + case 432: /* readitem: tSYMBOL */ {create_readdata('d');add_command_with_sym_and_diag(cPOPDBLSYM,dotify((yyvsp[0].symbol),FALSE),NULL);} break; - case 430: + case 433: /* readitem: tSYMBOL '(' call_list ')' */ {create_readdata('d');create_doarray(dotify((yyvsp[-3].symbol),FALSE),ASSIGNARRAY);} break; - case 431: + case 434: /* readitem: tSTRSYM */ {create_readdata('s');add_command_with_sym_and_diag(cPOPSTRSYM,dotify((yyvsp[0].symbol),FALSE),NULL);} break; - case 432: + case 435: /* readitem: tSTRSYM '(' call_list ')' */ {create_readdata('s');create_doarray(dotify((yyvsp[-3].symbol),FALSE),ASSIGNSTRINGARRAY);} break; - case 433: + case 436: /* datalist: tSTRING */ {create_strdata((yyvsp[0].string));} break; - case 434: + case 437: /* datalist: const */ {create_dbldata((yyvsp[0].fnum));} break; - case 435: + case 438: /* datalist: datalist ',' tSTRING */ {create_strdata((yyvsp[0].string));} break; - case 436: + case 439: /* datalist: datalist ',' const */ {create_dbldata((yyvsp[0].fnum));} break; - case 440: + case 443: /* printlist: string_expression */ {create_print('s');} break; - case 441: + case 444: /* printlist: printlist ',' string_expression */ {create_print('s');} break; - case 442: + case 445: /* using: %empty */ {create_print('d');} break; - case 443: + case 446: /* using: tUSING string_expression */ {create_print('u');} break; - case 444: + case 447: /* using: tUSING '(' string_expression ',' string_expression ')' */ {create_print('U');} break; - case 445: + case 448: /* $@34: %empty */ {add_command_with_sym_and_diag(cPUSHDBLSYM,dotify((yyvsp[0].symbol),FALSE),NULL);create_pps(cPUSHSTREAM,1);} break; - case 446: + case 449: /* inputbody: '#' tSYMBOL $@34 inputlist */ {create_pps(cPOPSTREAM,0);} break; - case 447: + case 450: /* $@35: %empty */ {create_pushdbl(atoi((yyvsp[0].digits)));create_pps(cPUSHSTREAM,1);} break; - case 448: + case 451: /* inputbody: '#' tDIGITS $@35 inputlist */ {create_pps(cPOPSTREAM,0);} break; - case 449: + case 452: /* $@36: %empty */ {create_pps(cPUSHSTREAM,1);} break; - case 450: + case 453: /* inputbody: '#' '(' expression ')' $@36 inputlist */ {create_pps(cPOPSTREAM,0);} break; - case 451: + case 454: /* $@37: %empty */ {add_command(cMOVE);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,1);} break; - case 452: + case 455: /* inputbody: tAT '(' expression ',' expression ')' $@37 prompt inputlist */ {create_pps(cPOPSTREAM,0);} break; - case 453: + case 456: /* $@38: %empty */ {create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,1);} break; - case 454: + case 457: /* inputbody: $@38 prompt inputlist */ {create_pps(cPOPSTREAM,0);} break; - case 455: + case 458: /* prompt: %empty */ {create_pushstr("?");create_print('s');} break; - case 456: + case 459: /* prompt: tSTRING */ {create_pushstr((yyvsp[0].string));create_print('s');} break; - case 457: + case 460: /* printintro: %empty */ {create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);} break; - case 458: + case 461: /* printintro: '#' tSYMBOL */ {add_command_with_sym_and_diag(cPUSHDBLSYM,dotify((yyvsp[0].symbol),FALSE),NULL);create_pps(cPUSHSTREAM,0);} break; - case 459: + case 462: /* printintro: '#' tDIGITS */ {create_pushdbl(atoi((yyvsp[0].digits)));create_pps(cPUSHSTREAM,0);} break; - case 460: + case 463: /* printintro: '#' '(' expression ')' */ {create_pps(cPUSHSTREAM,0);} break; - case 461: + case 464: /* printintro: tREVERSE */ {create_colour(1);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);} break; - case 462: + case 465: /* printintro: tCOLOUR '(' string_expression ')' */ {create_colour(2);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);} break; - case 463: + case 466: /* printintro: tCOLOUR '(' string_expression ',' string_expression ')' */ {create_colour(3);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);} break; - case 464: + case 467: /* printintro: tAT '(' expression ',' expression ')' */ {add_command(cMOVE);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);} break; - case 465: + case 468: /* printintro: tREVERSE tAT '(' expression ',' expression ')' */ {add_command(cMOVE);create_colour(1);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);} break; - case 466: + case 469: /* printintro: tCOLOUR '(' string_expression ')' tAT '(' expression ',' expression ')' */ {add_command(cMOVE);create_colour(2);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);} break; - case 467: + case 470: /* printintro: tCOLOUR '(' string_expression ',' string_expression ')' tAT '(' expression ',' expression ')' */ {add_command(cMOVE);create_colour(3);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);} break; - case 468: + case 471: /* printintro: tAT '(' expression ',' expression ')' tREVERSE */ {create_colour(1);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);add_command(cMOVE);} break; - case 469: + case 472: /* printintro: tAT '(' expression ',' expression ')' tCOLOUR '(' string_expression ')' */ {create_colour(2);add_command(cMOVE);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);} break; - case 470: + case 473: /* printintro: tAT '(' expression ',' expression ')' tCOLOUR '(' string_expression ',' string_expression ')' */ {create_colour(3);add_command(cMOVE);create_pushdbl(STDIO_STREAM);create_pps(cPUSHSTREAM,0);} break; - case 473: + case 476: /* goto_list: symbol_or_lineno */ {create_goto((function_type!=ftNONE)?dotify((yyvsp[0].symbol),TRUE):(yyvsp[0].symbol));add_command(cFINDNOP);} break; - case 474: + case 477: /* goto_list: goto_list ',' symbol_or_lineno */ {create_goto((function_type!=ftNONE)?dotify((yyvsp[0].symbol),TRUE):(yyvsp[0].symbol));add_command(cFINDNOP);} break; - case 475: + case 478: /* gosub_list: symbol_or_lineno */ {create_gosub((function_type!=ftNONE)?dotify((yyvsp[0].symbol),TRUE):(yyvsp[0].symbol));add_command(cFINDNOP);} break; - case 476: + case 479: /* gosub_list: gosub_list ',' symbol_or_lineno */ {create_gosub((function_type!=ftNONE)?dotify((yyvsp[0].symbol),TRUE):(yyvsp[0].symbol));add_command(cFINDNOP);} break; @@ -5183,11 +5144,10 @@ case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; - YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; *++yylsp = yyloc; @@ -5212,50 +5172,15 @@ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif } yyerror_range[1] = yylloc; - if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an @@ -5304,13 +5229,14 @@ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) @@ -5324,7 +5250,7 @@ yyerror_range[1] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp); + YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -5335,13 +5261,11 @@ YY_IGNORE_MAYBE_UNINITIALIZED_END yyerror_range[2] = yylloc; - /* Using YYLLOC is tempting, but would change the location of - the lookahead. YYLOC is available though. */ - YYLLOC_DEFAULT (yyloc, yyerror_range, 2); - *++yylsp = yyloc; + ++yylsp; + YYLLOC_DEFAULT (*yylsp, yyerror_range, 2); /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -5363,20 +5287,20 @@ goto yyreturn; -#if !defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -5393,16 +5317,14 @@ while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[+*yyssp], yyvsp, yylsp); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif + return yyresult; } + diff -Nru yabasic-2.90.1/bison.h yabasic-2.90.2/bison.h --- yabasic-2.90.1/bison.h 2021-07-11 12:27:06.000000000 +0000 +++ yabasic-2.90.2/bison.h 2022-01-08 20:05:40.000000000 +0000 @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.7.5. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -31,8 +31,9 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ #ifndef YY_YY_BISON_H_INCLUDED # define YY_YY_BISON_H_INCLUDED @@ -44,197 +45,203 @@ extern int yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - tFNUM = 258, - tSYMBOL = 259, - tSTRSYM = 260, - tDOCU = 261, - tDIGITS = 262, - tHEXDIGITS = 263, - tBINDIGITS = 264, - tSTRING = 265, - tFOR = 266, - tTO = 267, - tSTEP = 268, - tNEXT = 269, - tWHILE = 270, - tWEND = 271, - tREPEAT = 272, - tUNTIL = 273, - tIMPORT = 274, - tGOTO = 275, - tGOSUB = 276, - tLABEL = 277, - tON = 278, - tSUB = 279, - tENDSUB = 280, - tLOCAL = 281, - tSTATIC = 282, - tEXPORT = 283, - tERROR = 284, - tEXECUTE = 285, - tEXECUTE2 = 286, - tCOMPILE = 287, - tRUNTIME_CREATED_SUB = 288, - tINTERRUPT = 289, - tBREAK = 290, - tCONTINUE = 291, - tSWITCH = 292, - tSEND = 293, - tCASE = 294, - tDEFAULT = 295, - tLOOP = 296, - tDO = 297, - tSEP = 298, - tEOPROG = 299, - tIF = 300, - tTHEN = 301, - tELSE = 302, - tELSIF = 303, - tENDIF = 304, - tIMPLICITENDIF = 305, - tUSING = 306, - tPRINT = 307, - tINPUT = 308, - tRETURN = 309, - tDIM = 310, - tEND = 311, - tEXIT = 312, - tAT = 313, - tSCREEN = 314, - tREVERSE = 315, - tCOLOUR = 316, - tBACKCOLOUR = 317, - tAND = 318, - tOR = 319, - tNOT = 320, - tBITNOT = 321, - tEOR = 322, - tSHL = 323, - tSHR = 324, - tNEQ = 325, - tLEQ = 326, - tGEQ = 327, - tLTN = 328, - tGTN = 329, - tEQU = 330, - tPOW = 331, - tREAD = 332, - tDATA = 333, - tRESTORE = 334, - tOPEN = 335, - tCLOSE = 336, - tSEEK = 337, - tTELL = 338, - tAS = 339, - tREADING = 340, - tWRITING = 341, - tORIGIN = 342, - tWINDOW = 343, - tDOT = 344, - tLINE = 345, - tCIRCLE = 346, - tTRIANGLE = 347, - tTEXT = 348, - tCLEAR = 349, - tFILL = 350, - tPRINTER = 351, - tWAIT = 352, - tBELL = 353, - tLET = 354, - tARDIM = 355, - tARSIZE = 356, - tBIND = 357, - tRECT = 358, - tGETBIT = 359, - tPUTBIT = 360, - tGETCHAR = 361, - tPUTCHAR = 362, - tNEW = 363, - tCURVE = 364, - tSIN = 365, - tASIN = 366, - tCOS = 367, - tACOS = 368, - tTAN = 369, - tATAN = 370, - tEXP = 371, - tLOG = 372, - tSQRT = 373, - tSQR = 374, - tMYEOF = 375, - tABS = 376, - tSIG = 377, - tINT = 378, - tCEIL = 379, - tFLOOR = 380, - tFRAC = 381, - tROUND = 382, - tMOD = 383, - tRAN = 384, - tVAL = 385, - tLEFT = 386, - tRIGHT = 387, - tMID = 388, - tLEN = 389, - tMIN = 390, - tMAX = 391, - tSTR = 392, - tINKEY = 393, - tCHR = 394, - tASC = 395, - tHEX = 396, - tDEC = 397, - tBIN = 398, - tUPPER = 399, - tLOWER = 400, - tMOUSEX = 401, - tMOUSEY = 402, - tMOUSEB = 403, - tMOUSEMOD = 404, - tTRIM = 405, - tLTRIM = 406, - tRTRIM = 407, - tINSTR = 408, - tRINSTR = 409, - tCHOMP = 410, - tSYSTEM = 411, - tSYSTEM2 = 412, - tPEEK = 413, - tPEEK2 = 414, - tPOKE = 415, - tFRNFN_CALL = 416, - tFRNFN_CALL2 = 417, - tFRNFN_SIZE = 418, - tFRNBF_ALLOC = 419, - tFRNBF_FREE = 420, - tFRNBF_SIZE = 421, - tFRNBF_DUMP = 422, - tFRNBF_SET = 423, - tFRNBF_GET = 424, - tFRNBF_GET2 = 425, - tFRNBF_GET_BUFFER = 426, - tFRNBF_SET_BUFFER = 427, - tDATE = 428, - tTIME = 429, - tTOKEN = 430, - tTOKENALT = 431, - tSPLIT = 432, - tSPLITALT = 433, - tGLOB = 434, - tSTART_PROGRAM = 435, - tSTART_EXPRESSION = 436, - tSTART_STRING_EXPRESSION = 437, - tSTART_ASSIGNMENT = 438, - tSTART_FUNCTION_DEFINITION = 439, - tEVAL = 440, - tEVAL2 = 441, - UMINUS = 442 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + tFNUM = 258, /* tFNUM */ + tSYMBOL = 259, /* tSYMBOL */ + tSTRSYM = 260, /* tSTRSYM */ + tDOCU = 261, /* tDOCU */ + tDIGITS = 262, /* tDIGITS */ + tHEXDIGITS = 263, /* tHEXDIGITS */ + tBINDIGITS = 264, /* tBINDIGITS */ + tSTRING = 265, /* tSTRING */ + tFOR = 266, /* tFOR */ + tTO = 267, /* tTO */ + tSTEP = 268, /* tSTEP */ + tNEXT = 269, /* tNEXT */ + tWHILE = 270, /* tWHILE */ + tWEND = 271, /* tWEND */ + tREPEAT = 272, /* tREPEAT */ + tUNTIL = 273, /* tUNTIL */ + tIMPORT = 274, /* tIMPORT */ + tGOTO = 275, /* tGOTO */ + tGOSUB = 276, /* tGOSUB */ + tLABEL = 277, /* tLABEL */ + tON = 278, /* tON */ + tSUB = 279, /* tSUB */ + tENDSUB = 280, /* tENDSUB */ + tLOCAL = 281, /* tLOCAL */ + tSTATIC = 282, /* tSTATIC */ + tEXPORT = 283, /* tEXPORT */ + tERROR = 284, /* tERROR */ + tEXECUTE = 285, /* tEXECUTE */ + tEXECUTE2 = 286, /* tEXECUTE2 */ + tCOMPILE = 287, /* tCOMPILE */ + tRUNTIME_CREATED_SUB = 288, /* tRUNTIME_CREATED_SUB */ + tINTERRUPT = 289, /* tINTERRUPT */ + tBREAK = 290, /* tBREAK */ + tCONTINUE = 291, /* tCONTINUE */ + tSWITCH = 292, /* tSWITCH */ + tSEND = 293, /* tSEND */ + tCASE = 294, /* tCASE */ + tDEFAULT = 295, /* tDEFAULT */ + tLOOP = 296, /* tLOOP */ + tDO = 297, /* tDO */ + tSEP = 298, /* tSEP */ + tEOPROG = 299, /* tEOPROG */ + tIF = 300, /* tIF */ + tTHEN = 301, /* tTHEN */ + tELSE = 302, /* tELSE */ + tELSIF = 303, /* tELSIF */ + tENDIF = 304, /* tENDIF */ + tIMPLICITENDIF = 305, /* tIMPLICITENDIF */ + tUSING = 306, /* tUSING */ + tPRINT = 307, /* tPRINT */ + tINPUT = 308, /* tINPUT */ + tRETURN = 309, /* tRETURN */ + tDIM = 310, /* tDIM */ + tEND = 311, /* tEND */ + tEXIT = 312, /* tEXIT */ + tAT = 313, /* tAT */ + tSCREEN = 314, /* tSCREEN */ + tREVERSE = 315, /* tREVERSE */ + tCOLOUR = 316, /* tCOLOUR */ + tBACKCOLOUR = 317, /* tBACKCOLOUR */ + tAND = 318, /* tAND */ + tOR = 319, /* tOR */ + tNOT = 320, /* tNOT */ + tBITNOT = 321, /* tBITNOT */ + tEOR = 322, /* tEOR */ + tSHL = 323, /* tSHL */ + tSHR = 324, /* tSHR */ + tNEQ = 325, /* tNEQ */ + tLEQ = 326, /* tLEQ */ + tGEQ = 327, /* tGEQ */ + tLTN = 328, /* tLTN */ + tGTN = 329, /* tGTN */ + tEQU = 330, /* tEQU */ + tEQU2 = 331, /* tEQU2 */ + tPOW = 332, /* tPOW */ + tREAD = 333, /* tREAD */ + tDATA = 334, /* tDATA */ + tRESTORE = 335, /* tRESTORE */ + tOPEN = 336, /* tOPEN */ + tCLOSE = 337, /* tCLOSE */ + tSEEK = 338, /* tSEEK */ + tTELL = 339, /* tTELL */ + tAS = 340, /* tAS */ + tREADING = 341, /* tREADING */ + tWRITING = 342, /* tWRITING */ + tORIGIN = 343, /* tORIGIN */ + tWINDOW = 344, /* tWINDOW */ + tDOT = 345, /* tDOT */ + tLINE = 346, /* tLINE */ + tCIRCLE = 347, /* tCIRCLE */ + tTRIANGLE = 348, /* tTRIANGLE */ + tTEXT = 349, /* tTEXT */ + tCLEAR = 350, /* tCLEAR */ + tFILL = 351, /* tFILL */ + tPRINTER = 352, /* tPRINTER */ + tWAIT = 353, /* tWAIT */ + tBELL = 354, /* tBELL */ + tLET = 355, /* tLET */ + tARDIM = 356, /* tARDIM */ + tARSIZE = 357, /* tARSIZE */ + tBIND = 358, /* tBIND */ + tRECT = 359, /* tRECT */ + tGETBIT = 360, /* tGETBIT */ + tPUTBIT = 361, /* tPUTBIT */ + tGETCHAR = 362, /* tGETCHAR */ + tPUTCHAR = 363, /* tPUTCHAR */ + tNEW = 364, /* tNEW */ + tCURVE = 365, /* tCURVE */ + tSIN = 366, /* tSIN */ + tASIN = 367, /* tASIN */ + tCOS = 368, /* tCOS */ + tACOS = 369, /* tACOS */ + tTAN = 370, /* tTAN */ + tATAN = 371, /* tATAN */ + tEXP = 372, /* tEXP */ + tLOG = 373, /* tLOG */ + tSQRT = 374, /* tSQRT */ + tSQR = 375, /* tSQR */ + tMYEOF = 376, /* tMYEOF */ + tABS = 377, /* tABS */ + tSIG = 378, /* tSIG */ + tINT = 379, /* tINT */ + tCEIL = 380, /* tCEIL */ + tFLOOR = 381, /* tFLOOR */ + tFRAC = 382, /* tFRAC */ + tROUND = 383, /* tROUND */ + tMOD = 384, /* tMOD */ + tRAN = 385, /* tRAN */ + tVAL = 386, /* tVAL */ + tLEFT = 387, /* tLEFT */ + tRIGHT = 388, /* tRIGHT */ + tMID = 389, /* tMID */ + tLEN = 390, /* tLEN */ + tMIN = 391, /* tMIN */ + tMAX = 392, /* tMAX */ + tSTR = 393, /* tSTR */ + tINKEY = 394, /* tINKEY */ + tCHR = 395, /* tCHR */ + tASC = 396, /* tASC */ + tHEX = 397, /* tHEX */ + tDEC = 398, /* tDEC */ + tBIN = 399, /* tBIN */ + tUPPER = 400, /* tUPPER */ + tLOWER = 401, /* tLOWER */ + tMOUSEX = 402, /* tMOUSEX */ + tMOUSEY = 403, /* tMOUSEY */ + tMOUSEB = 404, /* tMOUSEB */ + tMOUSEMOD = 405, /* tMOUSEMOD */ + tTRIM = 406, /* tTRIM */ + tLTRIM = 407, /* tLTRIM */ + tRTRIM = 408, /* tRTRIM */ + tINSTR = 409, /* tINSTR */ + tRINSTR = 410, /* tRINSTR */ + tCHOMP = 411, /* tCHOMP */ + tSYSTEM = 412, /* tSYSTEM */ + tSYSTEM2 = 413, /* tSYSTEM2 */ + tPEEK = 414, /* tPEEK */ + tPEEK2 = 415, /* tPEEK2 */ + tPOKE = 416, /* tPOKE */ + tFRNFN_CALL = 417, /* tFRNFN_CALL */ + tFRNFN_CALL2 = 418, /* tFRNFN_CALL2 */ + tFRNFN_SIZE = 419, /* tFRNFN_SIZE */ + tFRNBF_ALLOC = 420, /* tFRNBF_ALLOC */ + tFRNBF_FREE = 421, /* tFRNBF_FREE */ + tFRNBF_SIZE = 422, /* tFRNBF_SIZE */ + tFRNBF_DUMP = 423, /* tFRNBF_DUMP */ + tFRNBF_SET = 424, /* tFRNBF_SET */ + tFRNBF_GET = 425, /* tFRNBF_GET */ + tFRNBF_GET2 = 426, /* tFRNBF_GET2 */ + tFRNBF_GET_BUFFER = 427, /* tFRNBF_GET_BUFFER */ + tFRNBF_SET_BUFFER = 428, /* tFRNBF_SET_BUFFER */ + tDATE = 429, /* tDATE */ + tTIME = 430, /* tTIME */ + tTOKEN = 431, /* tTOKEN */ + tTOKENALT = 432, /* tTOKENALT */ + tSPLIT = 433, /* tSPLIT */ + tSPLITALT = 434, /* tSPLITALT */ + tGLOB = 435, /* tGLOB */ + tSTART_PROGRAM = 436, /* tSTART_PROGRAM */ + tSTART_EXPRESSION = 437, /* tSTART_EXPRESSION */ + tSTART_STRING_EXPRESSION = 438, /* tSTART_STRING_EXPRESSION */ + tSTART_ASSIGNMENT = 439, /* tSTART_ASSIGNMENT */ + tSTART_FUNCTION_DEFINITION = 440, /* tSTART_FUNCTION_DEFINITION */ + tEVAL = 441, /* tEVAL */ + tEVAL2 = 442, /* tEVAL2 */ + UMINUS = 443 /* UMINUS */ }; + typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ @@ -245,7 +252,7 @@ double fnum; /* double number */ int inum; /* integer number */ int token; /* token of command */ - int sep; /* number of newlines */ + int nnl; /* number of newlines */ char *string; /* quoted string */ char *symbol; /* general symbol */ char *digits; /* string of digits */ diff -Nru yabasic-2.90.1/ChangeLog yabasic-2.90.2/ChangeLog --- yabasic-2.90.1/ChangeLog 2021-07-11 11:55:24.000000000 +0000 +++ yabasic-2.90.2/ChangeLog 2022-01-08 20:05:40.000000000 +0000 @@ -1,9 +1,15 @@ -Version 2.90.1 (July 11, 20201) +Version 2.90.2 (January 6, 2022) + - Fixed precision error for print using under windows + - Better error-reporting for an edge case of short-if + - Allow '==' to check for equality and '!=' for inequality ('=' and '<>' still work) + + +Version 2.90.1 (July 11, 2021) - Repaired the docu (especially yabasic.htm) - Removed references to the old documentation (still available on github) -Version 2.90.0 (July 10, 20201) +Version 2.90.0 (July 10, 2021) - Fixed an error with local variables - Moved to a new building-environment (see github and there README.org for details) diff -Nru yabasic-2.90.1/compile yabasic-2.90.2/compile --- yabasic-2.90.1/compile 2020-02-05 14:31:03.000000000 +0000 +++ yabasic-2.90.2/compile 2021-01-04 11:25:18.000000000 +0000 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -53,7 +53,7 @@ MINGW*) file_conv=mingw ;; - CYGWIN*) + CYGWIN* | MSYS*) file_conv=cygwin ;; *) @@ -67,7 +67,7 @@ mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/*) + cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) diff -Nru yabasic-2.90.1/configure yabasic-2.90.2/configure --- yabasic-2.90.1/configure 2021-07-11 11:55:34.000000000 +0000 +++ yabasic-2.90.2/configure 2022-01-07 05:49:42.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for yabasic 2.90.1. +# Generated by GNU Autoconf 2.69 for yabasic 2.90.2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='yabasic' PACKAGE_TARNAME='yabasic' -PACKAGE_VERSION='2.90.1' -PACKAGE_STRING='yabasic 2.90.1' +PACKAGE_VERSION='2.90.2' +PACKAGE_STRING='yabasic 2.90.2' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1342,7 +1342,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures yabasic 2.90.1 to adapt to many kinds of systems. +\`configure' configures yabasic 2.90.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1417,7 +1417,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of yabasic 2.90.1:";; + short | recursive ) echo "Configuration of yabasic 2.90.2:";; esac cat <<\_ACEOF @@ -1538,7 +1538,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -yabasic configure 2.90.1 +yabasic configure 2.90.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1957,7 +1957,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by yabasic $as_me 2.90.1, which was +It was created by yabasic $as_me 2.90.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2511,12 +2511,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then @@ -2821,7 +2816,7 @@ # Define the identity of the package. PACKAGE='yabasic' - VERSION='2.90.1' + VERSION='2.90.2' cat >>confdefs.h <<_ACEOF @@ -14911,7 +14906,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by yabasic $as_me 2.90.1, which was +This file was extended by yabasic $as_me 2.90.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14977,7 +14972,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -yabasic config.status 2.90.1 +yabasic config.status 2.90.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -16070,7 +16065,9 @@ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } diff -Nru yabasic-2.90.1/configure.ac yabasic-2.90.2/configure.ac --- yabasic-2.90.1/configure.ac 2021-07-11 10:59:35.000000000 +0000 +++ yabasic-2.90.2/configure.ac 2022-01-06 21:16:53.000000000 +0000 @@ -4,7 +4,7 @@ dnl autoreconf --install dnl automake --add-missing --copy -AC_INIT([yabasic], [2.90.1]) +AC_INIT([yabasic], [2.90.2]) AC_CONFIG_SRCDIR([main.c]) AM_INIT_AUTOMAKE LT_INIT diff -Nru yabasic-2.90.1/debian/changelog yabasic-2.90.2/debian/changelog --- yabasic-2.90.1/debian/changelog 2021-09-24 18:52:52.000000000 +0000 +++ yabasic-2.90.2/debian/changelog 2022-02-13 10:46:26.000000000 +0000 @@ -1,3 +1,14 @@ +yabasic (1:2.90.2-1) unstable; urgency=medium + + * New upstream release + - Fixed precision error for print using under windows + - Better error-reporting for an edge case of short-if + - Allow '==' to check for equality and '!=' for + inequality ('=' and '<>' still work) + * Update debian/copyright + + -- Graham Inggs Sun, 13 Feb 2022 10:46:26 +0000 + yabasic (1:2.90.1-1) unstable; urgency=medium * New upstream release diff -Nru yabasic-2.90.1/debian/copyright yabasic-2.90.2/debian/copyright --- yabasic-2.90.1/debian/copyright 2021-09-24 18:49:49.000000000 +0000 +++ yabasic-2.90.2/debian/copyright 2022-02-13 10:45:11.000000000 +0000 @@ -4,7 +4,7 @@ Source: http://www.yabasic.de/ Files: * -Copyright: 1995-2021 Marc Ihm +Copyright: 1995-2022 Marc Ihm License: Expat Files: whereami.* @@ -16,7 +16,7 @@ 1998-2000 Robert S. Edmonds 2001-2008 Matej Vela 2009 Ralf Treinen - 2016-2021 Graham Inggs + 2016-2022 Graham Inggs License: GPL-2.0+ License: Expat diff -Nru yabasic-2.90.1/flex.c yabasic-2.90.2/flex.c --- yabasic-2.90.1/flex.c 2021-07-11 12:27:06.000000000 +0000 +++ yabasic-2.90.2/flex.c 2022-01-08 20:05:40.000000000 +0000 @@ -451,8 +451,8 @@ /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 244 -#define YY_END_OF_BUFFER 245 +#define YY_NUM_RULES 246 +#define YY_END_OF_BUFFER 247 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -460,132 +460,133 @@ flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_acclist[1100] = +static const flex_int16_t yy_acclist[1102] = { 0, - 16386, 4, 4, 14, 14, 245, 243, 244, 1, 243, - 244, 7, 244, 230, 243, 244, 243, 244, 231, 243, - 244, 231, 243, 244, 231, 235, 243, 244, 231, 243, - 244, 234, 235, 243, 244, 234, 235, 243, 244, 8, - 231, 243, 244, 228, 243, 244, 227, 243, 244, 229, - 243, 244, 81, 243, 244, 183, 243, 244, 240, 243, - 244, 240, 243, 244, 240, 243, 244, 240, 243, 244, - 240, 243, 244, 240, 243, 244, 240, 243, 244, 240, - 243, 244, 240, 243, 244, 240, 243, 244, 240, 243, - 244, 240, 243, 244, 240, 243, 244, 240, 243, 244, - - 240, 243, 244, 240, 243, 244, 240, 243, 244, 240, - 243, 244, 240, 243, 244, 240, 243, 244, 240, 243, - 244, 240, 243, 244, 222, 243, 244, 1, 243, 244, - 16386, 243, 244, 243, 244, 8194, 234, 235, 243, 244, - 8194, 234, 235, 243, 244, 244, 3, 244, 4, 244, - 5, 244, 14, 244, 15, 244, 235, 244, 234, 235, - 244, 234, 235, 244, 1, 6, 242, 242, 223, 235, - 10, 235, 234, 235, 225, 224, 226, 241, 240, 240, - 240, 240, 240, 44, 240, 182, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - - 240, 240, 42, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 69, 240, 240, 240, 240, 240, 240, 240, - 240, 63, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 59, 240, 240, 92, - 240, 240, 240, 236, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 43, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 1,16386, 8194, 17, 18, 8194, 234, 235, - 3, 4, 14, 235, 10, 233, 232, 240, 149, 240, - - 240, 91, 240, 240, 178, 240, 240, 240, 240, 240, - 240, 240, 240, 113, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 136, 240, 240, 240, - 181, 240, 240, 84, 240, 16, 240, 102, 240, 240, - 86, 240, 168, 240, 95, 240, 240, 240, 240, 240, - 240, 140, 240, 240, 240, 240, 36, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 144, - 240, 240, 240, 166, 240, 128, 240, 240, 240, 141, - 240, 240, 240, 240, 154, 240, 240, 153, 240, 151, - 240, 240, 122, 240, 240, 93, 240, 240, 240, 240, - - 240, 240, 240, 240, 240, 152, 240, 240, 240, 240, - 12, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 97, 240, 98, 240, 150, 240, 134, - 240, 240, 240, 143, 240, 240, 240, 240, 55, 240, - 240, 240, 138, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 167, 240, 240, 240, 240, 240, - 240, 96, 240, 240, 137, 240, 240, 135, 240, 139, - 240, 240, 127, 240, 126, 240, 180, 241, 133, 240, - 240, 240, 240, 39, 240, 145, 240, 240, 177, 241, - 240, 240, 240, 240, 240, 240, 240, 89, 240, 240, - - 240, 16, 16, 240, 65, 240, 240, 240, 240, 240, - 22, 240, 240, 87, 240, 240, 240, 108, 240, 240, - 240, 148, 240, 240, 240, 240, 240, 221, 240, 240, - 53, 240, 179, 241, 240, 240, 240, 240, 240, 240, - 240, 103, 240, 240, 41, 240, 240, 240, 157, 241, - 240, 48, 240, 240, 70, 240, 240, 240, 189, 240, - 191, 240, 240, 240, 240, 88, 240, 112, 240, 240, - 9, 11, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 72, 240, 240, 240, 142, 240, 240, 47, - 240, 169, 241, 240, 240, 240, 73, 240, 110, 240, - - 64, 240, 240, 240, 240, 240, 238, 240, 240, 240, - 240, 123, 240, 50, 240, 240, 240, 240, 240, 240, - 240, 240, 37, 240, 240, 240, 107, 240, 71, 240, - 77, 240, 240, 240, 240, 104, 240, 187, 241, 240, - 16, 16, 240, 240, 66, 240, 68, 240, 35, 240, - 237, 240, 23, 241, 240, 240, 239, 240, 240, 146, - 240, 240, 240, 240, 240, 240, 54, 240, 240, 240, - 82, 240, 163, 240, 240, 62, 240, 155, 241, 57, - 240, 240, 240, 240, 240, 240, 124, 240, 190, 241, - 74, 240, 240, 240, 240, 240, 85, 240, 9, 9, - - 240, 240, 240, 240, 240, 240, 147, 240, 240, 240, - 240, 125, 240, 219, 240, 240, 240, 240, 240, 188, - 241, 217, 240, 240, 162, 241, 52, 240, 240, 75, - 240, 49, 240, 240, 240, 240, 240, 240, 240, 115, - 240, 94, 240, 165, 241, 105, 240, 78, 240, 240, - 240, 240, 240, 67, 240, 26, 27, 240, 34, 240, - 109, 240, 240, 240, 240, 240, 240, 240, 170, 241, - 240, 158, 241, 160, 241, 173, 240, 240, 171, 240, - 172, 240, 240, 100, 240, 240, 116, 240, 240, 240, - 240, 51, 240, 240, 83, 240, 240, 156, 241, 164, - - 240, 161, 241, 240, 184, 240, 220, 241, 58, 240, - 240, 38, 240, 185, 240, 218, 241, 240, 159, 241, - 99, 240, 240, 240, 240, 240, 114, 240, 117, 241, - 21, 240, 240, 40, 240, 240, 25, 19, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 119, 241, 240, - 240, 240, 240, 240, 101, 240, 240, 45, 240, 240, - 90, 240, 76, 240, 240, 240, 186, 241, 240, 46, - 240, 129, 240, 240, 240, 118, 241, 61, 240, 240, - 20, 241, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 13, 240, 240, 175, 240, 132, 240, 240, - - 240, 240, 240, 106, 240, 240, 131, 240, 79, 240, - 240, 240, 28, 29, 240, 240, 240, 240, 240, 199, - 240, 205, 240, 240, 240, 240, 240, 13, 60, 240, - 240, 240, 132, 240, 120, 240, 111, 240, 240, 240, - 240, 80, 240, 240, 30, 31, 240, 240, 240, 240, - 216, 240, 201, 241, 240, 240, 214, 240, 193, 240, - 197, 240, 121, 241, 13, 240, 240, 132, 240, 56, - 240, 240, 240, 32, 33, 240, 240, 240, 212, 241, - 240, 240, 195, 241, 13, 174, 240, 240, 240, 240, - 240, 240, 240, 210, 241, 240, 240, 240, 240, 240, - - 16, 240, 240, 240, 240, 240, 176, 240, 240, 130, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 207, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 203, 241, - 240, 240, 240, 240, 198, 240, 204, 240, 240, 240, - 240, 240, 240, 240, 215, 240, 200, 241, 240, 240, - 213, 240, 240, 240, 24, 240, 240, 211, 241, 240, - 240, 240, 240, 209, 241, 240, 240, 240, 192, 240, - 196, 240, 240, 240, 240, 194, 241, 240, 240, 240, - 208, 241, 240, 240, 240, 206, 240, 202, 241 + 16386, 4, 4, 14, 14, 247, 245, 246, 1, 245, + 246, 7, 246, 232, 245, 246, 245, 246, 233, 245, + 246, 233, 245, 246, 233, 237, 245, 246, 233, 245, + 246, 236, 237, 245, 246, 236, 237, 245, 246, 8, + 233, 245, 246, 230, 245, 246, 228, 245, 246, 231, + 245, 246, 81, 245, 246, 183, 245, 246, 242, 245, + 246, 242, 245, 246, 242, 245, 246, 242, 245, 246, + 242, 245, 246, 242, 245, 246, 242, 245, 246, 242, + 245, 246, 242, 245, 246, 242, 245, 246, 242, 245, + 246, 242, 245, 246, 242, 245, 246, 242, 245, 246, + + 242, 245, 246, 242, 245, 246, 242, 245, 246, 242, + 245, 246, 242, 245, 246, 242, 245, 246, 242, 245, + 246, 242, 245, 246, 222, 245, 246, 1, 245, 246, + 16386, 245, 246, 245, 246, 8194, 236, 237, 245, 246, + 8194, 236, 237, 245, 246, 246, 3, 246, 4, 246, + 5, 246, 14, 246, 15, 246, 237, 246, 236, 237, + 246, 236, 237, 246, 1, 6, 225, 244, 244, 223, + 237, 10, 237, 236, 237, 226, 224, 229, 227, 243, + 242, 242, 242, 242, 242, 44, 242, 182, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + + 242, 242, 242, 242, 42, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 69, 242, 242, 242, 242, 242, + 242, 242, 242, 63, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 59, 242, + 242, 92, 242, 242, 242, 238, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 43, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 1,16386, 8194, 17, 18, 8194, + 236, 237, 3, 4, 14, 237, 10, 235, 234, 242, + + 149, 242, 242, 91, 242, 242, 178, 242, 242, 242, + 242, 242, 242, 242, 242, 113, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 136, 242, + 242, 242, 181, 242, 242, 84, 242, 16, 242, 102, + 242, 242, 86, 242, 168, 242, 95, 242, 242, 242, + 242, 242, 242, 140, 242, 242, 242, 242, 36, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 144, 242, 242, 242, 166, 242, 128, 242, 242, + 242, 141, 242, 242, 242, 242, 154, 242, 242, 153, + 242, 151, 242, 242, 122, 242, 242, 93, 242, 242, + + 242, 242, 242, 242, 242, 242, 242, 152, 242, 242, + 242, 242, 12, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 97, 242, 98, 242, 150, + 242, 134, 242, 242, 242, 143, 242, 242, 242, 242, + 55, 242, 242, 242, 138, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 167, 242, 242, 242, + 242, 242, 242, 96, 242, 242, 137, 242, 242, 135, + 242, 139, 242, 242, 127, 242, 126, 242, 180, 243, + 133, 242, 242, 242, 242, 39, 242, 145, 242, 242, + 177, 243, 242, 242, 242, 242, 242, 242, 242, 89, + + 242, 242, 242, 16, 16, 242, 65, 242, 242, 242, + 242, 242, 22, 242, 242, 87, 242, 242, 242, 108, + 242, 242, 242, 148, 242, 242, 242, 242, 242, 221, + 242, 242, 53, 242, 179, 243, 242, 242, 242, 242, + 242, 242, 242, 103, 242, 242, 41, 242, 242, 242, + 157, 243, 242, 48, 242, 242, 70, 242, 242, 242, + 189, 242, 191, 242, 242, 242, 242, 88, 242, 112, + 242, 242, 9, 11, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 72, 242, 242, 242, 142, 242, + 242, 47, 242, 169, 243, 242, 242, 242, 73, 242, + + 110, 242, 64, 242, 242, 242, 242, 242, 240, 242, + 242, 242, 242, 123, 242, 50, 242, 242, 242, 242, + 242, 242, 242, 242, 37, 242, 242, 242, 107, 242, + 71, 242, 77, 242, 242, 242, 242, 104, 242, 187, + 243, 242, 16, 16, 242, 242, 66, 242, 68, 242, + 35, 242, 239, 242, 23, 243, 242, 242, 241, 242, + 242, 146, 242, 242, 242, 242, 242, 242, 54, 242, + 242, 242, 82, 242, 163, 242, 242, 62, 242, 155, + 243, 57, 242, 242, 242, 242, 242, 242, 124, 242, + 190, 243, 74, 242, 242, 242, 242, 242, 85, 242, + + 9, 9, 242, 242, 242, 242, 242, 242, 147, 242, + 242, 242, 242, 125, 242, 219, 242, 242, 242, 242, + 242, 188, 243, 217, 242, 242, 162, 243, 52, 242, + 242, 75, 242, 49, 242, 242, 242, 242, 242, 242, + 242, 115, 242, 94, 242, 165, 243, 105, 242, 78, + 242, 242, 242, 242, 242, 67, 242, 26, 27, 242, + 34, 242, 109, 242, 242, 242, 242, 242, 242, 242, + 170, 243, 242, 158, 243, 160, 243, 173, 242, 242, + 171, 242, 172, 242, 242, 100, 242, 242, 116, 242, + 242, 242, 242, 51, 242, 242, 83, 242, 242, 156, + + 243, 164, 242, 161, 243, 242, 184, 242, 220, 243, + 58, 242, 242, 38, 242, 185, 242, 218, 243, 242, + 159, 243, 99, 242, 242, 242, 242, 242, 114, 242, + 117, 243, 21, 242, 242, 40, 242, 242, 25, 19, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 119, + 243, 242, 242, 242, 242, 242, 101, 242, 242, 45, + 242, 242, 90, 242, 76, 242, 242, 242, 186, 243, + 242, 46, 242, 129, 242, 242, 242, 118, 243, 61, + 242, 242, 20, 243, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 13, 242, 242, 175, 242, 132, + + 242, 242, 242, 242, 242, 106, 242, 242, 131, 242, + 79, 242, 242, 242, 28, 29, 242, 242, 242, 242, + 242, 199, 242, 205, 242, 242, 242, 242, 242, 13, + 60, 242, 242, 242, 132, 242, 120, 242, 111, 242, + 242, 242, 242, 80, 242, 242, 30, 31, 242, 242, + 242, 242, 216, 242, 201, 243, 242, 242, 214, 242, + 193, 242, 197, 242, 121, 243, 13, 242, 242, 132, + 242, 56, 242, 242, 242, 32, 33, 242, 242, 242, + 212, 243, 242, 242, 195, 243, 13, 174, 242, 242, + 242, 242, 242, 242, 242, 210, 243, 242, 242, 242, + + 242, 242, 16, 242, 242, 242, 242, 242, 176, 242, + 242, 130, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 207, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 203, 243, 242, 242, 242, 242, 198, 242, 204, 242, + 242, 242, 242, 242, 242, 242, 215, 242, 200, 243, + 242, 242, 213, 242, 242, 242, 24, 242, 242, 211, + 243, 242, 242, 242, 242, 209, 243, 242, 242, 242, + 192, 242, 196, 242, 242, 242, 242, 194, 243, 242, + 242, 242, 208, 243, 242, 242, 242, 206, 242, 202, + 243 } ; -static const flex_int16_t yy_accept[834] = +static const flex_int16_t yy_accept[836] = { 0, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 7, 9, 12, 14, 17, 19, 22, 25, 29, @@ -593,92 +594,92 @@ 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104, 107, 110, 113, 116, 119, 122, 125, 128, 132, 134, 136, 141, 146, 147, 149, 151, - 153, 155, 157, 159, 162, 165, 166, 167, 167, 168, - 169, 170, 171, 171, 172, 173, 175, 175, 175, 176, - 177, 178, 179, 179, 180, 181, 182, 183, 184, 186, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - - 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, - 220, 221, 222, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 239, 240, 242, - 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, + 153, 155, 157, 159, 162, 165, 166, 167, 168, 168, + 169, 170, 171, 172, 172, 173, 174, 176, 176, 176, + 177, 178, 179, 180, 181, 181, 182, 183, 184, 185, + 186, 188, 190, 191, 192, 193, 194, 195, 196, 197, + + 198, 199, 200, 201, 202, 203, 204, 205, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 217, 218, 219, + 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 241, + 242, 244, 245, 246, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, - 286, 286, 287, 287, 288, 291, 292, 293, 294, 294, - 295, 296, 297, 298, 299, 301, 302, 304, 305, 307, - - 308, 309, 310, 311, 312, 313, 314, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 329, - 330, 331, 333, 334, 336, 338, 340, 341, 343, 345, - 347, 348, 349, 350, 351, 352, 354, 355, 356, 357, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 372, 373, 374, 376, 378, 379, 380, 382, - 383, 384, 385, 387, 388, 390, 392, 393, 395, 396, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 408, - 409, 410, 411, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 426, 428, 430, 432, 433, - - 434, 436, 437, 438, 439, 441, 442, 443, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 457, - 458, 459, 460, 461, 462, 464, 465, 467, 468, 470, - 472, 473, 475, 477, 479, 481, 482, 483, 484, 486, - 488, 489, 491, 492, 493, 494, 495, 496, 497, 498, - 500, 501, 502, 503, 505, 507, 508, 508, 508, 509, - 510, 511, 513, 514, 516, 517, 518, 520, 521, 522, - 524, 525, 526, 527, 528, 530, 531, 533, 535, 536, - 537, 538, 539, 540, 541, 542, 544, 545, 547, 548, - 549, 551, 552, 554, 555, 557, 558, 559, 561, 563, - - 564, 565, 566, 568, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 585, 586, - 587, 589, 590, 592, 594, 595, 596, 597, 599, 601, - 603, 604, 605, 606, 607, 609, 610, 611, 612, 614, - 616, 617, 618, 619, 620, 621, 622, 623, 625, 626, - 627, 629, 631, 633, 634, 635, 636, 638, 640, 641, - 642, 643, 644, 645, 647, 647, 647, 647, 647, 647, - 647, 649, 651, 653, 655, 656, 657, 659, 660, 662, - 663, 664, 665, 666, 667, 669, 670, 671, 673, 675, - 676, 678, 680, 682, 683, 684, 685, 686, 687, 689, - - 691, 693, 694, 695, 696, 697, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 709, 710, 711, 712, 714, - 716, 717, 718, 719, 720, 722, 724, 725, 727, 729, - 730, 732, 734, 735, 736, 737, 738, 739, 740, 742, - 744, 746, 748, 750, 751, 752, 753, 754, 756, 757, - 757, 757, 757, 758, 758, 758, 759, 761, 763, 764, - 765, 766, 767, 768, 769, 771, 772, 774, 776, 778, - 779, 781, 783, 784, 786, 787, 789, 790, 791, 792, - 794, 795, 797, 798, 800, 802, 804, 805, 807, 809, - 811, 812, 814, 816, 818, 819, 821, 823, 824, 825, - - 826, 827, 829, 831, 833, 834, 836, 837, 838, 838, - 838, 838, 838, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 850, 851, 851, 852, 853, 854, 855, 857, - 858, 860, 861, 863, 865, 866, 867, 869, 870, 872, - 874, 875, 876, 878, 880, 881, 881, 881, 881, 881, - 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, - 893, 894, 895, 896, 898, 900, 901, 902, 903, 904, - 906, 907, 909, 911, 912, 913, 913, 914, 914, 915, - 916, 917, 918, 919, 920, 922, 924, 925, 926, 927, - 928, 928, 929, 931, 932, 933, 933, 933, 935, 937, - - 939, 940, 941, 942, 944, 945, 946, 947, 948, 949, - 950, 951, 953, 955, 956, 957, 959, 961, 963, 965, - 966, 967, 968, 968, 969, 970, 972, 973, 974, 975, - 976, 977, 978, 979, 981, 982, 983, 985, 986, 988, - 989, 990, 991, 992, 993, 994, 996, 997, 998, 999, - 1000, 1001, 1003, 1004, 1005, 1006, 1007, 1009, 1010, 1012, - 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, - 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1031, 1032, 1033, - 1034, 1035, 1036, 1037, 1038, 1039, 1041, 1042, 1043, 1044, - 1045, 1047, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1057, - - 1059, 1060, 1061, 1063, 1064, 1065, 1067, 1068, 1070, 1071, - 1072, 1073, 1074, 1076, 1077, 1078, 1079, 1081, 1083, 1084, - 1085, 1086, 1088, 1089, 1090, 1091, 1093, 1094, 1095, 1096, - 1098, 1100, 1100 + 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 287, 288, 288, 289, 289, 290, 293, 294, 295, + 296, 296, 297, 298, 299, 300, 301, 303, 304, 306, + + 307, 309, 310, 311, 312, 313, 314, 315, 316, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 331, 332, 333, 335, 336, 338, 340, 342, 343, + 345, 347, 349, 350, 351, 352, 353, 354, 356, 357, + 358, 359, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 374, 375, 376, 378, 380, 381, + 382, 384, 385, 386, 387, 389, 390, 392, 394, 395, + 397, 398, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 410, 411, 412, 413, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 428, 430, 432, + + 434, 435, 436, 438, 439, 440, 441, 443, 444, 445, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 459, 460, 461, 462, 463, 464, 466, 467, 469, + 470, 472, 474, 475, 477, 479, 481, 483, 484, 485, + 486, 488, 490, 491, 493, 494, 495, 496, 497, 498, + 499, 500, 502, 503, 504, 505, 507, 509, 510, 510, + 510, 511, 512, 513, 515, 516, 518, 519, 520, 522, + 523, 524, 526, 527, 528, 529, 530, 532, 533, 535, + 537, 538, 539, 540, 541, 542, 543, 544, 546, 547, + 549, 550, 551, 553, 554, 556, 557, 559, 560, 561, + + 563, 565, 566, 567, 568, 570, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 587, 588, 589, 591, 592, 594, 596, 597, 598, 599, + 601, 603, 605, 606, 607, 608, 609, 611, 612, 613, + 614, 616, 618, 619, 620, 621, 622, 623, 624, 625, + 627, 628, 629, 631, 633, 635, 636, 637, 638, 640, + 642, 643, 644, 645, 646, 647, 649, 649, 649, 649, + 649, 649, 649, 651, 653, 655, 657, 658, 659, 661, + 662, 664, 665, 666, 667, 668, 669, 671, 672, 673, + 675, 677, 678, 680, 682, 684, 685, 686, 687, 688, + + 689, 691, 693, 695, 696, 697, 698, 699, 701, 702, + 703, 704, 705, 706, 707, 708, 709, 711, 712, 713, + 714, 716, 718, 719, 720, 721, 722, 724, 726, 727, + 729, 731, 732, 734, 736, 737, 738, 739, 740, 741, + 742, 744, 746, 748, 750, 752, 753, 754, 755, 756, + 758, 759, 759, 759, 759, 760, 760, 760, 761, 763, + 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, + 778, 780, 781, 783, 785, 786, 788, 789, 791, 792, + 793, 794, 796, 797, 799, 800, 802, 804, 806, 807, + 809, 811, 813, 814, 816, 818, 820, 821, 823, 825, + + 826, 827, 828, 829, 831, 833, 835, 836, 838, 839, + 840, 840, 840, 840, 840, 842, 843, 844, 845, 846, + 847, 848, 849, 850, 852, 853, 853, 854, 855, 856, + 857, 859, 860, 862, 863, 865, 867, 868, 869, 871, + 872, 874, 876, 877, 878, 880, 882, 883, 883, 883, + 883, 883, 885, 886, 887, 888, 889, 890, 891, 892, + 893, 894, 895, 896, 897, 898, 900, 902, 903, 904, + 905, 906, 908, 909, 911, 913, 914, 915, 915, 916, + 916, 917, 918, 919, 920, 921, 922, 924, 926, 927, + 928, 929, 930, 930, 931, 933, 934, 935, 935, 935, + + 937, 939, 941, 942, 943, 944, 946, 947, 948, 949, + 950, 951, 952, 953, 955, 957, 958, 959, 961, 963, + 965, 967, 968, 969, 970, 970, 971, 972, 974, 975, + 976, 977, 978, 979, 980, 981, 983, 984, 985, 987, + 988, 990, 991, 992, 993, 994, 995, 996, 998, 999, + 1000, 1001, 1002, 1003, 1005, 1006, 1007, 1008, 1009, 1011, + 1012, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, + 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1033, + 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1043, 1044, + 1045, 1046, 1047, 1049, 1051, 1052, 1053, 1054, 1055, 1056, + + 1057, 1059, 1061, 1062, 1063, 1065, 1066, 1067, 1069, 1070, + 1072, 1073, 1074, 1075, 1076, 1078, 1079, 1080, 1081, 1083, + 1085, 1086, 1087, 1088, 1090, 1091, 1092, 1093, 1095, 1096, + 1097, 1098, 1100, 1102, 1102 } ; static const YY_CHAR yy_ec[256] = @@ -725,200 +726,200 @@ 7, 7, 7, 7, 7, 7, 7, 7 } ; -static const flex_int16_t yy_base[852] = +static const flex_int16_t yy_base[854] = { 0, - 0, 77, 63, 69, 419, 415, 402, 395, 74, 82, - 393, 3513, 385, 371, 3513, 99, 3513, 342, 88, 328, - 93, 98, 3513, 99, 3513, 318, 3513, 3513, 163, 229, + 0, 77, 63, 69, 432, 425, 419, 415, 74, 82, + 405, 3513, 396, 390, 365, 99, 3513, 363, 88, 337, + 93, 98, 3513, 99, 322, 318, 3513, 3513, 163, 229, 293, 119, 360, 430, 125, 122, 129, 83, 494, 159, 157, 207, 541, 589, 656, 708, 210, 128, 772, 156, 3513, 239, 332, 331, 267, 249, 3513, 192, 0, 3513, - 0, 3513, 271, 287, 294, 313, 3513, 122, 128, 3513, - 3513, 331, 359, 0, 362, 393, 121, 0, 3513, 3513, - 3513, 3513, 0, 143, 288, 213, 357, 169, 387, 375, - 313, 410, 424, 389, 355, 435, 303, 437, 376, 468, - - 478, 471, 446, 474, 512, 540, 488, 516, 531, 522, - 331, 563, 590, 557, 573, 225, 611, 629, 615, 625, - 665, 618, 230, 635, 720, 684, 701, 634, 761, 715, - 698, 742, 765, 748, 681, 775, 245, 788, 797, 812, - 822, 255, 828, 832, 834, 838, 900, 850, 841, 847, - 853, 854, 863, 866, 893, 869, 898, 905, 943, 856, - 927, 916, 963, 969, 936, 970, 973, 976, 948, 881, - 985, 975, 989, 988, 1000, 1009, 1010, 1025, 1024, 440, - 295, 3513, 258, 3513, 1040, 493, 0, 0, 660, 726, - 0, 183, 0, 235, 447, 1045, 506, 631, 576, 1046, - - 1049, 1056, 1058, 1059, 1071, 1075, 591, 1094, 1076, 1090, - 1072, 638, 1096, 1106, 1118, 1124, 1128, 1129, 659, 1131, - 1140, 700, 1146, 860, 1156, 1062, 1150, 1202, 1069, 1135, - 1152, 1180, 1166, 1178, 1168, 1175, 1207, 1211, 1192, 1213, - 1216, 1218, 1239, 1240, 1243, 1220, 1161, 1246, 1250, 1255, - 1261, 1267, 1277, 1278, 1281, 1283, 1284, 1304, 1297, 1302, - 1311, 1314, 1317, 1324, 1329, 1330, 1331, 1340, 1342, 1344, - 1345, 1346, 1347, 1349, 1356, 1358, 1359, 1374, 1365, 1375, - 1376, 1388, 1408, 1419, 1390, 1393, 1421, 1423, 1402, 1426, - 1437, 1440, 1446, 1452, 1453, 1457, 1463, 1467, 1468, 1474, - - 1479, 1480, 1486, 1490, 1495, 1496, 1499, 1502, 1506, 1513, - 1516, 1515, 1532, 1522, 1542, 1527, 1549, 1552, 1525, 1559, - 1568, 1562, 1573, 1571, 1577, 231, 1586, 1588, 1591, 1598, - 1604, 1602, 1605, 3513, 1607, 1608, 1614, 1620, 1621, 1626, - 1627, 3513, 1632, 1633, 1643, 1642, 1637, 1644, 1659, 1646, - 1648, 1672, 225, 1660, 1675, 1677, 1695, 1676, 1704, 1679, - 1698, 1716, 1719, 1725, 1735, 1737, 1739, 1741, 1746, 1757, - 1767, 1764, 1766, 1768, 1770, 1779, 1784, 3513, 1786, 1795, - 1797, 1800, 1806, 1802, 1807, 1812, 1816, 1818, 1825, 1829, - 3513, 1831, 1840, 1845, 1843, 1844, 1847, 1850, 1866, 1867, - - 1868, 1872, 1881, 1877, 1883, 214, 3513, 1878, 1894, 1901, - 1903, 1904, 1907, 1918, 1920, 1922, 1935, 1938, 1947, 1944, - 1948, 1957, 1953, 3513, 1959, 1962, 1971, 1980, 1985, 1987, - 1989, 1991, 1996, 1990, 2002, 2005, 2006, 2007, 2016, 2017, - 2021, 2018, 2030, 2031, 2033, 2037, 2046, 2040, 2059, 2063, - 2065, 2074, 2079, 2080, 2083, 2089, 2090, 3513, 2096, 0, - 177, 2099, 2100, 2101, 88, 1714, 210, 262, 55, 323, - 2110, 2112, 2115, 3513, 2117, 2119, 2128, 2129, 2130, 2133, - 2131, 2134, 2154, 2159, 2156, 2160, 2161, 2163, 2165, 2166, - 2170, 3513, 2175, 2181, 2185, 2196, 2197, 2191, 2200, 3513, - - 2201, 2203, 2206, 2213, 2226, 2207, 0, 173, 2210, 2220, - 2232, 2243, 2247, 2253, 2249, 2259, 2262, 2263, 2273, 2274, - 2276, 2278, 2279, 2288, 3513, 2290, 2301, 3513, 2292, 2294, - 2303, 2304, 2306, 2310, 2313, 2323, 2327, 2324, 2328, 2329, - 3513, 2330, 2341, 2343, 2348, 2345, 2359, 2352, 3513, 361, - 398, 414, 3513, 437, 491, 2365, 2355, 2364, 2371, 2431, - 2385, 2382, 2392, 2401, 3513, 2397, 3513, 3513, 2399, 2404, - 2411, 2413, 2425, 2420, 2424, 2427, 2446, 2451, 2466, 2440, - 2462, 2467, 2471, 3513, 2480, 3513, 2482, 2492, 3513, 2493, - 2498, 2499, 2502, 3513, 2508, 3513, 2503, 2509, 2512, 2515, - - 2518, 2521, 3513, 2524, 2531, 2527, 2537, 3513, 69, 167, - 202, 294, 2540, 2541, 2542, 2544, 2553, 2556, 2558, 2576, - 2569, 3513, 2580, 159, 2560, 2590, 2592, 2604, 2547, 2597, - 2593, 2611, 2617, 2618, 2629, 2622, 3513, 2636, 2632, 2638, - 2643, 2645, 3513, 2639, 2650, 523, 524, 530, 546, 3513, - 2652, 2656, 2657, 2670, 2663, 2674, 2683, 2690, 2699, 2702, - 142, 2695, 2706, 2709, 2729, 2718, 2722, 2732, 2748, 2738, - 2751, 2741, 2755, 2767, 2757, 567, 3513, 753, 3513, 2774, - 2776, 2778, 2789, 2794, 2779, 2788, 2798, 2801, 2804, 2791, - 0, 109, 2792, 2808, 2820, 196, 2823, 2851, 2824, 2829, - - 2835, 2839, 2848, 2852, 2861, 102, 77, 2857, 2867, 2866, - 2870, 2876, 3513, 2883, 2886, 2889, 2892, 2893, 3513, 0, - 2896, 2902, 2910, 3513, 2914, 2911, 2917, 2927, 3513, 3513, - 2924, 2930, 2933, 3513, 2939, 2942, 3513, 0, 2945, 2946, - 2956, 2958, 2962, 2959, 2963, 3513, 2980, 2985, 2984, 2998, - 2999, 3016, 3014, 3015, 3017, 3019, 3026, 3030, 3040, 3044, - 3046, 3049, 3051, 3060, 3061, 3056, 3065, 3067, 3076, 3087, - 3096, 3091, 3089, 3116, 3118, 3121, 3123, 3133, 3138, 3134, - 3137, 3147, 3148, 3149, 3153, 3513, 3150, 3151, 3169, 3173, - 3172, 3175, 3191, 3179, 3200, 3215, 3201, 3225, 3228, 3513, - - 3229, 3231, 3232, 3238, 3244, 3245, 3254, 3513, 3248, 3257, - 3259, 3258, 3513, 3261, 3270, 3276, 3264, 3274, 3283, 3297, - 3303, 3513, 3285, 3290, 3302, 3513, 3304, 3324, 3329, 3330, - 3513, 3513, 3394, 3402, 3410, 3418, 3423, 3431, 3439, 3447, - 3455, 3463, 3466, 3467, 3472, 3480, 3488, 3495, 3499, 3501, - 3504 + 0, 3513, 271, 287, 294, 313, 3513, 3513, 122, 128, + 3513, 3513, 331, 359, 0, 362, 393, 121, 0, 3513, + 3513, 3513, 3513, 3513, 0, 143, 288, 213, 357, 169, + 387, 375, 313, 410, 424, 389, 355, 435, 303, 437, + + 376, 468, 478, 471, 446, 474, 512, 540, 488, 516, + 531, 522, 331, 563, 590, 557, 573, 225, 611, 629, + 615, 625, 665, 618, 230, 635, 720, 684, 701, 634, + 761, 715, 698, 742, 765, 748, 681, 775, 245, 788, + 797, 812, 822, 255, 828, 832, 834, 838, 900, 850, + 841, 847, 853, 854, 863, 866, 893, 869, 898, 905, + 943, 856, 927, 916, 963, 969, 936, 970, 973, 976, + 948, 881, 985, 975, 989, 988, 1000, 1009, 1010, 1025, + 1024, 440, 295, 3513, 258, 3513, 1040, 493, 0, 0, + 660, 726, 0, 183, 0, 235, 447, 1045, 506, 631, + + 576, 1046, 1049, 1056, 1058, 1059, 1071, 1075, 591, 1094, + 1076, 1090, 1072, 638, 1096, 1106, 1118, 1124, 1128, 1129, + 659, 1131, 1140, 700, 1146, 860, 1156, 1062, 1150, 1202, + 1069, 1135, 1152, 1180, 1166, 1178, 1168, 1175, 1207, 1211, + 1192, 1213, 1216, 1218, 1239, 1240, 1243, 1220, 1161, 1246, + 1250, 1255, 1261, 1267, 1277, 1278, 1281, 1283, 1284, 1304, + 1297, 1302, 1311, 1314, 1317, 1324, 1329, 1330, 1331, 1340, + 1342, 1344, 1345, 1346, 1347, 1349, 1356, 1358, 1359, 1374, + 1365, 1375, 1376, 1388, 1408, 1419, 1390, 1393, 1421, 1423, + 1402, 1426, 1437, 1440, 1446, 1452, 1453, 1457, 1463, 1467, + + 1468, 1474, 1479, 1480, 1486, 1490, 1495, 1496, 1499, 1502, + 1506, 1513, 1516, 1515, 1532, 1522, 1542, 1527, 1549, 1552, + 1525, 1559, 1568, 1562, 1573, 1571, 1577, 231, 1586, 1588, + 1591, 1598, 1604, 1602, 1605, 3513, 1607, 1608, 1614, 1620, + 1621, 1626, 1627, 3513, 1632, 1633, 1643, 1642, 1637, 1644, + 1659, 1646, 1648, 1672, 225, 1660, 1675, 1677, 1695, 1676, + 1704, 1679, 1698, 1716, 1719, 1725, 1735, 1737, 1739, 1741, + 1746, 1757, 1767, 1764, 1766, 1768, 1770, 1779, 1784, 3513, + 1786, 1795, 1797, 1800, 1806, 1802, 1807, 1812, 1816, 1818, + 1825, 1829, 3513, 1831, 1840, 1845, 1843, 1844, 1847, 1850, + + 1866, 1867, 1868, 1872, 1881, 1877, 1883, 214, 3513, 1878, + 1894, 1901, 1903, 1904, 1907, 1918, 1920, 1922, 1935, 1938, + 1947, 1944, 1948, 1957, 1953, 3513, 1959, 1962, 1971, 1980, + 1985, 1987, 1989, 1991, 1996, 1990, 2002, 2005, 2006, 2007, + 2016, 2017, 2021, 2018, 2030, 2031, 2033, 2037, 2046, 2040, + 2059, 2063, 2065, 2074, 2079, 2080, 2083, 2089, 2090, 3513, + 2096, 0, 177, 2099, 2100, 2101, 88, 1714, 210, 262, + 55, 323, 2110, 2112, 2115, 3513, 2117, 2119, 2128, 2129, + 2130, 2133, 2131, 2134, 2154, 2159, 2156, 2160, 2161, 2163, + 2165, 2166, 2170, 3513, 2175, 2181, 2185, 2196, 2197, 2191, + + 2200, 3513, 2201, 2203, 2206, 2213, 2226, 2207, 0, 173, + 2210, 2220, 2232, 2243, 2247, 2253, 2249, 2259, 2262, 2263, + 2273, 2274, 2276, 2278, 2279, 2288, 3513, 2290, 2301, 3513, + 2292, 2294, 2303, 2304, 2306, 2310, 2313, 2323, 2327, 2324, + 2328, 2329, 3513, 2330, 2341, 2343, 2348, 2345, 2359, 2352, + 3513, 361, 398, 414, 3513, 437, 491, 2365, 2355, 2364, + 2371, 2431, 2385, 2382, 2392, 2401, 3513, 2397, 3513, 3513, + 2399, 2404, 2411, 2413, 2425, 2420, 2424, 2427, 2446, 2451, + 2466, 2440, 2462, 2467, 2471, 3513, 2480, 3513, 2482, 2492, + 3513, 2493, 2498, 2499, 2502, 3513, 2508, 3513, 2503, 2509, + + 2512, 2515, 2518, 2521, 3513, 2524, 2531, 2527, 2537, 3513, + 69, 167, 202, 294, 2540, 2541, 2542, 2544, 2553, 2556, + 2558, 2576, 2569, 3513, 2580, 159, 2560, 2590, 2592, 2604, + 2547, 2597, 2593, 2611, 2617, 2618, 2629, 2622, 3513, 2636, + 2632, 2638, 2643, 2645, 3513, 2639, 2650, 523, 524, 530, + 546, 3513, 2652, 2656, 2657, 2670, 2663, 2674, 2683, 2690, + 2699, 2702, 142, 2695, 2706, 2709, 2729, 2718, 2722, 2732, + 2748, 2738, 2751, 2741, 2755, 2767, 2757, 567, 3513, 753, + 3513, 2774, 2776, 2778, 2789, 2794, 2779, 2788, 2798, 2801, + 2804, 2791, 0, 109, 2792, 2808, 2820, 196, 2823, 2851, + + 2824, 2829, 2835, 2839, 2848, 2852, 2861, 102, 77, 2857, + 2867, 2866, 2870, 2876, 3513, 2883, 2886, 2889, 2892, 2893, + 3513, 0, 2896, 2902, 2910, 3513, 2914, 2911, 2917, 2927, + 3513, 3513, 2924, 2930, 2933, 3513, 2939, 2942, 3513, 0, + 2945, 2946, 2956, 2958, 2962, 2959, 2963, 3513, 2980, 2985, + 2984, 2998, 2999, 3016, 3014, 3015, 3017, 3019, 3026, 3030, + 3040, 3044, 3046, 3049, 3051, 3060, 3061, 3056, 3065, 3067, + 3076, 3087, 3096, 3091, 3089, 3116, 3118, 3121, 3123, 3133, + 3138, 3134, 3137, 3147, 3148, 3149, 3153, 3513, 3150, 3151, + 3169, 3173, 3172, 3175, 3191, 3179, 3200, 3215, 3201, 3225, + + 3228, 3513, 3229, 3231, 3232, 3238, 3244, 3245, 3254, 3513, + 3248, 3257, 3259, 3258, 3513, 3261, 3270, 3276, 3264, 3274, + 3283, 3297, 3303, 3513, 3285, 3290, 3302, 3513, 3304, 3324, + 3329, 3330, 3513, 3513, 3394, 3402, 3410, 3418, 3423, 3431, + 3439, 3447, 3455, 3463, 3466, 3467, 3472, 3480, 3488, 3495, + 3499, 3501, 3504 } ; -static const flex_int16_t yy_def[852] = +static const flex_int16_t yy_def[854] = { 0, - 832, 1, 833, 833, 834, 834, 835, 835, 833, 833, - 832, 832, 832, 832, 832, 836, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 30, 39, 837, 30, 837, 837, 837, 837, - 832, 832, 838, 839, 832, 832, 832, 832, 840, 832, - 841, 832, 832, 832, 832, 832, 832, 836, 836, 832, - 832, 832, 832, 842, 832, 832, 832, 843, 832, 832, - 832, 832, 844, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 832, 832, - 838, 832, 839, 832, 832, 832, 840, 841, 832, 832, - 842, 832, 843, 845, 837, 837, 837, 837, 837, 837, - - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 845, 837, 837, 837, 837, - 837, 837, 837, 832, 837, 837, 837, 837, 837, 837, - 837, 832, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 846, 837, 837, 837, 832, 832, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 832, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 832, 837, 837, 837, 837, 837, 837, 837, 837, 837, - - 837, 837, 837, 837, 837, 847, 832, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 832, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 832, 837, 846, - 846, 837, 837, 837, 832, 832, 832, 832, 832, 832, - 837, 837, 837, 832, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 832, 837, 837, 837, 837, 837, 837, 837, 832, - - 837, 837, 837, 837, 837, 837, 847, 847, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 832, 837, 837, 832, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 832, 837, 837, 837, 837, 837, 837, 837, 832, 832, - 832, 832, 832, 832, 832, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 832, 837, 832, 832, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 832, 837, 832, 837, 837, 832, 837, - 837, 837, 837, 832, 837, 832, 837, 837, 837, 837, - - 837, 837, 832, 837, 837, 837, 837, 832, 832, 832, - 832, 832, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 832, 837, 848, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 832, 837, 837, 837, - 837, 837, 832, 837, 837, 832, 832, 832, 832, 832, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 849, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 832, 832, 832, 832, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 850, 849, 837, 837, 837, 832, 832, 837, 837, 837, - - 837, 837, 837, 837, 837, 832, 832, 837, 837, 837, - 837, 837, 832, 837, 837, 837, 837, 837, 832, 851, - 837, 837, 832, 832, 837, 837, 837, 837, 832, 832, - 837, 837, 837, 832, 837, 837, 832, 851, 837, 837, - 837, 837, 837, 837, 837, 832, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 560, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 832, 837, 837, 837, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 832, - - 837, 837, 837, 837, 837, 837, 837, 832, 837, 837, - 837, 837, 832, 837, 837, 837, 837, 837, 837, 837, - 837, 832, 837, 837, 837, 832, 837, 837, 837, 837, - 832, 0, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832 + 834, 1, 835, 835, 836, 836, 837, 837, 835, 835, + 834, 834, 834, 834, 834, 838, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 30, 39, 839, 30, 839, 839, 839, 839, + 834, 834, 840, 841, 834, 834, 834, 834, 842, 834, + 843, 834, 834, 834, 834, 834, 834, 834, 838, 838, + 834, 834, 834, 834, 844, 834, 834, 834, 845, 834, + 834, 834, 834, 834, 846, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 834, 834, 840, 834, 841, 834, 834, 834, 842, 843, + 834, 834, 844, 834, 845, 847, 839, 839, 839, 839, + + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 847, 839, 839, + 839, 839, 839, 839, 839, 834, 839, 839, 839, 839, + 839, 839, 839, 834, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 848, 839, 839, 839, 834, 834, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 834, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 834, 839, 839, 839, 839, 839, 839, 839, + + 839, 839, 839, 839, 839, 839, 839, 849, 834, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 834, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 834, + 839, 848, 848, 839, 839, 839, 834, 834, 834, 834, + 834, 834, 839, 839, 839, 834, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 834, 839, 839, 839, 839, 839, 839, + + 839, 834, 839, 839, 839, 839, 839, 839, 849, 849, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 834, 839, 839, 834, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 834, 839, 839, 839, 839, 839, 839, 839, + 834, 834, 834, 834, 834, 834, 834, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 834, 839, 834, 834, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 834, 839, 834, 839, 839, + 834, 839, 839, 839, 839, 834, 839, 834, 839, 839, + + 839, 839, 839, 839, 834, 839, 839, 839, 839, 834, + 834, 834, 834, 834, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 834, 839, 850, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 834, 839, + 839, 839, 839, 839, 834, 839, 839, 834, 834, 834, + 834, 834, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 851, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 834, 834, 834, + 834, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 852, 851, 839, 839, 839, 834, 834, 839, + + 839, 839, 839, 839, 839, 839, 839, 834, 834, 839, + 839, 839, 839, 839, 834, 839, 839, 839, 839, 839, + 834, 853, 839, 839, 834, 834, 839, 839, 839, 839, + 834, 834, 839, 839, 839, 834, 839, 839, 834, 853, + 839, 839, 839, 839, 839, 839, 839, 834, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 562, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 834, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, + + 839, 834, 839, 839, 839, 839, 839, 839, 839, 834, + 839, 839, 839, 839, 834, 839, 839, 839, 839, 839, + 839, 839, 839, 834, 839, 839, 839, 834, 839, 839, + 839, 839, 834, 0, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834 } ; static const flex_int16_t yy_nxt[3592] = @@ -931,393 +932,393 @@ 38, 51, 38, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 38, 44, 45, 46, 47, 48, 49, 50, 38, 38, 52, 58, - 58, 58, 53, 730, 54, 58, 58, 58, 63, 82, - 64, 65, 65, 55, 56, 56, 63, 83, 64, 65, + 58, 58, 53, 732, 54, 58, 58, 58, 63, 84, + 64, 65, 65, 55, 56, 56, 63, 85, 64, 65, - 65, 69, 554, 70, 72, 72, 72, 75, 729, 76, - 76, 76, 75, 646, 76, 76, 76, 73, 549, 77, - 79, 80, 73, 691, 69, 82, 70, 73, 82, 554, - 69, 82, 70, 83, 82, 82, 83, 192, 192, 83, - 646, 78, 83, 83, 103, 73, 549, 77, 104, 82, - 73, 122, 105, 172, 119, 73, 691, 83, 106, 123, - 624, 120, 82, 82, 121, 82, 124, 125, 78, 82, - 83, 83, 103, 83, 508, 82, 104, 83, 461, 122, - 105, 172, 119, 83, 131, 106, 134, 123, 120, 85, - 86, 121, 132, 124, 125, 178, 135, 696, 133, 192, - - 192, 87, 136, 647, 697, 88, 89, 90, 186, 186, - 186, 198, 131, 82, 134, 508, 82, 85, 86, 82, - 132, 83, 178, 135, 83, 133, 461, 83, 87, 136, - 647, 82, 88, 89, 90, 82, 82, 82, 198, 83, - 179, 82, 552, 83, 83, 137, 648, 138, 169, 139, - 170, 82, 196, 171, 91, 180, 180, 180, 92, 83, - 184, 82, 93, 75, 239, 185, 185, 185, 94, 83, - 552, 95, 137, 648, 138, 169, 139, 170, 73, 196, - 171, 75, 91, 185, 185, 185, 92, 72, 72, 72, - 93, 239, 553, 77, 82, 94, 73, 182, 95, 82, - - 73, 75, 83, 76, 76, 76, 73, 83, 75, 82, - 76, 76, 76, 77, 66, 78, 73, 83, 96, 82, - 553, 77, 97, 73, 73, 98, 99, 83, 73, 100, - 649, 195, 101, 184, 182, 78, 210, 82, 102, 81, - 202, 77, 78, 74, 73, 83, 96, 72, 72, 72, - 97, 73, 71, 98, 99, 555, 100, 649, 195, 101, - 73, 82, 78, 82, 210, 102, 82, 232, 202, 83, - 189, 83, 189, 67, 83, 190, 190, 190, 72, 72, - 72, 82, 82, 555, 208, 197, 66, 608, 73, 83, - 83, 73, 832, 82, 232, 82, 107, 62, 108, 109, - - 201, 83, 110, 83, 62, 111, 112, 75, 113, 76, - 76, 76, 208, 197, 199, 608, 82, 60, 213, 73, - 200, 60, 73, 107, 83, 108, 109, 832, 201, 110, - 82, 609, 111, 112, 832, 113, 82, 207, 83, 203, - 832, 82, 199, 82, 83, 213, 204, 610, 200, 83, - 73, 83, 82, 82, 832, 114, 180, 180, 180, 609, - 83, 83, 205, 115, 207, 832, 116, 203, 206, 117, - 611, 832, 118, 204, 82, 610, 211, 82, 209, 212, - 82, 832, 83, 114, 82, 83, 832, 832, 83, 205, - 221, 115, 83, 116, 82, 206, 117, 214, 611, 118, - - 82, 222, 83, 211, 223, 209, 212, 215, 83, 186, - 186, 186, 82, 220, 216, 217, 218, 221, 82, 126, - 83, 219, 82, 127, 612, 214, 83, 128, 82, 222, - 83, 227, 223, 129, 215, 832, 83, 82, 130, 832, - 220, 216, 217, 218, 228, 83, 82, 126, 219, 224, - 676, 127, 612, 677, 83, 128, 832, 678, 227, 832, - 129, 229, 832, 82, 231, 130, 140, 225, 832, 82, - 141, 83, 228, 230, 142, 679, 224, 83, 676, 82, - 143, 677, 82, 144, 226, 678, 145, 83, 233, 229, - 83, 231, 832, 237, 140, 225, 82, 82, 141, 706, - - 230, 832, 142, 679, 83, 83, 832, 143, 832, 238, - 144, 226, 832, 145, 146, 832, 233, 82, 147, 234, - 237, 82, 148, 235, 82, 83, 832, 706, 149, 83, - 236, 82, 83, 150, 151, 82, 238, 82, 832, 83, - 82, 82, 146, 83, 342, 83, 147, 234, 83, 83, - 148, 235, 83, 240, 241, 149, 328, 236, 832, 243, - 150, 151, 82, 832, 244, 82, 247, 242, 832, 832, - 83, 82, 257, 83, 832, 248, 190, 190, 190, 83, - 240, 832, 241, 152, 328, 153, 243, 82, 154, 155, - 82, 244, 156, 247, 242, 83, 157, 158, 83, 257, - - 159, 160, 248, 161, 82, 162, 82, 82, 245, 246, - 253, 152, 83, 153, 83, 83, 154, 155, 832, 156, - 832, 82, 832, 157, 158, 270, 82, 159, 160, 83, - 161, 254, 162, 163, 83, 245, 246, 164, 253, 255, - 165, 166, 190, 190, 190, 256, 263, 167, 82, 832, - 168, 832, 270, 832, 82, 249, 83, 262, 832, 254, - 250, 163, 83, 251, 252, 164, 255, 82, 165, 166, - 264, 82, 256, 263, 167, 83, 832, 168, 82, 83, - 265, 82, 249, 832, 262, 707, 83, 250, 258, 83, - 251, 252, 259, 266, 82, 268, 269, 173, 264, 832, - - 260, 174, 83, 82, 175, 176, 832, 265, 261, 832, - 267, 83, 271, 707, 177, 832, 258, 272, 82, 832, - 259, 266, 268, 269, 832, 173, 83, 260, 82, 174, - 273, 832, 175, 176, 82, 261, 83, 267, 82, 271, - 82, 177, 83, 832, 82, 272, 83, 82, 83, 832, - 832, 275, 83, 82, 832, 83, 82, 274, 273, 82, - 82, 83, 82, 276, 83, 277, 82, 83, 83, 82, - 83, 832, 82, 832, 83, 82, 279, 83, 278, 275, - 83, 288, 305, 83, 274, 832, 290, 82, 289, 291, - 276, 292, 294, 277, 832, 83, 293, 832, 299, 82, - - 832, 832, 295, 279, 82, 278, 82, 83, 296, 288, - 305, 82, 83, 290, 83, 289, 291, 832, 292, 83, - 294, 317, 82, 293, 297, 280, 299, 281, 282, 295, - 83, 298, 832, 82, 300, 296, 832, 283, 832, 832, - 284, 83, 82, 285, 286, 832, 287, 301, 317, 82, - 83, 832, 297, 280, 82, 281, 282, 83, 298, 307, - 306, 300, 83, 832, 283, 311, 832, 284, 302, 82, - 285, 286, 303, 287, 301, 82, 82, 83, 832, 82, - 832, 82, 82, 83, 83, 304, 307, 83, 306, 83, - 83, 82, 316, 311, 82, 82, 302, 832, 832, 83, - - 303, 308, 83, 83, 832, 309, 82, 312, 313, 314, - 832, 319, 304, 832, 83, 82, 82, 310, 318, 316, - 832, 315, 320, 83, 83, 179, 321, 832, 308, 832, - 832, 82, 309, 322, 312, 313, 832, 314, 319, 83, - 180, 180, 180, 324, 310, 832, 318, 323, 315, 832, - 320, 82, 82, 321, 75, 82, 185, 185, 185, 83, - 83, 322, 82, 83, 82, 82, 832, 325, 82, 73, - 83, 324, 83, 83, 323, 82, 83, 334, 82, 832, - 832, 82, 82, 83, 329, 83, 83, 330, 327, 83, - 83, 331, 832, 832, 325, 333, 82, 73, 332, 335, - - 82, 336, 82, 832, 83, 339, 832, 832, 83, 341, - 83, 329, 82, 337, 330, 327, 832, 832, 331, 338, - 83, 832, 333, 343, 82, 332, 340, 335, 832, 336, - 82, 344, 83, 339, 82, 82, 341, 82, 83, 832, - 337, 82, 83, 83, 832, 83, 82, 338, 832, 83, - 832, 343, 82, 340, 83, 832, 82, 353, 82, 344, - 83, 345, 82, 346, 83, 350, 83, 378, 347, 351, - 83, 352, 82, 348, 82, 83, 832, 349, 832, 355, - 83, 82, 83, 356, 82, 832, 82, 832, 345, 83, - 346, 360, 83, 350, 83, 347, 832, 351, 82, 352, - - 348, 354, 362, 357, 349, 363, 83, 355, 82, 361, - 832, 356, 364, 82, 365, 358, 83, 82, 360, 82, - 832, 83, 82, 832, 82, 83, 82, 83, 354, 362, - 83, 368, 83, 363, 83, 359, 832, 361, 832, 364, - 832, 365, 369, 370, 371, 82, 82, 367, 372, 82, - 366, 832, 82, 83, 83, 832, 82, 83, 368, 377, - 83, 82, 832, 359, 83, 373, 375, 82, 832, 83, - 369, 370, 371, 82, 367, 83, 372, 366, 832, 380, - 832, 83, 374, 82, 82, 379, 377, 82, 376, 82, - 82, 83, 83, 373, 375, 83, 383, 83, 83, 832, - - 381, 832, 832, 82, 832, 382, 384, 380, 82, 374, - 82, 83, 379, 386, 832, 376, 83, 82, 83, 832, - 82, 832, 385, 82, 383, 83, 832, 381, 83, 387, - 391, 83, 382, 832, 384, 82, 82, 82, 83, 832, - 389, 386, 388, 83, 83, 83, 82, 390, 82, 385, - 82, 82, 82, 82, 83, 82, 83, 387, 83, 83, - 83, 83, 82, 83, 82, 82, 832, 832, 389, 388, - 83, 82, 83, 83, 392, 390, 832, 832, 396, 83, - 82, 82, 82, 832, 395, 394, 393, 399, 83, 83, - 83, 398, 397, 832, 82, 832, 82, 400, 832, 82, - - 401, 392, 83, 403, 83, 832, 396, 83, 82, 406, - 407, 395, 394, 393, 82, 399, 83, 402, 398, 397, - 404, 405, 83, 832, 400, 82, 832, 82, 401, 82, - 832, 403, 82, 83, 409, 83, 832, 83, 410, 832, - 83, 832, 832, 82, 402, 413, 82, 404, 408, 405, - 411, 83, 82, 832, 83, 412, 832, 832, 82, 82, - 83, 409, 832, 82, 414, 410, 83, 83, 832, 82, - 415, 83, 413, 82, 82, 417, 408, 83, 411, 832, - 82, 83, 83, 412, 416, 82, 82, 418, 83, 832, - 832, 414, 82, 83, 83, 832, 424, 419, 415, 832, - - 83, 82, 82, 417, 83, 82, 832, 420, 82, 83, - 83, 416, 82, 83, 418, 832, 83, 832, 832, 82, - 83, 82, 82, 421, 422, 419, 423, 83, 82, 83, - 83, 82, 832, 82, 832, 420, 83, 425, 82, 83, - 426, 83, 428, 427, 431, 832, 83, 433, 82, 832, - 421, 422, 832, 423, 430, 82, 83, 429, 82, 434, - 436, 432, 832, 83, 425, 82, 83, 426, 82, 428, - 427, 435, 431, 83, 82, 433, 83, 82, 437, 82, - 832, 430, 83, 82, 429, 83, 434, 83, 436, 432, - 438, 83, 82, 832, 82, 832, 440, 82, 441, 435, - - 83, 442, 83, 439, 82, 83, 437, 832, 82, 832, - 82, 82, 83, 82, 82, 443, 83, 438, 83, 83, - 82, 83, 83, 832, 440, 441, 82, 82, 83, 442, - 439, 445, 82, 82, 83, 83, 832, 444, 82, 82, - 83, 83, 443, 82, 446, 832, 83, 83, 82, 82, - 82, 83, 82, 447, 458, 448, 83, 83, 83, 445, - 83, 353, 83, 832, 444, 82, 82, 449, 450, 832, - 455, 446, 452, 83, 83, 451, 832, 456, 82, 832, - 447, 82, 448, 82, 453, 82, 83, 454, 457, 83, - 832, 83, 832, 83, 449, 450, 357, 462, 455, 832, - - 452, 832, 451, 832, 82, 456, 832, 464, 463, 468, - 82, 453, 83, 832, 454, 832, 457, 459, 83, 469, - 832, 472, 474, 470, 462, 82, 832, 832, 465, 832, - 83, 82, 832, 83, 471, 464, 463, 468, 466, 83, - 473, 82, 467, 82, 459, 82, 469, 82, 472, 83, - 470, 83, 82, 83, 832, 83, 465, 832, 832, 550, - 83, 551, 471, 82, 475, 466, 477, 473, 478, 467, - 82, 83, 82, 82, 82, 832, 82, 476, 83, 480, - 83, 83, 83, 479, 83, 82, 550, 832, 551, 832, - 82, 475, 82, 83, 477, 484, 478, 481, 83, 483, - - 83, 82, 482, 82, 476, 485, 82, 480, 82, 83, - 479, 83, 82, 492, 83, 832, 83, 832, 82, 832, - 83, 83, 82, 484, 82, 481, 83, 483, 486, 482, - 83, 82, 83, 485, 832, 82, 832, 82, 491, 83, - 832, 488, 489, 83, 487, 83, 82, 832, 490, 82, - 82, 82, 493, 82, 83, 486, 500, 83, 83, 83, - 496, 83, 832, 832, 83, 491, 495, 494, 488, 489, - 497, 487, 82, 82, 82, 490, 499, 498, 82, 493, - 83, 83, 83, 82, 82, 832, 83, 82, 496, 82, - 832, 83, 83, 495, 494, 83, 832, 83, 497, 503, - - 82, 502, 505, 509, 499, 498, 832, 82, 83, 82, - 82, 501, 832, 82, 504, 83, 832, 83, 83, 832, - 506, 83, 832, 832, 82, 832, 82, 503, 82, 502, - 505, 509, 83, 510, 83, 832, 83, 832, 501, 832, - 832, 82, 504, 511, 82, 512, 515, 506, 513, 83, - 82, 514, 83, 82, 82, 517, 832, 516, 83, 82, - 510, 83, 83, 82, 518, 82, 832, 83, 82, 832, - 511, 83, 512, 83, 515, 513, 83, 82, 514, 832, - 832, 832, 832, 517, 516, 83, 82, 519, 520, 523, - 521, 82, 518, 82, 83, 525, 528, 82, 522, 83, - - 524, 83, 82, 83, 83, 83, 832, 832, 82, 832, - 83, 82, 82, 82, 519, 520, 83, 523, 521, 83, - 83, 83, 82, 82, 82, 522, 832, 82, 524, 526, - 83, 83, 83, 832, 527, 83, 82, 82, 531, 82, - 832, 529, 832, 82, 83, 83, 82, 83, 530, 832, - 532, 83, 82, 832, 83, 832, 526, 533, 832, 535, - 83, 527, 832, 534, 832, 541, 531, 832, 529, 82, - 538, 82, 537, 83, 536, 530, 832, 83, 532, 83, - 82, 539, 832, 832, 533, 82, 82, 535, 83, 82, - 540, 534, 542, 83, 83, 82, 82, 83, 538, 537, - - 832, 536, 82, 83, 83, 82, 82, 82, 539, 832, - 83, 832, 832, 83, 83, 83, 82, 540, 82, 544, - 542, 82, 543, 82, 83, 82, 83, 545, 547, 83, - 548, 83, 546, 83, 82, 82, 82, 82, 832, 82, - 82, 832, 83, 83, 83, 83, 544, 83, 83, 543, - 832, 832, 832, 832, 545, 832, 547, 558, 548, 546, - 82, 556, 82, 557, 559, 82, 82, 565, 83, 82, - 83, 82, 82, 83, 83, 83, 82, 83, 832, 83, - 83, 82, 832, 560, 83, 558, 561, 567, 556, 83, - 557, 568, 559, 832, 832, 83, 832, 82, 562, 83, - - 832, 563, 82, 82, 564, 83, 82, 82, 566, 82, - 83, 83, 82, 82, 83, 83, 82, 83, 832, 82, - 83, 83, 569, 832, 83, 562, 82, 83, 563, 574, - 575, 564, 82, 570, 83, 566, 832, 832, 82, 573, - 83, 832, 832, 832, 571, 572, 83, 576, 577, 82, - 569, 578, 832, 584, 580, 82, 574, 83, 575, 82, - 570, 83, 581, 83, 579, 586, 573, 83, 82, 82, - 582, 571, 572, 83, 576, 577, 83, 83, 578, 82, - 589, 580, 82, 832, 82, 82, 583, 83, 83, 581, - 83, 579, 83, 83, 82, 585, 594, 582, 82, 587, - - 596, 588, 83, 590, 83, 832, 83, 82, 83, 82, - 82, 592, 82, 583, 832, 83, 82, 83, 83, 82, - 83, 832, 585, 591, 83, 593, 587, 83, 588, 82, - 82, 590, 595, 82, 603, 82, 82, 83, 83, 592, - 832, 83, 83, 83, 83, 832, 599, 82, 598, 82, - 591, 82, 593, 597, 82, 83, 600, 83, 82, 83, - 595, 82, 83, 601, 832, 82, 83, 832, 602, 83, - 82, 82, 604, 83, 599, 598, 832, 82, 83, 83, - 597, 832, 832, 832, 600, 83, 832, 832, 622, 606, - 601, 82, 832, 605, 613, 602, 83, 607, 82, 83, - - 604, 832, 624, 82, 832, 82, 83, 82, 832, 614, - 82, 83, 620, 83, 832, 83, 606, 82, 83, 82, - 605, 623, 613, 832, 607, 83, 82, 83, 621, 832, - 82, 82, 832, 82, 83, 832, 614, 82, 83, 83, - 620, 83, 625, 627, 626, 83, 82, 832, 832, 623, - 628, 832, 82, 832, 83, 621, 615, 82, 832, 616, - 83, 617, 618, 832, 832, 83, 629, 832, 82, 625, - 627, 626, 82, 82, 619, 630, 83, 82, 628, 832, - 83, 83, 631, 832, 615, 83, 82, 616, 82, 617, - 618, 633, 832, 629, 83, 832, 83, 632, 82, 82, - - 634, 619, 832, 630, 82, 82, 83, 83, 637, 82, - 631, 635, 83, 83, 82, 82, 83, 83, 82, 633, - 832, 82, 83, 83, 82, 632, 83, 643, 634, 83, - 82, 832, 83, 82, 832, 83, 832, 82, 83, 635, - 639, 83, 636, 82, 638, 83, 650, 82, 82, 640, - 82, 83, 832, 82, 83, 83, 83, 642, 83, 82, - 644, 83, 82, 832, 82, 641, 82, 83, 639, 636, - 83, 638, 83, 832, 83, 82, 640, 832, 652, 832, - 832, 645, 82, 83, 642, 655, 82, 656, 644, 653, - 83, 657, 641, 651, 83, 654, 82, 832, 82, 82, - - 662, 658, 659, 82, 83, 652, 83, 83, 645, 660, - 82, 83, 832, 655, 832, 656, 653, 82, 83, 657, - 664, 832, 654, 82, 82, 83, 666, 662, 82, 658, - 659, 83, 83, 832, 663, 82, 83, 660, 82, 832, - 832, 665, 82, 83, 82, 82, 83, 667, 664, 82, - 83, 82, 83, 83, 666, 669, 82, 83, 82, 83, - 832, 663, 82, 82, 83, 670, 83, 671, 665, 82, - 83, 83, 672, 832, 667, 675, 82, 83, 680, 832, - 82, 668, 681, 669, 83, 832, 832, 673, 83, 82, - 674, 832, 682, 670, 683, 671, 82, 83, 832, 684, - - 672, 82, 832, 675, 83, 82, 680, 685, 82, 83, - 681, 832, 82, 83, 673, 82, 83, 674, 686, 682, - 83, 683, 832, 83, 82, 832, 688, 684, 82, 832, - 696, 832, 83, 687, 685, 82, 83, 697, 82, 693, - 690, 832, 695, 83, 82, 686, 83, 82, 832, 689, - 694, 700, 83, 688, 82, 83, 699, 82, 832, 701, - 687, 82, 83, 82, 832, 83, 693, 690, 832, 83, - 695, 83, 698, 82, 832, 832, 689, 694, 832, 700, - 82, 83, 82, 699, 82, 713, 702, 701, 83, 703, - 83, 832, 83, 83, 82, 82, 832, 719, 82, 698, - - 82, 705, 83, 83, 82, 83, 83, 82, 83, 704, - 82, 832, 83, 702, 82, 83, 703, 710, 83, 708, - 832, 709, 83, 712, 723, 832, 82, 716, 705, 711, - 82, 714, 724, 718, 83, 82, 704, 717, 83, 832, - 715, 82, 832, 83, 710, 82, 708, 721, 709, 83, - 722, 712, 696, 83, 82, 716, 711, 82, 82, 697, - 832, 718, 83, 82, 717, 83, 83, 82, 726, 832, - 832, 83, 82, 82, 721, 83, 734, 725, 722, 832, - 83, 83, 82, 832, 83, 832, 832, 731, 832, 82, - 83, 727, 82, 733, 728, 82, 726, 83, 737, 82, - - 83, 832, 82, 83, 725, 732, 83, 83, 82, 735, - 83, 723, 736, 832, 832, 731, 83, 82, 727, 724, - 82, 733, 728, 82, 832, 83, 832, 832, 83, 832, - 82, 83, 732, 82, 739, 740, 82, 735, 83, 746, - 736, 83, 832, 741, 83, 82, 832, 83, 82, 832, - 742, 82, 82, 83, 744, 832, 83, 745, 832, 83, - 83, 739, 82, 740, 82, 82, 743, 832, 82, 82, - 83, 741, 83, 83, 832, 749, 83, 83, 742, 832, - 832, 750, 744, 832, 747, 745, 82, 748, 753, 832, - 82, 82, 832, 743, 83, 832, 832, 751, 83, 83, - - 752, 832, 832, 749, 82, 82, 832, 754, 832, 750, - 755, 747, 83, 83, 748, 756, 753, 353, 832, 832, - 82, 82, 82, 82, 751, 82, 757, 752, 83, 83, - 83, 83, 82, 83, 754, 832, 82, 759, 755, 832, - 83, 832, 758, 756, 83, 832, 82, 762, 761, 763, - 82, 832, 82, 757, 83, 82, 760, 82, 83, 764, - 83, 832, 82, 83, 759, 83, 82, 832, 832, 758, - 83, 82, 832, 82, 83, 762, 761, 763, 767, 83, - 768, 83, 82, 760, 832, 766, 770, 764, 769, 771, - 83, 772, 773, 82, 775, 82, 765, 82, 832, 832, - - 832, 83, 82, 83, 774, 83, 767, 776, 768, 777, - 83, 832, 766, 832, 770, 832, 769, 771, 782, 772, - 773, 775, 82, 779, 82, 832, 832, 786, 778, 82, - 83, 774, 83, 781, 776, 83, 777, 83, 832, 82, - 82, 780, 832, 82, 82, 783, 782, 83, 83, 784, - 779, 83, 83, 82, 82, 82, 82, 82, 832, 82, - 781, 83, 83, 83, 83, 83, 790, 83, 780, 832, - 785, 789, 832, 783, 788, 82, 787, 784, 800, 82, - 794, 82, 832, 83, 832, 82, 83, 83, 832, 83, - 797, 791, 792, 83, 790, 796, 795, 82, 789, 793, - - 832, 788, 799, 787, 804, 83, 82, 82, 794, 798, - 832, 832, 832, 832, 83, 83, 832, 797, 791, 792, - 803, 82, 796, 795, 801, 832, 793, 802, 807, 83, - 799, 808, 804, 805, 82, 82, 798, 82, 82, 83, - 832, 806, 83, 83, 82, 83, 83, 832, 803, 832, - 82, 82, 83, 832, 82, 809, 807, 810, 83, 83, - 813, 805, 83, 82, 82, 82, 832, 82, 83, 806, - 822, 83, 83, 83, 811, 83, 82, 832, 83, 814, - 82, 832, 82, 809, 83, 810, 832, 818, 83, 82, - 83, 826, 832, 815, 812, 817, 82, 83, 832, 83, - - 820, 811, 816, 82, 83, 819, 821, 814, 82, 82, - 82, 83, 823, 832, 832, 818, 83, 83, 83, 827, - 815, 812, 817, 832, 832, 832, 832, 824, 820, 816, - 82, 828, 819, 825, 821, 831, 82, 832, 83, 832, - 823, 832, 832, 83, 83, 832, 829, 827, 832, 832, - 832, 832, 832, 832, 832, 824, 832, 832, 832, 828, - 832, 825, 832, 832, 832, 832, 830, 832, 832, 832, - 832, 832, 832, 829, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 830, 57, 57, 57, 57, 57, 57, + 65, 70, 556, 71, 73, 73, 73, 76, 731, 77, + 77, 77, 76, 648, 77, 77, 77, 74, 551, 78, + 80, 81, 74, 693, 70, 84, 71, 74, 84, 556, + 70, 84, 71, 85, 84, 84, 85, 194, 194, 85, + 648, 79, 85, 85, 105, 74, 551, 78, 106, 84, + 74, 124, 107, 174, 121, 74, 693, 85, 108, 125, + 626, 122, 84, 84, 123, 84, 126, 127, 79, 84, + 85, 85, 105, 85, 510, 84, 106, 85, 463, 124, + 107, 174, 121, 85, 133, 108, 136, 125, 122, 87, + 88, 123, 134, 126, 127, 180, 137, 698, 135, 194, + + 194, 89, 138, 649, 699, 90, 91, 92, 188, 188, + 188, 200, 133, 84, 136, 510, 84, 87, 88, 84, + 134, 85, 180, 137, 85, 135, 463, 85, 89, 138, + 649, 84, 90, 91, 92, 84, 84, 84, 200, 85, + 181, 84, 554, 85, 85, 139, 650, 140, 171, 141, + 172, 84, 198, 173, 93, 182, 182, 182, 94, 85, + 186, 84, 95, 76, 241, 187, 187, 187, 96, 85, + 554, 97, 139, 650, 140, 171, 141, 172, 74, 198, + 173, 76, 93, 187, 187, 187, 94, 73, 73, 73, + 95, 241, 555, 78, 84, 96, 74, 184, 97, 84, + + 74, 76, 85, 77, 77, 77, 74, 85, 76, 84, + 77, 77, 77, 78, 66, 79, 74, 85, 98, 84, + 555, 78, 99, 74, 74, 100, 101, 85, 74, 102, + 651, 197, 103, 186, 184, 79, 212, 84, 104, 83, + 204, 78, 79, 82, 74, 85, 98, 73, 73, 73, + 99, 74, 75, 100, 101, 557, 102, 651, 197, 103, + 74, 84, 79, 84, 212, 104, 84, 234, 204, 85, + 191, 85, 191, 72, 85, 192, 192, 192, 73, 73, + 73, 84, 84, 557, 210, 199, 68, 610, 74, 85, + 85, 74, 67, 84, 234, 84, 109, 66, 110, 111, + + 203, 85, 112, 85, 834, 113, 114, 76, 115, 77, + 77, 77, 210, 199, 201, 610, 84, 62, 215, 74, + 202, 62, 74, 109, 85, 110, 111, 60, 203, 112, + 84, 611, 113, 114, 60, 115, 84, 209, 85, 205, + 834, 84, 201, 84, 85, 215, 206, 612, 202, 85, + 74, 85, 84, 84, 834, 116, 182, 182, 182, 611, + 85, 85, 207, 117, 209, 834, 118, 205, 208, 119, + 613, 834, 120, 206, 84, 612, 213, 84, 211, 214, + 84, 834, 85, 116, 84, 85, 834, 834, 85, 207, + 223, 117, 85, 118, 84, 208, 119, 216, 613, 120, + + 84, 224, 85, 213, 225, 211, 214, 217, 85, 188, + 188, 188, 84, 222, 218, 219, 220, 223, 84, 128, + 85, 221, 84, 129, 614, 216, 85, 130, 84, 224, + 85, 229, 225, 131, 217, 834, 85, 84, 132, 834, + 222, 218, 219, 220, 230, 85, 84, 128, 221, 226, + 678, 129, 614, 679, 85, 130, 834, 680, 229, 834, + 131, 231, 834, 84, 233, 132, 142, 227, 834, 84, + 143, 85, 230, 232, 144, 681, 226, 85, 678, 84, + 145, 679, 84, 146, 228, 680, 147, 85, 235, 231, + 85, 233, 834, 239, 142, 227, 84, 84, 143, 708, + + 232, 834, 144, 681, 85, 85, 834, 145, 834, 240, + 146, 228, 834, 147, 148, 834, 235, 84, 149, 236, + 239, 84, 150, 237, 84, 85, 834, 708, 151, 85, + 238, 84, 85, 152, 153, 84, 240, 84, 834, 85, + 84, 84, 148, 85, 344, 85, 149, 236, 85, 85, + 150, 237, 85, 242, 243, 151, 330, 238, 834, 245, + 152, 153, 84, 834, 246, 84, 249, 244, 834, 834, + 85, 84, 259, 85, 834, 250, 192, 192, 192, 85, + 242, 834, 243, 154, 330, 155, 245, 84, 156, 157, + 84, 246, 158, 249, 244, 85, 159, 160, 85, 259, + + 161, 162, 250, 163, 84, 164, 84, 84, 247, 248, + 255, 154, 85, 155, 85, 85, 156, 157, 834, 158, + 834, 84, 834, 159, 160, 272, 84, 161, 162, 85, + 163, 256, 164, 165, 85, 247, 248, 166, 255, 257, + 167, 168, 192, 192, 192, 258, 265, 169, 84, 834, + 170, 834, 272, 834, 84, 251, 85, 264, 834, 256, + 252, 165, 85, 253, 254, 166, 257, 84, 167, 168, + 266, 84, 258, 265, 169, 85, 834, 170, 84, 85, + 267, 84, 251, 834, 264, 709, 85, 252, 260, 85, + 253, 254, 261, 268, 84, 270, 271, 175, 266, 834, + + 262, 176, 85, 84, 177, 178, 834, 267, 263, 834, + 269, 85, 273, 709, 179, 834, 260, 274, 84, 834, + 261, 268, 270, 271, 834, 175, 85, 262, 84, 176, + 275, 834, 177, 178, 84, 263, 85, 269, 84, 273, + 84, 179, 85, 834, 84, 274, 85, 84, 85, 834, + 834, 277, 85, 84, 834, 85, 84, 276, 275, 84, + 84, 85, 84, 278, 85, 279, 84, 85, 85, 84, + 85, 834, 84, 834, 85, 84, 281, 85, 280, 277, + 85, 290, 307, 85, 276, 834, 292, 84, 291, 293, + 278, 294, 296, 279, 834, 85, 295, 834, 301, 84, + + 834, 834, 297, 281, 84, 280, 84, 85, 298, 290, + 307, 84, 85, 292, 85, 291, 293, 834, 294, 85, + 296, 319, 84, 295, 299, 282, 301, 283, 284, 297, + 85, 300, 834, 84, 302, 298, 834, 285, 834, 834, + 286, 85, 84, 287, 288, 834, 289, 303, 319, 84, + 85, 834, 299, 282, 84, 283, 284, 85, 300, 309, + 308, 302, 85, 834, 285, 313, 834, 286, 304, 84, + 287, 288, 305, 289, 303, 84, 84, 85, 834, 84, + 834, 84, 84, 85, 85, 306, 309, 85, 308, 85, + 85, 84, 318, 313, 84, 84, 304, 834, 834, 85, + + 305, 310, 85, 85, 834, 311, 84, 314, 315, 316, + 834, 321, 306, 834, 85, 84, 84, 312, 320, 318, + 834, 317, 322, 85, 85, 181, 323, 834, 310, 834, + 834, 84, 311, 324, 314, 315, 834, 316, 321, 85, + 182, 182, 182, 326, 312, 834, 320, 325, 317, 834, + 322, 84, 84, 323, 76, 84, 187, 187, 187, 85, + 85, 324, 84, 85, 84, 84, 834, 327, 84, 74, + 85, 326, 85, 85, 325, 84, 85, 336, 84, 834, + 834, 84, 84, 85, 331, 85, 85, 332, 329, 85, + 85, 333, 834, 834, 327, 335, 84, 74, 334, 337, + + 84, 338, 84, 834, 85, 341, 834, 834, 85, 343, + 85, 331, 84, 339, 332, 329, 834, 834, 333, 340, + 85, 834, 335, 345, 84, 334, 342, 337, 834, 338, + 84, 346, 85, 341, 84, 84, 343, 84, 85, 834, + 339, 84, 85, 85, 834, 85, 84, 340, 834, 85, + 834, 345, 84, 342, 85, 834, 84, 355, 84, 346, + 85, 347, 84, 348, 85, 352, 85, 380, 349, 353, + 85, 354, 84, 350, 84, 85, 834, 351, 834, 357, + 85, 84, 85, 358, 84, 834, 84, 834, 347, 85, + 348, 362, 85, 352, 85, 349, 834, 353, 84, 354, + + 350, 356, 364, 359, 351, 365, 85, 357, 84, 363, + 834, 358, 366, 84, 367, 360, 85, 84, 362, 84, + 834, 85, 84, 834, 84, 85, 84, 85, 356, 364, + 85, 370, 85, 365, 85, 361, 834, 363, 834, 366, + 834, 367, 371, 372, 373, 84, 84, 369, 374, 84, + 368, 834, 84, 85, 85, 834, 84, 85, 370, 379, + 85, 84, 834, 361, 85, 375, 377, 84, 834, 85, + 371, 372, 373, 84, 369, 85, 374, 368, 834, 382, + 834, 85, 376, 84, 84, 381, 379, 84, 378, 84, + 84, 85, 85, 375, 377, 85, 385, 85, 85, 834, + + 383, 834, 834, 84, 834, 384, 386, 382, 84, 376, + 84, 85, 381, 388, 834, 378, 85, 84, 85, 834, + 84, 834, 387, 84, 385, 85, 834, 383, 85, 389, + 393, 85, 384, 834, 386, 84, 84, 84, 85, 834, + 391, 388, 390, 85, 85, 85, 84, 392, 84, 387, + 84, 84, 84, 84, 85, 84, 85, 389, 85, 85, + 85, 85, 84, 85, 84, 84, 834, 834, 391, 390, + 85, 84, 85, 85, 394, 392, 834, 834, 398, 85, + 84, 84, 84, 834, 397, 396, 395, 401, 85, 85, + 85, 400, 399, 834, 84, 834, 84, 402, 834, 84, + + 403, 394, 85, 405, 85, 834, 398, 85, 84, 408, + 409, 397, 396, 395, 84, 401, 85, 404, 400, 399, + 406, 407, 85, 834, 402, 84, 834, 84, 403, 84, + 834, 405, 84, 85, 411, 85, 834, 85, 412, 834, + 85, 834, 834, 84, 404, 415, 84, 406, 410, 407, + 413, 85, 84, 834, 85, 414, 834, 834, 84, 84, + 85, 411, 834, 84, 416, 412, 85, 85, 834, 84, + 417, 85, 415, 84, 84, 419, 410, 85, 413, 834, + 84, 85, 85, 414, 418, 84, 84, 420, 85, 834, + 834, 416, 84, 85, 85, 834, 426, 421, 417, 834, + + 85, 84, 84, 419, 85, 84, 834, 422, 84, 85, + 85, 418, 84, 85, 420, 834, 85, 834, 834, 84, + 85, 84, 84, 423, 424, 421, 425, 85, 84, 85, + 85, 84, 834, 84, 834, 422, 85, 427, 84, 85, + 428, 85, 430, 429, 433, 834, 85, 435, 84, 834, + 423, 424, 834, 425, 432, 84, 85, 431, 84, 436, + 438, 434, 834, 85, 427, 84, 85, 428, 84, 430, + 429, 437, 433, 85, 84, 435, 85, 84, 439, 84, + 834, 432, 85, 84, 431, 85, 436, 85, 438, 434, + 440, 85, 84, 834, 84, 834, 442, 84, 443, 437, + + 85, 444, 85, 441, 84, 85, 439, 834, 84, 834, + 84, 84, 85, 84, 84, 445, 85, 440, 85, 85, + 84, 85, 85, 834, 442, 443, 84, 84, 85, 444, + 441, 447, 84, 84, 85, 85, 834, 446, 84, 84, + 85, 85, 445, 84, 448, 834, 85, 85, 84, 84, + 84, 85, 84, 449, 460, 450, 85, 85, 85, 447, + 85, 355, 85, 834, 446, 84, 84, 451, 452, 834, + 457, 448, 454, 85, 85, 453, 834, 458, 84, 834, + 449, 84, 450, 84, 455, 84, 85, 456, 459, 85, + 834, 85, 834, 85, 451, 452, 359, 464, 457, 834, + + 454, 834, 453, 834, 84, 458, 834, 466, 465, 470, + 84, 455, 85, 834, 456, 834, 459, 461, 85, 471, + 834, 474, 476, 472, 464, 84, 834, 834, 467, 834, + 85, 84, 834, 85, 473, 466, 465, 470, 468, 85, + 475, 84, 469, 84, 461, 84, 471, 84, 474, 85, + 472, 85, 84, 85, 834, 85, 467, 834, 834, 552, + 85, 553, 473, 84, 477, 468, 479, 475, 480, 469, + 84, 85, 84, 84, 84, 834, 84, 478, 85, 482, + 85, 85, 85, 481, 85, 84, 552, 834, 553, 834, + 84, 477, 84, 85, 479, 486, 480, 483, 85, 485, + + 85, 84, 484, 84, 478, 487, 84, 482, 84, 85, + 481, 85, 84, 494, 85, 834, 85, 834, 84, 834, + 85, 85, 84, 486, 84, 483, 85, 485, 488, 484, + 85, 84, 85, 487, 834, 84, 834, 84, 493, 85, + 834, 490, 491, 85, 489, 85, 84, 834, 492, 84, + 84, 84, 495, 84, 85, 488, 502, 85, 85, 85, + 498, 85, 834, 834, 85, 493, 497, 496, 490, 491, + 499, 489, 84, 84, 84, 492, 501, 500, 84, 495, + 85, 85, 85, 84, 84, 834, 85, 84, 498, 84, + 834, 85, 85, 497, 496, 85, 834, 85, 499, 505, + + 84, 504, 507, 511, 501, 500, 834, 84, 85, 84, + 84, 503, 834, 84, 506, 85, 834, 85, 85, 834, + 508, 85, 834, 834, 84, 834, 84, 505, 84, 504, + 507, 511, 85, 512, 85, 834, 85, 834, 503, 834, + 834, 84, 506, 513, 84, 514, 517, 508, 515, 85, + 84, 516, 85, 84, 84, 519, 834, 518, 85, 84, + 512, 85, 85, 84, 520, 84, 834, 85, 84, 834, + 513, 85, 514, 85, 517, 515, 85, 84, 516, 834, + 834, 834, 834, 519, 518, 85, 84, 521, 522, 525, + 523, 84, 520, 84, 85, 527, 530, 84, 524, 85, + + 526, 85, 84, 85, 85, 85, 834, 834, 84, 834, + 85, 84, 84, 84, 521, 522, 85, 525, 523, 85, + 85, 85, 84, 84, 84, 524, 834, 84, 526, 528, + 85, 85, 85, 834, 529, 85, 84, 84, 533, 84, + 834, 531, 834, 84, 85, 85, 84, 85, 532, 834, + 534, 85, 84, 834, 85, 834, 528, 535, 834, 537, + 85, 529, 834, 536, 834, 543, 533, 834, 531, 84, + 540, 84, 539, 85, 538, 532, 834, 85, 534, 85, + 84, 541, 834, 834, 535, 84, 84, 537, 85, 84, + 542, 536, 544, 85, 85, 84, 84, 85, 540, 539, + + 834, 538, 84, 85, 85, 84, 84, 84, 541, 834, + 85, 834, 834, 85, 85, 85, 84, 542, 84, 546, + 544, 84, 545, 84, 85, 84, 85, 547, 549, 85, + 550, 85, 548, 85, 84, 84, 84, 84, 834, 84, + 84, 834, 85, 85, 85, 85, 546, 85, 85, 545, + 834, 834, 834, 834, 547, 834, 549, 560, 550, 548, + 84, 558, 84, 559, 561, 84, 84, 567, 85, 84, + 85, 84, 84, 85, 85, 85, 84, 85, 834, 85, + 85, 84, 834, 562, 85, 560, 563, 569, 558, 85, + 559, 570, 561, 834, 834, 85, 834, 84, 564, 85, + + 834, 565, 84, 84, 566, 85, 84, 84, 568, 84, + 85, 85, 84, 84, 85, 85, 84, 85, 834, 84, + 85, 85, 571, 834, 85, 564, 84, 85, 565, 576, + 577, 566, 84, 572, 85, 568, 834, 834, 84, 575, + 85, 834, 834, 834, 573, 574, 85, 578, 579, 84, + 571, 580, 834, 586, 582, 84, 576, 85, 577, 84, + 572, 85, 583, 85, 581, 588, 575, 85, 84, 84, + 584, 573, 574, 85, 578, 579, 85, 85, 580, 84, + 591, 582, 84, 834, 84, 84, 585, 85, 85, 583, + 85, 581, 85, 85, 84, 587, 596, 584, 84, 589, + + 598, 590, 85, 592, 85, 834, 85, 84, 85, 84, + 84, 594, 84, 585, 834, 85, 84, 85, 85, 84, + 85, 834, 587, 593, 85, 595, 589, 85, 590, 84, + 84, 592, 597, 84, 605, 84, 84, 85, 85, 594, + 834, 85, 85, 85, 85, 834, 601, 84, 600, 84, + 593, 84, 595, 599, 84, 85, 602, 85, 84, 85, + 597, 84, 85, 603, 834, 84, 85, 834, 604, 85, + 84, 84, 606, 85, 601, 600, 834, 84, 85, 85, + 599, 834, 834, 834, 602, 85, 834, 834, 624, 608, + 603, 84, 834, 607, 615, 604, 85, 609, 84, 85, + + 606, 834, 626, 84, 834, 84, 85, 84, 834, 616, + 84, 85, 622, 85, 834, 85, 608, 84, 85, 84, + 607, 625, 615, 834, 609, 85, 84, 85, 623, 834, + 84, 84, 834, 84, 85, 834, 616, 84, 85, 85, + 622, 85, 627, 629, 628, 85, 84, 834, 834, 625, + 630, 834, 84, 834, 85, 623, 617, 84, 834, 618, + 85, 619, 620, 834, 834, 85, 631, 834, 84, 627, + 629, 628, 84, 84, 621, 632, 85, 84, 630, 834, + 85, 85, 633, 834, 617, 85, 84, 618, 84, 619, + 620, 635, 834, 631, 85, 834, 85, 634, 84, 84, + + 636, 621, 834, 632, 84, 84, 85, 85, 639, 84, + 633, 637, 85, 85, 84, 84, 85, 85, 84, 635, + 834, 84, 85, 85, 84, 634, 85, 645, 636, 85, + 84, 834, 85, 84, 834, 85, 834, 84, 85, 637, + 641, 85, 638, 84, 640, 85, 652, 84, 84, 642, + 84, 85, 834, 84, 85, 85, 85, 644, 85, 84, + 646, 85, 84, 834, 84, 643, 84, 85, 641, 638, + 85, 640, 85, 834, 85, 84, 642, 834, 654, 834, + 834, 647, 84, 85, 644, 657, 84, 658, 646, 655, + 85, 659, 643, 653, 85, 656, 84, 834, 84, 84, + + 664, 660, 661, 84, 85, 654, 85, 85, 647, 662, + 84, 85, 834, 657, 834, 658, 655, 84, 85, 659, + 666, 834, 656, 84, 84, 85, 668, 664, 84, 660, + 661, 85, 85, 834, 665, 84, 85, 662, 84, 834, + 834, 667, 84, 85, 84, 84, 85, 669, 666, 84, + 85, 84, 85, 85, 668, 671, 84, 85, 84, 85, + 834, 665, 84, 84, 85, 672, 85, 673, 667, 84, + 85, 85, 674, 834, 669, 677, 84, 85, 682, 834, + 84, 670, 683, 671, 85, 834, 834, 675, 85, 84, + 676, 834, 684, 672, 685, 673, 84, 85, 834, 686, + + 674, 84, 834, 677, 85, 84, 682, 687, 84, 85, + 683, 834, 84, 85, 675, 84, 85, 676, 688, 684, + 85, 685, 834, 85, 84, 834, 690, 686, 84, 834, + 698, 834, 85, 689, 687, 84, 85, 699, 84, 695, + 692, 834, 697, 85, 84, 688, 85, 84, 834, 691, + 696, 702, 85, 690, 84, 85, 701, 84, 834, 703, + 689, 84, 85, 84, 834, 85, 695, 692, 834, 85, + 697, 85, 700, 84, 834, 834, 691, 696, 834, 702, + 84, 85, 84, 701, 84, 715, 704, 703, 85, 705, + 85, 834, 85, 85, 84, 84, 834, 721, 84, 700, + + 84, 707, 85, 85, 84, 85, 85, 84, 85, 706, + 84, 834, 85, 704, 84, 85, 705, 712, 85, 710, + 834, 711, 85, 714, 725, 834, 84, 718, 707, 713, + 84, 716, 726, 720, 85, 84, 706, 719, 85, 834, + 717, 84, 834, 85, 712, 84, 710, 723, 711, 85, + 724, 714, 698, 85, 84, 718, 713, 84, 84, 699, + 834, 720, 85, 84, 719, 85, 85, 84, 728, 834, + 834, 85, 84, 84, 723, 85, 736, 727, 724, 834, + 85, 85, 84, 834, 85, 834, 834, 733, 834, 84, + 85, 729, 84, 735, 730, 84, 728, 85, 739, 84, + + 85, 834, 84, 85, 727, 734, 85, 85, 84, 737, + 85, 725, 738, 834, 834, 733, 85, 84, 729, 726, + 84, 735, 730, 84, 834, 85, 834, 834, 85, 834, + 84, 85, 734, 84, 741, 742, 84, 737, 85, 748, + 738, 85, 834, 743, 85, 84, 834, 85, 84, 834, + 744, 84, 84, 85, 746, 834, 85, 747, 834, 85, + 85, 741, 84, 742, 84, 84, 745, 834, 84, 84, + 85, 743, 85, 85, 834, 751, 85, 85, 744, 834, + 834, 752, 746, 834, 749, 747, 84, 750, 755, 834, + 84, 84, 834, 745, 85, 834, 834, 753, 85, 85, + + 754, 834, 834, 751, 84, 84, 834, 756, 834, 752, + 757, 749, 85, 85, 750, 758, 755, 355, 834, 834, + 84, 84, 84, 84, 753, 84, 759, 754, 85, 85, + 85, 85, 84, 85, 756, 834, 84, 761, 757, 834, + 85, 834, 760, 758, 85, 834, 84, 764, 763, 765, + 84, 834, 84, 759, 85, 84, 762, 84, 85, 766, + 85, 834, 84, 85, 761, 85, 84, 834, 834, 760, + 85, 84, 834, 84, 85, 764, 763, 765, 769, 85, + 770, 85, 84, 762, 834, 768, 772, 766, 771, 773, + 85, 774, 775, 84, 777, 84, 767, 84, 834, 834, + + 834, 85, 84, 85, 776, 85, 769, 778, 770, 779, + 85, 834, 768, 834, 772, 834, 771, 773, 784, 774, + 775, 777, 84, 781, 84, 834, 834, 788, 780, 84, + 85, 776, 85, 783, 778, 85, 779, 85, 834, 84, + 84, 782, 834, 84, 84, 785, 784, 85, 85, 786, + 781, 85, 85, 84, 84, 84, 84, 84, 834, 84, + 783, 85, 85, 85, 85, 85, 792, 85, 782, 834, + 787, 791, 834, 785, 790, 84, 789, 786, 802, 84, + 796, 84, 834, 85, 834, 84, 85, 85, 834, 85, + 799, 793, 794, 85, 792, 798, 797, 84, 791, 795, + + 834, 790, 801, 789, 806, 85, 84, 84, 796, 800, + 834, 834, 834, 834, 85, 85, 834, 799, 793, 794, + 805, 84, 798, 797, 803, 834, 795, 804, 809, 85, + 801, 810, 806, 807, 84, 84, 800, 84, 84, 85, + 834, 808, 85, 85, 84, 85, 85, 834, 805, 834, + 84, 84, 85, 834, 84, 811, 809, 812, 85, 85, + 815, 807, 85, 84, 84, 84, 834, 84, 85, 808, + 824, 85, 85, 85, 813, 85, 84, 834, 85, 816, + 84, 834, 84, 811, 85, 812, 834, 820, 85, 84, + 85, 828, 834, 817, 814, 819, 84, 85, 834, 85, + + 822, 813, 818, 84, 85, 821, 823, 816, 84, 84, + 84, 85, 825, 834, 834, 820, 85, 85, 85, 829, + 817, 814, 819, 834, 834, 834, 834, 826, 822, 818, + 84, 830, 821, 827, 823, 833, 84, 834, 85, 834, + 825, 834, 834, 85, 85, 834, 831, 829, 834, 834, + 834, 834, 834, 834, 834, 826, 834, 834, 834, 830, + 834, 827, 834, 834, 834, 834, 832, 834, 834, 834, + 834, 834, 834, 831, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 832, 57, 57, 57, 57, 57, 57, 57, 57, 59, 59, 59, 59, 59, 59, 59, 59, - 61, 61, 61, 61, 61, 61, 61, 61, 68, 68, - 68, 68, 68, 68, 68, 68, 84, 84, 84, 84, - 84, 181, 181, 181, 181, 181, 181, 181, 181, 183, - 183, 183, 183, 183, 183, 183, 183, 187, 187, 832, - 187, 187, 187, 187, 187, 188, 188, 832, 188, 188, - 188, 188, 188, 191, 191, 832, 191, 191, 191, 191, - 191, 193, 193, 194, 194, 326, 832, 326, 326, 326, - 460, 460, 832, 460, 460, 460, 460, 460, 507, 507, - 832, 507, 507, 507, 507, 507, 661, 832, 832, 832, - - 832, 661, 661, 692, 692, 692, 692, 720, 720, 738, - 738, 738, 11, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832 + 61, 61, 61, 61, 61, 61, 61, 61, 69, 69, + 69, 69, 69, 69, 69, 69, 86, 86, 86, 86, + 86, 183, 183, 183, 183, 183, 183, 183, 183, 185, + 185, 185, 185, 185, 185, 185, 185, 189, 189, 834, + 189, 189, 189, 189, 189, 190, 190, 834, 190, 190, + 190, 190, 190, 193, 193, 834, 193, 193, 193, 193, + 193, 195, 195, 196, 196, 328, 834, 328, 328, 328, + 462, 462, 834, 462, 462, 462, 462, 462, 509, 509, + 834, 509, 509, 509, 509, 509, 663, 834, 834, 834, + + 834, 663, 663, 694, 694, 694, 694, 722, 722, 740, + 740, 740, 11, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834 } ; @@ -1331,398 +1332,398 @@ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 3, 3, 2, 707, 2, 4, 4, 4, 9, 38, + 3, 3, 2, 709, 2, 4, 4, 4, 9, 38, 9, 9, 9, 2, 2, 2, 10, 38, 10, 10, - 10, 16, 469, 16, 19, 19, 19, 21, 706, 21, - 21, 21, 22, 609, 22, 22, 22, 19, 465, 21, - 24, 24, 21, 692, 68, 32, 68, 22, 36, 469, - 69, 35, 69, 32, 48, 37, 36, 77, 77, 35, - 609, 21, 48, 37, 32, 19, 465, 21, 32, 84, - 21, 36, 32, 48, 35, 22, 661, 84, 32, 37, - 624, 35, 50, 41, 35, 40, 37, 37, 21, 29, - 50, 41, 32, 40, 508, 88, 32, 29, 461, 36, - 32, 48, 35, 88, 40, 32, 41, 37, 35, 29, - 29, 35, 40, 37, 37, 50, 41, 696, 40, 192, - - 192, 29, 41, 610, 696, 29, 29, 29, 58, 58, - 58, 88, 40, 42, 41, 406, 47, 29, 29, 86, - 40, 42, 50, 41, 47, 40, 353, 86, 29, 41, - 610, 116, 29, 29, 29, 30, 123, 326, 88, 116, - 52, 194, 467, 30, 123, 42, 611, 42, 47, 42, - 47, 137, 86, 47, 30, 52, 52, 52, 30, 137, - 183, 142, 30, 56, 116, 56, 56, 56, 30, 142, - 467, 30, 42, 611, 42, 47, 42, 47, 56, 86, + 10, 16, 471, 16, 19, 19, 19, 21, 708, 21, + 21, 21, 22, 611, 22, 22, 22, 19, 467, 21, + 24, 24, 21, 694, 69, 32, 69, 22, 36, 471, + 70, 35, 70, 32, 48, 37, 36, 78, 78, 35, + 611, 21, 48, 37, 32, 19, 467, 21, 32, 86, + 21, 36, 32, 48, 35, 22, 663, 86, 32, 37, + 626, 35, 50, 41, 35, 40, 37, 37, 21, 29, + 50, 41, 32, 40, 510, 90, 32, 29, 463, 36, + 32, 48, 35, 90, 40, 32, 41, 37, 35, 29, + 29, 35, 40, 37, 37, 50, 41, 698, 40, 194, + + 194, 29, 41, 612, 698, 29, 29, 29, 58, 58, + 58, 90, 40, 42, 41, 408, 47, 29, 29, 88, + 40, 42, 50, 41, 47, 40, 355, 88, 29, 41, + 612, 118, 29, 29, 29, 30, 125, 328, 90, 118, + 52, 196, 469, 30, 125, 42, 613, 42, 47, 42, + 47, 139, 88, 47, 30, 52, 52, 52, 30, 139, + 185, 144, 30, 56, 118, 56, 56, 56, 30, 144, + 469, 30, 42, 613, 42, 47, 42, 47, 56, 88, 47, 55, 30, 55, 55, 55, 30, 63, 63, 63, - 30, 116, 468, 55, 85, 30, 55, 181, 30, 31, + 30, 118, 470, 55, 87, 30, 55, 183, 30, 31, - 63, 64, 85, 64, 64, 64, 56, 31, 65, 97, - 65, 65, 65, 64, 66, 55, 64, 97, 31, 91, - 468, 55, 31, 65, 55, 31, 31, 91, 63, 31, - 612, 85, 31, 54, 53, 64, 97, 111, 31, 26, - 91, 64, 55, 20, 64, 111, 31, 72, 72, 72, - 31, 65, 18, 31, 31, 470, 31, 612, 85, 31, - 72, 95, 64, 87, 97, 31, 33, 111, 91, 95, - 73, 87, 73, 14, 33, 73, 73, 73, 75, 75, - 75, 90, 99, 470, 95, 87, 13, 550, 72, 90, - 99, 75, 11, 89, 111, 94, 33, 8, 33, 33, - - 90, 89, 33, 94, 7, 33, 33, 76, 33, 76, - 76, 76, 95, 87, 89, 550, 92, 6, 99, 75, - 89, 5, 76, 33, 92, 33, 33, 0, 90, 33, - 93, 551, 33, 33, 0, 33, 34, 94, 93, 92, - 0, 96, 89, 98, 34, 99, 92, 552, 89, 96, - 76, 98, 103, 195, 0, 34, 180, 180, 180, 551, - 103, 195, 93, 34, 94, 0, 34, 92, 93, 34, - 554, 0, 34, 92, 100, 552, 98, 102, 96, 98, - 104, 0, 100, 34, 101, 102, 0, 0, 104, 93, - 103, 34, 101, 34, 107, 93, 34, 100, 554, 34, - - 39, 104, 107, 98, 104, 96, 98, 100, 39, 186, - 186, 186, 197, 102, 101, 101, 101, 103, 105, 39, - 197, 101, 108, 39, 555, 100, 105, 39, 110, 104, - 108, 107, 104, 39, 100, 0, 110, 109, 39, 0, - 102, 101, 101, 101, 108, 109, 106, 39, 101, 105, - 646, 39, 555, 647, 106, 39, 0, 648, 107, 0, - 39, 109, 0, 114, 110, 39, 43, 106, 0, 112, - 43, 114, 108, 109, 43, 649, 105, 112, 646, 115, - 43, 647, 199, 43, 106, 648, 43, 115, 112, 109, - 199, 110, 0, 114, 43, 106, 113, 207, 43, 676, - - 109, 0, 43, 649, 113, 207, 0, 43, 0, 115, - 43, 106, 0, 43, 44, 0, 112, 117, 44, 113, - 114, 119, 44, 113, 122, 117, 0, 676, 44, 119, - 113, 120, 122, 44, 44, 118, 115, 198, 0, 120, - 128, 124, 44, 118, 212, 198, 44, 113, 128, 124, - 44, 113, 212, 117, 118, 44, 198, 113, 0, 119, - 44, 44, 45, 0, 120, 219, 122, 118, 0, 0, - 45, 121, 128, 219, 0, 124, 189, 189, 189, 121, - 117, 0, 118, 45, 198, 45, 119, 135, 45, 45, - 126, 120, 45, 122, 118, 135, 45, 45, 126, 128, - - 45, 45, 124, 45, 131, 45, 222, 127, 121, 121, - 126, 45, 131, 45, 222, 127, 45, 45, 0, 45, - 0, 130, 0, 45, 45, 135, 125, 45, 45, 130, - 45, 127, 45, 46, 125, 121, 121, 46, 126, 127, - 46, 46, 190, 190, 190, 127, 131, 46, 132, 0, - 46, 0, 135, 0, 134, 125, 132, 130, 0, 127, - 125, 46, 134, 125, 125, 46, 127, 129, 46, 46, - 132, 133, 127, 131, 46, 129, 0, 46, 49, 133, - 132, 136, 125, 0, 130, 678, 49, 125, 129, 136, - 125, 125, 129, 133, 138, 134, 134, 49, 132, 0, - - 129, 49, 138, 139, 49, 49, 0, 132, 129, 0, - 133, 139, 136, 678, 49, 0, 129, 138, 140, 0, - 129, 133, 134, 134, 0, 49, 140, 129, 141, 49, - 139, 0, 49, 49, 143, 129, 141, 133, 144, 136, - 145, 49, 143, 0, 146, 138, 144, 149, 145, 0, - 0, 141, 146, 150, 0, 149, 148, 140, 139, 151, - 152, 150, 160, 143, 148, 144, 224, 151, 152, 153, - 160, 0, 154, 0, 224, 156, 146, 153, 145, 141, - 154, 148, 160, 156, 140, 0, 149, 170, 148, 150, - 143, 151, 153, 144, 0, 170, 152, 0, 156, 155, - - 0, 0, 154, 146, 157, 145, 147, 155, 154, 148, - 160, 158, 157, 149, 147, 148, 150, 0, 151, 158, - 153, 170, 162, 152, 155, 147, 156, 147, 147, 154, - 162, 155, 0, 161, 157, 154, 0, 147, 0, 0, - 147, 161, 165, 147, 147, 0, 147, 158, 170, 159, - 165, 0, 155, 147, 169, 147, 147, 159, 155, 162, - 161, 157, 169, 0, 147, 165, 0, 147, 159, 163, - 147, 147, 159, 147, 158, 164, 166, 163, 0, 167, - 0, 172, 168, 164, 166, 159, 162, 167, 161, 172, - 168, 171, 169, 165, 174, 173, 159, 0, 0, 171, - - 159, 163, 174, 173, 0, 164, 175, 166, 167, 168, - 0, 172, 159, 0, 175, 176, 177, 164, 171, 169, - 0, 168, 173, 176, 177, 179, 174, 0, 163, 0, - 0, 178, 164, 175, 166, 167, 0, 168, 172, 178, - 179, 179, 179, 177, 164, 0, 171, 176, 168, 0, - 173, 196, 200, 174, 185, 201, 185, 185, 185, 196, - 200, 175, 202, 201, 203, 204, 0, 178, 226, 185, - 202, 177, 203, 204, 176, 229, 226, 205, 211, 0, - 0, 206, 209, 229, 200, 205, 211, 201, 196, 206, - 209, 202, 0, 0, 178, 204, 210, 185, 203, 205, - - 208, 206, 213, 0, 210, 209, 0, 0, 208, 211, - 213, 200, 214, 206, 201, 196, 0, 0, 202, 208, - 214, 0, 204, 213, 215, 203, 210, 205, 0, 206, - 216, 214, 215, 209, 217, 218, 211, 220, 216, 0, - 206, 230, 217, 218, 0, 220, 221, 208, 0, 230, - 0, 213, 223, 210, 221, 0, 227, 225, 231, 214, - 223, 215, 225, 216, 227, 221, 231, 247, 217, 221, - 225, 223, 233, 218, 235, 247, 0, 220, 0, 227, - 233, 236, 235, 227, 234, 0, 232, 0, 215, 236, - 216, 231, 234, 221, 232, 217, 0, 221, 239, 223, - - 218, 225, 233, 228, 220, 234, 239, 227, 228, 232, - 0, 227, 235, 237, 236, 228, 228, 238, 231, 240, - 0, 237, 241, 0, 242, 238, 246, 240, 225, 233, - 241, 239, 242, 234, 246, 228, 0, 232, 0, 235, - 0, 236, 240, 241, 242, 243, 244, 238, 242, 245, - 237, 0, 248, 243, 244, 0, 249, 245, 239, 246, - 248, 250, 0, 228, 249, 243, 244, 251, 0, 250, - 240, 241, 242, 252, 238, 251, 242, 237, 0, 249, - 0, 252, 243, 253, 254, 248, 246, 255, 245, 256, - 257, 253, 254, 243, 244, 255, 252, 256, 257, 0, - - 250, 0, 0, 259, 0, 251, 253, 249, 260, 243, - 258, 259, 248, 257, 0, 245, 260, 261, 258, 0, - 262, 0, 254, 263, 252, 261, 0, 250, 262, 258, - 264, 263, 251, 0, 253, 265, 266, 267, 264, 0, - 261, 257, 260, 265, 266, 267, 268, 262, 269, 254, - 270, 271, 272, 273, 268, 274, 269, 258, 270, 271, - 272, 273, 275, 274, 276, 277, 0, 0, 261, 260, - 275, 279, 276, 277, 267, 262, 0, 0, 273, 279, - 278, 280, 281, 0, 272, 271, 269, 276, 278, 280, - 281, 275, 274, 0, 282, 0, 285, 277, 0, 286, - - 278, 267, 282, 280, 285, 0, 273, 286, 289, 283, - 283, 272, 271, 269, 283, 276, 289, 278, 275, 274, - 281, 282, 283, 0, 277, 284, 0, 287, 278, 288, - 0, 280, 290, 284, 285, 287, 0, 288, 286, 0, - 290, 0, 0, 291, 278, 289, 292, 281, 284, 282, - 287, 291, 293, 0, 292, 288, 0, 0, 294, 295, - 293, 285, 0, 296, 290, 286, 294, 295, 0, 297, - 291, 296, 289, 298, 299, 293, 284, 297, 287, 0, - 300, 298, 299, 288, 292, 301, 302, 294, 300, 0, - 0, 290, 303, 301, 302, 0, 304, 299, 291, 0, - - 303, 305, 306, 293, 304, 307, 0, 300, 308, 305, - 306, 292, 309, 307, 294, 0, 308, 0, 0, 310, - 309, 312, 311, 301, 302, 299, 303, 310, 314, 312, - 311, 319, 0, 316, 0, 300, 314, 305, 313, 319, - 306, 316, 309, 307, 312, 0, 313, 314, 315, 0, - 301, 302, 0, 303, 311, 317, 315, 310, 318, 314, - 316, 313, 0, 317, 305, 320, 318, 306, 322, 309, - 307, 315, 312, 320, 321, 314, 322, 324, 317, 323, - 0, 311, 321, 325, 310, 324, 314, 323, 316, 313, - 318, 325, 327, 0, 328, 0, 321, 329, 322, 315, - - 327, 323, 328, 320, 330, 329, 317, 0, 332, 0, - 331, 333, 330, 335, 336, 324, 332, 318, 331, 333, - 337, 335, 336, 0, 321, 322, 338, 339, 337, 323, - 320, 331, 340, 341, 338, 339, 0, 328, 343, 344, - 340, 341, 324, 347, 336, 0, 343, 344, 346, 345, - 348, 347, 350, 337, 351, 338, 346, 345, 348, 331, - 350, 354, 351, 0, 328, 349, 354, 341, 343, 0, - 347, 336, 345, 349, 354, 344, 0, 348, 352, 0, - 337, 355, 338, 356, 346, 360, 352, 346, 349, 355, - 0, 356, 0, 360, 341, 343, 357, 354, 347, 0, - - 345, 0, 344, 0, 361, 348, 0, 356, 355, 358, - 359, 346, 361, 0, 346, 0, 349, 352, 359, 358, - 0, 360, 362, 358, 354, 363, 0, 0, 357, 0, - 362, 364, 0, 363, 359, 356, 355, 358, 357, 364, - 361, 365, 357, 366, 352, 367, 358, 368, 360, 365, - 358, 366, 369, 367, 0, 368, 357, 0, 0, 466, - 369, 466, 359, 370, 363, 357, 366, 361, 367, 357, - 372, 370, 373, 371, 374, 0, 375, 365, 372, 369, - 373, 371, 374, 368, 375, 376, 466, 0, 466, 0, - 377, 363, 379, 376, 366, 374, 367, 371, 377, 373, - - 379, 380, 372, 381, 365, 376, 382, 369, 384, 380, - 368, 381, 383, 385, 382, 0, 384, 0, 386, 0, - 383, 385, 387, 374, 388, 371, 386, 373, 379, 372, - 387, 389, 388, 376, 0, 390, 0, 392, 384, 389, - 0, 381, 382, 390, 380, 392, 393, 0, 383, 395, - 396, 394, 387, 397, 393, 379, 398, 395, 396, 394, - 392, 397, 0, 0, 398, 384, 390, 389, 381, 382, - 394, 380, 399, 400, 401, 383, 397, 396, 402, 387, - 399, 400, 401, 404, 408, 0, 402, 403, 392, 405, - 0, 404, 408, 390, 389, 403, 0, 405, 394, 402, - - 409, 401, 404, 408, 397, 396, 0, 410, 409, 411, - 412, 400, 0, 413, 403, 410, 0, 411, 412, 0, - 405, 413, 0, 0, 414, 0, 415, 402, 416, 401, - 404, 408, 414, 409, 415, 0, 416, 0, 400, 0, - 0, 417, 403, 410, 418, 411, 414, 405, 412, 417, - 420, 413, 418, 419, 421, 416, 0, 415, 420, 423, - 409, 419, 421, 422, 417, 425, 0, 423, 426, 0, - 410, 422, 411, 425, 414, 412, 426, 427, 413, 0, - 0, 0, 0, 416, 415, 427, 428, 419, 420, 426, - 422, 429, 417, 430, 428, 431, 434, 432, 425, 429, - - 427, 430, 433, 431, 434, 432, 0, 0, 435, 0, - 433, 436, 437, 438, 419, 420, 435, 426, 422, 436, - 437, 438, 439, 440, 442, 425, 0, 441, 427, 432, - 439, 440, 442, 0, 433, 441, 443, 444, 438, 445, - 0, 436, 0, 446, 443, 444, 448, 445, 437, 0, - 441, 446, 447, 0, 448, 0, 432, 442, 0, 444, - 447, 433, 0, 443, 0, 449, 438, 0, 436, 450, - 446, 451, 445, 449, 444, 437, 0, 450, 441, 451, - 452, 446, 0, 0, 442, 453, 454, 444, 452, 455, - 447, 443, 450, 453, 454, 456, 457, 455, 446, 445, - - 0, 444, 459, 456, 457, 462, 463, 464, 446, 0, - 459, 0, 0, 462, 463, 464, 471, 447, 472, 455, - 450, 473, 454, 475, 471, 476, 472, 456, 462, 473, - 463, 475, 459, 476, 477, 478, 479, 481, 0, 480, - 482, 0, 477, 478, 479, 481, 455, 480, 482, 454, - 0, 0, 0, 0, 456, 0, 462, 478, 463, 459, - 483, 475, 485, 476, 480, 484, 486, 487, 483, 488, - 485, 489, 490, 484, 486, 487, 491, 488, 0, 489, - 490, 493, 0, 481, 491, 478, 482, 494, 475, 493, - 476, 495, 480, 0, 0, 494, 0, 498, 483, 495, - - 0, 484, 496, 497, 486, 498, 499, 501, 490, 502, - 496, 497, 503, 506, 499, 501, 509, 502, 0, 504, - 503, 506, 496, 0, 509, 483, 510, 504, 484, 498, - 501, 486, 505, 496, 510, 490, 0, 0, 511, 497, - 505, 0, 0, 0, 496, 496, 511, 502, 503, 512, - 496, 504, 0, 513, 509, 515, 498, 512, 501, 514, - 496, 513, 510, 515, 505, 516, 497, 514, 517, 518, - 511, 496, 496, 516, 502, 503, 517, 518, 504, 519, - 520, 509, 521, 0, 522, 523, 512, 519, 520, 510, - 521, 505, 522, 523, 524, 514, 526, 511, 529, 517, - - 530, 518, 524, 521, 526, 0, 529, 527, 530, 531, - 532, 523, 533, 512, 0, 527, 534, 531, 532, 535, - 533, 0, 514, 522, 534, 524, 517, 535, 518, 536, - 538, 521, 527, 537, 539, 540, 542, 536, 538, 523, - 0, 537, 539, 540, 542, 0, 535, 543, 534, 544, - 522, 546, 524, 533, 545, 543, 536, 544, 548, 546, - 527, 557, 545, 537, 0, 547, 548, 0, 538, 557, - 558, 556, 544, 547, 535, 534, 0, 559, 558, 556, - 533, 0, 0, 0, 536, 559, 0, 0, 562, 546, - 537, 561, 0, 545, 556, 538, 562, 547, 563, 561, - - 544, 0, 564, 566, 0, 569, 563, 564, 0, 559, - 570, 566, 561, 569, 0, 564, 546, 571, 570, 572, - 545, 563, 556, 0, 547, 571, 574, 572, 561, 0, - 575, 573, 0, 576, 574, 0, 559, 560, 575, 573, - 561, 576, 566, 570, 569, 560, 580, 0, 0, 563, - 573, 0, 577, 0, 580, 561, 560, 578, 0, 560, - 577, 560, 560, 0, 0, 578, 575, 0, 581, 566, - 570, 569, 579, 582, 560, 577, 581, 583, 573, 0, - 579, 582, 578, 0, 560, 583, 585, 560, 587, 560, - 560, 581, 0, 575, 585, 0, 587, 579, 588, 590, - - 583, 560, 0, 577, 591, 592, 588, 590, 593, 597, - 578, 587, 591, 592, 595, 598, 593, 597, 599, 581, - 0, 600, 595, 598, 601, 579, 599, 602, 583, 600, - 604, 0, 601, 606, 0, 602, 0, 605, 604, 587, - 598, 606, 591, 607, 595, 605, 613, 614, 615, 599, - 616, 607, 0, 629, 613, 614, 615, 601, 616, 617, - 605, 629, 618, 0, 619, 600, 625, 617, 598, 591, - 618, 595, 619, 0, 625, 621, 599, 0, 615, 0, - 0, 607, 620, 621, 601, 618, 623, 619, 605, 616, - 620, 619, 600, 614, 623, 617, 626, 0, 627, 631, - - 625, 620, 621, 630, 626, 615, 627, 631, 607, 623, - 628, 630, 0, 618, 0, 619, 616, 632, 628, 619, - 627, 0, 617, 633, 634, 632, 630, 625, 636, 620, - 621, 633, 634, 0, 626, 635, 636, 623, 639, 0, - 0, 628, 638, 635, 640, 644, 639, 632, 627, 641, - 638, 642, 640, 644, 630, 636, 645, 641, 651, 642, - 0, 626, 652, 653, 645, 638, 651, 640, 628, 655, - 652, 653, 641, 0, 632, 645, 654, 655, 651, 0, - 656, 635, 651, 636, 654, 0, 0, 642, 656, 657, - 642, 0, 652, 638, 653, 640, 658, 657, 0, 654, - - 641, 662, 0, 645, 658, 659, 651, 655, 660, 662, - 651, 0, 663, 659, 642, 664, 660, 642, 656, 652, - 663, 653, 0, 664, 666, 0, 658, 654, 667, 0, - 665, 0, 666, 657, 655, 665, 667, 665, 668, 662, - 660, 0, 664, 665, 670, 656, 668, 672, 0, 659, - 663, 667, 670, 658, 669, 672, 666, 671, 0, 668, - 657, 673, 669, 675, 0, 671, 662, 660, 0, 673, - 664, 675, 665, 674, 0, 0, 659, 663, 0, 667, - 680, 674, 681, 666, 682, 685, 669, 668, 680, 671, - 681, 0, 682, 685, 686, 683, 0, 690, 693, 665, - - 684, 675, 686, 683, 687, 690, 693, 688, 684, 674, - 689, 0, 687, 669, 694, 688, 671, 682, 689, 680, - 0, 681, 694, 684, 697, 0, 695, 687, 675, 683, - 699, 685, 697, 689, 695, 700, 674, 688, 699, 0, - 686, 701, 0, 700, 682, 702, 680, 694, 681, 701, - 695, 684, 698, 702, 703, 687, 683, 698, 704, 698, - 0, 689, 703, 708, 688, 698, 704, 705, 702, 0, - 0, 708, 710, 709, 694, 705, 711, 701, 695, 0, - 710, 709, 712, 0, 711, 0, 0, 708, 0, 714, - 712, 703, 715, 710, 705, 716, 702, 714, 717, 718, - - 715, 0, 721, 716, 701, 709, 717, 718, 722, 714, - 721, 723, 715, 0, 0, 708, 722, 726, 703, 723, - 725, 710, 705, 727, 0, 726, 0, 0, 725, 0, - 731, 727, 709, 728, 721, 722, 732, 714, 731, 733, - 715, 728, 0, 725, 732, 735, 0, 733, 736, 0, - 727, 739, 740, 735, 731, 0, 736, 732, 0, 739, - 740, 721, 741, 722, 742, 744, 728, 0, 743, 745, - 741, 725, 742, 744, 0, 740, 743, 745, 727, 0, - 0, 741, 731, 0, 735, 732, 747, 736, 744, 0, - 749, 748, 0, 728, 747, 0, 0, 742, 749, 748, - - 743, 0, 0, 740, 750, 751, 0, 745, 0, 741, - 747, 735, 750, 751, 736, 748, 744, 752, 0, 0, - 753, 754, 752, 755, 742, 756, 749, 743, 753, 754, - 752, 755, 757, 756, 745, 0, 758, 751, 747, 0, - 757, 0, 750, 748, 758, 0, 759, 755, 754, 756, - 760, 0, 761, 749, 759, 762, 753, 763, 760, 758, - 761, 0, 766, 762, 751, 763, 764, 0, 0, 750, - 766, 767, 0, 768, 764, 755, 754, 756, 762, 767, - 763, 768, 769, 753, 0, 761, 765, 758, 764, 765, - 769, 765, 765, 770, 766, 773, 760, 772, 0, 0, - - 0, 770, 771, 773, 765, 772, 762, 767, 763, 768, - 771, 0, 761, 0, 765, 0, 764, 765, 773, 765, - 765, 766, 774, 770, 775, 0, 0, 776, 769, 777, - 774, 765, 775, 772, 767, 776, 768, 777, 0, 778, - 780, 771, 0, 781, 779, 774, 773, 778, 780, 774, - 770, 781, 779, 782, 783, 784, 787, 788, 0, 785, - 772, 782, 783, 784, 787, 788, 781, 785, 771, 0, - 775, 780, 0, 774, 779, 789, 778, 774, 791, 790, - 785, 792, 0, 789, 0, 794, 791, 790, 0, 792, - 788, 782, 783, 794, 781, 787, 785, 793, 780, 784, - - 0, 779, 790, 778, 794, 793, 795, 797, 785, 789, - 0, 0, 0, 0, 795, 797, 0, 788, 782, 783, - 793, 796, 787, 785, 791, 0, 784, 792, 797, 796, - 790, 798, 794, 795, 799, 801, 789, 802, 803, 798, - 0, 796, 799, 801, 804, 802, 803, 0, 793, 0, - 805, 806, 804, 0, 809, 801, 797, 802, 805, 806, - 807, 795, 809, 810, 812, 811, 0, 814, 807, 796, - 817, 810, 812, 811, 804, 814, 815, 0, 817, 807, - 818, 0, 816, 801, 815, 802, 0, 812, 818, 819, - 816, 823, 0, 809, 805, 811, 824, 819, 0, 823, - - 815, 804, 810, 820, 824, 814, 816, 807, 825, 821, - 827, 820, 819, 0, 0, 812, 825, 821, 827, 824, - 809, 805, 811, 0, 0, 0, 0, 820, 815, 810, - 828, 825, 814, 821, 816, 829, 830, 0, 828, 0, - 819, 0, 0, 829, 830, 0, 827, 824, 0, 0, - 0, 0, 0, 0, 0, 820, 0, 0, 0, 825, - 0, 821, 0, 0, 0, 0, 828, 0, 0, 0, - 0, 0, 0, 827, 0, 0, 0, 0, 0, 0, + 63, 64, 87, 64, 64, 64, 56, 31, 65, 99, + 65, 65, 65, 64, 66, 55, 64, 99, 31, 93, + 470, 55, 31, 65, 55, 31, 31, 93, 63, 31, + 614, 87, 31, 54, 53, 64, 99, 113, 31, 26, + 93, 64, 55, 25, 64, 113, 31, 73, 73, 73, + 31, 65, 20, 31, 31, 472, 31, 614, 87, 31, + 73, 97, 64, 89, 99, 31, 33, 113, 93, 97, + 74, 89, 74, 18, 33, 74, 74, 74, 76, 76, + 76, 92, 101, 472, 97, 89, 15, 552, 73, 92, + 101, 76, 14, 91, 113, 96, 33, 13, 33, 33, + + 92, 91, 33, 96, 11, 33, 33, 77, 33, 77, + 77, 77, 97, 89, 91, 552, 94, 8, 101, 76, + 91, 7, 77, 33, 94, 33, 33, 6, 92, 33, + 95, 553, 33, 33, 5, 33, 34, 96, 95, 94, + 0, 98, 91, 100, 34, 101, 94, 554, 91, 98, + 77, 100, 105, 197, 0, 34, 182, 182, 182, 553, + 105, 197, 95, 34, 96, 0, 34, 94, 95, 34, + 556, 0, 34, 94, 102, 554, 100, 104, 98, 100, + 106, 0, 102, 34, 103, 104, 0, 0, 106, 95, + 105, 34, 103, 34, 109, 95, 34, 102, 556, 34, + + 39, 106, 109, 100, 106, 98, 100, 102, 39, 188, + 188, 188, 199, 104, 103, 103, 103, 105, 107, 39, + 199, 103, 110, 39, 557, 102, 107, 39, 112, 106, + 110, 109, 106, 39, 102, 0, 112, 111, 39, 0, + 104, 103, 103, 103, 110, 111, 108, 39, 103, 107, + 648, 39, 557, 649, 108, 39, 0, 650, 109, 0, + 39, 111, 0, 116, 112, 39, 43, 108, 0, 114, + 43, 116, 110, 111, 43, 651, 107, 114, 648, 117, + 43, 649, 201, 43, 108, 650, 43, 117, 114, 111, + 201, 112, 0, 116, 43, 108, 115, 209, 43, 678, + + 111, 0, 43, 651, 115, 209, 0, 43, 0, 117, + 43, 108, 0, 43, 44, 0, 114, 119, 44, 115, + 116, 121, 44, 115, 124, 119, 0, 678, 44, 121, + 115, 122, 124, 44, 44, 120, 117, 200, 0, 122, + 130, 126, 44, 120, 214, 200, 44, 115, 130, 126, + 44, 115, 214, 119, 120, 44, 200, 115, 0, 121, + 44, 44, 45, 0, 122, 221, 124, 120, 0, 0, + 45, 123, 130, 221, 0, 126, 191, 191, 191, 123, + 119, 0, 120, 45, 200, 45, 121, 137, 45, 45, + 128, 122, 45, 124, 120, 137, 45, 45, 128, 130, + + 45, 45, 126, 45, 133, 45, 224, 129, 123, 123, + 128, 45, 133, 45, 224, 129, 45, 45, 0, 45, + 0, 132, 0, 45, 45, 137, 127, 45, 45, 132, + 45, 129, 45, 46, 127, 123, 123, 46, 128, 129, + 46, 46, 192, 192, 192, 129, 133, 46, 134, 0, + 46, 0, 137, 0, 136, 127, 134, 132, 0, 129, + 127, 46, 136, 127, 127, 46, 129, 131, 46, 46, + 134, 135, 129, 133, 46, 131, 0, 46, 49, 135, + 134, 138, 127, 0, 132, 680, 49, 127, 131, 138, + 127, 127, 131, 135, 140, 136, 136, 49, 134, 0, + + 131, 49, 140, 141, 49, 49, 0, 134, 131, 0, + 135, 141, 138, 680, 49, 0, 131, 140, 142, 0, + 131, 135, 136, 136, 0, 49, 142, 131, 143, 49, + 141, 0, 49, 49, 145, 131, 143, 135, 146, 138, + 147, 49, 145, 0, 148, 140, 146, 151, 147, 0, + 0, 143, 148, 152, 0, 151, 150, 142, 141, 153, + 154, 152, 162, 145, 150, 146, 226, 153, 154, 155, + 162, 0, 156, 0, 226, 158, 148, 155, 147, 143, + 156, 150, 162, 158, 142, 0, 151, 172, 150, 152, + 145, 153, 155, 146, 0, 172, 154, 0, 158, 157, + + 0, 0, 156, 148, 159, 147, 149, 157, 156, 150, + 162, 160, 159, 151, 149, 150, 152, 0, 153, 160, + 155, 172, 164, 154, 157, 149, 158, 149, 149, 156, + 164, 157, 0, 163, 159, 156, 0, 149, 0, 0, + 149, 163, 167, 149, 149, 0, 149, 160, 172, 161, + 167, 0, 157, 149, 171, 149, 149, 161, 157, 164, + 163, 159, 171, 0, 149, 167, 0, 149, 161, 165, + 149, 149, 161, 149, 160, 166, 168, 165, 0, 169, + 0, 174, 170, 166, 168, 161, 164, 169, 163, 174, + 170, 173, 171, 167, 176, 175, 161, 0, 0, 173, + + 161, 165, 176, 175, 0, 166, 177, 168, 169, 170, + 0, 174, 161, 0, 177, 178, 179, 166, 173, 171, + 0, 170, 175, 178, 179, 181, 176, 0, 165, 0, + 0, 180, 166, 177, 168, 169, 0, 170, 174, 180, + 181, 181, 181, 179, 166, 0, 173, 178, 170, 0, + 175, 198, 202, 176, 187, 203, 187, 187, 187, 198, + 202, 177, 204, 203, 205, 206, 0, 180, 228, 187, + 204, 179, 205, 206, 178, 231, 228, 207, 213, 0, + 0, 208, 211, 231, 202, 207, 213, 203, 198, 208, + 211, 204, 0, 0, 180, 206, 212, 187, 205, 207, + + 210, 208, 215, 0, 212, 211, 0, 0, 210, 213, + 215, 202, 216, 208, 203, 198, 0, 0, 204, 210, + 216, 0, 206, 215, 217, 205, 212, 207, 0, 208, + 218, 216, 217, 211, 219, 220, 213, 222, 218, 0, + 208, 232, 219, 220, 0, 222, 223, 210, 0, 232, + 0, 215, 225, 212, 223, 0, 229, 227, 233, 216, + 225, 217, 227, 218, 229, 223, 233, 249, 219, 223, + 227, 225, 235, 220, 237, 249, 0, 222, 0, 229, + 235, 238, 237, 229, 236, 0, 234, 0, 217, 238, + 218, 233, 236, 223, 234, 219, 0, 223, 241, 225, + + 220, 227, 235, 230, 222, 236, 241, 229, 230, 234, + 0, 229, 237, 239, 238, 230, 230, 240, 233, 242, + 0, 239, 243, 0, 244, 240, 248, 242, 227, 235, + 243, 241, 244, 236, 248, 230, 0, 234, 0, 237, + 0, 238, 242, 243, 244, 245, 246, 240, 244, 247, + 239, 0, 250, 245, 246, 0, 251, 247, 241, 248, + 250, 252, 0, 230, 251, 245, 246, 253, 0, 252, + 242, 243, 244, 254, 240, 253, 244, 239, 0, 251, + 0, 254, 245, 255, 256, 250, 248, 257, 247, 258, + 259, 255, 256, 245, 246, 257, 254, 258, 259, 0, + + 252, 0, 0, 261, 0, 253, 255, 251, 262, 245, + 260, 261, 250, 259, 0, 247, 262, 263, 260, 0, + 264, 0, 256, 265, 254, 263, 0, 252, 264, 260, + 266, 265, 253, 0, 255, 267, 268, 269, 266, 0, + 263, 259, 262, 267, 268, 269, 270, 264, 271, 256, + 272, 273, 274, 275, 270, 276, 271, 260, 272, 273, + 274, 275, 277, 276, 278, 279, 0, 0, 263, 262, + 277, 281, 278, 279, 269, 264, 0, 0, 275, 281, + 280, 282, 283, 0, 274, 273, 271, 278, 280, 282, + 283, 277, 276, 0, 284, 0, 287, 279, 0, 288, + + 280, 269, 284, 282, 287, 0, 275, 288, 291, 285, + 285, 274, 273, 271, 285, 278, 291, 280, 277, 276, + 283, 284, 285, 0, 279, 286, 0, 289, 280, 290, + 0, 282, 292, 286, 287, 289, 0, 290, 288, 0, + 292, 0, 0, 293, 280, 291, 294, 283, 286, 284, + 289, 293, 295, 0, 294, 290, 0, 0, 296, 297, + 295, 287, 0, 298, 292, 288, 296, 297, 0, 299, + 293, 298, 291, 300, 301, 295, 286, 299, 289, 0, + 302, 300, 301, 290, 294, 303, 304, 296, 302, 0, + 0, 292, 305, 303, 304, 0, 306, 301, 293, 0, + + 305, 307, 308, 295, 306, 309, 0, 302, 310, 307, + 308, 294, 311, 309, 296, 0, 310, 0, 0, 312, + 311, 314, 313, 303, 304, 301, 305, 312, 316, 314, + 313, 321, 0, 318, 0, 302, 316, 307, 315, 321, + 308, 318, 311, 309, 314, 0, 315, 316, 317, 0, + 303, 304, 0, 305, 313, 319, 317, 312, 320, 316, + 318, 315, 0, 319, 307, 322, 320, 308, 324, 311, + 309, 317, 314, 322, 323, 316, 324, 326, 319, 325, + 0, 313, 323, 327, 312, 326, 316, 325, 318, 315, + 320, 327, 329, 0, 330, 0, 323, 331, 324, 317, + + 329, 325, 330, 322, 332, 331, 319, 0, 334, 0, + 333, 335, 332, 337, 338, 326, 334, 320, 333, 335, + 339, 337, 338, 0, 323, 324, 340, 341, 339, 325, + 322, 333, 342, 343, 340, 341, 0, 330, 345, 346, + 342, 343, 326, 349, 338, 0, 345, 346, 348, 347, + 350, 349, 352, 339, 353, 340, 348, 347, 350, 333, + 352, 356, 353, 0, 330, 351, 356, 343, 345, 0, + 349, 338, 347, 351, 356, 346, 0, 350, 354, 0, + 339, 357, 340, 358, 348, 362, 354, 348, 351, 357, + 0, 358, 0, 362, 343, 345, 359, 356, 349, 0, + + 347, 0, 346, 0, 363, 350, 0, 358, 357, 360, + 361, 348, 363, 0, 348, 0, 351, 354, 361, 360, + 0, 362, 364, 360, 356, 365, 0, 0, 359, 0, + 364, 366, 0, 365, 361, 358, 357, 360, 359, 366, + 363, 367, 359, 368, 354, 369, 360, 370, 362, 367, + 360, 368, 371, 369, 0, 370, 359, 0, 0, 468, + 371, 468, 361, 372, 365, 359, 368, 363, 369, 359, + 374, 372, 375, 373, 376, 0, 377, 367, 374, 371, + 375, 373, 376, 370, 377, 378, 468, 0, 468, 0, + 379, 365, 381, 378, 368, 376, 369, 373, 379, 375, + + 381, 382, 374, 383, 367, 378, 384, 371, 386, 382, + 370, 383, 385, 387, 384, 0, 386, 0, 388, 0, + 385, 387, 389, 376, 390, 373, 388, 375, 381, 374, + 389, 391, 390, 378, 0, 392, 0, 394, 386, 391, + 0, 383, 384, 392, 382, 394, 395, 0, 385, 397, + 398, 396, 389, 399, 395, 381, 400, 397, 398, 396, + 394, 399, 0, 0, 400, 386, 392, 391, 383, 384, + 396, 382, 401, 402, 403, 385, 399, 398, 404, 389, + 401, 402, 403, 406, 410, 0, 404, 405, 394, 407, + 0, 406, 410, 392, 391, 405, 0, 407, 396, 404, + + 411, 403, 406, 410, 399, 398, 0, 412, 411, 413, + 414, 402, 0, 415, 405, 412, 0, 413, 414, 0, + 407, 415, 0, 0, 416, 0, 417, 404, 418, 403, + 406, 410, 416, 411, 417, 0, 418, 0, 402, 0, + 0, 419, 405, 412, 420, 413, 416, 407, 414, 419, + 422, 415, 420, 421, 423, 418, 0, 417, 422, 425, + 411, 421, 423, 424, 419, 427, 0, 425, 428, 0, + 412, 424, 413, 427, 416, 414, 428, 429, 415, 0, + 0, 0, 0, 418, 417, 429, 430, 421, 422, 428, + 424, 431, 419, 432, 430, 433, 436, 434, 427, 431, + + 429, 432, 435, 433, 436, 434, 0, 0, 437, 0, + 435, 438, 439, 440, 421, 422, 437, 428, 424, 438, + 439, 440, 441, 442, 444, 427, 0, 443, 429, 434, + 441, 442, 444, 0, 435, 443, 445, 446, 440, 447, + 0, 438, 0, 448, 445, 446, 450, 447, 439, 0, + 443, 448, 449, 0, 450, 0, 434, 444, 0, 446, + 449, 435, 0, 445, 0, 451, 440, 0, 438, 452, + 448, 453, 447, 451, 446, 439, 0, 452, 443, 453, + 454, 448, 0, 0, 444, 455, 456, 446, 454, 457, + 449, 445, 452, 455, 456, 458, 459, 457, 448, 447, + + 0, 446, 461, 458, 459, 464, 465, 466, 448, 0, + 461, 0, 0, 464, 465, 466, 473, 449, 474, 457, + 452, 475, 456, 477, 473, 478, 474, 458, 464, 475, + 465, 477, 461, 478, 479, 480, 481, 483, 0, 482, + 484, 0, 479, 480, 481, 483, 457, 482, 484, 456, + 0, 0, 0, 0, 458, 0, 464, 480, 465, 461, + 485, 477, 487, 478, 482, 486, 488, 489, 485, 490, + 487, 491, 492, 486, 488, 489, 493, 490, 0, 491, + 492, 495, 0, 483, 493, 480, 484, 496, 477, 495, + 478, 497, 482, 0, 0, 496, 0, 500, 485, 497, + + 0, 486, 498, 499, 488, 500, 501, 503, 492, 504, + 498, 499, 505, 508, 501, 503, 511, 504, 0, 506, + 505, 508, 498, 0, 511, 485, 512, 506, 486, 500, + 503, 488, 507, 498, 512, 492, 0, 0, 513, 499, + 507, 0, 0, 0, 498, 498, 513, 504, 505, 514, + 498, 506, 0, 515, 511, 517, 500, 514, 503, 516, + 498, 515, 512, 517, 507, 518, 499, 516, 519, 520, + 513, 498, 498, 518, 504, 505, 519, 520, 506, 521, + 522, 511, 523, 0, 524, 525, 514, 521, 522, 512, + 523, 507, 524, 525, 526, 516, 528, 513, 531, 519, + + 532, 520, 526, 523, 528, 0, 531, 529, 532, 533, + 534, 525, 535, 514, 0, 529, 536, 533, 534, 537, + 535, 0, 516, 524, 536, 526, 519, 537, 520, 538, + 540, 523, 529, 539, 541, 542, 544, 538, 540, 525, + 0, 539, 541, 542, 544, 0, 537, 545, 536, 546, + 524, 548, 526, 535, 547, 545, 538, 546, 550, 548, + 529, 559, 547, 539, 0, 549, 550, 0, 540, 559, + 560, 558, 546, 549, 537, 536, 0, 561, 560, 558, + 535, 0, 0, 0, 538, 561, 0, 0, 564, 548, + 539, 563, 0, 547, 558, 540, 564, 549, 565, 563, + + 546, 0, 566, 568, 0, 571, 565, 566, 0, 561, + 572, 568, 563, 571, 0, 566, 548, 573, 572, 574, + 547, 565, 558, 0, 549, 573, 576, 574, 563, 0, + 577, 575, 0, 578, 576, 0, 561, 562, 577, 575, + 563, 578, 568, 572, 571, 562, 582, 0, 0, 565, + 575, 0, 579, 0, 582, 563, 562, 580, 0, 562, + 579, 562, 562, 0, 0, 580, 577, 0, 583, 568, + 572, 571, 581, 584, 562, 579, 583, 585, 575, 0, + 581, 584, 580, 0, 562, 585, 587, 562, 589, 562, + 562, 583, 0, 577, 587, 0, 589, 581, 590, 592, + + 585, 562, 0, 579, 593, 594, 590, 592, 595, 599, + 580, 589, 593, 594, 597, 600, 595, 599, 601, 583, + 0, 602, 597, 600, 603, 581, 601, 604, 585, 602, + 606, 0, 603, 608, 0, 604, 0, 607, 606, 589, + 600, 608, 593, 609, 597, 607, 615, 616, 617, 601, + 618, 609, 0, 631, 615, 616, 617, 603, 618, 619, + 607, 631, 620, 0, 621, 602, 627, 619, 600, 593, + 620, 597, 621, 0, 627, 623, 601, 0, 617, 0, + 0, 609, 622, 623, 603, 620, 625, 621, 607, 618, + 622, 621, 602, 616, 625, 619, 628, 0, 629, 633, + + 627, 622, 623, 632, 628, 617, 629, 633, 609, 625, + 630, 632, 0, 620, 0, 621, 618, 634, 630, 621, + 629, 0, 619, 635, 636, 634, 632, 627, 638, 622, + 623, 635, 636, 0, 628, 637, 638, 625, 641, 0, + 0, 630, 640, 637, 642, 646, 641, 634, 629, 643, + 640, 644, 642, 646, 632, 638, 647, 643, 653, 644, + 0, 628, 654, 655, 647, 640, 653, 642, 630, 657, + 654, 655, 643, 0, 634, 647, 656, 657, 653, 0, + 658, 637, 653, 638, 656, 0, 0, 644, 658, 659, + 644, 0, 654, 640, 655, 642, 660, 659, 0, 656, + + 643, 664, 0, 647, 660, 661, 653, 657, 662, 664, + 653, 0, 665, 661, 644, 666, 662, 644, 658, 654, + 665, 655, 0, 666, 668, 0, 660, 656, 669, 0, + 667, 0, 668, 659, 657, 667, 669, 667, 670, 664, + 662, 0, 666, 667, 672, 658, 670, 674, 0, 661, + 665, 669, 672, 660, 671, 674, 668, 673, 0, 670, + 659, 675, 671, 677, 0, 673, 664, 662, 0, 675, + 666, 677, 667, 676, 0, 0, 661, 665, 0, 669, + 682, 676, 683, 668, 684, 687, 671, 670, 682, 673, + 683, 0, 684, 687, 688, 685, 0, 692, 695, 667, + + 686, 677, 688, 685, 689, 692, 695, 690, 686, 676, + 691, 0, 689, 671, 696, 690, 673, 684, 691, 682, + 0, 683, 696, 686, 699, 0, 697, 689, 677, 685, + 701, 687, 699, 691, 697, 702, 676, 690, 701, 0, + 688, 703, 0, 702, 684, 704, 682, 696, 683, 703, + 697, 686, 700, 704, 705, 689, 685, 700, 706, 700, + 0, 691, 705, 710, 690, 700, 706, 707, 704, 0, + 0, 710, 712, 711, 696, 707, 713, 703, 697, 0, + 712, 711, 714, 0, 713, 0, 0, 710, 0, 716, + 714, 705, 717, 712, 707, 718, 704, 716, 719, 720, + + 717, 0, 723, 718, 703, 711, 719, 720, 724, 716, + 723, 725, 717, 0, 0, 710, 724, 728, 705, 725, + 727, 712, 707, 729, 0, 728, 0, 0, 727, 0, + 733, 729, 711, 730, 723, 724, 734, 716, 733, 735, + 717, 730, 0, 727, 734, 737, 0, 735, 738, 0, + 729, 741, 742, 737, 733, 0, 738, 734, 0, 741, + 742, 723, 743, 724, 744, 746, 730, 0, 745, 747, + 743, 727, 744, 746, 0, 742, 745, 747, 729, 0, + 0, 743, 733, 0, 737, 734, 749, 738, 746, 0, + 751, 750, 0, 730, 749, 0, 0, 744, 751, 750, + + 745, 0, 0, 742, 752, 753, 0, 747, 0, 743, + 749, 737, 752, 753, 738, 750, 746, 754, 0, 0, + 755, 756, 754, 757, 744, 758, 751, 745, 755, 756, + 754, 757, 759, 758, 747, 0, 760, 753, 749, 0, + 759, 0, 752, 750, 760, 0, 761, 757, 756, 758, + 762, 0, 763, 751, 761, 764, 755, 765, 762, 760, + 763, 0, 768, 764, 753, 765, 766, 0, 0, 752, + 768, 769, 0, 770, 766, 757, 756, 758, 764, 769, + 765, 770, 771, 755, 0, 763, 767, 760, 766, 767, + 771, 767, 767, 772, 768, 775, 762, 774, 0, 0, + + 0, 772, 773, 775, 767, 774, 764, 769, 765, 770, + 773, 0, 763, 0, 767, 0, 766, 767, 775, 767, + 767, 768, 776, 772, 777, 0, 0, 778, 771, 779, + 776, 767, 777, 774, 769, 778, 770, 779, 0, 780, + 782, 773, 0, 783, 781, 776, 775, 780, 782, 776, + 772, 783, 781, 784, 785, 786, 789, 790, 0, 787, + 774, 784, 785, 786, 789, 790, 783, 787, 773, 0, + 777, 782, 0, 776, 781, 791, 780, 776, 793, 792, + 787, 794, 0, 791, 0, 796, 793, 792, 0, 794, + 790, 784, 785, 796, 783, 789, 787, 795, 782, 786, + + 0, 781, 792, 780, 796, 795, 797, 799, 787, 791, + 0, 0, 0, 0, 797, 799, 0, 790, 784, 785, + 795, 798, 789, 787, 793, 0, 786, 794, 799, 798, + 792, 800, 796, 797, 801, 803, 791, 804, 805, 800, + 0, 798, 801, 803, 806, 804, 805, 0, 795, 0, + 807, 808, 806, 0, 811, 803, 799, 804, 807, 808, + 809, 797, 811, 812, 814, 813, 0, 816, 809, 798, + 819, 812, 814, 813, 806, 816, 817, 0, 819, 809, + 820, 0, 818, 803, 817, 804, 0, 814, 820, 821, + 818, 825, 0, 811, 807, 813, 826, 821, 0, 825, + + 817, 806, 812, 822, 826, 816, 818, 809, 827, 823, + 829, 822, 821, 0, 0, 814, 827, 823, 829, 826, + 811, 807, 813, 0, 0, 0, 0, 822, 817, 812, + 830, 827, 816, 823, 818, 831, 832, 0, 830, 0, + 821, 0, 0, 831, 832, 0, 829, 826, 0, 0, + 0, 0, 0, 0, 0, 822, 0, 0, 0, 827, + 0, 823, 0, 0, 0, 0, 830, 0, 0, 0, + 0, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 828, 833, 833, 833, 833, 833, 833, + 0, 0, 0, 830, 835, 835, 835, 835, 835, 835, - 833, 833, 834, 834, 834, 834, 834, 834, 834, 834, - 835, 835, 835, 835, 835, 835, 835, 835, 836, 836, - 836, 836, 836, 836, 836, 836, 837, 837, 837, 837, - 837, 838, 838, 838, 838, 838, 838, 838, 838, 839, - 839, 839, 839, 839, 839, 839, 839, 840, 840, 0, - 840, 840, 840, 840, 840, 841, 841, 0, 841, 841, - 841, 841, 841, 842, 842, 0, 842, 842, 842, 842, - 842, 843, 843, 844, 844, 845, 0, 845, 845, 845, - 846, 846, 0, 846, 846, 846, 846, 846, 847, 847, - 0, 847, 847, 847, 847, 847, 848, 0, 0, 0, - - 0, 848, 848, 849, 849, 849, 849, 850, 850, 851, - 851, 851, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832 + 835, 835, 836, 836, 836, 836, 836, 836, 836, 836, + 837, 837, 837, 837, 837, 837, 837, 837, 838, 838, + 838, 838, 838, 838, 838, 838, 839, 839, 839, 839, + 839, 840, 840, 840, 840, 840, 840, 840, 840, 841, + 841, 841, 841, 841, 841, 841, 841, 842, 842, 0, + 842, 842, 842, 842, 842, 843, 843, 0, 843, 843, + 843, 843, 843, 844, 844, 0, 844, 844, 844, 844, + 844, 845, 845, 846, 846, 847, 0, 847, 847, 847, + 848, 848, 0, 848, 848, 848, 848, 848, 849, 849, + 0, 849, 849, 849, 849, 849, 850, 0, 0, 0, + + 0, 850, 850, 851, 851, 851, 851, 852, 852, 853, + 853, 853, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834 } ; /* Table of booleans, true if rule could match eol. */ -static const flex_int32_t yy_rule_can_match_eol[245] = +static const flex_int32_t yy_rule_can_match_eol[247] = { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1736,40 +1737,40 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 1, 0, 0, }; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[244] = +static const flex_int16_t yy_rule_linenum[246] = { 0, - 107, 109, 110, 116, 117, 119, 120, 121, 123, 124, - 125, 126, 128, 129, 130, 132, 138, 139, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 348, 349, 350, 351, 352, 353, 354, - 356, 358, 364, 370, 376, 385, 386, 387, 388, 390, - 395, 400, 417 + 108, 110, 111, 117, 118, 120, 121, 122, 124, 125, + 126, 127, 129, 130, 131, 133, 139, 140, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 359, 361, 367, 373, 379, 388, 389, 390, + 391, 393, 398, 403, 420 } ; static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; @@ -1800,7 +1801,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de FLEX part @@ -1827,7 +1828,7 @@ struct library *library_chain[MAX_INCLUDE_NUMBER]; /* list of all library file names in order of appearance */ struct library *currlib; /* current library as relevant to bison */ int inlib; /* true, while in library */ -int in_short_if=0; /* true, if within a short if */ +int in_short_if=0; /* greater than zero, if within a short if */ int len_of_lineno=0; /* length of last line number */ YY_BUFFER_STATE from_string_buffer; /* to read from string */ @@ -2194,7 +2195,7 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 833 ) + if ( yy_current_state >= 835 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2264,13 +2265,13 @@ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 244 ) + else if ( yy_act < 246 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 244 ) + else if ( yy_act == 246 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 245 ) + else if ( yy_act == 247 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -2298,6 +2299,7 @@ } report_if_missing("Premature end of file",TRUE); leave_lib(); + yylval.nnl=0; return tSEP; } } @@ -2321,39 +2323,39 @@ YY_BREAK case 4: YY_RULE_SETUP -{yycolumn=len_of_lineno+1;BEGIN(INITIAL);yyless(0);return tSEP;} +{yycolumn=len_of_lineno+1;BEGIN(INITIAL);yyless(0);yylval.nnl=0;return tSEP;} YY_BREAK case 5: /* rule 5 can match eol */ YY_RULE_SETUP -{yycolumn=1;BEGIN(INITIAL);return tSEP;} +{yycolumn=1;BEGIN(INITIAL);yylval.nnl=1;return tSEP;} YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -{yycolumn=1;yydoublenl=TRUE; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;} if (interactive && !inlib) {return tEOPROG;} else {return tSEP;}} +{yycolumn=1;yydoublenl=TRUE;yylval.nnl=2; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;} if (interactive && !inlib) {return tEOPROG;} else {return tSEP;}} YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP -{yycolumn=1; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;};return tSEP;} +{yycolumn=1;yylval.nnl=1; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;};return tSEP;} YY_BREAK case 8: YY_RULE_SETUP -{if (in_short_if && check_compat) error(sWARNING,"Short if has changed in version 2.71");return tSEP;} +{yylval.nnl=0;if (in_short_if && check_compat) error(sWARNING,"Short if has changed in version 2.71");return tSEP;} YY_BREAK case 9: YY_RULE_SETUP -{return tSEP;} /* comments span 'til end of line */ +{yylval.nnl=0;return tSEP;} /* comments span 'til end of line */ YY_BREAK case 10: YY_RULE_SETUP -{return tSEP;} /* comments span 'til end of line */ +{yylval.nnl=0;return tSEP;} /* comments span 'til end of line */ YY_BREAK case 11: /* rule 11 can match eol */ YY_RULE_SETUP -{yycolumn=1; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;};return tSEP;} +{yycolumn=1;yylval.nnl=1; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;};return tSEP;} YY_BREAK case 12: YY_RULE_SETUP @@ -2365,12 +2367,12 @@ YY_BREAK case 14: YY_RULE_SETUP -{yycolumn=1;BEGIN(INITIAL);yyless(0);unput('\n');return tSEP;} +{yycolumn=1;BEGIN(INITIAL);yyless(0);unput('\n');yylval.nnl=0;return tSEP;} YY_BREAK case 15: /* rule 15 can match eol */ YY_RULE_SETUP -{yycolumn=1;BEGIN(INITIAL);return tSEP;} +{yycolumn=1;BEGIN(INITIAL);yylval.nnl=1;return tSEP;} YY_BREAK case 16: YY_RULE_SETUP @@ -2383,12 +2385,12 @@ case 17: /* rule 17 can match eol */ YY_RULE_SETUP -{yycolumn=1;return tSEP;} /* hash (#) as first character of a line may introduce comments too */ +{yycolumn=1;yylval.nnl=1;return tSEP;} /* hash (#) as first character of a line may introduce comments too */ YY_BREAK case 18: /* rule 18 can match eol */ YY_RULE_SETUP -{yycolumn=1;return tSEP;} /* apostrophe (') as first character may introduce comments too */ +{yycolumn=1;yylval.nnl=1;return tSEP;} /* apostrophe (') as first character may introduce comments too */ YY_BREAK case 19: YY_RULE_SETUP @@ -3216,41 +3218,49 @@ YY_BREAK case 225: YY_RULE_SETUP -return tLEQ; +return tNEQ; YY_BREAK case 226: YY_RULE_SETUP -return tGEQ; +return tLEQ; YY_BREAK case 227: YY_RULE_SETUP -return tEQU; +return tGEQ; YY_BREAK case 228: YY_RULE_SETUP -return tLTN; +return tEQU; YY_BREAK case 229: YY_RULE_SETUP -return tGTN; +return tEQU2; YY_BREAK case 230: YY_RULE_SETUP -return tNOT; +return tLTN; YY_BREAK case 231: YY_RULE_SETUP -{return yytext[0];} +return tGTN; YY_BREAK case 232: YY_RULE_SETUP +return tNOT; + YY_BREAK +case 233: +YY_RULE_SETUP +{return yytext[0];} + YY_BREAK +case 234: +YY_RULE_SETUP { yylval.digits=(char *)my_strdup(yytext+2); BEGIN(INITIAL); return tHEXDIGITS; } YY_BREAK -case 233: +case 235: YY_RULE_SETUP { yylval.digits=(char *)my_strdup(yytext+2); @@ -3258,7 +3268,7 @@ return tBINDIGITS; } YY_BREAK -case 234: +case 236: YY_RULE_SETUP { yylval.digits=(char *)my_strdup(yytext); @@ -3266,7 +3276,7 @@ return tDIGITS; } YY_BREAK -case 235: +case 237: YY_RULE_SETUP { { double d; @@ -3277,38 +3287,38 @@ } } YY_BREAK -case 236: +case 238: YY_RULE_SETUP {yylval.fnum=3.1415926535897932;return tFNUM;} YY_BREAK -case 237: +case 239: YY_RULE_SETUP {yylval.fnum=2.7182818284590452;return tFNUM;} YY_BREAK -case 238: +case 240: YY_RULE_SETUP {yylval.fnum=1; return tFNUM;} YY_BREAK -case 239: +case 241: YY_RULE_SETUP {yylval.fnum=0; return tFNUM;} YY_BREAK -case 240: +case 242: YY_RULE_SETUP { yylval.symbol=(char *)my_strdup(yytext); return tSYMBOL; } YY_BREAK -case 241: +case 243: YY_RULE_SETUP { yylval.symbol=(char *)my_strdup(yytext); return tSTRSYM; } YY_BREAK -case 242: -/* rule 242 can match eol */ +case 244: +/* rule 244 can match eol */ YY_RULE_SETUP { if (yyleng<2 || yytext[yyleng-1]=='\n') { /* unterminated string has reached end of line, report qualified error in bison */ @@ -3326,11 +3336,11 @@ } } YY_BREAK -case 243: +case 245: YY_RULE_SETUP {if (isprint(yytext[0])) return yytext[0]; else return ' ';} YY_BREAK -case 244: +case 246: YY_RULE_SETUP YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK @@ -3620,7 +3630,7 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 833 ) + if ( yy_current_state >= 835 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -3648,11 +3658,11 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 833 ) + if ( yy_current_state >= 835 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 832); + yy_is_jam = (yy_current_state == 834); if ( ! yy_is_jam ) *(yy_state_ptr)++ = yy_current_state; diff -Nru yabasic-2.90.1/flow.c yabasic-2.90.2/flow.c --- yabasic-2.90.1/flow.c 2021-07-04 12:47:00.000000000 +0000 +++ yabasic-2.90.2/flow.c 2022-01-06 21:08:46.000000000 +0000 @@ -1,7 +1,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de flow.c -- code for subroutines and flow-control diff -Nru yabasic-2.90.1/foreign.c yabasic-2.90.2/foreign.c --- yabasic-2.90.1/foreign.c 2021-07-10 06:16:22.000000000 +0000 +++ yabasic-2.90.2/foreign.c 2022-01-06 21:08:52.000000000 +0000 @@ -1,7 +1,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de foreign.c -- code for calling foreign libraries diff -Nru yabasic-2.90.1/function.c yabasic-2.90.2/function.c --- yabasic-2.90.1/function.c 2021-07-06 04:32:32.000000000 +0000 +++ yabasic-2.90.2/function.c 2022-01-06 21:09:06.000000000 +0000 @@ -1,7 +1,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de function.c -- code for functions @@ -1379,6 +1379,8 @@ dest[cr++] = '.'; /* construct fractional part digit by digit */ while (cr < len) { + /* remove integer part to avoid loss of precision */ + fp = modf(fp, &ipdbl); fp *= 10; digit = ((unsigned long) fp) % 10; dest[cr++] = digits[digit]; diff -Nru yabasic-2.90.1/graphic.c yabasic-2.90.2/graphic.c --- yabasic-2.90.1/graphic.c 2021-07-06 04:32:32.000000000 +0000 +++ yabasic-2.90.2/graphic.c 2022-01-06 21:09:10.000000000 +0000 @@ -1,7 +1,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de graphic.c -- code for graphics and printing diff -Nru yabasic-2.90.1/io.c yabasic-2.90.2/io.c --- yabasic-2.90.1/io.c 2021-07-04 12:47:01.000000000 +0000 +++ yabasic-2.90.2/io.c 2022-01-06 21:09:15.000000000 +0000 @@ -1,7 +1,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de io.c -- code for screen and file i/o diff -Nru yabasic-2.90.1/LICENSE yabasic-2.90.2/LICENSE --- yabasic-2.90.1/LICENSE 2021-07-04 12:47:00.000000000 +0000 +++ yabasic-2.90.2/LICENSE 2021-09-11 06:59:19.000000000 +0000 @@ -1,4 +1,5 @@ -The MIT License (MIT) +MIT License + Copyright (c) 1995-2019 Marc Ihm Permission is hereby granted, free of charge, to any person obtaining a copy diff -Nru yabasic-2.90.1/main.c yabasic-2.90.2/main.c --- yabasic-2.90.1/main.c 2021-07-04 12:47:01.000000000 +0000 +++ yabasic-2.90.2/main.c 2022-01-06 21:09:26.000000000 +0000 @@ -1,7 +1,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de main.c -- main() and auxilliary functions @@ -23,7 +23,7 @@ /* ------------- defines ---------------- */ #define DONE {currcmd=currcmd->next;break;} /* reduces type-work */ -#define COPYRIGHT "Copyright 1995-2021 by Marc Ihm, according to the MIT License" +#define COPYRIGHT "Copyright 1995-2022 by Marc Ihm, according to the MIT License" /* NOTE: Including whatever timestamp into the banner would break the reproducible build */ #define BANNER \ "\nThis is yabasic version " VERSION ",\nconfigured for "\ @@ -2461,13 +2461,13 @@ int offset = 0; if (!inter_path || !inter_path[0]) { - error (sFATAL, "inter_path is not set !"); + error (sINFO, "inter_path is not set !"); return 0; } if (!(inter = fopen (inter_path, "r"))) { sprintf (string, "Couldn't open '%s' to check, if it is bound: %s", inter_path, my_strerror (errno)); - error (sWARNING, string); + error (sINFO, string); return 0; } @@ -2708,6 +2708,7 @@ int length, dirname_length; length = wai_getExecutablePath(NULL, 0, NULL); + if (length <= 0) return my_strdup(name); path = (char*)malloc(length + 1); wai_getExecutablePath(path, length, &dirname_length); path[length] = '\0'; diff -Nru yabasic-2.90.1/Makefile.in yabasic-2.90.2/Makefile.in --- yabasic-2.90.1/Makefile.in 2021-07-11 11:55:34.000000000 +0000 +++ yabasic-2.90.2/Makefile.in 2022-01-07 05:49:41.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2020 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -194,8 +194,8 @@ man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ - $(LISP)config.h.in +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ + config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. @@ -371,6 +371,7 @@ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` +AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)' RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test @@ -409,6 +410,8 @@ DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' @@ -929,7 +932,7 @@ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ - echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ @@ -1175,6 +1178,10 @@ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @@ -1217,6 +1224,8 @@ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) @@ -1232,7 +1241,7 @@ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ @@ -1423,8 +1432,8 @@ check-TESTS check-am clean clean-binPROGRAMS clean-cscope \ clean-generic clean-libtool cscope cscopelist-am ctags \ ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \ - dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ - distclean-compile distclean-generic distclean-hdr \ + dist-shar dist-tarZ dist-xz dist-zip dist-zstd distcheck \ + distclean distclean-compile distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ diff -Nru yabasic-2.90.1/NEWS yabasic-2.90.2/NEWS --- yabasic-2.90.1/NEWS 2021-07-11 10:58:30.000000000 +0000 +++ yabasic-2.90.2/NEWS 2022-01-08 17:41:59.000000000 +0000 @@ -1,18 +1,16 @@ # Keep here any number and selection of paragraphs with news; # the first one will be added if necessary to the ChangeLog by rake -Version 2.90.1 (July 11, 20201) +Version 2.90.2 (January 6, 2022) + - Fixed precision error for print using under windows + - Better error-reporting for an edge case of short-if + - Allow '==' to check for equality and '!=' for inequality ('=' and '<>' still work) + +Version 2.90.1 (July 11, 2021) - Repaired the docu (especially yabasic.htm) - Removed references to the old documentation (still available on github) -Version 2.90.0 (July 10, 20201) +Version 2.90.0 (July 10, 2021) - Fixed an error with local variables - Moved to a new building-environment (see github and there README.org for details) -Version 2.89.1 (January 30, 2021) - - Fixes for documentation - -Version 2.89.0 (December 29, 2020) - - Fixed for Problem with system-command after clear screen on MacOS - - Added functions eval and eval$ - diff -Nru yabasic-2.90.1/symbol.c yabasic-2.90.2/symbol.c --- yabasic-2.90.1/symbol.c 2021-07-06 04:32:31.000000000 +0000 +++ yabasic-2.90.2/symbol.c 2022-01-06 21:08:30.000000000 +0000 @@ -1,7 +1,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de symbol.c -- code for symbols, stack and library management, handling of arrays diff -Nru yabasic-2.90.1/tests/array.yab.log yabasic-2.90.2/tests/array.yab.log --- yabasic-2.90.1/tests/array.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/array.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2679 exit 0 \ No newline at end of file +pid 25495 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/bind_import.yab.log yabasic-2.90.2/tests/bind_import.yab.log --- yabasic-2.90.1/tests/bind_import.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/bind_import.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2680 exit 0 \ No newline at end of file +pid 25496 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/bitops.yab.log yabasic-2.90.2/tests/bitops.yab.log --- yabasic-2.90.1/tests/bitops.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/bitops.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2685 exit 0 \ No newline at end of file +pid 25501 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/common/random.yab.log yabasic-2.90.2/tests/common/random.yab.log --- yabasic-2.90.1/tests/common/random.yab.log 2021-07-11 12:27:22.000000000 +0000 +++ yabasic-2.90.2/tests/common/random.yab.log 2022-01-08 20:05:51.000000000 +0000 @@ -1 +1 @@ -pid 2738 exit 0 \ No newline at end of file +pid 25555 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/common/using.yab yabasic-2.90.2/tests/common/using.yab --- yabasic-2.90.1/tests/common/using.yab 1970-01-01 00:00:00.000000000 +0000 +++ yabasic-2.90.2/tests/common/using.yab 2022-01-06 20:12:07.000000000 +0000 @@ -0,0 +1,9 @@ +print "Check, that print using does not give spurious digits ..." +seen$ = str$(1 + 1/64, "###.###########################") +expected$ = " 1.015625000000000000000000000" +if seen$ <> expected$ then + print "Formatting yields " + seen$ + ", but expecting " + expected$ + exit 2 +endif + +exit 0 diff -Nru yabasic-2.90.1/tests/common/using.yab.log yabasic-2.90.2/tests/common/using.yab.log --- yabasic-2.90.1/tests/common/using.yab.log 1970-01-01 00:00:00.000000000 +0000 +++ yabasic-2.90.2/tests/common/using.yab.log 2022-01-08 20:05:51.000000000 +0000 @@ -0,0 +1 @@ +pid 25556 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/compare.yab yabasic-2.90.2/tests/compare.yab --- yabasic-2.90.1/tests/compare.yab 1970-01-01 00:00:00.000000000 +0000 +++ yabasic-2.90.2/tests/compare.yab 2022-01-08 19:25:39.000000000 +0000 @@ -0,0 +1,19 @@ + +if 1=2 error "1" +if 1==2 error "2" +if 1<>1 error "3" +if 1!=1 error "4" +if 2<1 error "5" +if 2<=1 error "6" +if 1>2 error "7" +if 1>=2 error "8" + +if "a"="b" error "9" +if "a"=="b" error "10" +if "a"<>"a" error "11" +if "a"!="a" error "12" +if "b"<"a" error "13" +if "b"<="a" error "14" +if "a">"b" error "15" +if "a">="b" error "16" + diff -Nru yabasic-2.90.1/tests/compare.yab.log yabasic-2.90.2/tests/compare.yab.log --- yabasic-2.90.1/tests/compare.yab.log 1970-01-01 00:00:00.000000000 +0000 +++ yabasic-2.90.2/tests/compare.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -0,0 +1 @@ +pid 25504 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/compile.yab.log yabasic-2.90.2/tests/compile.yab.log --- yabasic-2.90.1/tests/compile.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/compile.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2688 exit 0 \ No newline at end of file +pid 25505 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/error/error_short_if_with_endif.yab yabasic-2.90.2/tests/error/error_short_if_with_endif.yab --- yabasic-2.90.1/tests/error/error_short_if_with_endif.yab 1970-01-01 00:00:00.000000000 +0000 +++ yabasic-2.90.2/tests/error/error_short_if_with_endif.yab 2022-01-08 16:46:32.000000000 +0000 @@ -0,0 +1,7 @@ +#expect#---Error in error_short_if_with_endif.yab, line 7: +#expect#---Error: short if-statement (i.e. without 'then') does not allow 'endif' +#expect# if (2>1) x=1:endif +#expect# ^~~~~ +#expect#---Error: Couldn't parse program +#expect#---Error: Program not executed +if (2>1) x=1:endif diff -Nru yabasic-2.90.1/tests/error/error_short_if_with_endif.yab.log yabasic-2.90.2/tests/error/error_short_if_with_endif.yab.log --- yabasic-2.90.1/tests/error/error_short_if_with_endif.yab.log 1970-01-01 00:00:00.000000000 +0000 +++ yabasic-2.90.2/tests/error/error_short_if_with_endif.yab.log 2022-01-08 20:05:51.000000000 +0000 @@ -0,0 +1,6 @@ +---Error in error_short_if_with_endif.yab, line 7: +---Error: short if-statement (i.e. without 'then') does not allow 'endif' + if (2>1) x=1:endif + ^~~~~ +---Error: Couldn't parse program +---Error: Program not executed diff -Nru yabasic-2.90.1/tests/error/error_short_if_without_statement.yab yabasic-2.90.2/tests/error/error_short_if_without_statement.yab --- yabasic-2.90.1/tests/error/error_short_if_without_statement.yab 1970-01-01 00:00:00.000000000 +0000 +++ yabasic-2.90.2/tests/error/error_short_if_without_statement.yab 2022-01-08 16:46:25.000000000 +0000 @@ -0,0 +1,9 @@ +#expect#---Error in error_short_if_without_statement.yab, line 7: +#expect#---Error: short if-statement (i.e. without 'then' and ended by newline) does not contain any statements +#expect# if (2>1) +#expect# ^ +#expect#---Error: Couldn't parse program +#expect#---Error: Program not executed +if (2>1) +# this does not count +x=1 diff -Nru yabasic-2.90.1/tests/error/error_short_if_without_statement.yab.log yabasic-2.90.2/tests/error/error_short_if_without_statement.yab.log --- yabasic-2.90.1/tests/error/error_short_if_without_statement.yab.log 1970-01-01 00:00:00.000000000 +0000 +++ yabasic-2.90.2/tests/error/error_short_if_without_statement.yab.log 2022-01-08 20:05:51.000000000 +0000 @@ -0,0 +1,6 @@ +---Error in error_short_if_without_statement.yab, line 7: +---Error: short if-statement (i.e. without 'then' and ended by newline) does not contain any statements + if (2>1) + ^ +---Error: Couldn't parse program +---Error: Program not executed diff -Nru yabasic-2.90.1/tests/error/extra_endif_on_short_if.yab yabasic-2.90.2/tests/error/extra_endif_on_short_if.yab --- yabasic-2.90.1/tests/error/extra_endif_on_short_if.yab 2021-07-04 12:47:02.000000000 +0000 +++ yabasic-2.90.2/tests/error/extra_endif_on_short_if.yab 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#expect#---Error in extra_endif_on_short_if.yab, line 8: -#expect#---Error: an if-statement without 'then' does not allow 'endif' -#expect# if 1<2 print "okay" endif -#expect# ^~~~~ -#expect#---Error: Couldn't parse program -#expect#---Error: Program not executed -# endif in line below is an error -if 1<2 print "okay" endif diff -Nru yabasic-2.90.1/tests/error/extra_endif_on_short_if.yab.log yabasic-2.90.2/tests/error/extra_endif_on_short_if.yab.log --- yabasic-2.90.1/tests/error/extra_endif_on_short_if.yab.log 2021-07-11 12:27:23.000000000 +0000 +++ yabasic-2.90.2/tests/error/extra_endif_on_short_if.yab.log 2022-01-08 16:45:39.000000000 +0000 @@ -1,5 +1,5 @@ ---Error in extra_endif_on_short_if.yab, line 8: ----Error: an if-statement without 'then' does not allow 'endif' +---Error: short if-statement (i.e. without 'then') does not allow 'endif' if 1<2 print "okay" endif ^~~~~ ---Error: Couldn't parse program diff -Nru yabasic-2.90.1/tests/escape-sequences.yab.log yabasic-2.90.2/tests/escape-sequences.yab.log --- yabasic-2.90.1/tests/escape-sequences.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/escape-sequences.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2689 exit 0 \ No newline at end of file +pid 25506 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/eval.yab.log yabasic-2.90.2/tests/eval.yab.log --- yabasic-2.90.1/tests/eval.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/eval.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2690 exit 0 \ No newline at end of file +pid 25507 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/foreign2.yab.log yabasic-2.90.2/tests/foreign2.yab.log --- yabasic-2.90.1/tests/foreign2.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/foreign2.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2693 exit 0 \ No newline at end of file +pid 25510 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/foreign3.yab.log yabasic-2.90.2/tests/foreign3.yab.log --- yabasic-2.90.1/tests/foreign3.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/foreign3.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2696 exit 0 \ No newline at end of file +pid 25513 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/foreign_set_get.yab.log yabasic-2.90.2/tests/foreign_set_get.yab.log --- yabasic-2.90.1/tests/foreign_set_get.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/foreign_set_get.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2697 exit 0 \ No newline at end of file +pid 25514 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/foreign.yab.log yabasic-2.90.2/tests/foreign.yab.log --- yabasic-2.90.1/tests/foreign.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/foreign.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2692 exit 0 \ No newline at end of file +pid 25509 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/for.yab.log yabasic-2.90.2/tests/for.yab.log --- yabasic-2.90.1/tests/for.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/for.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2691 exit 0 \ No newline at end of file +pid 25508 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/hex_bin.yab.log yabasic-2.90.2/tests/hex_bin.yab.log --- yabasic-2.90.1/tests/hex_bin.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/hex_bin.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2699 exit 0 \ No newline at end of file +pid 25516 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/import.yab.log yabasic-2.90.2/tests/import.yab.log --- yabasic-2.90.1/tests/import.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/import.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2700 exit 0 \ No newline at end of file +pid 25517 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/interpreter_and_program.yab.log yabasic-2.90.2/tests/interpreter_and_program.yab.log --- yabasic-2.90.1/tests/interpreter_and_program.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/interpreter_and_program.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2701 exit 0 \ No newline at end of file +pid 25518 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/local.yab.log yabasic-2.90.2/tests/local.yab.log --- yabasic-2.90.1/tests/local.yab.log 2021-07-11 12:27:16.000000000 +0000 +++ yabasic-2.90.2/tests/local.yab.log 2022-01-08 20:05:45.000000000 +0000 @@ -1 +1 @@ -pid 2705 exit 0 \ No newline at end of file +pid 25522 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/nested_bind_import.yab.log yabasic-2.90.2/tests/nested_bind_import.yab.log --- yabasic-2.90.1/tests/nested_bind_import.yab.log 2021-07-11 12:27:17.000000000 +0000 +++ yabasic-2.90.2/tests/nested_bind_import.yab.log 2022-01-08 20:05:46.000000000 +0000 @@ -1 +1 @@ -pid 2707 exit 0 \ No newline at end of file +pid 25524 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/short_if.yab yabasic-2.90.2/tests/short_if.yab --- yabasic-2.90.1/tests/short_if.yab 2021-07-04 12:47:03.000000000 +0000 +++ yabasic-2.90.2/tests/short_if.yab 2022-01-08 16:35:59.000000000 +0000 @@ -1,2 +1,40 @@ if (1<2) print "hi" +if (1<2) : + +x=0 +if (1<2) x=1 +if (x=0) then + print "Test 1 failed" + exit 1 +endif + +x=0 +if (1=2) x=1:x=1:x=1 +if (x<>0) then + print "Test 2 failed" + exit 1 +endif + +x=0 +if (1=2) x=1:x=1:x=1 +x=2 +if (x<>2) then + print "Test 3 failed" + exit 1 +endif + +x=0 +if (1<2) x=1:y=1:z=1 +if (x<>1) then + print "Test 4 failed" + exit 1 +endif + +x=0 +if (1=1) x=1:x=2:x=3 +if (x<>3) then + print "Test 5 failed" + exit 1 +endif + diff -Nru yabasic-2.90.1/tests/short_if.yab.log yabasic-2.90.2/tests/short_if.yab.log --- yabasic-2.90.1/tests/short_if.yab.log 2021-07-11 12:27:17.000000000 +0000 +++ yabasic-2.90.2/tests/short_if.yab.log 2022-01-08 20:05:46.000000000 +0000 @@ -1 +1 @@ -pid 2714 exit 0 \ No newline at end of file +pid 25531 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/speed.yab.log yabasic-2.90.2/tests/speed.yab.log --- yabasic-2.90.1/tests/speed.yab.log 2021-07-11 12:27:22.000000000 +0000 +++ yabasic-2.90.2/tests/speed.yab.log 2022-01-08 20:05:50.000000000 +0000 @@ -1 +1 @@ -pid 2716 exit 0 \ No newline at end of file +pid 25533 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/strdollar.yab.log yabasic-2.90.2/tests/strdollar.yab.log --- yabasic-2.90.1/tests/strdollar.yab.log 2021-07-11 12:27:22.000000000 +0000 +++ yabasic-2.90.2/tests/strdollar.yab.log 2022-01-08 20:05:50.000000000 +0000 @@ -1 +1 @@ -pid 2721 exit 0 \ No newline at end of file +pid 25538 exit 0 \ No newline at end of file diff -Nru yabasic-2.90.1/tests/system.yab.log yabasic-2.90.2/tests/system.yab.log --- yabasic-2.90.1/tests/system.yab.log 2021-07-11 12:27:25.000000000 +0000 +++ yabasic-2.90.2/tests/system.yab.log 2022-01-08 20:05:53.000000000 +0000 @@ -24,6 +24,7 @@ config.sub configure configure.ac +configure.lineno configure.scan contrib demo.yab @@ -94,6 +95,7 @@ config.sub configure configure.ac +configure.lineno configure.scan contrib demo.yab diff -Nru yabasic-2.90.1/whereami.c yabasic-2.90.2/whereami.c --- yabasic-2.90.1/whereami.c 2021-07-04 12:47:03.000000000 +0000 +++ yabasic-2.90.2/whereami.c 2021-07-25 14:28:51.000000000 +0000 @@ -3,10 +3,6 @@ // by Gregory Pakosz (@gpakosz) // https://github.com/gpakosz/whereami -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif - // in case you want to #include "whereami.c" in a larger compilation unit #if !defined(WHEREAMI_H) #include @@ -16,12 +12,6 @@ extern "C" { #endif -#if defined(__DragonFly__) || defined(__FreeBSD__) || \ - defined(__FreeBSD_kernel__) || defined(__NetBSD__) -#include -#include -#endif - #if !defined(WAI_MALLOC) || !defined(WAI_FREE) || !defined(WAI_REALLOC) #include #endif @@ -58,7 +48,9 @@ #if defined(_WIN32) +#ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN +#endif #if defined(_MSC_VER) #pragma warning(push, 3) #endif @@ -168,7 +160,7 @@ return length; } -#elif defined(__linux__) || defined(__CYGWIN__) || defined(__sun) || defined(__GNU__) || (defined(__NetBSD__) && !defined(KERN_PROC_PATHNAME)) +#elif defined(__linux__) || defined(__CYGWIN__) || defined(__sun) || defined(WAI_USE_PROC_SELF_EXE) #include #include @@ -191,10 +183,6 @@ #endif #endif -#ifndef PATH_MAX -#define PATH_MAX 4096 -#endif - WAI_FUNCSPEC int WAI_PREFIX(getExecutablePath)(char* out, int capacity, int* dirname_length) { @@ -258,8 +246,7 @@ int length = -1; FILE* maps = NULL; - int r; - for (r = 0; r < WAI_PROC_SELF_MAPS_RETRY; ++r) + for (int r = 0; r < WAI_PROC_SELF_MAPS_RETRY; ++r) { maps = fopen(WAI_PROC_SELF_MAPS, "r"); if (!maps) @@ -298,15 +285,24 @@ &&buffer[length - 4] == '.') { int fd = open(path, O_RDONLY); - char* begin; - char* p; + if (fd == -1) + { + length = -1; // retry + break; + } - begin = (char*)mmap(0, offset, PROT_READ, MAP_SHARED, fd, 0); - p = begin + offset; + char* begin = (char*)mmap(0, offset, PROT_READ, MAP_SHARED, fd, 0); + if (begin == MAP_FAILED) + { + close(fd); + length = -1; // retry + break; + } + char* p = begin + offset - 30; // minimum size of local file header while (p >= begin) // scan backwards { - if (*((uint32_t*)p) == 0x04034b50UL) // local file header found + if (*((uint32_t*)p) == 0x04034b50UL) // local file header signature found { uint16_t length_ = *((uint16_t*)(p + 26)); @@ -320,7 +316,7 @@ break; } - p -= 4; + --p; } munmap(begin, offset); @@ -575,11 +571,14 @@ return length; } -#elif defined(KERN_PROC_PATHNAME) +#elif defined(__DragonFly__) || defined(__FreeBSD__) || \ + defined(__FreeBSD_kernel__) || defined(__NetBSD__) #include #include #include +#include +#include #include WAI_FUNCSPEC diff -Nru yabasic-2.90.1/whereami.h yabasic-2.90.2/whereami.h --- yabasic-2.90.1/whereami.h 2021-07-04 12:47:03.000000000 +0000 +++ yabasic-2.90.2/whereami.h 2021-07-25 14:29:41.000000000 +0000 @@ -1,4 +1,6 @@ -// (‑●‑●)> released under the WTFPL v2 license, by Gregory Pakosz (@gpakosz) +// (‑●‑●)> dual licensed under the WTFPL v2 and MIT licenses +// without any warranty. +// by Gregory Pakosz (@gpakosz) // https://github.com/gpakosz/whereami #ifndef WHEREAMI_H diff -Nru yabasic-2.90.1/yabasic.bison yabasic-2.90.2/yabasic.bison --- yabasic-2.90.1/yabasic.bison 2021-07-04 12:47:03.000000000 +0000 +++ yabasic-2.90.2/yabasic.bison 2022-01-08 16:50:54.000000000 +0000 @@ -2,7 +2,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de BISON part @@ -118,7 +118,7 @@ double fnum; /* double number */ int inum; /* integer number */ int token; /* token of command */ - int sep; /* number of newlines */ + int nnl; /* number of newlines */ char *string; /* quoted string */ char *symbol; /* general symbol */ char *digits; /* string of digits */ @@ -131,7 +131,7 @@ %type function_name %type function_or_array %type stringfunction_or_array -%type tSEP sep_list +%type tSEP %token tFNUM %token tSYMBOL @@ -150,7 +150,7 @@ %token tPRINT tINPUT tRETURN tDIM tEND tEXIT tAT tSCREEN %token tREVERSE tCOLOUR tBACKCOLOUR %token tAND tOR tNOT tBITNOT tEOR tSHL tSHR -%token tNEQ tLEQ tGEQ tLTN tGTN tEQU tPOW +%token tNEQ tLEQ tGEQ tLTN tGTN tEQU tEQU2 tPOW %token tREAD tDATA tRESTORE %token tOPEN tCLOSE tSEEK tTELL tAS tREADING tWRITING tORIGIN %token tWINDOW tDOT tLINE tCIRCLE tTRIANGLE tTEXT tCLEAR tFILL tPRINTER @@ -180,6 +180,7 @@ %left tLTN %left tGTN %left tEQU +%left tEQU2 %left '-' '+' %left '*' '/' %nonassoc UMINUS @@ -198,8 +199,7 @@ ; statement_list: statement - | statement_list {if (severity_so_far >= sERROR) {YYABORT;}} - tSEP statement + | statement_list {if (severity_so_far >= sERROR) {YYABORT;}} tSEP {if (in_short_if > 0 && $3 > 0) lyyerror(sERROR,"short if-statement (i.e. without 'then' and ended by newline) does not contain any statements");} statement ; assignment: string_assignment @@ -412,6 +412,7 @@ | expression tAND {add_command(cANDSHORT);pushlabel();} expression {poplabel();create_boole('&');} | tNOT expression {create_boole('!');} | expression tEQU expression {create_dblrelop('=');} + | expression tEQU2 expression {create_dblrelop('=');} | expression tNEQ expression {create_dblrelop('!');} | expression tLTN expression {create_dblrelop('<');} | expression tLEQ expression {create_dblrelop('{');} @@ -433,6 +434,7 @@ | expression tPOW expression {create_dblbin('^');} | '-' expression %prec UMINUS {add_command(cNEGATE);} | string_expression tEQU string_expression {create_strrelop('=');} + | string_expression tEQU2 string_expression {create_strrelop('=');} | string_expression tNEQ string_expression {create_strrelop('!');} | string_expression tLTN string_expression {create_strrelop('<');} | string_expression tLEQ string_expression {create_strrelop('{');} @@ -740,12 +742,12 @@ | tNEXT {report_conflicting_close("a closing endif is expected before next",'n');} ; -short_if: tIF expression {in_short_if++;add_command(cDECIDE);pushlabel();} - statement_list - end_of_if +short_if: tIF expression {in_short_if++;add_command(cDECIDE);pushlabel();} + statement_list + end_of_if ; -end_of_if: tENDIF {error(sERROR,"an if-statement without 'then' does not allow 'endif'");} +end_of_if: tENDIF {error(sERROR,"short if-statement (i.e. without 'then') does not allow 'endif'");} | tIMPLICITENDIF {poplabel();} ; diff -Nru yabasic-2.90.1/yabasic.flex yabasic-2.90.2/yabasic.flex --- yabasic-2.90.1/yabasic.flex 2021-07-04 12:47:03.000000000 +0000 +++ yabasic-2.90.2/yabasic.flex 2022-01-08 17:06:30.000000000 +0000 @@ -2,7 +2,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de FLEX part @@ -29,7 +29,7 @@ struct library *library_chain[MAX_INCLUDE_NUMBER]; /* list of all library file names in order of appearance */ struct library *currlib; /* current library as relevant to bison */ int inlib; /* true, while in library */ -int in_short_if=0; /* true, if within a short if */ +int in_short_if=0; /* greater than zero, if within a short if */ int len_of_lineno=0; /* length of last line number */ YY_BUFFER_STATE from_string_buffer; /* to read from string */ @@ -99,6 +99,7 @@ } report_if_missing("Premature end of file",TRUE); leave_lib(); + yylval.nnl=0; return tSEP; } } @@ -112,21 +113,21 @@ len_of_lineno=strlen(yytext); return tSYMBOL; } -.* {yycolumn=len_of_lineno+1;BEGIN(INITIAL);yyless(0);return tSEP;} -\n {yycolumn=1;BEGIN(INITIAL);return tSEP;} +.* {yycolumn=len_of_lineno+1;BEGIN(INITIAL);yyless(0);yylval.nnl=0;return tSEP;} +\n {yycolumn=1;BEGIN(INITIAL);yylval.nnl=1;return tSEP;} -\n\n {yycolumn=1;yydoublenl=TRUE; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;} if (interactive && !inlib) {return tEOPROG;} else {return tSEP;}} -\n {yycolumn=1; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;};return tSEP;} -: {if (in_short_if && check_compat) error(sWARNING,"Short if has changed in version 2.71");return tSEP;} - -REM{WS}+.* {return tSEP;} /* comments span 'til end of line */ -\/\/.* {return tSEP;} /* comments span 'til end of line */ -REM\n {yycolumn=1; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;};return tSEP;} +\n\n {yycolumn=1;yydoublenl=TRUE;yylval.nnl=2; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;} if (interactive && !inlib) {return tEOPROG;} else {return tSEP;}} +\n {yycolumn=1;yylval.nnl=1; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;};return tSEP;} +: {yylval.nnl=0;if (in_short_if && check_compat) error(sWARNING,"Short if has changed in version 2.71");return tSEP;} + +REM{WS}+.* {yylval.nnl=0;return tSEP;} /* comments span 'til end of line */ +\/\/.* {yylval.nnl=0;return tSEP;} /* comments span 'til end of line */ +REM\n {yycolumn=1;yylval.nnl=1; if (in_short_if) {in_short_if--;yyless(0);return tIMPLICITENDIF;};return tSEP;} REM {yymore();} IMPORT{WS}+{NAME} {BEGIN(PASTIMPORT);import_lib(my_strdup(yytext+7));return tIMPORT;} -.* {yycolumn=1;BEGIN(INITIAL);yyless(0);unput('\n');return tSEP;} -\n {yycolumn=1;BEGIN(INITIAL);return tSEP;} +.* {yycolumn=1;BEGIN(INITIAL);yyless(0);unput('\n');yylval.nnl=0;return tSEP;} +\n {yycolumn=1;BEGIN(INITIAL);yylval.nnl=1;return tSEP;} ((DOCU|DOC|DOCUMENTATION)({WS}+.*)?) { char *where=strpbrk(yytext," \t\r\f\v"); @@ -134,8 +135,8 @@ return tDOCU; } -^#.*\n {yycolumn=1;return tSEP;} /* hash (#) as first character of a line may introduce comments too */ -^'.*\n {yycolumn=1;return tSEP;} /* apostrophe (') as first character may introduce comments too */ +^#.*\n {yycolumn=1;yylval.nnl=1;return tSEP;} /* hash (#) as first character of a line may introduce comments too */ +^'.*\n {yycolumn=1;yylval.nnl=1;return tSEP;} /* apostrophe (') as first character may introduce comments too */ EXECUTE return tEXECUTE; "EXECUTE$" return tEXECUTE2; @@ -345,9 +346,11 @@ "**" return tPOW; "<>" return tNEQ; +"!=" return tNEQ; "<=" return tLEQ; ">=" return tGEQ; "=" return tEQU; +"==" return tEQU2; "<" return tLTN; ">" return tGTN; "!" return tNOT; diff -Nru yabasic-2.90.1/yabasic.h yabasic-2.90.2/yabasic.h --- yabasic-2.90.1/yabasic.h 2021-07-10 06:18:57.000000000 +0000 +++ yabasic-2.90.2/yabasic.h 2022-01-06 21:09:47.000000000 +0000 @@ -1,7 +1,7 @@ /* YABASIC --- a simple Basic Interpreter - written by Marc Ihm 1995-2021 + written by Marc Ihm 1995-2022 more info at www.yabasic.de yabasic.h --- function prototypes and global variables diff -Nru yabasic-2.90.1/yabasic.htm yabasic-2.90.2/yabasic.htm --- yabasic-2.90.1/yabasic.htm 2021-07-11 12:27:27.000000000 +0000 +++ yabasic-2.90.2/yabasic.htm 2022-01-08 20:05:54.000000000 +0000 @@ -36,7 +36,7 @@
- About yabasic + About yabasic
@@ -50,17 +50,17 @@
- Starting yabasic + Starting yabasic
- Options + Options
- The context Menu + The context Menu
@@ -74,17 +74,17 @@
- Starting yabasic + Starting yabasic
- Options + Options
- Setting defaults + Setting defaults
@@ -187,6 +187,11 @@
+ Comparing strings or numbers + +
+
+ References on arrays
@@ -331,7 +336,7 @@
- Special characters + Symbols and Special characters
@@ -345,17 +350,17 @@
- A very simple program + A very simple program
- Graphics with bitmaps + Graphics with bitmaps
- A menu to choose from + A menu to choose from
@@ -384,7 +389,7 @@
- About yabasic + About yabasic
@@ -404,9 +409,9 @@ yabasic.exe under Windows) as well as the language (which is, of course, a sort of basic) itself.

-

This document applies to version 2.90 of yabasic

+

This document applies to version 2.90 of yabasic

- However, this document does not contain the latest news about yabasic or a FAQ. + However, it does not contain the latest news about yabasic or a FAQ. As such information tends to change rapidly, it is presented online only at www.yabasic.de.

@@ -420,7 +425,7 @@

-

About yabasic

+

About yabasic

@@ -451,17 +456,17 @@
- Starting yabasic + Starting yabasic
- Options + Options
- The context Menu + The context Menu
@@ -470,7 +475,7 @@
-

Starting yabasic

+

Starting yabasic

@@ -497,7 +502,7 @@
-

Options

+

Options

@@ -508,7 +513,7 @@
-

The context Menu

+

The context Menu

@@ -555,17 +560,17 @@
- Starting yabasic + Starting yabasic
- Options + Options
- Setting defaults + Setting defaults
@@ -574,7 +579,7 @@
-

Starting yabasic

+

Starting yabasic

@@ -601,7 +606,7 @@
-

Options

+

Options

@@ -612,7 +617,7 @@
-

Setting defaults

+

Setting defaults

@@ -1121,6 +1126,14 @@
raise its first argument to the power of its second
+
+ + < <= > >= = == <> != + +
+
+ Compare numbers or strings +
@@ -2564,6 +2577,11 @@
+ Comparing strings or numbers + +
+
+ References on arrays
@@ -2571,7 +2589,7 @@
- An example + An example
@@ -2595,12 +2613,12 @@
- Purpose + Purpose
- How the various functions and commands differ + How the various functions and commands differ
@@ -2614,22 +2632,22 @@
- Creating a standalone-program from the command line + Creating a standalone-program from the command line
- Creating a standalone-program from within your program + Creating a standalone-program from within your program
- Points to consider before creating a standalone program + Points to consider before creating a standalone program
- See also + See also
@@ -2648,7 +2666,7 @@
- Three simple examples + Three simple examples
@@ -2658,7 +2676,7 @@
- Abbreviations for long names + Abbreviations for long names
@@ -2668,12 +2686,12 @@
- Two more complex examples + Two more complex examples
- See also + See also
@@ -2738,6 +2756,18 @@
+

Comparing strings or numbers

+
+
+
+

Yabasic, of course, allows to compare strings with strings and numbers with numbers; <, <=, > and >= compare their left-hand side to their right-hand side as usual; nothing new here and examples can be found throughout this manual.

+

More interesting, the equality-operator (for numbers as well as for strings) can be written in two different ways: either as = (traditional) or as == (more modern). The second form has the advantage of beeing visually distinct from the assignment-operator, which is the single =. One may argue therefore, that using == results in code, that is easier to understand and read; This manual however sticks to tradition and mostly uses the single = for equality-check.

+

Finally, inequality can be checked with <> or !=; both operators behave identically and so it is only a matter of taste, which one to use.

+ +
+
+
+

References on arrays

@@ -2746,7 +2776,7 @@
- An example + An example
@@ -2770,7 +2800,7 @@
-

An example

+

An example

@@ -2835,7 +2865,7 @@

Escape-sequences are the preferred way of specifying 'special' characters. They are introduced by the '\'-character and followed by one of a few regular letters, e.g. '\n' or '\r' (see the table below).

Escape-sequences may occur within any string at any position; they are replaced at parsetime (opposed to runtime), i.e. as soon as yabasic discovers the string, with their corresponding special character. As a consequence of this len("\a") returns 1, because yabasic replaces "\a" with the matching special character just before the program executes.

- +

Table 6.1. Escape sequences

@@ -2980,12 +3010,12 @@
- Purpose + Purpose
- How the various functions and commands differ + How the various functions and commands differ
@@ -2994,7 +3024,7 @@
-

Purpose

+

Purpose

@@ -3006,7 +3036,7 @@
-

How the various functions and commands differ

+

How the various functions and commands differ

@@ -3029,22 +3059,22 @@
- Creating a standalone-program from the command line + Creating a standalone-program from the command line
- Creating a standalone-program from within your program + Creating a standalone-program from within your program
- Points to consider before creating a standalone program + Points to consider before creating a standalone program
- See also + See also
@@ -3069,7 +3099,7 @@
-

Creating a standalone-program from the command line

+

Creating a standalone-program from the command line

@@ -3096,7 +3126,7 @@
-

Creating a standalone-program from within your program

+

Creating a standalone-program from within your program

@@ -3120,7 +3150,7 @@
-

Points to consider before creating a standalone program

+

Points to consider before creating a standalone program

@@ -3142,7 +3172,7 @@
-

See also

+

See also

@@ -3166,7 +3196,7 @@
- Three simple examples + Three simple examples
@@ -3176,7 +3206,7 @@
- Abbreviations for long names + Abbreviations for long names
@@ -3186,12 +3216,12 @@
- Two more complex examples + Two more complex examples
- See also + See also
@@ -3219,12 +3249,12 @@
- Libraries + Libraries
- Types + Types
@@ -3233,7 +3263,7 @@
-

Libraries

+

Libraries

@@ -3246,7 +3276,7 @@
-

Types

+

Types

@@ -3283,7 +3313,7 @@
-

Three simple examples

+

Three simple examples

@@ -3291,17 +3321,17 @@
- Computing the cosine + Computing the cosine
- Searching a string within another string + Searching a string within another string
- Showing a message box under Windows + Showing a message box under Windows
@@ -3310,7 +3340,7 @@
-

Computing the cosine

+

Computing the cosine

@@ -3330,7 +3360,7 @@
-

Searching a string within another string

+

Searching a string within another string

@@ -3350,7 +3380,7 @@
-

Showing a message box under Windows

+

Showing a message box under Windows

@@ -3408,7 +3438,7 @@
-

Abbreviations for long names

+

Abbreviations for long names

@@ -3431,7 +3461,7 @@
-

Two more complex examples

+

Two more complex examples

@@ -3439,7 +3469,7 @@
- Dealing with time + Dealing with time
@@ -3453,7 +3483,7 @@
-

Dealing with time

+

Dealing with time

@@ -3573,7 +3603,7 @@
-

See also

+

See also

@@ -3698,7 +3728,7 @@
- Special characters + Symbols and Special characters
@@ -3787,12 +3817,12 @@
y=abs(x)
- +

Description

If the argument of the abs-function is positive (e.g. 2) it is returned unchanged, if the argument is negative (e.g. -1) it is returned as a positive value (e.g. 1).

- +

Example

@@ -3802,7 +3832,7 @@
               
- +

Description

acos is the arcus cosine-function, i.e. the inverse of the cos-function. Or, more elaborate: It Returns the angle (in radians, not degrees !), which, fed to the cosine-function will produce the argument passed to the acos-function.

- +

Example

@@ -3841,7 +3871,7 @@
               
- +

See also

cos, asin

@@ -3864,14 +3894,14 @@
- +

Description

Used in conditions (e.g within if, while or until) to join two expressions. Returns true, if and only if its left and right argument are both true and false otherwise.

Note, that logical shortcuts may take place.

- +

Example

@@ -3881,7 +3911,7 @@
               
- +

See also

or,not

@@ -3903,13 +3933,13 @@
- +

Description

Used to compute the bitwise and of both its argument. Both arguments are treated as binary numbers (i.e. a sequence of digits 0 and 1); a bit of the resulting value will then be 1, if both arguments have a 1 at this position in their binary representation.

Note, that both arguments are silently converted to integer values and that negative numbers have their own binary representation and may lead to unexpected results when passed to and.

- +

Example

@@ -3919,7 +3949,7 @@
               
- +

See also

or, eor and bitnot

@@ -3939,13 +3969,13 @@
a=arraydim(b())
- +

Description

If you apply the arraydim()-function on a one-dimensional array (i.e. a vector) it will return 1, on a two-dimensional array (i.e. a matrix) it will return 2, and so on.

This is mostly used within subroutines, which expect an array among their parameters. Such subroutines tend to use the arraydim-function to check, if the array which has been passed, has the right dimension. E.g. a subroutine to multiply two matrices may want to check, if it really is invoked with two 2-dimensional arrays.

- +

Example

@@ -3956,7 +3986,7 @@
               
- +

See also

arraysize and dim.

@@ -3976,14 +4006,14 @@
x=arraysize(a(),b)
- +

Description

The arraysize-function computes the size of the specified dimension of a given array. Here, size stands for the maximum number, that may be used as an index for this array. The first argument to this function must be an reference to an array, the second one specifies, which of the multiple dimensions of the array should be taken to calculate the size. Please note, that arraysize returns the value that has been used in the actual dim-statement, the real (internal) size of the array is allocated one larger in each dimension to have a first element at index 0; however this is not reflected by the output of arraysize.

An Example involving subroutines: Let's say, an array has been declared as dim a(10,20) (that is a two-dimensional array or a matrix). If this array is passed as an array reference to a subroutine, this sub will not know, what sort of array has been passed. With the arraydim-function the sub will be able to find the dimension of the array, with the arraysize-function it will be able to find out the size of this array in its two dimensions, which will be 10 and 20 respectively.

Our sample array is two dimensional; if you envision it as a matrix this matrix has 10 lines and 20 columns (see the dim-statement above. To state it more formally: The first dimension (lines) has a size of 10, the second dimension (columns) has a size of 20; these numbers are those returned by arraysize(a(),1) and arraysize(a(),2) respectively. Refer to the example below for a typical usage.

- +

Example

@@ -4045,7 +4075,7 @@
               
- +

See also

arraydim and dim.

@@ -4065,12 +4095,12 @@
a=asc(char$)
- +

Description

The asc-function accepts a string, takes its first character and looks it up within the ascii-charset; this position will be returned. The asc-function is the opposite of the chr$-function. There are valid uses for asc, however, comparing strings (i.e. to bring them into alphabetical sequence) is not among them; in such many cases you might consider to compare strings directly with <, = and > (rather than converting a string to a number and comparing this number).

- +

Example

@@ -4081,7 +4111,7 @@
               
- +

Description

acos is the arcus sine-function, i.e. the inverse of the sin-function. Or, more elaborate: It Returns the angle (in radians, not degrees !), which, fed to the sine-function will produce the argument passed to the asin-function.

- +

Example

@@ -4120,7 +4150,7 @@
               
- +

See also

sin, acos

@@ -4145,13 +4175,13 @@
- +

Description

The at-clause takes two numeric arguments (e.g. at(2,3)) and can be inserted after the print-keyword. at() can be used only if clear screen has been executed at least once within the program (otherwise you will get an error).

The two numeric arguments of the at-function may range from 0 to the width of your terminal minus 1, and from 0 to the height of your terminal minus 1; if any argument exceeds these values, it will be truncated accordingly. However, yabasic has no influence on the size of your terminal (80x25 is a common, but not mandatory), the size of your terminal and the maximum values acceptable within the at-clause may vary. To get the size of your terminal you may use the peek-function: peek("screenwidth") returns the width of your terminal and peek("screenheight") its height.

- +

Example

@@ -4165,7 +4195,7 @@
               
- +

See also

print, clear screen, color

@@ -4188,13 +4218,13 @@
- +

Description

atan is the arctangent-function, i.e. the inverse of the tan-function. Or, more elaborate: It Returns the angle (in radians, not degrees !), which, fed to the tan-function will produce the argument passed to the atan-function.

The atan-function has a second form, which accepts two arguments: atan(a,b) which is (mostly) equivalent to atan(a/b) except for the fact, that the two-argument-form returns an angle in the range -π to π, whereas the one-argument-form returns an angle in the range -π/2 to π/2. To understand this you have to be good at math.

- +

Example

@@ -4204,7 +4234,7 @@
               
- +

See also

tan, sin

@@ -4285,14 +4315,14 @@
- +

Description

Change the color, that becomes visible, if any portion of the window is erased, e.g. after clear window or clear line. Note however, that parts of the window, that show the old background color will not change.

As with the color-command, the new background color can either be specified as a triple of three numbers or as a single string, that contains those three numbers separated by commas.

Note, that the command backcolor can be written as backcolour too and vice versa.

- +

Example

@@ -4307,7 +4337,7 @@
               
@@ -4327,12 +4357,12 @@
beep
- +

Description

The bell-command rings the bell within your computer once. This command is not a sound-interface, so you can neither vary the length or the height of the sound (technically, it just prints \a). bell is exactly the same as beep.

- +

Example

@@ -4341,7 +4371,7 @@
               
- +

See also

@@ -4365,12 +4395,12 @@

bell
- +

Description

The beep-command rings the bell within your computer once. beep is a synonym for bell.

- +

Example

@@ -4379,7 +4409,7 @@
               
- +

See also

@@ -4403,13 +4433,13 @@

hexadecimal$=bin$(decimal)
- +

Description

The bin$-function takes a single numeric argument an converts it into a string of binary digits (i.e. zeroes and ones). If you pass a negative number to bin$, the resulting string will be preceded by a '-'.

If you want to convert the other way around (i.e. from binary to decimal) you may use the dec-function.

- +

Example

@@ -4421,7 +4451,7 @@
               
@@ -4441,13 +4471,13 @@
bind("foo.exe")
- +

Description

The bind-command combines your own yabasic-program (plus all the libraries it does import) and the interpreter by copying them into a new file, whose name is passed as an argument. This new program may then be executed on any computer, even if it does not have yabasic installed.

Please see the section about creating a standalone-program for details.

- +

Example

@@ -4463,7 +4493,7 @@
               
- +

See also

The section about creating a standalone-program, the peek-function and the command line options.

@@ -4485,14 +4515,14 @@
- +

Description

This function is used to compute the bitwise not of its single argument. The argument is treated as binary number (i.e. a sequence of digits 0 and 1); a bit of the resulting value will be 1, if the argument has a 0 at this position in its binary representation; if the bit in the argument is 1, the bit in the result will be 0.

Note, that its argument is silently converted to a positive integer value and that negative numbers have their own binary representation and may lead to unexpected results when passed to bitnot.

A note on naming: This one-argument-function is named bitnot to distinguish it from the one-argument-function not, which operates on logical expressions. For the similar functions and and or this distinction between logical and bitwise function is done implicitly through the number of arguments (1 and 2, respectively).

- +

Example

@@ -4502,7 +4532,7 @@
               
- +

See also

or, eor and and

@@ -4524,7 +4554,7 @@
- +

Description

The box-command does exactly the same as the rectangle-command; it is just a synonym. Therefore you should refer to the entry for the rectangle-command for further information.

@@ -4545,12 +4575,12 @@
break 2
- +

Description

break transfers control immediately outside the enclosing loop or switch statement. This is the preferred way of leaving a such a statement (rather than goto, which is still possible in most cases). An optional digit allows one to break out of multiple levels, e.g. to leave a loop from within a switch statement. Please note, that only a literal (e.g. 2) is allowed at this location.

- +

Example

@@ -4578,7 +4608,7 @@
               
- +

See also

for, while, repeat and switch.

@@ -4718,12 +4748,12 @@
- +

Description

Please see the switch-statement.

- +

Example

@@ -4738,7 +4768,7 @@
               
- +

See also

@@ -4764,12 +4794,12 @@

- +

Description

The ceil-function returns the smallest integer number, that is larger or equal than its argument.

- +

Example

@@ -4780,7 +4810,7 @@
               
- +

See also

floor, int, frac, round

@@ -4800,13 +4830,13 @@
print chomp$("Hallo !\n")
- +

Description

The chomp$-function checks, if its string-argument ends in a newline and removes it eventually; for this purpose chomp$ can replace an if-statement. This can be especially useful, when you deal with input from external sources like system$.

You may apply chomp$ freely, as it only acts, if there is a newline to remove; note however, that user-input, that comes from the normal input-statement, does not need such a treatment, because it already comes without a newline.

- +

Example

The following yabasic-program uses the unix-command whoami to get the username of the current user in order to greet him personally. This is done twice: First with the chomp$-function and then again with with an equivalent if-statement:

@@ -4820,7 +4850,7 @@
- +

See also

@@ -4844,13 +4874,13 @@

character$=chr$(ascii)
- +

Description

The chr$-function is the opposite of the asc-function. It looks up and returns the character at the given position within the ascii-charset. It's typical use is to construct nonprintable characters which do not occur on your keyboard.

Nevertheless you won't use chr$ as often as you might think, because the most important nonprintable characters can be constructed using escape-sequences using the \-character (e.g. you might use \n instead of chr$(10) wherever you want to use the newline-character).

- +

Example

@@ -4860,7 +4890,7 @@
               
- +

See also

@@ -4889,7 +4919,7 @@

- +

Description

The circle-command accepts three parameters: The x- and y-coordinates of the center and the radius of the circle.

Some more observations related with the circle-command:

@@ -4918,7 +4948,7 @@
- +

Example

@@ -4935,7 +4965,7 @@
               
@@ -4959,13 +4989,13 @@
- +

Description

May be used within the circle, rectangle or triangle command and causes these shapes to be erased (i.e. be drawn in the colour of the background).

fill can be used in conjunction with and wherever the fill-clause may appear. Used alone, clear will erase the outline (not the interior) of the shape (circle, rectangle or triangle); together with fill the whole shape (including its interior) is erased.

- +

Example

@@ -4977,7 +5007,7 @@
               
- +

See also

clear, circle, rectangle, triangle

@@ -4999,13 +5029,13 @@
- +

Description

clear screen erases the text window (the window where the output of print appears).

It must be issued at least once, before some advanced screen-commands (e.g. print at or inkey$) may be called; this requirement is due to some limitations of the curses-library, which is used by yabasic under Unix for some commands.

- +

Example

@@ -5018,7 +5048,7 @@
               
- +

See also

@@ -5042,12 +5072,12 @@

clear window
- +

Description

clear window clears the graphic window. If you have started printing the graphic via open printer, the clear window-command starts a new page as well.

- +

Example

@@ -5066,7 +5096,7 @@
               
- +

See also

open window, open printer

@@ -5089,13 +5119,13 @@
- +

Description

The close-command closes an open file. You should issue this command as soon as you are done with reading from or writing to a file.

- +

Example

@@ -5108,7 +5138,7 @@
               
- +

See also

@@ -5137,12 +5167,12 @@

- +

Description

The close curve-command closes a sequence of lines, that has been drawn by repeated line to-commands.

- +

Example

@@ -5157,7 +5187,7 @@
               
- +

See also

line, new curve

@@ -5177,12 +5207,12 @@
close printer
- +

Description

The close printer-command ends the printing graphics. Between open printer and close printer everything you draw (e.g. circles, lines …) is sent to your printer. close printer puts an end to printing and will make your printer eject the page.

- +

Example

@@ -5196,7 +5226,7 @@
               
- +

See also

@@ -5220,12 +5250,12 @@

close window
- +

Description

The close window-command closes the graphics-window, i.e. it makes it disappear from your screen. It includes an implicit close printer, if a printer has been opened previously.

- +

Example

@@ -5237,7 +5267,7 @@
               
- +

See also

@@ -5264,7 +5294,7 @@

- +

Description

Change the color, in which lines, dots, circles, rectangles or triangles are drawn. The color-command accepts three numbers in the range 0 … 255 (as in the first line of the synopsis above). Those numbers specify the intensity for the primary colors red, green and blue respectively. As an example 255,0,0 is red and 255,255,0 is yellow.

Alternatively you may specify the color with a single string (as in the second line of the synopsis above); this string should contain three numbers, separated by commas. As an example "255,0,255" would be violet. Using this variant of the colour-command, you may use symbolic names for colours:

@@ -5277,7 +5307,7 @@

, which reads much clearer.

- +

Example

@@ -5292,7 +5322,7 @@
               

Note, that the command color can be written as colour too and vice versa.

@@ -5312,13 +5342,13 @@
compile(code$)
- +

Description

This is an advanced command (closely related with the execute-command). It allows you to compile a string of yabasic-code (which is the only argument). Afterwards the compiled code is a normal part of your program.

Note, that there is no way to remove the compiled code.

- +

Examples

@@ -5329,7 +5359,7 @@
               
- +

Another Example

This next example combines the functions compile and execute:

@@ -5343,7 +5373,7 @@
@@ -5363,7 +5393,7 @@
continue
- +

Description

You may use continue within any loop to start the next iteration immediately. Depending on the type of the loop, the loop-condition will or will not be checked. Especially: for- and while-loops will evaluate their respective conditions, do- and repeat-loops will not.

@@ -5373,7 +5403,7 @@

- +

Example

@@ -5386,7 +5416,7 @@
               
- +

See also

for, do, repeat, while, break

@@ -5408,12 +5438,12 @@
- +

Description

The cos-function expects an angle (in radians) and returns its cosine.

- +

Example

@@ -5423,7 +5453,7 @@
               
- +

See also

acos, sin

@@ -5511,14 +5541,14 @@
- +

Description

The data-keyword introduces a list of comma-separated list of strings or numbers, which may be retrieved with the read-command.

The data-command itself does nothing; it just stores data. A single data-command may precede an arbitrarily long list of values, in which strings or numbers may be mixed at will.

yabasic internally uses a data-pointer to keep track of the current location within the data-list; this pointer may be reset with the restore-command.

- +

Example

@@ -5536,7 +5566,7 @@
               
- +

See also

read, restore

@@ -5556,7 +5586,7 @@
a$=date$
- +

Description

The date$-function (which must be called without parentheses; i.e. date$() would be an error) returns a string containing various components of a date; an example would be 4-05-27-2004-Thu-May. This string consists of various fields separated by hyphens ("-"):

@@ -5585,7 +5615,7 @@

Note, that all fields within the string returned by date$ have a fixed with (numbers are padded with zeroes); therefore it is easy to extract the various fields of a date format with mid$.

- +

Example

@@ -5601,7 +5631,7 @@
               
- +

See also

@@ -5628,14 +5658,14 @@

- +

Description

The dec-function takes the string-representation of a base-2 or base-16 (which is the default) number and converts it into a decimal number. The optional second argument (base) might be used to specify a base other than 16. However, currently only base 2 or base 16 are supported. Please note, that for base 16 and 2 you may write literals in the usual way, by preceding them with 0x or 0b respectively, e.g. like

print 0xff + 0b11

; this may save you from applying the dec altogether.

- +

Example

@@ -5645,7 +5675,7 @@
               
@@ -5674,13 +5704,13 @@
- +

Description

The default-clause is an optional part of the switch-statement (see there for more information). It introduces a series of statements, that should be executed, if none of the cases matches, that have been specified before (each with its own case-clause).

So default specifies a default to be executed, if none of the explicitly named cases matches; hence its name.

- +

Example

@@ -5702,7 +5732,7 @@
               
- +

See also

sub, case

@@ -5725,7 +5755,7 @@
- +

Description

The dim-command prepares one or more arrays (of either strings or numbers) for later use. This command can also be used to enlarges an existing array.

When an array is created with the dim-statement, memory is allocated and all elements are initialized with either 0 (for numerical arrays) or "" (for string arrays). Please be aware, that the dim reserves room for one element more than actually specified, e.g. dim(10) reserves memory for 11 elements. This makes it possible to access element 0 as well as element 10, which serves the conventions of C as well as basic.

@@ -5733,7 +5763,7 @@

Finally: To create an array, that is only known within a single subroutine, you should use the command local, which creates local variables as well as local arrays.

- +

Example

@@ -5766,7 +5796,7 @@
               
- +

See also

arraysize, arraydim, local

@@ -5789,12 +5819,12 @@ loop
- +

Description

Starts a loop, which is terminated by loop; everything between do and loop will be repeated forever. This loop has no condition, so it is an infinite loop; note however, that a break- or goto-statement might be used to leave this loop anytime.

- +

Example

@@ -5808,7 +5838,7 @@
               
- +

See also

loop, repeat, while, break

@@ -5831,13 +5861,13 @@
- +

Description

Introduces a comment, which spans up to the end of the line. But other than the rem-comment, any docu-comment is collected within the special docu$-array and might be retrieved later on. Moreover you might invoke yabasic -docu foo.yab on the command line to retrieve the embedded documentation within the program foo.yab.

Instead of doc you may just as well write docu or even documentation.

- +

Example

@@ -5865,7 +5895,7 @@
               
- +

See also

docu$, rem

@@ -5885,13 +5915,13 @@
a$=docu$(1)
- +

Description

Before your program is executed, yabasic collects the content of all the doc-statements within your program within this 1-dimensional array (well only those within the main-program, libraries are skipped).

You may use the arraysize function to find out, how many lines it contains.

- +

Example

@@ -5914,7 +5944,7 @@
               
- +

See also

arraydim, rem

@@ -5937,13 +5967,13 @@
- +

Description

Draws a dot at the specified coordinates within your graphic-window. If printing is in effect, the dot appears on your printout too.

Use the functions peek("winheight") or peek("winwidth") to get the size of your window and hence the boundaries of the coordinates specified for the dot-command.

- +

Example

@@ -5961,7 +5991,7 @@
               
- +

See also

line, open window

@@ -6093,12 +6123,12 @@
- +

Description

The else-statement introduces the alternate branch of an if-statement. I.e. it starts the sequence of statements, which is executed, if the condition of the if-statement is not true.

- +

Example

@@ -6113,7 +6143,7 @@
               
- +

Description

The elsif-statement is used to select a single alternative among a series of choices.

With each elsif-statement you may specify a condition, which is tested, if the main condition (specified with the if-statement) has failed. Note that elsif might be just as well written as elseif.

Within the example below, two variables a and b are tested against a range of values. The variable a is tested with the elsif-statement. The very same tests are performed for the variable b too; but here an involved series of if-else-statements is employed, making the tests much more obscure.

- +

Example

@@ -6189,7 +6219,7 @@
               
- +

See also

if, else

@@ -6211,13 +6241,13 @@
- +

Description

Terminate your program. Much (but not exactly) like the exit command.

Note, that end may not end your program immediately; if you have opened a window or called clear screen, yabasic assumes, that your user wants to study the output of your program after it has ended; therefore it issues the line ---Program done, press RETURN--- and waits for a key to be pressed. If you do not like this behaviour, consider using exit.

- +

Example

@@ -6231,7 +6261,7 @@
               
- +

See also

@@ -6259,14 +6289,14 @@

- +

Description

The endif-statement closes (or ends) an if-statement.

Note, that endif may be written in a variety of other ways: end if, end-if or even fi.

The endif-statement must be omitted, if the if-statement does not contain the keyword then (see the example below). Such an if-statement without endif extends only over a single line.

- +

Example

@@ -6283,7 +6313,7 @@
               
- +

Description

Marks the end of a subroutine-definition (which starts with the sub-keyword). The whole concept of subroutines is explained within the entry for sub.

- +

Example

@@ -6332,7 +6362,7 @@
               
- +

Description

The eof-function checks, if there is still data left within an open file. As an argument it expects the file-number as returned by (or used within) the open-function (or statement).

As a special case, if the argument is zero: test if input from stdin is available.

- +

Example

@@ -6381,7 +6411,7 @@
               
- +

Description

The eor-function takes two arguments and computes their bitwise exclusive or. I.e. treat each arguments as a sequence of bits and compare theses two sequences bit by bit to produce the result. If the bits from the arguments are equal, the resulting bit will be 0, otherwise 1.

The xor-function is the same as the eor function; both are synonymous; however they have each their own description, so you may check out the entry of xor for a slightly different view.

- +

Example

@@ -6429,7 +6459,7 @@
               
- +

See also

and, or

@@ -6449,12 +6479,12 @@
error "Wrong, wrong, wrong !!"
- +

Description

Produces the same kind or error messages, that yabasic itself produces (e.g. in case of a syntax-error). The single argument is issued along with the current line-number.

- +

Example

@@ -6470,7 +6500,7 @@
               
- +

See also

Well, there should be a corresponding called warning; unfortunately ther is none yet.

@@ -6490,12 +6520,12 @@
foo=euler
- +

Description

euler is the well known constant named after Leonard Euler; its value is 2.71828182864. euler is not a function, so parens are not allowed (i.e. euler() will produce an error). Finally, you may not assign to euler; it wouldn't sense anyway, because it is a constant.

- +

Example

@@ -6504,7 +6534,7 @@
               
- +

See also

@@ -6528,13 +6558,13 @@

print eval("1+2")
- +

Description

eval accepts a string, which should be the text of a single numeric expression; it processes the expression and returns the result. All numeric functions and arithmetic operators of yabasic can be used as well as any variables known.

The string passed to eval is first compiled and then executed right away. The compilation happens just before the execution and may cause compilation errors, if you pass an invalid expression. eval might come handy, if you want to calculate an expression, that is not known at the start of your program, e.g. because it is read from the user; see the example below.

- +

Example

@@ -6551,7 +6581,7 @@
               
@@ -6571,13 +6601,13 @@
print eval$("a$ + b$")
- +

Description

eval$ accepts a string, which should be the text of a single string-expression; it processes the expression and returns the result. All string-functions and string-operators of yabasic can be used as well as any variables known.

The string passed to eval$ is first compiled and then executed right away. The compilation happens right before the execution and may cause compilation errors, if you pass an invalid expression. See the example below for two interesting use-cases.

- +

A short but useful Example

The example below allows to apply the quoting rules of yabasic to user-input:

@@ -6595,7 +6625,7 @@
- +

A longer Example

The next example shows the subroutine evemex$ (for eval embedded expression) that allows to embed expressions into a string, simply by enclosing them with {{ and }}:

@@ -6646,7 +6676,7 @@
@@ -6666,12 +6696,12 @@
print execute("bar","arg1","arg2")
- +

Description

The execute-function is the counterpart of the execute$-function (please see there for some caveats). execute may be used to execute subroutines, which return a number.

- +

Example

@@ -6684,7 +6714,7 @@
               
@@ -6704,14 +6734,14 @@
print execute$("foo$","arg1","arg2")
- +

Description

execute$ can be used to execute a user defined subroutine, whose name is specified as a string expression.

This function allows to execute a subroutine, whose name is not known by the time you write your program. This might happen, if you want to execute a subroutine, which is compiled (using the compile command) as late as of execution of your program.

Note however, that the execute$-function is not the preferred method to execute a user defined subroutine; in almost all cases you should just execute a subroutine by writing down its name within your yabasic program (see the example below).

- +

Example

@@ -6728,7 +6758,7 @@
               
@@ -6751,12 +6781,12 @@
- +

Description

Terminate your program and return any given value to the operating system. exit is similar to end, but it will terminate your program immediately, no matter what.

- +

Example

@@ -6767,7 +6797,7 @@
               
- +

See also

@@ -6793,13 +6823,13 @@

- +

Description

This function computes e to the power of its argument, where e is the well known euler constant 2.71828182864.

The exp-function is the inverse of the log-function.

- +

Example

@@ -6812,7 +6842,7 @@
               
- +

See also

@@ -6840,13 +6870,13 @@

- +

Description

The export-statement is used within libraries to mark a user defined subroutine as visible outside the library wherein it is defined. Subroutines, which are not exported, must be qualified with the name of the library, e.g. foo.baz (where foo is the name of the library and baz the name of the subroutine); exported subroutines may be used without specifying the name of the library, e.g. bar.

Therefore export may only be useful within libraries.

- +

Example

The library foo.bar (which is listed below) defines two functions bar and baz, however only the function bar is exported and therefore visible even outside the library; baz is not exported and may only be used within the library foo.yab:

@@ -6905,7 +6935,7 @@
- +

See also

sub, import

@@ -7051,13 +7081,13 @@
- +

Description

The constant false can be assigned to variables which later appear in conditions (e.g. within an if-statement.

false may also be written as FALSE or even FaLsE.

- +

Example

@@ -7073,7 +7103,7 @@
               
- +

See also

@@ -7101,12 +7131,12 @@

- +

Description

fi marks the end of an if-statement and is exactly equivalent to endif, please see there for further information.

- +

Example

@@ -7118,7 +7148,7 @@
               
- +

See also

@@ -7146,13 +7176,13 @@

- +

Description

The keyword fill may be used within the circle, rectangle or triangle command and causes these shapes to be filled.

fill can be used in conjunction with and wherever the clear-clause may appear. Used alone, fill will fill the interior of the shape (circle, rectangle or triangle); together with clear the whole shape (including its interior) is erased.

- +

Example

@@ -7164,7 +7194,7 @@
               
- +

See also

clear, circle, rectangle, triangle

@@ -7186,12 +7216,12 @@
- +

Description

The floor-function returns the largest integer number, that is smaller or equal than its argument. For positive numbers x, floor(x) is the same as int(x); for negaive numbers it can be different (see the example below).

- +

Example

@@ -7203,7 +7233,7 @@
               
- +

See also

ceil, int, frac, round

@@ -7227,13 +7257,13 @@
- +

Description

The for-loop lets its numerical variable (a in the synopsis) assume all values within the given range. The optional step-clause may specify a value (default: 1) by which the variable will be incremented (or decremented, if step is negative).

Any for-statement can be replaced by a set of ifs and gotos; as you may infer from the example below this is normally not feasible. However if you want to know in detail how the for-statement works, you should study this example, which presents a for-statement and an exactly equivalent series of ifs and gotos.

- +

Example

@@ -7251,7 +7281,7 @@
               
- +

See also

step, next

@@ -7273,13 +7303,13 @@
- +

Description

foreign_buffer_alloc$() creates a new buffer of specified size (using the C-function malloc). This buffer can then be populated by foreign_buffer_set or foreign_buffer_set_buffer, passed to foreign_function_call and finally freed with foreign_buffer_free.

The special value of -1 can be passed to create the equivalent of a null-pointer in C: when your yabasic-program passes such a buffer to an external function, it is replaced by a null-pointer.

@@ -7301,12 +7331,12 @@
- +

Description

foreign_buffer_dump$() is mostly used during development of your yabasic program and helps to investigate the content of a buffer; this can be helpful to find out, how a structure for a foreign function call is aggregated. To actually retrieve elements from the structure rather use foreign_buffer_get.

@@ -7328,12 +7358,12 @@
- +

Description

foreign_buffer_free() expects a handle for a buffer and frees this buffer (using the C-function free), i.e. gives this memory area back to the operating system. Any subsequent attempt to access part of this buffer (e.g. via foreign_buffer_get) will probably lead to an error (as will a second call to foreign_buffer_free()). The handle-argument must have been returned previously by foreign_buffer_alloc or foreign_function_call.

@@ -7355,7 +7385,7 @@
- +

Description

foreign_buffer_get() retrieves a simple type from a buffer, that is assumed to contain a structure (see the overview-section for the necessary background). For this it needs three arguments:

@@ -7374,7 +7404,7 @@

Correct usage of this function requires an good understanding of the respective structure contained within the buffer.

- +

See also

The overview-section on foreign functions, list of related functions and commands, the neighbouring functions for retrieving other values from the buffer.

@@ -7396,7 +7426,7 @@
- +

Description

foreign_buffer_get$() retrieves a string from a foreign buffer; its areguments are

@@ -7415,7 +7445,7 @@

Correct usage of this function requires an good understanding of the respective structure contained within the buffer.

@@ -7437,7 +7467,7 @@
- +

Description

foreign_buffer_get_buffer() should be used, if a buffer (i.e. the contained structure) is known to contain a pointer to a string or another structure. foreign_buffer_get_buffer() then reads this pointer and transforms it into a handle, that can then be used by other functions from the foreign_buffer_get-family. The two arguments are:

@@ -7453,7 +7483,7 @@

See the libcurl-example in the overview-section for an example.

@@ -7476,7 +7506,7 @@
- +

Description

foreign_buffer_set can be used to populate a structure within a foreign buffer. It accepts strings (first line in synopsis) and numbers (second line in synopsis) and stores them at the given offset. The arguments are:

@@ -7497,7 +7527,7 @@
@@ -7519,7 +7549,7 @@
- +

Description

foreign_buffer_set_buffer stores a pointer (as in C) to a buffer within another buffer. It accepts a handle to a buffer (handle2$ in the synopsis) and stores it as a pointer at the given offset within the buffer given first (handle1$). The arguments are:

@@ -7537,7 +7567,7 @@
@@ -7559,12 +7589,12 @@
- +

Description

Return the size of the given buffer; if your handle just encapsulates a null-pointer, this will return 0; if the size is not known (standard for buffers returned from a foreign function call), the size will be -1.

@@ -7586,7 +7616,7 @@
- +

Description

foreign_function_call calls a function from an external library.

In general, this feature is mostly useful, if you have such a library written or aquired. If you have an external command, that can be called interactively (i.e. from the commandline), you might try the system-function.

@@ -7594,7 +7624,7 @@

The example uses the foreign_function_call to invoke the cos-function from the standard C-library (libm.so.6 under Unix or msvcrt.dll under Windows).

- +

Example

@@ -7634,7 +7664,7 @@
               

With all these arguments specified, yabasic will call the foreign function (in the example: cos) and return its result; this process can be influenced by specifying options (see below).

- +

Options

Options can be appended in any number after the string "options", e.g. like:

@@ -7673,7 +7703,7 @@
@@ -7695,14 +7725,14 @@
- +

Description

This function calls a function from an external library, just like foreign_function_call (which see for most of the description). The only difference is that foreign_function_call$ should be used when the foreign function returns a string or a structure (which itself is contained in a buffer, which is represented by a handle, which is a string).

The arguments are just the same as in foreign_function_call, only the second argument ("string" in the example above) can only be "string" or "buffer" in accord to the nature of foreign_function_call$, which itself must return a string.

Among the options described at foreign_function_call, the option "copy_string_result" can really only be applied here.

@@ -7724,12 +7754,12 @@
- +

Description

The function returns the size of any of the types available for calls to foreign functions (see the overview section for a complete list). This is useful when calculating offsets needed for foreign_buffer_set or foreign_buffer_get.

@@ -7751,12 +7781,12 @@
- +

Description

The abbreviations frnbf_ and frnfn_ are just short for foreign_buffer_ and foreign_function_; you might prefer one over the other; in any case a good editor should make it easy to replace the short form with the long one.

@@ -7778,13 +7808,13 @@
- +

Description

The frac-function takes its argument, removes all the digits to the left of the comma and just returns the digits right of the comma, i.e. the fractional part.

Refer to the example to learn how to rewrite frac by employing the int-function (which is not suggested anyway).

- +

Example

@@ -7797,7 +7827,7 @@
               
- +

See also

int, floor, ceil, round

@@ -7860,13 +7890,13 @@
- +

Description

The function getbit returns a string, which contains the encoded bit-pattern of a rectangle within graphic window; the four arguments specify two opposite corners of the rectangle. The string returned might later be fed to the putbit-command.

The getbit$-function might be used for simple animations (as in the example below).

- +

Example

@@ -7884,7 +7914,7 @@
               
- +

See also

@@ -7910,13 +7940,13 @@

- +

Description

The getscreen$ function returns a string representing the area of the screen as specified by its four arguments (which specify two opposite corners). I.e. everything you have printed within this rectangle will be encoded in the string returned (including any colour-information).

Like most other commands dealing with advanced text output, getscreen$ requires, that you have called clear screen before.

- +

Example

@@ -7936,7 +7966,7 @@
               
- +

See also

putscreen$ @@ -7960,12 +7990,12 @@

- +

Description

The glob-function takes two arguments, a string and a (glob-) pattern, and checks if the string matches the pattern. However glob does not employ the powerful rules of regular expressions; rather it has only two special characters: * (which matches any number (even zero) of characters) and ? (which matches exactly a single character).

- +

Example

@@ -8005,7 +8035,7 @@
               
- +

See also

There are no related commands.

@@ -8033,13 +8063,13 @@
- +

Description

gosub remembers the current position within your program and then passes the flow of execution to another point (which is normally marked with a label). Later, when a return-statement is encountered, the execution is resumed at the previous location.

gosub is the traditional command for calling code, which needs to be executed from various places within your program. However, with subroutines yabasic offers a much more flexible way to achieve this (and more). Therefore gosub must to be considered obsolete.

- +

Example

@@ -8054,7 +8084,7 @@
               
- +

See also

return, goto, sub, label, on gosub

@@ -8080,13 +8110,13 @@
- +

Description

The goto-statement passes the flow of execution to another point within your program (which is normally marked with a label).

goto is normally considered obsolete and harmful, however in yabasic it may be put to the good use of leaving loops (e.g. while or for) prematurely. Note however, that subroutines may not be left with the goto-statement.

- +

Example

@@ -8102,7 +8132,7 @@
               
- +

See also

gosub, on goto

@@ -8140,12 +8170,12 @@
- +

Description

The hex$-function converts a number into a string with its hexadecimal representation. hex$ is the inverse of the dec-function.

- +

Example

@@ -8161,7 +8191,7 @@
               
@@ -8249,7 +8279,7 @@
- +

Description

The if-statement is used to evaluate a conditions and take actions accordingly. (As an aside, please note that there is no real difference between conditions and expressions.)

There are two major forms of the if-statement:

@@ -8283,7 +8313,7 @@
- +

Example

@@ -8303,7 +8333,7 @@
               
@@ -8325,7 +8355,7 @@
- +

Description

The import-statement imports a library. It expects a single argument, which must be the name of a library (without the trailing .yab). This library will then be read and parsed and its subroutines (and variables) will be made available within the importing program. Most of the time this will be the main program, but libraries my also import and use other libraries.

Libraries will first be searched in three locations in order:

@@ -8344,7 +8374,7 @@
- +

Example

Lets say you have a yabasic-program foo.yab, which imports a library lib.yab. foo.yab; this would read:

@@ -8395,7 +8425,7 @@
- +

See also

export, sub

@@ -8421,7 +8451,7 @@
- +

Description

The inkeys$-function waits, until the user presses a key on the keyboard or a button of his mouse, and returns this very key. An optional argument specifies the number of seconds to wait; if omitted, inkey$ will wait indefinitely.

inkey$ may only be used, if clear screen has been called at least once.

@@ -8459,7 +8489,7 @@

inkey$ accepts an optional argument, specifying a timeout in seconds; if no key has been pressed within this span of time, an empty string is returned. If the timeout-argument is omitted, inkey$ will wait for ever.

- +

Example

@@ -8475,7 +8505,7 @@
               
@@ -8501,14 +8531,14 @@
- +

Description

input reads the new contents of one or many (numeric- or string-) variables, either from the keyboard (i.e. from you) or from a file. An optional first string-argument specifies a prompt, which will be issued before reading any contents.

If you want to read from an open file, you need to specify a hash ('#'), followed by the number, under which the file has been opened.

Note, that the input is split at spaces, i.e. if you enter a whole line consisting of many space-separated word, the first input-statement will only return the first word; the other words will only be returned on subsequent calls to input; the same applies, if a single input reads multiple variables: The first variable gets only the first word, the second one the second word, and so on. If you don't like this behaviour, you may use line input, which returns a whole line (including embedded spaces) at once.

- +

Example

@@ -8549,7 +8579,7 @@
               
- +

See also

@@ -8577,13 +8607,13 @@

- +

Description

The instr-functions requires two string arguments and searches the second argument within the first. If the second argument can be found within the first, the position is returned (counting from one). If it can not be found, the instr-function returns 0; this makes this function usable within the condition of an if-statement (see the example below).

If you supply a third, numeric argument to the instr-function, it will be used as a starting point for the search. Therefore instr("abcdeabcdeabcde","e",8) will return 10, because the search for an "e" starts at position 8 and finds the "e" at position 10 (and not the one at position 5).

- +

Example

@@ -8597,7 +8627,7 @@
               
- +

See also

@@ -8623,12 +8653,12 @@

- +

Description

The int-function returns only the digits before the comma; int(2.5) returns 2 and int(-2.3) returns -2.

- +

Example

@@ -8642,7 +8672,7 @@
               
- +

See also

frac, floor, ceil, round

@@ -8738,14 +8768,14 @@
- +

Description

The label-command can be used to give a name to a specific location within your program. Such a position might be referred from one of three commands: goto, gosub and restore.

You may use labels safely within libraries, because a label (e.g. foo) does not collide with a label with the same name within the main program or within another library; yabasic will not mix them up.

As an aside, please note, that line numbers are a special (however deprecated) case of labels; see the second example below.

- +

Example

@@ -8763,7 +8793,7 @@
               
- +

See also

gosub, goto.

@@ -8786,13 +8816,13 @@
- +

Description

The left$-function accepts two arguments (a string and a number) and returns the part from the left end of the string, whose length is specified by its second argument. Loosely spoken, it simply returns the requested number of chars from the left end of the given string.

Note, that the left$-function can be assigned to, i.e. it may appear on the left hand side of an assignment. In this way it is possible to change a part of the variable used within the left$-function. Note, that that way the length of the string cannot be changed, i.e. characters might be overwritten, but not added. For an example see below.

- +

Example

@@ -8817,7 +8847,7 @@
               
- +

See also

right$, mid$

@@ -8839,12 +8869,12 @@
- +

Description

The len-function returns the length of its single string argument.

- +

Example

@@ -8855,7 +8885,7 @@
               
- +

See also

left$, right$ and mid$,

@@ -8889,7 +8919,7 @@
- +

Description

The line-command draws a line. Simple as this is, the line-command has a large variety of forms as they are listed in the synopsis above. Lets look at them a little closer:

@@ -8913,7 +8943,7 @@
- +

Example

@@ -8929,7 +8959,7 @@
               
@@ -8954,12 +8984,12 @@
- +

Description

In most respects line input is like the input-command: It reads the new contents of a variable, either from keyboard or from a file. However, line input always reads a complete line and assigns it to its variable. line input does not stop reading at spaces and is therefore the best way to read in a string which might contain whitespace. Note, that the final newline is stripped of.

- +

Example

@@ -8970,7 +9000,7 @@
               
- +

See also

@@ -9002,7 +9032,7 @@

- +

Description

The local-command can (and should be) used to mark a variable (or array) as local to the containing subroutine. This means, that a local variable in your subroutine is totally different from a variable with the same name within your main program. Variables which are known everywhere within your program are called global in contrast.

Declaring variables within the subroutine as local helps to avoid hard to find bugs; therefore local variables should be used whenever possible.

@@ -9010,7 +9040,7 @@

As you may see from the example, local arrays may be created without using the keyword dim (which is required only for global arrays).

- +

Example

@@ -9038,7 +9068,7 @@
               
- +

See also

sub, static, dim

@@ -9061,12 +9091,12 @@
- +

Description

The log-function computes the logarithm of its first argument. The optional second argument gives the base for the logarithm; if this second argument is omitted, the euler-constant 2.71828… will be taken as the base.

- +

Example

@@ -9082,7 +9112,7 @@
               
- +

See also

@@ -9110,12 +9140,12 @@

- +

Description

The loop-command marks the ends of a loop (which is started by do), wherein all statements within the loop are repeated forever. In this respect the do loop-loop is infinite, however, you may leave it anytime via break or goto.

- +

Example

@@ -9129,7 +9159,7 @@
               
- +

See also

do, for, repeat, while, break

@@ -9151,12 +9181,12 @@
- +

Description

The lower$-function accepts a single string-argument and converts it to all lower case.

- +

Example

@@ -9167,7 +9197,7 @@
               
- +

See also

@@ -9193,12 +9223,12 @@

- +

Description

The ltrim$-function removes all whitespace from the left end of a string and returns the result.

- +

Example

@@ -9214,7 +9244,7 @@
               
- +

See also

rtrim$, trim$

@@ -9294,12 +9324,12 @@
- +

Description

Return the maximum of its two arguments.

- +

Example

@@ -9321,7 +9351,7 @@
               
- +

See also

@@ -9350,13 +9380,13 @@

- +

Description

The mid$-function requires three arguments: a string and two numbers, where the first number specifies a position within the string and the second one gives the number of characters to be returned; if you omit the third argument, the mid$-function returns all characters up to the end of the string.

Note, that you may assign to the mid$-function, i.e. mid$ may appear on the left hand side of an assignment. In this way it is possible to change a part of the variable used within the mid$-function. Note, that that way the length of the string cannot be changed, i.e. characters might be overwritten, but not added. For an example see below.

- +

Example

@@ -9373,7 +9403,7 @@
               
- +

See also

left$ and right$.

@@ -9395,12 +9425,12 @@
- +

Description

Return the minimum of its two argument.

- +

Example

@@ -9418,7 +9448,7 @@
               
- +

See also

@@ -9444,12 +9474,12 @@

- +

Description

The mod-function divides its two arguments and computes the remainder. Note, that a/b-int(a/b) and mod(a,b) are always equal.

- +

Example

@@ -9466,7 +9496,7 @@
               
- +

See also

int, frac, round

@@ -9492,7 +9522,7 @@
- +

Description

The mouseb-function is a helper function for decoding part of the (rather complicated) strings, which are returned by the inkey$-function. If a mousebutton has been pressed, the mouseb-function returns the number (1,2 or 3) of the mousebutton, when it is pressed and returns its negative (-1,-2 or -3), when it is released.

The mouseb-function accepts zero or one arguments. A single argument should be a string returned by the inkey$-function; if mouseb is called without any arguments, it returns the values from the last call to inkey$, which are stored implicitly and internally by yabasic.

@@ -9502,7 +9532,7 @@
- +

Example

@@ -9523,7 +9553,7 @@
               
- +

See also

inkey$, mousex, mousey and mousemod

@@ -9549,7 +9579,7 @@
- +

Description

The mousemod-function is a helper function for decoding part of the (rather complicated) strings, which are returned by the inkey$-function if a mousebutton has been pressed. It returns the state of the keyboard modifiers (shift, ctrl or alt): If the shift-key is pressed, mousemod returns 1, for the alt-key 2 and for the ctrl-key 4. If more than one key is pressed, the sum of these values is returned, e.g. mousemod returns 5, if shift and ctrl are pressed simultaneously.

The mousemod-function accepts zero or one arguments. A single argument should be a string returned by the inkey$-function; if mousemod is called without any arguments, it returns the values from the last call to inkey$ (which are stored implicitly and internally by yabasic).

@@ -9559,7 +9589,7 @@
- +

Example

@@ -9582,7 +9612,7 @@
               
- +

See also

inkey$, mousex, mousey and mouseb

@@ -9608,7 +9638,7 @@
- +

Description

The mousex-function is a helper function for decoding part of the (rather complicated) strings, which are returned by the inkey$-function; It returns the x-position of the mouse as encoded within its argument.

The mousex-function accepts zero or one arguments. A single argument should be a string returned by the inkey$-function; if mousex is called without any arguments, it returns the values from the last call to inkey$ (which are stored implicitly and internally by yabasic).

@@ -9618,7 +9648,7 @@
- +

Example

@@ -9635,7 +9665,7 @@
               
- +

See also

inkey$, mousemod, mousey and mouseb

@@ -9661,7 +9691,7 @@
- +

Description

The mousey-function is a helper function for decoding part of the (rather complicated) strings, which are returned by the inkey$-function. mousey returns the y-position of the mouse as encoded within its argument.

The mousey-function accepts zero or one arguments. A single argument should be a string returned by the inkey$-function; if mousey is called without any arguments, it returns the values from the last call to inkey$ (which are stored implicitly and internally by yabasic).

@@ -9671,7 +9701,7 @@
- +

Example

@@ -9688,7 +9718,7 @@
               
- +

See also

inkey$, mousemod, mousex and mouseb

@@ -9745,12 +9775,12 @@
- +

Description

The new curve-function starts a new sequence of lines, that will be drawn by repeated line to-commands.

- +

Example

@@ -9770,7 +9800,7 @@
               
- +

See also

line, close curve

@@ -9793,12 +9823,12 @@
- +

Description

The next-keyword marks the end of a for-loop. All statements up to the next-keyword will be repeated as specified with the for-clause. Note, that the name of the variable is optional; so instead of next a you may write next.

- +

Example

@@ -9814,7 +9844,7 @@
               
- +

See also

@@ -9841,13 +9871,13 @@

- +

Description

The keyword not (or ! for short) is mostly used within conditions (e.g. within if- or while-statements). There it is employed to negate the condition or expression (i.e. turn TRUE into FALSE and vice versa)

However not can be used within arithmetic calculations too., simply because there is no difference between arithmetic and logical expressions.

- +

Example

@@ -9857,7 +9887,7 @@
               
- +

See also

and,or

@@ -9882,13 +9912,13 @@
- +

Description

Within a subroutine the local variable numparam or numparams contains the number of parameters, that have been passed to the subroutine. This information can be useful, because the subroutine may have been called with fewer parameters than actually declared. The number of values that actually have been passed while calling the subroutine, can be found in numparams.

Note, that arguments which are used in the definition of a subroutine but are left out during a call to it (thereby reducing the value of numparams) receive a value of 0 or "" (empty string) respectively.

- +

Example

@@ -9908,7 +9938,7 @@
               
- +

See also

@@ -10004,13 +10034,13 @@

- +

Description

The on gosub statement uses its numeric argument (the one between on and gosub) to select an element from the list of labels, which follows after the gosub-keyword: If the number is 1, the program does a gosub to the first label; if the number is 2, to the second and, so on. if the number is zero or less, the program continues at the position of the first label; if the number is larger than the total count of labels, the execution continues at the position of the last label; i.e. the first and last label in the list constitute some kind of fallback-slot.

Note, that the on gosub-command can no longer be considered state of the art; people (not me !) may even start to mock you, if you use it.

- +

Example

@@ -10041,7 +10071,7 @@
               
- +

See also

goto, on gosub/function>

@@ -10070,13 +10100,13 @@
- +

Description

The on goto statement uses its numeric argument (the one between on and goto to select an element from the list of labels, which follows after the goto-keyword: If the number is 1, the execution continues at the first label; if the number is 2, at the second, and so on. if the number is zero or less, the program continues at the position of the first label; if the number is larger than the total count of labels, the execution continues at the position of the last label; i.e. the first and last label in the list constitute some kind of fallback-slot.

Note, that (unlike the goto-command) the on goto-command can no longer be considered state of the art; people may (not me !) even start to mock you, if you use it.

- +

Example

@@ -10105,7 +10135,7 @@
               
- +

See also

goto, on gosub/function>

@@ -10129,12 +10159,12 @@
- +

Description

With the on interrupt-command you may change the way, how yabasic reacts on a keyboard interrupt; it comes in two variants: on interrupt break and on interrupt continue. A keyboard interrupt is produced, if you press ctrl-C on your keyboard; normally (and certainly after you have called on interrupt break), yabasic will terminate with an error message. However after the command on interrupt continue yabasic ignores any keyboard interrupt. This may be useful, if you do not want your program being interruptible during certain critical operations (e.g. updating of files).

- +

Example

@@ -10153,7 +10183,7 @@
               
- +

See also

There is no related command.

@@ -10183,7 +10213,7 @@
- +

Description

The open-command opens a file for reading or writing or a printer for printing text. open comes in a wide variety of ways; it requires these arguments:

@@ -10245,7 +10275,7 @@

Furthermore note, that there is another, somewhat separate usage of the open-command; if you specify the bareword printer instead of a filename, the command opens a printer for printing text. Every text (and only text) you print to this file will appear on your printer. Note, that this is very different from printing graphics, as can be done with open printer.

- +

Example

@@ -10262,7 +10292,7 @@
               
- +

See also

close, print, peek, peek("error") and open printer

@@ -10285,7 +10315,7 @@
- +

Description

The open printer-command opens a printer for printing graphics. The command requires, that a graphic window has been opened before. Everything that is drawn into this window will then be sent to the printer too.

A new piece of paper may be started with the clear window-command; the final (or only) page will appear after the close printer-command.

@@ -10293,7 +10323,7 @@

If you use yabasic under Unix, you will need a postscript printer (because yabasic produces postscript output). Alternatively you may use ghostscript to transform the postscript file into a form suitable for your printer; but that is beyond the responsibility of yabasic.

- +

Example

@@ -10308,7 +10338,7 @@
               
- +

See also

@@ -10335,13 +10365,13 @@

- +

Description

The open window-command opens a window of the specified size. Only one window can be opened at any given moment of time.

An optional third argument specifies a font to be used for any text within the window. It can however be changed with any subsequent text-command.

- +

Example

@@ -10357,7 +10387,7 @@
               
- +

See also

close window, text

@@ -10380,12 +10410,12 @@
- +

Description

Used in conditions (e.g within if or while) to join two expressions. Returns true, if either its left or its right or both arguments are true; returns false otherwise.

- +

Example

@@ -10395,7 +10425,7 @@
               
- +

See also

and,bitnot

@@ -10417,13 +10447,13 @@
- +

Description

Used to compute the bitwise or of both its argument. Both arguments are treated as binary numbers (i.e. a sequence of digits 0 and 1); a bit of the resulting value will then be 1, if any of its arguments has 1 at this position in their binary representation.

Note, that both arguments are silently converted to integer values and that negative numbers have their own binary representation and may lead to unexpected results when passed to or.

- +

Example

@@ -10433,7 +10463,7 @@
               
- +

See also

and, eor and bitnot

@@ -10525,14 +10555,14 @@
- +

Description

The pause-command has many different names: You may write pause, sleep or wait interchangeably; whatever you write, yabasic will always do exactly the same.

The pause-command will simply wait for the specified number of seconds. This may be a fractional number, so you may well wait less than a second. However, if you try to pause for a smaller and smaller interval (e.g. 0.1 seconds, 0.01 seconds, 0.001 seconds and so on) you will find that at some point yabasic will not wait at all. The minimal interval that can be waited depends on the system (Unix, Windows) you are using.

The pause-command cannot be interrupted. However, sometimes you may want the wait to be interruptible by simply pressing a key on the keyboard. In such cases you should consider using the inkey$-function, with a number of seconds as an argument).

- +

Example

@@ -10551,7 +10581,7 @@
               
- +

See also

sleep, wait

@@ -10574,7 +10604,7 @@
- +

Description

The peek-function has many different and mostly unrelated uses. It is a kind of grab-bag for retrieving all kinds of numerical information, internal to yabasic. The meaning of the numbers returned be the peek-function depends on the string or number passed as an argument.

peek always returns a number, however the closely related peek$-function exists, which may be used to retrieve string information from among the internals of yabasic. Finally note, that some of the values which are retrieved with peek may even be changed, using the poke-function.

@@ -10609,7 +10639,7 @@

Return a number specifying the nature of the last error in an open- or seek-statement. Normally an error within an open-statement immediately terminates your program with an appropriate error-message, so there is no chance and no need to learn more about the nature of the error. However, if you use open as a condition (e.g. if (open(#1,"foo")) …) the outcome (success or failure) of the open-operation will determine, if the condition evaluates to true or false. If now such an operation fails, your program will not be terminated and you might want to learn the reason for failure. This reason will be returned by peek("error") (as a number) or by peek$("error") (as a string)

The table below shows the various error codes; the value returned by peek$("error") explains the nature of the error. Note, that the codes 10,11 and 12 refer to the seek-command.

- +

Table 7.1. Error codes

@@ -10801,7 +10831,7 @@
- +

Example

@@ -10816,7 +10846,7 @@
               
- +

See also

peek$, poke, open

@@ -10838,7 +10868,7 @@
- +

Description

The peek$-function has many different and unrelated uses. It is a kind of grab-bag for retrieving all kinds of string information, internal to yabasic; the exact nature of the strings returned be the peek$-function depends on the string passed as an argument.

peek$ always returns a string, however the closely related peek-function exists, which may be used to retrieve numerical information from among the internals of yabasic. Finally note, that some of the values which are retrieved with peek$ may even be changed, using the poke-function.

@@ -10966,7 +10996,7 @@
- +

Example

@@ -10984,7 +11014,7 @@
               
- +

See also

peek, poke, open

@@ -11006,12 +11036,12 @@
- +

Description

pi is 3.14159265359 (well at least for yabasic); do not try to assign to pi (e.g. pi=22/7) this would not only be mathematically dubious, but would also result in a syntax error.

- +

Example

@@ -11023,7 +11053,7 @@
               
- +

See also

@@ -11052,7 +11082,7 @@

- +

Description

The poke-command may be used to change details of yabasic's behaviour. Like the related function peek, poke does many different things, depending on the arguments supplied.

Here are the different things you can do with poke:

@@ -11142,7 +11172,7 @@
- +

Example

@@ -11156,7 +11186,7 @@
               
- +

See also

peek, peek$

@@ -11188,7 +11218,7 @@
- +

Description

The print-statement outputs strings or characters, either to your terminal (also known as console) or to an open file.

To understand all those uses of the print-statement, let's go through the various lines in the synopsis above:

@@ -11286,7 +11316,7 @@
- +

Example

@@ -11306,7 +11336,7 @@
               
- +

See also

at, print color, input, clear screen, using, ;

@@ -11329,7 +11359,7 @@
- +

Description

Not a separate command, but part of the print-command; may be included just after print and can only be issued after clear screen has been executed.

color() takes one or two string-arguments, specifying the color of the text and (optionally) the background.

@@ -11338,7 +11368,7 @@

Note, that color() can be written as colour() too.

- +

Example

@@ -11355,7 +11385,7 @@
               
- +

See also

print, clear screen, at

@@ -11378,7 +11408,7 @@
- +

See also

@@ -11410,13 +11440,13 @@

- +

Description

The putbit-command is the counterpart of the getbit$-function. putbit requires a string as returned by the getbit-function. Such a string contains a rectangle from the graphic window; the putbit-function puts such a rectangular region back into the graphic-window.

Note, that the putbit-command currently accepts a fourth argument. However only the string value "or" is supported here. The effect is, that only those pixel, which are set in the string will be set in the graphic window. Those pixels, which are not set in the string, will not change in the window (as opposed to being cleared).

- +

Example

@@ -11494,7 +11524,7 @@
               

If you omit this argument, the default transparent applies.

- +

See also

getbit$, open window

@@ -11520,13 +11550,13 @@
- +

Description

The putscreen-command is the counterpart of the getscreen$-function. putscreen requires a string as returned by the getscreen-function. Such a string contains a rectangular detail from the terminal; the putscreen-function puts such a region back into the terminal-window.

Note, that clear screen must have been called before.

- +

Example

@@ -11545,7 +11575,7 @@
               
- +

See also

getscreen$, clear screen

@@ -11656,13 +11686,13 @@
- +

Description

The ran-function returns a random number. If no argument is given, the number returned is in the range from 0 to 1; where only 0 is a possible value; 1 will never be returned. If an argument is supplied, the number returned will be in the range from 0 up to this argument, whereas this argument itself is not a possible return value. Regardless of the range, ran is guaranteed to have exactly 2**30 different return values.

If you call ran multiple times during your program, the sequence of random numbers will be different each time you invoke your program; however, if, e.g. for testing you prefer to always have the same sequence of random numbers you may issue poke "random_seed",123.

- +

Example

@@ -11685,7 +11715,7 @@
               
- +

See also

@@ -11713,12 +11743,12 @@

- +

Description

The read-statement retrieves literal data, which is stored within data-statements elsewhere in your program.

- +

Example

@@ -11738,7 +11768,7 @@
               
- +

See also

data, restore @@ -11769,12 +11799,12 @@

- +

Description

The rectangle-command (also known as box or rect, for short) draws a rectangle; it accepts four parameters: The x- and y-coordinates of two facing corners of the rectangle. With the optional clauses clear and fill (which may appear together and in any sequence) the rectangle can be cleared and filled respectively.

- +

Example

@@ -11796,7 +11826,7 @@
               
@@ -11818,7 +11848,7 @@
- +

Description

The redim-command does exactly the same as the dim-command; it is just a synonym. redim has been around in older versions of basic (not even yabasic) for many years; therefore it is supported in yabasic for compatibility reasons.

Please refer to the entry for the dim-command for further information.

@@ -11848,7 +11878,7 @@
- +

Description

rem introduces a comment (like # or //), that extends up to the end of the line.

Those comments do not even need a colon @@ -11857,7 +11887,7 @@

Finally note, that a comment introduced with '#' may have a special meaning under unix; see the entry for # for details.

- +

Example

@@ -11871,7 +11901,7 @@
               
- +

See also

#, //

@@ -11895,12 +11925,12 @@
- +

Description

The repeat-loop executes all the statements up to the final until-keyword over and over. The loop is executed as long as the condition, which is specified with the until-clause, becomes true. By construction, the statements within the loop are executed at least once.

- +

Example

@@ -11918,7 +11948,7 @@
               
- +

See also

until, break, while, do

@@ -11946,13 +11976,13 @@
- +

Description

The restore-command may be used to reset the reading of data-statements, so that the next read-statement will read data from the first data-statement.

You may specify a label with the restore-command; in that case, the next read-statement will read data starting at the given label. If the label is omitted, reading data will begin with the first data-statement within your program.

- +

Example

@@ -11977,7 +12007,7 @@
               
- +

See also

read, data, label

@@ -12008,14 +12038,14 @@
- +

Description

The return-statement serves two different (albeit somewhat related) purposes. The probably more important use of return is to return control from within a subroutine to the place in your program, where the subroutine has been called. If the subroutine is declared to return a value, the return-statement might be accompanied by a string or number, which constitutes the return value of the subroutine.

However, even if the subroutine should return a value, the return-statement need not carry a value; in that case the subroutine will return 0 or the empty string (depending on the type of the subroutine). Moreover, feel free to place multiple return-statements within your subroutine; it's a nice way of controlling the flow of execution.

The second (but historically first) use of return is to return to the position, where a prior gosub has left off. In that case return may not carry a value.

- +

Example

@@ -12041,7 +12071,7 @@
               
- +

See also

sub, gosub

@@ -12065,12 +12095,12 @@
- +

Description

reverse may be used to print text in reverse. reverse is not a separate command, but part of the print-command; it may be included just after the print and can only be issued once that clear screen has been issued.

- +

Example

@@ -12100,7 +12130,7 @@
               
- +

See also

at, print color, print, clear screen

@@ -12123,13 +12153,13 @@
- +

Description

The right$-function requires two arguments (a string and a number) and returns the part from the right end of the string, whose length is specified by its second argument. So, right$ simply returns the requested number of chars from the right end of the given string.

Note, that the right$-function can be assigned to, i.e. it may appear on the left hand side of an assignment. In this way it is possible to change a part of the variable used within the right$-function. Note, that that way the length of the string cannot be changed, i.e. characters might be overwritten, but not added. For an example see below.

- +

Example

@@ -12155,7 +12185,7 @@
               
- +

See also

right$ and mid$

@@ -12178,13 +12208,13 @@
- +

Description

The rinstr-function accepts two string-arguments and tries to find the second within the first. However, unlike the instr, the rinstr-function finds the rightmost (or last) occurrence of the string; whereas the instr-function finds the leftmost (or first) occurrence. In any case however, the position is counted from the left.

If you supply a third, numeric argument to the rinstr-function, it will be used as a starting point for the search. Therefore rinstr("abcdeabcdeabcde","e",8) will return 5, because the search for an "e" starts at position 8 and finds the first one at position 5.

- +

Example

@@ -12200,7 +12230,7 @@
               
- +

See also

@@ -12226,12 +12256,12 @@

- +

Description

The found-function returns the nearest integer (e.g. 3.0 for an argument of 2.6). An argument with a fractional part of 0.5 (e.g. 2.5) represents an edge case, as such an argument has the same distance to two numbers, 3.0 and 2.0 in the example; this ambiguity is resolved by rounding away from zero and returning 3.0. By the same rule round(-2.5) returns -3.0; so you see, that round(x) always equals round(-x).

- +

Example

@@ -12243,7 +12273,7 @@
               
- +

See also

ceil, floor, int, frac

@@ -12265,12 +12295,12 @@
- +

Description

The rtrim$-function removes all whitespace from the right end of a string and returns the result.

- +

Example

@@ -12294,7 +12324,7 @@
               
- +

See also

ltrim$, trim$

@@ -12428,12 +12458,12 @@
- +

Description

The keyword screen appears only within the sequence clear screen; please see there for a description.

- +

See also

@@ -12463,7 +12493,7 @@

- +

Description

The seek-command changes the position, where the next input (or peek) statement will read from an open file. Usually files are read from the beginning to the end sequentially; however sometimes you may want to depart from this simple scheme. This can be done with the seek-command, allowing you to change the position, where the next piece of data will be read from the file.

seek accepts two or three arguments: The first one is the number of an already open file. The second one is the position where the next read from the file will start. The third argument is optional and specifies the the point from where the position (the second argument) will count. It can be one of:

@@ -12497,7 +12527,7 @@
- +

Example

@@ -12522,7 +12552,7 @@
               
- +

See also

tell, open, print, peek

@@ -12544,12 +12574,12 @@
- +

Description

Return +1, -1 or 0, if the single argument is positive, negative or zero.

- +

Example

@@ -12564,7 +12594,7 @@
               
- +

See also

abs, int, frac

@@ -12586,12 +12616,12 @@
- +

Description

The sin-function expects an angle (in radians, not degrees) and returns its sine.

- +

Example

@@ -12606,7 +12636,7 @@
               
- +

See also

asin, cos

@@ -12628,13 +12658,13 @@
- +

Description

The shl-function (shl stands for shift left) treats its first argument as a binary number and shifts it to the left as specified by its second argument, filling up the gaps with zeroes. So bin$(shl(0b11011,4)) returns 110110000 (the example uses bin$ and a number with base 2).

Please note: as the argument of the function is converted to a 32-bit integer, all results are also confined to this range.

- +

Example

@@ -12647,7 +12677,7 @@
               
- +

See also

and, or, eor, bitnot, shr

@@ -12669,13 +12699,13 @@
- +

Description

The shr-function (shr stands for shift right) treats its first argument as a binary number and shifts it to the right as specified by its second argument; the rightmost binary digits are discarded during this operation. So bin$(shr(0b1101100,2)) returns 11011 (the example uses bin$ and a number with base 2).

Please note: as the argument of the function is converted to a 32-bit integer, all results are also confined to this range.

- +

Example

@@ -12688,7 +12718,7 @@
               
- +

See also

and, or, eor, bitnot, shl

@@ -12710,7 +12740,7 @@
- +

Description

The sleep-command has many different names: You may write pause, sleep or wait interchangeably; whatever you write, yabasic will always do exactly the same.

Therefore you should refer to the entry for the pause-function for further information.

@@ -12736,7 +12766,7 @@
- +

Description

The split-function requires a string (containing the text to be split), a reference to a string-array (which will receive the resulting strings, i.e. the tokens) and an optional string (with a set of characters, at which to split, i.e. the delimiters).

The split-function regards its first argument (a string) as a list of tokens separated by delimiters and it will store the list of tokens within the array-reference you have supplied. Note, that the array, which is passed as a reference (w$() in the synopsis), will be resized accordingly, so that you don't have to figure out the number of tokens in advance. The element at position zero (i.e. w$(0)) will not be used.

@@ -12747,7 +12777,7 @@

Please see the examples below for some hints on the exact behaviour of the split-function and how it differs from the token-function:

- +

Example

@@ -12813,7 +12843,7 @@
               
- +

See also

@@ -12839,13 +12869,13 @@

- +

Description

The sqr-function computes the square of its numerical argument (i.e. it multiplies its argument with itself).

Please note, that other dialects of basic use sqr as the square root, rather than the square; this needs to be checked especially when porting programs from other Versions of basic.

- +

Example

@@ -12857,7 +12887,7 @@
               
- +

See also

sqrt, **, ^

@@ -12877,12 +12907,12 @@
to be written
- +

Description

The sqrt-function computes the square root of its numerical argument.

- +

Example

@@ -12894,7 +12924,7 @@
               
- +

See also

sqr, **, ^

@@ -12922,12 +12952,12 @@
- +

Description

The static keyword can be used within subroutines to mark variables as static. This has two effects: First, the variable is local to the subroutine, i.e. its value is not know outside the subroutine (this is the effect of the local keyword). Second, the static-keyword arranges things, so that the variable keeps its value between invocations of the subroutine (this is different from the local-keyword).

- +

Example

@@ -12956,7 +12986,7 @@
               
- +

See also

sub, local

@@ -12980,13 +13010,13 @@
- +

Description

Specify, by which amount the loop-variable of a for-loop will be incremented at each step.

The step (as well as the lower and upper bound) are computed anew in each step; this is not common, but possible, as the example below demonstrates.

- +

Example

@@ -13000,7 +13030,7 @@
               
- +

See also

@@ -13022,21 +13052,21 @@

Synopsis

-a$=str$(a)
+a$=str$(a)	    
 b$=str$(x,"##.###")
-b$=str$(x,"###,###.##")
 b$=str$(x,"###,###.##","_.")
+c$=str$(x,"%g")
 
- +

Description

The str$-function accepts a numeric argument and returns it as a string.

Note: As a special and trivial case str$ also accepts a single string-argument, which it just returns unchanged; this can be useful e.g. when used with eval$, see the example there for an application.

For the common case of converting a number to a string, the process can be controlled with an optional third argument (the format argument). See the following table of examples to learn about valid values of this argument. Note, that those examples fall in one of two categories: C-style and basic-style; the first 4 examples in the table below are C-style, the rest of the examples are basic-style. For more information on the C-style formats, you may refer to your favorite documentation on the C programming language. The basic-style formats are much simpler, they just depict the desired output, marking digits with '#'; groups of (usually three) digits may be separated with colons (','), the decimal dot must be marked by a literal dot ('.'). Moreover these characters (colons and dot) may be replaced by other characters to satisfy the needs of non-english (e.g. german) languages; see the examples below.

Note, that for clarity, each space in the result has been replaced by the letter 'x', because it would be hard to figure out, how many spaces are produced exactly otherwise.

- +

Table 7.2. Examples for the format argument

@@ -13162,7 +13192,7 @@
- +

Example

@@ -13179,7 +13209,7 @@
               
- +

See also

print, using

@@ -13209,7 +13239,7 @@
- +

Description

The sub-keyword starts the definition of a user defined subroutine. With user defined subroutines you are able to somewhat extend yabasic with your own commands or functions. A subroutine accepts arguments (numbers or strings) and returns a number or a string (however, you are not required to assign the value returned to a variable).

The name of the subroutine follows after the keyword sub. If the name (in the synopsis: foo) ends on a '$', the subroutine should return a string (with the return-statement), otherwise a number.

@@ -13229,7 +13259,7 @@
- +

Example

@@ -13251,7 +13281,7 @@
               
- +

See also

local, static, peek

@@ -13284,14 +13314,14 @@
- +

Description

The switch-statement selects one of many codepaths depending on a numerical or string expression. I.e. it takes an expression (either numeric or string) and compares it with a series of values, each wrapped within a case-clause. If the expression equals the value given in a case-clause, the subsequent statements are executed.

The default-clause allows one to specify commands, which should be executed, if none of case-clauses matches.

Note, that many case-clauses might be clustered (e.g. case "a":case "b":case "c"). Or put another way: You need a break-statement at the end of a case-branch, if you do not want to run into the next case.

- +

Example

@@ -13311,7 +13341,7 @@
               
- +

See also

switch, case, break

@@ -13334,12 +13364,12 @@
- +

Description

The system-command accepts a single string argument, which specifies a command to be executed. The function will return the exitcode of the command; its output (if any) will be lost.

- +

Example

@@ -13355,7 +13385,7 @@
               
- +

See also

@@ -13381,12 +13411,12 @@

- +

Description

The system$-command accepts a single string argument, specifying a command, that can be found and executed by your operating system. It returns the output of this command as one big string.

- +

Example

@@ -13399,7 +13429,7 @@
               
- +

See also

system, chomp

@@ -13491,12 +13521,12 @@
- +

Description

The tan-function computes the tangent of its arguments (which should be specified in radians).

- +

Example

@@ -13508,7 +13538,7 @@
               
- +

See also

atan, sin

@@ -13532,12 +13562,12 @@
- +

Description

The tell-function requires the number of an open file as an argument. It returns the position (counted in bytes, starting from the beginning of the file) where the next read will start.

- +

Example

@@ -13554,7 +13584,7 @@
               
- +

See also

tell, open

@@ -13579,13 +13609,13 @@
- +

Description

The text-commands displays a text-string (the third argument) at the given position (the first two arguments) within an already opened window. The font to be used can be optionally specified as either the fourth or fifth argument ("font" in the example above). A font specified this way will also be used for any subsequent text-commands, as long as they do not specify a font themselves.

The fourth or fifth optional argument ("lb" in the example above) can be used to specify the alignment of the text with respect to the specified position. This argument is always two characters long: The first character specifies the horizontal alignment and can be either l, r or c, which stand for left, right or center. The second character specifies the vertical alignment and can be one of t, b or c, which stand for top, bottom or center respectively. If you omit this alignment argument, the default "lb" applies; however this default may be changed with poke "textalign","xx"

- +

Example

@@ -13605,7 +13635,7 @@
               
- +

See also

open window, peek, poke

@@ -13629,12 +13659,12 @@
- +

Description

The keyword then is part of the if-statement; please see there for further explanations. However, not every if-statement requires the keyword then: If the keyword then is present, the if-clause may extend over more than one line, and the keyword endif is required to end it. If the keyword then is not present, the if-statement extends up to the end of the line, and any endif would be an error.

- +

Example

@@ -13650,7 +13680,7 @@
               
- +

See also

@@ -13677,7 +13707,7 @@

- +

Description

The time$ function returns the current time in four fields separated by hyphens '-'. The fields are:

@@ -13703,7 +13733,7 @@

At the time of writing this documentation, time$ returns 22-58-53-0. Note, that the first three of the four fields returned by time$ have a fixed width; therefore it is easy to extract some fields with the usual string-functions mid$ (and others).

- +

Example

@@ -13717,7 +13747,7 @@
               
- +

See also

@@ -13747,7 +13777,7 @@

- +

Description

The to-keyword serves two purposes (which are not related at all):

@@ -13762,12 +13792,12 @@
- +

Example

Please see the command listed under "See also" for examples.

- +

See also

for, line, rectangle

@@ -13792,7 +13822,7 @@
- +

Description

The token-function accepts a string (containing the text to be split), a reference to a string-array (which will receive the resulting strings, i.e. the tokens) and an optional string (with a set of characters, at which to split, i.e. the delimiters).

The token-function regards its first argument as a list of tokens separated by delimiters and it will store the list of tokens within the array-reference that has been supplied. Note, that the array, which is passed as a reference (w$() in the synopsis), will be resized accordingly, so that you don't have to figure out the number of tokens in advance. The element at position zero (i.e. w$(0)) will not be used.

@@ -13803,7 +13833,7 @@

Please see the examples below for some hints on the exact behaviour of the token-function and how it differs from the split-function:

- +

Example

 print "This program will help you to understand, how the"
@@ -13865,7 +13895,7 @@
 

- +

See also

@@ -13894,12 +13924,12 @@

- +

Description

The triangle-command draws a triangle; it requires 6 parameters: The x- and y-coordinates of the three points making up the triangle. With the optional keywords clear and fill (which may appear both and in any sequence) the triangle can be cleared and filled respectively.

- +

Example

@@ -13917,7 +13947,7 @@
               
@@ -13939,12 +13969,12 @@
- +

Description

The trim$-function removes all whitespace from the left and from the right end of a string and returns the result. Calling trim$ is equivalent to calling rtrim$(ltrim$()).

- +

Example

@@ -13958,7 +13988,7 @@
               
- +

See also

ltrim$, rtrim$

@@ -13980,13 +14010,13 @@
- +

Description

The constant true can be assigned to variables which will later appear in conditions (e.g. an if-statement.

true may also be written as TRUE or even TrUe.

- +

Example

@@ -14001,7 +14031,7 @@
               
- +

See also

@@ -14057,12 +14087,12 @@

- +

Description

The until-keyword ends a loop, which has been introduced by the repeat-keyword. until requires an expression (see here for details) as an argument; the loop will continue until this condition evaluates to true.

- +

Example

@@ -14079,7 +14109,7 @@
               
- +

See also

@@ -14105,12 +14135,12 @@

- +

Description

The upper$-function accepts a single string argument and converts it to all upper case.

- +

Example

@@ -14129,7 +14159,7 @@
               
- +

See also

@@ -14156,13 +14186,13 @@

- +

Description

The using-keyword may appear as part of the print-statement and specifies the format (e.g. the number of digits before and after the decimal dot), which should be used to print the number.

The possible values for the format argument ("##.###" in the synopsis above) are described within the entry for the str$-function; especially the second line in the synopsis (print a using("##.###",",.")) will become clear after referring to str$. In fact the using clause is closely related to the str$-function; the former can always be rewritten using the latter; i.e. print foo using bar$ is always equivalent to print str$(foo,bar$). Therefore you should check out str$ to learn more.

- +

Example

@@ -14174,7 +14204,7 @@
               
- +

See also

print, str$

@@ -14212,14 +14242,14 @@
- +

Description

The val-function checks, if the start of its string argument forms a floating point number and then returns this number. The string therefore has to start with digits (only whitespace in front is allowed), otherwise the val-function returns zero.

- +

Example

@@ -14234,7 +14264,7 @@
               
- +

See also

@@ -14294,7 +14324,7 @@

- +

Description

The wait-command has many different names: You may write pause, sleep or wait interchangeably; whatever you write, yabasic will always do exactly the same.

Therefore you should refer to the entry for the pause-function for further information.

@@ -14319,13 +14349,13 @@
- +

Description

The wend-keyword marks the end of a while-loop. Please see the while-keyword for more details.

wend can be written as end while or even end-while.

- +

Example

@@ -14341,7 +14371,7 @@
               
- +

See also

while (which is just the following entry).

@@ -14365,14 +14395,14 @@
- +

Description

The while-keyword starts a while-loop, i.e. a loop that is executed as long as the condition (which is specified after the keyword while) evaluates to true.

Note, that the body of such a while-loop will not be executed at all, if the condition following the while-keyword is not true initially.

If you want to leave the loop prematurely, you may use the break-statement.

- +

Example

@@ -14386,7 +14416,7 @@
               
- +

See also

until, break, wend, do

@@ -14409,19 +14439,19 @@
- +

Description

The origin-command applies to graphic windows and moves the origin of the coordinate system to one of nine point within the window. The normal position of the origin is in the upper left corner of the window; however in some cases this is inconvenient and moving the origin may save you from subtracting a constant offset from all of your coordinates.

However, you may not move the origin to an arbitrary position; in horizontal position there are only three positions: left, center and right, which are decoded by the letters l, c and r. In vertical position the allowed positions are top, center and bottom; encoded by the letters t, c and b. Taking the letters together, you arrive at a string, which might be passed as an argument to the command; e.g. "cc" or "rt".

-

Example

100,100 +

Example

100,100
 open window 200,200
 window origin "cc"
 circle 0,0,60
           

This example draws a circle, centered at the center of the window.

- +

See also

@@ -14463,13 +14493,13 @@

- +

Description

The xor-function computes the bitwise exclusive or of its two numeric arguments. To understand the result, both arguments should be viewed as binary numbers (i.e. a sequence of digits 0 and 1); a bit of the result will then be 1, if exactly one argument has a 1 and the other has a 0 at this position in their binary representation.

Note, that both arguments are silently converted to integer values and that negative numbers have their own binary representation and may lead to unexpected results when passed to and.

- +

Example

@@ -14480,7 +14510,7 @@
               
- +

See also

and, or, eor, bitnot

@@ -14490,7 +14520,7 @@
-

Special characters

+

Symbols and Special characters

@@ -14532,6 +14562,12 @@ — raise its first argument to the power of its second +
+ + < <= > >= = == <> != + + — Compare numbers or strings +
@@ -14549,7 +14585,7 @@
- +

Description

The hash ('#') has two totally unrelated uses:

@@ -14565,7 +14601,7 @@

'#' as a comment is common in most scripting languages and has a special use under Unix: If the very first line of any Unix-program begins with the character sequence '#!' ("she-bang", no spaces allowed), the rest of the line is taken as the program that should be used to execute the script. I.e. if your yabasic-program starts with '#!/usr/local/bin/yabasic', the program /usr/local/bin/yabasic will be invoked to execute the rest of the program. As a remark for windows-users: This mechanism ensures, that yabasic will be invoked to execute your program; the ending of the file (e.g. .yab) will be ignored by Unix.

- +

Example

@@ -14577,7 +14613,7 @@
               
- +

See also

input, print, peek or eof, //, rem

@@ -14599,12 +14635,12 @@
- +

Description

The double-slash ('//') is (besides REM and '#') the third way to start a comment. '//' is the latest and greatest in the field of commenting and allows yabasic to catch up with such cool languages like C++ and Java.

- +

Example

@@ -14615,7 +14651,7 @@
               
- +

See also

#, rem

@@ -14639,12 +14675,12 @@
- +

Description

As '@' is simply a synonym for at, please see at for further information.

- +

See also

@@ -14670,13 +14706,13 @@

- +

Description

The colon (':') separates multiple commands on a single line.

The colon and the newline-character have mostly the same effect, only that the latter, well, starts a new line too. The only other difference is their effect within the (so-called) short if, which is an if-statement without the keyword then. Please see the entry for if for more details.

- +

Example

@@ -14686,7 +14722,7 @@
               
- +

See also

@@ -14712,13 +14748,13 @@

- +

Description

The semicolon (';') may only appear at the last position within a print-statement. It suppresses the implicit newline, which yabasic normally adds after each print-statement.

Put another way: Normally the output of each print-statement appears on a line by itself. If you rather want the output of many print-statements to appear on a single line, you should end the print-statement with a semicolon.

- +

Example

@@ -14728,7 +14764,7 @@
               
- +

See also

@@ -14755,7 +14791,7 @@

- +

Description

** (or ^, which is an exact synonym), is the arithmetic operator of exponentiation; it requires one @@ -14764,7 +14800,7 @@ result. The result will only be computed if it yields a real number (as opposed to a complex number); this means, that the power can not be computed, if the first argument is negative and the second one is fractional. On the other hand, the second argument can be fractional, if the first one ist positive; this means, that ** may be used to compute arbitrary roots: e.g. x**0.5 computes the square root of x.

- +

Example

@@ -14773,7 +14809,7 @@
               
- +

See also

@@ -14782,6 +14818,22 @@

+
+
+
+
+ +
+
+

Name

+

< <= > >= = == <> != — Compare numbers or strings

+
+
+ +

See also

+

Comparing strings or numbers for some background.

+
+
@@ -14796,17 +14848,17 @@
- A very simple program + A very simple program
- Graphics with bitmaps + Graphics with bitmaps
- A menu to choose from + A menu to choose from
@@ -14815,7 +14867,7 @@
-

A very simple program

+

A very simple program

@@ -14833,7 +14885,7 @@
-

Graphics with bitmaps

+

Graphics with bitmaps

@@ -14873,7 +14925,7 @@
-

A menu to choose from

+

A menu to choose from