Changeset 66f8528


Ignore:
Timestamp:
Dec 15, 2016, 5:16:42 PM (9 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
43385ca, f7ff3fb
Parents:
5802a4f (diff), 596f987b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into tuples

Conflicts:

src/ResolvExpr/CommonType.cc
src/tests/.expect/32/extension.txt
src/tests/.expect/32/gccExtensions.txt
src/tests/.expect/64/declarationSpecifier.txt
src/tests/.expect/64/extension.txt
src/tests/.expect/64/gccExtensions.txt
src/tests/.expect/castError.txt
src/tests/Makefile.am

Files:
33 added
70 edited
7 moved

Legend:

Unmodified
Added
Removed
  • .gitignore

    r5802a4f r66f8528  
    2929src/driver/cfa-cpp
    3030
    31 src/libcfa/builtins.cf
    32 src/libcfa/extras.cf
     31src/prelude/builtins.cf
     32src/prelude/extras.cf
    3333src/libcfa/libcfa-prelude.c
    3434
  • Jenkinsfile

    r5802a4f r66f8528  
    2323                //escapes the sandbox
    2424                //Also specify the compiler by hand
    25                 sh "./configure CXX=${currentCC.cpp_cc} CXXFLAGS=${flags} CFAFLAGS=${flags} --with-backend-compiler=${currentCC.cfa_backend_cc} --prefix=${install_dir} --enable-silent-rules --quiet"
     25                sh "./configure CXX=${currentCC.cpp_cc} ${flags} --with-backend-compiler=${currentCC.cfa_backend_cc} --prefix=${install_dir} --enable-silent-rules --quiet"
    2626
    2727                //Compile the project
     
    3333                dir ('src/tests') {
    3434                        if (full_build) {
    35                                 sh 'make all-tests'
     35                                sh 'make all-tests debug=yes'
     36                                sh 'make all-tests debug=no'
    3637                        }
    3738                        else {
     
    166167
    167168                                bIsFullBuild = isFullBuild == 'true'
    168                                 architectureFlag = buildArchitecture == '64-bit' ? '-m64' : (buildArchitecture == '32-bit' ? '-m32' : 'ERROR')
     169                                architectureFlag = ''
     170                                if (buildArchitecture == '64-bit') {
     171                                        architectureFlag = '--host=x86_64 CXXFLAGS="-m64" CFAFLAGS="-m64"'
     172                                } else if (buildArchitecture == '32-bit'){
     173                                        architectureFlag = '--host=i386 CXXFLAGS="-m32" CFAFLAGS="-m32"'
     174                                } else {
     175                                        architectureFlag = 'ERROR'
     176                                }
    169177
    170178                                echo "FULL BUILD = ${isFullBuild}\nArchitecture = ${buildArchitecture} (flag ${architectureFlag})"
  • Makefile.am

    r5802a4f r66f8528  
    1111## Created On       : Sun May 31 22:14:18 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Fri Jun 17 14:56:18 2016
    14 ## Update Count     : 13
     13## Last Modified On : Wed Dec 14 14:20:48 2016
     14## Update Count     : 15
    1515###############################################################################
    1616
    1717AUTOMAKE_OPTIONS = foreign              # do not require all the GNU file names
    18 SUBDIRS = src/driver src src/libcfa     # order important, src before libcfa because cfa-cpp used to build prelude
     18SUBDIRS = src/driver src src/prelude src/libcfa # order important, src before prelude because cfa-cpp used to build prelude
    1919EXTRA_DIST = Docs                       # non-source files
    2020BACKEND_CC = @BACKEND_CC@               # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
  • Makefile.in

    r5802a4f r66f8528  
    3535PRE_UNINSTALL = :
    3636POST_UNINSTALL = :
     37build_triplet = @build@
     38host_triplet = @host@
    3739subdir = .
    3840DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
    3941        $(srcdir)/Makefile.in $(srcdir)/config.h.in \
    4042        $(top_srcdir)/configure INSTALL automake/compile \
    41         automake/depcomp automake/install-sh automake/missing \
    42         automake/ylwrap
     43        automake/config.guess automake/config.sub automake/depcomp \
     44        automake/install-sh automake/missing automake/ylwrap
    4345ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    4446am__aclocal_m4_deps = $(top_srcdir)/configure.ac
     
    124126BACKEND_CC = @BACKEND_CC@               # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
    125127CC = @CC@
     128CCAS = @CCAS@
     129CCASDEPMODE = @CCASDEPMODE@
     130CCASFLAGS = @CCASFLAGS@
    126131CCDEPMODE = @CCDEPMODE@
    127132CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    158163LIBS = @LIBS@
    159164LTLIBOBJS = @LTLIBOBJS@
     165MACHINE_TYPE = @MACHINE_TYPE@
    160166MAINT = @MAINT@
    161167MAKEINFO = @MAKEINFO@
     
    189195am__untar = @am__untar@
    190196bindir = @bindir@
     197build = @build@
    191198build_alias = @build_alias@
     199build_cpu = @build_cpu@
     200build_os = @build_os@
     201build_vendor = @build_vendor@
    192202builddir = @builddir@
    193203datadir = @datadir@
     
    196206dvidir = @dvidir@
    197207exec_prefix = @exec_prefix@
     208host = @host@
    198209host_alias = @host_alias@
     210host_cpu = @host_cpu@
     211host_os = @host_os@
     212host_vendor = @host_vendor@
    199213htmldir = @htmldir@
    200214includedir = @includedir@
     
    221235top_srcdir = @top_srcdir@
    222236AUTOMAKE_OPTIONS = foreign              # do not require all the GNU file names
    223 SUBDIRS = src/driver src src/libcfa     # order important, src before libcfa because cfa-cpp used to build prelude
     237SUBDIRS = src/driver src src/prelude src/libcfa # order important, src before prelude because cfa-cpp used to build prelude
    224238EXTRA_DIST = Docs                       # non-source files
    225239MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
  • aclocal.m4

    r5802a4f r66f8528  
    6060_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
    6161
     62# Figure out how to run the assembler.                      -*- Autoconf -*-
     63
     64# Copyright (C) 2001, 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
     65#
     66# This file is free software; the Free Software Foundation
     67# gives unlimited permission to copy and/or distribute it,
     68# with or without modifications, as long as this notice is preserved.
     69
     70# serial 5
     71
     72# AM_PROG_AS
     73# ----------
     74AC_DEFUN([AM_PROG_AS],
     75[# By default we simply use the C compiler to build assembly code.
     76AC_REQUIRE([AC_PROG_CC])
     77test "${CCAS+set}" = set || CCAS=$CC
     78test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
     79AC_ARG_VAR([CCAS],      [assembler compiler command (defaults to CC)])
     80AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
     81_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
     82])
     83
    6284# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
    6385
     
    113135# expand $ac_aux_dir to an absolute path
    114136am_aux_dir=`cd $ac_aux_dir && pwd`
     137])
     138
     139# AM_COND_IF                                            -*- Autoconf -*-
     140
     141# Copyright (C) 2008, 2010 Free Software Foundation, Inc.
     142#
     143# This file is free software; the Free Software Foundation
     144# gives unlimited permission to copy and/or distribute it,
     145# with or without modifications, as long as this notice is preserved.
     146
     147# serial 3
     148
     149# _AM_COND_IF
     150# _AM_COND_ELSE
     151# _AM_COND_ENDIF
     152# --------------
     153# These macros are only used for tracing.
     154m4_define([_AM_COND_IF])
     155m4_define([_AM_COND_ELSE])
     156m4_define([_AM_COND_ENDIF])
     157
     158
     159# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
     160# ---------------------------------------
     161# If the shell condition COND is true, execute IF-TRUE, otherwise execute
     162# IF-FALSE.  Allow automake to learn about conditional instantiating macros
     163# (the AC_CONFIG_FOOS).
     164AC_DEFUN([AM_COND_IF],
     165[m4_ifndef([_AM_COND_VALUE_$1],
     166           [m4_fatal([$0: no such condition "$1"])])dnl
     167_AM_COND_IF([$1])dnl
     168if test -z "$$1_TRUE"; then :
     169  m4_n([$2])[]dnl
     170m4_ifval([$3],
     171[_AM_COND_ELSE([$1])dnl
     172else
     173  $3
     174])dnl
     175_AM_COND_ENDIF([$1])dnl
     176fi[]dnl
    115177])
    116178
  • configure

    r5802a4f r66f8528  
    616616YFLAGS
    617617YACC
     618am__fastdepCCAS_FALSE
     619am__fastdepCCAS_TRUE
     620CCASDEPMODE
     621CCASFLAGS
     622CCAS
    618623am__fastdepCC_FALSE
    619624am__fastdepCC_TRUE
     
    639644CXXFLAGS
    640645CXX
     646MACHINE_TYPE
     647host_os
     648host_vendor
     649host_cpu
     650host
     651build_os
     652build_vendor
     653build_cpu
     654build
    641655CFA_FLAGS
    642656CFA_LIBDIR
     
    644658CFA_INCDIR
    645659CFA_PREFIX
     660BUILD_NO_LIB_FALSE
     661BUILD_NO_LIB_TRUE
     662BUILD_DEBUG_FALSE
     663BUILD_DEBUG_TRUE
     664BUILD_RELEASE_FALSE
     665BUILD_RELEASE_TRUE
    646666CFA_BACKEND_CC
    647667BACKEND_CC
     
    720740enable_maintainer_mode
    721741with_backend_compiler
     742enable_target_release
     743enable_target_debug
    722744enable_dependency_tracking
    723745'
     
    733755CC
    734756CFLAGS
     757CCAS
     758CCASFLAGS
    735759YACC
    736760YFLAGS
     
    13391363  --program-suffix=SUFFIX            append SUFFIX to installed program names
    13401364  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
     1365
     1366System types:
     1367  --build=BUILD     configure for building on BUILD [guessed]
     1368  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
    13411369_ACEOF
    13421370fi
     
    13561384  --disable-maintainer-mode  disable make rules and dependencies not useful
    13571385                          (and sometimes confusing) to the casual installer
     1386  --enable-target-release Build and install the release target
     1387  --enable-target-debug   Build and install the debug target
    13581388  --disable-dependency-tracking  speeds up one-time build
    13591389  --enable-dependency-tracking   do not reject slow dependency extractors
     
    13741404  CC          C compiler command
    13751405  CFLAGS      C compiler flags
     1406  CCAS        assembler compiler command (defaults to CC)
     1407  CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
    13761408  YACC        The `Yet Another Compiler Compiler' implementation to use.
    13771409              Defaults to the first program found out of: `bison -y', `byacc',
     
    30793111
    30803112
     3113
     3114
     3115# Check whether --enable-target-release was given.
     3116if test "${enable_target_release+set}" = set; then :
     3117  enableval=$enable_target_release;
     3118fi
     3119
     3120# Check whether --enable-target-debug was given.
     3121if test "${enable_target_debug+set}" = set; then :
     3122  enableval=$enable_target_debug;
     3123fi
     3124
     3125
     3126case "$enable_target_release" in
     3127        yes)
     3128                case "$enable_target_debug" in
     3129                        yes)
     3130                                build_release="yes"
     3131                                build_debug="yes"
     3132                                ;;
     3133                        no)
     3134                                build_release="yes"
     3135                                build_debug="no"
     3136                                ;;
     3137                        *)
     3138                                build_release="yes"
     3139                                build_debug="no"
     3140                                ;;
     3141                esac
     3142                ;;
     3143        no)
     3144                case "$enable_target_debug" in
     3145                        yes)
     3146                                build_release="no"
     3147                                build_debug="yes"
     3148                                ;;
     3149                        no)
     3150                                build_release="no"
     3151                                build_debug="no"
     3152                                ;;
     3153                        *)
     3154                                build_release="no"
     3155                                build_debug="yes"
     3156                                ;;
     3157                esac
     3158                ;;
     3159        *)
     3160                case "$enable_target_debug" in
     3161                        yes)
     3162                                build_release="no"
     3163                                build_debug="yes"
     3164                                ;;
     3165                        no)
     3166                                build_release="yes"
     3167                                build_debug="no"
     3168                                ;;
     3169                        *)
     3170                                build_release="yes"
     3171                                build_debug="yes"
     3172                                ;;
     3173                esac
     3174                ;;
     3175esac
     3176
     3177 if test "x$build_release" = "xyes"; then
     3178  BUILD_RELEASE_TRUE=
     3179  BUILD_RELEASE_FALSE='#'
     3180else
     3181  BUILD_RELEASE_TRUE='#'
     3182  BUILD_RELEASE_FALSE=
     3183fi
     3184
     3185 if test "x$build_debug" = "xyes"; then
     3186  BUILD_DEBUG_TRUE=
     3187  BUILD_DEBUG_FALSE='#'
     3188else
     3189  BUILD_DEBUG_TRUE='#'
     3190  BUILD_DEBUG_FALSE=
     3191fi
     3192
     3193 if test "x$build_release$build_debug" = "xnono"; then
     3194  BUILD_NO_LIB_TRUE=
     3195  BUILD_NO_LIB_FALSE='#'
     3196else
     3197  BUILD_NO_LIB_TRUE='#'
     3198  BUILD_NO_LIB_FALSE=
     3199fi
     3200
     3201
    30813202if test "x$prefix" = "xNONE"; then
    30823203        cfa_prefix=${ac_default_prefix}
     
    31373258
    31383259CFA_FLAGS=${CFAFLAGS}
     3260
     3261
     3262# Make sure we can run config.sub.
     3263$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
     3264  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
     3265
     3266{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
     3267$as_echo_n "checking build system type... " >&6; }
     3268if ${ac_cv_build+:} false; then :
     3269  $as_echo_n "(cached) " >&6
     3270else
     3271  ac_build_alias=$build_alias
     3272test "x$ac_build_alias" = x &&
     3273  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
     3274test "x$ac_build_alias" = x &&
     3275  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
     3276ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
     3277  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
     3278
     3279fi
     3280{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
     3281$as_echo "$ac_cv_build" >&6; }
     3282case $ac_cv_build in
     3283*-*-*) ;;
     3284*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
     3285esac
     3286build=$ac_cv_build
     3287ac_save_IFS=$IFS; IFS='-'
     3288set x $ac_cv_build
     3289shift
     3290build_cpu=$1
     3291build_vendor=$2
     3292shift; shift
     3293# Remember, the first character of IFS is used to create $*,
     3294# except with old shells:
     3295build_os=$*
     3296IFS=$ac_save_IFS
     3297case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
     3298
     3299
     3300{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
     3301$as_echo_n "checking host system type... " >&6; }
     3302if ${ac_cv_host+:} false; then :
     3303  $as_echo_n "(cached) " >&6
     3304else
     3305  if test "x$host_alias" = x; then
     3306  ac_cv_host=$ac_cv_build
     3307else
     3308  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
     3309    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
     3310fi
     3311
     3312fi
     3313{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
     3314$as_echo "$ac_cv_host" >&6; }
     3315case $ac_cv_host in
     3316*-*-*) ;;
     3317*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
     3318esac
     3319host=$ac_cv_host
     3320ac_save_IFS=$IFS; IFS='-'
     3321set x $ac_cv_host
     3322shift
     3323host_cpu=$1
     3324host_vendor=$2
     3325shift; shift
     3326# Remember, the first character of IFS is used to create $*,
     3327# except with old shells:
     3328host_os=$*
     3329IFS=$ac_save_IFS
     3330case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
     3331
     3332
     3333MACHINE_TYPE=$host_cpu
    31393334
    31403335
     
    45034698  am__fastdepCC_TRUE='#'
    45044699  am__fastdepCC_FALSE=
     4700fi
     4701
     4702
     4703# By default we simply use the C compiler to build assembly code.
     4704
     4705test "${CCAS+set}" = set || CCAS=$CC
     4706test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
     4707
     4708
     4709
     4710depcc="$CCAS"   am_compiler_list=
     4711
     4712{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
     4713$as_echo_n "checking dependency style of $depcc... " >&6; }
     4714if ${am_cv_CCAS_dependencies_compiler_type+:} false; then :
     4715  $as_echo_n "(cached) " >&6
     4716else
     4717  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
     4718  # We make a subdir and do the tests there.  Otherwise we can end up
     4719  # making bogus files that we don't know about and never remove.  For
     4720  # instance it was reported that on HP-UX the gcc test will end up
     4721  # making a dummy file named `D' -- because `-MD' means `put the output
     4722  # in D'.
     4723  rm -rf conftest.dir
     4724  mkdir conftest.dir
     4725  # Copy depcomp to subdir because otherwise we won't find it if we're
     4726  # using a relative directory.
     4727  cp "$am_depcomp" conftest.dir
     4728  cd conftest.dir
     4729  # We will build objects and dependencies in a subdirectory because
     4730  # it helps to detect inapplicable dependency modes.  For instance
     4731  # both Tru64's cc and ICC support -MD to output dependencies as a
     4732  # side effect of compilation, but ICC will put the dependencies in
     4733  # the current directory while Tru64 will put them in the object
     4734  # directory.
     4735  mkdir sub
     4736
     4737  am_cv_CCAS_dependencies_compiler_type=none
     4738  if test "$am_compiler_list" = ""; then
     4739     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
     4740  fi
     4741  am__universal=false
     4742
     4743
     4744  for depmode in $am_compiler_list; do
     4745    # Setup a source with many dependencies, because some compilers
     4746    # like to wrap large dependency lists on column 80 (with \), and
     4747    # we should not choose a depcomp mode which is confused by this.
     4748    #
     4749    # We need to recreate these files for each test, as the compiler may
     4750    # overwrite some of them when testing with obscure command lines.
     4751    # This happens at least with the AIX C compiler.
     4752    : > sub/conftest.c
     4753    for i in 1 2 3 4 5 6; do
     4754      echo '#include "conftst'$i'.h"' >> sub/conftest.c
     4755      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
     4756      # Solaris 8's {/usr,}/bin/sh.
     4757      touch sub/conftst$i.h
     4758    done
     4759    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
     4760
     4761    # We check with `-c' and `-o' for the sake of the "dashmstdout"
     4762    # mode.  It turns out that the SunPro C++ compiler does not properly
     4763    # handle `-M -o', and we need to detect this.  Also, some Intel
     4764    # versions had trouble with output in subdirs
     4765    am__obj=sub/conftest.${OBJEXT-o}
     4766    am__minus_obj="-o $am__obj"
     4767    case $depmode in
     4768    gcc)
     4769      # This depmode causes a compiler race in universal mode.
     4770      test "$am__universal" = false || continue
     4771      ;;
     4772    nosideeffect)
     4773      # after this tag, mechanisms are not by side-effect, so they'll
     4774      # only be used when explicitly requested
     4775      if test "x$enable_dependency_tracking" = xyes; then
     4776        continue
     4777      else
     4778        break
     4779      fi
     4780      ;;
     4781    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
     4782      # This compiler won't grok `-c -o', but also, the minuso test has
     4783      # not run yet.  These depmodes are late enough in the game, and
     4784      # so weak that their functioning should not be impacted.
     4785      am__obj=conftest.${OBJEXT-o}
     4786      am__minus_obj=
     4787      ;;
     4788    none) break ;;
     4789    esac
     4790    if depmode=$depmode \
     4791       source=sub/conftest.c object=$am__obj \
     4792       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
     4793       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
     4794         >/dev/null 2>conftest.err &&
     4795       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
     4796       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
     4797       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
     4798       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
     4799      # icc doesn't choke on unknown options, it will just issue warnings
     4800      # or remarks (even with -Werror).  So we grep stderr for any message
     4801      # that says an option was ignored or not supported.
     4802      # When given -MP, icc 7.0 and 7.1 complain thusly:
     4803      #   icc: Command line warning: ignoring option '-M'; no argument required
     4804      # The diagnosis changed in icc 8.0:
     4805      #   icc: Command line remark: option '-MP' not supported
     4806      if (grep 'ignoring option' conftest.err ||
     4807          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
     4808        am_cv_CCAS_dependencies_compiler_type=$depmode
     4809        break
     4810      fi
     4811    fi
     4812  done
     4813
     4814  cd ..
     4815  rm -rf conftest.dir
     4816else
     4817  am_cv_CCAS_dependencies_compiler_type=none
     4818fi
     4819
     4820fi
     4821{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5
     4822$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; }
     4823CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type
     4824
     4825 if
     4826  test "x$enable_dependency_tracking" != xno \
     4827  && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then
     4828  am__fastdepCCAS_TRUE=
     4829  am__fastdepCCAS_FALSE='#'
     4830else
     4831  am__fastdepCCAS_TRUE='#'
     4832  am__fastdepCCAS_FALSE=
    45054833fi
    45064834
     
    58566184
    58576185
    5858 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/libcfa/Makefile"
     6186ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/prelude/Makefile src/libcfa/Makefile"
    58596187
    58606188
     
    59806308Usually this means the macro was only invoked conditionally." "$LINENO" 5
    59816309fi
     6310if test -z "${BUILD_RELEASE_TRUE}" && test -z "${BUILD_RELEASE_FALSE}"; then
     6311  as_fn_error $? "conditional \"BUILD_RELEASE\" was never defined.
     6312Usually this means the macro was only invoked conditionally." "$LINENO" 5
     6313fi
     6314if test -z "${BUILD_DEBUG_TRUE}" && test -z "${BUILD_DEBUG_FALSE}"; then
     6315  as_fn_error $? "conditional \"BUILD_DEBUG\" was never defined.
     6316Usually this means the macro was only invoked conditionally." "$LINENO" 5
     6317fi
     6318if test -z "${BUILD_NO_LIB_TRUE}" && test -z "${BUILD_NO_LIB_FALSE}"; then
     6319  as_fn_error $? "conditional \"BUILD_NO_LIB\" was never defined.
     6320Usually this means the macro was only invoked conditionally." "$LINENO" 5
     6321fi
    59826322if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
    59836323  as_fn_error $? "conditional \"AMDEP\" was never defined.
     
    59906330if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
    59916331  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
     6332Usually this means the macro was only invoked conditionally." "$LINENO" 5
     6333fi
     6334if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then
     6335  as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
    59926336Usually this means the macro was only invoked conditionally." "$LINENO" 5
    59936337fi
     
    66036947    "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;;
    66046948    "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
     6949    "src/prelude/Makefile") CONFIG_FILES="$CONFIG_FILES src/prelude/Makefile" ;;
    66056950    "src/libcfa/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcfa/Makefile" ;;
    66066951
     
    73337678
    73347679
     7680if test -z "$BUILD_RELEASE_TRUE"; then :
     7681  if test -z "$BUILD_DEBUG_TRUE"; then :
     7682  { $as_echo "$as_me:${as_lineno-$LINENO}: Building libcfa for target: release & debug" >&5
     7683$as_echo "$as_me: Building libcfa for target: release & debug" >&6;}
     7684else
     7685  { $as_echo "$as_me:${as_lineno-$LINENO}: Building libcfa for target: release" >&5
     7686$as_echo "$as_me: Building libcfa for target: release" >&6;}
     7687fi
     7688else
     7689  if test -z "$BUILD_DEBUG_TRUE"; then :
     7690  { $as_echo "$as_me:${as_lineno-$LINENO}: Building libcfa for target: debug" >&5
     7691$as_echo "$as_me: Building libcfa for target: debug" >&6;}
     7692else
     7693  { $as_echo "$as_me:${as_lineno-$LINENO}: Running cfa without libcfa" >&5
     7694$as_echo "$as_me: Running cfa without libcfa" >&6;}
     7695fi
     7696fi
     7697
    73357698# Final text
    73367699{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Cforall configuraton completed. Type \"make -j 8 install\"." >&5
  • configure.ac

    r5802a4f r66f8528  
    5353AC_SUBST(CFA_BACKEND_CC)
    5454
     55
     56
     57AC_ARG_ENABLE(target-release, AS_HELP_STRING([--enable-target-release], [Build and install the release target]))
     58AC_ARG_ENABLE(target-debug, AS_HELP_STRING([--enable-target-debug], [Build and install the debug target]))
     59
     60case "$enable_target_release" in
     61        yes)
     62                case "$enable_target_debug" in
     63                        yes)
     64                                build_release="yes"
     65                                build_debug="yes"
     66                                ;;
     67                        no)
     68                                build_release="yes"
     69                                build_debug="no"
     70                                ;;
     71                        *)
     72                                build_release="yes"
     73                                build_debug="no"
     74                                ;;
     75                esac
     76                ;;
     77        no)
     78                case "$enable_target_debug" in
     79                        yes)
     80                                build_release="no"
     81                                build_debug="yes"
     82                                ;;
     83                        no)
     84                                build_release="no"
     85                                build_debug="no"
     86                                ;;
     87                        *)
     88                                build_release="no"
     89                                build_debug="yes"
     90                                ;;
     91                esac
     92                ;;
     93        *)
     94                case "$enable_target_debug" in
     95                        yes)
     96                                build_release="no"
     97                                build_debug="yes"
     98                                ;;
     99                        no)
     100                                build_release="yes"
     101                                build_debug="no"
     102                                ;;
     103                        *)
     104                                build_release="yes"
     105                                build_debug="yes"
     106                                ;;
     107                esac
     108                ;;
     109esac
     110
     111AM_CONDITIONAL([BUILD_RELEASE], [test "x$build_release" = "xyes"])
     112AM_CONDITIONAL([BUILD_DEBUG], [test "x$build_debug" = "xyes"])
     113AM_CONDITIONAL([BUILD_NO_LIB], [test "x$build_release$build_debug" = "xnono"])
     114
    55115if test "x$prefix" = "xNONE"; then
    56116        cfa_prefix=${ac_default_prefix}
     
    87147AC_DEFINE_UNQUOTED(CFA_FLAGS, "${CFAFLAGS}", [compilation flags for cfa libraries and test programs.])
    88148AC_SUBST(CFA_FLAGS, ${CFAFLAGS})
     149
     150AC_CANONICAL_HOST
     151AC_SUBST([MACHINE_TYPE],[$host_cpu])
    89152
    90153# Checks for programs.
    91154AC_PROG_CXX
    92155AC_PROG_CC
     156AM_PROG_AS
    93157AM_PROG_CC_C_O  # deprecated
    94158# These are often not installed and people miss seeing the "no", so stop the configure.
     
    128192        src/examples/Makefile
    129193        src/tests/Makefile
     194        src/prelude/Makefile
    130195        src/libcfa/Makefile
    131196        ])
     
    133198AC_OUTPUT
    134199
     200AM_COND_IF([BUILD_RELEASE],
     201        [AM_COND_IF([BUILD_DEBUG],
     202                [AC_MSG_NOTICE(Building libcfa for target: release & debug)],
     203                [AC_MSG_NOTICE(Building libcfa for target: release)])],
     204        [AM_COND_IF([BUILD_DEBUG],
     205                [AC_MSG_NOTICE(Building libcfa for target: debug)],
     206                [AC_MSG_NOTICE(Running cfa without libcfa)])])
     207
    135208# Final text
    136209AC_MSG_RESULT(Cforall configuraton completed. Type "make -j 8 install".)
  • doc/proposals/concurrency/Makefile

    r5802a4f r66f8528  
    99SOURCES = ${addsuffix .tex, \
    1010concurrency \
     11style \
     12glossary \
    1113}
    1214
  • doc/proposals/concurrency/concurrency.tex

    r5802a4f r66f8528  
    11% requires tex packages: texlive-base texlive-latex-base tex-common texlive-humanities texlive-latex-extra texlive-fonts-recommended
    22
    3 % inline code �...� (copyright symbol) emacs: C-q M-)
    4 % red highlighting �...� (registered trademark symbol) emacs: C-q M-.
    5 % blue highlighting �...� (sharp s symbol) emacs: C-q M-_
    6 % green highlighting �...� (cent symbol) emacs: C-q M-"
    7 % LaTex escape �...� (section symbol) emacs: C-q M-'
    8 % keyword escape �...� (pilcrow symbol) emacs: C-q M-^
     3% inline code ©...© (copyright symbol) emacs: C-q M-)
     4% red highlighting ®...® (registered trademark symbol) emacs: C-q M-.
     5% blue highlighting ß...ß (sharp s symbol) emacs: C-q M-_
     6% green highlighting ¢...¢ (cent symbol) emacs: C-q M-"
     7% LaTex escape §...§ (section symbol) emacs: C-q M-'
     8% keyword escape ¶...¶ (pilcrow symbol) emacs: C-q M-^
    99% math escape $...$ (dollar symbol)
    1010
     
    100100
    101101\section{Introduction}
    102 This proposal provides a minimal core concurrency API that is both simple, efficient and can be reused to build higher-level features. The simplest possible concurrency core is a thread and a lock but this low-level approach is hard to master. An easier approach for users is to support higher-level constructs as the basis of the concurrency in \CFA. Indeed, for highly productive parallel programming, high-level approaches are much more popular~\cite{HPP:Study}. Examples are task based parallelism, message passing and implicit threading.
    103 
    104 There are actually two problems that need to be solved in the design of the concurrency for a programming language. Which concurrency tools are available to the users and which parallelism tools are available. While these two concepts are often seen together, they are in fact distinct concepts that require different sorts of tools~\cite{Buhr05a}. Concurrency tools need to handle mutual exclusion and synchronization, while parallelism tools are more about performance, cost and resource utilization.
     102This proposal provides a minimal core concurrency API that is both simple, efficient and can be reused to build higher-level features. The simplest possible concurrency core is a thread and a lock but this low-level approach is hard to master. An easier approach for users is to support higher-level constructs as the basis of the concurrency in \CFA. Indeed, for highly productive parallel programming, high-level approaches are much more popular~\cite{HPP:Study}. Examples are task based, message passing and implicit threading.
     103
     104There are actually two problems that need to be solved in the design of the concurrency for a programming language: which concurrency tools are available to the users and which parallelism tools are available. While these two concepts are often seen together, they are in fact distinct concepts that require different sorts of tools~\cite{Buhr05a}. Concurrency tools need to handle mutual exclusion and synchronization, while parallelism tools are more about performance, cost and resource utilization.
    105105
    106106%  #####  ####### #     #  #####  #     # ######  ######  ####### #     #  #####  #     #
     
    113113
    114114\section{Concurrency}
    115 Several tool can be used to solve concurrency challenges. Since these challenges always appear with the use of mutable shared state, some languages and libraries simply disallow mutable shared-state (Erlang~\cite{Erlang}, Haskell~\cite{Haskell}, Akka (Scala)~\cite{Akka}). In these paradigms, interaction among concurrent objects relies on message passing~\cite{Thoth,Harmony,V-Kernel} or other paradigms that closely relate to networking concepts. However, in languages that use routine calls as their core abstraction mechanism, these approaches force a clear distinction between concurrent and non-concurrent paradigms (i.e. message passing versus routine call). Which in turn means that, in order to be effective, programmers need to learn two sets of designs patterns. This distinction can be hidden away in library code, but effective use of the librairy will still have to take both paradigms into account. Approaches based on shared memory are more closely related to non-concurrent paradigms since they often rely on non-concurrent constructs like routine calls and objects. At a lower level these can be implemented as locks and atomic operations. Many such mechanisms have been proposed, including semaphores~\cite{Dijkstra68b} and path expressions~\cite{Campbell74}. However, for productivity reasons it is desireable to have a higher-level construct to be the core concurrency paradigm~\cite{HPP:Study}. An approach that is worth mentionning because it is gaining in popularity is transactionnal memory~\cite{Dice10}[Check citation]. While this approach is even pursued by system languages like \CC\cit, the performance and feature set is currently too restrictive to be possible to add such a paradigm to a language like C or \CC\cit, which is why it was rejected as the core paradigm for concurrency in \CFA. One of the most natural, elegant, and efficient mechanisms for synchronization and communication, especially for shared memory systems, is the \emph{monitor}. Monitors were first proposed by Brinch Hansen~\cite{Hansen73} and later described and extended by C.A.R.~Hoare~\cite{Hoare74}. Many programming languages---e.g., Concurrent Pascal~\cite{ConcurrentPascal}, Mesa~\cite{Mesa}, Modula~\cite{Modula-2}, Turing~\cite{Turing:old}, Modula-3~\cite{Modula-3}, NeWS~\cite{NeWS}, Emerald~\cite{Emerald}, \uC~\cite{Buhr92a} and Java~\cite{Java}---provide monitors as explicit language constructs. In addition, operating-system kernels and device drivers have a monitor-like structure, although they often use lower-level primitives such as semaphores or locks to simulate monitors. For these reasons, this project proposes Monitors as the core concurrency construct.
     115Several tool can be used to solve concurrency challenges. Since these challenges always appear with the use of mutable shared-state, some languages and libraries simply disallow mutable shared-state (Erlang~\cite{Erlang}, Haskell~\cite{Haskell}, Akka (Scala)~\cite{Akka}). In these paradigms, interaction among concurrent objects relies on message passing~\cite{Thoth,Harmony,V-Kernel} or other paradigms that closely relate to networking concepts (channels\cit for example). However, in languages that use routine calls as their core abstraction mechanism, these approaches force a clear distinction between concurrent and non-concurrent paradigms (i.e., message passing versus routine call). Which in turn means that, in order to be effective, programmers need to learn two sets of designs patterns. This distinction can be hidden away in library code, but effective use of the librairy still has to take both paradigms into account. Approaches based on shared memory are more closely related to non-concurrent paradigms since they often rely on basic constructs like routine calls and objects. At a lower level these can be implemented as locks and atomic operations. Many such mechanisms have been proposed, including semaphores~\cite{Dijkstra68b} and path expressions~\cite{Campbell74}. However, for productivity reasons it is desireable to have a higher-level construct be the core concurrency paradigm~\cite{HPP:Study}. An approach that is worth mentionning because it is gaining in popularity is transactionnal memory~\cite{Dice10}[Check citation]. While this approach is even pursued by system languages like \CC\cit, the performance and feature set is currently too restrictive to add such a paradigm to a language like C or \CC\cit, which is why it was rejected as the core paradigm for concurrency in \CFA. One of the most natural, elegant, and efficient mechanisms for synchronization and communication, especially for shared memory systems, is the \emph{monitor}. Monitors were first proposed by Brinch Hansen~\cite{Hansen73} and later described and extended by C.A.R.~Hoare~\cite{Hoare74}. Many programming languages---e.g., Concurrent Pascal~\cite{ConcurrentPascal}, Mesa~\cite{Mesa}, Modula~\cite{Modula-2}, Turing~\cite{Turing:old}, Modula-3~\cite{Modula-3}, NeWS~\cite{NeWS}, Emerald~\cite{Emerald}, \uC~\cite{Buhr92a} and Java~\cite{Java}---provide monitors as explicit language constructs. In addition, operating-system kernels and device drivers have a monitor-like structure, although they often use lower-level primitives such as semaphores or locks to simulate monitors. For these reasons, this project proposes monitors as the core concurrency construct.
    116116
    117117% #     # ####### #     # ### ####### ####### ######   #####
     
    144144
    145145\subsubsection{Call semantics} \label{call}
    146 The above monitor example displays some of their intrinsic characteristics. Indeed, it is necessary to use pass-by-reference over pass-by-value for monitor routines. This semantics is important because at their core, monitors are implicit mutual-exclusion objects (locks), and these objects cannot be copied. Therefore, monitors are implicitly non-copyable.
    147 
    148 Another aspect to consider is when a monitor acquires its mutual exclusion. For example, a monitor may need to be passed through multiple helper routines that do not acquire the monitor mutual exclusion on entry. Pass through can be both generic helper routines (\code{swap}, \code{sort}, etc.) or specific helper routines like the following to implement an atomic large counter :
    149 
    150 \begin{lstlisting}
    151         mutex struct counter_t { /*...*/ };
    152 
    153         void ?{}(counter_t & nomutex this);
    154         size_t ++?(counter_t & mutex this);
     146The above monitor example displays some of the intrinsic characteristics. Indeed, it is necessary to use pass-by-reference over pass-by-value for monitor routines. This semantics is important because at their core, monitors are implicit mutual-exclusion objects (locks), and these objects cannot be copied. Therefore, monitors are implicitly non-copyable.
     147
     148Another aspect to consider is when a monitor acquires its mutual exclusion. For example, a monitor may need to be passed through multiple helper routines that do not acquire the monitor mutual-exclusion on entry. Pass through can be both generic helper routines (\code{swap}, \code{sort}, etc.) or specific helper routines like the following to implement an atomic counter :
     149
     150\begin{lstlisting}
     151        mutex struct counter_t { /*...see section §\ref{data}§...*/ };
     152
     153        void ?{}(counter_t & nomutex this); //constructor
     154        size_t ++?(counter_t & mutex this); //increment
    155155
    156156        //need for mutex is platform dependent here
    157         void ?{}(size_t * this, counter_t & mutex cnt);
    158 \end{lstlisting}
    159 *semantics of the declaration of \code{mutex struct counter_t} are discussed in details in section \ref{data}
    160 
    161 Here, the constructor(\code(?{})) uses the \code{nomutex} keyword to signify that it does not acquire the monitor mutual exclusion when constructing. This semantics is because object not yet constructed should never be shared and therefore do not require mutual exclusion. The prefix increment operator uses \code{mutex} to protect the incrementing process from race conditions. Finally, there is a conversion operator from \code{counter_t} to \code{size_t}. This conversion may or may not require the \code{mutex} key word depending on whether or not reading an \code{size_t} is an atomic operation or not.
    162 
    163 Having both \code{mutex} and \code{nomutex} keywords could be argued to be redundant based on the meaning of a routine having neither of these keywords. If there were a meaning to routine \code{void foo(counter_t & this)} then one could argue that it should default to the safest option : \code{mutex}. On the other hand, the option of having routine \code{void foo(counter_t & this)} mean \code{nomutex} is unsafe by default and may easily cause subtle errors. It can be argued that this is the more "normal" behavior, \code{nomutex} effectively stating explicitly that "this routine has nothing special". Another alternative is to make having exactly one of these keywords mandatory, which would provide the same semantics but without the ambiguity of supporting routine \code{void foo(counter_t & this)}. Mandatory keywords would also have the added benefice of being self-documented but at the cost of extra typing. In the end, which solution should be picked is still up for debate. For the reminder of this proposal, the explicit approach is used for clarity.
    164 
    165 Regardless of which keyword is kept, it is important to establish when mutex/nomutex may be used as a type qualifier. Consider :
     157        void ?{}(size_t * this, counter_t & mutex cnt); //conversion
     158\end{lstlisting}
     159
     160Here, the constructor(\code{?\{\}}) uses the \code{nomutex} keyword to signify that it does not acquire the monitor mutual exclusion when constructing. This semantics is because an object not yet constructed should never be shared and therefore does not require mutual exclusion. The prefix increment operator uses \code{mutex} to protect the incrementing process from race conditions. Finally, there is a conversion operator from \code{counter_t} to \code{size_t}. This conversion may or may not require the \code{mutex} key word depending on whether or not reading an \code{size_t} is an atomic operation or not.
     161
     162Having both \code{mutex} and \code{nomutex} keywords could be argued to be redundant based on the meaning of a routine having neither of these keywords. For example, given a routine without wualifiers \code{void foo(counter_t & this)} then one could argue that it should default to the safest option \code{mutex}. On the other hand, the option of having routine \code{void foo(counter_t & this)} mean \code{nomutex} is unsafe by default and may easily cause subtle errors. It can be argued that \code{nomutex} is the more "normal" behaviour, the \code{nomutex} keyword effectively stating explicitly that "this routine has nothing special". Another alternative is to make having exactly one of these keywords mandatory, which would provide the same semantics but without the ambiguity of supporting routine \code{void foo(counter_t & this)}. Mandatory keywords would also have the added benefice of being self-documented but at the cost of extra typing. In the end, which solution should be picked is still up for debate. For the reminder of this proposal, the explicit approach is used for clarity.
     163
     164The next semantic decision is to establish when mutex/nomutex may be used as a type qualifier. Consider the following declarations:
    166165\begin{lstlisting}
    167166        int f1(monitor & mutex m);
     
    171170        int f5(graph(monitor*) & mutex m);
    172171\end{lstlisting}
    173 
    174 The problem is to indentify which object(s) should be acquired. Furthermore, each object needs to be acquired only once. In case of simple routines like \code{f1} and \code{f2} it is easy to identify an exhaustive list of objects to acquire on entering. Adding indirections (\code{f3}) still allows the compiler and programmer to indentify which object is acquired. However, adding in arrays (\code{f4}) makes it much harder. Array lengths are not necessarily known in C and even then making sure we only acquire objects once becomes also none trivial. This can be extended to absurd limits like \code{f5}, which uses a graph of monitors. To keep everyone as sane as possible~\cite{Chicken}, this projects imposes the requirement that a routine may only acquire one monitor per parameter and it must be the type of the parameter (ignoring potential qualifiers and indirections). Also note that while routine \code{f3} can be supported, meaning that monitor \code{**m} will be acquired, passing an array to this routine would be type safe and result in undefined behavior. For this reason, it would also be reasonnable to disallow mutex in the context where arrays may be passed.
     172The problem is to indentify which object(s) should be acquired. Furthermore, each object needs to be acquired only once. In the case of simple routines like \code{f1} and \code{f2} it is easy to identify an exhaustive list of objects to acquire on entry. Adding indirections (\code{f3}) still allows the compiler and programmer to indentify which object is acquired. However, adding in arrays (\code{f4}) makes it much harder. Array lengths are not necessarily known in C and even then making sure we only acquire objects once becomes also none trivial. This can be extended to absurd limits like \code{f5}, which uses a graph of monitors. To keep everyone as sane as possible~\cite{Chicken}, this projects imposes the requirement that a routine may only acquire one monitor per parameter and it must be the type of the parameter (ignoring potential qualifiers and indirections). Also note that while routine \code{f3} can be supported, meaning that monitor \code{**m} is be acquired, passing an array to this routine would be type safe and yet result in undefined behavior because only the first element of the array is acquired. However, this ambiguity is part of the C type system with respects to arrays. For this reason, it would also be reasonnable to disallow mutex in the context where arrays may be passed.
    175173
    176174% ######     #    #######    #
     
    183181
    184182\subsubsection{Data semantics} \label{data}
    185 Once the call semantics are established, the next step is to establish data semantics. Indeed, until now a monitor is used simply as a generic handle but in most cases monitors contian shared data. This data should be intrinsic to the monitor declaration to prevent any accidental use of data without its appripriate protection. For example here is a more fleshed-out version of the counter showed in \ref{call}:
     183Once the call semantics are established, the next step is to establish data semantics. Indeed, until now a monitor is used simply as a generic handle but in most cases monitors contian shared data. This data should be intrinsic to the monitor declaration to prevent any accidental use of data without its appropriate protection. For example, here is a complete version of the counter showed in section \ref{call}:
    186184\begin{lstlisting}
    187185        mutex struct counter_t {
     
    203201\end{lstlisting}
    204202
    205 This simple counter offers an example of monitor usage. Notice how the counter is used without any explicit synchronisation and yet supports thread-safe semantics for both reading and writting :
     203This simple counter is used as follows:
    206204\begin{center}
    207205\begin{tabular}{c @{\hskip 0.35in} c @{\hskip 0.35in} c}
    208206\begin{lstlisting}
     207        //shared counter
    209208        counter_t cnt;
    210209
     210        //multiple threads access counter
    211211        thread 1 : cnt++;
    212212        thread 2 : cnt++;
     
    218218\end{center}
    219219
    220 These simple mutual exclusion semantics also naturally expand to multi-monitor calls.
     220Notice how the counter is used without any explicit synchronisation and yet supports thread-safe semantics for both reading and writting. Unlike object-oriented monitors, where calling a mutex member \emph{implicitly} acquires mutual-exclusion, \CFA uses an explicit mechanism to acquire mutual-exclusion. A consequence of this approach is that it extends to multi-monitor calls.
    221221\begin{lstlisting}
    222222        int f(MonitorA & mutex a, MonitorB & mutex b);
     
    226226        f(a,b);
    227227\end{lstlisting}
    228 
    229 This code acquires both locks before entering the critical section (Referenced as \gls{group-acquire} from now on). In practice, writing multi-locking routines that can not lead to deadlocks can be tricky. Having language support for such a feature is therefore a significant asset for \CFA. In the case presented above, \CFA guarantees that the order of aquisition will be consistent across calls to routines using the same monitors as arguments. However, since \CFA monitors use multi-acquiring locks users can effectively force the acquiring order. For example, notice which routines use \code{mutex}/\code{nomutex} and how this affects aquiring order :
    230 \begin{lstlisting}
    231         void foo(A & mutex a, B & mutex a) {
    232                 //...
    233         }
    234 
    235         void bar(A & mutex a, B & nomutex a)
    236                 //...
    237                 foo(a, b);
    238                 //...
    239         }
    240 
    241         void baz(A & nomutex a, B & mutex a)
    242                 //...
    243                 foo(a, b);
    244                 //...
    245         }
    246 \end{lstlisting}
    247 
    248 Such a use will lead to nested monitor call problems~\cite{Lister77}, which are a specific implementation of the lock acquiring order problem. In the example above, the user uses implicit ordering in the case of function \code{foo} but explicit ordering in the case of \code{bar} and \code{baz}. This subtle mistake means that calling these routines concurrently may lead to deadlocks, depending on the implicit ordering matching the explicit ordering. As shown on several occasion\cit, solving this problems requires to :
     228This code acquires both locks before entering the critical section, called \emph{\gls{group-acquire}}. In practice, writing multi-locking routines that do not lead to deadlocks is tricky. Having language support for such a feature is therefore a significant asset for \CFA. In the case presented above, \CFA guarantees that the order of aquisition is consistent across calls to routines using the same monitors as arguments. However, since \CFA monitors use multi-acquisition locks, users can effectively force the acquiring order. For example, notice which routines use \code{mutex}/\code{nomutex} and how this affects aquiring order :
     229\begin{lstlisting}
     230        void foo(A & mutex a, B & mutex b) { //acquire a & b
     231                //...
     232        }
     233
     234        void bar(A & mutex a, B & nomutex b) { //acquire a
     235                //...
     236                foo(a, b); //acquire b
     237                //...
     238        }
     239
     240        void baz(A & nomutex a, B & mutex b) { //acquire b
     241                //...
     242                foo(a, b); //acquire a
     243                //...
     244        }
     245\end{lstlisting}
     246
     247The multi-acquisition monitor lock allows a monitor lock to be acquired by both \code{bar} or \code{baz} and acquired again in \code{foo}. In the calls to \code{bar} and \code{baz} the monitors are acquired in opposite order. such use leads to nested monitor call problems~\cite{Lister77}, which is a specific implementation of the lock acquiring order problem. In the example above, the user uses implicit ordering in the case of function \code{foo} but explicit ordering in the case of \code{bar} and \code{baz}. This subtle mistake means that calling these routines concurrently may lead to deadlock and is therefore undefined behavior. As shown on several occasion\cit, solving this problem requires :
    249248\begin{enumerate}
    250         \item Dynamically track the monitor call order.
     249        \item Dynamically tracking of the monitor-call order.
    251250        \item Implement rollback semantics.
    252251\end{enumerate}
    253252
    254 While the first requirement is already a significant constraint on the system, implementing a general rollback semantics in a C-like language is prohibitively complex \cit. In \CFA users simply need to be carefull when acquiring multiple monitors at the same time.
     253While the first requirement is already a significant constraint on the system, implementing a general rollback semantics in a C-like language is prohibitively complex \cit. In \CFA, users simply need to be carefull when acquiring multiple monitors at the same time.
    255254
    256255% ######  ####### #######    #    ### #        #####
     
    271270
    272271\subsubsection{Implementation Details: Interaction with polymorphism}
    273 At first glance, interaction between monitors and \CFA's concept of polymorphism seem complex to support. However, it can be reasoned that entry-point locking can solve most of the issues that could be present with polymorphism.
    274 
    275 First of all, interaction between \code{otype} polymorphism and monitors is impossible since monitors do not support copying. Therefore, the main question is how to support \code{dtype} polymorphism. Since a monitor's main purpose is to ensure mutual exclusion when accessing shared data, this implies that mutual exclusion is only required for routines that do in fact access shared data. However, since \code{dtype} polymorphism always handles incomplete types (by definition), no \code{dtype} polymorphic routine can access shared data since the data requires knowledge about the type. Therefore the only concern when combining \code{dtype} polymorphism and monitors is to protect access to routines. \Gls{callsite-locking}\footnotemark would require a significant amount of work, since any \code{dtype} routine may have to obtain some lock before calling a routine, depending on whether or not the type passed is a monitor. However, with \gls{entry-point-locking}\footnotemark[\value{footnote}] calling a monitor routine becomes exactly the same as calling it from anywhere else.
    276 \footnotetext{See glossary for a definition of \gls{callsite-locking} and \gls{entry-point-locking}}
     272At first glance, interaction between monitors and \CFA's concept of polymorphism seems complex to support. However, it is shown that entry-point locking can solve most of the issues.
     273
     274Before looking into complex control flow, it is important to present the difference between the two acquiring options : \gls{callsite-locking} and \gls{entry-point-locking}, i.e. acquiring the monitors before making a mutex call or as the first instruction of the mutex call. For example:
     275
     276\begin{center}
     277\begin{tabular}{|c|c|c|}
     278Code & \gls{callsite-locking} & \gls{entry-point-locking} \\
     279\CFA & pseudo-code & pseudo-code \\
     280\hline
     281\begin{lstlisting}
     282void foo(monitor & mutex a) {
     283
     284
     285
     286        //Do Work
     287        //...
     288
     289}
     290
     291void main() {
     292        monitor a;
     293
     294
     295
     296        foo(a);
     297
     298}
     299\end{lstlisting} &\begin{lstlisting}
     300foo(& a) {
     301
     302
     303
     304        //Do Work
     305        //...
     306
     307}
     308
     309main() {
     310        monitor a;
     311        //calling routine
     312        //handles concurrency
     313        acquire(a);
     314        foo(a);
     315        release(a);
     316}
     317\end{lstlisting} &\begin{lstlisting}
     318foo(& a) {
     319        //called routine
     320        //handles concurrency
     321        acquire(a);
     322        //Do Work
     323        //...
     324        release(a);
     325}
     326
     327main() {
     328        monitor a;
     329
     330
     331
     332        foo(a);
     333
     334}
     335\end{lstlisting}
     336\end{tabular}
     337\end{center}
     338
     339First of all, interaction between \code{otype} polymorphism and monitors is impossible since monitors do not support copying. Therefore, the main question is how to support \code{dtype} polymorphism. Since a monitor's main purpose is to ensure mutual exclusion when accessing shared data, this implies that mutual exclusion is only required for routines that do in fact access shared data. However, since \code{dtype} polymorphism always handles incomplete types (by definition), no \code{dtype} polymorphic routine can access shared data since the data requires knowledge about the type. Therefore, the only concern when combining \code{dtype} polymorphism and monitors is to protect access to routines. \Gls{callsite-locking} would require a significant amount of work, since any \code{dtype} routine may have to obtain some lock before calling a routine, depending on whether or not the type passed is a monitor. However, with \gls{entry-point-locking} calling a monitor routine becomes exactly the same as calling it from anywhere else.
     340
     341
    277342
    278343% ### #     # #######         #####   #####  #     # ####### ######
     
    285350
    286351\subsection{Internal scheduling} \label{insched}
    287 Monitors also need to schedule waiting threads within it as a mean of synchronization. Internal scheduling is one of the simple examples of such a feature. It allows users to declare condition variables and have threads wait and signaled from them. Here is a simple example of such a technique :
     352Monitors also need to schedule waiting threads internally as a mean of synchronization. Internal scheduling is one of the simple examples of such a feature. It allows users to declare condition variables and have threads wait and signaled from them. Here is a simple example of such a technique :
    288353
    289354\begin{lstlisting}
     
    303368\end{lstlisting}
    304369
    305 Here routine \code{foo} waits for the \code{signal} from \code{bar} before making further progress, effectively ensuring a basic ordering. This semantic can easily be extended to multi-monitor calls by offering the same guarantee.
     370Note that in \CFA, \code{condition} have no particular need to be stored inside a monitor, beyond any software engineering reasons. Here routine \code{foo} waits for the \code{signal} from \code{bar} before making further progress, effectively ensuring a basic ordering. This semantic can easily be extended to multi-monitor calls by offering the same guarantee.
    306371\begin{center}
    307372\begin{tabular}{ c @{\hskip 0.65in} c }
     
    337402condition e;
    338403
     404//acquire a & b
    339405void foo(monitor & mutex a,
    340406           monitor & mutex b) {
    341407
    342         wait(e);
     408        wait(e); //release a & b
    343409}
    344410
     
    352418condition e;
    353419
     420//acquire a
    354421void bar(monitor & mutex a,
    355422           monitor & nomutex b) {
     
    357424}
    358425
     426//acquire a & b
    359427void foo(monitor & mutex a,
    360428           monitor & mutex b) {
    361         wait(e);
     429        wait(e);  //release a & b
    362430}
    363431
     
    366434condition e;
    367435
     436//acquire a
    368437void bar(monitor & mutex a,
    369438           monitor & nomutex b) {
     
    371440}
    372441
     442//acquire b
    373443void baz(monitor & nomutex a,
    374444           monitor & mutex b) {
    375         wait(e);
     445        wait(e);  //release b
    376446}
    377447
     
    381451\end{center}
    382452
    383 Note that in \CFA, \code{condition} have no particular need to be stored inside a monitor, beyond any software engineering reasons. Context 1 is the simplest way of acquiring more than one monitor (\gls{group-acquire}), using a routine wiht multiple parameters having the \code{mutex} keyword. Context 2 also uses \gls{group-acquire} as well in routine \code{foo}. However, the routine is called by routine \code{bar} which only acquires monitor \code{a}. Since monitors can be acquired multiple times this will not cause a deadlock by itself but it does force the acquiring order to \code{a} then \code{b}. Context 3 also forces the acquiring order to be \code{a} then \code{b} but does not use \gls{group-acquire}. The previous example tries to illustrate the semantics that must be established to support releasing monitors in a \code{wait} statement. In all cases the behavior of the wait statment is to release all the locks that were acquired my the inner-most monitor call. That is \code{a & b} in context 1 and 2 and \code{b} only in context 3. Here are a few other examples of this behavior.
     453Context 1 is the simplest way of acquiring more than one monitor (\gls{group-acquire}), using a routine with multiple parameters having the \code{mutex} keyword. Context 2 also uses \gls{group-acquire} as well in routine \code{foo}. However, the routine is called by routine \code{bar}, which only acquires monitor \code{a}. Since monitors can be acquired multiple times this does not cause a deadlock by itself but it does force the acquiring order to \code{a} then \code{b}. Context 3 also forces the acquiring order to be \code{a} then \code{b} but does not use \gls{group-acquire}. The previous example tries to illustrate the semantics that must be established to support releasing monitors in a \code{wait} statement. In all cases, the behavior of the wait statment is to release all the locks that were acquired my the inner-most monitor call. That is \code{a & b} in context 1 and 2 and \code{b} only in context 3. Here are a few other examples of this behavior.
    384454
    385455
     
    389459condition e;
    390460
    391 //acquire a
     461//acquire b
    392462void foo(monitor & nomutex a,
    393463           monitor & mutex b) {
     
    399469           monitor & nomutex b) {
    400470
    401         //release a
    402         //keep b
    403         wait(e);
     471        wait(e); //release a
     472                  //keep b
    404473}
    405474
     
    418487           monitor & nomutex b) {
    419488
    420         //release b
    421         //keep a
    422         wait(e);
     489        wait(e); //release b
     490                  //keep a
    423491}
    424492
     
    437505           monitor & nomutex b) {
    438506
    439         //release a & b
    440         //keep none
    441         wait(e);
     507        wait(e); //release a & b
     508                  //keep none
    442509}
    443510
     
    446513\end{tabular}
    447514\end{center}
    448 Note the right-most example which uses a helper routine and therefore is not relevant to find which monitors will be released.
    449 
    450 These semantics imply that in order to release of subset of the monitors currently held, users must write (and name) a routine that only acquires the desired subset and simply calls wait. While users can use this method, \CFA offers the \code{wait_release}\footnote{Not sure if an overload of \code{wait} would work...} which will release only the specified monitors.
    451 
    452 Regardless of the context in which the \code{wait} statement is used, \code{signal} must used holding the same set of monitors. In all cases, signal only needs a single parameter, the condition variable that needs to be signalled. But \code{signal} needs to be called from the same monitor(s) that call to \code{wait}. Otherwise, mutual exclusion cannot be properly transferred back to the waiting monitor.
     515Note the right-most example is actually a trick pulled on the reader. Monitor state information is stored in thread local storage rather then in the routine context, which means that helper routines and other \code{nomutex} routines are invisible to the runtime system in regards to concurrency. This means that in the right-most example, the routine parameters are completly unnecessary. However, calling this routine from outside a valid monitor context is undefined.
     516
     517These semantics imply that in order to release of subset of the monitors currently held, users must write (and name) a routine that only acquires the desired subset and simply calls wait. While users can use this method, \CFA offers the \code{wait_release}\footnote{Not sure if an overload of \code{wait} would work...} which will release only the specified monitors. In the center previous examples, the code in the center uses the \code{bar} routine to only release monitor \code{b}. Using the \code{wait_release} helper, this can be rewritten without having the name two routines :
     518\begin{center}
     519\begin{tabular}{ c c c }
     520\begin{lstlisting}
     521        condition e;
     522
     523        //acquire a & b
     524        void foo(monitor & mutex a,
     525                   monitor & mutex b) {
     526                bar(a,b);
     527        }
     528
     529        //acquire b
     530        void bar(monitor & mutex a,
     531                   monitor & nomutex b) {
     532
     533                wait(e); //release b
     534                          //keep a
     535        }
     536
     537        foo(a, b);
     538\end{lstlisting} &\begin{lstlisting}
     539        =>
     540\end{lstlisting} &\begin{lstlisting}
     541        condition e;
     542
     543        //acquire a & b
     544        void foo(monitor & mutex a,
     545                   monitor & mutex b) {
     546                wait_release(e,b); //release b
     547                                         //keep a
     548        }
     549
     550        foo(a, b);
     551\end{lstlisting}
     552\end{tabular}
     553\end{center}
     554
     555Regardless of the context in which the \code{wait} statement is used, \code{signal} must be called holding the same set of monitors. In all cases, signal only needs a single parameter, the condition variable that needs to be signalled. But \code{signal} needs to be called from the same monitor(s) that call to \code{wait}. Otherwise, mutual exclusion cannot be properly transferred back to the waiting monitor.
    453556
    454557Finally, an additional semantic which can be very usefull is the \code{signal_block} routine. This routine behaves like signal for all of the semantics discussed above, but with the subtelty that mutual exclusion is transferred to the waiting task immediately rather than wating for the end of the critical section.
     
    464567\newpage
    465568\subsection{External scheduling} \label{extsched}
    466 As one might expect, the alternative to Internal scheduling is to use External scheduling instead. This method is somewhat more robust to deadlocks since one of the threads keeps a relatively tight control on scheduling. Indeed, as the following examples will demonstrate, external scheduling allows users to wait for events from other threads without the concern of unrelated events occuring. External scheduling can generally be done either in terms of control flow (ex: \uC) or in terms of data (ex: Go). Of course, both of these paradigms have their own strenghts and weaknesses but for this project control flow semantics where chosen to stay consistent with the rest of the languages semantics. Two challenges specific to \CFA arise when trying to add external scheduling with loose object definitions and multi-monitor routines. The following example shows what a simple use \code{accept} versus \code{wait}/\code{signal} and its advantages.
     569An alternative to internal scheduling is to use external scheduling instead. This method is more constrained and explicit which may help users tone down the undeterministic nature of concurrency. Indeed, as the following examples demonstrates, external scheduling allows users to wait for events from other threads without the concern of unrelated events occuring. External scheduling can generally be done either in terms of control flow (ex: \uC) or in terms of data (ex: Go). Of course, both of these paradigms have their own strenghts and weaknesses but for this project control flow semantics where chosen to stay consistent with the rest of the languages semantics. Two challenges specific to \CFA arise when trying to add external scheduling with loose object definitions and multi-monitor routines. The following example shows a simple use \code{accept} versus \code{wait}/\code{signal} and its advantages.
    467570
    468571\begin{center}
     
    482585
    483586        public:
    484                 void f();
     587                void f() { /*...*/ }
    485588                void g() { _Accept(f); }
    486589        private:
     
    490593\end{center}
    491594
    492 In the case of internal scheduling, the call to \code{wait} only guarantees that \code{g} was the last routine to access the monitor. This intails that the routine \code{f} may have acquired mutual exclusion several times while routine \code{h} was waiting. On the other hand, external scheduling guarantees that while routine \code{h} was waiting, no routine other than \code{g} could acquire the monitor.
     595In the case of internal scheduling, the call to \code{wait} only guarantees that \code{g} is the last routine to access the monitor. This intails that the routine \code{f} may have acquired mutual exclusion several times while routine \code{h} was waiting. On the other hand, external scheduling guarantees that while routine \code{h} was waiting, no routine other than \code{g} could acquire the monitor.
    493596\\
    494597
     
    673776% #       #     # #     # #     # ####### ####### ####### ####### ###  #####  #     #
    674777\section{Parallelism}
    675 Historically, computer performance was about processor speeds and instructions count. However, with heat dissipation being a direct consequence of speed increase, parallelism has become the new source for increased performance~\cite{Sutter05, Sutter05b}. In this decade, it is not longer reasonnable to create high-performance application without caring about parallelism. Indeed, parallelism is an important aspect of performance and more specifically throughput and hardware utilization. The lowest level approach of parallelism is to use \glspl{kthread} in combination with semantics like \code{fork}, \code{join}, etc. However, since these have significant costs and limitations \glspl{kthread} are now mostly used as an implementation tool rather than a user oriented one. There are several alternatives to solve these issues that all have strengths and weaknesses. While there are many variations of the presented paradigms, most of these variations do not actually change the guarantees or the semantics, they simply move costs in order to achieve better performance for certain workloads.
     778Historically, computer performance was about processor speeds and instructions count. However, with heat dissipation being a direct consequence of speed increase, parallelism has become the new source for increased performance~\cite{Sutter05, Sutter05b}. In this decade, it is not longer reasonnable to create a high-performance application without caring about parallelism. Indeed, parallelism is an important aspect of performance and more specifically throughput and hardware utilization. The lowest-level approach of parallelism is to use \glspl{kthread} in combination with semantics like \code{fork}, \code{join}, etc. However, since these have significant costs and limitations, \glspl{kthread} are now mostly used as an implementation tool rather than a user oriented one. There are several alternatives to solve these issues that all have strengths and weaknesses. While there are many variations of the presented paradigms, most of these variations do not actually change the guarantees or the semantics, they simply move costs in order to achieve better performance for certain workloads.
    676779
    677780\subsection{User-level threads}
    678 A direct improvement on the \gls{kthread} approach is to use \glspl{uthread}. These threads offer most of the same features that the operating system already provide but can be used on a much larger scale. This approach is the most powerfull solution as it allows all the features of multi-threading while removing several of the more expensives costs of using kernel threads. The down side is that almost none of the low-level threading problems are hidden, users still have to think about data races, deadlocks and synchronization issues. These issues can be somewhat alleviated by a concurrency toolkit with strong garantees but the parallelism toolkit offers very little to reduce complexity in itself.
    679 
    680 Examples of languages that support are Erlang~\cite{Erlang} and \uC~\cite{uC++book}.
    681 
    682 \subsection{Fibers : user-level threads without preemption}
    683 In the middle of the flexibility versus complexity spectrum lay \glspl{fiber} which offer \glspl{uthread} without the complexity of preemption by using cooperative scheduling. On a single core machine this means users need not worry about concurrency. On multi-core machines, while concurrency is still a concern, it is only a problem for fibers across cores but not while on the same core. This extra guarantee plus the fact that creating and destroying fibers are implicit synchronizing points means preventing mutable shared ressources still leaves many control flow options. However, multi-core processors can still execute fibers in parallel. This means users either need to worry about mutual exclusion, deadlocks and race conditions, or limit themselves to subset of concurrency primitives, raising the complexity in both cases. In this aspect, fibers can be seen as a more powerfull alternative to \glspl{job}.
     781A direct improvement on the \gls{kthread} approach is to use \glspl{uthread}. These threads offer most of the same features that the operating system already provide but can be used on a much larger scale. This approach is the most powerfull solution as it allows all the features of multi-threading, while removing several of the more expensives costs of using kernel threads. The down side is that almost none of the low-level threading problems are hidden, users still have to think about data races, deadlocks and synchronization issues. These issues can be somewhat alleviated by a concurrency toolkit with strong garantees but the parallelism toolkit offers very little to reduce complexity in itself.
     782
     783Examples of languages that support \glspl{uthread} are Erlang~\cite{Erlang} and \uC~\cite{uC++book}.
     784
     785\subsubsection{Fibers : user-level threads without preemption}
     786A popular varient of \glspl{uthread} is what is often reffered to as \glspl{fiber}. However, \glspl{fiber} do not present meaningful semantical differences with \glspl{uthread}. Advocates of \glspl{fiber} list their high performance and ease of implementation as majors strenghts of \glspl{fiber} but the performance difference between \glspl{uthread} and \glspl{fiber} is controversial and the ease of implementation, while true, is a weak argument in the context of language design. Therefore this proposal largely ignore fibers.
    684787
    685788An example of a language that uses fibers is Go~\cite{Go}
    686789
    687790\subsection{Jobs and thread pools}
    688 The approach on the opposite end of the spectrum is to base parallelism on \glspl{pool}. Indeed, \glspl{pool} offer limited flexibility but at the benefit of a simpler user interface. In \gls{pool} based systems, users express parallelism as units of work and the dependency graph (either explicit or implicit) that tie them together. This approach means users need not worry about concurrency but significantly limits the interaction that can occur between different jobs. Indeed, any \gls{job} that blocks also blocks the underlying worker, which effectively means the CPU utilization, and therefore throughput, suffers noticeably. It can be argued that a solution to this problem is to use more workers than available cores. However, unless the number of jobs and the number of workers are comparable, having a significant amount of blocked jobs will always results in idles cores.
     791The approach on the opposite end of the spectrum is to base parallelism on \glspl{pool}. Indeed, \glspl{pool} offer limited flexibility but at the benefit of a simpler user interface. In \gls{pool} based systems, users express parallelism as units of work and a dependency graph (either explicit or implicit) that tie them together. This approach means users need not worry about concurrency but significantly limits the interaction that can occur among jobs. Indeed, any \gls{job} that blocks also blocks the underlying worker, which effectively means the CPU utilization, and therefore throughput, suffers noticeably. It can be argued that a solution to this problem is to use more workers than available cores. However, unless the number of jobs and the number of workers are comparable, having a significant amount of blocked jobs always results in idles cores.
    689792
    690793The gold standard of this implementation is Intel's TBB library~\cite{TBB}.
    691794
    692795\subsection{Paradigm performance}
    693 While the choice between the three paradigms listed above may have significant performance implication, it is difficult to pindown the performance implications of chosing a model at the language level. Indeed, in many situations one of these paradigms may show better performance but it all strongly depends on the workload. Having a large amount of mostly independent units of work to execute almost guarantess that the \gls{pool} based system has the best performance thanks to the lower memory overhead. However, interactions between jobs can easily exacerbate contention. User-level threads may allows fine grain context switching which may result in better resource utilisation but context switches will be more expansive and it is also harder for users to get perfect tunning. As with every example, fibers sit somewhat in the middle of the spectrum. Furthermore, if the units of uninterrupted work are large enough the paradigm choice will be largely amorticised by the actual work done.
     796While the choice between the three paradigms listed above may have significant performance implication, it is difficult to pindown the performance implications of chosing a model at the language level. Indeed, in many situations one of these paradigms may show better performance but it all strongly depends on the workload. Having a large amount of mostly independent units of work to execute almost guarantess that the \gls{pool} based system has the best performance thanks to the lower memory overhead. However, interactions between jobs can easily exacerbate contention. User-level threads allow fine-grain context switching, which results in better resource utilisation, but context switches will be more expansive and the extra control means users need to tweak more variables to get the desired performance. Furthermore, if the units of uninterrupted work are large enough the paradigm choice is largely amorticised by the actual work done.
    694797
    695798%  #####  #######    #          ####### ######  ######
     
    702805
    703806\section{\CFA 's Thread Building Blocks}
    704 As a system level language, \CFA should offer both performance and flexibilty as its primary goals, simplicity and user-friendliness being a secondary concern. Therefore, the core of parallelism in \CFA should prioritize power and efficiency. With this said, it is possible to deconstruct the three paradigms details aboved in order to get simple building blocks. Here is a table showing the core caracteristics of the mentionned paradigms :
    705 \begin{center}
    706 \begin{tabular}[t]{| r | c | c |}
    707 \cline{2-3}
    708 \multicolumn{1}{ c| }{} & Has a stack & Preemptive \\
    709 \hline
    710 \Glspl{pool} & X & X \\
    711 \hline
    712 \Glspl{fiber} & \checkmark & X \\
    713 \hline
    714 \Glspl{uthread} & \checkmark & \checkmark \\
    715 \hline
    716 \end{tabular}
    717 \end{center}
    718 
    719 This table is missing several variations (for example jobs on \glspl{uthread} or \glspl{fiber}), but these variation affect mostly performance and do not effect the guarantees as the presented paradigm do.
    720 
    721 As shown in section \ref{cfaparadigms} these different blocks being available in \CFA it is trivial to reproduce any of these paradigm.
     807As a system-level language, \CFA should offer both performance and flexibilty as its primary goals, simplicity and user-friendliness being a secondary concern. Therefore, the core of parallelism in \CFA should prioritize power and efficiency. With this said, deconstructing popular paradigms in order to get simple building blocks yields \glspl{uthread} as the core parallelism block. \Glspl{pool} and other parallelism paradigms can then be built on top of the underlying threading model.
    722808
    723809% ####### #     # ######  #######    #    ######   #####
     
    730816
    731817\subsection{Thread Interface}
    732 The basic building blocks of \CFA are \glspl{cfathread}. By default these are implemented as \glspl{uthread} and as such offer a flexible and lightweight threading interface (lightweight comparatievely to \glspl{kthread}). A thread can be declared using a struct declaration with prefix \code{thread} as follows :
     818The basic building blocks of \CFA are \glspl{cfathread}. By default these are implemented as \glspl{uthread}, and as such, offer a flexible and lightweight threading interface (lightweight compared to \glspl{kthread}). A thread can be declared using a struct declaration with prefix \code{thread} as follows :
    733819
    734820\begin{lstlisting}
     
    736822\end{lstlisting}
    737823
    738 Obviously, for this thread implementation to be usefull it must run some user code. Several other threading interfaces use some function pointer representation as the interface of threads (for example : \Csharp~\cite{Csharp} and Scala~\cite{Scala}). However, this proposal considers that statically tying a \code{main} routine to a thread superseeds this approach. Since the \code{main} routine is definitely a special routine in \CFA, the existing syntax for declaring routines with unordinary name can be extended, i.e. operator overloading. As such the \code{main} routine of a thread can be defined as :
     824Obviously, for this thread implementation to be usefull it must run some user code. Several other threading interfaces use a function-pointer representation as the interface of threads (for example : \Csharp~\cite{Csharp} and Scala~\cite{Scala}). However, this proposal considers that statically tying a \code{main} routine to a thread superseeds this approach. Since the \code{main} routine is already a special routine in \CFA (where the program begins), the existing syntax for declaring routines names with special semantics can be extended, i.e. operator overloading. As such the \code{main} routine of a thread can be defined as :
    739825\begin{lstlisting}
    740826        thread struct foo {};
    741827
    742         void ?main(thread foo* this) {
    743                 /*... Some useful code ...*/
    744         }
    745 \end{lstlisting}
    746 
    747 With these semantics it is trivial to write a thread type that takes a function pointer as parameter and executes it on its stack asynchronously :
     828        void ?main(foo* this) {
     829                sout | "Hello World!" | endl;
     830        }
     831\end{lstlisting}
     832
     833In this example, threads of type \code{foo} will start there execution in the \code{void ?main(foo*)} routine which in this case prints \code{"Hello World!"}. While this proposoal encourages this approach which is enforces strongly type programming. Users may prefer to use the routine based thread semantics for the sake of simplicity. With these semantics it is trivial to write a thread type that takes a function pointer as parameter and executes it on its stack asynchronously :
    748834\begin{lstlisting}
    749835        typedef void (*voidFunc)(void);
     
    754840
    755841        //ctor
    756         void ?{}(thread FuncRunner* this, voidFunc inFunc) {
     842        void ?{}(FuncRunner* this, voidFunc inFunc) {
    757843                func = inFunc;
    758844        }
    759845
    760846        //main
    761         void ?main(thread FuncRunner* this) {
     847        void ?main(FuncRunner* this) {
    762848                this->func();
    763849        }
    764850\end{lstlisting}
    765851
    766 % In this example \code{func} is a function pointer stored in \acrfull{tls}, which is \CFA is both easy to use and completly typesafe.
    767 
    768 Of course for threads to be useful, it must be possible to start and stop threads and wait for them to complete execution. While using an \acrshort{api} such as \code{fork} and \code{join} is relatively common in the literature, such an interface is not needed. Indeed, the simplest approach is to use \acrshort{raii} principles and have threads \code{fork} once the constructor has completed and \code{join} before the destructor runs.
    769 \begin{lstlisting}
    770 thread struct FuncRunner; //FuncRunner declared above
    771 
    772 void world() {
     852Of course for threads to be useful, it must be possible to start and stop threads and wait for them to complete execution. While using an \acrshort{api} such as \code{fork} and \code{join} is relatively common in the literature, such an interface is unnecessary. Indeed, the simplest approach is to use \acrshort{raii} principles and have threads \code{fork} once the constructor has completed and \code{join} before the destructor runs.
     853\begin{lstlisting}
     854thread struct World; //FuncRunner declared above
     855
     856void ?main(thread World* this) {
    773857        sout | "World!" | endl;
    774858}
    775859
    776860void main() {
    777         FuncRunner run = {world};
     861        World w;
    778862        //Thread run forks here
    779863
     
    784868}
    785869\end{lstlisting}
    786 This semantic has several advantages over explicit semantics : typesafety is guaranteed, a thread is always started and stopped exaclty once and users cannot make any progamming errors. Furthermore it naturally follows the memory allocation semantics, which means users do not need to learn multiple semantics.
    787 
    788 These semantics also naturally scale to multiple threads meaning basic synchronisation is very simple :
     870This semantic has several advantages over explicit semantics : typesafety is guaranteed, a thread is always started and stopped exaclty once and users cannot make any progamming errors. However, one of the apparent drawbacks of this system is that threads now always form a lattice, that is they are always destroyed in opposite order of construction. While this seems like a significant limitation, existing \CFA semantics can solve this problem. Indeed, by using dynamic allocation to create threads will naturally let threads outlive the scope in which the thread was created much like dynamically allocating memory will let objects outlive the scope in which thy were created :
     871
    789872\begin{lstlisting}
    790873        thread struct MyThread {
     
    793876
    794877        //ctor
    795         void ?{}(thread MyThread* this) {}
     878        void ?{}(MyThread* this,
     879                     bool is_special = false) {
     880                //...
     881        }
    796882
    797883        //main
    798         void ?main(thread MyThread* this) {
     884        void ?main(MyThread* this) {
     885                //...
     886        }
     887
     888        void foo() {
     889                MyThread* special_thread;
     890                {
     891                        MyThread thrds = {false};
     892                        //Start a thread at the beginning of the scope
     893
     894                        DoStuff();
     895
     896                        //create a other thread that will outlive the thread in this scope
     897                        special_thread = new MyThread{true};
     898
     899                        //Wait for the thread to finish
     900                }
     901                DoMoreStuff();
     902
     903                //Now wait for the special
     904        }
     905\end{lstlisting}
     906
     907Another advantage of this semantic is that it naturally scale to multiple threads meaning basic synchronisation is very simple :
     908
     909\begin{lstlisting}
     910        thread struct MyThread {
     911                //...
     912        };
     913
     914        //ctor
     915        void ?{}(MyThread* this) {}
     916
     917        //main
     918        void ?main(MyThread* this) {
    799919                //...
    800920        }
     
    808928                //Wait for the 10 threads to finish
    809929        }
    810 
    811         void bar() {
    812                 MyThread* thrds = new MyThread[10];
    813                 //Start 10 threads at the beginning of the scope
    814 
    815                 DoStuff();
    816 
    817                 //Wait for the 10 threads to finish
    818                 delete MyThread;
     930\end{lstlisting}
     931
     932\subsection{Coroutines : A stepping stone}\label{coroutine}
     933While the main focus of this proposal is concurrency and paralellism, it is important to adress coroutines which are actually a significant underlying aspect of the concurrency system. Indeed, while having nothing todo with parallelism and arguably very little to do with concurrency, coroutines need to deal with context-switchs and and other context management operations. Therefore, this proposal includes coroutines both as an intermediate step for the implementation of threads and a first class feature of \CFA.
     934
     935The core API of coroutines revolve around two features : independent stacks and suspedn/resume. Much like threads the syntax for declaring a coroutine is declaring a type and a main routine for it to start :
     936\begin{lstlisting}
     937        coroutine struct MyCoroutine {
     938                //...
     939        };
     940
     941        //ctor
     942        void ?{}(MyCoroutine* this) {
     943
     944        }
     945
     946        //main
     947        void ?main(MyCoroutine* this) {
     948                sout | "Hello World!" | endl;
     949        }
     950\end{lstlisting}
     951
     952One a coroutine is created, users can context switch to it using \code{suspend} and come back using \code{resume}. Here is an example of a solution to the fibonnaci problem using coroutines :
     953\begin{lstlisting}
     954        coroutine struct Fibonacci {
     955                int fn; // used for communication
     956        };
     957
     958        void ?main(Fibonacci* this) {
     959                int fn1, fn2;           // retained between resumes
     960                this->fn = 0;
     961                fn1 = this->fn;
     962                suspend(this);          // return to last resume
     963
     964                this->fn = 1;
     965                fn2 = fn1;
     966                fn1 = this->fn;
     967                suspend(this);          // return to last resume
     968
     969                for ( ;; ) {
     970                        this->fn = fn1 + fn2;
     971                        fn2 = fn1;
     972                        fn1 = this->fn;
     973                        suspend(this);  // return to last resume
     974                }
     975        }
     976
     977        int next(Fibonacci& this) {
     978                resume(&this); // transfer to last suspend
     979                return this.fn;
     980        }
     981
     982        void main() {
     983                Fibonacci f1, f2;
     984                for ( int i = 1; i <= 10; i += 1 ) {
     985                        sout | next(f1) | '§\verb+ +§' | next(f2) | endl;
     986                }
    819987        }
    820988\end{lstlisting}
    821989
    822990\newpage
    823 \large{\textbf{WORK IN PROGRESS}}
     991\bf{WORK IN PROGRESS}
    824992\subsection{The \CFA Kernel : Processors, Clusters and Threads}\label{kernel}
    825993
  • doc/proposals/concurrency/glossary.tex

    r5802a4f r66f8528  
    1414
    1515\longnewglossaryentry{group-acquire}
    16 {name={grouped acquiring}}
     16{name={bulked acquiring}}
    1717{
    1818Implicitly acquiring several monitors when entering a monitor.
  • doc/proposals/concurrency/style.tex

    r5802a4f r66f8528  
    22
    33\lstset{
    4 morekeywords=[2]{nomutex,mutex,thread,wait,wait_release,signal,signal_block,accept,monitor},
     4morekeywords=[2]{nomutex,mutex,thread,wait,wait_release,signal,signal_block,accept,monitor,suspend,resume,coroutine},
    55keywordstyle=[2]\color{blue},                           % second set of keywords for concurency
    66basicstyle=\linespread{0.9}\tt\small,           % reduce line spacing and use typewriter font
  • doc/proposals/concurrency/version

    r5802a4f r66f8528  
    1 0.5.150
     10.7.48
  • doc/working/resolver_design.md

    r5802a4f r66f8528  
    13821382hypothesis needs to be empirically validated.
    13831383
     1384Another approach would be to abandon expression-tree ordering for
     1385subexpression matching, and order by "most constrained symbol"; symbols would 
     1386be more constrained if there were fewer matching declarations, fewer
     1387subexpressions yet to resolve, or possibly fewer possible types the expression
     1388could resolve to. Ordering the expressions in a priority-queue by this metric
     1389would not necessarily produce a top-down or a bottom-up order, but would add
     1390opportunities for pruning based on memoized upper and lower bounds.
     1391
    13841392Both Baker and Cormack explicitly generate all possible interpretations of a
    13851393given expression; thinking of the set of interpretations of an expression as a
  • src/CodeGen/CodeGenerator.cc

    r5802a4f r66f8528  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 13:35:30 2016
    13 // Update Count     : 352
     12// Last Modified On : Tue Dec 13 14:51:27 2016
     13// Update Count     : 362
    1414//
    1515
     
    5757                if ( decl->get_extension() ) {
    5858                        output << "__extension__ ";
     59                } // if
     60        } // extension
     61
     62        void CodeGenerator::asmName( DeclarationWithType * decl ) {
     63                if ( ConstantExpr * asmName = decl->get_asmName() ) {
     64                        output << " asm ( " << asmName->get_constant()->get_value() << " )";
    5965                } // if
    6066        } // extension
     
    141147                } // if
    142148
     149                asmName( functionDecl );
     150
    143151                // acceptAll( functionDecl->get_oldDecls(), *this );
    144152                if ( functionDecl->get_statements() ) {
     
    153161                handleStorageClass( objectDecl );
    154162                output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
     163
     164                asmName( objectDecl );
    155165
    156166                if ( objectDecl->get_init() ) {
  • src/CodeGen/CodeGenerator.h

    r5802a4f r66f8528  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 13:37:07 2016
    13 // Update Count     : 38
     12// Last Modified On : Tue Dec 13 13:51:53 2016
     13// Update Count     : 39
    1414//
    1515
     
    108108                };
    109109
     110                void asmName( DeclarationWithType *decl );
     111
    110112                void extension( Expression *expr );
    111113                void extension( Declaration *decl );
  • src/CodeGen/GenType.cc

    r5802a4f r66f8528  
    204204        void GenType::visit( ZeroType *zeroType ) {
    205205                // ideally these wouldn't hit codegen at all, but should be safe to make them ints
    206                 typeString = "int " + typeString;
     206                typeString = "long int " + typeString;
    207207                handleQualifiers( zeroType );
    208208        }
     
    210210        void GenType::visit( OneType *oneType ) {
    211211                // ideally these wouldn't hit codegen at all, but should be safe to make them ints
    212                 typeString = "int " + typeString;
     212                typeString = "long int " + typeString;
    213213                handleQualifiers( oneType );
    214214        }
  • src/CodeGen/OperatorTable.cc

    r5802a4f r66f8528  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Apr 14 16:48:27 2016
    13 // Update Count     : 9
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Dec 13 14:33:05 2016
     13// Update Count     : 10
    1414//
    1515
     
    2121                const OperatorInfo tableValues[] = {
    2222                        {       "?[?]",         "",             "_operator_index",                              OT_INDEX                        },
    23                         {       "?{}",          "=",            "_constructor",                                 OT_CTOR                         },
     23                        {       "?{}",          "=",    "_constructor",                                 OT_CTOR                         },
    2424                        {       "^?{}",         "",             "_destructor",                                  OT_DTOR                         },
    2525                        {       "?()",          "",             "_operator_call",                               OT_CALL                         },
  • src/Common/Assert.cc

    r5802a4f r66f8528  
    1 // 
     1//
    22// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
    33//
    44// The contents of this file are covered under the licence agreement in the
    55// file "LICENCE" distributed with Cforall.
    6 // 
    7 // Assert.cc -- 
    8 // 
     6//
     7// Assert.cc --
     8//
    99// Author           : Peter A. Buhr
    1010// Created On       : Thu Aug 18 13:26:59 2016
     
    1212// Last Modified On : Fri Aug 19 17:07:08 2016
    1313// Update Count     : 10
    14 // 
     14//
    1515
    1616#include <assert.h>
     
    3535        va_start( args, fmt );
    3636        vfprintf( stderr, fmt, args );
     37        va_end( args );
     38        fprintf( stderr, "\n" );
    3739        abort();
    3840}
     
    4345// compile-command: "make install" //
    4446// End:  //
    45 
  • src/Common/utility.h

    r5802a4f r66f8528  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Sep 23 11:46:47 2016
    13 // Update Count     : 28
     12// Last Modified On : Wed Dec 14 21:25:25 2016
     13// Update Count     : 31
    1414//
    1515
     
    3636}
    3737
    38 template<typename T, typename U>
     38template< typename T, typename U >
    3939struct maybeBuild_t {
    4040        static T * doit( const U *orig ) {
  • src/InitTweak/FixInit.cc

    r5802a4f r66f8528  
    346346
    347347                        if ( VariableExpr * function = dynamic_cast< VariableExpr * > ( appExpr->get_function() ) ) {
    348                                 if ( function->get_var()->get_linkage() == LinkageSpec::Intrinsic ) {
     348                                if ( LinkageSpec::isBuiltin( function->get_var()->get_linkage() ) ) {
    349349                                        // optimization: don't need to copy construct in order to call intrinsic functions
    350350                                        return appExpr;
  • src/InitTweak/InitTweak.cc

    r5802a4f r66f8528  
    304304
    305305        namespace {
     306                DeclarationWithType * getCalledFunction( Expression * expr );
     307
     308                template<typename CallExpr>
     309                DeclarationWithType * handleDerefCalledFunction( CallExpr * expr ) {
     310                        // (*f)(x) => should get "f"
     311                        std::string name = getFunctionName( expr );
     312                        assertf( name == "*?", "Unexpected untyped expression: %s", name.c_str() );
     313                        assertf( ! expr->get_args().empty(), "Can't get called function from dereference with no arguments" );
     314                        return getCalledFunction( expr->get_args().front() );
     315                }
     316
    306317                DeclarationWithType * getCalledFunction( Expression * expr ) {
    307318                        assert( expr );
     
    312323                        } else if ( CastExpr * castExpr = dynamic_cast< CastExpr * >( expr ) ) {
    313324                                return getCalledFunction( castExpr->get_arg() );
     325                        } else if ( UntypedExpr * untypedExpr = dynamic_cast< UntypedExpr * >( expr ) ) {
     326                                return handleDerefCalledFunction( untypedExpr );
     327                        } else if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * > ( expr ) ) {
     328                                return handleDerefCalledFunction( appExpr );
    314329                        }
    315330                        return nullptr;
     
    377392
    378393        namespace {
     394                std::string funcName( Expression * func );
     395
     396                template<typename CallExpr>
     397                std::string handleDerefName( CallExpr * expr ) {
     398                        // (*f)(x) => should get name "f"
     399                        std::string name = getFunctionName( expr );
     400                        assertf( name == "*?", "Unexpected untyped expression: %s", name.c_str() );
     401                        assertf( ! expr->get_args().empty(), "Can't get function name from dereference with no arguments" );
     402                        return funcName( expr->get_args().front() );
     403                }
     404
    379405                std::string funcName( Expression * func ) {
    380406                        if ( NameExpr * nameExpr = dynamic_cast< NameExpr * >( func ) ) {
     
    388414                        } else if ( UntypedMemberExpr * memberExpr = dynamic_cast< UntypedMemberExpr * > ( func ) ) {
    389415                                return funcName( memberExpr->get_member() );
     416                        } else if ( UntypedExpr * untypedExpr = dynamic_cast< UntypedExpr * >( func ) ) {
     417                                return handleDerefName( untypedExpr );
     418                        } else if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( func ) ) {
     419                                return handleDerefName( appExpr );
    390420                        } else {
    391421                                assertf( false, "Unexpected expression type being called as a function in call expression" );
     
    395425
    396426        std::string getFunctionName( Expression * expr ) {
     427                // there's some unforunate overlap here with getCalledFunction. Ideally this would be able to use getCalledFunction and
     428                // return the name of the DeclarationWithType, but this needs to work for NameExpr and UntypedMemberExpr, where getCalledFunction
     429                // can't possibly do anything reasonable.
    397430                if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( expr ) ) {
    398431                        return funcName( appExpr->get_function() );
  • src/Makefile.am

    r5802a4f r66f8528  
    4141driver_cfa_cpp_SOURCES = ${SRC}
    4242driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
    43 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT
     43driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT -O2
    4444driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
    4545
  • src/Makefile.in

    r5802a4f r66f8528  
    6969PRE_UNINSTALL = :
    7070POST_UNINSTALL = :
     71build_triplet = @build@
     72host_triplet = @host@
    7173DIST_COMMON = $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk \
    7274        $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \
     
    259261BACKEND_CC = @BACKEND_CC@
    260262CC = @CC@
     263CCAS = @CCAS@
     264CCASDEPMODE = @CCASDEPMODE@
     265CCASFLAGS = @CCASFLAGS@
    261266CCDEPMODE = @CCDEPMODE@
    262267CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    293298LIBS = @LIBS@
    294299LTLIBOBJS = @LTLIBOBJS@
     300MACHINE_TYPE = @MACHINE_TYPE@
    295301MAINT = @MAINT@
    296302MAKEINFO = @MAKEINFO@
     
    324330am__untar = @am__untar@
    325331bindir = @bindir@
     332build = @build@
    326333build_alias = @build_alias@
     334build_cpu = @build_cpu@
     335build_os = @build_os@
     336build_vendor = @build_vendor@
    327337builddir = @builddir@
    328338datadir = @datadir@
     
    331341dvidir = @dvidir@
    332342exec_prefix = @exec_prefix@
     343host = @host@
    333344host_alias = @host_alias@
     345host_cpu = @host_cpu@
     346host_os = @host_os@
     347host_vendor = @host_vendor@
    334348htmldir = @htmldir@
    335349includedir = @includedir@
     
    418432driver_cfa_cpp_SOURCES = ${SRC}
    419433driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
    420 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT
     434driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT -O2
    421435driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
    422436all: $(BUILT_SOURCES)
  • src/Parser/DeclarationNode.cc

    r5802a4f r66f8528  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  3 18:03:08 2016
    13 // Update Count     : 651
     12// Last Modified On : Tue Dec 13 14:43:38 2016
     13// Update Count     : 660
    1414//
    1515
     
    4848                type( nullptr ),
    4949                storageClass( NoStorageClass ),
     50                bitfieldWidth( nullptr ),
    5051                isInline( false ),
    5152                isNoreturn( false ),
    52                 bitfieldWidth( nullptr ),
    53                 initializer( nullptr ),
    5453                hasEllipsis( false ),
    5554                linkage( ::linkage ),
     55                asmName( nullptr ),
     56                initializer( nullptr ),
    5657                extension( false ) {
    5758
     
    7576        delete type;
    7677        delete bitfieldWidth;
     78        // asmName, no delete, passed to next stage
    7779        delete initializer;
    7880}
     
    9092        newnode->set_next( maybeClone( get_next() ) );
    9193        newnode->linkage = linkage;
     94        newnode->asmName = maybeClone( asmName );
    9295
    9396//      newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
     
    283286        DeclarationNode * newnode = new DeclarationNode;
    284287        newnode->type = nullptr;
    285         assert( ! newnode->name ); 
     288        assert( ! newnode->name );
    286289//      newnode->variable.name = name;
    287290        newnode->name = name;
     
    372375        newnode->type = new TypeData( TypeData::Builtin );
    373376        newnode->builtin = bt;
     377        newnode->type->builtintype = newnode->builtin;
    374378        return newnode;
    375379} // DeclarationNode::newBuiltinType
     
    640644}
    641645
     646DeclarationNode * DeclarationNode::addAsmName( ConstantExpr * newname ) {
     647        assert( ! asmName );
     648        asmName = newname;
     649        return this;
     650}
     651
    642652DeclarationNode * DeclarationNode::addBitfield( ExpressionNode * size ) {
    643653        bitfieldWidth = size;
     
    946956
    947957        if ( type ) {
    948                 return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
     958                return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, asmName, maybeBuild< Initializer >(initializer) )->set_extension( extension );
    949959        } // if
    950960
    951961        if ( ! isInline && ! isNoreturn ) {
    952962                assertf( name, "ObjectDecl are assumed to have names\n" );
    953                 return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
     963                return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_asmName( asmName )->set_extension( extension );
    954964        } // if
    955965
  • src/Parser/ExpressionNode.cc

    r5802a4f r66f8528  
    4646// type.
    4747
    48 static Type::Qualifiers emptyQualifiers;                                // no qualifiers on constants
     48Type::Qualifiers emptyQualifiers;                               // no qualifiers on constants
    4949
    5050static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
     
    172172} // build_constantStr
    173173
     174Expression *build_constantZeroOne( const std::string & str ) {
     175        Expression * ret = new ConstantExpr( Constant( str == "0" ? (Type*)new ZeroType( emptyQualifiers ) : (Type*)new OneType( emptyQualifiers ), str ) );
     176        delete &str;                                                                            // created by lex
     177        return ret;
     178} // build_constantChar
     179
    174180Expression * build_field_name_FLOATINGconstant( const std::string & str ) {
    175181        // str is of the form A.B -> separate at the . and return member expression
  • src/Parser/ParseNode.h

    r5802a4f r66f8528  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  3 18:03:08 2016
    13 // Update Count     : 636
     12// Last Modified On : Tue Dec 13 15:37:33 2016
     13// Update Count     : 643
    1414//
    1515
     
    154154Expression * build_constantFloat( const std::string &str );
    155155Expression * build_constantChar( const std::string &str );
     156Expression * build_constantZeroOne( const std::string &str );
    156157ConstantExpr * build_constantStr( const std::string &str );
    157158Expression * build_field_name_FLOATINGconstant( const std::string & str );
     
    204205        enum Aggregate { Struct, Union, Trait, NoAggregate };
    205206        enum TypeClass { Otype, Dtype, Ftype, NoTypeClass };
    206         enum BuiltinType { Valist };
     207        enum BuiltinType { Valist, Zero, One, NoBuiltinType };
    207208
    208209        static const char * storageName[];
     
    256257        DeclarationNode * addAssertions( DeclarationNode * );
    257258        DeclarationNode * addName( std::string * );
     259        DeclarationNode * addAsmName( ConstantExpr * );
    258260        DeclarationNode * addBitfield( ExpressionNode * size );
    259261        DeclarationNode * addVarArgs();
     
    308310        TypeData * type;
    309311        StorageClass storageClass;
     312        ExpressionNode * bitfieldWidth;
    310313        bool isInline, isNoreturn;
    311         std::list< std::string > attributes;
    312         ExpressionNode * bitfieldWidth;
    313314        std::unique_ptr<ExpressionNode> enumeratorValue;
    314         InitializerNode * initializer;
    315315        bool hasEllipsis;
    316316        LinkageSpec::Spec linkage;
     317        ConstantExpr *asmName;
     318        std::list< std::string > attributes;
     319        InitializerNode * initializer;
    317320        bool extension = false;
    318321        std::string error;
  • src/Parser/TypeData.cc

    r5802a4f r66f8528  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Sep 24 11:14:26 2016
    13 // Update Count     : 415
     12// Last Modified On : Tue Dec 13 13:40:33 2016
     13// Update Count     : 420
    1414//
    1515
     
    215215                break;
    216216          case Builtin:
    217                 assert( false );
    218                 // newtype->builtin = builtin;
     217                assert( builtintype == DeclarationNode::Zero || builtintype == DeclarationNode::One );
     218                newtype->builtintype = builtintype;
    219219                break;
    220220        } // switch
     
    444444                return buildTypeof( td );
    445445          case TypeData::Builtin:
    446                 return new VarArgsType( buildQualifiers( td ) );
     446                if(td->builtintype == DeclarationNode::Zero) {
     447                        return new ZeroType( emptyQualifiers );
     448                }
     449                else if(td->builtintype == DeclarationNode::One) {
     450                        return new OneType( emptyQualifiers );
     451                }
     452                else {
     453                        return new VarArgsType( buildQualifiers( td ) );
     454                }
    447455          case TypeData::Symbolic:
    448456          case TypeData::Enum:
     
    574582                const_cast<TypeData *>(td)->basictype = DeclarationNode::Int;
    575583                goto Integral;
     584          default:
     585                assert(false);
     586                return nullptr;
    576587        } // switch
    577588
     
    710721} // buildTypeof
    711722
    712 Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) {
     723Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, ConstantExpr *asmName, Initializer * init ) {
    713724        if ( td->kind == TypeData::Function ) {
    714725                FunctionDecl * decl;
     
    732743                } // for
    733744                buildList( td->function.oldDeclList, decl->get_oldDecls() );
    734                 return decl;
     745                return decl->set_asmName( asmName );
    735746        } else if ( td->kind == TypeData::Aggregate ) {
    736747                return buildAggregate( td );
     
    740751                return buildSymbolic( td, name, sc );
    741752        } else {
    742                 return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn );
     753                return (new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn ))->set_asmName( asmName );
    743754        } // if
    744755        return nullptr;
     
    758769                        break;
    759770                  default:
    760                         ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall ) ) );
     771                        ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall, nullptr ) ) );
    761772                } // switch
    762773        } else {
  • src/Parser/TypeData.h

    r5802a4f r66f8528  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeData.h -- 
     7// TypeData.h --
    88//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  3 12:34:08 2016
    13 // Update Count     : 142
     12// Last Modified On : Tue Dec 13 13:39:39 2016
     13// Update Count     : 143
    1414//
    1515
     
    7474        DeclarationNode::Signedness signedness = DeclarationNode::NoSignedness;
    7575        DeclarationNode::Length length = DeclarationNode::NoLength;
     76        DeclarationNode::BuiltinType builtintype = DeclarationNode::NoBuiltinType;
    7677        typedef std::bitset< DeclarationNode::NoQualifier > Qualifiers;
    7778        Qualifiers qualifiers;
     
    110111TupleType * buildTuple( const TypeData * );
    111112TypeofType * buildTypeof( const TypeData * );
    112 Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = nullptr );
     113Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, ConstantExpr *asmName, Initializer * init = nullptr );
    113114FunctionType * buildFunction( const TypeData * );
    114115
  • src/Parser/lex.cc

    r5802a4f r66f8528  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 183
    385 #define YY_END_OF_BUFFER 184
     384#define YY_NUM_RULES 185
     385#define YY_END_OF_BUFFER 186
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[895] =
     393static yyconst flex_int16_t yy_accept[905] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  118,  118,  121,  121,
    396       184,  182,    7,    9,    8,  141,  120,  103,  146,  149,
    397       117,  128,  129,  144,  142,  132,  143,  135,  145,  108,
    398       109,  110,  133,  134,  151,  153,  152,  154,  182,  103,
    399       126,  182,  127,  147,  103,  105,  103,  103,  103,  103,
    400       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    401       103,  103,  130,  150,  131,  148,    7,  182,    4,    4,
    402       183,  106,  183,  107,  118,  119,  125,  121,  122,    7,
    403         9,    0,    8,  158,  177,  103,    0,  170,  140,  163,
    404       171,  168,  155,  166,  156,  167,  165,    0,  114,    3,
    405 
    406         0,  169,  113,  111,    0,    0,  111,  111,    0,    0,
    407       111,  110,  110,  110,    0,  110,  138,  139,  137,  159,
    408       161,  157,  162,  160,    0,    0,    0,    0,    0,    0,
    409         0,    0,    0,    0,    0,    0,    0,    0,    0,  104,
    410       176,    0,  120,  117,  103,    0,    0,  173,    0,  103,
    411       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    412       103,  103,  103,  103,  103,  103,   38,  103,  103,  103,
    413       103,  103,  103,  103,  103,  103,  103,   57,  103,  103,
    414       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    415       103,  103,  103,  103,  172,  164,    7,    0,    0,    0,
    416 
    417         2,    0,    5,  106,    0,    0,    0,  118,    0,  124,
    418       123,  123,    0,    0,    0,  121,    0,    0,    0,    0,
     395        0,    0,    0,    0,    0,    0,  120,  120,  123,  123,
     396      186,  184,    7,    9,    8,  143,  122,  105,  148,  151,
     397      119,  130,  131,  146,  144,  134,  145,  137,  147,  110,
     398      111,  112,  135,  136,  153,  155,  154,  156,  184,  105,
     399      128,  184,  129,  149,  105,  107,  105,  105,  105,  105,
     400      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     401      105,  105,  105,  132,  152,  133,  150,    7,  184,    4,
     402        4,  185,  108,  185,  109,  120,  121,  127,  123,  124,
     403        7,    9,    0,    8,  160,  179,  105,    0,  172,  142,
     404      165,  173,  170,  157,  168,  158,  169,  167,    0,  116,
     405
     406        3,    0,  171,  115,  113,    0,    0,  113,  113,    0,
     407        0,  113,  112,  112,  112,    0,  112,  140,  141,  139,
     408      161,  163,  159,  164,  162,    0,    0,    0,    0,    0,
    419409        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    420         0,  136,  114,  115,    0,  115,  115,    0,    0,    6,
    421       115,  111,    0,    0,    0,  115,    0,  111,  111,  111,
    422       111,    0,  112,    0,    0,  110,  110,  110,  110,    0,
    423       174,  175,    0,  180,  178,    0,    0,    0,  104,    0,
    424         0,    0,    0,    0,    0,    0,    0,  103,   17,  103,
    425       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    426       103,  103,  103,  103,  103,  103,  103,   14,  103,  103,
    427 
    428       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    429       103,  103,  103,  103,  103,  103,   51,  103,  103,  103,
    430        64,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    431       103,  103,  103,  103,  103,   90,  103,  103,  103,  103,
    432       103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
    433         0,  123,    0,    0,    0,    0,    0,  123,    0,    0,
    434       181,    0,    0,    0,    0,    0,    0,    0,  115,    0,
    435       115,    0,  115,    0,  115,    0,    0,  115,    0,  111,
    436       111,    0,    0,  112,  112,    0,  112,    0,  112,  110,
    437       110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    438 
    439         0,  179,  103,  103,  103,  103,  103,  103,  103,  103,
    440       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    441       103,  103,  103,  103,  103,   21,  103,   24,  103,   27,
    442       103,  103,  103,  103,  103,  103,  103,   41,  103,   43,
    443       103,  103,  103,  103,  103,  103,  103,   56,  103,   67,
    444       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    445       103,  103,  103,  103,  103,  103,   98,  103,  103,    0,
     410      106,  178,    0,  122,  119,  105,    0,    0,  175,    0,
     411      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     412      105,  105,  105,  105,  105,  105,  105,   38,  105,  105,
     413      105,  105,  105,  105,  105,  105,  105,  105,   57,  105,
     414      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     415      105,  105,  105,  105,  105,  105,  105,  174,  166,    7,
     416
     417        0,    0,    0,    2,    0,    5,  108,    0,    0,    0,
     418      120,    0,  126,  125,  125,    0,    0,    0,  123,    0,
    446419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    447         0,    0,    0,  123,    0,    0,    0,    0,    0,  115,
    448         0,    0,    0,    0,    0,    0,    0,  112,  112,    0,
    449 
    450       116,    0,  112,  112,    0,    0,    0,    0,    0,    0,
    451         0,    0,    0,    0,    0,    0,    0,  103,  103,   22,
    452       103,  103,  103,  103,  103,  103,  103,   15,  103,  103,
    453       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    454       103,  103,   23,   25,  103,   32,  103,  103,  103,  103,
    455        40,  103,  103,  103,  103,   49,  103,  103,   54,  103,
    456       103,   71,  103,  103,  103,   77,  103,  103,  103,  103,
    457       103,   87,   89,  103,  103,   95,  103,  103,  102,    0,
     420        0,    0,    0,    0,  138,  116,  117,    0,  117,  117,
     421        0,    0,    6,  117,  113,    0,    0,    0,  117,    0,
     422      113,  113,  113,  113,    0,  114,    0,    0,  112,  112,
     423      112,  112,    0,  176,  177,    0,  182,  180,    0,    0,
     424        0,  106,    0,    0,    0,    0,    0,    0,    0,    0,
     425      105,   17,  105,  105,  105,  105,  105,  105,  105,  105,
     426      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     427
     428       14,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     429      105,  105,  105,  105,  105,  105,  105,  105,  105,   51,
     430      105,  105,  105,   64,  105,  105,  105,  105,  105,  105,
     431      105,  105,  105,  105,  105,  105,  105,  105,  105,   91,
     432      105,  105,  105,  105,  105,  105,  105,  105,    0,    0,
     433        0,    0,    0,    0,    0,    0,  125,    0,    0,    0,
     434        0,    0,  125,    0,    0,  183,    0,    0,    0,    0,
     435        0,    0,    0,  117,    0,  117,    0,  117,    0,  117,
     436        0,    0,  117,    0,  113,  113,    0,    0,  114,  114,
     437        0,  114,    0,  114,  112,  112,    0,    0,    0,    0,
     438
     439        0,    0,    0,    0,    0,    0,  181,  105,  105,  105,
     440      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     441      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     442       21,  105,   24,  105,   27,  105,  105,  105,  105,  105,
     443      105,  105,   41,  105,   43,  105,  105,  105,  105,  105,
     444      105,  105,   56,  105,   67,  105,  105,  105,  105,  105,
     445      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     446      105,  105,   99,  105,  105,  105,    0,    0,    0,    0,
    458447        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    459         0,    0,    0,    0,    0,    0,    0,    0,  116,    0,
    460 
    461         0,  112,  116,  116,  116,  116,    0,  112,    0,    0,
    462         0,    0,    0,    0,    0,    0,    0,    0,  103,    0,
    463       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    464       103,  103,  103,  103,  103,  103,   59,  103,  103,  103,
    465       103,  103,  103,  103,  103,   28,  103,  103,  103,   39,
    466        42,   45,  103,  103,   52,  103,   61,   68,  103,  103,
    467        76,   78,   81,   82,   84,   85,  103,  103,   92,  103,
    468       103,    0,    1,    0,    0,    0,    0,    0,    0,  106,
    469         0,    0,    0,  123,    0,    0,    0,    0,  116,    0,
    470       116,  116,    0,    0,    0,    0,    0,    0,    0,    0,
    471 
    472         0,  103,  103,   18,  103,  103,  103,  103,  103,  103,
    473       103,   16,  103,  103,  103,   33,  103,  103,  103,  103,
    474       103,  103,  103,  103,  103,  103,  103,  103,   36,   37,
    475       103,   48,   53,  103,  103,  103,   91,  103,  103,    0,
     448      125,    0,    0,    0,    0,    0,  117,    0,    0,    0,
     449
     450        0,    0,    0,    0,  114,  114,    0,  118,    0,  114,
     451      114,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     452        0,    0,    0,    0,  105,  105,   22,  105,  105,  105,
     453      105,  105,  105,  105,   15,  105,  105,  105,  105,  105,
     454      105,  105,  105,  105,  105,  105,  105,  105,  105,   23,
     455       25,  105,   32,  105,  105,  105,  105,   40,  105,  105,
     456      105,  105,   49,  105,  105,   54,  105,  105,   71,   72,
     457      105,  105,  105,   78,  105,  105,  105,  105,  105,   88,
     458       90,  105,  105,   96,  105,  105,  103,  105,    0,    0,
    476459        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    477         0,    0,   10,   11,   29,   55,  103,  103,  103,  103,
    478       103,  103,  103,  103,  103,  103,  103,   60,   62,   65,
    479       103,  103,   79,   93,  103,  103,   35,  103,   47,   72,
    480        73,  103,   96,   99,    0,    0,    0,    0,    0,    0,
    481         0,    0,    0,    0,    0,    0,  103,   69,  103,  103,
    482 
    483        12,  103,  103,   30,   34,  103,  103,  103,   66,  103,
    484       103,  103,  103,  103,  103,  103,    0,    0,    0,    0,
     460
     461        0,    0,    0,    0,    0,    0,    0,  118,    0,    0,
     462      114,  118,  118,  118,  118,    0,  114,    0,    0,    0,
     463        0,    0,    0,    0,    0,    0,    0,  105,    0,  105,
     464      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     465      105,  105,  105,  105,  105,   59,  105,  105,  105,  105,
     466      105,  105,  105,  105,   28,  105,  105,  105,   39,   42,
     467       45,  105,  105,   52,  105,   61,   68,  105,  105,   77,
     468       79,   82,   83,   85,   86,  105,  105,   93,  105,  105,
     469      104,    0,    1,    0,    0,    0,    0,    0,    0,  108,
     470        0,    0,    0,  125,    0,    0,    0,    0,  118,    0,
     471
     472      118,  118,    0,    0,    0,    0,    0,    0,    0,    0,
     473        0,  105,  105,   18,  105,  105,  105,  105,  105,  105,
     474      105,   16,  105,  105,  105,   33,  105,  105,  105,  105,
     475      105,  105,  105,  105,  105,  105,  105,  105,   36,   37,
     476      105,   48,   53,  105,  105,  105,   92,  105,  105,    0,
     477        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     478        0,    0,   10,   11,   29,   55,  105,  105,  105,  105,
     479      105,  105,  105,  105,  105,  105,  105,   60,   62,   65,
     480      105,  105,   80,   94,  105,  105,   35,  105,   47,   73,
     481       74,  105,   97,  100,    0,    0,    0,    0,    0,    0,
     482
     483        0,    0,    0,    0,    0,    0,  105,   69,  105,  105,
     484       12,  105,  105,   30,   34,  105,  105,  105,   66,  105,
     485      105,  105,  105,  105,  105,  105,    0,    0,    0,    0,
    485486        0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
    486       103,  103,  103,  103,  103,  103,  103,   50,   63,   74,
    487        80,   94,  100,  103,  103,  103,    0,    0,    0,    0,
    488         0,    0,    0,    0,  103,  103,   13,   19,  103,  103,
    489        31,  103,  103,  103,   26,   46,   88,    0,    0,  103,
    490       103,  103,  103,  103,  103,   75,  101,  103,   86,   20,
    491       103,  103,   44,   83,  103,  103,  103,  103,  103,  103,
    492       103,   97,   70,    0
    493 
     487      105,  105,  105,  105,  105,  105,  105,   50,   63,   75,
     488       81,   95,  101,  105,  105,  105,    0,    0,    0,    0,
     489        0,    0,    0,    0,  105,  105,   13,   19,  105,  105,
     490       31,  105,  105,  105,   26,   46,   89,    0,    0,  105,
     491      105,  105,  105,  105,  105,   76,  102,  105,   87,   20,
     492      105,  105,   44,   84,  105,  105,  105,  105,  105,  105,
     493
     494      105,   98,   70,    0
    494495    } ;
    495496
     
    539540    } ;
    540541
    541 static yyconst flex_int16_t yy_base[1069] =
     542static yyconst flex_int16_t yy_base[1079] =
    542543    {   0,
    543         0,   84, 2307, 2305,   94,    0,  177,  178,  179,  180,
    544      2319, 2845,  191, 2845,  197,   55, 2845, 2265,   60,  173,
    545      2845, 2845, 2845,   56,  188, 2845,  191,  189,  204,  216,
    546       275,    0, 2284, 2845,  216, 2283,  152,  344,  155,  220,
    547      2845,  159, 2845,  217,  226, 2845,  185,  154,  212,  251,
    548       237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
    549       238,  228, 2845,  225, 2845, 2278,  402,  390, 2845, 2287,
    550      2845, 2255,  235, 2845,    0, 2845,  426,    0, 2845,  417,
    551      2845,  439,  451, 2845,  498, 2254,  264, 2845, 2845, 2845,
    552      2845, 2845, 2271, 2845, 2268, 2845, 2845, 2278,  559, 2845,
    553 
    554      2295, 2845,  438,  444,  511,  534,  289,  253,  197,  380,
    555       305,    0,  319,  280,  198,  322, 2845, 2845, 2845, 2265,
    556      2845, 2845, 2845, 2263, 2260,  218,  255, 2273,  298,  350,
    557       368,  312,  440,  398,  405, 2254,  441, 2203,  446, 2232,
    558      2845,  335, 2845, 2845,  468, 2226, 2223, 2845, 2196,  439,
    559       282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
    560       464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
    561       489,  503,  496,  521,  276,  515,  516, 2224,  526,  510,
    562       519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
    563       599,  582,  593,  584, 2845, 2845,  660,  651, 2272,  666,
    564 
    565      2845,  678, 2845, 2219,  607, 2213, 2212,    0,  693, 2845,
    566      2845,  684, 2211, 2209, 2206,    0, 2227,  578,  608,  617,
    567       654,  679,  650,  683,  684,  687, 2224,  690,  691, 2201,
    568      2199, 2845,    0,  683,  710,  686,  700, 2179, 2230, 2845,
    569       730,  722,  427,  747,  756,  787,  770,  621, 2845, 2188,
    570      2161,    0,  795, 2205,  796,  700, 2845, 2181, 2156,  809,
    571      2845, 2845, 2188, 2845, 2845,  728,  733, 2165, 2163,  701,
    572      2159, 2158, 2156,    0, 2153,    0, 2122,  736,  746,  747,
    573       716,  689,  748,  566,  789,  659,  801,  751,  754,  785,
    574       776,  787,  808,  796,  739,  711,  806, 2152,  807,  815,
    575 
    576       817,  821,  809,  819,  827,  830,  831,  832,  833,  834,
    577       839,  840,  841,  842,  846,  853,  854,  844,  847,  855,
    578      2151,  860,  862,  861,  866,  864,  867,  869,  870,  872,
    579       873,  874,  878,  875,  883, 2149,  882,  928,  885,  888,
    580       894,  899,  892,  956,  958, 2143, 2140, 2139,    0, 2138,
    581         0,  945,  949, 2136,    0, 2133,    0, 2132,    0, 2153,
    582      2845,  930,  944, 2131, 2126,    0, 2125,    0, 2845,  959,
    583       979,  970, 2845,  985, 1025, 2124, 1001, 1047, 2122, 2845,
    584      2845,  943,  987, 1033,  986, 1072,  310, 1064,  987, 2845,
    585      2845, 2119, 2115, 2111,    0, 2109,    0, 2107,    0, 2104,
    586 
    587         0, 2845,  913,  947,  964,  966, 1005,  927, 1049,  939,
    588      1051,  968,  991,  986, 1041, 1053, 1003, 1059, 1063, 1066,
    589      1023, 1064, 1062, 1065,  978, 2105, 1072, 2103, 1078, 2100,
    590      1071, 1074, 1076, 1080, 1091, 1093, 1095, 2097, 1094, 2096,
    591      1082, 1098, 1099, 1100, 1101, 1105, 1106, 2095, 1107, 2093,
    592      1110, 1112, 1111, 1117, 1118, 1113, 1119, 1123, 1126, 1127,
    593      1129, 1130, 1131, 1140, 1142, 1143, 2090, 1144, 1147, 1195,
    594      2084,    0, 2083,    0, 2082,    0, 2080,    0, 1190, 2077,
    595         0, 2074,    0, 2073, 2072, 2070,    0, 2067,    0, 1197,
    596      2064, 1203, 1219, 1205, 1244, 1210, 1202, 1200, 2845, 1260,
    597 
    598      1278, 1271, 2075, 2050, 2060, 2057,    0, 2054,    0, 2053,
    599         0, 2052,    0, 2050,    0, 2047,    0, 1164, 1152, 2047,
    600      1184, 1182, 1226, 1157, 1227, 1196, 1254, 1146, 1237, 1255,
    601      1256, 1204, 1258, 1271, 1261, 1260, 1292, 1274, 1262, 1277,
    602      1278, 1280, 2046, 1186, 1289, 2045, 1279, 1282, 1290, 1295,
    603      2043, 1299, 1300, 1301, 1303, 2040, 1306, 1302, 2037, 1310,
    604      1311, 2036, 1309, 1312, 1315, 2035, 1220, 1314, 1316, 1322,
    605      1326, 1333, 2033, 1328, 1329, 2030, 1330, 1335, 2029, 2078,
    606      2023,    0, 2020,    0, 2019,    0, 2018,    0, 2016,    0,
    607      1983,    0, 1981,    0, 1980,    0, 1379, 1385, 1413, 1396,
    608 
    609      1977, 2845, 1402, 1351, 1389, 1403, 1974, 2845, 1973,    0,
    610      1972,    0, 1970,    0, 1967,    0,    0,    0, 1967,    0,
    611      1390, 1336, 1397, 1365, 1345, 1392, 1393, 1409, 1381, 1407,
    612      1412, 1414, 1419, 1420, 1422, 1424, 1427, 1431,  926, 1429,
    613      1432, 1438, 1433, 1435, 1440, 1966, 1437, 1441, 1445, 1965,
    614      1963, 1960, 1450, 1453, 1959, 1455, 1958, 1956, 1456, 1459,
    615      1953, 1952, 1951, 1949, 1942, 1940, 1458, 1461, 1939, 1464,
    616      1462, 1986, 2845, 1929,    0, 1925,    0,    0,    0, 1924,
    617         0,    0,    0, 2845,    0,    0,    0,    0, 1511, 1918,
    618      2845, 2845, 1517, 1917,    0, 1916,    0,    0,    0,    0,
    619 
    620      1914, 1474, 1468, 1914, 1443, 1493, 1498, 1476, 1504, 1505,
    621      1494, 1913, 1334, 1509, 1506, 1510, 1511, 1545, 1525, 1518,
    622      1543, 1530, 1523, 1529, 1531, 1534, 1535, 1539, 1912, 1910,
    623      1540, 1907, 1906, 1542, 1538, 1544, 1905, 1546, 1550,    0,
    624         0,    0, 1900, 1897, 1896, 1596,    0, 1895, 1893, 1890,
    625      1889, 1888, 1889, 1886, 1885, 1884, 1552, 1557, 1573, 1549,
    626      1551, 1553, 1575, 1555, 1577, 1582, 1607, 1882, 1583, 1879,
    627      1584, 1589, 1585, 1590, 1591, 1594, 1878, 1597, 1877, 1875,
    628      1872, 1598, 1871, 1870, 1865, 1862, 1861, 1860, 1858, 1851,
    629      1849, 1848, 1845, 1844, 1843, 1841, 1600, 1827, 1601, 1605,
    630 
    631      1608, 1602, 1609, 1610, 1818, 1614, 1629, 1615, 1817, 1604,
    632      1616, 1625, 1630, 1380, 1631, 1633, 1811, 1804, 1801, 1794,
    633      1792, 1791, 1770, 1769, 1768, 1761, 1759, 1758, 1716, 1716,
    634      1634, 1636, 1635, 1637, 1640, 1641, 1645, 1715, 1713, 1647,
    635      1712, 1711, 1648, 1652, 1653, 1654, 1703, 1701, 1700, 1698,
    636      1696, 1476, 1472, 1343, 1657, 1667, 1259, 1656, 1660, 1668,
    637      1150, 1671, 1675, 1676, 1031, 1027,  793,  752,  675, 1669,
    638      1677, 1680, 1681, 1682, 1684,  645,  607, 1686,  487,  441,
    639      1688, 1690,  394,  357, 1693, 1694, 1695, 1697, 1696, 1698,
    640      1700,  233,  137, 2845, 1773, 1786, 1799, 1809, 1819, 1832,
    641 
    642      1842, 1855, 1868, 1881, 1889, 1899, 1906, 1913, 1920, 1927,
    643      1934, 1941, 1948, 1955, 1962, 1969, 1973, 1981, 1987, 1994,
    644      2001, 2008, 2015, 2018, 2025, 2031, 2044, 2057, 2064, 2071,
    645      2078, 2085, 2088, 2095, 2098, 2105, 2108, 2115, 2118, 2125,
    646      2128, 2135, 2138, 2145, 2148, 2155, 2163, 2170, 2177, 2184,
    647      2191, 2194, 2201, 2204, 2211, 2214, 2221, 2227, 2240, 2247,
    648      2254, 2257, 2264, 2267, 2274, 2277, 2284, 2287, 2294, 2297,
    649      2304, 2307, 2314, 2321, 2324, 2331, 2334, 2341, 2348, 2355,
    650      2358, 2365, 2368, 2375, 2378, 2385, 2388, 2395, 2398, 2405,
    651      2411, 2424, 2431, 2438, 2441, 2448, 2451, 2458, 2461, 2468,
    652 
    653      2471, 2478, 2481, 2488, 2491, 2498, 2501, 2508, 2511, 2518,
    654      2525, 2528, 2535, 2538, 2545, 2548, 2555, 2558, 2561, 2567,
    655      2574, 2583, 2590, 2597, 2600, 2607, 2610, 2613, 2619, 2626,
    656      2629, 2632, 2635, 2638, 2641, 2644, 2647, 2654, 2657, 2664,
    657      2667, 2670, 2673, 2676, 2686, 2693, 2696, 2699, 2702, 2709,
    658      2716, 2723, 2726, 2733, 2740, 2747, 2754, 2761, 2768, 2775,
    659      2782, 2789, 2796, 2803, 2810, 2817, 2824, 2831
     544        0,   84, 2323, 2322,   94,    0,  177,  178,  179,  180,
     545     2338, 2866,  191, 2866,  197,   55, 2866, 2283,   60,  173,
     546     2866, 2866, 2866,   56,  188, 2866,  191,  189,  204,  216,
     547      275,    0, 2300, 2866,  216, 2298,  152,  344,  155,  220,
     548     2866,  159, 2866,  217,  226, 2866,  185,  154,  212,  251,
     549      237,  270,  235,  257,  241,  279,  193,  305,  314,  333,
     550      238,  228,  227, 2866,  225, 2866, 2295,  402,  390, 2866,
     551     2306, 2866, 2273,  235, 2866,    0, 2866,  426,    0, 2866,
     552      417, 2866,  439,  451, 2866,  498, 2270,  264, 2866, 2866,
     553     2866, 2866, 2866, 2286, 2866, 2285, 2866, 2866, 2297,  559,
     554
     555     2866, 2313, 2866,  438,  444,  511,  534,  289,  253,  197,
     556      380,  305,    0,  319,  280,  198,  322, 2866, 2866, 2866,
     557     2281, 2866, 2866, 2866, 2278, 2277,  218,  312, 2292,  350,
     558      459,  368,  398,  440,  405,  448, 2272,  441, 2219,  458,
     559     2247, 2866,  335, 2866, 2866,  321, 2243, 2242, 2866, 2214,
     560      444,  297,  433,  372,  425,  454,  434,  461,  570,  455,
     561      468,  385,  474,  475,  494,  492,  489,  464,  488,  491,
     562      513,  503,  430,  521,  517,  519,  516,  522, 2240,  526,
     563      523,  276,  460,  524,  542,  555,  554,  561,  325,  558,
     564      584,  552,  600,  586,  593,  588,  595, 2866, 2866,  667,
     565
     566      655, 2287,  682, 2866,  688, 2866, 2236,  590, 2232, 2230,
     567        0,  648, 2866, 2866,  675, 2227, 2224, 2223,    0, 2246,
     568      578,  631,  654,  685,  698,  660,  689,  670,  692, 2242,
     569      695,  701, 2200, 2198, 2866,    0,  693,  720,  685,  711,
     570     2197, 2247, 2866,  737,  745,  666,  757,  763,  797,  780,
     571      599, 2866, 2203, 2178,    0,  805, 2224,  806,  617, 2866,
     572     2199, 2172,  819, 2866, 2866, 2203, 2866, 2866,  707,  722,
     573     2182, 2182,  699, 2177, 2174, 2171,    0, 2170,    0, 2141,
     574      743,  724,  739,  689,  741,  720,  623,  759,  762,  804,
     575      681,  795,  749,  746,  799,  801,  765,  784,  803,  811,
     576
     577     2170,  814,  818,  827,  831,  817,  821,  833,  835,  841,
     578      842,  834,  843,  844,  845,  847,  849,  857,  858,  860,
     579      851,  859,  866, 2167,  867,  868,  869,  871,  873,  874,
     580      763,  875,  876,  880,  881,  884,  887,  888,  885, 2164,
     581      891,  936,  894,  897,  905,  899,  901,  902,  965,  961,
     582     2160, 2159, 2157,    0, 2154,    0,  952,  956, 2153,    0,
     583     2152,    0, 2150,    0, 2169, 2866,  951,  952, 2148, 2145,
     584        0, 2143,    0, 2866,  967,  986,  978, 2866,  992, 1032,
     585     2140, 1008, 1054, 2136, 2866, 2866,  915,  951, 1040,  993,
     586     1079,  956, 1071,  994, 2866, 2866, 2132, 2130, 2128,    0,
     587
     588     2125,    0, 2123,    0, 2121,    0, 2866,  935,  969,  973,
     589      968, 1012,  975, 1056,  992, 1058,  997, 1032,  993, 1000,
     590     1060, 1061, 1066, 1070, 1073, 1030, 1071, 1069, 1072, 1078,
     591     2121,  700, 2118, 1085, 2117, 1079, 1081, 1089, 1087, 1098,
     592     1096, 1099, 2116, 1101, 2114, 1105, 1106, 1107, 1109, 1112,
     593     1113, 1114, 2111, 1115, 2108, 1117, 1119, 1120, 1118, 1124,
     594     1126, 1121, 1136, 1130, 1134, 1135, 1149, 1137, 1138, 1150,
     595     1152, 1153, 2107, 1151, 1154, 1167, 1205, 2103,    0, 2101,
     596        0, 2098,    0, 2095,    0, 1204, 2094,    0, 2093,    0,
     597     2091, 2088, 2085,    0, 2084,    0, 1208, 2083, 1214, 1230,
     598
     599     1216, 1255, 1221, 1172, 1169, 2866, 1271, 1289, 1282, 2093,
     600     2066, 2075, 2074,    0, 2073,    0, 2071,    0, 2068,    0,
     601     2065,    0, 2064,    0, 1190, 1159, 2066, 1193, 1195, 1197,
     602     1212, 1237, 1231, 1265, 1248, 1266, 1267, 1213, 1268, 1269,
     603     1283, 1270, 1271,  234, 1285, 1273, 1274, 1287, 1293, 2064,
     604     1306, 1301, 2061, 1290, 1303, 1305, 1308, 2058, 1312, 1309,
     605     1311, 1313, 2057, 1314, 1319, 2056, 1316, 1322, 2054, 2051,
     606     1315, 1327, 1330, 2050, 1333, 1332, 1336, 1334, 1338, 1345,
     607     2049, 1335, 1348, 2047, 1346, 1349, 2044, 1351, 2093, 2039,
     608        0, 2037,    0, 2004,    0, 2002,    0, 2001,    0, 1998,
     609
     610        0, 1995,    0, 1994,    0, 1394, 1404, 1428, 1415, 1993,
     611     2866, 1421, 1370, 1391, 1419, 1991, 2866, 1988,    0, 1985,
     612        0, 1984,    0, 1983,    0,    0,    0, 1984,    0, 1352,
     613     1406, 1408, 1359, 1354, 1409, 1415, 1412, 1411, 1423, 1433,
     614     1425, 1430, 1435, 1437, 1439, 1448, 1442, 1449, 1440, 1444,
     615     1453, 1450, 1452, 1456, 1981, 1458, 1460, 1463, 1980, 1979,
     616     1977, 1466, 1467, 1974, 1470, 1973, 1972, 1469, 1473, 1970,
     617     1963, 1961, 1960, 1957, 1953, 1475, 1479, 1949, 1476, 1477,
     618     1945, 1992, 2866, 1938,    0, 1937,    0,    0,    0, 1938,
     619        0,    0,    0, 2866,    0,    0,    0,    0, 1525, 1932,
     620
     621     2866, 2866, 1531, 1931,    0, 1930,    0,    0,    0,    0,
     622     1928, 1488, 1483, 1928, 1491, 1507, 1518, 1490, 1519, 1521,
     623     1508, 1927, 1525, 1529, 1527, 1541, 1530, 1384, 1543, 1539,
     624     1558, 1547, 1549, 1512, 1545, 1552, 1553, 1554, 1926, 1924,
     625     1557, 1921, 1920, 1556, 1537, 1560, 1919, 1561, 1564,    0,
     626        0,    0, 1914, 1911, 1910, 1612,    0, 1909, 1907, 1904,
     627     1903, 1902, 1903, 1900, 1899, 1898, 1568, 1572, 1566, 1577,
     628     1590, 1570, 1578, 1579, 1591, 1596, 1625, 1896, 1598, 1893,
     629     1599, 1603, 1604, 1608, 1606, 1612, 1892, 1613, 1891, 1889,
     630     1886, 1614, 1885, 1884, 1879, 1872, 1870, 1869, 1866, 1865,
     631
     632     1864, 1862, 1845, 1836, 1835, 1832, 1616, 1828, 1617, 1622,
     633     1620, 1619, 1624, 1626, 1825, 1628, 1644, 1630, 1818, 1631,
     634     1639, 1645, 1647, 1634, 1649, 1651, 1813, 1812, 1791, 1790,
     635     1789, 1782, 1780, 1779, 1737, 1735, 1733, 1732, 1730, 1732,
     636     1652, 1654, 1655, 1657, 1659, 1662, 1663, 1731, 1729, 1668,
     637     1727, 1724, 1669, 1670, 1664, 1675, 1719, 1718, 1671, 1629,
     638     1564, 1468, 1350, 1269, 1678, 1681, 1239, 1682, 1688, 1689,
     639     1238, 1690, 1692, 1696, 1206, 1171, 1157, 1035, 1031, 1691,
     640     1697, 1700, 1704, 1702, 1706,  998,  560, 1701,  527,  395,
     641     1707, 1710,  357,  300, 1708, 1713, 1715, 1718, 1716, 1719,
     642
     643     1720,  233,  137, 2866, 1794, 1807, 1820, 1830, 1840, 1853,
     644     1863, 1876, 1889, 1902, 1910, 1920, 1927, 1934, 1941, 1948,
     645     1955, 1962, 1969, 1976, 1983, 1990, 1994, 2002, 2008, 2015,
     646     2022, 2029, 2036, 2039, 2046, 2052, 2065, 2078, 2085, 2092,
     647     2099, 2106, 2109, 2116, 2119, 2126, 2129, 2136, 2139, 2146,
     648     2149, 2156, 2159, 2166, 2169, 2176, 2184, 2191, 2198, 2205,
     649     2212, 2215, 2222, 2225, 2232, 2235, 2242, 2248, 2261, 2268,
     650     2275, 2278, 2285, 2288, 2295, 2298, 2305, 2308, 2315, 2318,
     651     2325, 2328, 2335, 2342, 2345, 2352, 2355, 2362, 2369, 2376,
     652     2379, 2386, 2389, 2396, 2399, 2406, 2409, 2416, 2419, 2426,
     653
     654     2432, 2445, 2452, 2459, 2462, 2469, 2472, 2479, 2482, 2489,
     655     2492, 2499, 2502, 2509, 2512, 2519, 2522, 2529, 2532, 2539,
     656     2546, 2549, 2556, 2559, 2566, 2569, 2576, 2579, 2582, 2588,
     657     2595, 2604, 2611, 2618, 2621, 2628, 2631, 2634, 2640, 2647,
     658     2650, 2653, 2656, 2659, 2662, 2665, 2668, 2675, 2678, 2685,
     659     2688, 2691, 2694, 2697, 2707, 2714, 2717, 2720, 2723, 2730,
     660     2737, 2744, 2747, 2754, 2761, 2768, 2775, 2782, 2789, 2796,
     661     2803, 2810, 2817, 2824, 2831, 2838, 2845, 2852
    660662    } ;
    661663
    662 static yyconst flex_int16_t yy_def[1069] =
     664static yyconst flex_int16_t yy_def[1079] =
    663665    {   0,
    664       894,    1,  895,  895,  894,    5,  896,  896,  897,  897,
    665       894,  894,  894,  894,  894,  894,  894,  898,  894,  894,
    666       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    667       894,   31,  894,  894,  894,  894,  894,  894,  899,  898,
    668       894,  894,  894,  894,  898,  894,  898,  898,  898,  898,
    669       898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
    670       898,  898,  894,  894,  894,  894,  894,  900,  894,  894,
    671       894,  901,  894,  894,  902,  894,  894,  903,  894,  894,
    672       894,  894,  894,  894,  894,  898,  894,  894,  894,  894,
    673       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    674 
    675       904,  894,  894,   30,  894,  894,  894,  894,  905,   30,
    676       894,   31,  894,  894,   31,  894,  894,  894,  894,  894,
    677       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    678       894,  894,  894,  894,  894,  894,  894,  894,  894,  906,
    679       894,  894,  894,  894,  898,  907,  908,  894,  894,  898,
    680       898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
    681       898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
    682       898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
    683       898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
    684       898,  898,  898,  898,  894,  894,  894,  900,  900,  900,
    685 
    686       894,  900,  894,  901,  894,  909,  910,  902,  894,  894,
    687       894,  894,  911,  912,  913,  903,  894,  894,  894,  894,
    688       894,  894,  894,  894,  894,  894,  894,  894,  894,  914,
    689       915,  894,   99,  894,  894,  894,  894,   99,  904,  894,
    690        99,  110,  242,  894,  894,  894,  894,  894,  894,  894,
    691       894,  916,  917,  918,  894,  894,  894,  894,  894,  894,
    692       894,  894,  894,  894,  894,  894,  894,  894,  919,  894,
    693       920,  921,  922,  923,  924,  925,  894,  926,  926,  926,
    694       926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
    695       926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
    696 
    697       926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
    698       926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
    699       926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
    700       926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
    701       926,  926,  926,  927,  928,  929,  930,  931,  932,  933,
    702       934,  894,  894,  935,  936,  937,  938,  939,  940,  894,
    703       894,  894,  894,  894,  941,  942,  943,  944,  894,  894,
    704       894,  894,  894,  894,  894,  375,  894,  371,  378,  894,
    705       894,  945,  946,  947,  894,  894,  894,  947,  894,  894,
    706       894,  948,  949,  950,  951,  952,  953,  954,  955,  956,
    707 
    708       957,  894,  958,  958,  958,  958,  958,  958,  958,  958,
    709       958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
    710       958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
    711       958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
    712       958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
    713       958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
    714       958,  958,  958,  958,  958,  958,  958,  958,  958,  959,
    715       960,  961,  962,  963,  964,  965,  966,  967,  894,  968,
    716       969,  970,  971,  972,  972,  973,  974,  975,  976,  894,
    717       490,  894,  894,  977,  894,  977,  894,  894,  894,  894,
    718 
    719       894,  894,  894,  894,  978,  979,  980,  981,  982,  983,
    720       984,  985,  986,  987,  988,  989,  990,  991,  991,  991,
    721       991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
    722       991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
    723       991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
    724       991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
    725       991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
    726       991,  991,  991,  991,  991,  991,  991,  991,  991,  992,
    727       993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
    728      1003, 1004, 1005, 1006, 1007, 1008,  894,  894,  894,  894,
    729 
    730      1009,  894,  599,  894,  894,  894,  603,  894, 1010, 1011,
    731      1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
    732      1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
    733      1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
    734      1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
    735      1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
    736      1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
    737      1020, 1022,  894, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
    738      1030, 1031, 1032,  894, 1033, 1034, 1035, 1036,  894,  689,
    739       894,  894,  894, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
    740 
    741      1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
    742      1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
    743      1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
    744      1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046,
    745      1047, 1048, 1049, 1050, 1051,  894, 1052, 1037, 1039, 1053,
    746      1054, 1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
    747      1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
    748      1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
    749      1045, 1045, 1045, 1045, 1055, 1056, 1049, 1057, 1050, 1058,
    750      1051, 1059, 1060, 1053, 1061, 1054, 1045, 1045, 1045, 1045,
    751 
    752      1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
    753      1045, 1045, 1045, 1045, 1045, 1045, 1062, 1055, 1063, 1056,
    754      1064, 1057, 1065, 1058, 1066, 1059, 1067, 1060, 1061, 1045,
    755      1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
    756      1045, 1045, 1045, 1045, 1045, 1045, 1068, 1062, 1063, 1064,
    757      1065, 1039, 1066, 1067, 1045, 1045, 1045, 1045, 1045, 1045,
    758      1045, 1045, 1045, 1045, 1045, 1045, 1045, 1068, 1039, 1045,
    759      1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
    760      1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
    761      1045, 1045, 1045,    0,  894,  894,  894,  894,  894,  894,
    762 
    763       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    764       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    765       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    766       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    767       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    768       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    769       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    770       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    771       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    772       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    773 
    774       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    775       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    776       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    777       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    778       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    779       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    780       894,  894,  894,  894,  894,  894,  894,  894
     666      904,    1,  905,  905,  904,    5,  906,  906,  907,  907,
     667      904,  904,  904,  904,  904,  904,  904,  908,  904,  904,
     668      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     669      904,   31,  904,  904,  904,  904,  904,  904,  909,  908,
     670      904,  904,  904,  904,  908,  904,  908,  908,  908,  908,
     671      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
     672      908,  908,  908,  904,  904,  904,  904,  904,  910,  904,
     673      904,  904,  911,  904,  904,  912,  904,  904,  913,  904,
     674      904,  904,  904,  904,  904,  904,  908,  904,  904,  904,
     675      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     676
     677      904,  914,  904,  904,   30,  904,  904,  904,  904,  915,
     678       30,  904,   31,  904,  904,   31,  904,  904,  904,  904,
     679      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     680      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     681      916,  904,  904,  904,  904,  908,  917,  918,  904,  904,
     682      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
     683      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
     684      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
     685      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
     686      908,  908,  908,  908,  908,  908,  908,  904,  904,  904,
     687
     688      910,  910,  910,  904,  910,  904,  911,  904,  919,  920,
     689      912,  904,  904,  904,  904,  921,  922,  923,  913,  904,
     690      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     691      904,  904,  924,  925,  904,  100,  904,  904,  904,  904,
     692      100,  914,  904,  100,  111,  245,  904,  904,  904,  904,
     693      904,  904,  904,  904,  926,  927,  928,  904,  904,  904,
     694      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     695      904,  929,  904,  930,  931,  932,  933,  934,  935,  904,
     696      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     697      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     698
     699      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     700      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     701      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     702      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     703      936,  936,  936,  936,  936,  936,  936,  936,  937,  938,
     704      939,  940,  941,  942,  943,  944,  904,  904,  945,  946,
     705      947,  948,  949,  950,  904,  904,  904,  904,  904,  951,
     706      952,  953,  954,  904,  904,  904,  904,  904,  904,  904,
     707      380,  904,  376,  383,  904,  904,  955,  956,  957,  904,
     708      904,  904,  957,  904,  904,  904,  958,  959,  960,  961,
     709
     710      962,  963,  964,  965,  966,  967,  904,  968,  968,  968,
     711      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     712      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     713      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     714      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     715      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     716      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     717      968,  968,  968,  968,  968,  968,  969,  970,  971,  972,
     718      973,  974,  975,  976,  977,  904,  978,  979,  980,  981,
     719      982,  982,  983,  984,  985,  986,  904,  497,  904,  904,
     720
     721      987,  904,  987,  904,  904,  904,  904,  904,  904,  904,
     722      904,  988,  989,  990,  991,  992,  993,  994,  995,  996,
     723      997,  998,  999, 1000, 1001, 1001, 1001, 1001, 1001, 1001,
     724     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
     725     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
     726     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
     727     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
     728     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
     729     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1002, 1003,
     730     1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
     731
     732     1014, 1015, 1016, 1017, 1018,  904,  904,  904,  904, 1019,
     733      904,  608,  904,  904,  904,  612,  904, 1020, 1021, 1022,
     734     1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1030,
     735     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
     736     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
     737     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
     738     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
     739     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
     740     1030, 1032,  904, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
     741     1040, 1041, 1042,  904, 1043, 1044, 1045, 1046,  904,  699,
     742
     743      904,  904,  904, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
     744     1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     745     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     746     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     747     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1056,
     748     1057, 1058, 1059, 1060, 1061,  904, 1062, 1047, 1049, 1063,
     749     1064, 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     750     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     751     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     752     1055, 1055, 1055, 1055, 1065, 1066, 1059, 1067, 1060, 1068,
     753
     754     1061, 1069, 1070, 1063, 1071, 1064, 1055, 1055, 1055, 1055,
     755     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     756     1055, 1055, 1055, 1055, 1055, 1055, 1072, 1065, 1073, 1066,
     757     1074, 1067, 1075, 1068, 1076, 1069, 1077, 1070, 1071, 1055,
     758     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     759     1055, 1055, 1055, 1055, 1055, 1055, 1078, 1072, 1073, 1074,
     760     1075, 1049, 1076, 1077, 1055, 1055, 1055, 1055, 1055, 1055,
     761     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1078, 1049, 1055,
     762     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     763     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     764
     765     1055, 1055, 1055,    0,  904,  904,  904,  904,  904,  904,
     766      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     767      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     768      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     769      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     770      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     771      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     772      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     773      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     774      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     775
     776      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     777      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     778      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     779      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     780      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     781      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     782      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     783      904,  904,  904,  904,  904,  904,  904,  904
    781784    } ;
    782785
    783 static yyconst flex_int16_t yy_nxt[2931] =
     786static yyconst flex_int16_t yy_nxt[2952] =
    784787    {   0,
    785788       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    791794       50,   51,   52,   53,   18,   54,   18,   55,   18,   18,
    792795       56,   18,   57,   58,   59,   60,   61,   62,   18,   18,
    793        18,   63,   64,   65,   66,   67,   84,   92,   85,   85,
    794        67,   88,   89,   68,   71,   71,   71,   71,   71,   71,
    795 
    796        71,   71,   71,   71,   72,   71,   71,   71,   71,   71,
    797        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    798        71,   71,   71,   71,   71,   71,   71,   71,   71,   72,
     796       63,   64,   65,   66,   67,   68,   85,   93,   86,   86,
     797       68,   89,   90,   69,   72,   72,   72,   72,   72,   72,
     798
     799       72,   72,   72,   72,   73,   72,   72,   72,   72,   72,
    799800       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
    800        72,   72,   72,   72,   72,   71,   73,   71,   71,   72,
    801        74,   72,   72,   72,   72,   72,   72,   72,   72,   72,
    802        72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
    803        72,   72,   72,   72,   72,   71,   71,   71,   71,   76,
    804        76,   79,   79,  123,  124,   90,  141,   79,   79,   87,
    805        76,   76,   80,   81,   82,   82,   82,   80,   82,   81,
    806 
    807        83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
    808        95,   99,   99,   99,   99,   99,   99,  252,  894,   94,
    809       100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
    810        77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
    811       104,  104,  105,  105,  119,   87,  120,  121,  148,  263,
    812       149,  264,  254,  260,  183,  106,  195,   87,  159,  107,
    813       160,  150,  151,  152,   87,  108,  109,  153,  154,  162,
    814       155,  110,   87,  156,  157,  145,  163,  106,   87,  182,
    815        87,  158,  164,  111,  206,   87,  263,   87,  264,   87,
    816        87,  108,  194,   87,  109,  103,  250,  112,  112,  112,
    817 
    818       112,  112,  112,   87,  169,  177,  170,  196,  193,   87,
    819       207,  180,  165,  230,  106,  171,  166,  181,  113,  178,
    820       251,  167,   87,  258,  114,  168,  179,  172,   87,  263,
    821       115,  264,  248,   87,   87,  173,  106,  174,  249,  231,
    822       175,  143,  116,  263,  176,  264,  144,  259,  317,  283,
    823       114,  125,  280,  503,  249,  126,  127,   87,  128,  191,
    824       129,  130,  256,  131,  249,  132,   87,  265,  257,  184,
    825       185,  257,  248,   87,  133,  134,  135,  504,  188,  186,
    826       249,  263,  187,  264,  271,   87,  189,  265,  145,  256,
    827       305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
    828 
    829       894,  264,  192,  197,   81,   82,   82,   82,  197,   87,
    830       272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
    831        82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
    832       894,  264,  209,  282,  211,  255,  263,  267,  264,  211,
    833        82,   81,   82,   82,   82,   82,   87,  894,  212,  212,
    834       212,  212,   82,   81,   83,   83,   83,   82,  894,  211,
    835       241,  241,  241,  241,  241,  241,  242,  242,  242,  242,
    836       266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
    837        87,  144,  377,  211,  211,   87,   87,  211,  211,   87,
    838        87,   87,  286,   87,  894,  211,   87,   87,  211,  243,
    839 
    840       211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
    841       219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
    842        87,   87,  894,   87,  309,  300,   87,   87,  224,  225,
    843       226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
    844       299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
    845       106,  245,  228,  245,  306,   87,  246,  246,  246,  246,
    846       246,  246,   87,  313,   87,  315,  244,   87,   87,  311,
    847       314,   87,  106,   87,   87,   87,  323,   87,   87,  322,
    848       229,  233,  233,  233,  233,  233,  233,  312,  333,  247,
    849       319,  316,  328,  320,  318,   87,   87,  234,  235,  236,
    850 
    851       321,  237,  236,   87,  324,   87,  325,  143,  335,  360,
    852       331,  361,   87,   87,  238,  337,  326,  327,   87,  236,
    853       235,  236,   87,  329,  237,  332,  236,  287,  288,  289,
    854       336,  290,  291,  334,   87,  292,   87,  293,  409,  360,
    855       330,  361,  294,  295,  296,   87,  297,  339,  360,  343,
    856       361,   87,  200,  201,  338,  340,  346,  200,  341,   87,
    857       342,  197,   81,   82,   82,   82,  197,  200,  201,  198,
    858       380,  361,  200,  202,  202,  202,  202,  202,  202,  344,
    859       201,  360,  347,  361,  344,  360,  345,  361,  202,  202,
    860       202,  202,  202,  202,  209,  210,  380,   87,  361,  209,
    861 
    862       202,  202,  202,  202,  202,  202,  352,  352,  352,  352,
    863       360,   87,  361,  362,  360,  360,  361,  361,  360,  363,
    864       361,  360,  360,  361,  361,  369,  369,  370,  369,  370,
    865       894,  411,  371,  371,  371,  371,  371,  371,  373,  353,
    866       373,   87,  103,  373,  242,  242,  242,  242,  369,  390,
    867       392,  369,  375,  375,  375,  375,  375,  375,  407,  263,
    868       373,  264,  373,   87,  263,  372,  264,  373,   87,  105,
    869       105,  105,  105,  105,  105,  390,  393,  243,  246,  246,
    870       246,  246,  246,  246,  406,  376,  106,  245,   87,  245,
    871       424,   87,  246,  246,  246,  246,  246,  246,   87,   87,
    872 
    873        87,  403,  255,   87,  423,  408,   87,  894,  106,  378,
    874       378,  378,  378,  378,  378,  383,  404,  405,  105,  105,
    875       105,  105,  105,  105,  416,  234,  415,  236,   87,  237,
    876       236,  112,  112,  112,  112,  112,  112,   87,  385,   87,
    877       386,   87,  379,  418,  387,   87,  410,  236,   87,  236,
    878       388,  255,  237,   87,  236,  419,  420,  422,   87,   87,
    879        87,   87,  389,  417,  260,  421,  386,   87,  412,   87,
    880       387,   87,  427,   87,  413,  414,  425,  426,  428,   87,
    881       429,  430,   87,   87,   87,   87,   87,  434,  435,  431,
    882       436,   87,   87,   87,   87,  438,   87,  439,   87,   87,
    883 
    884       432,  433,  441,  443,  437,   87,   87,   87,  440,  442,
    885       444,  445,   87,   87,   87,  447,   87,  448,   87,   87,
    886       449,   87,   87,  450,   87,   87,   87,   87,  446,  451,
    887        87,  453,  452,  458,   87,   87,  143,   87,  454,  457,
    888        87,  456,  455,  464,   87,  462,   87,  459,  463,  460,
    889       721,   87,  461,  466,  467,  465,  468,  344,  201,  469,
    890       201,  360,  344,  361,  345,   87,  199,  211,  211,  211,
    891       211,  352,  352,  352,  352,  360,  518,  361,   87,   87,
    892        87,  371,  371,  371,  371,  371,  371,  370,  495,  370,
    893       523,   87,  371,  371,  371,  371,  371,  371,  496,   87,
    894 
    895       479,  490,  490,  490,  490,  490,  490,  233,  233,  233,
    896       233,  233,  233,  525,  495,  519,   87,  234,   87,  236,
    897        87,  237,  236,  242,  242,  242,  242,  105,  105,  498,
    898        87,  520,  495,  527,  491,  499,  499,  521,   87,  236,
    899       374,  236,  497,   87,  237,  542,  236,  375,  375,  375,
    900       375,  375,  375,  383,  498,   87,  377,   87,  495,  528,
    901       529,  499,  499,  234,  235,  236,  522,  237,  236,  378,
    902       378,  378,  378,  378,  378,   87,  385,  533,  386,   87,
    903       376,  538,  387,   87,  894,  236,  235,  236,  388,  500,
    904       237,  500,  236,   87,  501,  501,  501,  501,  501,  501,
    905 
    906       389,   87,  379,   87,  386,   87,  530,  385,  387,  386,
    907       524,   87,  526,  387,   87,   87,   87,   87,   87,  505,
    908       535,  531,  532,   87,   87,  540,   87,  502,   87,  534,
    909        87,  389,   87,  536,   87,  386,  541,  539,  543,  387,
    910       537,  547,  544,   87,  545,   87,   87,   87,  546,  549,
    911        87,   87,   87,   87,  553,  548,  551,   87,   87,   87,
    912       550,  552,   87,   87,   87,   87,  555,  559,  557,   87,
    913        87,   87,  554,  562,  556,   87,  560,  558,   87,   87,
    914       567,   87,   87,   87,  563,  561,  570,  566,  571,  564,
    915       565,  569,   87,  568,   87,   87,   87,  201,   87,   87,
    916 
    917       574,  630,   87,  580,   87,  573,  577,  572,  579,   87,
    918       575,  576,  211,  211,  211,  211,   87,  622,  578,  490,
    919       490,  490,  490,  490,  490,  375,  375,  375,  375,  375,
    920       375,  626,  645,  621,   87,  234,   87,  236,   87,  237,
    921       236,  378,  378,  378,  378,  378,  378,  495,   87,  602,
    922       495,  623,  491,  628,  624,  495,   87,  236,  492,  236,
    923       496,  598,  237,  598,  236,  601,  599,  599,  599,  599,
    924       599,  599,   87,  495,  493,  602,  495,  634,   87,   87,
    925       662,  495,  501,  501,  501,  501,  501,  501,  500,   87,
    926       500,  625,  627,  501,  501,  501,  501,  501,  501,  600,
    927 
    928       603,  603,  603,  603,  603,  603,   87,   87,   87,  631,
    929        87,   87,   87,   87,   87,  639,  604,  629,  605,  635,
    930       606,  605,  632,   87,  637,  638,   87,  633,  636,   87,
    931        87,   87,   87,  607,   87,  640,  641,  644,  605,  643,
    932       605,   87,   87,  606,   87,  605,  642,   87,  647,  648,
    933       646,   87,   87,   87,   87,   87,  650,  649,   87,  656,
    934       651,   87,   87,   87,   87,  653,   87,   87,   87,  652,
    935       654,  657,  658,  655,   87,  664,  663,  660,   87,  667,
    936        87,   87,   87,  659,  661,   87,   87,   87,   87,  668,
    937       666,  669,  762,  691,  691,  704,  665,   87,  894,  670,
    938 
    939       671,  490,  490,  490,  490,  490,  490,  599,  599,  599,
    940       599,  599,  599,  598,  707,  598,  691,   87,  599,  599,
    941       599,  599,  599,  599,  603,  603,  603,  603,  603,  603,
    942       706,  691,   87,   87,  597,  689,  689,  689,  689,  689,
    943       689,  692,   87,  692,   87,   87,  692,  702,  844,   87,
    944       711,  604,  709,  605,  691,  606,  605,  607,  705,   87,
    945       703,   87,  712,  692,   87,  692,   87,  708,  690,  710,
    946       692,   87,   87,  605,   87,  605,   87,  713,  606,   87,
    947       605,   87,  719,   87,   87,   87,  715,   87,  714,   87,
    948        87,  717,   87,   87,  716,   87,  722,   87,  718,  724,
    949 
    950       720,  727,   87,  725,  723,   87,  730,   87,   87,  726,
    951        87,   87,  728,   87,   87,  729,   87,  734,  735,  736,
    952        87,  755,  731,  737,  733,  738,   87,  894,   87,  739,
    953       754,  869,  732,  689,  689,  689,  689,  689,  689,  603,
    954       603,  603,  603,  603,  603,   87,   87,  753,  758,  604,
    955        87,  605,  756,  606,  605,  757,   87,   87,   87,  759,
    956       760,   87,   87,   87,  761,  765,  690,  764,  767,  770,
    957        87,  605,  693,  605,  763,   87,  606,   87,  605,  769,
    958       768,   87,   87,   87,  766,  771,   87,   87,  772,  773,
    959        87,   87,   87,  774,   87,   87,   87,   87,   87,  775,
    960 
    961       777,   87,   87,   87,   87,   87,  783,   87,  776,   87,
    962       778,  784,  781,  801,  780,  779,  800,  782,  689,  689,
    963       689,  689,  689,  689,  797,   87,  798,   87,  802,   87,
    964       799,  807,  805,  804,   87,   87,   87,   87,  808,  809,
    965       811,   87,   87,   87,  803,  812,   87,  806,  810,   87,
    966        87,  746,   87,   87,   87,  838,   87,   87,  813,   87,
    967        87,   87,   87,  833,  835,  836,   87,   87,   87,  814,
    968       839,  841,  815,  816,  831,  832,  834,   87,  840,  830,
    969       842,   87,   87,   87,  837,   87,   87,   87,   87,   87,
    970       857,  843,   87,   87,  845,  856,  861,   87,  858,   87,
    971 
    972        87,  846,  863,  864,   87,   87,   87,  855,   87,   87,
    973       859,  872,   87,  865,  862,  867,  860,  866,  870,   87,
    974        87,   87,  873,   87,  871,  874,  875,   87,   87,   87,
    975       876,  877,   87,   87,   87,  880,   87,  882,   87,  883,
    976        87,  878,   87,  881,  879,   87,   87,   87,   87,   87,
    977        87,  894,   87,  894,  887,  894,  894,  886,  868,  888,
    978       884,  885,  893,   87,   87,   87,  891,   87,   87,  889,
    979       890,  894,  892,   69,   69,   69,   69,   69,   69,   69,
    980        69,   69,   69,   69,   69,   69,   75,   75,   75,   75,
    981        75,   75,   75,   75,   75,   75,   75,   75,   75,   78,
    982 
    983        78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
    984        78,   78,   86,  894,  854,   86,  894,   86,   86,   86,
    985        86,   86,  140,  853,  894,  851,  140,  140,  140,  140,
    986       140,  140,  199,  199,  199,  199,  199,  199,  199,  199,
    987       199,  199,  199,  199,  199,  204,  894,  850,  204,  894,
    988       204,  204,  204,  204,  204,  208,  849,  208,  208,  894,
    989       208,  208,  208,  208,  208,  208,  848,  208,  216,   87,
    990        87,  216,  216,  216,  216,  216,  216,  216,  216,   87,
    991       216,  239,  239,  239,  239,  239,  239,  239,  239,  239,
    992       239,  239,  239,  239,  253,  253,  894,  253,  829,  894,
    993 
    994       828,  253,  269,  826,  894,  269,  824,  269,  269,  269,
    995       269,  269,  273,  894,  273,  822,  894,  820,  273,  275,
    996       818,  275,   87,   87,   87,  275,  348,   87,  348,   87,
    997        87,   87,  348,  350,   87,  350,   87,   87,   87,  350,
    998       354,   87,  354,  894,  796,  794,  354,  356,  894,  356,
    999       894,  791,  789,  356,  358,  787,  358,   87,   87,   87,
    1000       358,  365,   87,  365,   87,   87,   87,  365,  367,  752,
    1001       367,  749,  748,  746,  367,  382,  205,  382,  384,  384,
    1002       742,  384,  384,  384,  741,  384,  253,  253,  673,  253,
    1003       269,   87,   87,  269,   87,  269,  269,  269,  269,  269,
    1004 
    1005       394,   87,  394,   87,   87,   87,  394,  396,   87,  396,
    1006        87,   87,   87,  396,  398,   87,  398,   87,   87,   87,
    1007       398,  273,  700,  273,  400,  699,  400,  697,  695,  693,
    1008       400,  275,  601,  275,   86,  688,  687,   86,  685,   86,
    1009        86,   86,   86,   86,  199,  199,  199,  199,  199,  199,
    1010       199,  199,  199,  199,  199,  199,  199,  470,  470,  470,
    1011       470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
    1012       471,  683,  471,  681,  679,  677,  471,  473,  675,  473,
    1013       673,   87,   87,  473,  475,   87,  475,   87,   87,   87,
    1014       475,  348,   87,  348,  477,   87,  477,   87,   87,   87,
    1015 
    1016       477,  350,  620,  350,  480,  618,  480,  616,  614,  612,
    1017       480,  354,  610,  354,  482,  505,  482,  608,  608,  597,
    1018       482,  356,  596,  356,  484,  594,  484,  485,  485,  592,
    1019       484,  358,  590,  358,  486,  588,  486,  586,  584,  582,
    1020       486,  365,   87,  365,  488,   87,  488,   87,   87,   87,
    1021       488,  367,   87,  367,  494,   87,  494,   87,  494,  517,
    1022       494,  382,  515,  382,  513,  382,  511,  382,  384,  384,
    1023       509,  384,  384,  384,  507,  384,  506,  493,  506,  492,
    1024       489,  487,  506,  508,  361,  508,  361,  485,  483,  508,
    1025       510,  481,  510,  478,  476,  474,  510,  394,  472,  394,
    1026 
    1027       512,   87,  512,   87,   87,  402,  512,  396,  401,  396,
    1028       514,  399,  514,  397,  395,  270,  514,  398,  265,  398,
    1029       516,  264,  516,  391,  391,  252,  516,  400,  381,  400,
    1030        86,  381,  240,   86,  374,   86,   86,   86,   86,   86,
    1031       470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
    1032       470,  470,  470,  581,  368,  581,  366,  364,  360,  581,
    1033       471,  359,  471,  583,  357,  583,  355,  351,  349,  583,
    1034       473,  205,  473,  585,  201,  585,   87,  277,  276,  585,
    1035       475,  274,  475,  587,  270,  587,  265,  268,  265,  587,
    1036       477,  263,  477,  589,  262,  589,  261,  240,  232,  589,
    1037 
    1038       480,   85,  480,  591,   85,  591,   87,  205,  203,  591,
    1039       482,   85,  482,  484,  122,  484,  117,   87,  894,  484,
    1040       593,   70,  593,   70,  894,  894,  593,  486,  894,  486,
    1041       595,  894,  595,  894,  894,  894,  595,  488,  894,  488,
    1042       494,  894,  494,  894,  494,  894,  494,  384,  894,  384,
    1043       894,  894,  894,  384,  609,  894,  609,  894,  894,  894,
    1044       609,  506,  894,  506,  611,  894,  611,  894,  894,  894,
    1045       611,  508,  894,  508,  613,  894,  613,  894,  894,  894,
    1046       613,  510,  894,  510,  615,  894,  615,  894,  894,  894,
    1047       615,  512,  894,  512,  617,  894,  617,  894,  894,  894,
    1048 
    1049       617,  514,  894,  514,  619,  894,  619,  894,  894,  894,
    1050       619,  516,  894,  516,   86,  894,  894,   86,  894,   86,
    1051        86,   86,   86,   86,  672,  672,  672,  672,  672,  672,
    1052       672,  672,  672,  672,  672,  672,  672,  674,  894,  674,
    1053       894,  894,  894,  674,  581,  894,  581,  676,  894,  676,
    1054       894,  894,  894,  676,  583,  894,  583,  678,  894,  678,
    1055       894,  894,  894,  678,  585,  894,  585,  680,  894,  680,
    1056       894,  894,  894,  680,  587,  894,  587,  682,  894,  682,
    1057       894,  894,  894,  682,  589,  894,  589,  684,  894,  684,
    1058       894,  894,  894,  684,  591,  894,  591,  686,  894,  686,
    1059 
    1060       894,  894,  894,  686,  593,  894,  593,   86,  894,   86,
    1061       894,  894,  894,   86,  595,  894,  595,  494,  894,  494,
    1062       894,  894,  894,  494,  694,  894,  694,  894,  894,  894,
    1063       694,  609,  894,  609,  696,  894,  696,  894,  894,  894,
    1064       696,  611,  894,  611,  698,  894,  698,  894,  894,  894,
    1065       698,  613,  894,  613,  140,  894,  140,  894,  894,  894,
    1066       140,  615,  894,  615,  701,  894,  701,  617,  894,  617,
    1067        86,  894,  894,   86,  894,   86,   86,   86,   86,   86,
    1068       619,  894,  619,  672,  672,  672,  672,  672,  672,  672,
    1069       672,  672,  672,  672,  672,  672,  740,  894,  740,  894,
    1070 
    1071       894,  894,  740,  674,  894,  674,  204,  894,  204,  894,
    1072       894,  894,  204,  676,  894,  676,  743,  894,  743,  678,
    1073       894,  678,  204,  894,  894,  204,  894,  204,  204,  204,
    1074       204,  204,  680,  894,  680,  744,  894,  744,  682,  894,
    1075       682,  684,  894,  684,  745,  894,  745,  686,  894,  686,
    1076        86,  894,   86,  747,  894,  747,  894,  894,  894,  747,
    1077       694,  894,  694,  269,  894,  269,  894,  894,  894,  269,
    1078       696,  894,  696,  750,  894,  750,  698,  894,  698,  140,
    1079       894,  140,  751,  894,  751,  894,  894,  894,  751,   86,
    1080       894,  894,   86,  894,   86,   86,   86,   86,   86,  785,
    1081 
    1082       894,  785,  740,  894,  740,  204,  894,  204,  786,  894,
    1083       786,  894,  894,  894,  786,  788,  894,  788,  894,  894,
    1084       894,  788,  790,  894,  790,  894,  894,  894,  790,  792,
    1085       894,  792,  793,  894,  793,  894,  894,  894,  793,  795,
    1086       894,  795,  894,  894,  894,  795,  817,  894,  817,  894,
    1087       894,  894,  817,  819,  894,  819,  894,  894,  894,  819,
    1088       821,  894,  821,  894,  894,  894,  821,  823,  894,  823,
    1089       894,  894,  894,  823,  825,  894,  825,  894,  894,  894,
    1090       825,  827,  894,  827,  894,  894,  894,  827,  619,  894,
    1091       619,  894,  894,  894,  619,  847,  894,  847,  894,  894,
    1092 
    1093       894,  847,  680,  894,  680,  894,  894,  894,  680,  684,
    1094       894,  684,  894,  894,  894,  684,   86,  894,   86,  894,
    1095       894,  894,   86,  852,  894,  852,  894,  894,  894,  852,
    1096       140,  894,  140,  894,  894,  894,  140,  204,  894,  204,
    1097       894,  894,  894,  204,   11,  894,  894,  894,  894,  894,
    1098       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1099       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1100       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1101       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1102       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1103 
    1104       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1105       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1106       894,  894,  894,  894,  894,  894,  894,  894,  894,  894
     801       72,   72,   72,   72,   72,   72,   72,   72,   72,   73,
     802       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
     803       73,   73,   73,   73,   73,   72,   74,   72,   72,   73,
     804       75,   73,   73,   73,   73,   73,   73,   73,   73,   73,
     805       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
     806       73,   73,   73,   73,   73,   72,   72,   72,   72,   77,
     807       77,   80,   80,  124,  125,   91,  142,   80,   80,   88,
     808       77,   77,   81,   82,   83,   83,   83,   81,   83,   82,
     809
     810       84,   84,   84,   83,   92,   94,   88,  143,  147,   99,
     811       96,  100,  100,  100,  100,  100,  100,  255,  904,   95,
     812      101,   86,   97,   98,   86,  102,  162,  119,  144,   78,
     813       78,   78,   78,  145,  148,  103,  104,   88,  105,  105,
     814      105,  105,  106,  106,  120,   88,  121,  122,  149,  266,
     815      150,  267,  257,  263,  185,  107,  198,  648,  160,  108,
     816      161,  151,  152,  153,   88,  109,  110,  154,  155,  163,
     817      156,  111,   88,  157,  158,  146,  164,  107,   88,   88,
     818       88,  159,  165,  112,  209,   88,   88,   88,  197,   88,
     819       88,  109,  196,   88,  110,  104,  253,  113,  113,  113,
     820
     821      113,  113,  113,   88,  170,  178,  171,  199,  195,   88,
     822      210,  181,  166,  233,  107,  172,  167,  182,  114,  179,
     823      254,  168,   88,  261,  115,  169,  180,  173,   88,  144,
     824      116,   88,  251,  326,  145,  174,  107,  175,  252,  234,
     825      176,  144,  117,  266,  177,  267,  145,  262,  183,   88,
     826      115,  126,   88,  184,  252,  127,  128,   88,  129,  193,
     827      130,  131,  259,  132,  252,  133,   88,  283,  260,  186,
     828      187,  260,  251,   88,  134,  135,  136,   88,  190,  188,
     829      252,  266,  189,  267,  274,   88,  191,  268,  146,  259,
     830      337,  203,  204,  192,  260,  137,  203,  260,  138,  266,
     831
     832      904,  267,  194,  200,   82,   83,   83,   83,  200,   88,
     833      275,  201,  205,  205,  205,  205,  205,  205,   81,   82,
     834       83,   83,   83,   81,   88,  139,  140,  212,  213,  266,
     835      904,  267,  212,  285,  214,  258,  266,   88,  267,  214,
     836       83,   82,   83,   83,   83,   83,  303,   88,  215,  215,
     837      215,  215,   83,   82,   84,   84,   84,   83,  904,  214,
     838      244,  244,  244,  244,  244,  244,  245,  245,  245,  245,
     839      269,  266,  266,  267,  267,  216,  268,   88,  214,  266,
     840      270,  267,   88,  214,  214,   88,   88,  214,  214,  266,
     841      266,  267,  267,  286,  904,  214,   88,  317,  214,  246,
     842
     843      214,  217,  214,  284,  218,  220,   88,   88,  288,  221,
     844      222,  281,   88,   88,  223,  224,   88,  225,  282,  226,
     845       88,  327,  904,  301,  287,  289,   88,   88,  227,  228,
     846      229,  104,  306,  106,  106,  106,  106,  106,  106,  311,
     847       88,   88,  302,   88,   88,  307,   88,  304,  305,  230,
     848      107,  248,  231,  248,  309,   88,  249,  249,  249,  249,
     849      249,  249,  310,  308,  313,   88,  247,  312,   88,   88,
     850      314,   88,  107,   88,   88,   88,   88,  316,   88,   88,
     851      232,  236,  236,  236,  236,  236,  236,  319,  315,  250,
     852      318,  320,  325,  323,   88,  321,  322,  237,  238,  239,
     853
     854      324,  240,  239,  328,   88,  329,   88,   88,  144,  365,
     855       88,  366,   88,   88,  241,  330,  331,  333,  335,  239,
     856      238,  239,   88,  341,  240,  332,  239,  290,  291,  292,
     857      338,  293,  294,  336,  334,  295,   88,  296,   88,  351,
     858       88,  339,  297,  298,  299,   88,  300,   88,  385,  212,
     859      213,  343,   88,  347,  212,  342,  203,  204,  345,  344,
     860      346,  203,  365,  340,  366,  352,  395,  348,  200,   82,
     861       83,   83,   83,  200,  385,   88,  201,  205,  205,  205,
     862      205,  205,  205,  203,  204,  365,  904,  366,  203,  349,
     863      204,  365,  395,  366,  349,  414,  350,  357,  357,  357,
     864
     865      357,  365,  366,  366,  205,  205,  205,  205,  205,  205,
     866      205,  205,  205,  205,  205,  205,  365,  366,  366,  367,
     867      365,  382,  366,  365,  368,  366,  365,  374,  366,  365,
     868      358,  366,  365,   88,  366,  374,  374,  375,  266,  375,
     869      267,   88,  376,  376,  376,  376,  376,  376,  397,  378,
     870      374,  378,   88,  266,  378,  267,  420,  411,  374,  380,
     871      380,  380,  380,  380,  380,  104,  550,  245,  245,  245,
     872      245,  378,   88,  378,  398,  377,   88,  413,  378,  106,
     873      106,  106,  106,  106,  106,  249,  249,  249,  249,  249,
     874      249,   88,  381,   88,  409,   88,  107,  248,   88,  248,
     875
     876      246,   88,  249,  249,  249,  249,  249,  249,  408,  410,
     877      412,   88,  258,  423,   88,   88,  415,   88,  107,  383,
     878      383,  383,  383,  383,  383,  388,  427,  422,  106,  106,
     879      106,  106,  106,  106,  416,  237,   88,  239,  461,  240,
     880      239,  113,  113,  113,  113,  113,  113,   88,  390,  428,
     881      391,   88,  384,   88,  392,   88,   88,  239,  426,  239,
     882      393,  258,  240,   88,  239,  421,   88,  424,  425,   88,
     883       88,  417,  394,   88,  263,  432,  391,  418,  419,   88,
     884      392,  430,  429,   88,  431,   88,   88,   88,  433,  435,
     885      434,  436,  439,   88,   88,   88,   88,   88,  440,   88,
     886
     887      441,   88,  444,   88,  443,  442,  437,  438,  446,   88,
     888       88,   88,   88,  445,  448,  449,  447,  450,   88,   88,
     889       88,   88,  452,   88,  457,   88,   88,   88,   88,  453,
     890      455,  454,   88,   88,  451,  456,   88,   88,  459,   88,
     891       88,  464,  458,   88,  144,  463,   88,  462,  460,   88,
     892      469,   88,  470,   88,   88,  465,  474,   88,  468,  466,
     893      502,  467,  472,  204,  471,  473,  349,  204,  475,  202,
     894      503,  349,  476,  350,  214,  214,  214,  214,  357,  357,
     895      357,  357,  365,  365,  366,  366,  502,   88,   88,  376,
     896      376,  376,  376,  376,  376,  375,  502,  375,  525,  510,
     897
     898      376,  376,  376,  376,  376,  376,  504,  486,  497,  497,
     899      497,  497,  497,  497,  236,  236,  236,  236,  236,  236,
     900       88,   88,  502,  511,  237,   88,  239,   88,  240,  239,
     901      245,  245,  245,  245,  106,  106,  505,  526,  530,  528,
     902      527,  498,  506,  506,   88,   88,  239,  379,  239,   88,
     903       88,  240,   88,  239,  380,  380,  380,  380,  380,  380,
     904      388,  505,  534,  382,   88,  537,  532,  536,  506,  506,
     905      237,  238,  239,  529,  240,  239,  383,  383,  383,  383,
     906      383,  383,   88,  390,   88,  391,  904,  381,  545,  392,
     907      904,  904,  239,  238,  239,  393,  507,  240,  507,  239,
     908
     909      535,  508,  508,  508,  508,  508,  508,  394,   88,  384,
     910       88,  391,   88,   88,  390,  392,  391,  531,   88,  533,
     911      392,   88,   88,   88,   88,   88,  512,  542,  538,  539,
     912       88,   88,  547,   88,  509,  540,  541,   88,  394,   88,
     913      543,   88,  391,  548,  546,  549,  392,  544,   88,  551,
     914       88,   88,  552,   88,  554,  553,  556,   88,   88,   88,
     915      558,   88,  555,  557,   88,   88,   88,   88,  559,   88,
     916       88,   88,   88,   88,  562,  566,   88,  560,   88,  564,
     917      561,  570,   88,  563,  567,  565,   88,   88,   88,   88,
     918       88,  571,  568,  569,  578,  574,  572,  575,  573,  577,
     919
     920      576,   88,   88,   88,   88,   88,   88,  204,  579,   88,
     921      582,   88,  581,  589,  580,  587,  585,  502,  611,   88,
     922      583,  584,  588,   88,  631,  586,  214,  214,  214,  214,
     923      497,  497,  497,  497,  497,  497,  380,  380,  380,  380,
     924      380,  380,   88,  502,  611,   88,  237,   88,  239,   88,
     925      240,  239,  383,  383,  383,  383,  383,  383,   88,  630,
     926      632,  502,  634,  498,   88,   88,  502,  633,  239,  499,
     927      239,  503,  607,  240,  607,  239,  610,  608,  608,  608,
     928      608,  608,  608,   88,  642,  500,  635,  502,  637,   88,
     929       88,   88,  502,  508,  508,  508,  508,  508,  508,  507,
     930
     931       88,  507,  636,  639,  508,  508,  508,  508,  508,  508,
     932      609,  612,  612,  612,  612,  612,  612,   88,   88,   88,
     933       88,   88,   88,   88,  904,   88,   88,  613,  638,  614,
     934      644,  615,  614,  646,  641,   88,  647,   88,  640,   88,
     935      645,  643,   88,  651,  616,   88,  649,  650,  652,  614,
     936      653,  614,  654,   88,  615,   88,  614,   88,   88,  656,
     937       88,   88,  655,   88,   88,   88,   88,   88,   88,  659,
     938      657,   88,  658,  660,   88,  662,  665,  666,  661,   88,
     939      663,  664,   88,  667,   88,   88,   88,   88,   88,  668,
     940       88,  676,  669,  671,  672,  673,  677,   88,   88,  670,
     941
     942       88,   88,  675,   88,   88,  904,   88,  777,  674,  712,
     943      678,   88,  701,  701,  680,  679,  497,  497,  497,  497,
     944      497,  497,  713,  717,  716,  681,  608,  608,  608,  608,
     945      608,  608,  607,  701,  607,  701,   88,  608,  608,  608,
     946      608,  608,  608,  612,  612,  612,  612,  612,  612,  606,
     947      699,  699,  699,  699,  699,  699,  701,  702,   88,  702,
     948       88,   88,  702,   88,   88,  714,  613,   88,  614,  715,
     949      615,  614,  720,  731,  719,   88,  616,   88,  722,  702,
     950      721,  702,   88,  700,  718,   88,  702,   88,  614,   88,
     951      614,   88,   88,  615,   88,  614,   88,  725,  723,  724,
     952
     953       88,   88,   88,  729,   88,   88,  727,  732,   88,  726,
     954       88,  730,   88,  728,  734,   88,  733,  737,   88,   88,
     955      735,   88,   88,  879,  740,   88,  736,   88,   88,   88,
     956      744,   88,  745,  738,  739,   88,  746,  748,  741,  743,
     957       88,  747,   88,   88,  749,  764,  742,  699,  699,  699,
     958      699,  699,  699,  612,  612,  612,  612,  612,  612,   88,
     959       88,  763,  768,  613,   88,  614,  766,  615,  614,  765,
     960       88,   88,  783,   88,  769,  767,  770,   88,  771,   88,
     961      700,   88,   88,  772,  780,  614,  703,  614,  774,   88,
     962      615,   88,  614,   88,  773,   88,  775,   88,  778,   88,
     963
     964      779,   88,  781,  776,   88,   88,   88,  784,   88,   88,
     965       88,  791,   88,   88,  782,  787,   88,  785,   88,  904,
     966       88,  793,   88,  809,   88,  794,  786,  788,  790,   88,
     967       88,   88,  789,  792,  699,  699,  699,  699,  699,  699,
     968      807,  808,   88,   88,  810,  812,  815,  813,   88,  817,
     969       88,   88,  811,  818,  819,   88,   88,  814,   88,  821,
     970       88,  816,  820,  822,   88,   88,   88,  756,   88,   88,
     971      848,   88,   88,  823,   88,  843,   88,   88,   88,  845,
     972       88,  846,   88,   88,  904,  849,   88,  824,  825,  826,
     973      841,   88,  842,  844,  851,  840,   88,   88,  847,   88,
     974
     975      852,   88,  854,   88,   88,  850,   88,   88,  853,   88,
     976      867,   88,  855,  866,   88,   88,   88,  871,  868,  856,
     977       88,   88,   88,  873,  874,  865,  904,   88,  876,  869,
     978       88,  875,  872,   88,   88,  870,  877,  882,  881,  880,
     979       88,   88,   88,   88,   88,  885,  884,  886,   88,   88,
     980      883,  887,   88,   88,   88,  890,   88,  892,   88,   88,
     981       88,  893,   88,  888,  889,   88,  891,   88,   88,  897,
     982       88,   88,   88,  904,  878,  894,   88,  896,  898,   88,
     983      895,   88,  903,   88,   88,  904,  901,  904,  864,  899,
     984      904,  900,  863,  902,   70,   70,   70,   70,   70,   70,
     985
     986       70,   70,   70,   70,   70,   70,   70,   76,   76,   76,
     987       76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
     988       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
     989       79,   79,   79,   87,  904,  861,   87,  904,   87,   87,
     990       87,   87,   87,  141,  860,  904,  859,  141,  141,  141,
     991      141,  141,  141,  202,  202,  202,  202,  202,  202,  202,
     992      202,  202,  202,  202,  202,  202,  207,  904,  858,  207,
     993       88,  207,  207,  207,  207,  207,  211,   88,  211,  211,
     994       88,  211,  211,  211,  211,  211,  211,  904,  211,  219,
     995      839,  904,  219,  219,  219,  219,  219,  219,  219,  219,
     996
     997      838,  219,  242,  242,  242,  242,  242,  242,  242,  242,
     998      242,  242,  242,  242,  242,  256,  256,  836,  256,  904,
     999      834,  904,  256,  272,  832,  904,  272,  830,  272,  272,
     1000      272,  272,  272,  276,  828,  276,   88,   88,   88,  276,
     1001      278,   88,  278,   88,   88,   88,  278,  353,   88,  353,
     1002       88,   88,   88,  353,  355,   88,  355,  904,  806,  804,
     1003      355,  359,  904,  359,  904,  801,  799,  359,  361,  797,
     1004      361,   88,   88,   88,  361,  363,   88,  363,   88,   88,
     1005       88,  363,  370,  762,  370,  759,  758,  756,  370,  372,
     1006      208,  372,  752,  751,  683,  372,  387,   88,  387,  389,
     1007
     1008      389,   88,  389,  389,  389,   88,  389,  256,  256,   88,
     1009      256,  272,   88,   88,  272,   88,  272,  272,  272,  272,
     1010      272,  399,   88,  399,   88,   88,   88,  399,  401,   88,
     1011      401,   88,   88,   88,  401,  403,   88,  403,  710,  709,
     1012      707,  403,  276,  705,  276,  405,  703,  405,  610,  698,
     1013      697,  405,  278,  695,  278,   87,  693,  691,   87,  689,
     1014       87,   87,   87,   87,   87,  202,  202,  202,  202,  202,
     1015      202,  202,  202,  202,  202,  202,  202,  202,  477,  477,
     1016      477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
     1017      477,  478,  687,  478,  685,  683,   88,  478,  480,   88,
     1018
     1019      480,   88,   88,   88,  480,  482,   88,  482,   88,   88,
     1020       88,  482,  353,   88,  353,  484,   88,  484,   88,  629,
     1021      627,  484,  355,  625,  355,  487,  623,  487,  621,  619,
     1022      512,  487,  359,  617,  359,  489,  617,  489,  606,  605,
     1023      603,  489,  361,  492,  361,  491,  492,  491,  601,  599,
     1024      597,  491,  363,  595,  363,  493,  593,  493,  591,   88,
     1025       88,  493,  370,   88,  370,  495,   88,  495,   88,   88,
     1026       88,  495,  372,   88,  372,  501,  524,  501,  522,  501,
     1027      520,  501,  387,  518,  387,  516,  387,  514,  387,  389,
     1028      389,  500,  389,  389,  389,  499,  389,  513,  496,  513,
     1029
     1030      494,  366,  366,  513,  515,  492,  515,  490,  488,  485,
     1031      515,  517,  483,  517,  481,  479,   88,  517,  399,   88,
     1032      399,  519,   88,  519,  407,  406,  404,  519,  401,  402,
     1033      401,  521,  400,  521,  273,  268,  267,  521,  403,  396,
     1034      403,  523,  396,  523,  255,  386,  386,  523,  405,  243,
     1035      405,   87,  379,  373,   87,  371,   87,   87,   87,   87,
     1036       87,  477,  477,  477,  477,  477,  477,  477,  477,  477,
     1037      477,  477,  477,  477,  590,  369,  590,  365,  364,  362,
     1038      590,  478,  360,  478,  592,  356,  592,  354,  208,  204,
     1039      592,  480,   88,  480,  594,  280,  594,  279,  277,  273,
     1040
     1041      594,  482,  268,  482,  596,  271,  596,  268,  266,  265,
     1042      596,  484,  264,  484,  598,  243,  598,  235,   86,   86,
     1043      598,  487,   88,  487,  600,  208,  600,  206,   86,  123,
     1044      600,  489,  118,  489,  491,   88,  491,  904,   71,   71,
     1045      491,  602,  904,  602,  904,  904,  904,  602,  493,  904,
     1046      493,  604,  904,  604,  904,  904,  904,  604,  495,  904,
     1047      495,  501,  904,  501,  904,  501,  904,  501,  389,  904,
     1048      389,  904,  904,  904,  389,  618,  904,  618,  904,  904,
     1049      904,  618,  513,  904,  513,  620,  904,  620,  904,  904,
     1050      904,  620,  515,  904,  515,  622,  904,  622,  904,  904,
     1051
     1052      904,  622,  517,  904,  517,  624,  904,  624,  904,  904,
     1053      904,  624,  519,  904,  519,  626,  904,  626,  904,  904,
     1054      904,  626,  521,  904,  521,  628,  904,  628,  904,  904,
     1055      904,  628,  523,  904,  523,   87,  904,  904,   87,  904,
     1056       87,   87,   87,   87,   87,  682,  682,  682,  682,  682,
     1057      682,  682,  682,  682,  682,  682,  682,  682,  684,  904,
     1058      684,  904,  904,  904,  684,  590,  904,  590,  686,  904,
     1059      686,  904,  904,  904,  686,  592,  904,  592,  688,  904,
     1060      688,  904,  904,  904,  688,  594,  904,  594,  690,  904,
     1061      690,  904,  904,  904,  690,  596,  904,  596,  692,  904,
     1062
     1063      692,  904,  904,  904,  692,  598,  904,  598,  694,  904,
     1064      694,  904,  904,  904,  694,  600,  904,  600,  696,  904,
     1065      696,  904,  904,  904,  696,  602,  904,  602,   87,  904,
     1066       87,  904,  904,  904,   87,  604,  904,  604,  501,  904,
     1067      501,  904,  904,  904,  501,  704,  904,  704,  904,  904,
     1068      904,  704,  618,  904,  618,  706,  904,  706,  904,  904,
     1069      904,  706,  620,  904,  620,  708,  904,  708,  904,  904,
     1070      904,  708,  622,  904,  622,  141,  904,  141,  904,  904,
     1071      904,  141,  624,  904,  624,  711,  904,  711,  626,  904,
     1072      626,   87,  904,  904,   87,  904,   87,   87,   87,   87,
     1073
     1074       87,  628,  904,  628,  682,  682,  682,  682,  682,  682,
     1075      682,  682,  682,  682,  682,  682,  682,  750,  904,  750,
     1076      904,  904,  904,  750,  684,  904,  684,  207,  904,  207,
     1077      904,  904,  904,  207,  686,  904,  686,  753,  904,  753,
     1078      688,  904,  688,  207,  904,  904,  207,  904,  207,  207,
     1079      207,  207,  207,  690,  904,  690,  754,  904,  754,  692,
     1080      904,  692,  694,  904,  694,  755,  904,  755,  696,  904,
     1081      696,   87,  904,   87,  757,  904,  757,  904,  904,  904,
     1082      757,  704,  904,  704,  272,  904,  272,  904,  904,  904,
     1083      272,  706,  904,  706,  760,  904,  760,  708,  904,  708,
     1084
     1085      141,  904,  141,  761,  904,  761,  904,  904,  904,  761,
     1086       87,  904,  904,   87,  904,   87,   87,   87,   87,   87,
     1087      795,  904,  795,  750,  904,  750,  207,  904,  207,  796,
     1088      904,  796,  904,  904,  904,  796,  798,  904,  798,  904,
     1089      904,  904,  798,  800,  904,  800,  904,  904,  904,  800,
     1090      802,  904,  802,  803,  904,  803,  904,  904,  904,  803,
     1091      805,  904,  805,  904,  904,  904,  805,  827,  904,  827,
     1092      904,  904,  904,  827,  829,  904,  829,  904,  904,  904,
     1093      829,  831,  904,  831,  904,  904,  904,  831,  833,  904,
     1094      833,  904,  904,  904,  833,  835,  904,  835,  904,  904,
     1095
     1096      904,  835,  837,  904,  837,  904,  904,  904,  837,  628,
     1097      904,  628,  904,  904,  904,  628,  857,  904,  857,  904,
     1098      904,  904,  857,  690,  904,  690,  904,  904,  904,  690,
     1099      694,  904,  694,  904,  904,  904,  694,   87,  904,   87,
     1100      904,  904,  904,   87,  862,  904,  862,  904,  904,  904,
     1101      862,  141,  904,  141,  904,  904,  904,  141,  207,  904,
     1102      207,  904,  904,  904,  207,   11,  904,  904,  904,  904,
     1103      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1104      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1105      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1106
     1107      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1108      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1109      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1110      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1111      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1112      904
    11071113    } ;
    11081114
    1109 static yyconst flex_int16_t yy_chk[2931] =
     1115static yyconst flex_int16_t yy_chk[2952] =
    11101116    {   0,
    11111117        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11281134        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11291135        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
    1130         8,    9,   10,   37,   37,   20,   39,    9,   10,  893,
     1136        8,    9,   10,   37,   37,   20,   39,    9,   10,  903,
    11311137        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
    11321138
    11331139       15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
    1134        27,   28,   28,   28,   28,   28,   28,  109,  115,   25,
     1140       27,   28,   28,   28,   28,   28,   28,  110,  116,   25,
    11351141       29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
    11361142        8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
    1137        30,   30,   30,   30,   35,   57,   35,   35,   44,  126,
    1138        44,  126,  109,  115,   57,   30,   64,   56,   47,   30,
     1143       30,   30,   30,   30,   35,   57,   35,   35,   44,  127,
     1144       44,  127,  110,  116,   57,   30,   65,  544,   47,   30,
    11391145       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
    1140        45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
    1141        62,   45,   49,   30,   73,  892,  127,   53,  127,   51,
    1142        61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
    1143 
    1144        31,   31,   31,   50,   51,   53,   51,   64,   61,   54,
    1145        73,   55,   50,   87,   31,   51,   50,   55,   31,   54,
    1146       108,   50,   52,  114,   31,   50,   54,   52,  175,  129,
    1147        31,  129,  107,  154,  151,   52,   31,   52,  107,   87,
    1148        52,   60,   31,  132,   52,  132,   60,  114,  175,  154,
    1149        31,   38,  151,  387,  111,   38,   38,   58,   38,   60,
    1150        38,   38,  113,   38,  107,   38,   59,  130,  113,   58,
    1151        58,  116,  111,  164,   38,   38,   38,  387,   59,   58,
    1152       111,  130,   58,  130,  142,   60,   59,  131,   60,  116,
    1153       164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
    1154 
    1155       110,  131,   60,   67,   67,   67,   67,   67,   67,  884,
    1156       142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
    1157        80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
    1158       110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
    1159        82,   82,   82,   82,   82,   82,  883,  243,   77,   77,
    1160        77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
    1161       103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
    1162       133,  133,  137,  133,  137,   77,  145,  139,   77,  139,
    1163       157,  145,  243,   77,   77,  152,  156,   77,   77,  155,
    1164       166,  150,  157,  880,  104,   77,  159,  168,   77,  104,
    1165 
    1166        77,   77,   77,  152,   77,   85,  150,  155,  156,   85,
    1167        85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
    1168       145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
    1169        85,  105,  163,  105,  105,  105,  105,  105,  105,  879,
    1170       160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
    1171       105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
    1172       106,  106,  180,  171,  170,  173,  105,  176,  177,  170,
    1173       172,  181,  105,  174,  184,  187,  181,  182,  179,  180,
    1174        85,   99,   99,   99,   99,   99,   99,  170,  187,  106,
    1175       177,  174,  184,  179,  176,  183,  190,   99,   99,   99,
    1176 
    1177       179,   99,   99,  189,  182,  186,  183,  191,  189,  218,
    1178       186,  218,  185,  188,   99,  190,  183,  183,  284,   99,
    1179        99,   99,  158,  185,   99,  186,   99,  158,  158,  158,
    1180       189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
    1181       185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
    1182       220,  191,  198,  198,  191,  192,  205,  198,  193,  877,
    1183       193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
    1184       248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
    1185       202,  223,  205,  223,  202,  221,  202,  221,  200,  200,
    1186       200,  200,  200,  200,  209,  209,  248,  876,  222,  209,
    1187 
    1188       202,  202,  202,  202,  202,  202,  212,  212,  212,  212,
    1189       222,  286,  222,  224,  224,  225,  224,  225,  226,  226,
    1190       226,  228,  229,  228,  229,  234,  234,  235,  236,  235,
    1191       869,  286,  235,  235,  235,  235,  235,  235,  237,  212,
    1192       237,  282,  242,  237,  242,  242,  242,  242,  234,  256,
    1193       270,  236,  241,  241,  241,  241,  241,  241,  282,  266,
    1194       237,  266,  237,  296,  267,  235,  267,  237,  281,  244,
    1195       244,  244,  244,  244,  244,  256,  270,  242,  245,  245,
    1196       245,  245,  245,  245,  281,  241,  244,  247,  278,  247,
    1197       296,  295,  247,  247,  247,  247,  247,  247,  279,  280,
    1198 
    1199       283,  278,  244,  288,  295,  283,  289,  868,  244,  246,
    1200       246,  246,  246,  246,  246,  253,  279,  280,  255,  255,
    1201       255,  255,  255,  255,  289,  246,  288,  246,  291,  246,
    1202       246,  260,  260,  260,  260,  260,  260,  290,  253,  292,
    1203       253,  285,  246,  291,  253,  867,  285,  246,  294,  246,
    1204       253,  255,  246,  287,  246,  292,  292,  294,  297,  299,
    1205       293,  303,  253,  290,  260,  293,  253,  300,  287,  301,
    1206       253,  304,  300,  302,  287,  287,  297,  299,  301,  305,
    1207       302,  303,  306,  307,  308,  309,  310,  306,  307,  304,
    1208       308,  311,  312,  313,  314,  310,  318,  311,  315,  319,
    1209 
    1210       305,  305,  313,  315,  309,  316,  317,  320,  312,  314,
    1211       316,  317,  322,  324,  323,  318,  326,  319,  325,  327,
    1212       320,  328,  329,  322,  330,  331,  332,  334,  317,  323,
    1213       333,  325,  324,  330,  337,  335,  338,  339,  326,  329,
    1214       340,  328,  327,  337,  343,  334,  341,  331,  335,  332,
    1215       639,  342,  333,  340,  341,  339,  342,  344,  344,  343,
    1216       345,  362,  344,  362,  344,  403,  345,  352,  352,  352,
    1217       352,  353,  353,  353,  353,  363,  403,  363,  639,  408,
    1218       338,  370,  370,  370,  370,  370,  370,  372,  382,  372,
    1219       408,  410,  372,  372,  372,  372,  372,  372,  382,  404,
    1220 
    1221       352,  371,  371,  371,  371,  371,  371,  374,  374,  374,
    1222       374,  374,  374,  410,  382,  404,  405,  371,  406,  371,
    1223       412,  371,  371,  377,  377,  377,  377,  377,  377,  385,
    1224       425,  405,  383,  412,  371,  385,  389,  406,  414,  371,
    1225       374,  371,  383,  413,  371,  425,  371,  375,  375,  375,
    1226       375,  375,  375,  384,  389,  417,  377,  407,  383,  413,
    1227       414,  385,  389,  375,  375,  375,  407,  375,  375,  378,
    1228       378,  378,  378,  378,  378,  421,  384,  417,  384,  866,
    1229       375,  421,  384,  865,  388,  375,  375,  375,  384,  386,
    1230       375,  386,  375,  415,  386,  386,  386,  386,  386,  386,
    1231 
    1232       384,  409,  378,  411,  384,  416,  415,  388,  384,  388,
    1233       409,  418,  411,  388,  423,  419,  422,  424,  420,  388,
    1234       419,  416,  416,  431,  427,  423,  432,  386,  433,  418,
    1235       429,  388,  434,  420,  441,  388,  424,  422,  427,  388,
    1236       420,  433,  429,  435,  431,  436,  439,  437,  432,  435,
    1237       442,  443,  444,  445,  441,  434,  437,  446,  447,  449,
    1238       436,  439,  451,  453,  452,  456,  443,  447,  445,  454,
    1239       455,  457,  442,  452,  444,  458,  449,  446,  459,  460,
    1240       457,  461,  462,  463,  453,  451,  460,  456,  461,  454,
    1241       455,  459,  464,  458,  465,  466,  468,  470,  528,  469,
    1242 
    1243       464,  528,  861,  470,  519,  463,  466,  462,  469,  524,
    1244       464,  465,  479,  479,  479,  479,  518,  519,  468,  490,
    1245       490,  490,  490,  490,  490,  492,  492,  492,  492,  492,
    1246       492,  524,  544,  518,  522,  490,  521,  490,  544,  490,
    1247       490,  493,  493,  493,  493,  493,  493,  497,  526,  498,
    1248       494,  521,  490,  526,  522,  496,  532,  490,  492,  490,
    1249       494,  495,  490,  495,  490,  496,  495,  495,  495,  495,
    1250       495,  495,  567,  497,  493,  498,  494,  532,  523,  525,
    1251       567,  496,  500,  500,  500,  500,  500,  500,  502,  529,
    1252       502,  523,  525,  502,  502,  502,  502,  502,  502,  495,
    1253 
    1254       501,  501,  501,  501,  501,  501,  527,  530,  531,  529,
    1255       533,  857,  536,  535,  539,  537,  501,  527,  501,  533,
    1256       501,  501,  530,  534,  535,  536,  538,  531,  534,  540,
    1257       541,  547,  542,  501,  548,  538,  539,  542,  501,  541,
    1258       501,  545,  549,  501,  537,  501,  540,  550,  547,  548,
    1259       545,  552,  553,  554,  558,  555,  550,  549,  557,  558,
    1260       552,  563,  560,  561,  564,  554,  568,  565,  569,  553,
    1261       555,  560,  561,  557,  570,  569,  568,  564,  571,  572,
    1262       574,  575,  577,  563,  565,  572,  713,  578,  622,  574,
    1263       571,  575,  713,  604,  604,  622,  570,  625,  854,  577,
    1264 
    1265       578,  597,  597,  597,  597,  597,  597,  598,  598,  598,
    1266       598,  598,  598,  600,  625,  600,  604,  624,  600,  600,
    1267       600,  600,  600,  600,  603,  603,  603,  603,  603,  603,
    1268       624,  605,  814,  629,  597,  599,  599,  599,  599,  599,
    1269       599,  606,  621,  606,  626,  627,  606,  621,  814,  623,
    1270       629,  599,  627,  599,  605,  599,  599,  603,  623,  630,
    1271       621,  628,  630,  606,  631,  606,  632,  626,  599,  628,
    1272       606,  633,  634,  599,  635,  599,  636,  631,  599,  637,
    1273       599,  640,  637,  638,  641,  643,  633,  644,  632,  647,
    1274       642,  635,  645,  648,  634,  705,  640,  649,  636,  642,
    1275 
    1276       638,  645,  653,  643,  641,  654,  649,  656,  659,  644,
    1277       667,  660,  647,  668,  671,  648,  670,  659,  660,  667,
    1278       703,  705,  653,  668,  656,  670,  702,  853,  708,  671,
    1279       703,  852,  654,  689,  689,  689,  689,  689,  689,  693,
    1280       693,  693,  693,  693,  693,  706,  711,  702,  708,  689,
    1281       707,  689,  706,  689,  689,  707,  709,  710,  715,  709,
    1282       710,  714,  716,  717,  711,  716,  689,  715,  718,  721,
    1283       720,  689,  693,  689,  714,  723,  689,  719,  689,  720,
    1284       719,  724,  722,  725,  717,  722,  726,  727,  723,  724,
    1285       735,  728,  731,  725,  734,  721,  736,  718,  738,  726,
    1286 
    1287       728,  760,  739,  761,  757,  762,  738,  764,  727,  758,
    1288       731,  739,  735,  761,  734,  731,  760,  736,  746,  746,
    1289       746,  746,  746,  746,  757,  759,  758,  763,  762,  765,
    1290       759,  767,  765,  764,  766,  769,  771,  773,  769,  771,
    1291       773,  772,  774,  775,  763,  774,  776,  766,  772,  778,
    1292       782,  746,  797,  799,  802,  807,  810,  800,  775,  767,
    1293       801,  803,  804,  801,  803,  804,  806,  808,  811,  776,
    1294       808,  811,  778,  782,  799,  800,  802,  812,  810,  797,
    1295       812,  807,  813,  815,  806,  816,  831,  833,  832,  834,
    1296       833,  813,  835,  836,  815,  832,  836,  837,  834,  840,
    1297 
    1298       843,  816,  840,  843,  844,  845,  846,  831,  858,  855,
    1299       835,  858,  859,  844,  837,  846,  835,  845,  855,  856,
    1300       860,  870,  859,  862,  856,  860,  862,  863,  864,  871,
    1301       863,  864,  872,  873,  874,  872,  875,  874,  878,  875,
    1302       881,  870,  882,  873,  871,  885,  886,  887,  889,  888,
    1303       890,  851,  891,  850,  885,  849,  848,  882,  847,  886,
    1304       878,  881,  891,  842,  841,  839,  889,  838,  830,  887,
    1305       888,  829,  890,  895,  895,  895,  895,  895,  895,  895,
    1306       895,  895,  895,  895,  895,  895,  896,  896,  896,  896,
    1307       896,  896,  896,  896,  896,  896,  896,  896,  896,  897,
    1308 
    1309       897,  897,  897,  897,  897,  897,  897,  897,  897,  897,
    1310       897,  897,  898,  828,  827,  898,  826,  898,  898,  898,
    1311       898,  898,  899,  825,  824,  823,  899,  899,  899,  899,
    1312       899,  899,  900,  900,  900,  900,  900,  900,  900,  900,
    1313       900,  900,  900,  900,  900,  901,  822,  821,  901,  820,
    1314       901,  901,  901,  901,  901,  902,  819,  902,  902,  818,
    1315       902,  902,  902,  902,  902,  902,  817,  902,  903,  809,
    1316       805,  903,  903,  903,  903,  903,  903,  903,  903,  798,
    1317       903,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1318       904,  904,  904,  904,  905,  905,  796,  905,  795,  794,
    1319 
    1320       793,  905,  906,  792,  791,  906,  790,  906,  906,  906,
    1321       906,  906,  907,  789,  907,  788,  787,  786,  907,  908,
    1322       785,  908,  784,  783,  781,  908,  909,  780,  909,  779,
    1323       777,  770,  909,  910,  768,  910,  756,  755,  754,  910,
    1324       911,  753,  911,  752,  751,  750,  911,  912,  749,  912,
    1325       748,  745,  744,  912,  913,  743,  913,  737,  733,  732,
    1326       913,  914,  730,  914,  729,  712,  704,  914,  915,  701,
    1327       915,  696,  694,  690,  915,  916,  680,  916,  917,  917,
    1328       676,  917,  917,  917,  674,  917,  918,  918,  672,  918,
    1329       919,  669,  666,  919,  665,  919,  919,  919,  919,  919,
    1330 
    1331       920,  664,  920,  663,  662,  661,  920,  921,  658,  921,
    1332       657,  655,  652,  921,  922,  651,  922,  650,  646,  619,
    1333       922,  923,  615,  923,  924,  613,  924,  611,  609,  607,
    1334       924,  925,  601,  925,  926,  595,  593,  926,  591,  926,
    1335       926,  926,  926,  926,  927,  927,  927,  927,  927,  927,
    1336       927,  927,  927,  927,  927,  927,  927,  928,  928,  928,
    1337       928,  928,  928,  928,  928,  928,  928,  928,  928,  928,
    1338       929,  589,  929,  587,  585,  583,  929,  930,  581,  930,
    1339       580,  579,  576,  930,  931,  573,  931,  566,  562,  559,
    1340       931,  932,  556,  932,  933,  551,  933,  546,  543,  520,
    1341 
    1342       933,  934,  516,  934,  935,  514,  935,  512,  510,  508,
    1343       935,  936,  506,  936,  937,  505,  937,  504,  503,  491,
    1344       937,  938,  488,  938,  939,  486,  939,  485,  484,  482,
    1345       939,  940,  480,  940,  941,  477,  941,  475,  473,  471,
    1346       941,  942,  467,  942,  943,  450,  943,  448,  440,  438,
    1347       943,  944,  430,  944,  945,  428,  945,  426,  945,  400,
    1348       945,  946,  398,  946,  396,  946,  394,  946,  947,  947,
    1349       393,  947,  947,  947,  392,  947,  948,  379,  948,  376,
    1350       367,  365,  948,  949,  364,  949,  360,  358,  356,  949,
    1351       950,  354,  950,  350,  348,  347,  950,  951,  346,  951,
    1352 
    1353       952,  336,  952,  321,  298,  277,  952,  953,  275,  953,
    1354       954,  273,  954,  272,  271,  269,  954,  955,  268,  955,
    1355       956,  263,  956,  259,  258,  254,  956,  957,  251,  957,
    1356       958,  250,  239,  958,  238,  958,  958,  958,  958,  958,
    1357       959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
    1358       959,  959,  959,  960,  231,  960,  230,  227,  217,  960,
    1359       961,  215,  961,  962,  214,  962,  213,  207,  206,  962,
    1360       963,  204,  963,  964,  199,  964,  178,  149,  147,  964,
    1361       965,  146,  965,  966,  140,  966,  138,  136,  128,  966,
    1362       967,  125,  967,  968,  124,  968,  120,  101,   98,  968,
    1363 
    1364       969,   95,  969,  970,   93,  970,   86,   72,   70,  970,
    1365       971,   66,  971,  972,   36,  972,   33,   18,   11,  972,
    1366       973,    4,  973,    3,    0,    0,  973,  974,    0,  974,
    1367       975,    0,  975,    0,    0,    0,  975,  976,    0,  976,
    1368       977,    0,  977,    0,  977,    0,  977,  978,    0,  978,
    1369         0,    0,    0,  978,  979,    0,  979,    0,    0,    0,
    1370       979,  980,    0,  980,  981,    0,  981,    0,    0,    0,
    1371       981,  982,    0,  982,  983,    0,  983,    0,    0,    0,
    1372       983,  984,    0,  984,  985,    0,  985,    0,    0,    0,
    1373       985,  986,    0,  986,  987,    0,  987,    0,    0,    0,
    1374 
    1375       987,  988,    0,  988,  989,    0,  989,    0,    0,    0,
    1376       989,  990,    0,  990,  991,    0,    0,  991,    0,  991,
    1377       991,  991,  991,  991,  992,  992,  992,  992,  992,  992,
    1378       992,  992,  992,  992,  992,  992,  992,  993,    0,  993,
    1379         0,    0,    0,  993,  994,    0,  994,  995,    0,  995,
    1380         0,    0,    0,  995,  996,    0,  996,  997,    0,  997,
    1381         0,    0,    0,  997,  998,    0,  998,  999,    0,  999,
    1382         0,    0,    0,  999, 1000,    0, 1000, 1001,    0, 1001,
    1383         0,    0,    0, 1001, 1002,    0, 1002, 1003,    0, 1003,
    1384         0,    0,    0, 1003, 1004,    0, 1004, 1005,    0, 1005,
    1385 
    1386         0,    0,    0, 1005, 1006,    0, 1006, 1007,    0, 1007,
    1387         0,    0,    0, 1007, 1008,    0, 1008, 1009,    0, 1009,
    1388         0,    0,    0, 1009, 1010,    0, 1010,    0,    0,    0,
    1389      1010, 1011,    0, 1011, 1012,    0, 1012,    0,    0,    0,
    1390      1012, 1013,    0, 1013, 1014,    0, 1014,    0,    0,    0,
    1391      1014, 1015,    0, 1015, 1016,    0, 1016,    0,    0,    0,
    1392      1016, 1017,    0, 1017, 1018,    0, 1018, 1019,    0, 1019,
    1393      1020,    0,    0, 1020,    0, 1020, 1020, 1020, 1020, 1020,
    1394      1021,    0, 1021, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
    1395      1022, 1022, 1022, 1022, 1022, 1022, 1023,    0, 1023,    0,
    1396 
    1397         0,    0, 1023, 1024,    0, 1024, 1025,    0, 1025,    0,
    1398         0,    0, 1025, 1026,    0, 1026, 1027,    0, 1027, 1028,
    1399         0, 1028, 1029,    0,    0, 1029,    0, 1029, 1029, 1029,
    1400      1029, 1029, 1030,    0, 1030, 1031,    0, 1031, 1032,    0,
    1401      1032, 1033,    0, 1033, 1034,    0, 1034, 1035,    0, 1035,
    1402      1036,    0, 1036, 1037,    0, 1037,    0,    0,    0, 1037,
    1403      1038,    0, 1038, 1039,    0, 1039,    0,    0,    0, 1039,
    1404      1040,    0, 1040, 1041,    0, 1041, 1042,    0, 1042, 1043,
    1405         0, 1043, 1044,    0, 1044,    0,    0,    0, 1044, 1045,
    1406         0,    0, 1045,    0, 1045, 1045, 1045, 1045, 1045, 1046,
    1407 
    1408         0, 1046, 1047,    0, 1047, 1048,    0, 1048, 1049,    0,
    1409      1049,    0,    0,    0, 1049, 1050,    0, 1050,    0,    0,
    1410         0, 1050, 1051,    0, 1051,    0,    0,    0, 1051, 1052,
    1411         0, 1052, 1053,    0, 1053,    0,    0,    0, 1053, 1054,
    1412         0, 1054,    0,    0,    0, 1054, 1055,    0, 1055,    0,
    1413         0,    0, 1055, 1056,    0, 1056,    0,    0,    0, 1056,
    1414      1057,    0, 1057,    0,    0,    0, 1057, 1058,    0, 1058,
    1415         0,    0,    0, 1058, 1059,    0, 1059,    0,    0,    0,
    1416      1059, 1060,    0, 1060,    0,    0,    0, 1060, 1061,    0,
    1417      1061,    0,    0,    0, 1061, 1062,    0, 1062,    0,    0,
    1418 
    1419         0, 1062, 1063,    0, 1063,    0,    0,    0, 1063, 1064,
    1420         0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,    0,
    1421         0,    0, 1065, 1066,    0, 1066,    0,    0,    0, 1066,
    1422      1067,    0, 1067,    0,    0,    0, 1067, 1068,    0, 1068,
    1423         0,    0,    0, 1068,  894,  894,  894,  894,  894,  894,
    1424       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1425       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1426       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1427       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1428       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1429 
    1430       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1431       894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1432       894,  894,  894,  894,  894,  894,  894,  894,  894,  894
     1146       45,   30,   40,   45,   45,   40,   49,   30,   45,   63,
     1147       62,   45,   49,   30,   74,  902,  544,   53,   63,   51,
     1148       61,   30,   62,   55,   30,   31,  109,   31,   31,   31,
     1149
     1150       31,   31,   31,   50,   51,   53,   51,   65,   61,   54,
     1151       74,   55,   50,   88,   31,   51,   50,   55,   31,   54,
     1152      109,   50,   52,  115,   31,   50,   54,   52,  182,  146,
     1153       31,   56,  108,  182,  146,   52,   31,   52,  108,   88,
     1154       52,   60,   31,  128,   52,  128,   60,  115,   56,  152,
     1155       31,   38,  894,   56,  112,   38,   38,   58,   38,   60,
     1156       38,   38,  114,   38,  108,   38,   59,  152,  114,   58,
     1157       58,  117,  112,  146,   38,   38,   38,  189,   59,   58,
     1158      112,  130,   58,  130,  143,   60,   59,  132,   60,  117,
     1159      189,   69,   69,   59,  114,   38,   69,  117,   38,  132,
     1160
     1161      111,  132,   60,   68,   68,   68,   68,   68,   68,  893,
     1162      143,   68,   69,   69,   69,   69,   69,   69,   81,   81,
     1163       81,   81,   81,   81,  154,   38,   38,   78,   78,  133,
     1164      111,  133,   78,  154,   78,  111,  135,  162,  135,   78,
     1165       83,   83,   83,   83,   83,   83,  162,  890,   78,   78,
     1166       78,   78,   84,   84,   84,   84,   84,   84,  111,   78,
     1167      104,  104,  104,  104,  104,  104,  105,  105,  105,  105,
     1168      134,  134,  138,  134,  138,   78,  131,  155,   78,  136,
     1169      136,  136,  173,   78,   78,  153,  157,   78,   78,  140,
     1170      131,  140,  131,  155,  105,   78,  151,  173,   78,  105,
     1171
     1172       78,   78,   78,  153,   78,   86,  156,  160,  157,   86,
     1173       86,  151,  183,  158,   86,   86,  168,   86,  151,   86,
     1174      161,  183,  105,  160,  156,  158,  163,  164,   86,   86,
     1175       86,  106,  164,  106,  106,  106,  106,  106,  106,  168,
     1176      169,  167,  161,  170,  166,  164,  165,  163,  163,   86,
     1177      106,  107,   86,  107,  166,  172,  107,  107,  107,  107,
     1178      107,  107,  167,  165,  170,  171,  106,  169,  177,  175,
     1179      171,  176,  106,  174,  178,  181,  184,  172,  180,  889,
     1180       86,  100,  100,  100,  100,  100,  100,  175,  171,  107,
     1181      174,  176,  181,  180,  185,  177,  178,  100,  100,  100,
     1182
     1183      180,  100,  100,  184,  192,  185,  187,  186,  193,  221,
     1184      190,  221,  887,  188,  100,  185,  185,  187,  188,  100,
     1185      100,  100,  159,  192,  100,  186,  100,  159,  159,  159,
     1186      190,  159,  159,  188,  187,  159,  191,  159,  194,  208,
     1187      196,  191,  159,  159,  159,  195,  159,  197,  251,  212,
     1188      212,  194,  193,  196,  212,  193,  201,  201,  195,  194,
     1189      195,  201,  222,  191,  222,  208,  259,  197,  200,  200,
     1190      200,  200,  200,  200,  251,  287,  200,  201,  201,  201,
     1191      201,  201,  201,  203,  203,  223,  246,  223,  203,  205,
     1192      205,  226,  259,  226,  205,  287,  205,  215,  215,  215,
     1193
     1194      215,  228,  224,  228,  203,  203,  203,  203,  203,  203,
     1195      205,  205,  205,  205,  205,  205,  224,  225,  224,  227,
     1196      227,  246,  227,  229,  229,  229,  231,  239,  231,  225,
     1197      215,  225,  232,  291,  232,  237,  237,  238,  269,  238,
     1198      269,  284,  238,  238,  238,  238,  238,  238,  273,  240,
     1199      239,  240,  432,  270,  240,  270,  291,  284,  237,  244,
     1200      244,  244,  244,  244,  244,  245,  432,  245,  245,  245,
     1201      245,  240,  286,  240,  273,  238,  282,  286,  240,  247,
     1202      247,  247,  247,  247,  247,  248,  248,  248,  248,  248,
     1203      248,  283,  244,  285,  282,  281,  247,  250,  294,  250,
     1204
     1205      245,  293,  250,  250,  250,  250,  250,  250,  281,  283,
     1206      285,  288,  247,  294,  289,  331,  288,  297,  247,  249,
     1207      249,  249,  249,  249,  249,  256,  297,  293,  258,  258,
     1208      258,  258,  258,  258,  289,  249,  298,  249,  331,  249,
     1209      249,  263,  263,  263,  263,  263,  263,  292,  256,  298,
     1210      256,  295,  249,  296,  256,  299,  290,  249,  296,  249,
     1211      256,  258,  249,  300,  249,  292,  302,  295,  295,  306,
     1212      303,  290,  256,  307,  263,  303,  256,  290,  290,  304,
     1213      256,  300,  299,  305,  302,  308,  312,  309,  304,  306,
     1214      305,  307,  309,  310,  311,  313,  314,  315,  310,  316,
     1215
     1216      311,  317,  314,  321,  313,  312,  308,  308,  316,  318,
     1217      319,  322,  320,  315,  318,  319,  317,  320,  323,  325,
     1218      326,  327,  321,  328,  327,  329,  330,  332,  333,  322,
     1219      325,  323,  334,  335,  320,  326,  336,  339,  329,  337,
     1220      338,  334,  328,  341,  342,  333,  343,  332,  330,  344,
     1221      339,  346,  341,  347,  348,  335,  346,  345,  338,  336,
     1222      387,  337,  344,  350,  343,  345,  349,  349,  347,  350,
     1223      387,  349,  348,  349,  357,  357,  357,  357,  358,  358,
     1224      358,  358,  367,  368,  367,  368,  387,  408,  342,  375,
     1225      375,  375,  375,  375,  375,  377,  388,  377,  408,  392,
     1226
     1227      377,  377,  377,  377,  377,  377,  388,  357,  376,  376,
     1228      376,  376,  376,  376,  379,  379,  379,  379,  379,  379,
     1229      411,  409,  388,  392,  376,  410,  376,  413,  376,  376,
     1230      382,  382,  382,  382,  382,  382,  390,  409,  413,  411,
     1231      410,  376,  390,  394,  415,  419,  376,  379,  376,  417,
     1232      886,  376,  420,  376,  380,  380,  380,  380,  380,  380,
     1233      389,  394,  417,  382,  412,  420,  415,  419,  390,  394,
     1234      380,  380,  380,  412,  380,  380,  383,  383,  383,  383,
     1235      383,  383,  426,  389,  418,  389,  879,  380,  426,  389,
     1236      878,  393,  380,  380,  380,  389,  391,  380,  391,  380,
     1237
     1238      418,  391,  391,  391,  391,  391,  391,  389,  414,  383,
     1239      416,  389,  421,  422,  393,  389,  393,  414,  423,  416,
     1240      393,  428,  424,  427,  429,  425,  393,  424,  421,  421,
     1241      430,  436,  428,  437,  391,  422,  423,  434,  393,  439,
     1242      425,  438,  393,  429,  427,  430,  393,  425,  441,  434,
     1243      440,  442,  436,  444,  438,  437,  440,  446,  447,  448,
     1244      442,  449,  439,  441,  450,  451,  452,  454,  444,  456,
     1245      459,  457,  458,  462,  448,  452,  460,  446,  461,  450,
     1246      447,  458,  464,  449,  454,  451,  465,  466,  463,  468,
     1247      469,  459,  456,  457,  466,  462,  460,  463,  461,  465,
     1248
     1249      464,  467,  470,  474,  471,  472,  475,  477,  467,  877,
     1250      470,  526,  469,  477,  468,  475,  472,  504,  505,  476,
     1251      470,  471,  476,  876,  526,  474,  486,  486,  486,  486,
     1252      497,  497,  497,  497,  497,  497,  499,  499,  499,  499,
     1253      499,  499,  525,  504,  505,  528,  497,  529,  497,  530,
     1254      497,  497,  500,  500,  500,  500,  500,  500,  875,  525,
     1255      528,  501,  530,  497,  531,  538,  503,  529,  497,  499,
     1256      497,  501,  502,  497,  502,  497,  503,  502,  502,  502,
     1257      502,  502,  502,  533,  538,  500,  531,  501,  533,  532,
     1258      871,  867,  503,  507,  507,  507,  507,  507,  507,  509,
     1259
     1260      535,  509,  532,  535,  509,  509,  509,  509,  509,  509,
     1261      502,  508,  508,  508,  508,  508,  508,  534,  536,  537,
     1262      539,  540,  542,  543,  864,  546,  547,  508,  534,  508,
     1263      540,  508,  508,  542,  537,  541,  543,  545,  536,  548,
     1264      541,  539,  554,  547,  508,  549,  545,  546,  548,  508,
     1265      549,  508,  551,  552,  508,  555,  508,  556,  551,  554,
     1266      557,  560,  552,  561,  559,  562,  564,  571,  567,  557,
     1267      555,  565,  556,  559,  568,  561,  565,  567,  560,  572,
     1268      562,  564,  573,  568,  576,  575,  578,  582,  577,  571,
     1269      579,  580,  572,  575,  576,  577,  582,  580,  585,  573,
     1270
     1271      583,  586,  579,  588,  630,  863,  634,  728,  578,  630,
     1272      583,  633,  613,  613,  586,  585,  606,  606,  606,  606,
     1273      606,  606,  630,  634,  633,  588,  607,  607,  607,  607,
     1274      607,  607,  609,  614,  609,  613,  728,  609,  609,  609,
     1275      609,  609,  609,  612,  612,  612,  612,  612,  612,  606,
     1276      608,  608,  608,  608,  608,  608,  614,  615,  631,  615,
     1277      632,  635,  615,  638,  637,  631,  608,  636,  608,  632,
     1278      608,  608,  637,  648,  636,  639,  612,  641,  639,  615,
     1279      638,  615,  642,  608,  635,  640,  615,  643,  608,  644,
     1280      608,  645,  649,  608,  647,  608,  650,  642,  640,  641,
     1281
     1282      646,  648,  652,  646,  653,  651,  644,  649,  654,  643,
     1283      656,  647,  657,  645,  651,  658,  650,  654,  662,  663,
     1284      652,  668,  665,  862,  658,  669,  653,  676,  679,  680,
     1285      668,  677,  669,  656,  657,  713,  676,  679,  662,  665,
     1286      712,  677,  718,  715,  680,  713,  663,  699,  699,  699,
     1287      699,  699,  699,  703,  703,  703,  703,  703,  703,  716,
     1288      721,  712,  718,  699,  734,  699,  716,  699,  699,  715,
     1289      717,  719,  734,  720,  719,  717,  720,  723,  721,  725,
     1290      699,  724,  727,  723,  731,  699,  703,  699,  725,  745,
     1291      699,  730,  699,  726,  724,  729,  726,  735,  729,  732,
     1292
     1293      730,  733,  732,  727,  736,  737,  738,  735,  744,  741,
     1294      731,  745,  746,  748,  733,  738,  749,  736,  769,  861,
     1295      767,  748,  772,  769,  768,  749,  737,  741,  744,  770,
     1296      773,  774,  741,  746,  756,  756,  756,  756,  756,  756,
     1297      767,  768,  771,  775,  770,  772,  775,  773,  776,  777,
     1298      779,  781,  771,  779,  781,  782,  783,  774,  785,  783,
     1299      784,  776,  782,  784,  786,  788,  792,  756,  807,  809,
     1300      817,  812,  811,  785,  810,  811,  813,  777,  814,  813,
     1301      816,  814,  818,  820,  860,  818,  824,  786,  788,  792,
     1302      809,  821,  810,  812,  821,  807,  817,  822,  816,  823,
     1303
     1304      822,  825,  824,  826,  841,  820,  842,  843,  823,  844,
     1305      843,  845,  825,  842,  846,  847,  855,  846,  844,  826,
     1306      850,  853,  854,  850,  853,  841,  859,  856,  855,  845,
     1307      865,  854,  847,  866,  868,  845,  856,  868,  866,  865,
     1308      869,  870,  872,  880,  873,  872,  870,  873,  874,  881,
     1309      869,  874,  882,  888,  884,  882,  883,  884,  885,  891,
     1310      895,  885,  892,  880,  881,  896,  883,  897,  899,  895,
     1311      898,  900,  901,  858,  857,  888,  852,  892,  896,  851,
     1312      891,  849,  901,  848,  840,  839,  899,  838,  837,  897,
     1313      836,  898,  835,  900,  905,  905,  905,  905,  905,  905,
     1314
     1315      905,  905,  905,  905,  905,  905,  905,  906,  906,  906,
     1316      906,  906,  906,  906,  906,  906,  906,  906,  906,  906,
     1317      907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
     1318      907,  907,  907,  908,  834,  833,  908,  832,  908,  908,
     1319      908,  908,  908,  909,  831,  830,  829,  909,  909,  909,
     1320      909,  909,  909,  910,  910,  910,  910,  910,  910,  910,
     1321      910,  910,  910,  910,  910,  910,  911,  828,  827,  911,
     1322      819,  911,  911,  911,  911,  911,  912,  815,  912,  912,
     1323      808,  912,  912,  912,  912,  912,  912,  806,  912,  913,
     1324      805,  804,  913,  913,  913,  913,  913,  913,  913,  913,
     1325
     1326      803,  913,  914,  914,  914,  914,  914,  914,  914,  914,
     1327      914,  914,  914,  914,  914,  915,  915,  802,  915,  801,
     1328      800,  799,  915,  916,  798,  797,  916,  796,  916,  916,
     1329      916,  916,  916,  917,  795,  917,  794,  793,  791,  917,
     1330      918,  790,  918,  789,  787,  780,  918,  919,  778,  919,
     1331      766,  765,  764,  919,  920,  763,  920,  762,  761,  760,
     1332      920,  921,  759,  921,  758,  755,  754,  921,  922,  753,
     1333      922,  747,  743,  742,  922,  923,  740,  923,  739,  722,
     1334      714,  923,  924,  711,  924,  706,  704,  700,  924,  925,
     1335      690,  925,  686,  684,  682,  925,  926,  681,  926,  927,
     1336
     1337      927,  678,  927,  927,  927,  675,  927,  928,  928,  674,
     1338      928,  929,  673,  672,  929,  671,  929,  929,  929,  929,
     1339      929,  930,  670,  930,  667,  666,  664,  930,  931,  661,
     1340      931,  660,  659,  655,  931,  932,  628,  932,  624,  622,
     1341      620,  932,  933,  618,  933,  934,  616,  934,  610,  604,
     1342      602,  934,  935,  600,  935,  936,  598,  596,  936,  594,
     1343      936,  936,  936,  936,  936,  937,  937,  937,  937,  937,
     1344      937,  937,  937,  937,  937,  937,  937,  937,  938,  938,
     1345      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
     1346      938,  939,  592,  939,  590,  589,  587,  939,  940,  584,
     1347
     1348      940,  581,  574,  570,  940,  941,  569,  941,  566,  563,
     1349      558,  941,  942,  553,  942,  943,  550,  943,  527,  523,
     1350      521,  943,  944,  519,  944,  945,  517,  945,  515,  513,
     1351      512,  945,  946,  511,  946,  947,  510,  947,  498,  495,
     1352      493,  947,  948,  492,  948,  949,  491,  949,  489,  487,
     1353      484,  949,  950,  482,  950,  951,  480,  951,  478,  473,
     1354      455,  951,  952,  453,  952,  953,  445,  953,  443,  435,
     1355      433,  953,  954,  431,  954,  955,  405,  955,  403,  955,
     1356      401,  955,  956,  399,  956,  398,  956,  397,  956,  957,
     1357      957,  384,  957,  957,  957,  381,  957,  958,  372,  958,
     1358
     1359      370,  369,  365,  958,  959,  363,  959,  361,  359,  355,
     1360      959,  960,  353,  960,  352,  351,  340,  960,  961,  324,
     1361      961,  962,  301,  962,  280,  278,  276,  962,  963,  275,
     1362      963,  964,  274,  964,  272,  271,  266,  964,  965,  262,
     1363      965,  966,  261,  966,  257,  254,  253,  966,  967,  242,
     1364      967,  968,  241,  234,  968,  233,  968,  968,  968,  968,
     1365      968,  969,  969,  969,  969,  969,  969,  969,  969,  969,
     1366      969,  969,  969,  969,  970,  230,  970,  220,  218,  217,
     1367      970,  971,  216,  971,  972,  210,  972,  209,  207,  202,
     1368      972,  973,  179,  973,  974,  150,  974,  148,  147,  141,
     1369
     1370      974,  975,  139,  975,  976,  137,  976,  129,  126,  125,
     1371      976,  977,  121,  977,  978,  102,  978,   99,   96,   94,
     1372      978,  979,   87,  979,  980,   73,  980,   71,   67,   36,
     1373      980,  981,   33,  981,  982,   18,  982,   11,    4,    3,
     1374      982,  983,    0,  983,    0,    0,    0,  983,  984,    0,
     1375      984,  985,    0,  985,    0,    0,    0,  985,  986,    0,
     1376      986,  987,    0,  987,    0,  987,    0,  987,  988,    0,
     1377      988,    0,    0,    0,  988,  989,    0,  989,    0,    0,
     1378        0,  989,  990,    0,  990,  991,    0,  991,    0,    0,
     1379        0,  991,  992,    0,  992,  993,    0,  993,    0,    0,
     1380
     1381        0,  993,  994,    0,  994,  995,    0,  995,    0,    0,
     1382        0,  995,  996,    0,  996,  997,    0,  997,    0,    0,
     1383        0,  997,  998,    0,  998,  999,    0,  999,    0,    0,
     1384        0,  999, 1000,    0, 1000, 1001,    0,    0, 1001,    0,
     1385     1001, 1001, 1001, 1001, 1001, 1002, 1002, 1002, 1002, 1002,
     1386     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003,    0,
     1387     1003,    0,    0,    0, 1003, 1004,    0, 1004, 1005,    0,
     1388     1005,    0,    0,    0, 1005, 1006,    0, 1006, 1007,    0,
     1389     1007,    0,    0,    0, 1007, 1008,    0, 1008, 1009,    0,
     1390     1009,    0,    0,    0, 1009, 1010,    0, 1010, 1011,    0,
     1391
     1392     1011,    0,    0,    0, 1011, 1012,    0, 1012, 1013,    0,
     1393     1013,    0,    0,    0, 1013, 1014,    0, 1014, 1015,    0,
     1394     1015,    0,    0,    0, 1015, 1016,    0, 1016, 1017,    0,
     1395     1017,    0,    0,    0, 1017, 1018,    0, 1018, 1019,    0,
     1396     1019,    0,    0,    0, 1019, 1020,    0, 1020,    0,    0,
     1397        0, 1020, 1021,    0, 1021, 1022,    0, 1022,    0,    0,
     1398        0, 1022, 1023,    0, 1023, 1024,    0, 1024,    0,    0,
     1399        0, 1024, 1025,    0, 1025, 1026,    0, 1026,    0,    0,
     1400        0, 1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0,
     1401     1029, 1030,    0,    0, 1030,    0, 1030, 1030, 1030, 1030,
     1402
     1403     1030, 1031,    0, 1031, 1032, 1032, 1032, 1032, 1032, 1032,
     1404     1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033,    0, 1033,
     1405        0,    0,    0, 1033, 1034,    0, 1034, 1035,    0, 1035,
     1406        0,    0,    0, 1035, 1036,    0, 1036, 1037,    0, 1037,
     1407     1038,    0, 1038, 1039,    0,    0, 1039,    0, 1039, 1039,
     1408     1039, 1039, 1039, 1040,    0, 1040, 1041,    0, 1041, 1042,
     1409        0, 1042, 1043,    0, 1043, 1044,    0, 1044, 1045,    0,
     1410     1045, 1046,    0, 1046, 1047,    0, 1047,    0,    0,    0,
     1411     1047, 1048,    0, 1048, 1049,    0, 1049,    0,    0,    0,
     1412     1049, 1050,    0, 1050, 1051,    0, 1051, 1052,    0, 1052,
     1413
     1414     1053,    0, 1053, 1054,    0, 1054,    0,    0,    0, 1054,
     1415     1055,    0,    0, 1055,    0, 1055, 1055, 1055, 1055, 1055,
     1416     1056,    0, 1056, 1057,    0, 1057, 1058,    0, 1058, 1059,
     1417        0, 1059,    0,    0,    0, 1059, 1060,    0, 1060,    0,
     1418        0,    0, 1060, 1061,    0, 1061,    0,    0,    0, 1061,
     1419     1062,    0, 1062, 1063,    0, 1063,    0,    0,    0, 1063,
     1420     1064,    0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,
     1421        0,    0,    0, 1065, 1066,    0, 1066,    0,    0,    0,
     1422     1066, 1067,    0, 1067,    0,    0,    0, 1067, 1068,    0,
     1423     1068,    0,    0,    0, 1068, 1069,    0, 1069,    0,    0,
     1424
     1425        0, 1069, 1070,    0, 1070,    0,    0,    0, 1070, 1071,
     1426        0, 1071,    0,    0,    0, 1071, 1072,    0, 1072,    0,
     1427        0,    0, 1072, 1073,    0, 1073,    0,    0,    0, 1073,
     1428     1074,    0, 1074,    0,    0,    0, 1074, 1075,    0, 1075,
     1429        0,    0,    0, 1075, 1076,    0, 1076,    0,    0,    0,
     1430     1076, 1077,    0, 1077,    0,    0,    0, 1077, 1078,    0,
     1431     1078,    0,    0,    0, 1078,  904,  904,  904,  904,  904,
     1432      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1433      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1434      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1435
     1436      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1437      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1438      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1439      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1440      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1441      904
    14331442    } ;
    14341443
    14351444/* Table of booleans, true if rule could match eol. */
    1436 static yyconst flex_int32_t yy_rule_can_match_eol[184] =
     1445static yyconst flex_int32_t yy_rule_can_match_eol[186] =
    14371446    {   0,
    143814471, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14411450    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14421451    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1443     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
    1444     0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1452    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1453    0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14451454    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14461455    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1447     0, 0, 0, 0,     };
     1456    0, 0, 0, 0, 0, 0,     };
    14481457
    14491458static yy_state_type yy_last_accepting_state;
     
    14731482 * Created On       : Sat Sep 22 08:58:10 2001
    14741483 * Last Modified By : Peter A. Buhr
    1475  * Last Modified On : Wed Oct 26 17:32:30 2016
    1476  * Update Count     : 499
     1484 * Last Modified On : Tue Nov 29 11:32:00 2016
     1485 * Update Count     : 501
    14771486 */
    14781487#line 20 "lex.ll"
     
    15351544
    15361545
    1537 #line 1538 "Parser/lex.cc"
     1546#line 1547 "Parser/lex.cc"
    15381547
    15391548#define INITIAL 0
     
    17301739
    17311740                                   /* line directives */
    1732 #line 1733 "Parser/lex.cc"
     1741#line 1742 "Parser/lex.cc"
    17331742
    17341743        if ( !(yy_init) )
     
    17841793                                {
    17851794                                yy_current_state = (int) yy_def[yy_current_state];
    1786                                 if ( yy_current_state >= 895 )
     1795                                if ( yy_current_state >= 905 )
    17871796                                        yy_c = yy_meta[(unsigned int) yy_c];
    17881797                                }
     
    17901799                        ++yy_cp;
    17911800                        }
    1792                 while ( yy_base[yy_current_state] != 2845 );
     1801                while ( yy_base[yy_current_state] != 2866 );
    17931802
    17941803yy_find_action:
     
    22062215YY_RULE_SETUP
    22072216#line 239 "lex.ll"
     2217{ NUMERIC_RETURN(ONE_T); }                              // CFA
     2218        YY_BREAK
     2219case 72:
     2220YY_RULE_SETUP
     2221#line 240 "lex.ll"
    22082222{ KEYWORD_RETURN(OTYPE); }                              // CFA
    22092223        YY_BREAK
    2210 case 72:
    2211 YY_RULE_SETUP
    2212 #line 240 "lex.ll"
     2224case 73:
     2225YY_RULE_SETUP
     2226#line 241 "lex.ll"
    22132227{ KEYWORD_RETURN(REGISTER); }
    22142228        YY_BREAK
    2215 case 73:
    2216 YY_RULE_SETUP
    2217 #line 241 "lex.ll"
     2229case 74:
     2230YY_RULE_SETUP
     2231#line 242 "lex.ll"
    22182232{ KEYWORD_RETURN(RESTRICT); }                   // C99
    2219         YY_BREAK
    2220 case 74:
    2221 YY_RULE_SETUP
    2222 #line 242 "lex.ll"
    2223 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    22242233        YY_BREAK
    22252234case 75:
     
    22312240YY_RULE_SETUP
    22322241#line 244 "lex.ll"
     2242{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2243        YY_BREAK
     2244case 77:
     2245YY_RULE_SETUP
     2246#line 245 "lex.ll"
    22332247{ KEYWORD_RETURN(RETURN); }
    22342248        YY_BREAK
    2235 case 77:
    2236 YY_RULE_SETUP
    2237 #line 245 "lex.ll"
     2249case 78:
     2250YY_RULE_SETUP
     2251#line 246 "lex.ll"
    22382252{ KEYWORD_RETURN(SHORT); }
    22392253        YY_BREAK
    2240 case 78:
    2241 YY_RULE_SETUP
    2242 #line 246 "lex.ll"
     2254case 79:
     2255YY_RULE_SETUP
     2256#line 247 "lex.ll"
    22432257{ KEYWORD_RETURN(SIGNED); }
    2244         YY_BREAK
    2245 case 79:
    2246 YY_RULE_SETUP
    2247 #line 247 "lex.ll"
    2248 { KEYWORD_RETURN(SIGNED); }                             // GCC
    22492258        YY_BREAK
    22502259case 80:
     
    22562265YY_RULE_SETUP
    22572266#line 249 "lex.ll"
     2267{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2268        YY_BREAK
     2269case 82:
     2270YY_RULE_SETUP
     2271#line 250 "lex.ll"
    22582272{ KEYWORD_RETURN(SIZEOF); }
    22592273        YY_BREAK
    2260 case 82:
    2261 YY_RULE_SETUP
    2262 #line 250 "lex.ll"
     2274case 83:
     2275YY_RULE_SETUP
     2276#line 251 "lex.ll"
    22632277{ KEYWORD_RETURN(STATIC); }
    22642278        YY_BREAK
    2265 case 83:
    2266 YY_RULE_SETUP
    2267 #line 251 "lex.ll"
     2279case 84:
     2280YY_RULE_SETUP
     2281#line 252 "lex.ll"
    22682282{ KEYWORD_RETURN(STATICASSERT); }               // C11
    22692283        YY_BREAK
    2270 case 84:
    2271 YY_RULE_SETUP
    2272 #line 252 "lex.ll"
     2284case 85:
     2285YY_RULE_SETUP
     2286#line 253 "lex.ll"
    22732287{ KEYWORD_RETURN(STRUCT); }
    22742288        YY_BREAK
    2275 case 85:
    2276 YY_RULE_SETUP
    2277 #line 253 "lex.ll"
     2289case 86:
     2290YY_RULE_SETUP
     2291#line 254 "lex.ll"
    22782292{ KEYWORD_RETURN(SWITCH); }
    22792293        YY_BREAK
    2280 case 86:
    2281 YY_RULE_SETUP
    2282 #line 254 "lex.ll"
     2294case 87:
     2295YY_RULE_SETUP
     2296#line 255 "lex.ll"
    22832297{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    22842298        YY_BREAK
    2285 case 87:
    2286 YY_RULE_SETUP
    2287 #line 255 "lex.ll"
     2299case 88:
     2300YY_RULE_SETUP
     2301#line 256 "lex.ll"
    22882302{ KEYWORD_RETURN(THROW); }                              // CFA
    22892303        YY_BREAK
    2290 case 88:
    2291 YY_RULE_SETUP
    2292 #line 256 "lex.ll"
     2304case 89:
     2305YY_RULE_SETUP
     2306#line 257 "lex.ll"
    22932307{ KEYWORD_RETURN(THROWRESUME); }                // CFA
    22942308        YY_BREAK
    2295 case 89:
    2296 YY_RULE_SETUP
    2297 #line 257 "lex.ll"
     2309case 90:
     2310YY_RULE_SETUP
     2311#line 258 "lex.ll"
    22982312{ KEYWORD_RETURN(TRAIT); }                              // CFA
    22992313        YY_BREAK
    2300 case 90:
    2301 YY_RULE_SETUP
    2302 #line 258 "lex.ll"
     2314case 91:
     2315YY_RULE_SETUP
     2316#line 259 "lex.ll"
    23032317{ KEYWORD_RETURN(TRY); }                                // CFA
    23042318        YY_BREAK
    2305 case 91:
    2306 YY_RULE_SETUP
    2307 #line 259 "lex.ll"
     2319case 92:
     2320YY_RULE_SETUP
     2321#line 260 "lex.ll"
    23082322{ KEYWORD_RETURN(TYPEDEF); }
    2309         YY_BREAK
    2310 case 92:
    2311 YY_RULE_SETUP
    2312 #line 260 "lex.ll"
    2313 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    23142323        YY_BREAK
    23152324case 93:
     
    23262335YY_RULE_SETUP
    23272336#line 263 "lex.ll"
     2337{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2338        YY_BREAK
     2339case 96:
     2340YY_RULE_SETUP
     2341#line 264 "lex.ll"
    23282342{ KEYWORD_RETURN(UNION); }
    23292343        YY_BREAK
    2330 case 96:
    2331 YY_RULE_SETUP
    2332 #line 264 "lex.ll"
     2344case 97:
     2345YY_RULE_SETUP
     2346#line 265 "lex.ll"
    23332347{ KEYWORD_RETURN(UNSIGNED); }
    23342348        YY_BREAK
    2335 case 97:
    2336 YY_RULE_SETUP
    2337 #line 265 "lex.ll"
     2349case 98:
     2350YY_RULE_SETUP
     2351#line 266 "lex.ll"
    23382352{ KEYWORD_RETURN(VALIST); }                     // GCC
    23392353        YY_BREAK
    2340 case 98:
    2341 YY_RULE_SETUP
    2342 #line 266 "lex.ll"
     2354case 99:
     2355YY_RULE_SETUP
     2356#line 267 "lex.ll"
    23432357{ KEYWORD_RETURN(VOID); }
    23442358        YY_BREAK
    2345 case 99:
    2346 YY_RULE_SETUP
    2347 #line 267 "lex.ll"
     2359case 100:
     2360YY_RULE_SETUP
     2361#line 268 "lex.ll"
    23482362{ KEYWORD_RETURN(VOLATILE); }
    2349         YY_BREAK
    2350 case 100:
    2351 YY_RULE_SETUP
    2352 #line 268 "lex.ll"
    2353 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    23542363        YY_BREAK
    23552364case 101:
     
    23612370YY_RULE_SETUP
    23622371#line 270 "lex.ll"
     2372{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2373        YY_BREAK
     2374case 103:
     2375YY_RULE_SETUP
     2376#line 271 "lex.ll"
    23632377{ KEYWORD_RETURN(WHILE); }
    23642378        YY_BREAK
     2379case 104:
     2380YY_RULE_SETUP
     2381#line 272 "lex.ll"
     2382{ NUMERIC_RETURN(ZERO_T); }                             // CFA
     2383        YY_BREAK
    23652384/* identifier */
    2366 case 103:
    2367 YY_RULE_SETUP
    2368 #line 273 "lex.ll"
     2385case 105:
     2386YY_RULE_SETUP
     2387#line 275 "lex.ll"
    23692388{ IDENTIFIER_RETURN(); }
    23702389        YY_BREAK
    2371 case 104:
    2372 YY_RULE_SETUP
    2373 #line 274 "lex.ll"
     2390case 106:
     2391YY_RULE_SETUP
     2392#line 276 "lex.ll"
    23742393{ ATTRIBUTE_RETURN(); }
    23752394        YY_BREAK
    2376 case 105:
    2377 YY_RULE_SETUP
    2378 #line 275 "lex.ll"
     2395case 107:
     2396YY_RULE_SETUP
     2397#line 277 "lex.ll"
    23792398{ BEGIN BKQUOTE; }
    23802399        YY_BREAK
    2381 case 106:
    2382 YY_RULE_SETUP
    2383 #line 276 "lex.ll"
     2400case 108:
     2401YY_RULE_SETUP
     2402#line 278 "lex.ll"
    23842403{ IDENTIFIER_RETURN(); }
    23852404        YY_BREAK
    2386 case 107:
    2387 YY_RULE_SETUP
    2388 #line 277 "lex.ll"
     2405case 109:
     2406YY_RULE_SETUP
     2407#line 279 "lex.ll"
    23892408{ BEGIN 0; }
    23902409        YY_BREAK
    23912410/* numeric constants */
    2392 case 108:
    2393 YY_RULE_SETUP
    2394 #line 280 "lex.ll"
     2411case 110:
     2412YY_RULE_SETUP
     2413#line 282 "lex.ll"
    23952414{ NUMERIC_RETURN(ZERO); }                               // CFA
    23962415        YY_BREAK
    2397 case 109:
    2398 YY_RULE_SETUP
    2399 #line 281 "lex.ll"
     2416case 111:
     2417YY_RULE_SETUP
     2418#line 283 "lex.ll"
    24002419{ NUMERIC_RETURN(ONE); }                                // CFA
    2401         YY_BREAK
    2402 case 110:
    2403 YY_RULE_SETUP
    2404 #line 282 "lex.ll"
    2405 { NUMERIC_RETURN(INTEGERconstant); }
    2406         YY_BREAK
    2407 case 111:
    2408 YY_RULE_SETUP
    2409 #line 283 "lex.ll"
    2410 { NUMERIC_RETURN(INTEGERconstant); }
    24112420        YY_BREAK
    24122421case 112:
     
    24182427YY_RULE_SETUP
    24192428#line 285 "lex.ll"
     2429{ NUMERIC_RETURN(INTEGERconstant); }
     2430        YY_BREAK
     2431case 114:
     2432YY_RULE_SETUP
     2433#line 286 "lex.ll"
     2434{ NUMERIC_RETURN(INTEGERconstant); }
     2435        YY_BREAK
     2436case 115:
     2437YY_RULE_SETUP
     2438#line 287 "lex.ll"
    24202439{ NUMERIC_RETURN(REALDECIMALconstant); } // must appear before floating_constant
    24212440        YY_BREAK
    2422 case 114:
    2423 YY_RULE_SETUP
    2424 #line 286 "lex.ll"
     2441case 116:
     2442YY_RULE_SETUP
     2443#line 288 "lex.ll"
    24252444{ NUMERIC_RETURN(REALFRACTIONconstant); } // must appear before floating_constant
    24262445        YY_BREAK
    2427 case 115:
    2428 YY_RULE_SETUP
    2429 #line 287 "lex.ll"
     2446case 117:
     2447YY_RULE_SETUP
     2448#line 289 "lex.ll"
    24302449{ NUMERIC_RETURN(FLOATINGconstant); }
    24312450        YY_BREAK
    2432 case 116:
    2433 YY_RULE_SETUP
    2434 #line 288 "lex.ll"
     2451case 118:
     2452YY_RULE_SETUP
     2453#line 290 "lex.ll"
    24352454{ NUMERIC_RETURN(FLOATINGconstant); }
    24362455        YY_BREAK
    24372456/* character constant, allows empty value */
    2438 case 117:
    2439 YY_RULE_SETUP
    2440 #line 291 "lex.ll"
     2457case 119:
     2458YY_RULE_SETUP
     2459#line 293 "lex.ll"
    24412460{ BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24422461        YY_BREAK
    2443 case 118:
    2444 YY_RULE_SETUP
    2445 #line 292 "lex.ll"
     2462case 120:
     2463YY_RULE_SETUP
     2464#line 294 "lex.ll"
    24462465{ strtext->append( yytext, yyleng ); }
    24472466        YY_BREAK
    2448 case 119:
    2449 /* rule 119 can match eol */
    2450 YY_RULE_SETUP
    2451 #line 293 "lex.ll"
     2467case 121:
     2468/* rule 121 can match eol */
     2469YY_RULE_SETUP
     2470#line 295 "lex.ll"
    24522471{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
    24532472        YY_BREAK
    24542473/* ' stop highlighting */
    24552474/* string constant */
    2456 case 120:
    2457 YY_RULE_SETUP
    2458 #line 297 "lex.ll"
     2475case 122:
     2476YY_RULE_SETUP
     2477#line 299 "lex.ll"
    24592478{ BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24602479        YY_BREAK
    2461 case 121:
    2462 YY_RULE_SETUP
    2463 #line 298 "lex.ll"
     2480case 123:
     2481YY_RULE_SETUP
     2482#line 300 "lex.ll"
    24642483{ strtext->append( yytext, yyleng ); }
    24652484        YY_BREAK
    2466 case 122:
    2467 /* rule 122 can match eol */
    2468 YY_RULE_SETUP
    2469 #line 299 "lex.ll"
     2485case 124:
     2486/* rule 124 can match eol */
     2487YY_RULE_SETUP
     2488#line 301 "lex.ll"
    24702489{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
    24712490        YY_BREAK
    24722491/* " stop highlighting */
    24732492/* common character/string constant */
    2474 case 123:
    2475 YY_RULE_SETUP
    2476 #line 303 "lex.ll"
     2493case 125:
     2494YY_RULE_SETUP
     2495#line 305 "lex.ll"
    24772496{ rm_underscore(); strtext->append( yytext, yyleng ); }
    24782497        YY_BREAK
    2479 case 124:
    2480 /* rule 124 can match eol */
    2481 YY_RULE_SETUP
    2482 #line 304 "lex.ll"
     2498case 126:
     2499/* rule 126 can match eol */
     2500YY_RULE_SETUP
     2501#line 306 "lex.ll"
    24832502{}                                              // continuation (ALSO HANDLED BY CPP)
    24842503        YY_BREAK
    2485 case 125:
    2486 YY_RULE_SETUP
    2487 #line 305 "lex.ll"
     2504case 127:
     2505YY_RULE_SETUP
     2506#line 307 "lex.ll"
    24882507{ strtext->append( yytext, yyleng ); } // unknown escape character
    24892508        YY_BREAK
    24902509/* punctuation */
    2491 case 126:
    2492 YY_RULE_SETUP
    2493 #line 308 "lex.ll"
    2494 { ASCIIOP_RETURN(); }
    2495         YY_BREAK
    2496 case 127:
    2497 YY_RULE_SETUP
    2498 #line 309 "lex.ll"
    2499 { ASCIIOP_RETURN(); }
    2500         YY_BREAK
    25012510case 128:
    25022511YY_RULE_SETUP
     
    25222531YY_RULE_SETUP
    25232532#line 314 "lex.ll"
    2524 { ASCIIOP_RETURN(); }                                   // also operator
     2533{ ASCIIOP_RETURN(); }
    25252534        YY_BREAK
    25262535case 133:
     
    25322541YY_RULE_SETUP
    25332542#line 316 "lex.ll"
     2543{ ASCIIOP_RETURN(); }                                   // also operator
     2544        YY_BREAK
     2545case 135:
     2546YY_RULE_SETUP
     2547#line 317 "lex.ll"
    25342548{ ASCIIOP_RETURN(); }
    25352549        YY_BREAK
    2536 case 135:
    2537 YY_RULE_SETUP
    2538 #line 317 "lex.ll"
     2550case 136:
     2551YY_RULE_SETUP
     2552#line 318 "lex.ll"
     2553{ ASCIIOP_RETURN(); }
     2554        YY_BREAK
     2555case 137:
     2556YY_RULE_SETUP
     2557#line 319 "lex.ll"
    25392558{ ASCIIOP_RETURN(); }                                   // also operator
    25402559        YY_BREAK
    2541 case 136:
    2542 YY_RULE_SETUP
    2543 #line 318 "lex.ll"
     2560case 138:
     2561YY_RULE_SETUP
     2562#line 320 "lex.ll"
    25442563{ NAMEDOP_RETURN(ELLIPSIS); }
    25452564        YY_BREAK
    25462565/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2547 case 137:
    2548 YY_RULE_SETUP
    2549 #line 321 "lex.ll"
     2566case 139:
     2567YY_RULE_SETUP
     2568#line 323 "lex.ll"
    25502569{ RETURN_VAL('['); }
    25512570        YY_BREAK
    2552 case 138:
    2553 YY_RULE_SETUP
    2554 #line 322 "lex.ll"
     2571case 140:
     2572YY_RULE_SETUP
     2573#line 324 "lex.ll"
    25552574{ RETURN_VAL(']'); }
    25562575        YY_BREAK
    2557 case 139:
    2558 YY_RULE_SETUP
    2559 #line 323 "lex.ll"
     2576case 141:
     2577YY_RULE_SETUP
     2578#line 325 "lex.ll"
    25602579{ RETURN_VAL('{'); }
    25612580        YY_BREAK
    2562 case 140:
    2563 YY_RULE_SETUP
    2564 #line 324 "lex.ll"
     2581case 142:
     2582YY_RULE_SETUP
     2583#line 326 "lex.ll"
    25652584{ RETURN_VAL('}'); }
    25662585        YY_BREAK
    25672586/* operators */
    2568 case 141:
    2569 YY_RULE_SETUP
    2570 #line 327 "lex.ll"
    2571 { ASCIIOP_RETURN(); }
    2572         YY_BREAK
    2573 case 142:
    2574 YY_RULE_SETUP
    2575 #line 328 "lex.ll"
    2576 { ASCIIOP_RETURN(); }
    2577         YY_BREAK
    25782587case 143:
    25792588YY_RULE_SETUP
     
    26382647case 155:
    26392648YY_RULE_SETUP
     2649#line 341 "lex.ll"
     2650{ ASCIIOP_RETURN(); }
     2651        YY_BREAK
     2652case 156:
     2653YY_RULE_SETUP
    26402654#line 342 "lex.ll"
     2655{ ASCIIOP_RETURN(); }
     2656        YY_BREAK
     2657case 157:
     2658YY_RULE_SETUP
     2659#line 344 "lex.ll"
    26412660{ NAMEDOP_RETURN(ICR); }
    26422661        YY_BREAK
    2643 case 156:
    2644 YY_RULE_SETUP
    2645 #line 343 "lex.ll"
     2662case 158:
     2663YY_RULE_SETUP
     2664#line 345 "lex.ll"
    26462665{ NAMEDOP_RETURN(DECR); }
    26472666        YY_BREAK
    2648 case 157:
    2649 YY_RULE_SETUP
    2650 #line 344 "lex.ll"
     2667case 159:
     2668YY_RULE_SETUP
     2669#line 346 "lex.ll"
    26512670{ NAMEDOP_RETURN(EQ); }
    26522671        YY_BREAK
    2653 case 158:
    2654 YY_RULE_SETUP
    2655 #line 345 "lex.ll"
     2672case 160:
     2673YY_RULE_SETUP
     2674#line 347 "lex.ll"
    26562675{ NAMEDOP_RETURN(NE); }
    26572676        YY_BREAK
    2658 case 159:
    2659 YY_RULE_SETUP
    2660 #line 346 "lex.ll"
     2677case 161:
     2678YY_RULE_SETUP
     2679#line 348 "lex.ll"
    26612680{ NAMEDOP_RETURN(LS); }
    26622681        YY_BREAK
    2663 case 160:
    2664 YY_RULE_SETUP
    2665 #line 347 "lex.ll"
     2682case 162:
     2683YY_RULE_SETUP
     2684#line 349 "lex.ll"
    26662685{ NAMEDOP_RETURN(RS); }
    26672686        YY_BREAK
    2668 case 161:
    2669 YY_RULE_SETUP
    2670 #line 348 "lex.ll"
     2687case 163:
     2688YY_RULE_SETUP
     2689#line 350 "lex.ll"
    26712690{ NAMEDOP_RETURN(LE); }
    26722691        YY_BREAK
    2673 case 162:
    2674 YY_RULE_SETUP
    2675 #line 349 "lex.ll"
     2692case 164:
     2693YY_RULE_SETUP
     2694#line 351 "lex.ll"
    26762695{ NAMEDOP_RETURN(GE); }
    26772696        YY_BREAK
    2678 case 163:
    2679 YY_RULE_SETUP
    2680 #line 350 "lex.ll"
     2697case 165:
     2698YY_RULE_SETUP
     2699#line 352 "lex.ll"
    26812700{ NAMEDOP_RETURN(ANDAND); }
    26822701        YY_BREAK
    2683 case 164:
    2684 YY_RULE_SETUP
    2685 #line 351 "lex.ll"
     2702case 166:
     2703YY_RULE_SETUP
     2704#line 353 "lex.ll"
    26862705{ NAMEDOP_RETURN(OROR); }
    26872706        YY_BREAK
    2688 case 165:
    2689 YY_RULE_SETUP
    2690 #line 352 "lex.ll"
     2707case 167:
     2708YY_RULE_SETUP
     2709#line 354 "lex.ll"
    26912710{ NAMEDOP_RETURN(ARROW); }
    26922711        YY_BREAK
    2693 case 166:
    2694 YY_RULE_SETUP
    2695 #line 353 "lex.ll"
     2712case 168:
     2713YY_RULE_SETUP
     2714#line 355 "lex.ll"
    26962715{ NAMEDOP_RETURN(PLUSassign); }
    26972716        YY_BREAK
    2698 case 167:
    2699 YY_RULE_SETUP
    2700 #line 354 "lex.ll"
     2717case 169:
     2718YY_RULE_SETUP
     2719#line 356 "lex.ll"
    27012720{ NAMEDOP_RETURN(MINUSassign); }
    27022721        YY_BREAK
    2703 case 168:
    2704 YY_RULE_SETUP
    2705 #line 355 "lex.ll"
     2722case 170:
     2723YY_RULE_SETUP
     2724#line 357 "lex.ll"
    27062725{ NAMEDOP_RETURN(MULTassign); }
    27072726        YY_BREAK
    2708 case 169:
    2709 YY_RULE_SETUP
    2710 #line 356 "lex.ll"
     2727case 171:
     2728YY_RULE_SETUP
     2729#line 358 "lex.ll"
    27112730{ NAMEDOP_RETURN(DIVassign); }
    27122731        YY_BREAK
    2713 case 170:
    2714 YY_RULE_SETUP
    2715 #line 357 "lex.ll"
     2732case 172:
     2733YY_RULE_SETUP
     2734#line 359 "lex.ll"
    27162735{ NAMEDOP_RETURN(MODassign); }
    27172736        YY_BREAK
    2718 case 171:
    2719 YY_RULE_SETUP
    2720 #line 358 "lex.ll"
     2737case 173:
     2738YY_RULE_SETUP
     2739#line 360 "lex.ll"
    27212740{ NAMEDOP_RETURN(ANDassign); }
    27222741        YY_BREAK
    2723 case 172:
    2724 YY_RULE_SETUP
    2725 #line 359 "lex.ll"
     2742case 174:
     2743YY_RULE_SETUP
     2744#line 361 "lex.ll"
    27262745{ NAMEDOP_RETURN(ORassign); }
    27272746        YY_BREAK
    2728 case 173:
    2729 YY_RULE_SETUP
    2730 #line 360 "lex.ll"
     2747case 175:
     2748YY_RULE_SETUP
     2749#line 362 "lex.ll"
    27312750{ NAMEDOP_RETURN(ERassign); }
    27322751        YY_BREAK
    2733 case 174:
    2734 YY_RULE_SETUP
    2735 #line 361 "lex.ll"
     2752case 176:
     2753YY_RULE_SETUP
     2754#line 363 "lex.ll"
    27362755{ NAMEDOP_RETURN(LSassign); }
    27372756        YY_BREAK
    2738 case 175:
    2739 YY_RULE_SETUP
    2740 #line 362 "lex.ll"
     2757case 177:
     2758YY_RULE_SETUP
     2759#line 364 "lex.ll"
    27412760{ NAMEDOP_RETURN(RSassign); }
    27422761        YY_BREAK
    2743 case 176:
    2744 YY_RULE_SETUP
    2745 #line 364 "lex.ll"
     2762case 178:
     2763YY_RULE_SETUP
     2764#line 366 "lex.ll"
    27462765{ NAMEDOP_RETURN(ATassign); }                   // CFA
    27472766        YY_BREAK
    27482767/* CFA, operator identifier */
    2749 case 177:
    2750 YY_RULE_SETUP
    2751 #line 367 "lex.ll"
     2768case 179:
     2769YY_RULE_SETUP
     2770#line 369 "lex.ll"
    27522771{ IDENTIFIER_RETURN(); }                                // unary
    27532772        YY_BREAK
    2754 case 178:
    2755 YY_RULE_SETUP
    2756 #line 368 "lex.ll"
     2773case 180:
     2774YY_RULE_SETUP
     2775#line 370 "lex.ll"
    27572776{ IDENTIFIER_RETURN(); }
    27582777        YY_BREAK
    2759 case 179:
    2760 YY_RULE_SETUP
    2761 #line 369 "lex.ll"
     2778case 181:
     2779YY_RULE_SETUP
     2780#line 371 "lex.ll"
    27622781{ IDENTIFIER_RETURN(); }
    27632782        YY_BREAK
    2764 case 180:
    2765 YY_RULE_SETUP
    2766 #line 370 "lex.ll"
     2783case 182:
     2784YY_RULE_SETUP
     2785#line 372 "lex.ll"
    27672786{ IDENTIFIER_RETURN(); }                // binary
    27682787        YY_BREAK
     
    27932812          an argument list.
    27942813        */
    2795 case 181:
    2796 YY_RULE_SETUP
    2797 #line 397 "lex.ll"
     2814case 183:
     2815YY_RULE_SETUP
     2816#line 399 "lex.ll"
    27982817{
    27992818        // 1 or 2 character unary operator ?
     
    28082827        YY_BREAK
    28092828/* unknown characters */
    2810 case 182:
    2811 YY_RULE_SETUP
    2812 #line 409 "lex.ll"
     2829case 184:
     2830YY_RULE_SETUP
     2831#line 411 "lex.ll"
    28132832{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    28142833        YY_BREAK
    2815 case 183:
    2816 YY_RULE_SETUP
    2817 #line 411 "lex.ll"
     2834case 185:
     2835YY_RULE_SETUP
     2836#line 413 "lex.ll"
    28182837ECHO;
    28192838        YY_BREAK
    2820 #line 2821 "Parser/lex.cc"
     2839#line 2840 "Parser/lex.cc"
    28212840case YY_STATE_EOF(INITIAL):
    28222841case YY_STATE_EOF(COMMENT):
     
    31153134                        {
    31163135                        yy_current_state = (int) yy_def[yy_current_state];
    3117                         if ( yy_current_state >= 895 )
     3136                        if ( yy_current_state >= 905 )
    31183137                                yy_c = yy_meta[(unsigned int) yy_c];
    31193138                        }
     
    31433162                {
    31443163                yy_current_state = (int) yy_def[yy_current_state];
    3145                 if ( yy_current_state >= 895 )
     3164                if ( yy_current_state >= 905 )
    31463165                        yy_c = yy_meta[(unsigned int) yy_c];
    31473166                }
    31483167        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3149         yy_is_jam = (yy_current_state == 894);
     3168        yy_is_jam = (yy_current_state == 904);
    31503169
    31513170        return yy_is_jam ? 0 : yy_current_state;
     
    37933812#define YYTABLES_NAME "yytables"
    37943813
    3795 #line 411 "lex.ll"
     3814#line 413 "lex.ll"
    37963815
    37973816
  • src/Parser/lex.ll

    r5802a4f r66f8528  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Wed Oct 26 17:32:30 2016
    13  * Update Count     : 499
     12 * Last Modified On : Tue Nov 29 11:32:00 2016
     13 * Update Count     : 501
    1414 */
    1515
     
    237237_Noreturn               { KEYWORD_RETURN(NORETURN); }                   // C11
    238238__builtin_offsetof { KEYWORD_RETURN(OFFSETOF); }                // GCC
     239one_t                   { NUMERIC_RETURN(ONE_T); }                              // CFA
    239240otype                   { KEYWORD_RETURN(OTYPE); }                              // CFA
    240241register                { KEYWORD_RETURN(REGISTER); }
     
    269270__volatile__    { KEYWORD_RETURN(VOLATILE); }                   // GCC
    270271while                   { KEYWORD_RETURN(WHILE); }
     272zero_t                  { NUMERIC_RETURN(ZERO_T); }                             // CFA
    271273
    272274                                /* identifier */
  • src/Parser/parser.cc

    r5802a4f r66f8528  
    145145     SIGNED = 277,
    146146     UNSIGNED = 278,
    147      VALIST = 279,
    148      BOOL = 280,
    149      COMPLEX = 281,
    150      IMAGINARY = 282,
    151      TYPEOF = 283,
    152      LABEL = 284,
    153      ENUM = 285,
    154      STRUCT = 286,
    155      UNION = 287,
    156      OTYPE = 288,
    157      FTYPE = 289,
    158      DTYPE = 290,
    159      TRAIT = 291,
    160      SIZEOF = 292,
    161      OFFSETOF = 293,
    162      ATTRIBUTE = 294,
    163      EXTENSION = 295,
    164      IF = 296,
    165      ELSE = 297,
    166      SWITCH = 298,
    167      CASE = 299,
    168      DEFAULT = 300,
    169      DO = 301,
    170      WHILE = 302,
    171      FOR = 303,
    172      BREAK = 304,
    173      CONTINUE = 305,
    174      GOTO = 306,
    175      RETURN = 307,
    176      CHOOSE = 308,
    177      DISABLE = 309,
    178      ENABLE = 310,
    179      FALLTHRU = 311,
    180      TRY = 312,
    181      CATCH = 313,
    182      CATCHRESUME = 314,
    183      FINALLY = 315,
    184      THROW = 316,
    185      THROWRESUME = 317,
    186      AT = 318,
    187      ASM = 319,
    188      ALIGNAS = 320,
    189      ALIGNOF = 321,
    190      ATOMIC = 322,
    191      GENERIC = 323,
    192      NORETURN = 324,
    193      STATICASSERT = 325,
    194      THREADLOCAL = 326,
    195      IDENTIFIER = 327,
    196      QUOTED_IDENTIFIER = 328,
    197      TYPEDEFname = 329,
    198      TYPEGENname = 330,
    199      ATTR_IDENTIFIER = 331,
    200      ATTR_TYPEDEFname = 332,
    201      ATTR_TYPEGENname = 333,
    202      INTEGERconstant = 334,
    203      CHARACTERconstant = 335,
    204      STRINGliteral = 336,
    205      REALDECIMALconstant = 337,
    206      REALFRACTIONconstant = 338,
    207      FLOATINGconstant = 339,
    208      ZERO = 340,
    209      ONE = 341,
    210      ARROW = 342,
    211      ICR = 343,
    212      DECR = 344,
    213      LS = 345,
    214      RS = 346,
    215      LE = 347,
    216      GE = 348,
    217      EQ = 349,
    218      NE = 350,
    219      ANDAND = 351,
    220      OROR = 352,
    221      ELLIPSIS = 353,
    222      MULTassign = 354,
    223      DIVassign = 355,
    224      MODassign = 356,
    225      PLUSassign = 357,
    226      MINUSassign = 358,
    227      LSassign = 359,
    228      RSassign = 360,
    229      ANDassign = 361,
    230      ERassign = 362,
    231      ORassign = 363,
    232      ATassign = 364,
    233      THEN = 365
     147     ZERO_T = 279,
     148     ONE_T = 280,
     149     VALIST = 281,
     150     BOOL = 282,
     151     COMPLEX = 283,
     152     IMAGINARY = 284,
     153     TYPEOF = 285,
     154     LABEL = 286,
     155     ENUM = 287,
     156     STRUCT = 288,
     157     UNION = 289,
     158     OTYPE = 290,
     159     FTYPE = 291,
     160     DTYPE = 292,
     161     TRAIT = 293,
     162     SIZEOF = 294,
     163     OFFSETOF = 295,
     164     ATTRIBUTE = 296,
     165     EXTENSION = 297,
     166     IF = 298,
     167     ELSE = 299,
     168     SWITCH = 300,
     169     CASE = 301,
     170     DEFAULT = 302,
     171     DO = 303,
     172     WHILE = 304,
     173     FOR = 305,
     174     BREAK = 306,
     175     CONTINUE = 307,
     176     GOTO = 308,
     177     RETURN = 309,
     178     CHOOSE = 310,
     179     DISABLE = 311,
     180     ENABLE = 312,
     181     FALLTHRU = 313,
     182     TRY = 314,
     183     CATCH = 315,
     184     CATCHRESUME = 316,
     185     FINALLY = 317,
     186     THROW = 318,
     187     THROWRESUME = 319,
     188     AT = 320,
     189     ASM = 321,
     190     ALIGNAS = 322,
     191     ALIGNOF = 323,
     192     ATOMIC = 324,
     193     GENERIC = 325,
     194     NORETURN = 326,
     195     STATICASSERT = 327,
     196     THREADLOCAL = 328,
     197     IDENTIFIER = 329,
     198     QUOTED_IDENTIFIER = 330,
     199     TYPEDEFname = 331,
     200     TYPEGENname = 332,
     201     ATTR_IDENTIFIER = 333,
     202     ATTR_TYPEDEFname = 334,
     203     ATTR_TYPEGENname = 335,
     204     INTEGERconstant = 336,
     205     CHARACTERconstant = 337,
     206     STRINGliteral = 338,
     207     REALDECIMALconstant = 339,
     208     REALFRACTIONconstant = 340,
     209     FLOATINGconstant = 341,
     210     ZERO = 342,
     211     ONE = 343,
     212     ARROW = 344,
     213     ICR = 345,
     214     DECR = 346,
     215     LS = 347,
     216     RS = 348,
     217     LE = 349,
     218     GE = 350,
     219     EQ = 351,
     220     NE = 352,
     221     ANDAND = 353,
     222     OROR = 354,
     223     ELLIPSIS = 355,
     224     MULTassign = 356,
     225     DIVassign = 357,
     226     MODassign = 358,
     227     PLUSassign = 359,
     228     MINUSassign = 360,
     229     LSassign = 361,
     230     RSassign = 362,
     231     ANDassign = 363,
     232     ERassign = 364,
     233     ORassign = 365,
     234     ATassign = 366,
     235     THEN = 367
    234236   };
    235237#endif
     
    256258#define SIGNED 277
    257259#define UNSIGNED 278
    258 #define VALIST 279
    259 #define BOOL 280
    260 #define COMPLEX 281
    261 #define IMAGINARY 282
    262 #define TYPEOF 283
    263 #define LABEL 284
    264 #define ENUM 285
    265 #define STRUCT 286
    266 #define UNION 287
    267 #define OTYPE 288
    268 #define FTYPE 289
    269 #define DTYPE 290
    270 #define TRAIT 291
    271 #define SIZEOF 292
    272 #define OFFSETOF 293
    273 #define ATTRIBUTE 294
    274 #define EXTENSION 295
    275 #define IF 296
    276 #define ELSE 297
    277 #define SWITCH 298
    278 #define CASE 299
    279 #define DEFAULT 300
    280 #define DO 301
    281 #define WHILE 302
    282 #define FOR 303
    283 #define BREAK 304
    284 #define CONTINUE 305
    285 #define GOTO 306
    286 #define RETURN 307
    287 #define CHOOSE 308
    288 #define DISABLE 309
    289 #define ENABLE 310
    290 #define FALLTHRU 311
    291 #define TRY 312
    292 #define CATCH 313
    293 #define CATCHRESUME 314
    294 #define FINALLY 315
    295 #define THROW 316
    296 #define THROWRESUME 317
    297 #define AT 318
    298 #define ASM 319
    299 #define ALIGNAS 320
    300 #define ALIGNOF 321
    301 #define ATOMIC 322
    302 #define GENERIC 323
    303 #define NORETURN 324
    304 #define STATICASSERT 325
    305 #define THREADLOCAL 326
    306 #define IDENTIFIER 327
    307 #define QUOTED_IDENTIFIER 328
    308 #define TYPEDEFname 329
    309 #define TYPEGENname 330
    310 #define ATTR_IDENTIFIER 331
    311 #define ATTR_TYPEDEFname 332
    312 #define ATTR_TYPEGENname 333
    313 #define INTEGERconstant 334
    314 #define CHARACTERconstant 335
    315 #define STRINGliteral 336
    316 #define REALDECIMALconstant 337
    317 #define REALFRACTIONconstant 338
    318 #define FLOATINGconstant 339
    319 #define ZERO 340
    320 #define ONE 341
    321 #define ARROW 342
    322 #define ICR 343
    323 #define DECR 344
    324 #define LS 345
    325 #define RS 346
    326 #define LE 347
    327 #define GE 348
    328 #define EQ 349
    329 #define NE 350
    330 #define ANDAND 351
    331 #define OROR 352
    332 #define ELLIPSIS 353
    333 #define MULTassign 354
    334 #define DIVassign 355
    335 #define MODassign 356
    336 #define PLUSassign 357
    337 #define MINUSassign 358
    338 #define LSassign 359
    339 #define RSassign 360
    340 #define ANDassign 361
    341 #define ERassign 362
    342 #define ORassign 363
    343 #define ATassign 364
    344 #define THEN 365
     260#define ZERO_T 279
     261#define ONE_T 280
     262#define VALIST 281
     263#define BOOL 282
     264#define COMPLEX 283
     265#define IMAGINARY 284
     266#define TYPEOF 285
     267#define LABEL 286
     268#define ENUM 287
     269#define STRUCT 288
     270#define UNION 289
     271#define OTYPE 290
     272#define FTYPE 291
     273#define DTYPE 292
     274#define TRAIT 293
     275#define SIZEOF 294
     276#define OFFSETOF 295
     277#define ATTRIBUTE 296
     278#define EXTENSION 297
     279#define IF 298
     280#define ELSE 299
     281#define SWITCH 300
     282#define CASE 301
     283#define DEFAULT 302
     284#define DO 303
     285#define WHILE 304
     286#define FOR 305
     287#define BREAK 306
     288#define CONTINUE 307
     289#define GOTO 308
     290#define RETURN 309
     291#define CHOOSE 310
     292#define DISABLE 311
     293#define ENABLE 312
     294#define FALLTHRU 313
     295#define TRY 314
     296#define CATCH 315
     297#define CATCHRESUME 316
     298#define FINALLY 317
     299#define THROW 318
     300#define THROWRESUME 319
     301#define AT 320
     302#define ASM 321
     303#define ALIGNAS 322
     304#define ALIGNOF 323
     305#define ATOMIC 324
     306#define GENERIC 325
     307#define NORETURN 326
     308#define STATICASSERT 327
     309#define THREADLOCAL 328
     310#define IDENTIFIER 329
     311#define QUOTED_IDENTIFIER 330
     312#define TYPEDEFname 331
     313#define TYPEGENname 332
     314#define ATTR_IDENTIFIER 333
     315#define ATTR_TYPEDEFname 334
     316#define ATTR_TYPEGENname 335
     317#define INTEGERconstant 336
     318#define CHARACTERconstant 337
     319#define STRINGliteral 338
     320#define REALDECIMALconstant 339
     321#define REALFRACTIONconstant 340
     322#define FLOATINGconstant 341
     323#define ZERO 342
     324#define ONE 343
     325#define ARROW 344
     326#define ICR 345
     327#define DECR 346
     328#define LS 347
     329#define RS 348
     330#define LE 349
     331#define GE 350
     332#define EQ 351
     333#define NE 352
     334#define ANDAND 353
     335#define OROR 354
     336#define ELLIPSIS 355
     337#define MULTassign 356
     338#define DIVassign 357
     339#define MODassign 358
     340#define PLUSassign 359
     341#define MINUSassign 360
     342#define LSassign 361
     343#define RSassign 362
     344#define ANDassign 363
     345#define ERassign 364
     346#define ORassign 365
     347#define ATassign 366
     348#define THEN 367
    345349
    346350
     
    372376
    373377/* Line 293 of yacc.c  */
    374 #line 375 "Parser/parser.cc"
     378#line 379 "Parser/parser.cc"
    375379} YYSTYPE;
    376380# define YYSTYPE_IS_TRIVIAL 1
     
    384388
    385389/* Line 343 of yacc.c  */
    386 #line 387 "Parser/parser.cc"
     390#line 391 "Parser/parser.cc"
    387391
    388392#ifdef short
     
    601605
    602606/* YYFINAL -- State number of the termination state.  */
    603 #define YYFINAL  249
     607#define YYFINAL  251
    604608/* YYLAST -- Last index in YYTABLE.  */
    605 #define YYLAST   10266
     609#define YYLAST   10624
    606610
    607611/* YYNTOKENS -- Number of terminals.  */
    608 #define YYNTOKENS  135
     612#define YYNTOKENS  137
    609613/* YYNNTS -- Number of nonterminals.  */
    610614#define YYNNTS  243
    611615/* YYNRULES -- Number of rules.  */
    612 #define YYNRULES  755
     616#define YYNRULES  757
    613617/* YYNRULES -- Number of states.  */
    614 #define YYNSTATES  1538
     618#define YYNSTATES  1540
    615619
    616620/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    617621#define YYUNDEFTOK  2
    618 #define YYMAXUTOK   365
     622#define YYMAXUTOK   367
    619623
    620624#define YYTRANSLATE(YYX)                                                \
     
    627631       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    628632       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    629        2,     2,     2,   123,     2,     2,     2,   126,   120,     2,
    630      111,   112,   119,   121,   118,   122,   115,   125,     2,     2,
    631        2,     2,     2,     2,     2,     2,     2,     2,   132,   134,
    632      127,   133,   128,   131,     2,     2,     2,     2,     2,     2,
     633       2,     2,     2,   125,     2,     2,     2,   128,   122,     2,
     634     113,   114,   121,   123,   120,   124,   117,   127,     2,     2,
     635       2,     2,     2,     2,     2,     2,     2,     2,   134,   136,
     636     129,   135,   130,   133,     2,     2,     2,     2,     2,     2,
    633637       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    634638       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    635        2,   113,     2,   114,   129,     2,     2,     2,     2,     2,
     639       2,   115,     2,   116,   131,     2,     2,     2,     2,     2,
    636640       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    637641       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    638        2,     2,     2,   116,   130,   117,   124,     2,     2,     2,
     642       2,     2,     2,   118,   132,   119,   126,     2,     2,     2,
    639643       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    640644       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    660664      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    661665      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    662      105,   106,   107,   108,   109,   110
     666     105,   106,   107,   108,   109,   110,   111,   112
    663667};
    664668
     
    701705    1119,  1125,  1127,  1130,  1134,  1136,  1139,  1141,  1143,  1145,
    702706    1147,  1149,  1151,  1153,  1155,  1157,  1159,  1161,  1163,  1165,
    703     1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1186,
    704     1189,  1193,  1197,  1199,  1203,  1205,  1208,  1211,  1214,  1219,
    705     1224,  1229,  1234,  1236,  1239,  1242,  1246,  1248,  1251,  1254,
    706     1256,  1259,  1262,  1266,  1268,  1271,  1274,  1276,  1278,  1283,
    707     1286,  1287,  1294,  1302,  1305,  1308,  1311,  1312,  1315,  1318,
    708     1322,  1325,  1329,  1331,  1334,  1338,  1341,  1344,  1349,  1350,
    709     1352,  1355,  1358,  1360,  1361,  1363,  1366,  1369,  1375,  1378,
    710     1379,  1387,  1390,  1395,  1396,  1399,  1400,  1402,  1404,  1406,
    711     1412,  1418,  1424,  1426,  1432,  1438,  1448,  1450,  1456,  1457,
    712     1459,  1461,  1467,  1469,  1471,  1477,  1483,  1485,  1489,  1493,
    713     1498,  1500,  1502,  1504,  1506,  1509,  1511,  1515,  1519,  1521,
    714     1524,  1526,  1530,  1532,  1534,  1536,  1538,  1540,  1542,  1544,
    715     1546,  1548,  1550,  1552,  1555,  1557,  1559,  1561,  1564,  1565,
    716     1568,  1571,  1573,  1578,  1579,  1581,  1584,  1588,  1593,  1596,
    717     1599,  1601,  1604,  1607,  1613,  1619,  1627,  1634,  1636,  1639,
    718     1642,  1646,  1648,  1651,  1654,  1659,  1662,  1667,  1668,  1673,
    719     1676,  1678,  1680,  1682,  1683,  1686,  1692,  1698,  1712,  1714,
    720     1716,  1720,  1724,  1727,  1731,  1735,  1738,  1743,  1745,  1752,
    721     1762,  1763,  1775,  1777,  1781,  1785,  1789,  1791,  1793,  1799,
    722     1802,  1808,  1809,  1811,  1813,  1817,  1818,  1820,  1822,  1824,
    723     1826,  1827,  1834,  1837,  1839,  1842,  1847,  1850,  1854,  1858,
    724     1862,  1867,  1873,  1879,  1885,  1892,  1894,  1896,  1898,  1902,
    725     1903,  1909,  1910,  1912,  1914,  1917,  1924,  1926,  1930,  1931,
    726     1933,  1938,  1940,  1942,  1944,  1946,  1949,  1951,  1954,  1957,
    727     1959,  1963,  1966,  1970,  1974,  1977,  1982,  1987,  1991,  2000,
    728     2004,  2007,  2009,  2012,  2019,  2028,  2032,  2035,  2039,  2043,
    729     2048,  2053,  2057,  2059,  2061,  2063,  2068,  2075,  2079,  2082,
    730     2086,  2090,  2095,  2100,  2104,  2107,  2109,  2112,  2115,  2117,
    731     2121,  2124,  2128,  2132,  2135,  2140,  2145,  2149,  2156,  2165,
    732     2169,  2172,  2174,  2177,  2180,  2183,  2187,  2191,  2194,  2199,
    733     2204,  2208,  2215,  2224,  2228,  2231,  2233,  2236,  2239,  2241,
    734     2243,  2246,  2250,  2254,  2257,  2262,  2269,  2278,  2280,  2283,
    735     2286,  2288,  2291,  2294,  2298,  2302,  2304,  2309,  2314,  2318,
    736     2324,  2333,  2337,  2340,  2344,  2346,  2352,  2358,  2365,  2372,
    737     2374,  2377,  2380,  2382,  2385,  2388,  2392,  2396,  2398,  2403,
    738     2408,  2412,  2418,  2427,  2431,  2433,  2436,  2438,  2441,  2448,
    739     2454,  2461,  2469,  2477,  2479,  2482,  2485,  2487,  2490,  2493,
    740     2497,  2501,  2503,  2508,  2513,  2517,  2526,  2530,  2532,  2534,
    741     2537,  2539,  2541,  2544,  2548,  2551,  2555,  2558,  2562,  2566,
    742     2569,  2574,  2578,  2581,  2585,  2588,  2593,  2597,  2600,  2607,
    743     2614,  2621,  2629,  2631,  2634,  2636,  2638,  2640,  2643,  2647,
    744     2650,  2654,  2657,  2661,  2665,  2670,  2673,  2677,  2682,  2685,
    745     2691,  2698,  2705,  2706,  2708,  2709
     707    1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1185,
     708    1187,  1190,  1193,  1197,  1201,  1203,  1207,  1209,  1212,  1215,
     709    1218,  1223,  1228,  1233,  1238,  1240,  1243,  1246,  1250,  1252,
     710    1255,  1258,  1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,
     711    1282,  1287,  1290,  1291,  1298,  1306,  1309,  1312,  1315,  1316,
     712    1319,  1322,  1326,  1329,  1333,  1335,  1338,  1342,  1345,  1348,
     713    1353,  1354,  1356,  1359,  1362,  1364,  1365,  1367,  1370,  1373,
     714    1379,  1382,  1383,  1391,  1394,  1399,  1400,  1403,  1404,  1406,
     715    1408,  1410,  1416,  1422,  1428,  1430,  1436,  1442,  1452,  1454,
     716    1460,  1461,  1463,  1465,  1471,  1473,  1475,  1481,  1487,  1489,
     717    1493,  1497,  1502,  1504,  1506,  1508,  1510,  1513,  1515,  1519,
     718    1523,  1525,  1528,  1530,  1534,  1536,  1538,  1540,  1542,  1544,
     719    1546,  1548,  1550,  1552,  1554,  1556,  1559,  1561,  1563,  1565,
     720    1568,  1569,  1572,  1575,  1577,  1582,  1583,  1585,  1588,  1592,
     721    1597,  1600,  1603,  1605,  1608,  1611,  1617,  1623,  1631,  1638,
     722    1640,  1643,  1646,  1650,  1652,  1655,  1658,  1663,  1666,  1671,
     723    1672,  1677,  1680,  1682,  1684,  1686,  1687,  1690,  1696,  1702,
     724    1716,  1718,  1720,  1724,  1728,  1731,  1735,  1739,  1742,  1747,
     725    1749,  1756,  1766,  1767,  1779,  1781,  1785,  1789,  1793,  1795,
     726    1797,  1803,  1806,  1812,  1813,  1815,  1817,  1821,  1822,  1824,
     727    1826,  1828,  1830,  1831,  1838,  1841,  1843,  1846,  1851,  1854,
     728    1858,  1862,  1866,  1871,  1877,  1883,  1889,  1896,  1898,  1900,
     729    1902,  1906,  1907,  1913,  1914,  1916,  1918,  1921,  1928,  1930,
     730    1934,  1935,  1937,  1942,  1944,  1946,  1948,  1950,  1953,  1955,
     731    1958,  1961,  1963,  1967,  1970,  1974,  1978,  1981,  1986,  1991,
     732    1995,  2004,  2008,  2011,  2013,  2016,  2023,  2032,  2036,  2039,
     733    2043,  2047,  2052,  2057,  2061,  2063,  2065,  2067,  2072,  2079,
     734    2083,  2086,  2090,  2094,  2099,  2104,  2108,  2111,  2113,  2116,
     735    2119,  2121,  2125,  2128,  2132,  2136,  2139,  2144,  2149,  2153,
     736    2160,  2169,  2173,  2176,  2178,  2181,  2184,  2187,  2191,  2195,
     737    2198,  2203,  2208,  2212,  2219,  2228,  2232,  2235,  2237,  2240,
     738    2243,  2245,  2247,  2250,  2254,  2258,  2261,  2266,  2273,  2282,
     739    2284,  2287,  2290,  2292,  2295,  2298,  2302,  2306,  2308,  2313,
     740    2318,  2322,  2328,  2337,  2341,  2344,  2348,  2350,  2356,  2362,
     741    2369,  2376,  2378,  2381,  2384,  2386,  2389,  2392,  2396,  2400,
     742    2402,  2407,  2412,  2416,  2422,  2431,  2435,  2437,  2440,  2442,
     743    2445,  2452,  2458,  2465,  2473,  2481,  2483,  2486,  2489,  2491,
     744    2494,  2497,  2501,  2505,  2507,  2512,  2517,  2521,  2530,  2534,
     745    2536,  2538,  2541,  2543,  2545,  2548,  2552,  2555,  2559,  2562,
     746    2566,  2570,  2573,  2578,  2582,  2585,  2589,  2592,  2597,  2601,
     747    2604,  2611,  2618,  2625,  2633,  2635,  2638,  2640,  2642,  2644,
     748    2647,  2651,  2654,  2658,  2661,  2665,  2669,  2674,  2677,  2681,
     749    2686,  2689,  2695,  2702,  2709,  2710,  2712,  2713
    746750};
    747751
     
    749753static const yytype_int16 yyrhs[] =
    750754{
    751      306,     0,    -1,    -1,    -1,    79,    -1,    82,    -1,    83,
    752       -1,    84,    -1,    80,    -1,    72,    -1,    76,    -1,   142,
    753       -1,    72,    -1,    76,    -1,    72,    -1,   142,    -1,    85,
    754       -1,    86,    -1,   144,    -1,    81,    -1,   144,    81,    -1,
    755       72,    -1,   142,    -1,   172,    -1,   111,   174,   112,    -1,
    756      111,   178,   112,    -1,   145,    -1,   146,   113,   136,   169,
    757      137,   114,    -1,   146,   111,   147,   112,    -1,   146,   115,
    758      141,    -1,   146,   115,   113,   136,   149,   137,   114,    -1,
    759      146,    83,    -1,   146,    87,   141,    -1,   146,    87,   113,
    760      136,   149,   137,   114,    -1,   146,    88,    -1,   146,    89,
    761       -1,   111,   279,   112,   116,   283,   376,   117,    -1,   146,
    762      116,   147,   117,    -1,   148,    -1,   147,   118,   148,    -1,
    763       -1,   169,    -1,   150,    -1,   149,   118,   150,    -1,   151,
    764       -1,    82,   150,    -1,    82,   113,   136,   149,   137,   114,
    765       -1,   151,   115,   150,    -1,   151,   115,   113,   136,   149,
    766      137,   114,    -1,   151,    87,   150,    -1,   151,    87,   113,
    767      136,   149,   137,   114,    -1,    79,   152,    -1,    84,   152,
    768       -1,   141,   152,    -1,    -1,   152,    83,    -1,   146,    -1,
    769      138,    -1,   143,    -1,    40,   156,    -1,   154,   156,    -1,
    770      155,   156,    -1,    88,   153,    -1,    89,   153,    -1,    37,
    771      153,    -1,    37,   111,   279,   112,    -1,    66,   153,    -1,
    772       66,   111,   279,   112,    -1,    38,   111,   279,   118,   141,
    773      112,    -1,    76,    -1,    76,   111,   148,   112,    -1,    76,
    774      111,   280,   112,    -1,   119,    -1,   120,    -1,   121,    -1,
    775      122,    -1,   123,    -1,   124,    -1,   153,    -1,   111,   279,
    776      112,   156,    -1,   156,    -1,   157,   119,   156,    -1,   157,
    777      125,   156,    -1,   157,   126,   156,    -1,   157,    -1,   158,
    778      121,   157,    -1,   158,   122,   157,    -1,   158,    -1,   159,
    779       90,   158,    -1,   159,    91,   158,    -1,   159,    -1,   160,
    780      127,   159,    -1,   160,   128,   159,    -1,   160,    92,   159,
    781       -1,   160,    93,   159,    -1,   160,    -1,   161,    94,   160,
    782       -1,   161,    95,   160,    -1,   161,    -1,   162,   120,   161,
    783       -1,   162,    -1,   163,   129,   162,    -1,   163,    -1,   164,
    784      130,   163,    -1,   164,    -1,   165,    96,   164,    -1,   165,
    785       -1,   166,    97,   165,    -1,   166,    -1,   166,   131,   174,
    786      132,   167,    -1,   166,   131,   132,   167,    -1,   167,    -1,
    787      167,    -1,   153,   171,   169,    -1,    -1,   169,    -1,   133,
    788       -1,   109,    -1,    99,    -1,   100,    -1,   101,    -1,   102,
    789       -1,   103,    -1,   104,    -1,   105,    -1,   106,    -1,   107,
    790       -1,   108,    -1,   113,   136,   118,   173,   137,   114,    -1,
    791      113,   136,   169,   118,   173,   137,   114,    -1,   170,    -1,
    792      173,   118,   170,    -1,   169,    -1,   174,   118,   169,    -1,
    793       -1,   174,    -1,   177,    -1,   178,    -1,   182,    -1,   183,
    794       -1,   195,    -1,   197,    -1,   198,    -1,   203,    -1,   129,
    795      146,   116,   147,   117,   134,    -1,    72,   132,   316,   176,
    796       -1,   116,   117,    -1,   116,   136,   136,   214,   179,   137,
    797      117,    -1,   180,    -1,   179,   136,   180,    -1,   217,    -1,
    798       40,   217,    -1,   312,    -1,   176,   137,    -1,   176,    -1,
    799      181,   176,    -1,   175,   134,    -1,    41,   111,   174,   112,
    800      176,    -1,    41,   111,   174,   112,   176,    42,   176,    -1,
    801       43,   111,   174,   112,   188,    -1,    43,   111,   174,   112,
    802      116,   136,   210,   189,   117,    -1,    53,   111,   174,   112,
    803      188,    -1,    53,   111,   174,   112,   116,   136,   210,   191,
    804      117,    -1,   168,    -1,   168,    98,   168,    -1,   314,    -1,
    805      184,    -1,   185,   118,   184,    -1,    44,   185,   132,    -1,
    806       45,   132,    -1,   186,    -1,   187,   186,    -1,   187,   176,
    807       -1,    -1,   190,    -1,   187,   181,    -1,   190,   187,   181,
    808       -1,    -1,   192,    -1,   187,   194,    -1,   187,   181,   193,
    809       -1,   192,   187,   194,    -1,   192,   187,   181,   193,    -1,
    810       -1,   194,    -1,    56,    -1,    56,   134,    -1,    47,   111,
    811      174,   112,   176,    -1,    46,   176,    47,   111,   174,   112,
    812      134,    -1,    48,   111,   136,   196,   112,   176,    -1,   175,
    813      137,   134,   175,   134,   175,    -1,   217,   175,   134,   175,
    814       -1,    51,    72,   134,    -1,    51,   119,   174,   134,    -1,
    815       50,   134,    -1,    50,    72,   134,    -1,    49,   134,    -1,
    816       49,    72,   134,    -1,    52,   175,   134,    -1,    61,   170,
    817      134,    -1,    62,   170,   134,    -1,    62,   170,    63,   169,
    818      134,    -1,    57,   178,   199,    -1,    57,   178,   201,    -1,
    819       57,   178,   199,   201,    -1,   200,    -1,    58,   111,    98,
    820      112,   178,    -1,   200,    58,   111,    98,   112,   178,    -1,
    821       59,   111,    98,   112,   178,    -1,   200,    59,   111,    98,
    822      112,   178,    -1,    58,   111,   136,   136,   202,   137,   112,
    823      178,   137,    -1,   200,    58,   111,   136,   136,   202,   137,
    824      112,   178,   137,    -1,    59,   111,   136,   136,   202,   137,
    825      112,   178,   137,    -1,   200,    59,   111,   136,   136,   202,
    826      137,   112,   178,   137,    -1,    60,   178,    -1,   230,    -1,
    827      230,   313,    -1,   230,   361,    -1,   370,   141,    -1,   370,
    828       -1,    64,   204,   111,   143,   112,   134,    -1,    64,   204,
    829      111,   143,   132,   205,   112,   134,    -1,    64,   204,   111,
    830      143,   132,   205,   132,   205,   112,   134,    -1,    64,   204,
    831      111,   143,   132,   205,   132,   205,   132,   208,   112,   134,
    832       -1,    64,   204,    51,   111,   143,   132,   132,   205,   132,
    833      208,   132,   209,   112,   134,    -1,    -1,    11,    -1,    -1,
    834      206,    -1,   207,    -1,   206,   118,   207,    -1,   143,   111,
    835      168,   112,    -1,   113,   168,   114,   143,   111,   168,   112,
    836       -1,    -1,   143,    -1,   208,   118,   143,    -1,   141,    -1,
    837      209,   118,   141,    -1,   137,    -1,   211,    -1,   217,    -1,
    838      211,   136,   217,    -1,   137,    -1,   213,    -1,   227,    -1,
    839      213,   136,   227,    -1,    -1,   215,    -1,    29,   216,   134,
    840       -1,   215,    29,   216,   134,    -1,   278,    -1,   216,   118,
    841      278,    -1,   218,    -1,   227,    -1,   219,   137,   134,    -1,
    842      224,   137,   134,    -1,   221,   137,   134,    -1,   297,   137,
    843      134,    -1,   300,   137,   134,    -1,   220,   281,    -1,   236,
    844      220,   281,    -1,   219,   137,   118,   136,   276,   281,    -1,
    845      371,   276,   315,    -1,   374,   276,   315,    -1,   232,   374,
    846      276,   315,    -1,   222,    -1,   232,   222,    -1,   236,   222,
    847       -1,   236,   232,   222,    -1,   221,   137,   118,   136,   276,
    848       -1,   374,   276,   111,   136,   264,   137,   112,    -1,   223,
    849      276,   111,   136,   264,   137,   112,    -1,   113,   136,   266,
    850      137,   114,    -1,   113,   136,   266,   137,   118,   136,   267,
    851      137,   114,    -1,     3,   220,    -1,     3,   222,    -1,   224,
    852      137,   118,   136,   141,    -1,     3,   230,   313,    -1,   225,
    853      137,   118,   136,   313,    -1,   232,     3,   230,   313,    -1,
    854      230,     3,   313,    -1,   230,     3,   232,   313,    -1,     3,
    855      141,   133,   169,    -1,   226,   137,   118,   136,   141,   133,
    856      169,    -1,   228,   137,   134,    -1,   225,   137,   134,    -1,
    857      226,   137,   134,    -1,   244,   137,   134,    -1,   229,   313,
    858      315,   281,    -1,   228,   118,   316,   313,   315,   281,    -1,
    859      240,    -1,   244,    -1,   246,    -1,   287,    -1,   241,    -1,
    860      245,    -1,   247,    -1,   288,    -1,    -1,   232,    -1,   233,
    861       -1,   232,   233,    -1,   234,    -1,   318,    -1,    10,    -1,
    862       12,    -1,    11,    -1,    14,    -1,    67,    -1,    -1,    13,
    863      111,   235,   290,   112,    -1,   237,    -1,   232,   237,    -1,
    864      236,   232,   237,    -1,   238,    -1,   237,   238,    -1,     5,
     755     308,     0,    -1,    -1,    -1,    81,    -1,    84,    -1,    85,
     756      -1,    86,    -1,    82,    -1,    74,    -1,    78,    -1,   144,
     757      -1,    74,    -1,    78,    -1,    74,    -1,   144,    -1,    87,
     758      -1,    88,    -1,   146,    -1,    83,    -1,   146,    83,    -1,
     759      74,    -1,   144,    -1,   174,    -1,   113,   176,   114,    -1,
     760     113,   180,   114,    -1,   147,    -1,   148,   115,   138,   171,
     761     139,   116,    -1,   148,   113,   149,   114,    -1,   148,   117,
     762     143,    -1,   148,   117,   115,   138,   151,   139,   116,    -1,
     763     148,    85,    -1,   148,    89,   143,    -1,   148,    89,   115,
     764     138,   151,   139,   116,    -1,   148,    90,    -1,   148,    91,
     765      -1,   113,   281,   114,   118,   285,   378,   119,    -1,   148,
     766     118,   149,   119,    -1,   150,    -1,   149,   120,   150,    -1,
     767      -1,   171,    -1,   152,    -1,   151,   120,   152,    -1,   153,
     768      -1,    84,   152,    -1,    84,   115,   138,   151,   139,   116,
     769      -1,   153,   117,   152,    -1,   153,   117,   115,   138,   151,
     770     139,   116,    -1,   153,    89,   152,    -1,   153,    89,   115,
     771     138,   151,   139,   116,    -1,    81,   154,    -1,    86,   154,
     772      -1,   143,   154,    -1,    -1,   154,    85,    -1,   148,    -1,
     773     140,    -1,   145,    -1,    42,   158,    -1,   156,   158,    -1,
     774     157,   158,    -1,    90,   155,    -1,    91,   155,    -1,    39,
     775     155,    -1,    39,   113,   281,   114,    -1,    68,   155,    -1,
     776      68,   113,   281,   114,    -1,    40,   113,   281,   120,   143,
     777     114,    -1,    78,    -1,    78,   113,   150,   114,    -1,    78,
     778     113,   282,   114,    -1,   121,    -1,   122,    -1,   123,    -1,
     779     124,    -1,   125,    -1,   126,    -1,   155,    -1,   113,   281,
     780     114,   158,    -1,   158,    -1,   159,   121,   158,    -1,   159,
     781     127,   158,    -1,   159,   128,   158,    -1,   159,    -1,   160,
     782     123,   159,    -1,   160,   124,   159,    -1,   160,    -1,   161,
     783      92,   160,    -1,   161,    93,   160,    -1,   161,    -1,   162,
     784     129,   161,    -1,   162,   130,   161,    -1,   162,    94,   161,
     785      -1,   162,    95,   161,    -1,   162,    -1,   163,    96,   162,
     786      -1,   163,    97,   162,    -1,   163,    -1,   164,   122,   163,
     787      -1,   164,    -1,   165,   131,   164,    -1,   165,    -1,   166,
     788     132,   165,    -1,   166,    -1,   167,    98,   166,    -1,   167,
     789      -1,   168,    99,   167,    -1,   168,    -1,   168,   133,   176,
     790     134,   169,    -1,   168,   133,   134,   169,    -1,   169,    -1,
     791     169,    -1,   155,   173,   171,    -1,    -1,   171,    -1,   135,
     792      -1,   111,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
     793      -1,   105,    -1,   106,    -1,   107,    -1,   108,    -1,   109,
     794      -1,   110,    -1,   115,   138,   120,   175,   139,   116,    -1,
     795     115,   138,   171,   120,   175,   139,   116,    -1,   172,    -1,
     796     175,   120,   172,    -1,   171,    -1,   176,   120,   171,    -1,
     797      -1,   176,    -1,   179,    -1,   180,    -1,   184,    -1,   185,
     798      -1,   197,    -1,   199,    -1,   200,    -1,   205,    -1,   131,
     799     148,   118,   149,   119,   136,    -1,    74,   134,   318,   178,
     800      -1,   118,   119,    -1,   118,   138,   138,   216,   181,   139,
     801     119,    -1,   182,    -1,   181,   138,   182,    -1,   219,    -1,
     802      42,   219,    -1,   314,    -1,   178,   139,    -1,   178,    -1,
     803     183,   178,    -1,   177,   136,    -1,    43,   113,   176,   114,
     804     178,    -1,    43,   113,   176,   114,   178,    44,   178,    -1,
     805      45,   113,   176,   114,   190,    -1,    45,   113,   176,   114,
     806     118,   138,   212,   191,   119,    -1,    55,   113,   176,   114,
     807     190,    -1,    55,   113,   176,   114,   118,   138,   212,   193,
     808     119,    -1,   170,    -1,   170,   100,   170,    -1,   316,    -1,
     809     186,    -1,   187,   120,   186,    -1,    46,   187,   134,    -1,
     810      47,   134,    -1,   188,    -1,   189,   188,    -1,   189,   178,
     811      -1,    -1,   192,    -1,   189,   183,    -1,   192,   189,   183,
     812      -1,    -1,   194,    -1,   189,   196,    -1,   189,   183,   195,
     813      -1,   194,   189,   196,    -1,   194,   189,   183,   195,    -1,
     814      -1,   196,    -1,    58,    -1,    58,   136,    -1,    49,   113,
     815     176,   114,   178,    -1,    48,   178,    49,   113,   176,   114,
     816     136,    -1,    50,   113,   138,   198,   114,   178,    -1,   177,
     817     139,   136,   177,   136,   177,    -1,   219,   177,   136,   177,
     818      -1,    53,    74,   136,    -1,    53,   121,   176,   136,    -1,
     819      52,   136,    -1,    52,    74,   136,    -1,    51,   136,    -1,
     820      51,    74,   136,    -1,    54,   177,   136,    -1,    63,   172,
     821     136,    -1,    64,   172,   136,    -1,    64,   172,    65,   171,
     822     136,    -1,    59,   180,   201,    -1,    59,   180,   203,    -1,
     823      59,   180,   201,   203,    -1,   202,    -1,    60,   113,   100,
     824     114,   180,    -1,   202,    60,   113,   100,   114,   180,    -1,
     825      61,   113,   100,   114,   180,    -1,   202,    61,   113,   100,
     826     114,   180,    -1,    60,   113,   138,   138,   204,   139,   114,
     827     180,   139,    -1,   202,    60,   113,   138,   138,   204,   139,
     828     114,   180,   139,    -1,    61,   113,   138,   138,   204,   139,
     829     114,   180,   139,    -1,   202,    61,   113,   138,   138,   204,
     830     139,   114,   180,   139,    -1,    62,   180,    -1,   232,    -1,
     831     232,   315,    -1,   232,   363,    -1,   372,   143,    -1,   372,
     832      -1,    66,   206,   113,   145,   114,   136,    -1,    66,   206,
     833     113,   145,   134,   207,   114,   136,    -1,    66,   206,   113,
     834     145,   134,   207,   134,   207,   114,   136,    -1,    66,   206,
     835     113,   145,   134,   207,   134,   207,   134,   210,   114,   136,
     836      -1,    66,   206,    53,   113,   145,   134,   134,   207,   134,
     837     210,   134,   211,   114,   136,    -1,    -1,    11,    -1,    -1,
     838     208,    -1,   209,    -1,   208,   120,   209,    -1,   145,   113,
     839     170,   114,    -1,   115,   170,   116,   145,   113,   170,   114,
     840      -1,    -1,   145,    -1,   210,   120,   145,    -1,   143,    -1,
     841     211,   120,   143,    -1,   139,    -1,   213,    -1,   219,    -1,
     842     213,   138,   219,    -1,   139,    -1,   215,    -1,   229,    -1,
     843     215,   138,   229,    -1,    -1,   217,    -1,    31,   218,   136,
     844      -1,   217,    31,   218,   136,    -1,   280,    -1,   218,   120,
     845     280,    -1,   220,    -1,   229,    -1,   221,   139,   136,    -1,
     846     226,   139,   136,    -1,   223,   139,   136,    -1,   299,   139,
     847     136,    -1,   302,   139,   136,    -1,   222,   283,    -1,   238,
     848     222,   283,    -1,   221,   139,   120,   138,   278,   283,    -1,
     849     373,   278,   317,    -1,   376,   278,   317,    -1,   234,   376,
     850     278,   317,    -1,   224,    -1,   234,   224,    -1,   238,   224,
     851      -1,   238,   234,   224,    -1,   223,   139,   120,   138,   278,
     852      -1,   376,   278,   113,   138,   266,   139,   114,    -1,   225,
     853     278,   113,   138,   266,   139,   114,    -1,   115,   138,   268,
     854     139,   116,    -1,   115,   138,   268,   139,   120,   138,   269,
     855     139,   116,    -1,     3,   222,    -1,     3,   224,    -1,   226,
     856     139,   120,   138,   143,    -1,     3,   232,   315,    -1,   227,
     857     139,   120,   138,   315,    -1,   234,     3,   232,   315,    -1,
     858     232,     3,   315,    -1,   232,     3,   234,   315,    -1,     3,
     859     143,   135,   171,    -1,   228,   139,   120,   138,   143,   135,
     860     171,    -1,   230,   139,   136,    -1,   227,   139,   136,    -1,
     861     228,   139,   136,    -1,   246,   139,   136,    -1,   231,   315,
     862     317,   283,    -1,   230,   120,   318,   315,   317,   283,    -1,
     863     242,    -1,   246,    -1,   248,    -1,   289,    -1,   243,    -1,
     864     247,    -1,   249,    -1,   290,    -1,    -1,   234,    -1,   235,
     865      -1,   234,   235,    -1,   236,    -1,   320,    -1,    10,    -1,
     866      12,    -1,    11,    -1,    14,    -1,    69,    -1,    -1,    13,
     867     113,   237,   292,   114,    -1,   239,    -1,   234,   239,    -1,
     868     238,   234,   239,    -1,   240,    -1,   239,   240,    -1,     5,
    865869      -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
    866       -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
     870      -1,    71,    -1,    73,    -1,    16,    -1,    21,    -1,    20,
    867871      -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    868       -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
    869       -1,   241,    -1,   236,   241,    -1,   240,   238,    -1,   240,
    870      238,   232,    -1,   240,   238,   241,    -1,   242,    -1,   231,
    871      243,   231,    -1,   239,    -1,   232,   239,    -1,   242,   233,
    872       -1,   242,   239,    -1,    28,   111,   280,   112,    -1,    28,
    873      111,   174,   112,    -1,    78,   111,   280,   112,    -1,    78,
    874      111,   174,   112,    -1,   245,    -1,   236,   245,    -1,   244,
    875      238,    -1,   244,   238,   232,    -1,   248,    -1,   232,   248,
    876       -1,   245,   233,    -1,   247,    -1,   236,   247,    -1,   246,
    877      238,    -1,   246,   238,   232,    -1,    74,    -1,   232,    74,
    878       -1,   247,   233,    -1,   249,    -1,   260,    -1,   251,   116,
    879      252,   117,    -1,   251,   278,    -1,    -1,   251,   278,   250,
    880      116,   252,   117,    -1,   251,   111,   296,   112,   116,   252,
    881      117,    -1,   251,   289,    -1,    31,   316,    -1,    32,   316,
    882       -1,    -1,   252,   253,    -1,   254,   134,    -1,    40,   254,
    883      134,    -1,   255,   134,    -1,    40,   255,   134,    -1,   370,
    884       -1,   370,   278,    -1,   254,   118,   278,    -1,   254,   118,
    885       -1,   230,   256,    -1,   255,   118,   316,   256,    -1,    -1,
    886      258,    -1,   322,   257,    -1,   335,   257,    -1,   361,    -1,
    887       -1,   258,    -1,   132,   168,    -1,    30,   316,    -1,   259,
    888      116,   262,   376,   117,    -1,   259,   278,    -1,    -1,   259,
    889      278,   261,   116,   262,   376,   117,    -1,   278,   263,    -1,
    890      262,   118,   278,   263,    -1,    -1,   133,   168,    -1,    -1,
    891      265,    -1,   267,    -1,   266,    -1,   266,   137,   118,   136,
    892      267,    -1,   267,   137,   118,   136,    98,    -1,   266,   137,
    893      118,   136,    98,    -1,   271,    -1,   267,   137,   118,   136,
    894      271,    -1,   266,   137,   118,   136,   271,    -1,   266,   137,
    895      118,   136,   267,   137,   118,   136,   271,    -1,   272,    -1,
    896      267,   137,   118,   136,   272,    -1,    -1,   269,    -1,   270,
    897       -1,   270,   137,   118,   136,    98,    -1,   274,    -1,   273,
    898       -1,   270,   137,   118,   136,   274,    -1,   270,   137,   118,
    899      136,   273,    -1,   273,    -1,   366,   276,   377,    -1,   374,
    900      276,   377,    -1,   232,   374,   276,   377,    -1,   222,    -1,
    901      274,    -1,   366,    -1,   374,    -1,   232,   374,    -1,   375,
    902       -1,   229,   340,   377,    -1,   229,   344,   377,    -1,   229,
    903       -1,   229,   355,    -1,   141,    -1,   275,   118,   141,    -1,
    904      139,    -1,    74,    -1,    75,    -1,   140,    -1,    74,    -1,
    905       75,    -1,   141,    -1,    74,    -1,    75,    -1,   370,    -1,
    906      230,    -1,   230,   361,    -1,   370,    -1,   375,    -1,   230,
    907       -1,   230,   349,    -1,    -1,   133,   282,    -1,   109,   282,
    908       -1,   169,    -1,   116,   283,   376,   117,    -1,    -1,   282,
    909       -1,   284,   282,    -1,   283,   118,   282,    -1,   283,   118,
    910      284,   282,    -1,   285,   132,    -1,   278,   132,    -1,   286,
    911       -1,   285,   286,    -1,   115,   278,    -1,   113,   136,   169,
    912      137,   114,    -1,   113,   136,   314,   137,   114,    -1,   113,
    913      136,   168,    98,   168,   137,   114,    -1,   115,   113,   136,
    914      149,   137,   114,    -1,   288,    -1,   236,   288,    -1,   287,
    915      238,    -1,   287,   238,   232,    -1,   289,    -1,   232,   289,
    916       -1,   288,   233,    -1,    75,   111,   296,   112,    -1,   291,
    917      377,    -1,   290,   118,   291,   377,    -1,    -1,   293,   278,
    918      292,   294,    -1,   230,   340,    -1,    33,    -1,    35,    -1,
    919       34,    -1,    -1,   294,   295,    -1,   130,   278,   111,   296,
    920      112,    -1,   130,   116,   136,   302,   117,    -1,   130,   111,
    921      136,   290,   137,   112,   116,   136,   302,   117,   111,   296,
    922      112,    -1,   280,    -1,   169,    -1,   296,   118,   280,    -1,
    923      296,   118,   169,    -1,    33,   298,    -1,   237,    33,   298,
    924       -1,   297,   118,   298,    -1,   299,   294,    -1,   299,   294,
    925      133,   280,    -1,   278,    -1,   277,   111,   136,   290,   137,
    926      112,    -1,    36,   278,   111,   136,   290,   137,   112,   116,
    927      117,    -1,    -1,    36,   278,   111,   136,   290,   137,   112,
    928      116,   301,   302,   117,    -1,   303,    -1,   302,   136,   303,
    929       -1,   304,   137,   134,    -1,   305,   137,   134,    -1,   220,
    930       -1,   222,    -1,   304,   137,   118,   136,   276,    -1,   230,
    931      313,    -1,   305,   137,   118,   136,   313,    -1,    -1,   307,
    932       -1,   309,    -1,   307,   136,   309,    -1,    -1,   307,    -1,
    933      217,    -1,   311,    -1,   203,    -1,    -1,     5,    81,   310,
    934      116,   308,   117,    -1,    40,   309,    -1,   312,    -1,   327,
    935      178,    -1,   331,   136,   212,   178,    -1,   221,   178,    -1,
    936      229,   327,   178,    -1,   232,   327,   178,    -1,   236,   327,
    937      178,    -1,   236,   232,   327,   178,    -1,   229,   331,   136,
    938      212,   178,    -1,   232,   331,   136,   212,   178,    -1,   236,
    939      331,   136,   212,   178,    -1,   236,   232,   331,   136,   212,
    940      178,    -1,   322,    -1,   335,    -1,   327,    -1,   168,   124,
    941      168,    -1,    -1,    64,   111,   144,   112,   316,    -1,    -1,
    942      317,    -1,   318,    -1,   317,   318,    -1,    39,   111,   111,
    943      319,   112,   112,    -1,   320,    -1,   319,   118,   320,    -1,
    944       -1,   321,    -1,   321,   111,   175,   112,    -1,   276,    -1,
    945      238,    -1,   239,    -1,   233,    -1,   323,   316,    -1,   324,
    946       -1,   325,   316,    -1,   326,   316,    -1,   139,    -1,   111,
    947      323,   112,    -1,   154,   322,    -1,   154,   232,   322,    -1,
    948      111,   324,   112,    -1,   323,   353,    -1,   111,   324,   112,
    949      353,    -1,   111,   325,   112,   354,    -1,   111,   325,   112,
    950       -1,   111,   324,   112,   111,   136,   268,   137,   112,    -1,
    951      111,   326,   112,    -1,   328,   316,    -1,   329,    -1,   330,
    952      316,    -1,   323,   111,   136,   268,   137,   112,    -1,   111,
    953      329,   112,   111,   136,   268,   137,   112,    -1,   111,   328,
    954      112,    -1,   154,   327,    -1,   154,   232,   327,    -1,   111,
    955      329,   112,    -1,   111,   329,   112,   353,    -1,   111,   330,
    956      112,   354,    -1,   111,   330,   112,    -1,   332,    -1,   333,
    957       -1,   334,    -1,   323,   111,   275,   112,    -1,   111,   333,
    958      112,   111,   275,   112,    -1,   111,   332,   112,    -1,   154,
    959      331,    -1,   154,   232,   331,    -1,   111,   333,   112,    -1,
    960      111,   333,   112,   353,    -1,   111,   334,   112,   354,    -1,
    961      111,   334,   112,    -1,   336,   316,    -1,   337,    -1,   338,
    962      316,    -1,   339,   316,    -1,   345,    -1,   111,   336,   112,
    963       -1,   154,   335,    -1,   154,   232,   335,    -1,   111,   337,
    964      112,    -1,   336,   353,    -1,   111,   337,   112,   353,    -1,
    965      111,   338,   112,   354,    -1,   111,   338,   112,    -1,   336,
    966      111,   136,   268,   137,   112,    -1,   111,   337,   112,   111,
    967      136,   268,   137,   112,    -1,   111,   339,   112,    -1,   323,
    968      316,    -1,   341,    -1,   342,   316,    -1,   343,   316,    -1,
    969      154,   340,    -1,   154,   232,   340,    -1,   111,   341,   112,
    970       -1,   323,   359,    -1,   111,   341,   112,   353,    -1,   111,
    971      342,   112,   354,    -1,   111,   342,   112,    -1,   323,   111,
    972      136,   268,   137,   112,    -1,   111,   341,   112,   111,   136,
    973      268,   137,   112,    -1,   111,   343,   112,    -1,   345,   316,
    974       -1,   346,    -1,   347,   316,    -1,   348,   316,    -1,    74,
    975       -1,    75,    -1,   154,   344,    -1,   154,   232,   344,    -1,
    976      111,   346,   112,    -1,   345,   359,    -1,   111,   346,   112,
    977      359,    -1,   345,   111,   136,   268,   137,   112,    -1,   111,
    978      346,   112,   111,   136,   268,   137,   112,    -1,   350,    -1,
    979      351,   316,    -1,   352,   316,    -1,   154,    -1,   154,   232,
    980       -1,   154,   349,    -1,   154,   232,   349,    -1,   111,   350,
    981      112,    -1,   353,    -1,   111,   350,   112,   353,    -1,   111,
    982      351,   112,   354,    -1,   111,   351,   112,    -1,   111,   136,
    983      268,   137,   112,    -1,   111,   350,   112,   111,   136,   268,
    984      137,   112,    -1,   111,   352,   112,    -1,   113,   114,    -1,
    985      113,   114,   354,    -1,   354,    -1,   113,   136,   169,   137,
    986      114,    -1,   113,   136,   119,   137,   114,    -1,   354,   113,
    987      136,   169,   137,   114,    -1,   354,   113,   136,   119,   137,
    988      114,    -1,   356,    -1,   357,   316,    -1,   358,   316,    -1,
    989      154,    -1,   154,   232,    -1,   154,   355,    -1,   154,   232,
    990      355,    -1,   111,   356,   112,    -1,   359,    -1,   111,   356,
    991      112,   359,    -1,   111,   357,   112,   354,    -1,   111,   357,
    992      112,    -1,   111,   136,   268,   137,   112,    -1,   111,   356,
    993      112,   111,   136,   268,   137,   112,    -1,   111,   358,   112,
    994       -1,   360,    -1,   360,   354,    -1,   354,    -1,   113,   114,
    995       -1,   113,   136,   232,   119,   137,   114,    -1,   113,   136,
    996      232,   137,   114,    -1,   113,   136,   232,   169,   137,   114,
    997       -1,   113,   136,     7,   231,   169,   137,   114,    -1,   113,
    998      136,   232,     7,   169,   137,   114,    -1,   362,    -1,   363,
    999      316,    -1,   364,   316,    -1,   154,    -1,   154,   232,    -1,
    1000      154,   361,    -1,   154,   232,   361,    -1,   111,   362,   112,
    1001       -1,   353,    -1,   111,   362,   112,   353,    -1,   111,   363,
    1002      112,   354,    -1,   111,   363,   112,    -1,   111,   362,   112,
    1003      111,   136,   268,   137,   112,    -1,   111,   364,   112,    -1,
    1004      366,    -1,   374,    -1,   232,   374,    -1,   367,    -1,   368,
    1005       -1,   154,   230,    -1,   232,   154,   230,    -1,   154,   375,
    1006       -1,   232,   154,   375,    -1,   154,   365,    -1,   232,   154,
    1007      365,    -1,   113,   114,   230,    -1,   369,   230,    -1,   113,
    1008      114,   354,   230,    -1,   369,   354,   230,    -1,   354,   230,
    1009       -1,   113,   114,   367,    -1,   369,   367,    -1,   113,   114,
    1010      354,   367,    -1,   369,   354,   367,    -1,   354,   367,    -1,
    1011      113,   136,   232,   119,   137,   114,    -1,   113,   136,   232,
    1012      169,   137,   114,    -1,   113,   136,   236,   169,   137,   114,
    1013       -1,   113,   136,   236,   232,   169,   137,   114,    -1,   374,
    1014       -1,   232,   374,    -1,   371,    -1,   372,    -1,   373,    -1,
    1015      154,   230,    -1,   232,   154,   230,    -1,   154,   375,    -1,
    1016      232,   154,   375,    -1,   154,   370,    -1,   232,   154,   370,
    1017       -1,   113,   114,   230,    -1,   113,   114,   354,   230,    -1,
    1018      354,   230,    -1,   113,   114,   372,    -1,   113,   114,   354,
    1019      372,    -1,   354,   372,    -1,   113,   136,   267,   137,   114,
    1020       -1,   374,   111,   136,   264,   137,   112,    -1,   223,   111,
    1021      136,   264,   137,   112,    -1,    -1,   118,    -1,    -1,   133,
    1022      169,    -1
     872      -1,    15,    -1,    27,    -1,    28,    -1,    29,    -1,    26,
     873      -1,    24,    -1,    25,    -1,   243,    -1,   238,   243,    -1,
     874     242,   240,    -1,   242,   240,   234,    -1,   242,   240,   243,
     875      -1,   244,    -1,   233,   245,   233,    -1,   241,    -1,   234,
     876     241,    -1,   244,   235,    -1,   244,   241,    -1,    30,   113,
     877     282,   114,    -1,    30,   113,   176,   114,    -1,    80,   113,
     878     282,   114,    -1,    80,   113,   176,   114,    -1,   247,    -1,
     879     238,   247,    -1,   246,   240,    -1,   246,   240,   234,    -1,
     880     250,    -1,   234,   250,    -1,   247,   235,    -1,   249,    -1,
     881     238,   249,    -1,   248,   240,    -1,   248,   240,   234,    -1,
     882      76,    -1,   234,    76,    -1,   249,   235,    -1,   251,    -1,
     883     262,    -1,   253,   118,   254,   119,    -1,   253,   280,    -1,
     884      -1,   253,   280,   252,   118,   254,   119,    -1,   253,   113,
     885     298,   114,   118,   254,   119,    -1,   253,   291,    -1,    33,
     886     318,    -1,    34,   318,    -1,    -1,   254,   255,    -1,   256,
     887     136,    -1,    42,   256,   136,    -1,   257,   136,    -1,    42,
     888     257,   136,    -1,   372,    -1,   372,   280,    -1,   256,   120,
     889     280,    -1,   256,   120,    -1,   232,   258,    -1,   257,   120,
     890     318,   258,    -1,    -1,   260,    -1,   324,   259,    -1,   337,
     891     259,    -1,   363,    -1,    -1,   260,    -1,   134,   170,    -1,
     892      32,   318,    -1,   261,   118,   264,   378,   119,    -1,   261,
     893     280,    -1,    -1,   261,   280,   263,   118,   264,   378,   119,
     894      -1,   280,   265,    -1,   264,   120,   280,   265,    -1,    -1,
     895     135,   170,    -1,    -1,   267,    -1,   269,    -1,   268,    -1,
     896     268,   139,   120,   138,   269,    -1,   269,   139,   120,   138,
     897     100,    -1,   268,   139,   120,   138,   100,    -1,   273,    -1,
     898     269,   139,   120,   138,   273,    -1,   268,   139,   120,   138,
     899     273,    -1,   268,   139,   120,   138,   269,   139,   120,   138,
     900     273,    -1,   274,    -1,   269,   139,   120,   138,   274,    -1,
     901      -1,   271,    -1,   272,    -1,   272,   139,   120,   138,   100,
     902      -1,   276,    -1,   275,    -1,   272,   139,   120,   138,   276,
     903      -1,   272,   139,   120,   138,   275,    -1,   275,    -1,   368,
     904     278,   379,    -1,   376,   278,   379,    -1,   234,   376,   278,
     905     379,    -1,   224,    -1,   276,    -1,   368,    -1,   376,    -1,
     906     234,   376,    -1,   377,    -1,   231,   342,   379,    -1,   231,
     907     346,   379,    -1,   231,    -1,   231,   357,    -1,   143,    -1,
     908     277,   120,   143,    -1,   141,    -1,    76,    -1,    77,    -1,
     909     142,    -1,    76,    -1,    77,    -1,   143,    -1,    76,    -1,
     910      77,    -1,   372,    -1,   232,    -1,   232,   363,    -1,   372,
     911      -1,   377,    -1,   232,    -1,   232,   351,    -1,    -1,   135,
     912     284,    -1,   111,   284,    -1,   171,    -1,   118,   285,   378,
     913     119,    -1,    -1,   284,    -1,   286,   284,    -1,   285,   120,
     914     284,    -1,   285,   120,   286,   284,    -1,   287,   134,    -1,
     915     280,   134,    -1,   288,    -1,   287,   288,    -1,   117,   280,
     916      -1,   115,   138,   171,   139,   116,    -1,   115,   138,   316,
     917     139,   116,    -1,   115,   138,   170,   100,   170,   139,   116,
     918      -1,   117,   115,   138,   151,   139,   116,    -1,   290,    -1,
     919     238,   290,    -1,   289,   240,    -1,   289,   240,   234,    -1,
     920     291,    -1,   234,   291,    -1,   290,   235,    -1,    77,   113,
     921     298,   114,    -1,   293,   379,    -1,   292,   120,   293,   379,
     922      -1,    -1,   295,   280,   294,   296,    -1,   232,   342,    -1,
     923      35,    -1,    37,    -1,    36,    -1,    -1,   296,   297,    -1,
     924     132,   280,   113,   298,   114,    -1,   132,   118,   138,   304,
     925     119,    -1,   132,   113,   138,   292,   139,   114,   118,   138,
     926     304,   119,   113,   298,   114,    -1,   282,    -1,   171,    -1,
     927     298,   120,   282,    -1,   298,   120,   171,    -1,    35,   300,
     928      -1,   239,    35,   300,    -1,   299,   120,   300,    -1,   301,
     929     296,    -1,   301,   296,   135,   282,    -1,   280,    -1,   279,
     930     113,   138,   292,   139,   114,    -1,    38,   280,   113,   138,
     931     292,   139,   114,   118,   119,    -1,    -1,    38,   280,   113,
     932     138,   292,   139,   114,   118,   303,   304,   119,    -1,   305,
     933      -1,   304,   138,   305,    -1,   306,   139,   136,    -1,   307,
     934     139,   136,    -1,   222,    -1,   224,    -1,   306,   139,   120,
     935     138,   278,    -1,   232,   315,    -1,   307,   139,   120,   138,
     936     315,    -1,    -1,   309,    -1,   311,    -1,   309,   138,   311,
     937      -1,    -1,   309,    -1,   219,    -1,   313,    -1,   205,    -1,
     938      -1,     5,    83,   312,   118,   310,   119,    -1,    42,   311,
     939      -1,   314,    -1,   329,   180,    -1,   333,   138,   214,   180,
     940      -1,   223,   180,    -1,   231,   329,   180,    -1,   234,   329,
     941     180,    -1,   238,   329,   180,    -1,   238,   234,   329,   180,
     942      -1,   231,   333,   138,   214,   180,    -1,   234,   333,   138,
     943     214,   180,    -1,   238,   333,   138,   214,   180,    -1,   238,
     944     234,   333,   138,   214,   180,    -1,   324,    -1,   337,    -1,
     945     329,    -1,   170,   126,   170,    -1,    -1,    66,   113,   145,
     946     114,   318,    -1,    -1,   319,    -1,   320,    -1,   319,   320,
     947      -1,    41,   113,   113,   321,   114,   114,    -1,   322,    -1,
     948     321,   120,   322,    -1,    -1,   323,    -1,   323,   113,   177,
     949     114,    -1,   278,    -1,   240,    -1,   241,    -1,   235,    -1,
     950     325,   318,    -1,   326,    -1,   327,   318,    -1,   328,   318,
     951      -1,   141,    -1,   113,   325,   114,    -1,   156,   324,    -1,
     952     156,   234,   324,    -1,   113,   326,   114,    -1,   325,   355,
     953      -1,   113,   326,   114,   355,    -1,   113,   327,   114,   356,
     954      -1,   113,   327,   114,    -1,   113,   326,   114,   113,   138,
     955     270,   139,   114,    -1,   113,   328,   114,    -1,   330,   318,
     956      -1,   331,    -1,   332,   318,    -1,   325,   113,   138,   270,
     957     139,   114,    -1,   113,   331,   114,   113,   138,   270,   139,
     958     114,    -1,   113,   330,   114,    -1,   156,   329,    -1,   156,
     959     234,   329,    -1,   113,   331,   114,    -1,   113,   331,   114,
     960     355,    -1,   113,   332,   114,   356,    -1,   113,   332,   114,
     961      -1,   334,    -1,   335,    -1,   336,    -1,   325,   113,   277,
     962     114,    -1,   113,   335,   114,   113,   277,   114,    -1,   113,
     963     334,   114,    -1,   156,   333,    -1,   156,   234,   333,    -1,
     964     113,   335,   114,    -1,   113,   335,   114,   355,    -1,   113,
     965     336,   114,   356,    -1,   113,   336,   114,    -1,   338,   318,
     966      -1,   339,    -1,   340,   318,    -1,   341,   318,    -1,   347,
     967      -1,   113,   338,   114,    -1,   156,   337,    -1,   156,   234,
     968     337,    -1,   113,   339,   114,    -1,   338,   355,    -1,   113,
     969     339,   114,   355,    -1,   113,   340,   114,   356,    -1,   113,
     970     340,   114,    -1,   338,   113,   138,   270,   139,   114,    -1,
     971     113,   339,   114,   113,   138,   270,   139,   114,    -1,   113,
     972     341,   114,    -1,   325,   318,    -1,   343,    -1,   344,   318,
     973      -1,   345,   318,    -1,   156,   342,    -1,   156,   234,   342,
     974      -1,   113,   343,   114,    -1,   325,   361,    -1,   113,   343,
     975     114,   355,    -1,   113,   344,   114,   356,    -1,   113,   344,
     976     114,    -1,   325,   113,   138,   270,   139,   114,    -1,   113,
     977     343,   114,   113,   138,   270,   139,   114,    -1,   113,   345,
     978     114,    -1,   347,   318,    -1,   348,    -1,   349,   318,    -1,
     979     350,   318,    -1,    76,    -1,    77,    -1,   156,   346,    -1,
     980     156,   234,   346,    -1,   113,   348,   114,    -1,   347,   361,
     981      -1,   113,   348,   114,   361,    -1,   347,   113,   138,   270,
     982     139,   114,    -1,   113,   348,   114,   113,   138,   270,   139,
     983     114,    -1,   352,    -1,   353,   318,    -1,   354,   318,    -1,
     984     156,    -1,   156,   234,    -1,   156,   351,    -1,   156,   234,
     985     351,    -1,   113,   352,   114,    -1,   355,    -1,   113,   352,
     986     114,   355,    -1,   113,   353,   114,   356,    -1,   113,   353,
     987     114,    -1,   113,   138,   270,   139,   114,    -1,   113,   352,
     988     114,   113,   138,   270,   139,   114,    -1,   113,   354,   114,
     989      -1,   115,   116,    -1,   115,   116,   356,    -1,   356,    -1,
     990     115,   138,   171,   139,   116,    -1,   115,   138,   121,   139,
     991     116,    -1,   356,   115,   138,   171,   139,   116,    -1,   356,
     992     115,   138,   121,   139,   116,    -1,   358,    -1,   359,   318,
     993      -1,   360,   318,    -1,   156,    -1,   156,   234,    -1,   156,
     994     357,    -1,   156,   234,   357,    -1,   113,   358,   114,    -1,
     995     361,    -1,   113,   358,   114,   361,    -1,   113,   359,   114,
     996     356,    -1,   113,   359,   114,    -1,   113,   138,   270,   139,
     997     114,    -1,   113,   358,   114,   113,   138,   270,   139,   114,
     998      -1,   113,   360,   114,    -1,   362,    -1,   362,   356,    -1,
     999     356,    -1,   115,   116,    -1,   115,   138,   234,   121,   139,
     1000     116,    -1,   115,   138,   234,   139,   116,    -1,   115,   138,
     1001     234,   171,   139,   116,    -1,   115,   138,     7,   233,   171,
     1002     139,   116,    -1,   115,   138,   234,     7,   171,   139,   116,
     1003      -1,   364,    -1,   365,   318,    -1,   366,   318,    -1,   156,
     1004      -1,   156,   234,    -1,   156,   363,    -1,   156,   234,   363,
     1005      -1,   113,   364,   114,    -1,   355,    -1,   113,   364,   114,
     1006     355,    -1,   113,   365,   114,   356,    -1,   113,   365,   114,
     1007      -1,   113,   364,   114,   113,   138,   270,   139,   114,    -1,
     1008     113,   366,   114,    -1,   368,    -1,   376,    -1,   234,   376,
     1009      -1,   369,    -1,   370,    -1,   156,   232,    -1,   234,   156,
     1010     232,    -1,   156,   377,    -1,   234,   156,   377,    -1,   156,
     1011     367,    -1,   234,   156,   367,    -1,   115,   116,   232,    -1,
     1012     371,   232,    -1,   115,   116,   356,   232,    -1,   371,   356,
     1013     232,    -1,   356,   232,    -1,   115,   116,   369,    -1,   371,
     1014     369,    -1,   115,   116,   356,   369,    -1,   371,   356,   369,
     1015      -1,   356,   369,    -1,   115,   138,   234,   121,   139,   116,
     1016      -1,   115,   138,   234,   171,   139,   116,    -1,   115,   138,
     1017     238,   171,   139,   116,    -1,   115,   138,   238,   234,   171,
     1018     139,   116,    -1,   376,    -1,   234,   376,    -1,   373,    -1,
     1019     374,    -1,   375,    -1,   156,   232,    -1,   234,   156,   232,
     1020      -1,   156,   377,    -1,   234,   156,   377,    -1,   156,   372,
     1021      -1,   234,   156,   372,    -1,   115,   116,   232,    -1,   115,
     1022     116,   356,   232,    -1,   356,   232,    -1,   115,   116,   374,
     1023      -1,   115,   116,   356,   374,    -1,   356,   374,    -1,   115,
     1024     138,   269,   139,   116,    -1,   376,   113,   138,   266,   139,
     1025     114,    -1,   225,   113,   138,   266,   139,   114,    -1,    -1,
     1026     120,    -1,    -1,   135,   171,    -1
    10231027};
    10241028
     
    10261030static const yytype_uint16 yyrline[] =
    10271031{
    1028        0,   305,   305,   309,   316,   317,   318,   319,   320,   324,
    1029      325,   326,   330,   331,   335,   336,   340,   341,   345,   349,
    1030      350,   361,   363,   365,   366,   368,   373,   374,   380,   382,
    1031      384,   386,   388,   390,   392,   394,   396,   398,   407,   408,
    1032      414,   415,   419,   420,   424,   425,   427,   429,   431,   433,
    1033      435,   440,   442,   444,   450,   451,   459,   462,   464,   466,
    1034      471,   484,   486,   488,   490,   492,   494,   496,   498,   500,
    1035      502,   504,   511,   512,   518,   519,   520,   521,   525,   526,
    1036      533,   534,   536,   538,   543,   544,   546,   551,   552,   554,
    1037      559,   560,   562,   564,   566,   571,   572,   574,   579,   580,
    1038      585,   586,   591,   592,   597,   598,   603,   604,   609,   610,
    1039      613,   620,   625,   626,   634,   635,   639,   640,   641,   642,
    1040      643,   644,   645,   646,   647,   648,   649,   650,   660,   662,
    1041      667,   668,   673,   674,   680,   681,   687,   688,   689,   690,
    1042      691,   692,   693,   694,   695,   705,   712,   714,   724,   725,
    1043      730,   732,   738,   740,   744,   745,   750,   755,   758,   760,
    1044      762,   772,   774,   785,   786,   788,   792,   794,   798,   799,
    1045      804,   805,   809,   814,   815,   819,   821,   827,   828,   832,
    1046      834,   836,   838,   844,   845,   849,   851,   856,   858,   860,
    1047      865,   867,   872,   874,   878,   881,   885,   888,   892,   894,
    1048      896,   898,   903,   905,   907,   912,   914,   916,   918,   920,
    1049      925,   927,   929,   931,   936,   948,   949,   954,   956,   961,
    1050      965,   967,   969,   971,   973,   979,   980,   986,   987,   991,
    1051      992,   997,   999,  1005,  1006,  1008,  1013,  1018,  1028,  1030,
    1052     1034,  1035,  1040,  1042,  1046,  1047,  1051,  1053,  1057,  1058,
    1053     1062,  1063,  1067,  1068,  1083,  1084,  1085,  1086,  1087,  1091,
    1054     1096,  1103,  1113,  1118,  1123,  1131,  1136,  1141,  1146,  1151,
    1055     1181,  1186,  1193,  1195,  1202,  1207,  1212,  1223,  1228,  1233,
    1056     1238,  1243,  1252,  1257,  1265,  1266,  1267,  1268,  1274,  1279,
    1057     1287,  1288,  1289,  1290,  1294,  1295,  1296,  1297,  1302,  1303,
    1058     1312,  1313,  1318,  1319,  1324,  1326,  1328,  1330,  1332,  1335,
    1059     1334,  1346,  1347,  1349,  1359,  1360,  1365,  1367,  1369,  1371,
    1060     1373,  1376,  1378,  1381,  1386,  1388,  1390,  1392,  1394,  1396,
    1061     1398,  1400,  1402,  1404,  1406,  1408,  1410,  1416,  1417,  1419,
    1062     1421,  1423,  1428,  1429,  1435,  1436,  1438,  1440,  1445,  1447,
    1063     1449,  1451,  1456,  1457,  1459,  1461,  1466,  1467,  1469,  1474,
    1064     1475,  1477,  1479,  1484,  1486,  1488,  1493,  1494,  1498,  1500,
    1065     1506,  1505,  1509,  1511,  1516,  1518,  1524,  1525,  1530,  1531,
    1066     1533,  1534,  1543,  1544,  1546,  1548,  1553,  1555,  1561,  1562,
    1067     1564,  1567,  1570,  1575,  1576,  1581,  1586,  1590,  1592,  1598,
    1068     1597,  1604,  1606,  1612,  1613,  1621,  1622,  1626,  1627,  1628,
    1069     1630,  1632,  1639,  1640,  1642,  1644,  1649,  1650,  1656,  1657,
    1070     1661,  1662,  1667,  1668,  1669,  1671,  1679,  1680,  1682,  1685,
    1071     1687,  1691,  1692,  1693,  1695,  1697,  1701,  1706,  1714,  1715,
    1072     1724,  1726,  1731,  1732,  1733,  1737,  1738,  1739,  1743,  1744,
    1073     1745,  1749,  1750,  1751,  1756,  1757,  1758,  1759,  1765,  1766,
    1074     1768,  1773,  1774,  1779,  1780,  1781,  1782,  1783,  1798,  1799,
    1075     1804,  1805,  1811,  1813,  1816,  1818,  1820,  1843,  1844,  1846,
    1076     1848,  1853,  1854,  1856,  1861,  1866,  1867,  1873,  1872,  1876,
    1077     1880,  1882,  1884,  1890,  1891,  1896,  1901,  1903,  1908,  1910,
    1078     1911,  1913,  1918,  1920,  1922,  1927,  1929,  1934,  1939,  1947,
    1079     1953,  1952,  1966,  1967,  1972,  1973,  1977,  1982,  1987,  1995,
    1080     2000,  2011,  2012,  2017,  2018,  2024,  2025,  2029,  2030,  2031,
    1081     2034,  2033,  2044,  2053,  2059,  2065,  2074,  2080,  2086,  2092,
    1082     2098,  2106,  2112,  2120,  2126,  2135,  2136,  2137,  2141,  2145,
    1083     2147,  2152,  2153,  2157,  2158,  2163,  2169,  2170,  2173,  2175,
    1084     2176,  2180,  2181,  2182,  2183,  2217,  2219,  2220,  2222,  2227,
    1085     2232,  2237,  2239,  2241,  2246,  2248,  2250,  2252,  2257,  2259,
    1086     2268,  2270,  2271,  2276,  2278,  2280,  2285,  2287,  2289,  2294,
    1087     2296,  2298,  2307,  2308,  2309,  2313,  2315,  2317,  2322,  2324,
    1088     2326,  2331,  2333,  2335,  2350,  2352,  2353,  2355,  2360,  2361,
    1089     2366,  2368,  2370,  2375,  2377,  2379,  2381,  2386,  2388,  2390,
    1090     2400,  2402,  2403,  2405,  2410,  2412,  2414,  2419,  2421,  2423,
    1091     2425,  2430,  2432,  2434,  2465,  2467,  2468,  2470,  2475,  2480,
    1092     2488,  2490,  2492,  2497,  2499,  2504,  2506,  2520,  2521,  2523,
    1093     2528,  2530,  2532,  2534,  2536,  2541,  2542,  2544,  2546,  2551,
    1094     2553,  2555,  2561,  2563,  2565,  2569,  2571,  2573,  2575,  2589,
    1095     2590,  2592,  2597,  2599,  2601,  2603,  2605,  2610,  2611,  2613,
    1096     2615,  2620,  2622,  2624,  2630,  2631,  2633,  2642,  2645,  2647,
    1097     2650,  2652,  2654,  2667,  2668,  2670,  2675,  2677,  2679,  2681,
    1098     2683,  2688,  2689,  2691,  2693,  2698,  2700,  2708,  2709,  2710,
    1099     2715,  2716,  2720,  2722,  2724,  2726,  2728,  2730,  2737,  2739,
    1100     2741,  2743,  2745,  2748,  2750,  2752,  2754,  2756,  2761,  2763,
    1101     2765,  2770,  2796,  2797,  2799,  2803,  2804,  2808,  2810,  2812,
    1102     2814,  2816,  2818,  2825,  2827,  2829,  2831,  2833,  2835,  2840,
    1103     2847,  2849,  2867,  2869,  2874,  2875
     1032       0,   306,   306,   310,   317,   318,   319,   320,   321,   325,
     1033     326,   327,   331,   332,   336,   337,   341,   342,   346,   350,
     1034     351,   362,   364,   366,   367,   369,   374,   375,   381,   383,
     1035     385,   387,   389,   391,   393,   395,   397,   399,   408,   409,
     1036     415,   416,   420,   421,   425,   426,   428,   430,   432,   434,
     1037     436,   441,   443,   445,   457,   458,   466,   469,   471,   473,
     1038     478,   491,   493,   495,   497,   499,   501,   503,   505,   507,
     1039     509,   511,   518,   519,   525,   526,   527,   528,   532,   533,
     1040     540,   541,   543,   545,   550,   551,   553,   558,   559,   561,
     1041     566,   567,   569,   571,   573,   578,   579,   581,   586,   587,
     1042     592,   593,   598,   599,   604,   605,   610,   611,   616,   617,
     1043     620,   627,   632,   633,   641,   642,   646,   647,   648,   649,
     1044     650,   651,   652,   653,   654,   655,   656,   657,   667,   669,
     1045     674,   675,   680,   681,   687,   688,   694,   695,   696,   697,
     1046     698,   699,   700,   701,   702,   712,   719,   721,   731,   732,
     1047     737,   739,   745,   747,   751,   752,   757,   762,   765,   767,
     1048     769,   779,   781,   792,   793,   795,   799,   801,   805,   806,
     1049     811,   812,   816,   821,   822,   826,   828,   834,   835,   839,
     1050     841,   843,   845,   851,   852,   856,   858,   863,   865,   867,
     1051     872,   874,   879,   881,   885,   888,   892,   895,   899,   901,
     1052     903,   905,   910,   912,   914,   919,   921,   923,   925,   927,
     1053     932,   934,   936,   938,   943,   955,   956,   961,   963,   968,
     1054     972,   974,   976,   978,   980,   986,   987,   993,   994,   998,
     1055     999,  1004,  1006,  1012,  1013,  1015,  1021,  1026,  1036,  1038,
     1056    1042,  1043,  1048,  1050,  1054,  1055,  1059,  1061,  1065,  1066,
     1057    1070,  1071,  1075,  1076,  1091,  1092,  1093,  1094,  1095,  1099,
     1058    1104,  1111,  1121,  1126,  1131,  1139,  1144,  1149,  1154,  1159,
     1059    1189,  1194,  1201,  1203,  1210,  1215,  1220,  1231,  1236,  1241,
     1060    1246,  1251,  1260,  1265,  1273,  1274,  1275,  1276,  1282,  1287,
     1061    1295,  1296,  1297,  1298,  1302,  1303,  1304,  1305,  1310,  1311,
     1062    1320,  1321,  1326,  1327,  1332,  1334,  1336,  1338,  1340,  1343,
     1063    1342,  1354,  1355,  1357,  1367,  1368,  1373,  1375,  1377,  1379,
     1064    1381,  1384,  1386,  1389,  1394,  1396,  1398,  1400,  1402,  1404,
     1065    1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,  1422,  1428,
     1066    1429,  1431,  1433,  1435,  1440,  1441,  1447,  1448,  1450,  1452,
     1067    1457,  1459,  1461,  1463,  1468,  1469,  1471,  1473,  1478,  1479,
     1068    1481,  1486,  1487,  1489,  1491,  1496,  1498,  1500,  1505,  1506,
     1069    1510,  1512,  1518,  1517,  1521,  1523,  1528,  1530,  1536,  1537,
     1070    1542,  1543,  1545,  1546,  1555,  1556,  1558,  1560,  1565,  1567,
     1071    1573,  1574,  1576,  1579,  1582,  1587,  1588,  1593,  1598,  1602,
     1072    1604,  1610,  1609,  1616,  1618,  1624,  1625,  1633,  1634,  1638,
     1073    1639,  1640,  1642,  1644,  1651,  1652,  1654,  1656,  1661,  1662,
     1074    1668,  1669,  1673,  1674,  1679,  1680,  1681,  1683,  1691,  1692,
     1075    1694,  1697,  1699,  1703,  1704,  1705,  1707,  1709,  1713,  1718,
     1076    1726,  1727,  1736,  1738,  1743,  1744,  1745,  1749,  1750,  1751,
     1077    1755,  1756,  1757,  1761,  1762,  1763,  1768,  1769,  1770,  1771,
     1078    1777,  1778,  1780,  1785,  1786,  1791,  1792,  1793,  1794,  1795,
     1079    1810,  1811,  1816,  1817,  1823,  1825,  1828,  1830,  1832,  1855,
     1080    1856,  1858,  1860,  1865,  1866,  1868,  1873,  1878,  1879,  1885,
     1081    1884,  1888,  1892,  1894,  1896,  1902,  1903,  1908,  1913,  1915,
     1082    1920,  1922,  1923,  1925,  1930,  1932,  1934,  1939,  1941,  1946,
     1083    1951,  1959,  1965,  1964,  1978,  1979,  1984,  1985,  1989,  1994,
     1084    1999,  2007,  2012,  2023,  2024,  2029,  2030,  2036,  2037,  2041,
     1085    2042,  2043,  2046,  2045,  2056,  2065,  2071,  2077,  2086,  2092,
     1086    2098,  2104,  2110,  2118,  2124,  2132,  2138,  2147,  2148,  2149,
     1087    2153,  2159,  2160,  2166,  2167,  2171,  2172,  2177,  2183,  2184,
     1088    2187,  2189,  2190,  2194,  2195,  2196,  2197,  2231,  2233,  2234,
     1089    2236,  2241,  2246,  2251,  2253,  2255,  2260,  2262,  2264,  2266,
     1090    2271,  2273,  2282,  2284,  2285,  2290,  2292,  2294,  2299,  2301,
     1091    2303,  2308,  2310,  2312,  2321,  2322,  2323,  2327,  2329,  2331,
     1092    2336,  2338,  2340,  2345,  2347,  2349,  2364,  2366,  2367,  2369,
     1093    2374,  2375,  2380,  2382,  2384,  2389,  2391,  2393,  2395,  2400,
     1094    2402,  2404,  2414,  2416,  2417,  2419,  2424,  2426,  2428,  2433,
     1095    2435,  2437,  2439,  2444,  2446,  2448,  2479,  2481,  2482,  2484,
     1096    2489,  2494,  2502,  2504,  2506,  2511,  2513,  2518,  2520,  2534,
     1097    2535,  2537,  2542,  2544,  2546,  2548,  2550,  2555,  2556,  2558,
     1098    2560,  2565,  2567,  2569,  2575,  2577,  2579,  2583,  2585,  2587,
     1099    2589,  2603,  2604,  2606,  2611,  2613,  2615,  2617,  2619,  2624,
     1100    2625,  2627,  2629,  2634,  2636,  2638,  2644,  2645,  2647,  2656,
     1101    2659,  2661,  2664,  2666,  2668,  2681,  2682,  2684,  2689,  2691,
     1102    2693,  2695,  2697,  2702,  2703,  2705,  2707,  2712,  2714,  2722,
     1103    2723,  2724,  2729,  2730,  2734,  2736,  2738,  2740,  2742,  2744,
     1104    2751,  2753,  2755,  2757,  2759,  2762,  2764,  2766,  2768,  2770,
     1105    2775,  2777,  2779,  2784,  2810,  2811,  2813,  2817,  2818,  2822,
     1106    2824,  2826,  2828,  2830,  2832,  2839,  2841,  2843,  2845,  2847,
     1107    2849,  2854,  2861,  2863,  2881,  2883,  2888,  2889
    11041108};
    11051109#endif
     
    11131117  "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL",
    11141118  "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
    1115   "SIGNED", "UNSIGNED", "VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF",
    1116   "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", "FTYPE", "DTYPE", "TRAIT",
    1117   "SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH",
    1118   "CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO",
    1119   "RETURN", "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH",
    1120   "CATCHRESUME", "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS",
    1121   "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
    1122   "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
    1123   "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
    1124   "INTEGERconstant", "CHARACTERconstant", "STRINGliteral",
    1125   "REALDECIMALconstant", "REALFRACTIONconstant", "FLOATINGconstant",
    1126   "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE", "GE", "EQ",
    1127   "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign", "DIVassign",
    1128   "MODassign", "PLUSassign", "MINUSassign", "LSassign", "RSassign",
    1129   "ANDassign", "ERassign", "ORassign", "ATassign", "THEN", "'('", "')'",
    1130   "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'", "'+'", "'-'",
    1131   "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'", "':'",
    1132   "'='", "';'", "$accept", "push", "pop", "constant", "identifier",
    1133   "no_01_identifier", "no_attr_identifier", "zero_one", "string_literal",
     1119  "SIGNED", "UNSIGNED", "ZERO_T", "ONE_T", "VALIST", "BOOL", "COMPLEX",
     1120  "IMAGINARY", "TYPEOF", "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE",
     1121  "FTYPE", "DTYPE", "TRAIT", "SIZEOF", "OFFSETOF", "ATTRIBUTE",
     1122  "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "DO", "WHILE",
     1123  "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE", "DISABLE",
     1124  "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME", "FINALLY", "THROW",
     1125  "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF", "ATOMIC", "GENERIC",
     1126  "NORETURN", "STATICASSERT", "THREADLOCAL", "IDENTIFIER",
     1127  "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname", "ATTR_IDENTIFIER",
     1128  "ATTR_TYPEDEFname", "ATTR_TYPEGENname", "INTEGERconstant",
     1129  "CHARACTERconstant", "STRINGliteral", "REALDECIMALconstant",
     1130  "REALFRACTIONconstant", "FLOATINGconstant", "ZERO", "ONE", "ARROW",
     1131  "ICR", "DECR", "LS", "RS", "LE", "GE", "EQ", "NE", "ANDAND", "OROR",
     1132  "ELLIPSIS", "MULTassign", "DIVassign", "MODassign", "PLUSassign",
     1133  "MINUSassign", "LSassign", "RSassign", "ANDassign", "ERassign",
     1134  "ORassign", "ATassign", "THEN", "'('", "')'", "'['", "']'", "'.'", "'{'",
     1135  "'}'", "','", "'*'", "'&'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'",
     1136  "'<'", "'>'", "'^'", "'|'", "'?'", "':'", "'='", "';'", "$accept",
     1137  "push", "pop", "constant", "identifier", "no_01_identifier",
     1138  "no_attr_identifier", "zero_one", "string_literal",
    11341139  "string_literal_list", "primary_expression", "postfix_expression",
    11351140  "argument_expression_list", "argument_expression", "field_list", "field",
     
    12351240     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    12361241     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
    1237      365,    40,    41,    91,    93,    46,   123,   125,    44,    42,
    1238       38,    43,    45,    33,   126,    47,    37,    60,    62,    94,
    1239      124,    63,    58,    61,    59
     1242     365,   366,   367,    40,    41,    91,    93,    46,   123,   125,
     1243      44,    42,    38,    43,    45,    33,   126,    47,    37,    60,
     1244      62,    94,   124,    63,    58,    61,    59
    12401245};
    12411246# endif
     
    12441249static const yytype_uint16 yyr1[] =
    12451250{
    1246        0,   135,   136,   137,   138,   138,   138,   138,   138,   139,
    1247      139,   139,   140,   140,   141,   141,   142,   142,   143,   144,
    1248      144,   145,   145,   145,   145,   145,   146,   146,   146,   146,
    1249      146,   146,   146,   146,   146,   146,   146,   146,   147,   147,
    1250      148,   148,   149,   149,   150,   150,   150,   150,   150,   150,
    1251      150,   151,   151,   151,   152,   152,   153,   153,   153,   153,
    1252      153,   153,   153,   153,   153,   153,   153,   153,   153,   153,
    1253      153,   153,   154,   154,   155,   155,   155,   155,   156,   156,
    1254      157,   157,   157,   157,   158,   158,   158,   159,   159,   159,
    1255      160,   160,   160,   160,   160,   161,   161,   161,   162,   162,
    1256      163,   163,   164,   164,   165,   165,   166,   166,   167,   167,
    1257      167,   168,   169,   169,   170,   170,   171,   171,   171,   171,
    1258      171,   171,   171,   171,   171,   171,   171,   171,   172,   172,
    1259      173,   173,   174,   174,   175,   175,   176,   176,   176,   176,
    1260      176,   176,   176,   176,   176,   177,   178,   178,   179,   179,
    1261      180,   180,   180,   180,   181,   181,   182,   183,   183,   183,
    1262      183,   183,   183,   184,   184,   184,   185,   185,   186,   186,
    1263      187,   187,   188,   189,   189,   190,   190,   191,   191,   192,
    1264      192,   192,   192,   193,   193,   194,   194,   195,   195,   195,
    1265      196,   196,   197,   197,   197,   197,   197,   197,   197,   197,
    1266      197,   197,   198,   198,   198,   199,   199,   199,   199,   199,
    1267      200,   200,   200,   200,   201,   202,   202,   202,   202,   202,
    1268      203,   203,   203,   203,   203,   204,   204,   205,   205,   206,
    1269      206,   207,   207,   208,   208,   208,   209,   209,   210,   210,
    1270      211,   211,   212,   212,   213,   213,   214,   214,   215,   215,
    1271      216,   216,   217,   217,   218,   218,   218,   218,   218,   219,
    1272      219,   219,   220,   220,   220,   221,   221,   221,   221,   221,
    1273      222,   222,   223,   223,   224,   224,   224,   225,   225,   225,
    1274      225,   225,   226,   226,   227,   227,   227,   227,   228,   228,
    1275      229,   229,   229,   229,   230,   230,   230,   230,   231,   231,
    1276      232,   232,   233,   233,   234,   234,   234,   234,   234,   235,
    1277      234,   236,   236,   236,   237,   237,   238,   238,   238,   238,
    1278      238,   238,   238,   238,   239,   239,   239,   239,   239,   239,
    1279      239,   239,   239,   239,   239,   239,   239,   240,   240,   240,
    1280      240,   240,   241,   241,   242,   242,   242,   242,   243,   243,
    1281      243,   243,   244,   244,   244,   244,   245,   245,   245,   246,
    1282      246,   246,   246,   247,   247,   247,   248,   248,   249,   249,
    1283      250,   249,   249,   249,   251,   251,   252,   252,   253,   253,
    1284      253,   253,   254,   254,   254,   254,   255,   255,   256,   256,
    1285      256,   256,   256,   257,   257,   258,   259,   260,   260,   261,
    1286      260,   262,   262,   263,   263,   264,   264,   265,   265,   265,
    1287      265,   265,   266,   266,   266,   266,   267,   267,   268,   268,
    1288      269,   269,   270,   270,   270,   270,   271,   271,   271,   271,
    1289      271,   272,   272,   272,   272,   272,   273,   273,   274,   274,
    1290      275,   275,   276,   276,   276,   277,   277,   277,   278,   278,
    1291      278,   279,   279,   279,   280,   280,   280,   280,   281,   281,
    1292      281,   282,   282,   283,   283,   283,   283,   283,   284,   284,
    1293      285,   285,   286,   286,   286,   286,   286,   287,   287,   287,
    1294      287,   288,   288,   288,   289,   290,   290,   292,   291,   291,
    1295      293,   293,   293,   294,   294,   295,   295,   295,   296,   296,
    1296      296,   296,   297,   297,   297,   298,   298,   299,   299,   300,
    1297      301,   300,   302,   302,   303,   303,   304,   304,   304,   305,
    1298      305,   306,   306,   307,   307,   308,   308,   309,   309,   309,
    1299      310,   309,   309,   311,   311,   311,   312,   312,   312,   312,
    1300      312,   312,   312,   312,   312,   313,   313,   313,   314,   315,
    1301      315,   316,   316,   317,   317,   318,   319,   319,   320,   320,
    1302      320,   321,   321,   321,   321,   322,   322,   322,   322,   323,
    1303      323,   324,   324,   324,   325,   325,   325,   325,   326,   326,
    1304      327,   327,   327,   328,   328,   328,   329,   329,   329,   330,
    1305      330,   330,   331,   331,   331,   332,   332,   332,   333,   333,
    1306      333,   334,   334,   334,   335,   335,   335,   335,   336,   336,
    1307      337,   337,   337,   338,   338,   338,   338,   339,   339,   339,
    1308      340,   340,   340,   340,   341,   341,   341,   342,   342,   342,
    1309      342,   343,   343,   343,   344,   344,   344,   344,   345,   345,
    1310      346,   346,   346,   347,   347,   348,   348,   349,   349,   349,
    1311      350,   350,   350,   350,   350,   351,   351,   351,   351,   352,
    1312      352,   352,   353,   353,   353,   354,   354,   354,   354,   355,
    1313      355,   355,   356,   356,   356,   356,   356,   357,   357,   357,
    1314      357,   358,   358,   358,   359,   359,   359,   360,   360,   360,
    1315      360,   360,   360,   361,   361,   361,   362,   362,   362,   362,
    1316      362,   363,   363,   363,   363,   364,   364,   365,   365,   365,
    1317      366,   366,   367,   367,   367,   367,   367,   367,   368,   368,
    1318      368,   368,   368,   368,   368,   368,   368,   368,   369,   369,
    1319      369,   369,   370,   370,   370,   371,   371,   372,   372,   372,
    1320      372,   372,   372,   373,   373,   373,   373,   373,   373,   374,
    1321      375,   375,   376,   376,   377,   377
     1251       0,   137,   138,   139,   140,   140,   140,   140,   140,   141,
     1252     141,   141,   142,   142,   143,   143,   144,   144,   145,   146,
     1253     146,   147,   147,   147,   147,   147,   148,   148,   148,   148,
     1254     148,   148,   148,   148,   148,   148,   148,   148,   149,   149,
     1255     150,   150,   151,   151,   152,   152,   152,   152,   152,   152,
     1256     152,   153,   153,   153,   154,   154,   155,   155,   155,   155,
     1257     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
     1258     155,   155,   156,   156,   157,   157,   157,   157,   158,   158,
     1259     159,   159,   159,   159,   160,   160,   160,   161,   161,   161,
     1260     162,   162,   162,   162,   162,   163,   163,   163,   164,   164,
     1261     165,   165,   166,   166,   167,   167,   168,   168,   169,   169,
     1262     169,   170,   171,   171,   172,   172,   173,   173,   173,   173,
     1263     173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
     1264     175,   175,   176,   176,   177,   177,   178,   178,   178,   178,
     1265     178,   178,   178,   178,   178,   179,   180,   180,   181,   181,
     1266     182,   182,   182,   182,   183,   183,   184,   185,   185,   185,
     1267     185,   185,   185,   186,   186,   186,   187,   187,   188,   188,
     1268     189,   189,   190,   191,   191,   192,   192,   193,   193,   194,
     1269     194,   194,   194,   195,   195,   196,   196,   197,   197,   197,
     1270     198,   198,   199,   199,   199,   199,   199,   199,   199,   199,
     1271     199,   199,   200,   200,   200,   201,   201,   201,   201,   201,
     1272     202,   202,   202,   202,   203,   204,   204,   204,   204,   204,
     1273     205,   205,   205,   205,   205,   206,   206,   207,   207,   208,
     1274     208,   209,   209,   210,   210,   210,   211,   211,   212,   212,
     1275     213,   213,   214,   214,   215,   215,   216,   216,   217,   217,
     1276     218,   218,   219,   219,   220,   220,   220,   220,   220,   221,
     1277     221,   221,   222,   222,   222,   223,   223,   223,   223,   223,
     1278     224,   224,   225,   225,   226,   226,   226,   227,   227,   227,
     1279     227,   227,   228,   228,   229,   229,   229,   229,   230,   230,
     1280     231,   231,   231,   231,   232,   232,   232,   232,   233,   233,
     1281     234,   234,   235,   235,   236,   236,   236,   236,   236,   237,
     1282     236,   238,   238,   238,   239,   239,   240,   240,   240,   240,
     1283     240,   240,   240,   240,   241,   241,   241,   241,   241,   241,
     1284     241,   241,   241,   241,   241,   241,   241,   241,   241,   242,
     1285     242,   242,   242,   242,   243,   243,   244,   244,   244,   244,
     1286     245,   245,   245,   245,   246,   246,   246,   246,   247,   247,
     1287     247,   248,   248,   248,   248,   249,   249,   249,   250,   250,
     1288     251,   251,   252,   251,   251,   251,   253,   253,   254,   254,
     1289     255,   255,   255,   255,   256,   256,   256,   256,   257,   257,
     1290     258,   258,   258,   258,   258,   259,   259,   260,   261,   262,
     1291     262,   263,   262,   264,   264,   265,   265,   266,   266,   267,
     1292     267,   267,   267,   267,   268,   268,   268,   268,   269,   269,
     1293     270,   270,   271,   271,   272,   272,   272,   272,   273,   273,
     1294     273,   273,   273,   274,   274,   274,   274,   274,   275,   275,
     1295     276,   276,   277,   277,   278,   278,   278,   279,   279,   279,
     1296     280,   280,   280,   281,   281,   281,   282,   282,   282,   282,
     1297     283,   283,   283,   284,   284,   285,   285,   285,   285,   285,
     1298     286,   286,   287,   287,   288,   288,   288,   288,   288,   289,
     1299     289,   289,   289,   290,   290,   290,   291,   292,   292,   294,
     1300     293,   293,   295,   295,   295,   296,   296,   297,   297,   297,
     1301     298,   298,   298,   298,   299,   299,   299,   300,   300,   301,
     1302     301,   302,   303,   302,   304,   304,   305,   305,   306,   306,
     1303     306,   307,   307,   308,   308,   309,   309,   310,   310,   311,
     1304     311,   311,   312,   311,   311,   313,   313,   313,   314,   314,
     1305     314,   314,   314,   314,   314,   314,   314,   315,   315,   315,
     1306     316,   317,   317,   318,   318,   319,   319,   320,   321,   321,
     1307     322,   322,   322,   323,   323,   323,   323,   324,   324,   324,
     1308     324,   325,   325,   326,   326,   326,   327,   327,   327,   327,
     1309     328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
     1310     331,   332,   332,   332,   333,   333,   333,   334,   334,   334,
     1311     335,   335,   335,   336,   336,   336,   337,   337,   337,   337,
     1312     338,   338,   339,   339,   339,   340,   340,   340,   340,   341,
     1313     341,   341,   342,   342,   342,   342,   343,   343,   343,   344,
     1314     344,   344,   344,   345,   345,   345,   346,   346,   346,   346,
     1315     347,   347,   348,   348,   348,   349,   349,   350,   350,   351,
     1316     351,   351,   352,   352,   352,   352,   352,   353,   353,   353,
     1317     353,   354,   354,   354,   355,   355,   355,   356,   356,   356,
     1318     356,   357,   357,   357,   358,   358,   358,   358,   358,   359,
     1319     359,   359,   359,   360,   360,   360,   361,   361,   361,   362,
     1320     362,   362,   362,   362,   362,   363,   363,   363,   364,   364,
     1321     364,   364,   364,   365,   365,   365,   365,   366,   366,   367,
     1322     367,   367,   368,   368,   369,   369,   369,   369,   369,   369,
     1323     370,   370,   370,   370,   370,   370,   370,   370,   370,   370,
     1324     371,   371,   371,   371,   372,   372,   372,   373,   373,   374,
     1325     374,   374,   374,   374,   374,   375,   375,   375,   375,   375,
     1326     375,   376,   377,   377,   378,   378,   379,   379
    13221327};
    13231328
     
    13581363       5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
    13591364       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1360        1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
    1361        3,     3,     1,     3,     1,     2,     2,     2,     4,     4,
    1362        4,     4,     1,     2,     2,     3,     1,     2,     2,     1,
    1363        2,     2,     3,     1,     2,     2,     1,     1,     4,     2,
    1364        0,     6,     7,     2,     2,     2,     0,     2,     2,     3,
    1365        2,     3,     1,     2,     3,     2,     2,     4,     0,     1,
    1366        2,     2,     1,     0,     1,     2,     2,     5,     2,     0,
    1367        7,     2,     4,     0,     2,     0,     1,     1,     1,     5,
    1368        5,     5,     1,     5,     5,     9,     1,     5,     0,     1,
    1369        1,     5,     1,     1,     5,     5,     1,     3,     3,     4,
    1370        1,     1,     1,     1,     2,     1,     3,     3,     1,     2,
    1371        1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
    1372        1,     1,     1,     2,     1,     1,     1,     2,     0,     2,
    1373        2,     1,     4,     0,     1,     2,     3,     4,     2,     2,
    1374        1,     2,     2,     5,     5,     7,     6,     1,     2,     2,
    1375        3,     1,     2,     2,     4,     2,     4,     0,     4,     2,
    1376        1,     1,     1,     0,     2,     5,     5,    13,     1,     1,
    1377        3,     3,     2,     3,     3,     2,     4,     1,     6,     9,
    1378        0,    11,     1,     3,     3,     3,     1,     1,     5,     2,
    1379        5,     0,     1,     1,     3,     0,     1,     1,     1,     1,
    1380        0,     6,     2,     1,     2,     4,     2,     3,     3,     3,
    1381        4,     5,     5,     5,     6,     1,     1,     1,     3,     0,
    1382        5,     0,     1,     1,     2,     6,     1,     3,     0,     1,
    1383        4,     1,     1,     1,     1,     2,     1,     2,     2,     1,
    1384        3,     2,     3,     3,     2,     4,     4,     3,     8,     3,
    1385        2,     1,     2,     6,     8,     3,     2,     3,     3,     4,
    1386        4,     3,     1,     1,     1,     4,     6,     3,     2,     3,
    1387        3,     4,     4,     3,     2,     1,     2,     2,     1,     3,
    1388        2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
    1389        2,     1,     2,     2,     2,     3,     3,     2,     4,     4,
    1390        3,     6,     8,     3,     2,     1,     2,     2,     1,     1,
    1391        2,     3,     3,     2,     4,     6,     8,     1,     2,     2,
    1392        1,     2,     2,     3,     3,     1,     4,     4,     3,     5,
    1393        8,     3,     2,     3,     1,     5,     5,     6,     6,     1,
     1365       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1366       2,     2,     3,     3,     1,     3,     1,     2,     2,     2,
     1367       4,     4,     4,     4,     1,     2,     2,     3,     1,     2,
     1368       2,     1,     2,     2,     3,     1,     2,     2,     1,     1,
     1369       4,     2,     0,     6,     7,     2,     2,     2,     0,     2,
     1370       2,     3,     2,     3,     1,     2,     3,     2,     2,     4,
     1371       0,     1,     2,     2,     1,     0,     1,     2,     2,     5,
     1372       2,     0,     7,     2,     4,     0,     2,     0,     1,     1,
     1373       1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
     1374       0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
     1375       3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
     1376       1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
     1377       1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
     1378       0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
     1379       2,     2,     1,     2,     2,     5,     5,     7,     6,     1,
     1380       2,     2,     3,     1,     2,     2,     4,     2,     4,     0,
     1381       4,     2,     1,     1,     1,     0,     2,     5,     5,    13,
     1382       1,     1,     3,     3,     2,     3,     3,     2,     4,     1,
     1383       6,     9,     0,    11,     1,     3,     3,     3,     1,     1,
     1384       5,     2,     5,     0,     1,     1,     3,     0,     1,     1,
     1385       1,     1,     0,     6,     2,     1,     2,     4,     2,     3,
     1386       3,     3,     4,     5,     5,     5,     6,     1,     1,     1,
     1387       3,     0,     5,     0,     1,     1,     2,     6,     1,     3,
     1388       0,     1,     4,     1,     1,     1,     1,     2,     1,     2,
     1389       2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
     1390       8,     3,     2,     1,     2,     6,     8,     3,     2,     3,
     1391       3,     4,     4,     3,     1,     1,     1,     4,     6,     3,
     1392       2,     3,     3,     4,     4,     3,     2,     1,     2,     2,
     1393       1,     3,     2,     3,     3,     2,     4,     4,     3,     6,
     1394       8,     3,     2,     1,     2,     2,     2,     3,     3,     2,
     1395       4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
     1396       1,     1,     2,     3,     3,     2,     4,     6,     8,     1,
    13941397       2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
    1395        3,     5,     8,     3,     1,     2,     1,     2,     6,     5,
    1396        6,     7,     7,     1,     2,     2,     1,     2,     2,     3,
    1397        3,     1,     4,     4,     3,     8,     3,     1,     1,     2,
    1398        1,     1,     2,     3,     2,     3,     2,     3,     3,     2,
    1399        4,     3,     2,     3,     2,     4,     3,     2,     6,     6,
    1400        6,     7,     1,     2,     1,     1,     1,     2,     3,     2,
    1401        3,     2,     3,     3,     4,     2,     3,     4,     2,     5,
    1402        6,     6,     0,     1,     0,     2
     1398       3,     5,     8,     3,     2,     3,     1,     5,     5,     6,
     1399       6,     1,     2,     2,     1,     2,     2,     3,     3,     1,
     1400       4,     4,     3,     5,     8,     3,     1,     2,     1,     2,
     1401       6,     5,     6,     7,     7,     1,     2,     2,     1,     2,
     1402       2,     3,     3,     1,     4,     4,     3,     8,     3,     1,
     1403       1,     2,     1,     1,     2,     3,     2,     3,     2,     3,
     1404       3,     2,     4,     3,     2,     3,     2,     4,     3,     2,
     1405       6,     6,     6,     7,     1,     2,     1,     1,     1,     2,
     1406       3,     2,     3,     2,     3,     3,     4,     2,     3,     4,
     1407       2,     5,     6,     6,     0,     1,     0,     2
    14031408};
    14041409
     
    14101415     298,   298,   318,   316,   319,   317,   320,   321,   304,   306,
    14111416     305,     0,   307,   332,   324,   329,   327,   328,   326,   325,
    1412      330,   331,   336,   333,   334,   335,   551,   551,   551,     0,
    1413        0,     0,   298,   225,   308,   322,   323,     9,   363,     0,
    1414       10,    16,    17,     0,     2,    72,    73,   569,    11,   298,
    1415      529,   527,   252,     3,   458,     3,   265,     0,     3,     3,
    1416        3,   253,     3,     0,     0,     0,   299,   300,   302,   298,
    1417      311,   314,   344,   290,   337,   342,   291,   352,   292,   359,
    1418      356,   366,     0,     0,   367,   293,   477,   481,     3,     3,
    1419        0,     2,   523,   528,   533,   303,     0,     0,   551,   581,
    1420      551,     2,   592,   593,   594,   298,     0,   735,   736,     0,
    1421       14,     0,    15,   298,   274,   275,     0,   299,   294,   295,
    1422      296,   297,   530,   309,   396,   552,   553,   374,   375,    14,
    1423      449,   450,    13,   445,   448,     0,   507,   502,   493,   449,
    1424      450,     0,     0,   532,   226,     0,   298,     0,     0,     0,
    1425        0,     0,     0,     0,     0,   298,   298,     0,   737,   299,
    1426      586,   598,   741,   734,   732,   739,     0,     0,     0,   259,
    1427        2,     0,   536,   443,   444,   442,     0,     0,     0,     0,
    1428      551,     0,   638,   639,     0,     0,   549,   545,   551,   566,
    1429      551,   551,   547,     2,   546,   551,   605,   551,   551,   608,
    1430        0,     0,     0,   298,   298,   316,   364,     2,   298,   266,
    1431      301,   312,   345,   357,   482,     0,     2,     0,   458,   267,
    1432      299,   338,   353,   360,   478,     0,     2,     0,   315,   339,
    1433      346,   347,     0,   354,   358,   361,   365,   450,   298,   376,
    1434      369,   373,     0,   398,   479,   483,     0,     0,     0,     1,
    1435      298,     2,   534,   580,   582,   298,     2,   745,   299,   748,
    1436      549,   549,     0,   299,     0,     0,   277,   551,   547,     2,
    1437      298,     0,     0,   298,   554,     2,   505,     2,   558,     0,
    1438        0,     0,     0,     0,     0,    21,    69,     4,     8,    19,
    1439        5,     6,     7,     0,     0,   298,     2,    74,    75,    76,
    1440       77,    57,    22,    58,    18,    26,    56,    78,   298,     0,
    1441       80,    84,    87,    90,    95,    98,   100,   102,   104,   106,
    1442      108,   112,   499,    23,   456,   498,     0,   454,   455,     0,
    1443      570,   585,   588,   591,   597,   600,   603,     2,   743,   298,
    1444      746,     2,    72,   298,     3,   430,     0,   438,   299,   298,
    1445      311,   337,   291,   352,   359,     3,     3,   412,   416,   426,
    1446      431,   477,   298,   432,   710,   711,   298,   433,   435,     2,
    1447      587,   599,   733,     2,     2,   254,     2,   463,     0,   461,
    1448      460,   459,   146,     2,     2,   256,     2,     2,   255,     2,
    1449      285,     2,   286,     0,   284,     0,     0,     0,     0,     0,
    1450        0,     0,     0,     0,   571,   610,     0,   458,     2,   565,
    1451      574,   664,   567,   568,   537,   298,     2,   604,   613,   606,
    1452      607,     0,   280,   298,   298,   343,   299,     0,   299,   298,
    1453      738,   742,   740,   538,   298,   549,   260,   268,   313,     0,
    1454        2,   539,   298,   503,   340,   341,   287,   355,   362,     0,
    1455      298,     0,   752,   403,     0,   480,   504,   257,   258,   524,
    1456      298,   440,     0,   298,   242,     0,     2,   244,     0,   299,
    1457        0,   262,     2,   263,   282,     0,     0,     2,   298,   549,
    1458      298,   490,   492,   491,     0,     0,   754,     0,   298,     0,
    1459      298,   494,   298,   564,   562,   563,   561,     0,   556,   559,
    1460        0,     0,   298,    64,   298,    78,    59,   298,    66,   298,
    1461      298,    62,    63,     2,   132,     0,     0,   452,     0,   451,
    1462      732,   298,    20,    31,     0,    34,    35,    40,     2,     0,
    1463       40,   118,   119,   120,   121,   122,   123,   124,   125,   126,
    1464      127,   117,   116,     0,    60,    61,     0,     0,     0,     0,
     1417     330,   331,   337,   338,   336,   333,   334,   335,   553,   553,
     1418     553,     0,     0,     0,   298,   225,   308,   322,   323,     9,
     1419     365,     0,    10,    16,    17,     0,     2,    72,    73,   571,
     1420      11,   298,   531,   529,   252,     3,   460,     3,   265,     0,
     1421       3,     3,     3,   253,     3,     0,     0,     0,   299,   300,
     1422     302,   298,   311,   314,   346,   290,   339,   344,   291,   354,
     1423     292,   361,   358,   368,     0,     0,   369,   293,   479,   483,
     1424       3,     3,     0,     2,   525,   530,   535,   303,     0,     0,
     1425     553,   583,   553,     2,   594,   595,   596,   298,     0,   737,
     1426     738,     0,    14,     0,    15,   298,   274,   275,     0,   299,
     1427     294,   295,   296,   297,   532,   309,   398,   554,   555,   376,
     1428     377,    14,   451,   452,    13,   447,   450,     0,   509,   504,
     1429     495,   451,   452,     0,     0,   534,   226,     0,   298,     0,
     1430       0,     0,     0,     0,     0,     0,     0,   298,   298,     0,
     1431     739,   299,   588,   600,   743,   736,   734,   741,     0,     0,
     1432       0,   259,     2,     0,   538,   445,   446,   444,     0,     0,
     1433       0,     0,   553,     0,   640,   641,     0,     0,   551,   547,
     1434     553,   568,   553,   553,   549,     2,   548,   553,   607,   553,
     1435     553,   610,     0,     0,     0,   298,   298,   316,   366,     2,
     1436     298,   266,   301,   312,   347,   359,   484,     0,     2,     0,
     1437     460,   267,   299,   340,   355,   362,   480,     0,     2,     0,
     1438     315,   341,   348,   349,     0,   356,   360,   363,   367,   452,
     1439     298,   378,   371,   375,     0,   400,   481,   485,     0,     0,
     1440       0,     1,   298,     2,   536,   582,   584,   298,     2,   747,
     1441     299,   750,   551,   551,     0,   299,     0,     0,   277,   553,
     1442     549,     2,   298,     0,     0,   298,   556,     2,   507,     2,
     1443     560,     0,     0,     0,     0,     0,     0,    21,    69,     4,
     1444       8,    19,     5,     6,     7,     0,     0,   298,     2,    74,
     1445      75,    76,    77,    57,    22,    58,    18,    26,    56,    78,
     1446     298,     0,    80,    84,    87,    90,    95,    98,   100,   102,
     1447     104,   106,   108,   112,   501,    23,   458,   500,     0,   456,
     1448     457,     0,   572,   587,   590,   593,   599,   602,   605,     2,
     1449     745,   298,   748,     2,    72,   298,     3,   432,     0,   440,
     1450     299,   298,   311,   339,   291,   354,   361,     3,     3,   414,
     1451     418,   428,   433,   479,   298,   434,   712,   713,   298,   435,
     1452     437,     2,   589,   601,   735,     2,     2,   254,     2,   465,
     1453       0,   463,   462,   461,   146,     2,     2,   256,     2,     2,
     1454     255,     2,   285,     2,   286,     0,   284,     0,     0,     0,
     1455       0,     0,     0,     0,     0,     0,   573,   612,     0,   460,
     1456       2,   567,   576,   666,   569,   570,   539,   298,     2,   606,
     1457     615,   608,   609,     0,   280,   298,   298,   345,   299,     0,
     1458     299,   298,   740,   744,   742,   540,   298,   551,   260,   268,
     1459     313,     0,     2,   541,   298,   505,   342,   343,   287,   357,
     1460     364,     0,   298,     0,   754,   405,     0,   482,   506,   257,
     1461     258,   526,   298,   442,     0,   298,   242,     0,     2,   244,
     1462       0,   299,     0,   262,     2,   263,   282,     0,     0,     2,
     1463     298,   551,   298,   492,   494,   493,     0,     0,   756,     0,
     1464     298,     0,   298,   496,   298,   566,   564,   565,   563,     0,
     1465     558,   561,     0,     0,   298,    64,   298,    78,    59,   298,
     1466      66,   298,   298,    62,    63,     2,   132,     0,     0,   454,
     1467       0,   453,   734,   298,    20,    31,     0,    34,    35,    40,
     1468       2,     0,    40,   118,   119,   120,   121,   122,   123,   124,
     1469     125,   126,   127,   117,   116,     0,    60,    61,     0,     0,
    14651470       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1466        0,     0,     0,     0,     0,     2,   650,   457,   647,   551,
    1467      551,   655,   484,   298,     2,   589,   590,     0,   601,   602,
    1468        0,   744,   747,   298,   298,     0,   712,   299,   716,   707,
    1469      708,   714,     0,     2,     2,   672,   551,   754,   621,   551,
    1470      551,   754,   551,   635,   551,   551,   686,   439,   669,   551,
    1471      551,   677,   684,   298,   434,   299,     0,     0,   298,   722,
    1472      299,   727,   754,   719,   298,   724,   754,   298,   298,     0,
    1473        0,    21,     2,     0,    22,     0,   464,   752,     0,     0,
    1474      470,   246,     0,   298,     0,     0,     0,   549,   573,   577,
    1475      579,   609,   612,   616,   619,   572,   611,     0,   288,   662,
    1476        0,   298,   281,     0,     0,     0,     0,   279,     2,     0,
    1477      264,   540,   298,     0,     0,   298,     2,   368,   388,   377,
    1478        0,     0,   382,   376,   753,     0,     0,   401,     0,   299,
    1479        3,   419,     3,   423,   422,   595,     0,   535,   298,    72,
    1480        3,   298,   438,   299,     3,   432,   433,     2,     0,     0,
    1481        0,   489,   310,   298,     0,   485,   487,     3,     2,     2,
    1482        0,   506,     3,     0,   558,   134,     0,     0,   227,     0,
    1483        0,     0,     0,    41,     0,     0,   298,    24,     0,    25,
    1484        0,   696,   701,   453,   693,   551,   551,     0,   114,     3,
    1485        2,    32,     0,    38,     0,     2,    29,     0,   113,    81,
    1486       82,    83,    85,    86,    88,    89,    93,    94,    91,    92,
    1487       96,    97,    99,   101,   103,   105,   107,     0,     0,   298,
    1488        0,     0,     0,   651,   652,   648,   649,   501,   500,   298,
    1489        0,   718,   298,   723,   299,   298,   666,   709,   665,     2,
    1490      298,     0,     0,     0,     0,     0,     0,     0,     0,   687,
    1491        0,   673,   624,   640,   674,     2,   620,   627,   436,   622,
    1492      623,   437,     2,   634,   643,   636,   637,   670,   671,   685,
    1493      713,   717,   715,   754,   272,     2,   749,     2,   427,   721,
    1494      726,   428,     3,   406,     3,     3,     3,   458,     0,     0,
    1495        2,   472,   469,   753,     0,   465,     2,   468,   471,     0,
    1496      298,   247,   269,     3,   276,   278,     0,   458,     2,   575,
    1497      576,     2,   614,   615,     0,   663,   541,     3,   349,   348,
    1498      351,   350,   298,   542,     0,   543,   376,     0,     0,   298,
    1499        0,     0,   696,   386,   389,   393,   551,   393,   392,   385,
    1500      378,   551,   380,   383,   298,   403,   397,   111,   404,   752,
    1501        0,     0,   441,   245,     0,     0,     3,     2,   672,   434,
    1502        0,   531,     0,   754,   755,   493,     0,   298,   298,   298,
    1503        0,   555,   557,   135,     0,     0,   220,     0,     0,     0,
    1504      228,   229,    65,     0,    67,    70,    71,     0,   133,     0,
    1505        0,     0,   697,   698,   694,   695,   463,    79,   115,   130,
    1506        3,   114,     0,    28,    40,     3,     0,    37,   110,     0,
    1507        3,   654,   658,   661,   653,     3,   596,   720,   725,     2,
    1508       72,   298,     3,     3,   299,     0,     3,   626,   630,   633,
    1509      642,   676,   680,   683,   298,     3,   625,   641,   675,   298,
    1510      298,   429,   298,   298,     0,     0,     0,     0,   261,   111,
    1511        0,     3,     3,     0,   466,     0,   462,     0,     0,   250,
    1512      298,     0,     0,   134,     0,     0,     0,     0,     0,   134,
    1513        0,     0,   114,   114,    21,     0,     0,     3,   136,   137,
    1514        2,   148,   138,   139,   140,   141,   142,   143,   150,   152,
    1515        0,     0,     0,   289,   298,   298,   551,     0,   544,   298,
    1516      379,   381,     0,   395,   697,   390,   394,   391,   384,   388,
    1517      371,   402,     0,   583,     2,   668,   667,     0,   673,     2,
    1518      486,   488,   508,     3,   516,   517,     0,     2,   512,     3,
    1519        3,     0,     0,   560,   227,     0,     0,     0,   227,     0,
    1520        0,   700,   704,   706,   699,   752,   114,     0,     3,    54,
    1521        0,    54,    54,     3,    42,    44,    39,     0,     3,   109,
    1522        0,     2,   656,   657,     0,   298,     0,     0,     0,     3,
    1523      642,     0,     2,   628,   629,     2,   644,     2,   678,   679,
    1524        0,     0,    72,     0,     3,     3,     3,     3,   414,   413,
    1525      417,   751,     2,     2,   750,     0,     0,     0,     0,     3,
    1526      467,     3,     0,   248,   151,     3,   299,   298,     0,     0,
    1527        0,     0,     2,     0,   196,     0,   194,     0,     0,     0,
    1528        0,     0,     0,     0,   551,     0,   156,   153,   298,     0,
    1529        0,   271,   283,     3,     3,   550,   617,   372,   387,   400,
    1530      298,   270,   298,     0,   519,   496,   298,     0,     0,   495,
    1531      510,     0,     0,     0,   221,     0,   230,    68,     2,   702,
    1532      703,     0,   131,   128,     0,    51,     2,    45,    52,    53,
    1533        0,     0,     0,     0,    27,     0,   659,   298,   584,   728,
    1534      729,   730,     0,   681,   298,   298,   298,     3,     3,     0,
    1535      689,     0,     0,     0,     0,   298,   298,     3,   548,   473,
    1536      474,     0,   251,   299,     0,     0,     0,     0,   298,   197,
    1537      195,   192,     0,   198,     0,     0,     0,     0,   202,   205,
    1538      203,   199,     0,   200,   134,    40,   149,   147,   249,     0,
    1539        0,   421,   425,   424,     0,   513,     2,   514,     2,   515,
    1540      509,   298,   233,     0,   231,     0,   233,   298,    36,   129,
    1541       55,     0,    43,    33,     2,    49,     2,    47,    30,     3,
    1542      731,     3,     3,     3,     0,     0,   688,   690,   631,   645,
    1543      273,     2,   411,     3,   410,     0,   476,   134,     0,     0,
    1544      134,     3,     0,   134,   193,     0,     2,     2,   214,   204,
    1545        0,     0,     0,   145,     0,   578,   618,     2,     0,     0,
    1546        2,   234,     0,     0,   222,     0,     3,     3,     0,     0,
    1547        0,     0,     0,     0,   691,   692,   298,     0,   475,   157,
    1548        0,     0,     2,   170,   134,   159,     0,   187,     0,   134,
    1549        0,     2,   161,     0,     2,     0,     2,     2,     2,   201,
    1550       37,   298,   518,   520,   511,     0,     0,     0,     0,     0,
    1551        0,     3,     3,   660,   632,   646,   682,   415,   134,   163,
    1552      166,     0,   165,   169,     3,   172,   171,     0,   134,   189,
    1553      134,     3,     0,   298,     0,   298,     0,     2,     0,     2,
    1554      144,     2,   235,   236,     0,   232,   223,   705,    46,     0,
    1555        0,   158,     0,     0,   168,   238,   173,     2,   240,   188,
    1556        0,   191,   177,   206,     3,   215,   219,   208,     3,     0,
    1557      298,     0,   298,     0,     0,     0,    50,    48,   164,   167,
    1558      134,     0,   174,   298,   134,   134,     0,   178,     0,     0,
    1559      696,   216,   217,   218,     0,   207,     3,   209,     3,   298,
    1560      224,   237,   154,   175,   160,   134,   241,   190,   185,   183,
    1561      179,   162,   134,     0,   697,     0,     0,     0,     0,   155,
    1562      176,   186,   180,   184,   183,   181,     3,     3,     0,     0,
    1563      497,   182,   210,   212,     3,     3,   211,   213
     1471       0,     0,     0,     0,     0,     0,     0,     2,   652,   459,
     1472     649,   553,   553,   657,   486,   298,     2,   591,   592,     0,
     1473     603,   604,     0,   746,   749,   298,   298,     0,   714,   299,
     1474     718,   709,   710,   716,     0,     2,     2,   674,   553,   756,
     1475     623,   553,   553,   756,   553,   637,   553,   553,   688,   441,
     1476     671,   553,   553,   679,   686,   298,   436,   299,     0,     0,
     1477     298,   724,   299,   729,   756,   721,   298,   726,   756,   298,
     1478     298,     0,     0,    21,     2,     0,    22,     0,   466,   754,
     1479       0,     0,   472,   246,     0,   298,     0,     0,     0,   551,
     1480     575,   579,   581,   611,   614,   618,   621,   574,   613,     0,
     1481     288,   664,     0,   298,   281,     0,     0,     0,     0,   279,
     1482       2,     0,   264,   542,   298,     0,     0,   298,     2,   370,
     1483     390,   379,     0,     0,   384,   378,   755,     0,     0,   403,
     1484       0,   299,     3,   421,     3,   425,   424,   597,     0,   537,
     1485     298,    72,     3,   298,   440,   299,     3,   434,   435,     2,
     1486       0,     0,     0,   491,   310,   298,     0,   487,   489,     3,
     1487       2,     2,     0,   508,     3,     0,   560,   134,     0,     0,
     1488     227,     0,     0,     0,     0,    41,     0,     0,   298,    24,
     1489       0,    25,     0,   698,   703,   455,   695,   553,   553,     0,
     1490     114,     3,     2,    32,     0,    38,     0,     2,    29,     0,
     1491     113,    81,    82,    83,    85,    86,    88,    89,    93,    94,
     1492      91,    92,    96,    97,    99,   101,   103,   105,   107,     0,
     1493       0,   298,     0,     0,     0,   653,   654,   650,   651,   503,
     1494     502,   298,     0,   720,   298,   725,   299,   298,   668,   711,
     1495     667,     2,   298,     0,     0,     0,     0,     0,     0,     0,
     1496       0,   689,     0,   675,   626,   642,   676,     2,   622,   629,
     1497     438,   624,   625,   439,     2,   636,   645,   638,   639,   672,
     1498     673,   687,   715,   719,   717,   756,   272,     2,   751,     2,
     1499     429,   723,   728,   430,     3,   408,     3,     3,     3,   460,
     1500       0,     0,     2,   474,   471,   755,     0,   467,     2,   470,
     1501     473,     0,   298,   247,   269,     3,   276,   278,     0,   460,
     1502       2,   577,   578,     2,   616,   617,     0,   665,   543,     3,
     1503     351,   350,   353,   352,   298,   544,     0,   545,   378,     0,
     1504       0,   298,     0,     0,   698,   388,   391,   395,   553,   395,
     1505     394,   387,   380,   553,   382,   385,   298,   405,   399,   111,
     1506     406,   754,     0,     0,   443,   245,     0,     0,     3,     2,
     1507     674,   436,     0,   533,     0,   756,   757,   495,     0,   298,
     1508     298,   298,     0,   557,   559,   135,     0,     0,   220,     0,
     1509       0,     0,   228,   229,    65,     0,    67,    70,    71,     0,
     1510     133,     0,     0,     0,   699,   700,   696,   697,   465,    79,
     1511     115,   130,     3,   114,     0,    28,    40,     3,     0,    37,
     1512     110,     0,     3,   656,   660,   663,   655,     3,   598,   722,
     1513     727,     2,    72,   298,     3,     3,   299,     0,     3,   628,
     1514     632,   635,   644,   678,   682,   685,   298,     3,   627,   643,
     1515     677,   298,   298,   431,   298,   298,     0,     0,     0,     0,
     1516     261,   111,     0,     3,     3,     0,   468,     0,   464,     0,
     1517       0,   250,   298,     0,     0,   134,     0,     0,     0,     0,
     1518       0,   134,     0,     0,   114,   114,    21,     0,     0,     3,
     1519     136,   137,     2,   148,   138,   139,   140,   141,   142,   143,
     1520     150,   152,     0,     0,     0,   289,   298,   298,   553,     0,
     1521     546,   298,   381,   383,     0,   397,   699,   392,   396,   393,
     1522     386,   390,   373,   404,     0,   585,     2,   670,   669,     0,
     1523     675,     2,   488,   490,   510,     3,   518,   519,     0,     2,
     1524     514,     3,     3,     0,     0,   562,   227,     0,     0,     0,
     1525     227,     0,     0,   702,   706,   708,   701,   754,   114,     0,
     1526       3,    54,     0,    54,    54,     3,    42,    44,    39,     0,
     1527       3,   109,     0,     2,   658,   659,     0,   298,     0,     0,
     1528       0,     3,   644,     0,     2,   630,   631,     2,   646,     2,
     1529     680,   681,     0,     0,    72,     0,     3,     3,     3,     3,
     1530     416,   415,   419,   753,     2,     2,   752,     0,     0,     0,
     1531       0,     3,   469,     3,     0,   248,   151,     3,   299,   298,
     1532       0,     0,     0,     0,     2,     0,   196,     0,   194,     0,
     1533       0,     0,     0,     0,     0,     0,   553,     0,   156,   153,
     1534     298,     0,     0,   271,   283,     3,     3,   552,   619,   374,
     1535     389,   402,   298,   270,   298,     0,   521,   498,   298,     0,
     1536       0,   497,   512,     0,     0,     0,   221,     0,   230,    68,
     1537       2,   704,   705,     0,   131,   128,     0,    51,     2,    45,
     1538      52,    53,     0,     0,     0,     0,    27,     0,   661,   298,
     1539     586,   730,   731,   732,     0,   683,   298,   298,   298,     3,
     1540       3,     0,   691,     0,     0,     0,     0,   298,   298,     3,
     1541     550,   475,   476,     0,   251,   299,     0,     0,     0,     0,
     1542     298,   197,   195,   192,     0,   198,     0,     0,     0,     0,
     1543     202,   205,   203,   199,     0,   200,   134,    40,   149,   147,
     1544     249,     0,     0,   423,   427,   426,     0,   515,     2,   516,
     1545       2,   517,   511,   298,   233,     0,   231,     0,   233,   298,
     1546      36,   129,    55,     0,    43,    33,     2,    49,     2,    47,
     1547      30,     3,   733,     3,     3,     3,     0,     0,   690,   692,
     1548     633,   647,   273,     2,   413,     3,   412,     0,   478,   134,
     1549       0,     0,   134,     3,     0,   134,   193,     0,     2,     2,
     1550     214,   204,     0,     0,     0,   145,     0,   580,   620,     2,
     1551       0,     0,     2,   234,     0,     0,   222,     0,     3,     3,
     1552       0,     0,     0,     0,     0,     0,   693,   694,   298,     0,
     1553     477,   157,     0,     0,     2,   170,   134,   159,     0,   187,
     1554       0,   134,     0,     2,   161,     0,     2,     0,     2,     2,
     1555       2,   201,    37,   298,   520,   522,   513,     0,     0,     0,
     1556       0,     0,     0,     3,     3,   662,   634,   648,   684,   417,
     1557     134,   163,   166,     0,   165,   169,     3,   172,   171,     0,
     1558     134,   189,   134,     3,     0,   298,     0,   298,     0,     2,
     1559       0,     2,   144,     2,   235,   236,     0,   232,   223,   707,
     1560      46,     0,     0,   158,     0,     0,   168,   238,   173,     2,
     1561     240,   188,     0,   191,   177,   206,     3,   215,   219,   208,
     1562       3,     0,   298,     0,   298,     0,     0,     0,    50,    48,
     1563     164,   167,   134,     0,   174,   298,   134,   134,     0,   178,
     1564       0,     0,   698,   216,   217,   218,     0,   207,     3,   209,
     1565       3,   298,   224,   237,   154,   175,   160,   134,   241,   190,
     1566     185,   183,   179,   162,   134,     0,   699,     0,     0,     0,
     1567       0,   155,   176,   186,   180,   184,   183,   181,     3,     3,
     1568       0,     0,   499,   182,   210,   212,     3,     3,   211,   213
    15641569};
    15651570
     
    15671572static const yytype_int16 yydefgoto[] =
    15681573{
    1569       -1,   800,   464,   301,    47,   133,   134,   302,   303,   304,
    1570      305,   306,   752,   753,  1113,  1114,  1115,  1225,   307,   378,
    1571      309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
    1572      319,   320,   321,  1010,   514,   959,   543,   323,   960,   933,
    1573     1036,  1502,  1038,  1039,  1040,  1041,  1503,  1042,  1043,  1420,
    1574     1421,  1383,  1384,  1385,  1481,  1482,  1486,  1487,  1522,  1523,
    1575     1044,  1342,  1045,  1046,  1278,  1279,  1280,  1464,  1047,   145,
    1576      939,   940,   941,  1362,  1444,  1456,  1457,   465,   466,   860,
    1577      861,  1018,    51,    52,    53,    54,    55,   345,   157,    58,
    1578       59,    60,    61,    62,   347,    64,    65,   263,    67,    68,
    1579      273,   349,   350,    71,    72,    73,   118,    75,   203,   352,
    1580      119,    78,   120,    80,    81,   451,    82,   450,   679,   680,
    1581      681,   893,  1065,   894,    83,    84,   454,   452,   687,   842,
    1582      843,   355,   356,   690,   691,   692,   357,   358,   359,   360,
    1583      462,   176,   135,   136,   518,   325,   169,   636,   637,   638,
    1584      639,   640,    85,   121,    87,   485,   486,   925,   487,   276,
    1585      491,   326,    88,   137,   138,    89,  1301,  1087,  1088,  1089,
    1586     1090,    90,    91,   708,    92,   272,    93,    94,   186,  1012,
    1587      670,   409,   125,    95,   497,   498,   499,   187,   267,   189,
    1588      190,   191,   268,    98,    99,   100,   101,   102,   103,   104,
    1589      194,   195,   196,   197,   198,   812,   598,   599,   600,   601,
    1590      199,   603,   604,   605,   567,   568,   569,   570,   742,   105,
    1591      607,   608,   609,   610,   611,   612,   953,   744,   745,   746,
    1592      588,   363,   364,   365,   366,   327,   163,   107,   108,   109,
    1593      368,   685,   715
     1574      -1,   802,   466,   303,    49,   135,   136,   304,   305,   306,
     1575     307,   308,   754,   755,  1115,  1116,  1117,  1227,   309,   380,
     1576     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
     1577     321,   322,   323,  1012,   516,   961,   545,   325,   962,   935,
     1578    1038,  1504,  1040,  1041,  1042,  1043,  1505,  1044,  1045,  1422,
     1579    1423,  1385,  1386,  1387,  1483,  1484,  1488,  1489,  1524,  1525,
     1580    1046,  1344,  1047,  1048,  1280,  1281,  1282,  1466,  1049,   147,
     1581     941,   942,   943,  1364,  1446,  1458,  1459,   467,   468,   862,
     1582     863,  1020,    53,    54,    55,    56,    57,   347,   159,    60,
     1583      61,    62,    63,    64,   349,    66,    67,   265,    69,    70,
     1584     275,   351,   352,    73,    74,    75,   120,    77,   205,   354,
     1585     121,    80,   122,    82,    83,   453,    84,   452,   681,   682,
     1586     683,   895,  1067,   896,    85,    86,   456,   454,   689,   844,
     1587     845,   357,   358,   692,   693,   694,   359,   360,   361,   362,
     1588     464,   178,   137,   138,   520,   327,   171,   638,   639,   640,
     1589     641,   642,    87,   123,    89,   487,   488,   927,   489,   278,
     1590     493,   328,    90,   139,   140,    91,  1303,  1089,  1090,  1091,
     1591    1092,    92,    93,   710,    94,   274,    95,    96,   188,  1014,
     1592     672,   411,   127,    97,   499,   500,   501,   189,   269,   191,
     1593     192,   193,   270,   100,   101,   102,   103,   104,   105,   106,
     1594     196,   197,   198,   199,   200,   814,   600,   601,   602,   603,
     1595     201,   605,   606,   607,   569,   570,   571,   572,   744,   107,
     1596     609,   610,   611,   612,   613,   614,   955,   746,   747,   748,
     1597     590,   365,   366,   367,   368,   329,   165,   109,   110,   111,
     1598     370,   687,   717
    15941599};
    15951600
    15961601/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15971602   STATE-NUM.  */
    1598 #define YYPACT_NINF -1333
     1603#define YYPACT_NINF -1267
    15991604static const yytype_int16 yypact[] =
    16001605{
    1601     6694,  7975, -1333,   -14, -1333, -1333, -1333, -1333, -1333, -1333,
    1602    -1333,    26, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
    1603    -1333, -1333, -1333, -1333, -1333, -1333,   109,   109,   109,   759,
    1604      860,    66,  6930,   241, -1333, -1333, -1333, -1333, -1333,   199,
    1605    -1333, -1333, -1333,  1264,   207, -1333, -1333, -1333, -1333,  8320,
    1606    -1333, -1333, -1333, -1333,     3,   216, -1333,  1096, -1333, -1333,
    1607    -1333, -1333,   265,  1996,   389,    54,  5394, -1333, -1333,  8320,
    1608      780, -1333, -1333,   554,   416,  3688,   749,   995,   554,  1130,
    1609    -1333, -1333,   768,   826, -1333,   554,  1144, -1333,   313, -1333,
    1610      443,   462, -1333, -1333, -1333, -1333,   358,   216,   109, -1333,
    1611      109, -1333, -1333, -1333, -1333,  8461,  1096, -1333, -1333,  1096,
    1612    -1333,   414, -1333,  8545, -1333, -1333,  2376,  8575, -1333,  1138,
    1613     1138,  1138, -1333, -1333, -1333,   109, -1333, -1333, -1333,   370,
    1614      444,   488, -1333, -1333, -1333,   518, -1333, -1333, -1333, -1333,
    1615    -1333,   525,   576, -1333, -1333,    50,  8059,  1902,   238,   538,
    1616      578,   604,   613,   618,   635,  8659,  6327,   649, -1333,  8431,
    1617    -1333, -1333, -1333, -1333,   661, -1333,   -10,  9338,  9338, -1333,
    1618      662,   181, -1333, -1333, -1333, -1333,   680,   348,   393,   400,
    1619      109,   685, -1333, -1333,  1996,  2098,   801, -1333,    51, -1333,
    1620      109,   109,   216, -1333, -1333,   180, -1333,   109,   109, -1333,
    1621     2242,   712,   751,  1138,  6116, -1333, -1333, -1333,  8320, -1333,
    1622    -1333,   554, -1333, -1333, -1333,   216, -1333,  1096,     3, -1333,
    1623     7196, -1333,  1138,  1138,  1138,   216, -1333,   759, -1333,  4572,
    1624    -1333, -1333,   739,  1138, -1333,  1138, -1333,   199,  8059, -1333,
    1625      775, -1333,   860,   777,  1138, -1333,   759,   771,   804, -1333,
    1626     6930,   594, -1333, -1333, -1333,  4461, -1333, -1333,  5315, -1333,
    1627      801,   101,  9515,  8575,  2376,  2242, -1333,   187, -1333, -1333,
    1628     8545,  1096,   786, 10191, -1333, -1333,   434, -1333,  9931,   803,
    1629      866,  9574,   842,  9515,  9633, -1333,   845, -1333, -1333, -1333,
    1630    -1333, -1333, -1333,  9692,  9692,  7829,   207, -1333, -1333, -1333,
    1631    -1333, -1333, -1333, -1333,   885, -1333,  1691,  2462,  8059,  9515,
    1632    -1333,   558,   367,   614,   669,   742,   852,   846,   858,   883,
    1633      -13, -1333, -1333, -1333,   737, -1333,   269, -1333, -1333,  1902,
    1634    -1333, -1333,   465,   880, -1333,   586,   880, -1333, -1333,  8461,
    1635    -1333,   890,   897,  8174, -1333, -1333,  1514,  1088,  7619,  6116,
    1636      554, -1333,   554,  1138,  1138, -1333, -1333, -1333, -1333, -1333,
    1637    -1333,  1138,  8461,  1096, -1333, -1333,  8659,  1872, -1333, -1333,
    1638    -1333, -1333, -1333, -1333, -1333, -1333, -1333,  9279,  9515, -1333,
    1639    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
    1640    -1333, -1333, -1333,  2376, -1333,   105,   903,   926,   928,   796,
    1641      931,   941,   943,  2098, -1333, -1333,   952,     3,   954, -1333,
    1642    -1333,   961, -1333, -1333, -1333,  4461, -1333, -1333, -1333, -1333,
    1643    -1333,  2242, -1333,  8059,  8059, -1333,  1138,  2376,  6237,  7691,
    1644    -1333, -1333, -1333, -1333,  4461,   101, -1333, -1333,   554,   216,
    1645    -1333, -1333,  4461, -1333,  5995, -1333, -1333,  1138,  1138,   394,
    1646     7535,   966,   959,   955,   974,  1138, -1333, -1333, -1333, -1333,
    1647     5606, -1333,   424,  5852, -1333,   216,   977, -1333,  2376, 10015,
    1648     9751, -1333, -1333, -1333, -1333,   884,  2242, -1333,  7691,   801,
    1649     6812, -1333, -1333, -1333,  1296,   456,   986,   860, 10191,  1468,
    1650     8545, -1333, 10191, -1333, -1333, -1333, -1333,   473, -1333,   988,
    1651      866,   242,  7829, -1333,  8689, -1333, -1333,  7829, -1333,  7944,
    1652     7829, -1333, -1333,   207, -1333,   485,  1009,   881,  1014, -1333,
    1653    -1333,  6085, -1333, -1333,   360, -1333, -1333,  9515, -1333,   362,
    1654     9515, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
    1655    -1333, -1333, -1333,  9515, -1333, -1333,  9515,  9515,  9515,  9515,
    1656     9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,
    1657     9515,  9515,  9515,  9515,  3091,   737,  1207, -1333, -1333,   109,
    1658      109, -1333, -1333,  8059, -1333, -1333,   961,   594, -1333,   961,
    1659     9810, -1333, -1333,  8659,  6085,   993, -1333,  8575, -1333, -1333,
    1660      661, -1333,  1039,   587,  1045,  2359,   209,   986, -1333,   109,
    1661      109,   986,   212, -1333,   109,   109,   961, -1333, -1333,   109,
    1662      109, -1333,   880,  8773,  1096, 10160,   415,   496,  8773, -1333,
    1663     5315, -1333,   986, -1333,  8461, -1333,   126,  7313,  7313,  1096,
    1664     9397,  1029, -1333,  1354,  1033,  1043, -1333,  1060,  9338,   407,
    1665    -1333,  1151,  1096,  7313,   594,  2376,   594,   801,   631,   880,
    1666    -1333, -1333,   692,   880, -1333, -1333, -1333,   866, -1333,   880,
    1667      216,  5606, -1333,   494,  1073,   520,  1074, -1333,   890,   216,
    1668    -1333, -1333,  4461,   216,  1071,  8689,   207, -1333,   972, -1333,
    1669      401,   438,   860, -1333,   860,  1075,  9515, -1333,   860, 10160,
    1670    -1333, -1333,  1079, -1333, -1333, -1333,   594, -1333, 10088,   897,
    1671    -1333,  7313,   960,  7619, -1333, -1333,   661,  1076,  1081,  1296,
    1672     2130, -1333, -1333, 10191,  9515, -1333, -1333,  1085, -1333, -1333,
    1673     1093, -1333,  1085,  1098,  9931,  9515,  1097,  1094,    38,  1119,
    1674     1115,  1124,  1125, -1333,  1126,  1127,  6085, -1333,  9515, -1333,
    1675      881,  1631, -1333, -1333, -1333,   109,   109,  9456,  9515,  1132,
    1676    -1333, -1333,   577, -1333,  9515, -1333, -1333,   843, -1333, -1333,
    1677    -1333, -1333,   558,   558,   367,   367,   614,   614,   614,   614,
    1678      669,   669,   742,   852,   846,   858,   883,  9515,   296,  5606,
    1679     1131,  1133,  1136,  1207, -1333, -1333, -1333, -1333, -1333,  5606,
    1680      616, -1333,  8461, -1333,  6448,  8289, -1333, -1333, -1333,   587,
    1681     5606,   990,  1140,  1141,  1142,  1145,  1146,  1147,  1149, -1333,
    1682     2845,  2359, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
    1683    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   961,
    1684    -1333, -1333, -1333,   986, -1333, -1333, -1333, -1333, -1333, -1333,
    1685    -1333, -1333, -1333, -1333,  1150,  1152, -1333,     3,  1132,  9397,
    1686    -1333, -1333, -1333,  9279,  1154, -1333, -1333, -1333, -1333,   860,
    1687     5689,  1243, -1333, -1333, -1333, -1333,  1143,     3, -1333, -1333,
    1688      961, -1333, -1333,   961,    14,   961, -1333, -1333, -1333, -1333,
    1689    -1333, -1333,  6327, -1333,   216, -1333, -1333,   452,   487,  6327,
    1690     1790,  9515,  2983, -1333, -1333,  1153,    20,  1153, -1333,   860,
    1691    -1333,   109, -1333, -1333,  8090,   955, -1333, -1333, -1333,   959,
    1692     1161,  1157, -1333, -1333,  1163,  1164, -1333,   960,  1700, -1333,
    1693      539, -1333,  2130,   986, -1333, -1333,  1167, 10191,  8545,  8059,
    1694     1169, -1333, -1333,  1165,  1170,  1171, -1333,  9515,  1173,   310,
    1695     1177, -1333,  1180,   594,  1180, -1333, -1333,  1180, -1333,  1195,
    1696     1197,  1201,  1631, -1333, -1333, -1333,  9279, -1333, -1333, -1333,
    1697     1196,  9515,   730, -1333,  9515, -1333,   730, -1333, -1333,  9515,
    1698    -1333,   748,   880, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
    1699      897,  8174, -1333, -1333,  6569,  1203, -1333,   758,   880, -1333,
    1700      763,   830,   880, -1333,  1138,  4995, -1333, -1333, -1333,  5606,
    1701     5606, -1333,  7691,  7691,  1205,  1210,  1223,  1209, -1333,   551,
    1702      162,  1132, -1333,   730, -1333,  9338, -1333,  9515,   513, -1333,
    1703     5964,  1214,  1227,  9220,  1234,  1235,    42,   160,   163,  9515,
    1704     1237,   216,  9515,  9515,  1226,   304,  1229, -1333, -1333, -1333,
    1705     1244, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
    1706      860,  1248,  9515, -1333,  5606,  5606,   109,  1254, -1333,  8205,
    1707    -1333, -1333,   773, -1333,  2983, -1333, -1333, -1333, -1333,   972,
    1708    -1333, -1333,  1250, -1333, -1333, -1333, -1333,  1257,  1700, -1333,
    1709    -1333,  1241, -1333,  1085, -1333, -1333,  2376,  1256, -1333, -1333,
    1710    -1333,   617,  1258, -1333,    38,  1266,  9515,  1245,    38,    38,
    1711     1274,   878,   880, -1333, -1333,  1060,  9515,  1276,  1196, -1333,
    1712      841, -1333, -1333,  1270, -1333,   215, -1333,  1279,  1270, -1333,
    1713     1282, -1333, -1333,   961,  1283,  6206,  1284,  1285,  1286, -1333,
    1714    -1333,  1290, -1333, -1333,   961, -1333, -1333, -1333, -1333,   961,
    1715     9515,  9515,   897,  1291, -1333, -1333, -1333, -1333, -1333, -1333,
    1716    -1333, -1333, -1333, -1333, -1333,  9515,  9515,  1295,  1297,  1270,
    1717    -1333, -1333,   860, -1333, -1333, -1333,  7124,  8545,  9515,  9515,
    1718     1350,  9515, -1333,  1278, -1333,  1280, -1333,  1288,  9515,  1293,
    1719     9515,  1056,  1298,    72,   109,  2402, -1333, -1333,  5689,  1287,
    1720      521, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
    1721     9036, -1333,  7691,  1305, -1333, -1333,  8545,   522,   524, -1333,
    1722     1308,  1302,   866,  1318, -1333,   325, -1333, -1333, -1333, -1333,
    1723      961,  1324, -1333, -1333,  1328,  1363, -1333, -1333,  1363,  1363,
    1724      730,  1333,  1026,  1220, -1333,  1339, -1333,  5606, -1333, -1333,
    1725    -1333, -1333,  1340, -1333,  5606,  5606,  5606, -1333, -1333,  1341,
    1726    -1333,  1342,  1345,  1347,   600,  7385,  7502, -1333, -1333, -1333,
    1727    -1333,  1352, -1333,  7763,   633,   634,  1353,   658,  5821, -1333,
    1728    -1333, -1333,   528, -1333,   659,  1362,  1364,   216,  1401,   965,
    1729    -1333, -1333,  9515, -1333,  9220,  9515, -1333, -1333, -1333,  1365,
    1730     1367, -1333, -1333, -1333,  1358, -1333, -1333, -1333, -1333, -1333,
    1731    -1333,  8545,   866,  1373, -1333,  1368,   866,  5606, -1333, -1333,
    1732    -1333,   730, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
    1733    -1333, -1333, -1333, -1333,  1384,  1391, -1333, -1333, -1333, -1333,
    1734    -1333, -1333, -1333,  1404, -1333,  1408, -1333,  9220,   198,  9515,
    1735     9220, -1333,  1406,  9515, -1333,   323,  1378,  1427, -1333, -1333,
    1736     1416,  1417,  1395, -1333,   910, -1333, -1333, -1333,  1096,  2376,
    1737     1413, -1333,   326,  9515, -1333,   663, -1333,  1270,   730,   730,
    1738     1420,  1424,  1425,  1434, -1333, -1333,  7691,  1429, -1333,  1489,
    1739     9515,  1426, -1333, -1333,  9130, -1333,   689, -1333,  1414,  9220,
    1740     1418, -1333, -1333,  1445, -1333,  1449, -1333,  1467,  1469, -1333,
    1741     1435,  8545, -1333, -1333, -1333,   866,   594,  1456,  1436,  1460,
    1742     1466,  1270,  1270, -1333, -1333, -1333, -1333, -1333,  9220,   194,
    1743    -1333,   376, -1333, -1333,  7048, -1333, -1333,  1447,  9515, -1333,
    1744     9515,  7048,   216,  8689,   216,  8689,  1470, -1333,  1471, -1333,
    1745    -1333,  1477, -1333, -1333,   720, -1333, -1333, -1333, -1333,  1473,
    1746     1481, -1333,  9515,  9515, -1333, -1333,   991,    94, -1333, -1333,
    1747     1462, -1333,   991, -1333, -1333,  2158,   594, -1333, -1333,   216,
    1748     8689,   216,  8689,  1487,  1463,   594, -1333, -1333, -1333, -1333,
    1749     9130,  1484,   991,  5522,  9515,  9040,  1485,   991,  1493,  2158,
    1750     3005, -1333, -1333, -1333,  1494, -1333, -1333, -1333, -1333,  8059,
    1751    -1333, -1333, -1333,  8905, -1333,  9130, -1333, -1333,  1474,  8815,
    1752    -1333, -1333,  9040,   216,  3005,   216,  1498,  1500,   729, -1333,
    1753     8905, -1333, -1333, -1333,  8815, -1333, -1333, -1333,   216,   216,
    1754    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333
     1606    5235,  8510, -1267,   -14, -1267, -1267, -1267, -1267, -1267, -1267,
     1607   -1267,   -27, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1608   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,    84,    84,
     1609      84,  1541,   905,   123,  6677,   163, -1267, -1267, -1267, -1267,
     1610   -1267,   157, -1267, -1267, -1267,  1043,    81, -1267, -1267, -1267,
     1611   -1267,  4048, -1267, -1267, -1267, -1267,   225,   198, -1267,  1956,
     1612   -1267, -1267, -1267, -1267,   217,  1716,   371,    37,  6797, -1267,
     1613   -1267,  4048,   829, -1267, -1267,  1101,   380,  3172,   661,   839,
     1614    1101,   977, -1267, -1267,  1289,   340, -1267,  1101,  1140, -1267,
     1615     273, -1267,   439,   447, -1267, -1267, -1267, -1267,   337,   198,
     1616      84, -1267,    84, -1267, -1267, -1267, -1267,  7269,  1956, -1267,
     1617   -1267,  1956, -1267,   325, -1267,  7582, -1267, -1267,  2178,  8744,
     1618   -1267,   675,   675,   675, -1267, -1267, -1267,    84, -1267, -1267,
     1619   -1267,   360,   395,   436, -1267, -1267, -1267,   466, -1267, -1267,
     1620   -1267, -1267, -1267,   503,   515, -1267, -1267,   272,  8119,  1675,
     1621     307,   370,   377,   524,   565,   568,   580,  8828,  6307,   594,
     1622   -1267,  4677, -1267, -1267, -1267, -1267,   613, -1267,   271,  9583,
     1623    9583, -1267,   610,   339, -1267, -1267, -1267, -1267,   618,   379,
     1624     421,   468,    84,   603, -1267, -1267,  1716,  2591,   687, -1267,
     1625      90, -1267,    84,    84,   198, -1267, -1267,    91, -1267,    84,
     1626      84, -1267,  2973,   652,   657,   675,  6831, -1267, -1267, -1267,
     1627    4048, -1267, -1267,  1101, -1267, -1267, -1267,   198, -1267,  1956,
     1628     225, -1267,  7235, -1267,   675,   675,   675,   198, -1267,  1541,
     1629   -1267,  3826, -1267, -1267,   642,   675, -1267,   675, -1267,   157,
     1630    8119, -1267,   665, -1267,   905,   685,   675, -1267,  1541,   689,
     1631     710, -1267,  6677,   291, -1267, -1267, -1267,  8477, -1267, -1267,
     1632    4354, -1267,   687,     8,  9760,  8744,  2178,  2973, -1267,   101,
     1633   -1267, -1267,  7582,  1956,   740, 10515, -1267, -1267,   378, -1267,
     1634   10178,   730,   705,  9819,   773,  9760,  9878, -1267,   794, -1267,
     1635   -1267, -1267, -1267, -1267, -1267,  9937,  9937,  7885,    81, -1267,
     1636   -1267, -1267, -1267, -1267, -1267, -1267,   834, -1267,  1184,  2546,
     1637    8119,  9760, -1267,   525,   415,   844,   338,   853,   823,   831,
     1638     841,   886,    56, -1267, -1267, -1267,   518, -1267,   528, -1267,
     1639   -1267,  1675, -1267, -1267,   456,   900, -1267,   490,   900, -1267,
     1640   -1267,  7269, -1267,   940,   946,  8236, -1267, -1267,   536,  1525,
     1641    7667,  6831,  1101, -1267,  1101,   675,   675, -1267, -1267, -1267,
     1642   -1267, -1267, -1267,   675,  7269,  1956, -1267, -1267,  8828,  1786,
     1643   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9524,
     1644    9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1645   -1267, -1267, -1267, -1267, -1267,  2178, -1267,   446,   945,   961,
     1646     968,   800,   973,   976,   981,  2591, -1267, -1267,   939,   225,
     1647     982, -1267, -1267,   987, -1267, -1267, -1267,  8477, -1267, -1267,
     1648   -1267, -1267, -1267,  2973, -1267,  8119,  8119, -1267,   675,  2178,
     1649   10547,  7742, -1267, -1267, -1267, -1267,  8477,     8, -1267, -1267,
     1650    1101,   198, -1267, -1267,  8477, -1267,  5404, -1267, -1267,   675,
     1651     675,   579,  8594,   994,   993,   983,   998,   675, -1267, -1267,
     1652   -1267, -1267,  9019, -1267,   616, 10212, -1267,   198,  1004, -1267,
     1653    2178, 10298,  9996, -1267, -1267, -1267, -1267,   843,  2973, -1267,
     1654    7742,   687,  5806, -1267, -1267, -1267,  1900,   626,   990,   905,
     1655   10515,  1647,  7582, -1267, 10515, -1267, -1267, -1267, -1267,   627,
     1656   -1267,  1013,   705,   154,  7885, -1267,  8860, -1267, -1267,  7885,
     1657   -1267,  8002,  7885, -1267, -1267,    81, -1267,   640,  1015,   658,
     1658    1021, -1267, -1267,  6061, -1267, -1267,   315, -1267, -1267,  9760,
     1659   -1267,   368,  9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1660   -1267, -1267, -1267, -1267, -1267,  9760, -1267, -1267,  9760,  9760,
     1661    9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,
     1662    9760,  9760,  9760,  9760,  9760,  9760,  3432,   518,  1212, -1267,
     1663   -1267,    84,    84, -1267, -1267,  8119, -1267, -1267,   987,   291,
     1664   -1267,   987, 10055, -1267, -1267,  8828,  6061,  1020, -1267,  8744,
     1665   -1267, -1267,   613, -1267,  1023,  1793,  1025,  1950,   136,   990,
     1666   -1267,    84,    84,   990,   407, -1267,    84,    84,   987, -1267,
     1667   -1267,    84,    84, -1267,   900,  8944,  1956, 10447,   356,   541,
     1668    8944, -1267,  4354, -1267,   990, -1267,  7269, -1267,   126,  7354,
     1669    7354,  1956,  9642,  1003, -1267,   789,  1008,  1010, -1267,  1026,
     1670    9583,   449, -1267,  1114,  1956,  7354,   291,  2178,   291,   687,
     1671     707,   900, -1267, -1267,   766,   900, -1267, -1267, -1267,   705,
     1672   -1267,   900,   198,  9019, -1267,   643,  1041,   647,  1045, -1267,
     1673     940,   198, -1267, -1267,  8477,   198,  1042,  8860,    81, -1267,
     1674    1307, -1267,   471,   481,   905, -1267,   905,  1047,  9760, -1267,
     1675     905, 10447, -1267, -1267,  1056, -1267, -1267, -1267,   291, -1267,
     1676   10373,   946, -1267,  7354,   694,  7667, -1267, -1267,   613,  1052,
     1677    1057,  1900,  2267, -1267, -1267, 10515,  9760, -1267, -1267,  1055,
     1678   -1267, -1267,  1048, -1267,  1055,  1063, 10178,  9760,  1046,  1051,
     1679     117,  1065,  1062,  1070,  1074, -1267,  1081,  1082,  6061, -1267,
     1680    9760, -1267,   658,  1520, -1267, -1267, -1267,    84,    84,  9701,
     1681    9760,  1077, -1267, -1267,   679, -1267,  9760, -1267, -1267,   821,
     1682   -1267, -1267, -1267, -1267,   525,   525,   415,   415,   844,   844,
     1683     844,   844,   338,   338,   853,   823,   831,   841,   886,  9760,
     1684     397,  9019,  1085,  1086,  1087,  1212, -1267, -1267, -1267, -1267,
     1685   -1267,  9019,   691, -1267,  7269, -1267,  6430,  8353, -1267, -1267,
     1686   -1267,  1793,  9019,   856,  1089,  1091,  1092,  1093,  1096,  1098,
     1687    1104, -1267,  3291,  1950, -1267, -1267, -1267, -1267, -1267, -1267,
     1688   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1689   -1267,   987, -1267, -1267, -1267,   990, -1267, -1267, -1267, -1267,
     1690   -1267, -1267, -1267, -1267, -1267, -1267,  1105,  1106, -1267,   225,
     1691    1077,  9642, -1267, -1267, -1267,  9524,  1108, -1267, -1267, -1267,
     1692   -1267,   905,  5524,  1197, -1267, -1267, -1267, -1267,  1095,   225,
     1693   -1267, -1267,   987, -1267, -1267,   987,  1117,   987, -1267, -1267,
     1694   -1267, -1267, -1267, -1267,  6307, -1267,   198, -1267, -1267,   505,
     1695     507,  6307,  1549,  9760,  2098, -1267, -1267,  1099,    38,  1099,
     1696   -1267,   905, -1267,    84, -1267, -1267,  8627,   983, -1267, -1267,
     1697   -1267,   993,  1120,  1115, -1267, -1267,  1122,  1123, -1267,   694,
     1698    1698, -1267,   576, -1267,  2267,   990, -1267, -1267,  1126, 10515,
     1699    7582,  8119,  1129, -1267, -1267,  1125,  1135,  1118, -1267,  9760,
     1700    1141,   190,  1136, -1267,  1142,   291,  1142, -1267, -1267,  1142,
     1701   -1267,  1147,  1152,  1154,  1520, -1267, -1267, -1267,  9524, -1267,
     1702   -1267, -1267,  1163,  9760,   986, -1267,  9760, -1267,   986, -1267,
     1703   -1267,  9760, -1267,   894,   900, -1267, -1267, -1267, -1267, -1267,
     1704   -1267, -1267,   946,  8236, -1267, -1267,  6553,  1171, -1267,   898,
     1705     900, -1267,   920,   936,   900, -1267,   675,  7112, -1267, -1267,
     1706   -1267,  9019,  9019, -1267,  7742,  7742,  1172,  1167,  1168,  1175,
     1707   -1267,   670,   111,  1077, -1267,   986, -1267,  9583, -1267,  9760,
     1708     540, -1267,  5932,  1180,  1181,  9465,  1182,  1185,    -8,    40,
     1709      86,  9760,  1191,   198,  9760,  9760,  1177,   585,  1169, -1267,
     1710   -1267, -1267,  1187, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1711   -1267, -1267,   905,  1195,  9760, -1267,  9019,  9019,    84,  1201,
     1712   -1267,  8711, -1267, -1267,   862, -1267,  2098, -1267, -1267, -1267,
     1713   -1267,  1307, -1267, -1267,  1198, -1267, -1267, -1267, -1267,  1202,
     1714    1698, -1267, -1267,  1196, -1267,  1055, -1267, -1267,  2178,  1210,
     1715   -1267, -1267, -1267,   704,  1217, -1267,   117,  1214,  9760,  1200,
     1716     117,   117,  1224,   950,   900, -1267, -1267,  1026,  9760,  1230,
     1717    1163, -1267,   943, -1267, -1267,  1220, -1267,    78, -1267,  1231,
     1718    1220, -1267,  1234, -1267, -1267,   987,  1236,  6184,  1235,  1239,
     1719    1241, -1267, -1267,  1238, -1267, -1267,   987, -1267, -1267, -1267,
     1720   -1267,   987,  9760,  9760,   946,  1243, -1267, -1267, -1267, -1267,
     1721   -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9760,  9760,  1244,
     1722    1248,  1220, -1267, -1267,   905, -1267, -1267, -1267,  7070,  7582,
     1723    9760,  9760,  1318,  9760, -1267,  1233, -1267,  1246, -1267,  1250,
     1724    9760,  1254,  9760,   938,  1255,    47,    84,  1805, -1267, -1267,
     1725    5524,  1256,   554, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1726   -1267, -1267,  9281, -1267,  7742,  1260, -1267, -1267,  7582,   555,
     1727     561, -1267,  1273,  1262,   705,  1283, -1267,   256, -1267, -1267,
     1728   -1267, -1267,   987,  1282, -1267, -1267,  1288,  1321, -1267, -1267,
     1729    1321,  1321,   986,  1292,  1699,  1866, -1267,  1295, -1267,  9019,
     1730   -1267, -1267, -1267, -1267,  1298, -1267,  9019,  9019,  9019, -1267,
     1731   -1267,  1300, -1267,  1301,  1310,  1311,   725,  7429,  7548, -1267,
     1732   -1267, -1267, -1267,  1305, -1267,  7817,   709,   755,  1317,   758,
     1733    5667, -1267, -1267, -1267,   582, -1267,   768,  1319,  1323,   198,
     1734    1369,   935, -1267, -1267,  9760, -1267,  9465,  9760, -1267, -1267,
     1735   -1267,  1320,  1326, -1267, -1267, -1267,  1324, -1267, -1267, -1267,
     1736   -1267, -1267, -1267,  7582,   705,  1330, -1267,  1313,   705,  9019,
     1737   -1267, -1267, -1267,   986, -1267, -1267, -1267, -1267, -1267, -1267,
     1738   -1267, -1267, -1267, -1267, -1267, -1267,  1337,  1340, -1267, -1267,
     1739   -1267, -1267, -1267, -1267, -1267,  1343, -1267,  1342, -1267,  9465,
     1740     276,  9760,  9465, -1267,  1346,  9760, -1267,   281,  1361,  1363,
     1741   -1267, -1267,  1355,  1356,  1339, -1267,   901, -1267, -1267, -1267,
     1742    1956,  2178,  1347, -1267,   401,  9760, -1267,   783, -1267,  1220,
     1743     986,   986,  1362,  1364,  1365,  1367, -1267, -1267,  7742,  1357,
     1744   -1267,  1438,  9760,  1352, -1267, -1267,  9375, -1267,   791, -1267,
     1745    1360,  9465,  1368, -1267, -1267,  1386, -1267,  1389, -1267,  1407,
     1746    1409, -1267,  1376,  7582, -1267, -1267, -1267,   705,   291,  1403,
     1747    1382,  1405,  1404,  1220,  1220, -1267, -1267, -1267, -1267, -1267,
     1748    9465,   240, -1267,   474, -1267, -1267,  6917, -1267, -1267,  1385,
     1749    9760, -1267,  9760,  6917,   198,  8860,   198,  8860,  1410, -1267,
     1750    1411, -1267, -1267,  1408, -1267, -1267,   802, -1267, -1267, -1267,
     1751   -1267,  1422,  1423, -1267,  9760,  9760, -1267, -1267,   979,    59,
     1752   -1267, -1267,  1390, -1267,   979, -1267, -1267,  2042,   291, -1267,
     1753   -1267,   198,  8860,   198,  8860,  1427,  1412,   291, -1267, -1267,
     1754   -1267, -1267,  9375,  1425,   979,  6995,  9760,  9285,  1426,   979,
     1755    1435,  2042,  2360, -1267, -1267, -1267,  1436, -1267, -1267, -1267,
     1756   -1267,  8119, -1267, -1267, -1267,  9148, -1267,  9375, -1267, -1267,
     1757    1416,  9058, -1267, -1267,  9285,   198,  2360,   198,  1441,  1445,
     1758     814, -1267,  9148, -1267, -1267, -1267,  9058, -1267, -1267, -1267,
     1759     198,   198, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267
    17551760};
    17561761
     
    17581763static const yytype_int16 yypgoto[] =
    17591764{
    1760    -1333,  3826,  2645, -1333,   849, -1333,   762,   867,  -112,   956,
    1761    -1333,   580,  -517,  -490,  -904,  -999, -1333,   -62,  4003,     0,
    1762    -1333,   676,   547,   572,   581,   571,  1057,  1058,  1059,  1055,
    1763     1061, -1333,   963,  -485,  4467,  -910, -1333, -1333,   665,   184,
    1764     -691,   319, -1333,   356, -1333,   440, -1283, -1333, -1333,   176,
    1765    -1333, -1072, -1062,   285, -1333, -1333, -1333, -1333,   107, -1332,
    1766    -1333, -1333, -1333, -1333, -1333, -1333,   359, -1109,    16, -1333,
    1767     -288, -1333,   535,   330, -1333,   208, -1333,  -237, -1333, -1333,
    1768    -1333,   596,  -693, -1333, -1333,     9,  -933,   372,  2238, -1333,
    1769    -1333, -1333,   -57, -1333,   110,    36,  -194,  1419,  3198, -1333,
    1770    -1333,    12,    61,  1486,  1572, -1333,  1265, -1333, -1333,    21,
    1771     1950, -1333,  2034,  1735, -1333, -1333, -1333,  -611, -1333,   975,
    1772      976,   584,   761,   136, -1333, -1333, -1333,   967,   755,  -456,
    1773    -1333,  -528,  -433,   832, -1333, -1333,  -922,  -915,  -420,  1560,
    1774     1084,    19, -1333,   388,   467,  -359,  -203,  -145,   706,   811,
    1775    -1333,  1028, -1333,  2348,   798,  -442,   958, -1333, -1333,   740,
    1776    -1333,  -233, -1333,   118, -1333, -1333, -1333, -1243,   466, -1333,
    1777    -1333, -1333,  1188, -1333,    -1, -1333, -1333,  -832,  -108, -1152,
    1778     -131,  3669, -1333,  4255, -1333,   951, -1333,  -125,   120,  -178,
    1779     -173,  -170,     7,   -41,   -40,   -39,   619,    -5,    25,    46,
    1780       -4,  -167,  -166,  -158,  -157,  -296,  -519,  -516,  -510,  -538,
    1781     -311,  -552, -1333, -1333,  -514,  1111,  1112,  1114,  1610,  4174,
    1782     -565,  -560,  -546,  -522,  -389, -1333,  -475,  -720,  -716,  -715,
    1783     -584,  -222,  -287, -1333, -1333,    47,   102,   -51, -1333,  3453,
    1784      108,  -602,  -196
     1765   -1267,  4051,  2784, -1267,   133, -1267,  1353,   867,  -240, -1267,
     1766   -1267,   504,  -528,  -489,  -834, -1001, -1267,   -77,  4776,     0,
     1767   -1267,   793,   489,   531,   722,   534,   999,  1001,  1005,  1007,
     1768    1002, -1267,   711,  -584,  4023,  -739, -1267, -1267,   606,  -227,
     1769    -674,  -263, -1267,   335, -1267,   382,  -963, -1267, -1267,   119,
     1770   -1267,  -732, -1049,   228, -1267, -1267, -1267, -1267,    54, -1266,
     1771   -1267, -1267, -1267, -1267, -1267, -1267,   302, -1050,    23, -1267,
     1772    -171, -1267,   482,   277, -1267,   153, -1267,  -355, -1267, -1267,
     1773   -1267,   538,  -612, -1267, -1267,     9,  -990,   219,  2319, -1267,
     1774   -1267, -1267,  -124, -1267,   110,    36,  -188,  1213,  3869, -1267,
     1775   -1267,    12,    61,   970,  1623, -1267,  1495, -1267, -1267,    21,
     1776    1827, -1267,  2153,  1937, -1267, -1267, -1267,  -641, -1267,   911,
     1777     914,   521,   695,   -93, -1267, -1267, -1267,   906,   690,  -521,
     1778   -1267,  -507,  -417,  -420, -1267, -1267,  -914,  -941,  -147,   -54,
     1779    1019,    19, -1267,  2311,   381,  -366,  -185,  -122,   649,   745,
     1780   -1267,   964, -1267,  2435,  1823,  -463,   895, -1267, -1267,   693,
     1781   -1267,  -225, -1267,   103, -1267, -1267, -1267, -1263,   408, -1267,
     1782   -1267, -1267,  1139, -1267,    42, -1267, -1267,  -832,   -94, -1230,
     1783    -162,  2364, -1267,  3117, -1267,   908, -1267,  -103,   120,  -184,
     1784    -183,  -178,     7,   -40,   -39,   -36,  1505,     4,    32,    71,
     1785      92,  -173,  -172,  -170,  -168,  -306,  -510,  -503,  -496,  -559,
     1786    -313,  -498, -1267, -1267,  -514,  1064,  1072,  1076,  1925,  4399,
     1787    -524,  -566,  -556,  -543,  -548, -1267,  -508,  -723,  -722,  -717,
     1788    -582,  -166,  -229, -1267, -1267,   283,   102,     6, -1267,  3380,
     1789     108,  -611,  -462
    17851790};
    17861791
     
    17881793   positive, shift that token.  If negative, reduce the rule which
    17891794   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1790 #define YYTABLE_NINF -527
     1795#define YYTABLE_NINF -529
    17911796static const yytype_int16 yytable[] =
    17921797{
    1793       49,   113,   149,   150,   151,   449,   396,    97,   266,   425,
    1794      114,   397,    69,   757,   398,   436,    50,   399,   400,   732,
    1795      949,    76,   380,   381,   950,   951,   401,   402,  1049,   831,
    1796      814,   143,    49,   806,   934,   854,   602,   116,   152,    97,
    1797      693,   805,   743,   147,    69,   704,   717,   807,    50,    49,
    1798      722,   597,   784,    76,   259,   407,   160,   813,  1360,    31,
    1799      404,    70,  1118,   185,   664,   666,   208,   122,   153,    49,
    1800      192,   808,   904,   215,   802,   621,   225,   803,   218,   625,
    1801     1148,  1149,   201,   804,   563,   158,   396,  1165,  1150,   154,
    1802       31,   397,   422,    70,   398,   522,   162,   399,   400,   844,
    1803      844,   279,   106,   106,   340,   113,   401,   402,   374,  1159,
    1804       63,  1227,   167,   113,  1173,   844,   265,   270,   564,   289,
    1805       96,   589,  1182,  1183,   375,   260,  1056,   211,   261,   471,
    1806      473,   721,   202,   408,   106,  1282,   168,   123,  -239,  -239,
    1807      404,   257,    63,   149,   150,   151,   308,   147,    31,   158,
    1808      734,   937,    96,  1510,   160,   113,   343,   165,  1441,   208,
    1809      162,   280,   251,   148,   408,   406,   370,  1048,   501,    96,
    1810      949,   106,   846,   844,   950,   951,  1174,   142,   660,   152,
    1811     1525,   405,   324,   188,   185,   185,    96,   863,   711,    96,
    1812      802,   338,   160,   803,   845,   845,  1222,   669,   467,   804,
    1813      265,   908,  1509,   898,   658,   673,  1283,   817,    49,   153,
    1814      845,  -239,   472,   824,   788,   160,   251,   330,   408,    31,
    1815      208,   165,  1520,   149,   150,   151,    31,   439,  1422,  1524,
    1816      154,  1312,  1175,  1315,  1317,  1177,   435,   472,   308,   806,
    1817      427,   693,  1380,  1381,   430,   916,   998,   985,    31,   459,
    1818       49,    31,   144,   807,   328,   431,   705,    97,   270,   714,
    1819     1155,   405,    69,   270,   265,   265,    50,    96,   845,   974,
    1820      113,    76,   160,   997,   324,  1059,    76,   808,   655,    96,
    1821      802,   438,  1178,   803,   602,   647,  1156,  1150,   582,   804,
    1822      479,   416,  1452,   408,  1176,   308,   793,   496,   477,   384,
    1823      408,  1422,  1232,   704,   395,   188,   430,  1072,   308,   484,
    1824      146,    70,  1426,   662,  1382,   385,   432,   431,  1156,   667,
    1825      815,   155,   594,   822,   566,   594,  1468,  1164,    96,   147,
    1826     1233,   517,   170,  1148,  1149,  1165,   370,   840,  1179,   113,
    1827       96,  1150,   519,   343,   158,   443,   328,   595,   613,   251,
    1828      330,   655,   106,   814,   727,   162,  1049,   806,   467,   693,
    1829       63,  1496,   618,  1498,   456,   468,   618,  1380,  1381,   693,
    1830       96,   807,    56,   115,   728,   581,   285,   467,   432,   586,
    1831      693,   572,   622,   180,   475,   467,   626,   573,   726,    41,
    1832       42,   589,   200,   265,  1480,   808,   589,   831,   619,   656,
    1833     1485,   818,   623,   185,    56,   821,  1063,  1367,  1426,   211,
    1834      370,   172,   817,  1426,   738,   510,   165,   376,   141,  -294,
    1835     1505,   265,  1097,   308,   308,  1512,   838,   265,   969,   618,
    1836      841,   246,   110,  1426,   110,   884,    76,  1305,   209,  1391,
    1837     1426,   219,  1098,   249,  1405,    41,    42,    41,    42,    96,
    1838      113,   591,  1095,   252,  1417,    76,   704,  1306,  1406,   324,
    1839      324,  1150,  -522,    76,  1411,  1412,   387,   596,   265,   251,
    1840      240,   243,   656,   750,  1116,   755,   265,  1104,   618,   515,
    1841       49,   -12,   388,   370,   710,  1083,   678,    97,   549,   550,
    1842      113,  1165,    69,   855,  1453,  1048,    50,   682,  1165,   116,
    1843      602,    76,   308,  1221,   113,   978,   674,   308,  1454,   308,
    1844      308,   389,   573,   998,   705,   996,   867,   741,   391,   899,
    1845      856,   343,   633,   188,   484,   468,   324,   390,   484,   834,
    1846      211,   328,   328,   835,   392,   900,   695,   865,   517,   857,
    1847      517,    70,   696,   517,   468,   324,   517,   262,   414,   519,
    1848     1165,   519,   468,   895,   519,  -446,   901,   519,     2,   205,
    1849        4,     5,     6,     7,   489,   566,   566,   490,   712,  1147,
    1850      899,   433,   902,   308,   713,  1343,   574,  1341,   408,   693,
    1851      693,   441,   106,   618,   343,   723,  1060,   613,   702,  1104,
    1852       63,   724,   437,   595,   898,   595,   795,   737,   328,  -447,
    1853       96,  1136,  1138,   738,   596,   901,   878,   663,   665,   324,
    1854      836,  1213,   738,   618,   837,   467,   938,   328,   618,   791,
    1855      613,  1061,    56,    35,   618,    36,   996,   618,   618,   275,
    1856      453,  1162,   880,   833,   693,   693,   277,  1001,   738,  1162,
    1857     1296,   913,  1298,   618,  1008,   265,   738,  1163,   847,   830,
    1858      331,   516,  1390,   836,   586,  1288,  1297,  1079,  1299,    37,
    1859      839,   862,  1344,    40,  1053,  -112,   110,   705,   161,  -112,
    1860     1257,  1258,    41,    42,   897,   113,   438,   546,   892,    41,
    1861       42,   328,   193,   547,   548,   216,   515,   278,   226,   963,
    1862      332,   515,   704,    76,   515,   964,  1091,   577,   799,   408,
    1863      594,   618,   918,   613,   551,   552,    45,    46,  1014,   710,
    1864      710,   678,   396,   801,  1330,   596,   333,   397,  1331,    76,
    1865      398,   832,   682,   399,   400,   334,   591,  1080,   976,  1209,
    1866      335,  1458,   401,   402,   696,   573,   343,  1460,  1458,  1461,
    1867      741,   741,   868,   496,   408,  1337,  1338,   336,   778,   484,
    1868      211,   738,   738,     2,   205,     4,     5,     6,     7,   589,
    1869      369,   553,   554,   111,   211,   635,   161,   404,  1354,   949,
    1870     1340,  1345,   373,   950,   951,  1408,   738,   738,   371,   382,
    1871     1292,  1405,   468,   566,     2,   205,     4,     5,     6,     7,
    1872     1506,   386,   618,  1507,   981,   671,   555,   556,   896,   595,
    1873     1140,  1427,   110,   871,   161,   408,  1211,   738,   468,  1109,
    1874     1215,   595,  1110,   227,  1111,    41,    42,   693,    35,   394,
    1875       36,   697,  1333,   423,   693,   693,   693,   161,   977,   801,
    1876      596,   129,  1474,   130,   131,   132,   557,   558,  1475,   440,
    1877      110,  1530,   139,   237,    41,    42,   702,   573,   565,    35,
    1878      408,    36,    56,    41,    42,   211,    45,    46,   516,  1121,
    1879      308,   408,   424,   516,   214,   406,   516,    48,   112,  1132,
    1880     1160,   408,    69,   446,  1135,   716,   594,   720,  1407,   238,
    1881      241,    76,   343,    -3,   239,   330,   408,   693,   405,   343,
    1882      892,  -370,   892,  -399,   795,  1419,   112,   112,   110,    48,
    1883      139,   140,   480,   705,   113,   457,   175,   416,   651,   408,
    1884       48,    41,    42,   110,   500,   214,    48,   918,   918,   801,
    1885     1109,    70,   710,  1110,    48,  1111,    41,    42,   113,   308,
    1886       48,   596,   110,    48,   139,   140,    48,  1084,   458,   655,
    1887      678,  1137,   242,   594,   895,    41,    42,   289,   371,   112,
    1888      112,   682,   741,   504,  1226,   175,   509,   214,   175,   506,
    1889      967,   964,   106,   484,  1086,   324,   522,  1478,  1419,   729,
    1890       63,   730,   559,    48,   731,   560,    48,   735,  1204,   562,
    1891      705,   343,   938,    48,   544,   545,   938,   938,   561,  1218,
    1892     1492,   408,   740,   337,   408,   477,   330,   408,  -295,   702,
    1893       45,    46,   618,   618,   583,     8,     9,    10,    11,    12,
    1894     1062,    -3,   896,   461,    48,   648,   876,   830,   214,   544,
    1895      308,   851,   371,  1350,  1351,   883,    48,  1400,   964,   885,
    1896      106,  1066,  1167,  1066,    31,  1380,  1381,   328,   649,  1104,
    1897      650,    76,   596,   652,    37,   438,   182,   183,    40,  1228,
    1898     1229,    48,    48,   653,   544,   654,   214,    41,    42,   113,
    1899      656,   214,    34,   657,   892,   897,   175,    48,   659,   892,
    1900      903,   917,   905,   594,   256,    48,   453,   684,   918,    45,
    1901       46,    70,   683,   890,    48,   408,   265,    48,   686,   832,
    1902      688,    45,    46,  -243,   112,   678,   762,   763,   110,   725,
    1903     1303,   815,   330,   594,   891,  1109,   682,   796,  1110,   112,
    1904     1111,    41,    42,   112,  1275,  1276,  1277,    48,   112,   714,
    1905      175,   739,   106,   764,   765,   343,   747,   175,   770,   771,
    1906      468,    48,    48,  -296,   766,   767,   768,   769,    48,  1314,
    1907        8,     9,    10,    11,    12,    48,   214,  -297,     8,     9,
    1908       10,    11,    12,   798,     8,     9,    10,    11,    12,   809,
    1909       37,   -14,   182,   183,    40,   -15,   270,   113,    37,    31,
    1910      173,   174,    40,    41,    42,   852,   218,    31,   853,  1037,
    1911      859,    41,    42,    31,   896,   879,   881,   886,   308,   896,
    1912     1361,  -420,   906,  -526,  1361,   175,    48,    34,   921,   593,
    1913       69,   594,   618,   713,   929,    34,   113,    45,    46,    76,
    1914      931,    34,   175,    48,    48,  1084,   175,     8,     9,    10,
    1915       11,    12,   759,   760,   761,   111,   214,   211,   936,   935,
    1916       48,   942,    56,   943,    48,   702,   944,   945,   946,   947,
    1917     1058,   635,  1086,   971,   634,   972,    31,  1019,   973,    70,
    1918      961,  1403,   987,   988,   989,   618,   618,   990,   991,   992,
    1919       48,   993,  -408,   270,  -407,    74,  1518,   214,   308,   106,
    1920       48,  1016,  1050,  1073,    34,  1074,  1052,  1075,  1076,  1082,
    1921     1167,  1092,  1093,   738,  1096,   891,   751,  1068,    48,    76,
    1922      106,   756,   110,  1442,    48,  1099,   956,    74,    63,  1109,
    1923     1085,   113,  1110,  1094,  1111,    41,    42,  1101,   106,  1102,
    1924     1084,   396,   702,  1103,  1106,  1130,   397,  1151,   565,   398,
    1925      408,  1154,   399,   400,   438,  1168,    45,    46,  1152,    70,
    1926      112,   401,   402,  1316,   221,    48,    37,  1086,  1169,   461,
    1927       40,  1153,  1170,    48,   635,  1171,  1172,    48,  1180,    41,
    1928       42,    48,  1264,  1265,   112,  1267,   112,  1491,  1184,   265,
    1929     1191,    -3,  1272,  1186,  1274,   404,  1196,  1199,    37,  1201,
    1930      106,   489,    40,  1205,  1210,    43,   618,  1402,   468,  1214,
    1931     1212,    41,    42,    45,    46,   214,  1217,  1181,  1230,   655,
    1932     1223,   112,    56,  1234,  1236,  1238,   112,  1266,  1239,  1240,
    1933     1241,   113,  1243,   106,  1287,  1250,   864,   709,   866,  1259,
    1934     1084,  1260,  1269,   214,  1270,    45,    46,  1294,   214,    66,
    1935      117,   351,  1271,   957,   113,  1300,   110,  1273,   139,   140,
    1936     1304,   113,  1281,   113,  1302,   113,  1167,  1086,  1019,    41,
    1937       42,  1308,  1309,  1167,   112,    76,  1310,  1313,   149,   150,
    1938      151,    66,    76,  1318,  1320,  1326,  1327,  1328,   912,  1329,
    1939       48,  1277,    48,   175,  1339,  1490,  1336,   850,   159,  1465,
    1940      113,  1465,   113,  1346,  1357,  1347,  1393,  1355,   175,  1356,
    1941     1466,    48,  1466,   113,  1363,    70,   405,   214,   220,  1490,
    1942     1490,   175,    70,   877,   445,  1167,    48,   160,  1374,   308,
    1943      112,   214,  1364,   106,    76,  1375,  1465,  1037,  1465,    48,
    1944      656,   112,    48,   112,  1490,    74,  -409,  1466,  1389,  1466,
    1945       74,   370,  1378,  1386,   258,  1395,   106,  1397,  1398,  1399,
    1946     1404,  1418,  1413,   106,   468,   324,  1414,  1415,   209,   219,
    1947      110,   468,   139,   140,    70,    48,  1416,  1331,  1428,   112,
    1948     1262,   112,  1430,    41,    42,   112,   228,  1432,  1423,   229,
    1949       56,  1434,   233,   112,   235,  1436,   329,  1438,  1445,  1440,
    1950     1446,   244,  1447,   175,   258,   348,    48,    48,  1085,   718,
    1951     1448,  1459,  1469,  1471,   719,   106,    37,  1476,   173,   174,
    1952       40,    48,   214,   468,  1473,  1477,  1484,  1500,  1499,    41,
    1953       42,  1504,  1511,  1353,   403,  1513,  1515,   328,  1521,   475,
    1954     1528,   970,  1529,   874,   221,  1185,   772,   775,   773,   421,
    1955      774,   975,   426,   428,   776,   369,  1108,   159,  1286,  1479,
    1956     1392,  1531,   986,  1348,  1216,   437,  1365,  1349,   212,  1462,
    1957       56,     8,     9,    10,    11,    12,  1190,   231,   444,   907,
    1958      887,   888,   447,  1198,   448,   909,  1379,   544,  1067,  1387,
    1959     1071,   790,  1105,   455,  1015,  1081,    48,   858,   707,    66,
    1960       31,   923,  1295,  1085,   469,   932,   780,   781,    48,   782,
    1961       74,     0,     0,     0,   476,     0,     0,     0,     0,   212,
    1962        0,     0,   428,     0,   351,     0,   506,   228,    34,    74,
    1963        0,     0,     0,  1425,     0,  1100,     0,    74,  1429,     0,
     1798      51,   115,   398,   399,   759,   151,   152,    99,   400,   153,
     1799     116,   745,    71,   401,   402,   451,   403,   427,   404,   951,
     1800     952,    78,   734,    52,   268,   953,   409,   719,   856,   808,
     1801    1051,   724,  1167,   833,    51,   438,   604,   118,   815,   809,
     1802    1362,    99,   503,   599,   906,   149,    71,   382,   383,   154,
     1803     819,    51,   810,   936,   786,    78,   826,    52,   162,   666,
     1804     668,    72,   662,   706,  1152,   187,  1175,   203,   210,   124,
     1805     517,    51,   194,   816,   408,   217,   145,   155,   227,    33,
     1806     220,   671,   398,   399,   406,   804,   125,   160,   400,   675,
     1807    1150,  1151,   805,   401,   402,    72,   403,   807,   404,   806,
     1808     473,   475,   108,   108,   910,  -239,  -239,   115,   424,   848,
     1809      65,  1229,  1284,   261,  1177,   115,   156,   204,   267,   272,
     1810      98,   474,   846,   846,   865,    33,   723,   262,  1176,   213,
     1811     263,    33,    33,   469,  1120,   623,   108,   820,   846,   627,
     1812    1443,   823,    33,   259,    65,   736,   151,   152,   310,   149,
     1813     153,   160,  1424,   410,    98,   565,   162,   115,   345,   167,
     1814    1179,   210,   840,   342,   406,   150,   843,  1234,   372,   951,
     1815     952,    98,   900,   108,   146,   953,  1178,    33,  -239,   591,
     1816     713,  1161,   918,  1285,   326,   190,   187,   187,    98,   566,
     1817     154,    98,   177,   340,   162,  1235,   846,   157,   665,   667,
     1818     291,   804,   267,   253,   418,   410,   410,  1180,   805,   790,
     1819      51,  1157,   847,   847,   479,   806,   410,   162,   155,    58,
     1820     117,  1512,   210,   167,   660,  1424,   151,   152,   847,   441,
     1821     153,  1314,   939,  1317,  1319,   808,   144,  1158,   437,   474,
     1822     310,   177,   429,   879,   177,   809,   432,  1061,  1527,   817,
     1823    1050,   596,    51,    58,   999,   819,   330,   156,   810,    99,
     1824     272,   716,   728,  1152,    71,   272,   267,   267,   729,    98,
     1825     148,   976,   115,    78,   162,    52,   326,   517,    78,   407,
     1826    1167,    98,   517,   440,   604,   517,   847,   211,   730,  1000,
     1827     221,   804,   481,   469,   461,  1184,  1185,   310,   805,   498,
     1828    1074,   649,   657,   987,  1099,   806,   397,   190,   432,  1065,
     1829     310,   486,   469,    72,   707,   695,   172,  1152,   434,   886,
     1830     469,   706,  1382,  1383,  1100,   281,   568,  1382,  1383,   664,
     1831      98,   149,   445,   519,   164,   669,   169,   182,   372,   780,
     1832    1454,   115,    98,  1150,  1151,   345,   160,   584,   330,   597,
     1833     615,   458,   177,   808,   108,  1097,   795,  1181,  1051,   407,
     1834     170,   972,    65,   809,   620,   112,  1158,   470,   620,  1224,
     1835    1307,   977,    98,  1003,   202,   657,   810,   583,    43,    44,
     1836     434,   588,   988,  -294,   624,   282,   477,  1470,   628,   112,
     1837    1308,   376,   174,   248,  1384,   267,   816,   842,   164,  1393,
     1838     621,   833,    43,    44,   625,   187,   177,   377,   696,  1482,
     1839    1166,   213,   372,   177,   112,  1487,   141,   142,   167,   876,
     1840     253,   332,  1498,   267,  1500,   310,   310,    43,    44,   267,
     1841     752,   620,   555,   556,   254,  1507,  1167,  1152,    78,   251,
     1842    1514,   439,   112,  1167,  1138,  1140,  1106,  -524,    33,   591,
     1843     253,    98,   115,   593,   591,    43,    44,    78,   244,   386,
     1844     264,   326,   326,  1082,  1419,    78,  1085,   557,   558,   598,
     1845     267,    58,   836,   -12,   706,   387,   837,  1118,   267,  1369,
     1846     620,   177,    51,   757,   333,   372,   712,   869,   680,    99,
     1847     940,   334,   115,   433,    71,  1167,  1223,   658,   177,   389,
     1848     604,   118,   177,    78,   310,    52,   115,   998,  -448,   310,
     1849     491,   310,   310,   492,  1215,   390,   695,   740,   857,   743,
     1850     824,  1407,   596,   345,  1511,   190,   486,   470,   326,   416,
     1851     486,   971,   213,   330,   330,  1408,  1413,  1414,   551,   552,
     1852     519,   391,   519,    72,  1522,   519,   470,   326,   519,  -449,
     1853     469,  1526,   435,   867,   470,   433,  1000,   392,  1106,   253,
     1854     332,   410,   443,   900,   858,   980,   635,   568,   568,   576,
     1855     658,   410,   707,  1259,  1260,   310,   915,   897,  1050,   277,
     1856     521,  1147,  1148,   859,   108,   620,   345,  1149,   393,   615,
     1857     704,   901,    65,   164,  1455,   597,  1343,   597,   797,  1039,
     1858     330,   903,    98,   579,   394,   410,   598,   902,  1456,   696,
     1859      39,   326,   175,   176,    42,   620,   279,   904,   998,   330,
     1860     620,   793,   615,    43,    44,   901,   620,   903,   280,   620,
     1861     620,   567,   518,   410,   695,   835,  1195,  1196,   335,    47,
     1862      48,  1062,   574,  1063,   695,   620,   548,   267,   575,   371,
     1863     849,   832,   549,   550,  1428,   695,   588,   838,  1345,   287,
     1864    1164,   839,   841,   864,  1010,     2,   207,     4,     5,     6,
     1865       7,  1392,    43,    44,  1164,  1298,  1165,   115,   440,   336,
     1866     894,  1300,   337,   330,  1055,     8,     9,    10,    11,    12,
     1867    1290,  1299,   838,   676,   338,    78,  1081,  1301,   512,   575,
     1868     378,    58,   740,   620,   920,   615,  1093,   371,   398,   399,
     1869     706,   712,   712,   680,   400,   803,    33,   598,  1346,   401,
     1870     402,    78,   403,   834,   404,   707,   375,   696,   593,   384,
     1871     697,   388,    37,  1016,    38,   684,   698,   696,   345,   396,
     1872     714,   725,   743,   743,    36,   498,   715,   726,   696,   177,
     1873    1428,   486,   213,   408,   739,  1428,  1462,   880,  1463,  1356,
     1874     740,   882,  1172,   740,   177,   425,   213,   740,   951,   952,
     1875     426,   742,   899,   410,   953,  1428,   673,   177,   448,    47,
     1876      48,  1409,  1428,  -372,   470,   568,  -112,   521,   291,   521,
     1877    -112,   406,   521,   965,   620,   521,   983,    -3,  1421,   966,
     1878     898,   597,   699,  -401,  1068,   978,  1068,   919,  1142,   596,
     1879     470,   698,  1509,   597,  1460,    47,    48,   591,  1211,  1321,
     1880     870,  1460,   410,  1339,   575,   459,  1323,  1324,  1325,   740,
     1881     979,   803,   598,     2,   207,     4,     5,     6,     7,   518,
     1882    1335,  1332,  -295,   502,   518,  1333,   460,   518,   704,     8,
     1883       9,    10,    11,    12,   695,   695,   940,   213,   482,   177,
     1884     940,   940,   310,   112,   229,   141,   142,    50,   114,  1340,
     1885    1480,  1421,  1342,  1508,    71,   740,    43,    44,   740,   873,
     1886      33,   410,  1347,    78,   345,   731,   506,   732,   740,  1368,
     1887     733,   345,   894,   737,   894,  1162,   797,  1410,   114,   114,
     1888      37,    50,    38,  1407,   852,  1429,   115,   511,    36,   695,
     1889     695,   740,    50,   418,   653,   410,  1476,   524,    50,   920,
     1890     920,   803,  1477,    72,   712,  1213,    50,  1039,  1532,  1217,
     1891     115,   310,    50,   598,   575,    50,   553,   554,    50,  1086,
     1892     969,   966,   680,  1266,  1267,   561,  1269,   696,   696,   559,
     1893     560,   114,   114,  1274,   743,  1276,   479,   332,   410,  1494,
     1894     684,   707,   562,   657,   108,   486,  1088,   326,   897,   817,
     1895     332,   596,    65,   563,  1305,    50,   332,   410,    50,   112,
     1896    -296,   141,   142,   345,   564,    50,   407,     8,     9,    10,
     1897      11,    12,    43,    44,  1206,  1352,  1353,   878,  1277,  1278,
     1898    1279,   704,   696,   696,   620,   620,   885,  1123,  1106,   410,
     1899     887,  1134,  1064,   410,   898,   339,    50,   112,    33,   832,
     1900    1402,   966,   310,  1355,  1111,  1382,  1383,  1112,    50,  1113,
     1901      43,    44,   108,  1137,  1169,   596,  1230,  1231,   707,   330,
     1902     764,   765,   230,    78,   598,   231,    36,   440,   235,  1139,
     1903     237,   596,   659,    50,    50,  1294,   585,   246,  1228,   650,
     1904     112,   115,    -3,  1220,  1363,   410,   894,  1111,  1363,    50,
     1905    1112,   894,  1113,    43,    44,   651,  1381,    50,   508,  1389,
     1906     920,    58,   652,    72,   766,   767,    50,   654,   267,    50,
     1907     655,   834,   695,   772,   773,   656,   114,   680,   661,   695,
     1908     695,   695,   258,   546,   547,     2,   207,     4,     5,     6,
     1909       7,   114,   685,   686,  1388,   114,   690,    39,   688,    50,
     1910     114,    42,  -243,  1427,   108,   716,   727,   345,  1431,   741,
     1911      43,    44,   470,    50,    50,   749,   798,   -14,   546,   800,
     1912      50,   811,   -15,  -297,   854,   861,   855,    50,  1295,  1087,
     1913       8,     9,    10,    11,    12,   881,    45,  1453,   658,   883,
     1914     888,   931,   695,   899,    47,    48,   908,  1444,   272,   115,
     1915    -422,  -528,    37,   546,    38,   715,   923,   933,   220,   944,
     1916     937,    33,   945,   230,   946,   696,   898,   938,   947,   684,
     1917     310,   898,   696,   696,   696,   948,   949,   963,    50,   973,
     1918     974,   975,    71,   989,   620,   990,   991,   992,   115,    36,
     1919     993,    78,   994,    68,   119,    50,    50,  1086,   995,  -410,
     1920    -409,  1060,     8,     9,    10,    11,    12,  1018,  1052,   213,
     1921    1054,  1058,    50,   893,  1075,  1076,    50,   704,  1077,  1078,
     1922    1084,    58,  1521,  1094,  1088,   740,   636,    68,  1521,  1095,
     1923     496,    72,  1096,    33,  1098,   696,  1101,   620,   620,  1521,
     1924     958,  1103,    50,  1521,   161,   272,  1104,  1405,  1105,   525,
     1925     310,   108,    50,   526,   527,   528,  1520,   768,   769,   770,
     1926     771,    36,  1169,  1108,   222,  1132,  1153,  1154,  1155,  1156,
     1927      50,    78,   108,  1170,  1171,  1173,    50,   529,  1174,   530,
     1928      65,   531,   532,   115,  1182,  1188,    -3,   398,   399,  1193,
     1929     108,  1186,  1086,   400,   704,  1198,  1203,  1201,   401,   402,
     1930     260,   403,   230,   404,   235,   567,   440,   410,   491,  1207,
     1931    1214,    72,   114,    47,    48,  1212,  1216,    50,  1219,  1088,
     1932    1232,   761,   762,   763,   684,    50,  1225,  1236,  1238,    50,
     1933    1240,  1241,  1245,    50,   113,  1242,   114,  1243,   114,  1252,
     1934    1261,   267,   331,   112,  1262,   141,   239,  1268,  1183,  1271,
     1935     260,   350,   108,  1493,  1296,  1289,    43,    44,   620,  1404,
     1936     470,    39,  1272,   184,   185,    42,  1273,   211,   221,   406,
     1937    1275,  1283,  1302,   114,    43,    44,  1304,  1306,   114,   909,
     1938     405,  1310,   240,   115,  1311,   108,  1312,   241,  1315,    58,
     1939     230,  1320,  1086,   657,  1322,   423,  1328,  1329,   428,   430,
     1940     892,  1338,   410,   161,  1330,  1331,   115,  1087,    47,    48,
     1941    1341,  1279,  1348,   115,  1357,   115,  1349,   115,  1169,  1088,
     1942    1358,   893,  1359,  1365,   446,  1169,   114,    78,   449,  1366,
     1943     450,   151,   152,  1376,    78,   153,  1377,  -411,  1380,   457,
     1944    1391,  1395,    50,  1397,    50,    68,  1406,  1492,  1399,  1400,
     1945     471,  1467,   115,  1467,   115,  1401,  1415,  1333,  1416,  1417,
     1946     478,  1418,  1420,    50,   439,   115,  1425,    72,   430,    58,
     1947     970,  1492,  1492,   177,    72,    76,  1430,  1169,    50,   162,
     1948    1434,   310,   114,  1436,  1432,   108,    78,  1438,  1467,  1440,
     1949    1467,    50,  1442,   114,    50,   114,  1492,  1447,  1448,  1449,
     1950    1450,  1461,  1087,   372,  1471,  1473,  1486,  1475,   108,    76,
     1951       8,     9,    10,    11,    12,   108,   470,   326,  1478,  1479,
     1952    1501,  1187,   959,   470,  1506,  1513,    72,    50,  1502,  1515,
     1953    1517,   114,  1523,   114,   260,  1530,   163,   114,   589,  1531,
     1954     774,    33,  1011,   775,   617,   114,   223,   778,   776,  1110,
     1955     195,   777,  1288,   218,  1481,  1394,   228,   622,    50,    50,
     1956    1533,   622,  1351,  1218,   407,  1367,  1464,   108,   889,    36,
     1957    1192,   890,  1200,    50,  1069,   470,   911,  1073,   792,    39,
     1958    1017,   184,   185,    42,   909,   860,   463,  1107,   658,   330,
     1959     925,   477,    43,    44,  1350,   131,  1297,   132,   133,   134,
     1960    1083,   709,  1087,    39,     0,   184,   185,    42,    43,    44,
     1961     471,   782,     0,   742,   934,   410,    43,    44,   595,   783,
     1962     596,    47,    48,   784,   350,    58,    47,    48,     0,   471,
     1963     909,     0,    58,   353,   163,     0,     0,   471,     0,     0,
     1964       0,     0,   892,     0,   410,     0,   373,     0,    50,     0,
     1965      47,    48,     0,     0,     0,   691,     0,     0,   430,     0,
     1966      50,     0,  1121,     0,     0,     8,     9,    10,    11,    12,
     1967       0,   214,   163,   705,     0,    68,   496,     0,     0,     0,
     1968     233,     0,     0,   430,    58,     0,     0,   430,     8,     9,
     1969      10,    11,    12,     0,     0,   163,    33,     0,  1468,     0,
     1970    1468,   112,   636,   141,   142,     0,   447,   442,   114,     0,
     1971    1011,     0,     0,     0,    43,    44,   350,     0,     0,    33,
     1972       0,     0,   214,     0,    36,     0,     0,    76,     0,    39,
     1973       0,     0,    76,    42,     0,  1468,     0,  1468,     0,    50,
     1974     720,    50,    43,    44,     0,   721,     0,    36,   114,  1465,
     1975       0,  1469,     0,   112,     0,     0,   546,     0,     0,     0,
     1976    1111,   785,     0,  1112,   214,  1113,    43,    44,    45,     0,
     1977      39,    50,   184,   185,    42,     0,    47,    48,   622,   796,
     1978       0,     0,     0,    43,    44,     0,  1497,     0,  1499,   909,
     1979     813,   919,   114,   596,  1316,   508,     0,     0,   113,    47,
     1980      48,     0,     0,     0,     0,   636,     0,    79,   589,   186,
     1981       0,   114,     0,   589,     0,   114,   373,    47,    48,   622,
     1982       0,     0,   350,   350,     0,   214,   223,     0,     0,     0,
     1983    1528,     0,  1529,     0,     0,     0,     0,     0,   350,     0,
     1984      39,    79,   175,   176,    42,  1536,  1537,    39,   909,   909,
     1985       0,    42,     0,    43,    44,     0,   691,     0,     0,   753,
     1986      43,    44,   114,   214,   758,     0,     0,   471,   214,     0,
     1987     525,   216,     0,     0,   526,   527,   528,     0,   224,   375,
     1988       0,     0,     0,   497,     0,     0,   801,   243,   596,     0,
     1989     373,     0,    76,   471,    47,    48,   350,     0,   529,   114,
     1990     530,     0,   531,  1287,     0,   924,   353,     0,   430,     0,
     1991       0,    76,   463,    50,     0,     0,     0,     0,    50,    76,
     1992     112,     0,   216,     0,     0,     0,     0,  1111,     0,     0,
     1993    1112,   705,  1113,    43,    44,    50,   954,   353,     0,     0,
    19641994       8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
    1965      634,     0,     0,     0,  1112,   351,   112,     0,  1112,     0,
    1966        0,   212,     0,     0,     0,     0,     0,  1451,     0,    31,
    1967      968,     0,   740,   351,   408,    74,     0,     0,     0,     0,
    1968       45,    46,     0,     0,     0,     0,     0,    48,   258,    48,
    1969        0,     0,   587,     0,   494,     0,   112,    34,   615,     0,
    1970        0,     0,     0,  1085,   523,  1112,     0,     0,   524,   525,
    1971      526,   620,   214,     0,     0,   620,   351,     0,  1463,    48,
    1972     1467,     0,   212,     0,     0,     0,    56,     0,   410,     0,
    1973        0,   213,   527,    56,   528,   418,   529,   530,     0,     0,
    1974      112,   917,  1009,   594,     0,     0,     0,     0,     0,    45,
    1975       46,     0,  1519,   634,     0,  1495,     0,  1497,  1519,   112,
    1976      212,  1145,  1146,   112,   469,   212,   228,     0,   233,  1519,
    1977        0,     0,     0,  1519,     0,     0,     0,     0,   348,   351,
    1978      495,     0,   213,   469,   907,    56,     0,     0,     0,     0,
    1979        0,   469,    37,     0,   182,   183,    40,     0,     0,  1526,
    1980        0,  1527,  1112,     0,     0,    41,    42,   410,     0,   689,
    1981      112,     0,   428,     0,  1534,  1535,  1193,  1194,     0,     0,
    1982        0,     0,   351,   351,   213,     0,     0,   703,     0,    66,
    1983      907,   890,     0,   408,     0,     0,     0,   428,   351,    45,
    1984       46,   428,     8,     9,    10,    11,    12,   112,     0,     0,
    1985      212,     0,     0,     0,   228,     0,   351,     0,     0,     0,
    1986        0,    48,  1119,     0,   571,     0,    48,    74,     0,     0,
    1987      348,    31,   575,     0,    37,   578,   173,   174,    40,     0,
    1988       77,     0,     0,    48,     0,   213,     0,    41,    42,     0,
    1989        0,     0,     0,    74,   214,     0,   351,     0,     0,    34,
    1990        0,     0,     0,     0,    37,     0,     0,   112,    40,     0,
    1991     1009,     0,    77,   373,     0,   783,     0,    41,    42,     0,
    1992        0,     0,  1112,   213,  1112,  1112,     0,     0,   213,     0,
    1993      212,   351,   620,   794,     0,   410,     0,     0,     0,   418,
    1994        0,     0,     0,    43,   811,     0,   212,     0,     0,   222,
    1995      694,    45,    46,     0,     0,     0,     0,     0,     0,   112,
    1996        0,     0,   587,     0,    79,     0,     0,   587,     0,     0,
    1997        0,   212,     0,   620,   351,     0,   348,   348,     0,     0,
    1998        0,     0,     0,     0,   351,     0,     0,     0,     0,   907,
    1999      221,   214,   348,     0,     0,   351,    79,     0,    37,  1319,
    2000      182,   183,    40,  1112,     0,     0,  1321,  1322,  1323,     0,
    2001      689,    41,    42,   213,     0,   410,     0,     0,     0,     0,
    2002        0,   469,     0,     0,     0,     0,     0,   112,     0,   112,
    2003      112,     0,     0,   223,     0,     0,   353,   184,     8,     9,
    2004       10,    11,    12,     0,     0,    45,    46,   469,   907,   907,
    2005      348,     0,     0,     0,     0,    74,     0,     0,     0,   922,
    2006     1112,  1112,   428,     0,     0,     0,     0,    31,     0,  1366,
    2007        8,     9,    10,    11,    12,     0,     0,   351,     0,     0,
    2008        0,     0,     0,     0,   351,   703,     0,     0,     0,   212,
    2009      952,     0,     0,   213,     0,    34,     0,     0,  1443,    31,
    2010       37,     0,   182,   183,    40,   571,   571,     0,   112,     0,
    2011        0,     0,     0,    41,    42,     0,     0,   212,     0,     0,
    2012      354,     0,   212,     0,     0,     0,     0,    34,   689,     0,
    2013       77,     0,    37,     0,   213,    77,    40,   175,   689,   184,
    2014      494,   620,     0,     0,   984,    41,    42,    45,    46,   689,
    2015        0,   694,     0,     0,     0,    48,    48,     0,  1493,   995,
    2016       37,     0,   182,   183,    40,   112,   112,  1501,    57,    57,
    2017        0,   709,     0,    41,    42,     0,     0,     0,     0,    45,
    2018       46,     0,     8,     9,    10,    11,    12,     0,   869,     0,
    2019        0,   212,   872,     0,   351,   351,     0,   351,   351,  1489,
    2020       57,   408,     0,   112,     0,   212,     0,    45,    46,    66,
    2021        0,    31,     0,     0,    79,    74,     0,     0,     0,    79,
    2022        0,     0,     0,     0,     0,     0,   495,     0,     0,   222,
    2023        0,   794,     0,     0,    57,     0,     0,    57,   703,    34,
    2024        0,  1064,     0,     0,    37,     0,   182,   183,    40,   351,
    2025      351,     0,   213,     0,     0,     0,   907,    41,    42,     0,
    2026        0,     0,    48,   112,     0,     0,     0,  1078,     0,   694,
    2027        0,     0,   112,   907,     0,     0,   428,   117,    86,   694,
    2028      213,     0,     0,   264,     0,   213,    48,    48,     0,     0,
    2029      694,    45,    46,     0,     0,    77,   212,     0,     0,     8,
    2030        9,    10,    11,    12,     0,     0,     0,     0,     0,   353,
    2031       86,    48,     0,   223,    77,     0,     0,     0,     0,     0,
    2032      351,     0,    77,   571,   346,     0,     0,     0,    31,     0,
    2033      587,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2034      353,     0,     0,   426,     0,   907,   907,   224,   689,   689,
    2035        0,   348,   348,     0,   213,     0,    34,     0,   353,     0,
    2036       77,    37,   221,   182,   183,    40,     0,     0,   213,  1166,
    2037        0,     0,     0,     0,    41,    42,     0,     0,    37,    79,
    2038      182,   183,    40,    74,     0,     0,     0,     0,    57,     0,
    2039        0,    41,    42,   354,     0,   351,     0,   351,    79,     0,
    2040      593,   353,   594,   689,   689,     0,    79,     0,    45,    46,
    2041        0,     0,     0,     0,     0,   523,     0,   264,    57,   524,
    2042      525,   526,     0,     0,   354,    45,    46,     0,     0,     0,
    2043        0,     0,   351,     0,   361,     0,   410,     0,     0,   351,
    2044      351,   351,   354,   527,    79,   528,     0,   529,  1285,     0,
    2045      351,   351,     0,     0,     0,     0,     0,     0,     0,   213,
    2046        0,     0,     0,    74,   353,     0,     0,     0,     0,     0,
    2047        0,     0,     0,     0,   703,     0,     0,     0,     0,     0,
    2048        0,     0,     0,     0,     0,   354,   212,     0,     0,   694,
    2049      694,   531,   532,   533,   534,   535,   536,   537,   538,   539,
    2050      540,   541,   351,     0,     0,     0,     0,   353,   353,     0,
    2051        0,  1122,     0,     0,     0,     0,  1263,     0,     0,     0,
    2052        0,     0,     0,   353,     0,   542,     0,  1133,    86,     0,
    2053        0,     0,     0,    86,     0,     0,     0,    66,     0,     0,
    2054        0,   353,     0,     0,   694,   694,     0,     0,   354,   689,
    2055        0,   703,    77,     0,     0,   117,     0,     0,     0,     0,
     1995       0,     0,     0,   214,    39,   353,     0,    76,    42,   114,
     1996       0,  1318,     0,     0,   216,   355,     0,    43,    44,     0,
     1997       0,    33,     0,     0,   691,     0,     0,     0,     0,   866,
     1998       0,   868,     0,     0,   691,   215,     0,   622,     0,     0,
     1999     986,     0,     0,   711,     0,   691,     0,     0,   353,    36,
     2000       0,    47,    48,     0,    39,   997,   184,   185,    42,     0,
     2001      39,   114,   175,   176,    42,     0,     0,    43,    44,     0,
     2002       0,     0,     0,    43,    44,   216,     0,     0,     0,     0,
     2003       0,   914,     0,   214,     0,     0,   215,     0,     0,     0,
     2004       0,     0,     0,   595,     0,   596,     0,     0,     0,   214,
     2005       0,    47,    48,     0,     0,    68,   909,     0,     0,    79,
     2006       0,   353,     0,   216,    79,     0,     0,     0,   216,     0,
     2007       0,     0,     0,   909,   214,     0,     0,   796,   215,   114,
     2008       0,   114,   114,     0,   705,     0,     0,  1066,     8,     9,
     2009      10,    11,    12,     0,     0,   412,    39,     0,   184,   185,
     2010      42,     0,   420,     0,   353,   353,     0,     0,     0,    43,
     2011      44,     0,     0,  1080,     0,     0,     0,     0,     0,    33,
     2012     353,     0,   430,   119,     0,     0,     0,     0,     0,     0,
     2013       0,     0,     0,    81,     0,  1491,     0,   410,   353,   215,
     2014       0,     0,     0,    47,    48,   909,   909,    36,     0,    76,
     2015       0,     0,    39,   216,   184,   185,    42,     0,   224,     0,
     2016     114,     0,     0,     0,     0,    43,    44,    81,     0,     0,
     2017       0,     0,     0,     0,   412,    76,   589,   215,   353,     0,
     2018       0,     0,   215,     0,     0,     0,     0,     0,     0,   428,
     2019       0,   892,   214,   410,   691,   691,     0,   350,   350,    47,
     2020      48,     0,     0,     0,   225,     0,     0,    50,    50,     0,
     2021       0,     0,     0,   353,     0,  1168,     0,   114,   114,     0,
     2022     214,     0,     0,     0,    79,   214,     0,     0,     0,     0,
     2023       0,   573,    39,   216,   184,   185,    42,     0,   355,   577,
     2024       0,     0,   580,    79,     0,    43,    44,     0,     0,   691,
     2025     691,    79,     0,     0,     0,   114,   353,     8,     9,    10,
     2026      11,    12,     0,     0,     0,     0,   353,   215,     0,   355,
     2027       0,   266,   223,     0,   216,     0,     0,   353,  1102,    47,
     2028      48,     0,     0,     0,     0,     0,     0,   355,    33,    79,
     2029       0,   356,     0,     0,   214,     0,     0,  1114,     0,    59,
     2030      59,  1114,   412,     0,     0,     0,   420,     0,   214,     0,
     2031       0,     0,     0,     0,    50,   114,    36,     0,     0,     0,
     2032     705,    39,     0,   143,   114,    42,     0,     0,     0,   497,
     2033     355,     0,     0,    59,    43,    44,     0,    76,    50,    50,
     2034       0,     0,     0,     0,     0,     0,     0,   215,  1114,     0,
     2035       8,     9,    10,    11,    12,     0,     0,     0,     0,   353,
     2036     711,     0,  1265,    50,     0,     0,   353,    59,    47,    48,
     2037      59,     0,   126,   129,   130,   242,   245,     0,     0,     0,
     2038       0,    33,   412,    68,     0,    81,     0,     0,   215,     0,
     2039      81,     0,   216,   355,     0,   691,     0,   705,     0,   214,
     2040       0,   119,     0,     0,     0,     0,     0,     0,     0,    36,
     2041       0,     0,     0,     0,    39,    88,   184,   185,    42,     0,
     2042     216,     0,     0,     0,     0,   216,     0,    43,    44,     0,
     2043       0,     0,   691,     0,     0,     0,   355,   355,     0,   691,
     2044     691,   691,     0,     0,   255,  1114,   256,     0,     0,    88,
     2045     350,   350,   355,  1491,     0,   410,     0,   348,     0,     0,
     2046       0,    47,    48,  1168,     0,     0,     0,     0,     0,     0,
     2047     355,     0,   573,   573,     0,     0,   353,   353,     0,   353,
     2048     353,    79,     0,     0,   225,     0,   226,     0,     0,     0,
     2049       0,     0,     0,     0,   216,     0,   119,    76,     0,     0,
     2050       0,     0,   691,     0,     0,     0,   215,    79,   216,     0,
     2051     355,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2052       0,    59,     0,     0,     0,     0,   395,     0,     0,     0,
     2053       0,   353,   353,     0,   215,   455,   414,   415,     0,   215,
     2054       0,   419,     0,   421,   422,   355,     0,     0,     0,     0,
     2055      81,    59,     0,     0,     0,   871,     0,     0,     0,   874,
     2056       0,     0,     0,     0,   356,  1114,     0,  1114,  1114,    81,
     2057       0,   350,     0,   363,     0,     0,     0,    81,     0,     0,
     2058       0,     8,     9,    10,    11,    12,     0,     0,   355,   214,
     2059       0,     0,     0,     0,     0,   356,   119,     0,   355,   216,
     2060       0,     0,   353,     0,   224,     0,     0,     0,   215,   355,
     2061       0,     0,    33,   356,     0,    81,     0,     0,     0,  1168,
     2062       0,     0,   215,     0,     0,     0,  1168,   533,   534,   535,
     2063     536,   537,   538,   539,   540,   541,   542,   543,     0,     0,
     2064      36,     0,     0,     0,   223,    39,  1114,   184,   185,    42,
     2065       0,     0,     0,     0,     0,     0,   356,     0,    43,    44,
     2066       0,   544,     0,     0,     0,    76,     0,    88,     0,    79,
     2067     637,     0,    88,     0,     0,     0,     0,   353,  1168,   353,
     2068       0,     0,     0,     0,   186,  1516,     0,     0,     0,     0,
     2069     573,   355,    47,    48,     0,     0,     0,     0,   355,     0,
     2070       0,     0,     0,  1114,  1114,     0,     0,     0,     0,     0,
     2071       0,     0,     0,   215,   353,     0,     0,     0,     0,   356,
     2072       0,   353,   353,   353,     0,     0,     0,     0,     0,     0,
     2073     348,     0,   353,   353,     0,     0,     0,     0,     0,     0,
     2074       0,  1445,     0,     0,     0,    76,     0,     0,     0,     0,
    20562075       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2057        0,   351,     0,     0,     0,     0,     0,     0,    77,     0,
    2058        0,   353,     0,     0,     0,     0,   689,     0,     0,     0,
    2059        0,   354,   354,   689,   689,   689,     0,   346,     0,     0,
    2060        0,     0,   410,     0,   348,   348,     0,   354,     0,     0,
    2061        0,     0,     0,     0,     0,     0,   353,  1166,     0,    74,
    2062        0,     0,     0,     0,     0,   354,    74,   224,   166,     0,
    2063      171,     0,     0,   177,   178,   179,    79,   181,     0,     0,
    2064        0,  1219,     0,     0,     0,     0,     0,     0,    57,   213,
    2065      117,   232,     0,     0,     0,     0,   689,     0,     0,   353,
    2066        0,     0,    79,   247,   248,   354,     0,     0,   212,   353,
    2067        0,     0,     0,     0,     0,   222,     0,     0,    74,     0,
    2068      353,     0,     0,     0,     0,     0,     0,     0,     0,   346,
    2069     1293,     0,     0,    86,     0,     0,     0,     0,     0,     0,
    2070      354,     0,     0,     0,     0,     0,     0,   361,     0,     0,
    2071        0,     0,    86,     0,     0,     0,     0,     0,     0,     0,
    2072       86,     0,     0,     0,     0,   348,     0,   694,     0,     0,
    2073        0,     0,     0,     0,   694,   694,   694,     0,   361,     0,
    2074       77,     0,     0,   354,     0,     0,     0,     0,     0,     0,
    2075      117,     0,   346,   354,     0,     0,   361,     0,    86,   223,
    2076        0,     0,   353,     0,   354,   212,     0,     0,     0,   353,
    2077        0,     0,     0,  1166,     0,     0,     0,     0,     0,     0,
    2078     1166,     0,   994,     0,     0,     8,     9,    10,    11,    12,
    2079        0,     0,     0,     0,     0,   346,   346,   694,     0,   361,
     2076       0,     0,   356,   356,     0,     0,   226,     0,     0,     0,
     2077       0,   214,     0,     0,     0,     0,     0,     0,   356,     0,
     2078     718,    59,   722,     0,   353,     0,     0,     0,     0,   216,
     2079       0,     0,     0,     0,     0,     0,   356,     0,     0,     0,
     2080       0,  1495,     0,   412,     0,     0,     0,    81,   355,   355,
     2081    1503,   355,   355,     0,     0,     0,     0,     0,     0,   168,
     2082       0,   173,   348,     0,   179,   180,   181,     0,   183,    79,
     2083       0,     0,    88,    81,     0,     0,   356,     0,     0,     0,
     2084       0,     0,   234,     0,     0,     0,   363,     0,     0,     0,
     2085       0,    88,     0,   353,   249,   250,     0,     0,     0,    88,
     2086       0,     0,     0,   355,   355,     0,     0,     0,   214,     0,
     2087       0,   356,     0,     0,     0,     0,     0,   363,  1124,     0,
     2088       0,     0,     0,     0,     0,   348,     0,     0,     0,     0,
     2089       0,     0,     0,     0,  1135,   363,     0,    88,     0,     0,
     2090       0,    76,     0,   215,     0,     0,     0,     0,    76,     0,
     2091       0,     0,     0,     0,   356,   787,   788,     0,     0,     0,
     2092       0,     0,     0,     0,   356,     0,   853,     0,   348,   348,
     2093     225,     0,     0,     0,   355,   356,     0,     0,   363,     0,
     2094       0,     0,   818,     0,   348,   821,   822,     0,   825,     0,
     2095     827,   828,     0,     0,     0,   829,   830,     0,     0,     0,
     2096      76,     0,     0,     8,     9,    10,    11,    12,     0,   412,
     2097       0,   216,     0,     0,     0,   905,   224,   907,     0,     0,
     2098       0,   455,     0,     0,     0,     0,     0,     0,     0,     0,
     2099       0,     0,     0,     0,    33,    81,     0,    79,     0,     0,
     2100       0,   363,   348,     0,     0,     0,     0,     0,  1221,   355,
     2101       0,   355,     0,     0,     0,     0,     0,   356,     0,     0,
     2102       0,     0,    36,     0,   356,     0,     0,    39,     0,   184,
     2103     185,    42,     0,     0,     0,     0,     0,     0,     0,     0,
     2104      43,    44,     0,     0,   363,   363,   355,     0,     0,     0,
     2105       0,     0,     0,   355,   355,   355,     0,     0,     0,     0,
     2106     363,     0,     0,     0,   355,   355,   266,     0,   216,     0,
     2107       0,     0,     0,     0,    47,    48,     0,    79,   363,     0,
     2108       0,     0,     0,     0,     0,   215,     0,     0,     0,    88,
     2109       0,   956,   957,     0,     0,     0,     0,     0,     0,     0,
     2110       0,     0,     0,     0,     0,     0,     0,     0,   587,     0,
     2111     594,     0,     0,     0,     0,    88,   355,     0,   363,     0,
     2112       0,   618,   619,     0,     0,   128,   128,   128,     0,     0,
     2113       0,     0,     0,     0,   356,   356,     0,   356,   356,     0,
     2114       0,     0,     0,     0,     0,     0,   637,     0,     0,     0,
     2115       0,     0,  1021,   363,     0,    81,     0,     0,     0,     0,
     2116       0,    59,     8,     9,    10,    11,    12,    13,    14,    15,
     2117      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2118      26,    27,   215,   348,     0,   355,     0,     0,     0,   356,
     2119     356,     0,  1070,    33,     0,     0,   363,   128,     0,   128,
     2120       0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
     2121       0,     0,   226,     0,     0,     0,     0,   363,     0,     0,
     2122       0,    36,     0,     0,   276,     0,     0,     0,     0,    59,
     2123       0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
     2124      79,     0,     0,     0,     0,     0,     0,  1071,     0,   637,
    20802125       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2081        0,   346,   281,   282,    31,   283,     0,     0,     0,     0,
    2082        0,     0,     0,     0,    79,     0,     0,     0,     0,     0,
    2083        0,   213,  1166,     0,     0,     0,     0,     0,     0,  1514,
    2084        0,   284,    34,     0,     0,     0,   354,   285,     0,     0,
    2085        0,   286,     0,   354,   287,   288,   289,   290,   291,   292,
    2086       41,    42,   361,   293,   294,     0,     0,     0,     0,   346,
    2087        0,     0,     0,     0,     0,     0,     0,     0,     0,   353,
    2088      353,     0,   353,   353,     0,     0,   295,     0,   376,     0,
    2089        0,     0,     0,     0,   342,    46,   297,   298,   299,   300,
    2090       77,     0,     0,     0,     0,   361,   361,     0,     0,     0,
    2091        0,     0,     0,     0,     0,     0,     0,   585,     0,   592,
    2092        0,   361,     0,     8,     9,    10,    11,    12,   213,     0,
    2093      616,   617,     0,     0,   353,   353,     0,     0,     0,   361,
    2094        0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2095       86,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    2096        0,     0,     0,   354,   354,     0,   354,   354,     0,     0,
    2097        0,     0,     0,     0,    31,     0,    86,     0,     0,   361,
    2098       34,     0,     0,     0,    79,    37,     0,   182,   183,    40,
    2099        0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
    2100        0,     0,    34,     0,     0,   353,     0,    37,     0,   182,
    2101      183,    40,     0,     0,   361,     0,     0,     0,   354,   354,
    2102       41,    42,     0,     0,   890,     0,   408,     0,    57,     0,
    2103        0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
    2104        0,     0,     0,     0,     0,     0,  1489,   222,   408,     0,
    2105      346,     0,     0,     0,    45,    46,     0,   361,   281,   282,
    2106        0,   283,     0,     0,     0,     0,     0,   361,    77,     0,
    2107        0,     0,     0,   224,     0,     0,     0,     0,   361,     0,
    2108      353,     0,   353,     0,     0,     0,     0,   284,     0,   354,
    2109        0,     0,     0,   285,     0,     0,    57,   286,     0,     0,
    2110      287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
    2111      294,     0,     0,     0,     0,     0,     0,   353,     0,     0,
    2112        0,     0,     0,     0,   353,   353,   353,     0,     0,     0,
    2113        0,   223,   295,     0,   376,   353,   353,     0,    86,     0,
    2114       45,    46,   297,   298,   299,   300,     0,     0,    77,     0,
    2115        0,     0,    79,   777,     0,     0,     0,     0,     0,     0,
    2116      361,     0,     0,     0,   354,     0,   354,   361,     0,     0,
    2117      346,   346,     0,     0,     0,     0,     0,     0,     0,     0,
    2118        0,     0,     0,     0,     0,     0,     0,   353,    57,     0,
    2119        0,     0,     0,     0,   210,     0,     0,     0,     0,     0,
    2120        0,   354,     0,   230,     0,   234,     0,   236,   354,   354,
    2121      354,     0,     0,     0,   245,     0,     0,     0,     0,   354,
    2122      354,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2123        0,     0,    79,     0,     0,     0,     0,     0,     0,     0,
    2124        0,     0,     0,     0,     0,   210,     0,   234,   236,   245,
    2125        0,     0,     0,     0,     0,     0,   353,     0,     0,     0,
    2126        0,     0,     0,     0,     0,   910,     0,   911,     0,     0,
    2127        0,   354,     0,     0,   914,   915,     0,   361,   361,   920,
    2128      361,   361,     0,     0,     0,     0,     0,   210,     0,     0,
    2129        0,     0,   926,     0,     0,     0,     0,   930,    86,     0,
    2130        0,     0,     0,     0,    77,     0,     0,     0,     0,     0,
    2131        0,    77,     0,     0,     0,     0,     0,     0,     0,     0,
    2132        0,     0,     0,     0,   592,     0,     0,     0,     0,     0,
    2133        0,     0,   361,   361,    57,    57,     0,     0,     0,     0,
    2134      354,     0,     0,     0,     0,     0,     0,     0,   210,     0,
    2135      234,   236,   245,     0,     0,     0,    57,     0,     0,     0,
    2136        0,     0,     0,    77,     0,     0,     0,     0,     0,     0,
    2137        0,     0,     0,     0,    57,     0,     0,     0,     0,     0,
    2138        0,     0,     0,     0,     0,     0,   210,     0,    79,     0,
    2139        0,   210,     0,     0,     0,    79,     0,     0,     0,     0,
    2140        0,     0,     0,   361,     0,     0,   493,     0,     0,     0,
    2141        0,     0,     0,     0,     0,     0,     0,  1004,     0,  1005,
    2142     1006,  1007,     0,   346,   346,     0,     0,     0,     0,     0,
    2143        0,    57,   164,     0,     0,     0,    57,     0,  1051,     0,
    2144        0,     0,     0,     0,     0,   224,     0,    79,     0,   217,
    2145        0,     0,  1057,     0,     0,     0,     0,   210,     0,     0,
    2146        0,     0,     0,     0,     0,     0,    86,     0,     0,    57,
    2147        0,     0,     0,     0,     0,     0,   210,     0,   361,     0,
    2148      361,   234,   236,     0,     0,     0,     0,     0,     0,   245,
    2149        0,  1077,     0,     0,     0,     0,   164,     0,     0,     0,
    2150      271,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2151        0,     0,     0,     0,     0,   361,     0,     0,     0,     0,
    2152        0,     0,   361,   361,   361,     0,     0,     0,     0,   164,
    2153        0,   210,     0,   361,   361,  1107,     0,     0,     0,   367,
    2154     1117,     0,   372,     0,   346,  1120,    86,     0,     0,   210,
    2155     1124,     0,     0,     0,   210,  1126,   210,  1127,  1128,     0,
    2156        0,  1131,     0,     0,     0,     0,     0,     0,     0,    57,
    2157     1143,     0,   210,     0,     0,   210,   210,     0,     0,     0,
    2158        0,     0,     0,   210,     0,   361,  1157,  1158,     0,     0,
    2159        0,   164,    57,     0,     0,     0,     0,   210,     0,    57,
    2160        0,     0,     0,   217,   210,     0,     0,     0,     0,     0,
    2161        0,     0,  1187,     0,     0,  1189,     0,     0,     0,     0,
    2162        0,   164,     0,     0,     0,   124,   127,   128,     8,     9,
     2126     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2127       0,     0,     0,     0,     0,     0,     0,    88,   996,   128,
     2128       0,     8,     9,    10,    11,    12,     0,   128,     0,   128,
     2129     128,     0,    79,     0,   128,     0,   128,   128,     0,   363,
     2130       0,     0,   225,   348,   348,     0,   363,     0,     0,     0,
     2131     283,   284,    33,   285,     0,     0,     0,     0,     0,     0,
     2132       0,    59,     0,    81,     0,     0,     0,     0,     0,     0,
     2133       0,     0,     0,     0,     0,   356,     0,   356,     0,   286,
     2134      36,     0,     0,  1021,     0,   287,     0,     0,     0,   288,
     2135       0,     0,   289,   290,   291,   292,   293,   294,    43,    44,
     2136       0,   295,   296,     0,     0,     0,   128,     0,     0,     0,
     2137       0,     0,   356,     0,     0,     0,     0,     0,     0,   356,
     2138     356,   356,     0,     0,   297,     0,   378,     0,     0,     0,
     2139     356,   356,   344,    48,   299,   300,   301,   302,     0,     0,
     2140       0,     0,  1197,    81,     0,     0,     0,     0,     0,     0,
     2141       0,   166,     0,     0,     0,     0,   363,   363,     0,   363,
     2142     363,     0,     0,     0,     0,     0,     0,     0,   219,     0,
     2143       0,     0,     0,     0,     0,     0,     0,    88,     0,     0,
     2144       0,     0,   356,     0,     0,     0,     0,     0,     0,     0,
     2145       0,   283,   284,     0,   285,  1264,   912,     0,   913,     0,
     2146       0,     0,     0,     0,     0,   916,   917,    59,    59,     0,
     2147     922,   363,   363,     0,     0,   166,     0,     0,     0,   273,
     2148     286,     0,     0,   928,     0,     0,   287,     0,   932,    59,
     2149     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
     2150      44,     0,   295,   296,     0,     0,     0,    59,   166,     0,
     2151       0,   356,     0,     0,     0,   594,     0,     0,   369,     0,
     2152       0,   374,     0,     0,     0,   297,     0,   378,     0,     0,
     2153    1286,     0,     0,    47,    48,   299,   300,   301,   302,     0,
     2154       0,     0,   363,     0,     0,     0,   779,     0,     0,     0,
     2155       0,     0,     0,     0,     0,     0,   348,   348,     0,    81,
     2156       0,     0,     0,     0,    59,     0,    81,     0,     0,    59,
     2157     166,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2158       0,     0,   219,     0,   226,     0,     0,     0,     0,     0,
     2159       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2160     166,     0,    59,     0,     0,    88,     0,     0,  1006,     0,
     2161    1007,  1008,  1009,     0,     0,     0,     0,   363,    81,   363,
     2162       0,     0,     0,     0,     0,   374,     0,     0,     0,  1053,
     2163       0,     0,   166,     0,     0,     0,     0,     0,     0,     0,
     2164       0,     0,     0,  1059,     0,     0,     0,     0,     0,     0,
     2165       0,     0,     0,     0,   363,     0,     0,   522,     0,     0,
     2166       0,   363,   363,   363,     0,     0,     0,     0,   128,   128,
     2167     166,     0,   363,   363,     0,     0,     0,   348,     0,     0,
     2168       0,     0,  1079,     0,     0,    88,     0,     0,     0,     0,
     2169       0,     0,     0,     0,     0,   128,     0,     0,   128,   128,
     2170       0,   128,    59,   128,   128,   592,     0,     0,   128,   128,
     2171     616,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2172       0,     0,     0,     0,   363,    59,  1109,     0,     0,     0,
     2173       0,  1119,    59,     0,     0,     0,  1122,     0,     0,     0,
     2174       0,  1126,     0,     0,     0,     0,  1128,     0,  1129,  1130,
     2175       0,     0,  1133,     0,     0,     0,     0,     0,     0,     0,
     2176       0,  1145,     0,     0,     0,     0,     0,     0,     0,     0,
     2177       0,     0,     0,     0,     0,     0,     0,  1159,  1160,     0,
     2178       0,     0,     0,     0,    59,   166,   166,     0,     0,     0,
     2179       0,   369,     0,   363,     0,     0,     0,     0,     0,     0,
     2180       0,     0,     0,  1189,     0,     0,  1191,     0,     0,     0,
     2181       0,     0,   522,     0,     0,     0,     8,     9,    10,    11,
     2182      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2183      22,    23,    24,    25,    26,    27,  -298,     0,     0,     0,
     2184     708,    88,     0,     0,   128,   128,     0,    33,    88,  1205,
     2185       0,     0,   166,     0,     0,  1209,  1210,     0,     0,     0,
     2186       0,     0,     0,     0,   522,     0,   522,     0,     0,   522,
     2187       0,   166,   522,     0,  1226,    36,     0,     0,     0,  1233,
     2188       0,     0,     0,   369,  1237,     0,  -298,     0,     0,     0,
     2189       0,     0,     0,     0,     0,  1244,     0,     0,     0,     0,
     2190      88,     0,     0,     0,     0,     0,     0,     0,  1251,     0,
     2191    1253,  1254,  1255,  1256,     0,     0,     0,   212,     0,     0,
     2192       0,     0,     0,     0,     0,  1263,   232,  1159,   236,     0,
     2193     238,   173,     0,     0,     0,   166,     0,   247,     0,     0,
     2194       0,     0,     0,     0,     0,     0,   369,     0,     0,   799,
     2195       0,     0,     0,     0,     0,     0,     0,     0,     0,  1291,
     2196    1292,     0,     0,     0,     0,     0,     0,     0,   212,     0,
     2197     236,   238,   247,     0,     0,   592,     0,     0,     0,     0,
     2198     592,     0,     0,     0,     0,     0,     0,     0,     0,   369,
     2199     369,     0,     0,     0,     0,   128,     0,     0,     0,     0,
     2200     128,     0,     0,     0,     0,   369,     0,     0,     0,     0,
     2201     212,     0,     0,  1326,  1327,     0,     0,     0,     0,     0,
     2202       0,     0,     0,  1337,     0,     0,     0,     0,     0,     0,
     2203       0,     0,     0,     0,     0,     0,     0,   522,     8,     9,
    21632204      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2164       20,    21,    22,    23,    24,    25,   372,     0,     0,     0,
    2165        0,    57,     0,   164,   361,     0,     0,    31,  1203,     0,
    2166        0,     0,     0,     0,  1207,  1208,     0,     0,     0,     0,
    2167        0,     0,     0,     0,     0,     0,     0,     0,   520,     0,
    2168        0,     0,     0,  1224,     0,    34,     0,     0,  1231,     0,
    2169        0,   164,     0,  1235,     0,     0,     0,   253,     0,   254,
    2170        0,     0,    86,     0,  1242,     0,     0,     0,     0,    86,
    2171        0,     0,     0,     0,     0,   210,     0,  1249,     0,  1251,
    2172     1252,  1253,  1254,     0,     0,     0,   590,     0,     0,     0,
    2173        0,   614,     0,     0,  1261,     0,  1157,     0,     0,     0,
    2174      171,     0,     0,   210,     0,     0,     0,     0,   210,     0,
     2205      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
     2206      28,    29,    30,   369,     0,   921,     0,     0,     0,    33,
     2207       0,   212,     0,   236,   238,   247,     0,   158,     0,     0,
     2208       0,     0,     0,     0,     0,  1372,     0,  1373,  1374,  1375,
     2209       0,     0,     0,     0,     0,     0,     0,    36,   708,  1379,
     2210       0,     0,    39,     0,    40,    41,    42,  1390,     0,   212,
     2211       0,     0,     0,     0,   212,    43,    44,     0,     0,     0,
     2212       0,     0,     0,     0,   252,     0,     0,     0,     0,   495,
     2213       0,     0,  1411,  1412,   257,     0,     0,     0,     0,     0,
     2214       0,    45,     0,    46,     0,     0,     0,     0,     0,    47,
     2215      48,   324,     0,     0,     0,   128,   616,     0,     0,     0,
     2216       0,   346,     0,     0,     0,     0,     0,     0,     0,     0,
     2217       0,     0,   381,   381,     0,     0,     0,  1451,  1452,     0,
     2218     212,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2219    1457,     0,     0,     0,     0,     0,     0,  1457,     0,   212,
     2220       0,     0,     0,   385,   236,   238,     0,     0,     0,     0,
     2221       0,     0,   247,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,     0,     0,     0,     0,   417,     0,     0,     0,
     2223    1490,     0,     0,     0,  1496,     0,     0,     0,     0,     0,
     2224     431,     0,     0,   324,   369,     0,     0,     0,     0,   436,
     2225       0,   708,     0,     0,   212,     0,     0,     0,     0,   444,
     2226       0,     0,  1518,     0,  1519,     0,   522,   476,     0,     0,
     2227       0,     0,   212,     0,     0,     0,     0,   212,     0,   212,
     2228       0,     0,     0,   128,   462,     0,     0,     0,     0,   472,
     2229       0,   166,  1534,  1535,     0,   212,     0,     0,   212,   212,
     2230    1538,  1539,   480,     0,     0,     0,   212,     0,   490,     0,
     2231     494,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2232     212,     0,     0,     0,     0,     0,     0,   212,     0,   523,
    21752233       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2176        0,    86,     0,     0,     0,     0,     0,     0,  1289,  1290,
    2177        0,     0,     0,     0,     0,     0,     0,     0,     0,   393,
    2178        0,     0,     0,     0,     0,     0,     0,     0,     0,   412,
    2179      413,     0,     0,     0,   417,     0,   419,   420,     0,     0,
    2180      156,     0,     0,     0,     0,     0,   164,   164,     0,     0,
    2181        0,     0,   367,     0,     0,     0,     0,   210,     0,     0,
    2182        0,     0,  1324,  1325,     0,     0,     0,     0,     0,     0,
    2183        0,   210,  1335,   520,     0,     0,     0,     0,     0,     0,
    2184        0,     0,     0,     0,     0,     0,     0,   250,     0,     0,
    2185        0,     0,   493,     0,     0,     0,     0,   255,     0,     0,
    2186        0,   706,     0,     0,     0,     0,     0,     0,     0,     0,
    2187        0,     0,     0,   164,     0,     0,     0,     0,     0,     0,
    2188        0,     0,     0,     0,     0,   520,     0,   520,     0,     0,
    2189      520,     0,   164,   520,  1370,     0,  1371,  1372,  1373,     0,
    2190        0,     0,     0,     0,   367,     0,     0,     0,  1377,     0,
    2191        0,   210,     0,     0,     0,     0,  1388,     0,     0,     0,
    2192        0,     0,   210,     0,     0,     0,   383,     0,     0,     0,
    2193        0,     0,     0,     0,     0,     0,     0,     0,     0,   210,
    2194        0,  1409,  1410,     0,     0,     0,     0,     0,     0,   415,
    2195        0,     0,     0,     0,     0,     0,   164,     0,     0,     0,
    2196        0,     0,     0,   429,     0,     0,     0,   367,     0,     0,
    2197      797,     0,   434,     0,     0,     0,     0,     0,     0,     0,
    2198        0,     0,   442,     0,     0,     0,  1449,  1450,     0,     0,
    2199        0,     0,     0,     0,     0,     0,   590,     0,     0,  1455,
    2200        0,   590,     0,     0,     0,     0,  1455,   460,     0,     0,
    2201      367,   367,   470,     0,     0,     0,     0,     0,     0,     0,
    2202        0,     0,     0,     0,     0,   478,   367,     0,     0,     0,
    2203        0,   488,     0,   492,     0,     0,     0,     0,     0,  1488,
    2204        0,     0,     0,  1494,     0,     0,     0,     0,     0,     0,
    2205      210,     0,   521,     0,     0,     0,     0,     0,   520,     0,
     2234       0,     0,     0,   592,     8,     9,    10,    11,    12,    13,
     2235      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2236      24,    25,    26,    27,   369,   369,    28,    29,    30,     0,
     2237     582,     0,     0,     0,   586,    33,     0,     0,     0,     0,
     2238       0,     0,   381,     0,     0,     0,     0,     0,     0,     0,
    22062239       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2207        0,  1516,     0,  1517,     0,     0,     0,     0,     0,     0,
    2208      210,     0,     0,     0,   367,     0,   919,     0,     0,     0,
    2209        0,     0,     0,   580,     0,     0,     0,   584,     0,     0,
    2210        0,  1532,  1533,     0,     0,     0,     0,     0,     0,  1536,
    2211     1537,     0,   210,     0,     0,     0,     0,     0,     0,   706,
    2212        0,     0,     0,   210,     0,   627,     0,     0,     0,   628,
    2213      629,     0,   630,     0,     0,     0,     0,     0,     0,   641,
    2214      642,     0,   643,   644,     0,   645,     0,   646,     0,     0,
     2240       0,     0,   629,    36,     0,     0,   630,   631,     0,   632,
     2241     208,    41,     0,     0,     0,     0,   643,   644,     0,   645,
     2242     646,   522,   647,     0,   648,     0,     0,     0,     0,     0,
     2243       0,     0,     0,     0,     0,     0,     0,     0,   212,     0,
     2244       0,   582,     0,     0,     0,     0,     0,     0,     0,   663,
     2245       0,     0,     0,     0,     0,    47,    48,     0,     0,     0,
     2246       0,     0,     0,     0,     0,     0,   212,     0,     0,     0,
     2247       0,   212,     0,   674,     0,   702,     0,     0,     0,     0,
     2248       0,     0,     0,     0,     0,     0,     0,   708,     0,     0,
     2249       0,     0,     0,     0,     0,     0,     0,     0,     0,   700,
     2250       0,     0,     0,     0,     0,   703,     0,     0,     0,     0,
     2251     462,     0,     0,     0,   735,     0,     0,     0,     0,     0,
     2252       0,     0,     0,     0,     0,     0,   751,     0,   219,     0,
     2253       0,     0,   735,     0,     0,   735,   341,   364,     0,     0,
     2254     212,     0,     0,     0,     0,     0,   738,     0,   760,     0,
     2255       0,     0,     0,     0,   212,     0,     0,     0,     0,     0,
     2256       0,   756,     0,     0,   708,     0,     0,     0,     0,   413,
     2257       0,     0,     0,     0,     0,   495,   413,     0,   789,     0,
     2258       0,     0,     0,     0,     0,   346,     0,     0,     0,   751,
     2259       0,     0,     0,     0,     0,     0,     0,     0,   781,     0,
     2260       0,     0,     0,     0,     0,     0,     0,   791,     0,     0,
     2261       0,     0,     0,     0,     0,     0,     0,   369,   369,     0,
     2262       0,     0,     0,     0,     0,   219,     0,   812,     0,     0,
     2263       0,     0,     0,     0,   212,   850,     0,     0,     0,     0,
     2264       0,     0,     0,   381,     0,   212,     0,     0,   413,     0,
    22152265       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2216        0,     0,     0,     0,   580,     0,     0,     0,   785,   786,
    2217        0,     0,   661,     0,     0,     0,     0,   614,     0,     0,
     2266       0,     0,   212,     0,     0,   851,     0,     8,     9,    10,
     2267      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2268      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2269      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
     2270       0,   884,     0,     0,     0,   413,     0,     0,     0,   891,
     2271       0,     0,     0,   413,   578,     0,   413,   581,     0,   926,
     2272       0,     0,     0,     0,   364,     0,    36,     0,   608,     0,
     2273       0,    39,     0,   208,    41,    42,     0,     0,   369,     0,
     2274     252,   751,     0,   950,    43,    44,     0,   626,     0,     0,
     2275       0,   929,   930,   960,     0,     0,     0,     0,     0,   967,
    22182276       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2219        0,     0,   210,     0,     0,   816,   672,     0,   819,   820,
    2220        0,   823,     0,   825,   826,     0,   210,     0,   827,   828,
    2221        0,   126,   126,   126,   503,     0,   505,   508,     0,     0,
    2222        0,     0,   698,     0,     0,     0,   511,   512,   701,     0,
    2223        0,     0,     0,   460,     0,     0,     0,     0,     0,     0,
    2224        0,   505,   505,     0,     0,     0,     0,     0,     0,     0,
    2225        0,     0,     0,     0,     0,     0,     0,     0,     0,   339,
    2226      362,     0,     0,     0,     0,   367,     0,     0,     0,   736,
    2227        0,     0,   706,     0,     0,     0,   505,     0,     0,     0,
    2228        0,     0,     0,   126,   754,   126,     0,   520,     0,     0,
    2229        0,     0,   411,     0,   210,     0,     0,     0,     0,   411,
     2277      45,     0,   271,   212,     0,     0,   413,     0,    47,    48,
     2278     413,     0,     0,   964,     0,     0,     0,     0,   968,     0,
     2279       0,     0,     0,     0,     0,   522,     0,   522,     0,   984,
     2280     985,     0,     0,   212,     0,     0,     0,     0,     0,     0,
     2281     364,     0,     0,     0,     0,   346,     0,     0,     0,     0,
    22302282       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2231      274,   505,   164,     0,     0,     0,     0,     0,     0,     0,
    2232        0,   779,     0,     0,     0,     0,     0,     0,     0,     0,
    2233      789,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2234        0,     0,     0,     0,   954,   955,     0,     0,     0,     0,
    2235      810,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2236        0,     0,     0,     0,   590,   126,     0,     0,     0,     0,
    2237        0,   411,     0,   126,     0,   126,   126,     0,     0,     0,
    2238      126,     0,   126,   126,     0,   367,   367,     0,   849,     0,
    2239        0,   210,     0,     0,   463,     2,   205,     4,     5,     6,
    2240        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2241       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2242        0,    26,    27,    28,   882,     0,     0,     0,   411,     0,
    2243       31,     0,   889,     0,     0,     0,   411,   576,     0,   411,
    2244      579,     0,   520,     0,     0,     0,     0,   362,     0,     0,
    2245        0,   606,   126,     0,     0,     0,     0,     0,    34,     0,
    2246       35,     0,    36,   250,     0,    38,    39,     0,     0,     0,
    2247      624,     0,     0,     0,   927,   928,     0,     0,     0,   505,
    2248      505,   505,   505,   505,   505,   505,   505,   505,   505,   505,
    2249      505,   505,   505,   505,   505,   505,   505,     0,     0,   411,
    2250     1069,     0,     0,   411,     0,     0,   962,    -3,   706,     0,
    2251        0,   966,     8,     9,    10,    11,    12,    13,    14,    15,
    2252       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2253     -298,     0,     0,   362,     0,     0,     0,     0,     0,     0,
    2254        0,    31,     0,   322,     0,     0,     0,     0,     0,   217,
    2255        0,     0,     0,   344,     0,     0,     0,     0,     0,     0,
    2256        0,     0,     0,     0,   379,   379,     0,     0,     0,    34,
    2257        0,   999,     0,     0,     0,     0,     0,     0,  1000,   411,
    2258     -298,     0,   362,     0,     0,   706,     0,     0,     0,     0,
    2259        0,  1002,     0,  1003,     0,     0,     0,     0,     0,     0,
    2260        0,     0,     0,     0,     0,     0,  1013,     0,     0,     0,
    2261        0,     0,  1017,     0,     0,     0,     0,     0,     0,   505,
    2262        0,   411,     0,     0,  1054,   362,     0,  1055,     0,     0,
    2263        0,     0,     0,     0,     0,   322,     0,     0,   367,   367,
    2264        0,     0,   210,     0,     0,     0,   217,     0,     0,     0,
    2265        0,     0,     0,     0,     0,  1195,     0,     0,     0,   474,
    2266        0,     0,     0,     0,     0,     0,     0,     0,     0,   411,
    2267      411,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2268      505,     0,     0,     0,     0,     0,     0,   792,   362,     0,
    2269        0,     0,     0,     0,     0,     0,     0,   606,     0,   606,
    2270      606,     0,     0,     0,     0,     0,   606,     0,     0,     0,
    2271      505,     0,     0,     0,     0,     0,   829,   362,     0,     0,
    2272        0,     0,   362,     0,     0,     0,     0,     0,     0,     0,
    2273        0,   362,   362,     0,     0,  1125,     0,     0,     0,     0,
    2274        0,     0,     0,     0,     0,     0,     0,   362,     0,     0,
    2275        0,     0,   411,   870,   126,   126,   411,   873,     0,   367,
    2276        0,     0,     0,   875,     0,     0,     0,     0,     0,     0,
    2277        0,     0,     0,     0,   379,     0,     0,     0,     0,     0,
    2278        0,   126,   411,  1284,   126,   126,     0,   126,     0,   126,
    2279      126,     0,     0,     0,   126,   126,  1188,     0,     0,     0,
    2280        0,     0,     0,     0,     0,   362,   606,     0,     0,     0,
    2281        0,     0,     0,     0,     0,     0,   520,     0,   520,     0,
    2282        0,     0,     0,     0,   505,     0,     0,     0,     0,     0,
    2283     1200,     0,     0,     0,     0,  1202,     0,     0,     0,     0,
    2284      362,     0,     0,  1206,   411,   411,     0,     0,     0,     0,
    2285        0,     0,     0,   520,     0,   520,     0,     0,     0,     0,
    2286        0,     0,     0,     0,     0,     0,     0,   700,     0,     0,
    2287      505,     0,     0,     0,     0,     0,     0,  1237,     0,     0,
    2288        0,     0,   164,     0,     0,     0,     0,   411,  1244,     0,
    2289        0,  1245,     0,  1246,     0,     0,     0,     0,     0,     0,
    2290        0,     0,   505,   606,     0,   606,   733,     0,  1255,  1256,
    2291        0,     0,     0,     0,   505,   606,     0,     0,   749,     0,
    2292        0,     0,     0,     0,   733,     0,     0,   733,  1268,     0,
    2293      126,   126,  1141,     0,     0,     8,     9,    10,    11,    12,
    2294      758,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2295        0,     0,     0,   505,     0,     0,     0,     0,     0,     0,
    2296        0,     0,   281,   282,    31,   283,     0,     0,     0,     0,
    2297      787,     0,     0,     0,  1307,     0,     0,   344,     0,     0,
    2298        0,   749,  1311,     0,     0,     0,   362,     0,     0,     0,
    2299        0,   284,    34,   362,   411,     0,   411,   285,     0,     0,
    2300      411,   286,     0,     0,   287,   288,   289,   290,   291,   292,
    2301       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2302        0,   606,   606,     0,     0,     0,     0,   848,     0,   505,
    2303        0,     0,     0,     0,     0,   379,   295,     0,   376,     0,
    2304        0,     0,     0,     0,  1142,    46,   297,   298,   299,   300,
    2305        0,     0,  1358,     0,  1359,     0,   411,     0,     0,     0,
     2283       0,     0,   522,     0,   522,   212,     0,     0,     0,     0,
     2284       0,     0,     0,     0,     0,     0,   212,     0,  1001,     0,
     2285       0,     0,     0,     0,  1013,  1002,   413,     0,   381,   364,
     2286       0,   166,     0,     0,     0,     0,     0,     0,  1004,     0,
     2287    1005,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2288       0,     0,     0,  1015,     0,     0,     0,   346,     0,  1019,
     2289       0,     0,     0,     0,   346,     0,     0,     0,   413,     0,
     2290       0,  1056,   364,     0,  1057,     0,     0,     0,     0,     0,
     2291       0,     0,     0,     0,     0,   212,     0,     0,     0,     0,
     2292       0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
     2293       0,     0,     0,     0,   324,     0,     0,     0,     0,     0,
     2294       0,     0,     0,     0,     0,     0,   413,   413,     0,     0,
    23062295       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2307     1368,     0,  1369,     0,     0,   411,  1123,     0,     0,     0,
    2308        0,   126,     0,     0,     0,   362,   126,  1376,   505,   505,
    2309        0,   411,  1134,     0,   606,   606,  1139,     0,     0,     0,
    2310        0,     0,  1394,  1396,     0,     0,   362,   362,     0,     0,
    2311        0,   924,     0,  1401,     0,     0,  1206,     0,     0,     0,
     2296       0,   381,     0,     0,   794,   364,   960,     0,     0,   735,
     2297       0,     0,     0,     0,   608,     0,   608,   608,     0,     0,
     2298       0,     0,     0,   608,     0,     0,     0,     0,     0,  1131,
     2299       0,     0,     0,   831,   364,     0,     0,     0,     0,   364,
     2300    1146,     0,     0,     0,     0,     0,     0,     0,   364,   364,
     2301       0,     0,  1127,     0,     0,     0,     0,   212,     0,     0,
     2302     381,     0,  1163,     0,   364,     0,     0,     0,     0,   413,
     2303     872,     0,     0,   413,   875,     0,     0,   960,   960,   505,
     2304     877,   507,   510,     0,     0,     0,     0,     0,     0,     0,
     2305       0,   513,   514,     0,     0,     0,     0,  1194,     0,   413,
     2306       0,     0,     0,     0,     0,     0,   507,   507,     0,     0,
     2307       0,     0,     0,  1190,     0,     0,     0,     0,     0,     0,
     2308       0,     0,   364,   608,     0,     0,     0,     0,     0,     0,
    23122309       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2313        0,     0,     0,   749,     0,   948,     0,     0,  1424,     0,
    2314        0,     0,     0,     0,     0,   958,     0,  1431,     0,     0,
    2315     1433,   965,  1435,  1437,  1439,     0,     0,     0,     0,     0,
    2316        0,     0,     0,     0,     0,     0,   411,     0,   411,     0,
    2317        0,     0,     0,   411,     0,     0,     0,     0,     0,     0,
    2318        0,     0,   606,     0,     0,     0,     0,     0,     0,     0,
    2319        0,   982,   983,  1470,     0,  1472,     0,  1206,     0,     0,
    2320        0,     0,     0,     0,     0,   411,  1220,   344,     0,     0,
    2321        0,     0,     0,  1483,     0,     0,     0,     0,     0,     0,
    2322        0,     0,     0,     0,     0,     0,     0,     0,     0,   362,
    2323        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2324        0,   126,     0,     0,     0,     0,  1011,     0,     0,     0,
    2325      379,     0,     0,     0,     0,     8,     9,    10,    11,    12,
     2310       0,   507,     0,     0,     0,     0,     0,  1202,     0,     0,
     2311       0,   960,  1204,     0,   212,     0,     0,   364,     0,     0,
     2312    1208,   413,   413,     0,     0,     0,     0,     0,     0,     0,
     2313     850,     0,     0,     0,     0,     0,   507,     0,     0,     0,
     2314       0,     0,     0,     0,     0,  1249,  1250,     0,     0,     0,
     2315       0,     0,     0,     0,  1239,     0,     0,     0,     0,     0,
     2316       0,     0,     0,     0,   413,  1246,     0,     0,  1247,     0,
     2317    1248,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2318     608,     0,   608,     0,     0,  1257,  1258,     0,     0,     0,
     2319       0,     0,   608,     0,     0,     0,     0,     0,     0,     0,
     2320       0,     0,     0,     0,     0,  1270,     0,     0,     0,     0,
     2321       0,     0,     0,     0,     0,  -523,     0,     0,     1,     2,
     2322       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    23262323      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2327       23,    24,    25,     0,     0,    26,    27,    28,     0,   344,
    2328        0,     0,     0,     0,    31,     0,   344,     0,     0,     0,
    2329        0,     0,     0,     0,     0,     0,   505,     0,     0,     0,
    2330        0,     0,     0,     0,     0,     0,   362,     0,     0,     0,
    2331        0,     0,    34,   505,     0,     0,     0,     0,     0,   206,
    2332       39,     0,     0,     0,     0,     0,   322,   204,     2,   205,
     2324      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2325      31,  1309,     0,    32,     0,     0,    33,    34,     0,  1313,
     2326       0,     0,     0,   364,     0,     0,     0,     0,     0,     0,
     2327     364,   413,     0,   413,     0,     0,     0,   413,     0,     0,
     2328       0,    35,     0,     0,    36,     0,    37,  1354,    38,    39,
     2329     735,    40,    41,    42,     0,     0,     0,     0,   608,   608,
     2330       0,     0,    43,    44,   507,   507,   507,   507,   507,   507,
     2331     507,   507,   507,   507,   507,   507,   507,   507,   507,   507,
     2332     507,   507,     0,     0,     0,     0,     0,     0,    45,  1360,
     2333      46,  1361,     0,   413,     0,     0,    47,    48,     0,     0,
     2334       0,     0,     0,     0,     0,     0,     0,  1370,     0,  1371,
     2335       0,     0,   413,  1125,     0,     0,     0,     0,     0,     0,
     2336       0,     0,   364,     0,  1378,   212,     0,     0,   413,  1136,
     2337       0,   608,   608,  1141,     0,     0,     0,     0,     0,  1396,
     2338    1398,     0,     0,   364,   364,     0,     0,     0,     0,     0,
     2339    1403,     0,     0,  1208,     8,     9,    10,    11,    12,    13,
     2340      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2341      24,    25,    26,    27,  -299,  1426,     0,     0,     0,     0,
     2342       0,     0,     0,     0,  1433,    33,     0,  1435,     0,  1437,
     2343    1439,  1441,     0,     0,     0,     0,     0,     0,     0,     0,
     2344       0,     0,     0,   413,   507,   413,     0,     0,     0,     0,
     2345     413,     0,     0,    36,     0,     0,     0,     0,     0,   608,
     2346       0,     0,     0,     0,  -299,     0,     0,     0,     0,     0,
     2347    1472,     0,  1474,     0,  1208,     0,     0,     0,     0,     0,
     2348       0,     0,   413,  1222,     0,     0,     0,     0,     0,     0,
     2349    1485,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2350       0,     0,     0,     0,   324,   507,   364,     1,     2,   207,
    23332351       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    23342352      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2335       24,    25,     0,   379,    26,    27,    28,     0,   958,   362,
    2336      362,   733,     0,    31,    45,    46,     0,     0,     0,   126,
     2353      24,    25,    26,    27,     0,   507,    28,    29,    30,    31,
     2354       0,     0,    32,   283,   284,    33,  1022,  1023,     0,  1024,
     2355       0,     0,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,
     2356       0,     0,     0,  1033,     0,     0,     0,  1034,  1035,     0,
     2357      35,     0,   286,    36,     0,    37,     0,    38,  1036,     0,
     2358      40,    41,   288,   364,     0,   289,   290,   291,   292,   293,
     2359     294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
    23372360       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2338        0,  1129,     0,     0,     0,   505,   505,     0,     0,     0,
    2339        0,    34,  1144,    35,     0,    36,    37,     0,   206,    39,
    2340       40,     0,     0,     0,     0,     0,     0,     0,     0,    41,
    2341       42,     0,   379,     0,  1161,     0,     0,     0,     0,     0,
    2342        0,     0,     0,     0,     0,     0,     0,     0,     0,   958,
    2343      958,     0,     0,     0,     0,    43,     0,   207,     0,     0,
    2344        0,     0,     0,    45,    46,     0,     0,     0,     0,  1192,
    2345        0,     0,     0,     0,     0,     1,     2,   205,     4,     5,
     2361       0,     0,     0,     0,     0,     0,     0,   297,     0,   298,
     2362       0,     0,   172,     0,     0,    47,    48,   299,   300,   301,
     2363     302,     0,     0,     0,     0,  1037,   364,   364,     0,     0,
     2364    -134,     0,     0,     0,     0,     0,     0,     0,     0,   507,
     2365       1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2366      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2367      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2368      29,    30,    31,     0,     0,    32,   283,   284,    33,   285,
     2369       0,     0,     0,     0,     0,   507,     0,     0,     0,     0,
     2370       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2371       0,     0,     0,     0,     0,   286,    36,     0,    37,     0,
     2372      38,   287,     0,    40,    41,   288,     0,   507,   289,   290,
     2373     291,   292,   293,   294,    43,    44,     0,   295,   296,   507,
     2374       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2375       0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
     2376     297,     0,   298,     0,     0,     0,     0,     0,    47,    48,
     2377     299,   300,   301,   302,     0,     0,     0,     0,   507,     0,
     2378       0,     0,     0,  -134,     0,     0,     0,     0,     0,     1,
     2379       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2380      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2381      22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
     2382      30,    31,     0,     0,    32,     0,     0,    33,    34,     0,
     2383       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2384       0,     0,     0,     0,     0,     0,   413,     0,     0,     0,
     2385       0,     0,    35,     0,   507,    36,     0,    37,     0,    38,
     2386      39,     0,    40,    41,    42,     0,     0,     0,     0,     0,
     2387     413,   413,     0,    43,    44,     0,     0,     0,     0,     0,
     2388       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2389       0,     0,     0,     0,     0,   413,     0,     0,     0,    45,
     2390       0,    46,     0,     0,     0,  -527,     0,    47,    48,     0,
     2391       0,     0,     0,   507,   507,     1,     2,   207,     4,     5,
    23462392       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    23472393      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2348      362,     0,    26,    27,    28,    29,     0,     0,    30,     0,
    2349        0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
    2350        0,     0,     0,   958,     0,     0,     0,     0,     0,     0,
    2351        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2352        0,    35,   848,    36,     0,     0,    38,    39,     0,     0,
    2353        0,     0,     0,     0,     0,     0,     0,  1247,  1248,     0,
    2354        2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
    2355       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2356       22,    23,    24,    25,     0,    44,    26,    27,    28,   411,
    2357        0,    45,    46,     0,     0,    31,     0,     0,     0,     0,
    2358        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2359        0,     0,     0,   411,   411,     0,     0,     0,     0,     0,
    2360        0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
    2361       38,    39,     0,     0,     0,     0,     0,     0,   411,     0,
    2362        0,     0,     1,     2,   205,     4,     5,     6,     7,     8,
    2363        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2364       19,    20,    21,    22,    23,    24,    25,     0,  -418,    26,
    2365       27,    28,    29,     0,     0,    30,   281,   282,    31,  1020,
    2366     1021,     0,  1022,     0,     0,  1023,  1024,  1025,  1026,  1027,
    2367     1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,  1352,
    2368     1032,  1033,   733,    33,     0,   284,    34,     0,    35,     0,
    2369       36,  1034,     0,    38,    39,   286,     0,     0,   287,   288,
    2370      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2394      26,    27,     0,     0,    28,    29,    30,    31,     0,     0,
     2395      32,   283,   284,    33,   285,     0,     0,     0,     0,     0,
    23712396       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23722397       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2373      295,     0,   296,     0,     0,   170,     0,     0,    45,    46,
    2374      297,   298,   299,   300,     0,     0,     0,     0,  1035,     0,
    2375        0,     0,     0,  -134,     1,     2,   205,     4,     5,     6,
     2398     286,    36,     0,    37,     0,    38,   287,     0,    40,    41,
     2399     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
     2400      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
     2401       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2402       0,     0,     0,     0,     0,   297,     0,   298,     0,     0,
     2403       0,     0,     0,    47,    48,   299,   300,   301,   302,     0,
     2404       0,     0,     0,     0,     0,     2,   207,     4,     5,     6,
    23762405       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2377       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2378        0,    26,    27,    28,    29,     0,     0,    30,   281,   282,
    2379       31,   283,     8,     9,    10,    11,    12,    13,    14,    15,
    2380       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2381        0,     0,    26,    27,    28,     0,     0,   284,    34,     0,
    2382       35,    31,    36,   285,     0,    38,    39,   286,     0,     0,
    2383      287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
    2384      294,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2385        0,     0,     0,     0,   110,     0,    38,    39,     0,     0,
    2386        0,     0,   295,     0,   296,     0,     0,    41,    42,     0,
    2387       45,    46,   297,   298,   299,   300,     0,     0,     0,     0,
    2388        0,     0,     0,     0,     0,  -134,     0,     0,     0,     0,
    2389        0,     0,     0,     0,     0,     0,   322,     1,     2,   205,
     2406      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2407      27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
     2408     283,   284,    33,   285,     0,     0,     0,     0,     0,     0,
     2409       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2410       0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
     2411      36,     0,    37,     0,    38,   287,     0,    40,    41,   288,
     2412       0,   507,   289,   290,   291,   292,   293,   294,    43,    44,
     2413       0,   295,   296,     0,     0,     0,     0,     0,   507,     0,
     2414       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2415       0,     0,     0,     0,   297,     0,   343,     0,     0,     0,
     2416       0,   750,   344,    48,   299,   300,   301,   302,     2,   207,
    23902417       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    23912418      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2392       24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
    2393       30,   281,   282,    31,   283,     8,     9,    10,    11,    12,
    2394       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2395       23,    24,    25,  -299,     0,     0,     0,     0,     0,     0,
    2396      284,    34,     0,    35,    31,    36,   285,     0,    38,    39,
    2397      286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
    2398       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2399        0,     0,    34,     0,     0,     0,     0,     0,     0,     0,
    2400        0,     0,     0,  -299,     0,   295,     0,   296,     0,     0,
    2401        0,     0,     0,    45,    46,   297,   298,   299,   300,     2,
    2402      205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2403       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2404       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2405        0,     0,   281,   282,    31,   283,     8,     9,    10,    11,
    2406       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2407       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2408        0,   284,    34,     0,    35,    31,    36,   285,     0,    38,
    2409       39,   286,     0,     0,   287,   288,   289,   290,   291,   292,
    2410       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2411        0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
    2412       38,    39,     0,     0,     0,     0,   295,     0,   341,     0,
    2413        0,     0,     0,   748,   342,    46,   297,   298,   299,   300,
    2414        2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
    2415       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2416       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2417        0,     0,     0,   281,   282,    31,   283,     8,     9,    10,
     2419      24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
     2420       0,     0,     0,   283,   284,    33,   285,     0,     0,     0,
     2421     507,   507,     0,     0,     0,     0,     0,     0,     0,     0,
     2422       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2423       0,     0,   286,    36,     0,    37,     0,    38,   287,     0,
     2424      40,    41,   288,     0,     0,   289,   290,   291,   292,   293,
     2425     294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
     2426       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2427       0,     0,     0,     0,     0,     0,     0,   297,     0,   343,
     2428       0,     0,     0,     0,   750,    47,    48,   299,   300,   301,
     2429     302,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    24182430      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2419       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2420        0,     0,   284,    34,     0,    35,    31,    36,   285,     0,
    2421       38,    39,   286,     0,     0,   287,   288,   289,   290,   291,
    2422      292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
    2423        0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
    2424        0,   206,    39,     0,     0,     0,     0,   295,     0,   341,
    2425        0,     0,     0,     0,   748,    45,    46,   297,   298,   299,
    2426      300,     2,   205,     4,     5,     6,     7,     8,     9,    10,
    2427       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2428       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2429        0,     0,     0,     0,   281,   282,    31,   283,     0,     0,
     2431      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2432      29,    30,     0,     0,     0,     0,   283,   284,    33,   285,
    24302433       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24312434       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2432        0,     0,     0,   284,    34,     0,    35,     0,    36,   285,
    2433        0,    38,    39,   286,     0,     0,   287,   288,   289,   290,
    2434      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2435        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2436        0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
    2437      341,     0,     0,     0,     0,     0,   342,    46,   297,   298,
    2438      299,   300,     2,   205,     4,     5,     6,     7,     8,     9,
    2439       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2440       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2441       28,     0,     0,     0,     0,   281,   282,    31,   283,     0,
     2435       0,     0,     0,     0,     0,   286,    36,     0,    37,     0,
     2436      38,   287,     0,    40,    41,   288,     0,     0,   289,   290,
     2437     291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
    24422438       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24432439       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2444        0,     0,     0,     0,   284,    34,     0,    35,     0,    36,
    2445      285,     0,   206,    39,   286,     0,     0,   287,   288,   289,
    2446      290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
     2440     297,     0,   343,     0,     0,     0,     0,     0,   344,    48,
     2441     299,   300,   301,   302,     2,   207,     4,     5,     6,     7,
     2442       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2443      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2444       0,     0,    28,    29,    30,     0,     0,     0,     0,   283,
     2445     284,    33,   285,     0,     0,     0,     0,     0,     0,     0,
    24472446       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2448        0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
    2449        0,   979,     0,     0,     0,     0,     0,   980,    46,   297,
    2450      298,   299,   300,     2,   205,     4,     5,     6,     7,     8,
    2451        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2452       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2453       27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2447       0,     0,     0,     0,     0,     0,     0,     0,   286,    36,
     2448       0,    37,     0,    38,   287,     0,   208,    41,   288,     0,
     2449       0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
     2450     295,   296,     0,     0,     0,     0,     0,     0,     0,     0,
     2451       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2452       0,     0,     0,   297,     0,   981,     0,     0,     0,     0,
     2453       0,   982,    48,   299,   300,   301,   302,     2,   207,     4,
     2454       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2455      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2456      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
     2457       0,     0,   283,   284,    33,   285,     0,     0,     0,     0,
    24542458       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24552459       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2456        0,     0,     0,     0,     0,   284,    34,     0,    35,     0,
    2457       36,   285,     0,   206,    39,   286,     0,     0,   287,   288,
    2458      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2460       0,   286,    36,     0,    37,     0,    38,   287,     0,   208,
     2461      41,   288,     0,     0,   289,   290,   291,   292,   293,   294,
     2462      43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
     2463       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2464       0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
     2465       0,     0,     0,     0,    47,    48,   299,   300,   301,   302,
     2466       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
     2467      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2468      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2469      29,    30,    31,     0,     0,    32,     0,     0,    33,    34,
    24592470       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24602471       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2461      295,     0,   376,     0,     0,     0,     0,     0,    45,    46,
    2462      297,   298,   299,   300,  -521,     0,     0,     1,     2,     3,
     2472       0,     0,     0,    35,     0,     0,    36,     0,    37,     0,
     2473      38,    39,     0,    40,    41,    42,     0,     0,     0,     0,
     2474       0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
     2475       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2476       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2477      45,     0,    46,     0,     0,     0,     0,     0,    47,    48,
     2478     206,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2479      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2480      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2481      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
     2482       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2483      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2484      27,     0,     0,    28,    29,    30,    36,     0,    37,     0,
     2485      38,    39,    33,   208,    41,    42,     0,     0,     0,     0,
     2486       0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
     2487       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2488      36,     0,     0,     0,     0,     0,     0,    40,    41,     0,
     2489      45,     0,   209,     0,     0,     0,     0,     0,    47,    48,
     2490       1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2491      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2492      21,    22,    23,    24,    25,    26,    27,  -298,     0,    28,
     2493      29,    30,    31,     0,     0,    32,     0,     0,    33,     0,
     2494       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2495       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2496       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
     2497      38,     0,     0,    40,    41,     0,     0,  -298,     1,     2,
     2498     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2499      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2500      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2501      31,     0,    46,    32,     0,     0,    33,     0,    47,    48,
     2502       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2503       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2504       0,     0,     0,     0,    36,     0,    37,     0,    38,     0,
     2505       0,    40,    41,   206,     2,   207,     4,     5,     6,     7,
     2506       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2507      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2508       0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
     2509      46,    33,     0,     0,     0,     0,    47,    48,     0,  1143,
     2510       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     2511       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
     2512       0,    37,     0,    38,     0,     0,   208,    41,     0,     0,
     2513       0,   283,   284,    33,   285,     0,     0,     0,     0,     0,
     2514       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2515       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2516     286,    36,     0,     0,     0,   209,   287,     0,     0,     0,
     2517     288,    47,    48,   289,   290,   291,   292,   293,   294,    43,
     2518      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
     2519       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2520       0,     0,     0,     0,     0,   297,     0,   378,     0,     0,
     2521       0,     0,     0,  1144,    48,   299,   300,   301,   302,     2,
     2522     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2523      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2524      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2525       0,     0,     0,     0,     0,     0,    33,     0,     0,     8,
     2526       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2527      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2528       0,    28,    29,    30,    36,     0,    37,     0,    38,    39,
     2529      33,   208,    41,    42,     0,     0,     0,     0,     0,     0,
     2530       0,     0,    43,    44,     0,     0,     0,     0,     0,     0,
     2531       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
     2532       0,     0,     0,     0,     0,    40,    41,     0,    45,     0,
     2533     209,     0,     0,     0,     0,     0,    47,    48,     2,   207,
    24632534       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    24642535      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2465       24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
    2466       30,     0,     0,    31,    32,     0,     0,     0,     0,     0,
     2536      24,    25,    26,    27,   258,     0,    28,    29,    30,     0,
     2537      47,    48,     0,     0,     0,    33,     0,     0,     0,     0,
    24672538       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2468        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2469        0,    34,     0,    35,     0,    36,    37,     0,    38,    39,
    2470       40,     0,     0,     0,     0,     0,     0,     0,     0,    41,
    2471       42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24722539       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2473        0,     0,     0,     0,     0,    43,     0,    44,     0,     0,
    2474        0,     0,     0,    45,    46,     1,     2,     3,     4,     5,
     2540       0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
     2541      40,    41,     0,     2,   207,     4,     5,     6,     7,     8,
     2542       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2543      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2544       0,    28,    29,    30,     0,     0,     0,     0,  -407,   670,
     2545      33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
     2546       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2547       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
     2548      37,     0,    38,     0,     0,    40,    41,     0,     0,     0,
     2549       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2550       0,     0,     0,     0,     0,     0,     0,     0,     0,  1334,
     2551       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2552       0,     0,     0,     0,   670,     0,     0,     0,     0,     0,
     2553      47,    48,     2,   207,     4,     5,     6,     7,     8,     9,
     2554      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2555      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
     2556      28,    29,    30,     0,     0,     0,     0,     0,     0,    33,
     2557       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2558      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2559      26,    27,     0,     0,    28,    29,    30,    36,     0,    37,
     2560       0,    38,     0,    33,    40,    41,     0,     0,     0,     0,
     2561       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2562       0,     0,     0,     0,     0,     0,     0,     0,  1336,     0,
     2563       0,    36,     0,     0,     0,     0,     0,     0,    40,    41,
     2564       0,     0,     0,   670,     0,     0,     0,     0,     0,    47,
     2565      48,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2566      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2567      21,    22,    23,    24,    25,    26,    27,    46,     0,    28,
     2568      29,    30,     0,    47,    48,     0,     0,     0,    33,     0,
     2569       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2570       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2571       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
     2572      38,     0,     0,   208,    41,     0,     2,   207,     4,     5,
    24752573       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    24762574      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2477        0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
    2478        0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
    2479        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2480        0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
    2481        0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
    2482        0,     0,     0,     0,     0,     0,     0,    41,    42,     0,
     2575      26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
     2576       0,     0,   271,    33,     0,     0,     0,     0,    47,    48,
    24832577       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24842578       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2485        0,     0,     0,    43,     0,    44,     0,     0,     0,  -525,
    2486        0,    45,    46,     1,     2,     3,     4,     5,     6,     7,
    2487        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2488       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2489       26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
    2490       32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2579       0,    36,     0,    37,     0,    38,     0,     0,    40,    41,
     2580       0,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2581      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2582      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2583      29,    30,     0,     0,     0,     0,     0,   670,    33,     0,
     2584       0,     0,     0,    47,    48,     0,     0,     0,     0,     0,
    24912585       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2492        0,     0,     0,     0,    33,     0,     0,    34,     0,    35,
    2493        0,    36,    37,     0,    38,    39,    40,     0,     0,     0,
    2494        0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2586       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
     2587      38,     0,     0,   208,    41,     8,     9,    10,    11,    12,
     2588      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2589      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2590       0,     0,     0,     0,   283,   284,    33,   285,     0,     0,
     2591       0,     0,   209,     0,     0,     0,     0,     0,    47,    48,
     2592       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2593       0,     0,     0,   286,    36,     0,     0,     0,     0,   287,
     2594       0,    40,    41,   288,     0,     0,   289,   290,   291,   292,
     2595     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
     2596       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2597       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
     2598     515,     0,     0,   172,     0,     0,    47,    48,   299,   300,
     2599     301,   302,     8,     9,    10,    11,    12,    13,    14,    15,
     2600      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2601      26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
     2602       0,   283,   284,    33,   285,     0,     0,     0,     0,     0,
    24952603       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24962604       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2497        0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
    2498       46,     1,     2,   205,     4,     5,     6,     7,     8,     9,
    2499       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2500       20,    21,    22,    23,    24,    25,  -298,     0,    26,    27,
    2501       28,    29,     0,     0,    30,     0,     0,    31,     0,     0,
     2605     286,    36,     0,     0,     0,     0,   287,     0,    40,    41,
     2606     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
     2607      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
     2608       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2609       0,     0,     0,     0,     0,   297,   -40,   298,     0,     0,
     2610       0,     0,     0,    47,    48,   299,   300,   301,   302,     8,
     2611       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2612      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2613       0,    28,    29,    30,     0,     0,     0,     0,   283,   284,
     2614      33,   285,     0,     0,     0,     0,     0,     0,     0,     0,
     2615       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2616       0,     0,     0,     0,     0,     0,     0,   286,    36,     0,
     2617       0,     0,     0,   287,     0,    40,    41,   288,     0,     0,
     2618     289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
     2619     296,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2620       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2621       0,     0,   297,     0,   298,     0,     0,     0,     0,     0,
     2622      47,    48,   299,   300,   301,   302,     8,     9,    10,    11,
     2623      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2624      22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
     2625      30,     0,     0,     0,     0,   283,   284,    33,   285,     0,
    25022626       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25032627       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2504        0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2505        0,     0,    38,    39,     0,     0,  -298,   204,     2,   205,
     2628       0,     0,     0,     0,   286,    36,     0,     0,     0,     0,
     2629     287,     0,    40,    41,   288,     0,     0,   289,   290,   291,
     2630     292,   293,   294,    43,    44,     0,   295,   296,     0,     0,
     2631       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2632       0,     0,     0,     0,     0,     0,     0,     0,     0,   297,
     2633       0,   343,     0,     0,     0,     0,     0,    47,    48,   299,
     2634     300,   301,   302,     8,     9,    10,    11,    12,    13,    14,
     2635      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2636      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
     2637       0,     0,   283,   284,    33,   285,     0,     0,     0,     0,
     2638       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2639       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2640       0,   286,    36,     0,     0,     0,     0,   287,     0,    40,
     2641      41,   288,     0,     0,   289,   290,   291,   292,   293,   294,
     2642      43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
     2643       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2644       0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
     2645       0,     0,     0,     0,    47,    48,   299,   300,   301,   302,
     2646     465,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2647      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2648      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2649      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
     2650       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2651      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2652       0,     0,    28,    29,    30,     0,    36,     0,    37,     0,
     2653      38,    33,     0,    40,    41,     0,     0,     0,     0,     0,
     2654       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2655       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
     2656       0,     0,     0,     0,   112,     0,    40,    41,     0,     0,
     2657       0,     0,     0,     0,     0,    -3,     0,    43,    44,     0,
     2658       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2659      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2660      24,    25,    26,    27,     0,    46,    28,    29,    30,     0,
     2661       0,    47,    48,     0,     0,    33,   677,     8,     9,    10,
     2662      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2663      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2664      29,    30,     0,    36,     0,     0,     0,     0,    33,   677,
     2665      40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
     2666       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2667       0,     0,     0,     0,     0,     0,    36,     0,     0,     0,
     2668       0,     0,     0,    40,    41,     0,     0,     0,     0,   678,
     2669       0,     0,     0,   679,     0,    47,    48,     0,     0,     0,
     2670       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2671      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2672      27,     0,   678,    28,    29,    30,  1072,     0,    47,    48,
     2673       0,     0,    33,   677,     8,     9,    10,    11,    12,    13,
     2674      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2675      24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
     2676      36,     0,     0,     0,     0,    33,     0,    40,    41,     0,
     2677       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2678       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2679       0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
     2680     208,    41,     0,     0,     0,     0,   678,     0,     0,     0,
     2681    1199,     0,    47,    48,     0,     0,     0,     0,     8,     9,
     2682      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2683      20,    21,    22,    23,    24,    25,    26,    27,     0,   271,
     2684      28,    29,    30,     0,     0,    47,    48,     0,     0,    33,
     2685       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2686      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2687       0,     0,    28,    29,    30,     0,     0,    36,     0,     0,
     2688       0,    33,     0,     0,    40,    41,     0,     0,     0,     0,
     2689       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2690       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
     2691       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
     2692       0,     0,     0,   339,     0,     0,     0,     0,     0,    47,
     2693      48,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2694      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2695      24,    25,    26,    27,     0,   678,    28,    29,    30,     0,
     2696       0,    47,    48,     0,     0,    33,     0,     0,     0,     0,
     2697       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2698       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2699       0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
     2700      40,    41,     0,     2,   207,     4,     5,     6,     7,     8,
     2701       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2702      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2703       0,    28,    29,    30,     0,     0,     0,     0,     0,   670,
     2704      33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
     2705       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2706       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
     2707      37,     0,    38,     0,     0,    40,    41,   283,   284,     0,
     2708     285,  1023,     0,  1024,     0,     0,  1025,  1026,  1027,  1028,
     2709    1029,  1030,  1031,  1032,     0,     0,  1510,  1033,     0,     0,
     2710       0,  1034,  1035,     0,    35,     0,   286,     0,     0,     0,
     2711       0,     0,  1036,  -420,     0,     0,   288,     0,     0,   289,
     2712     290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
     2713       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2714       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2715       0,   297,     0,   378,     0,     0,   172,     0,     0,    47,
     2716      48,   299,   300,   301,   302,     0,     0,   283,   284,  1037,
     2717     285,  1023,     0,  1024,  -134,     0,  1025,  1026,  1027,  1028,
     2718    1029,  1030,  1031,  1032,     0,     0,     0,  1033,     0,     0,
     2719       0,  1034,  1035,     0,    35,     0,   286,     0,     0,     0,
     2720       0,     0,  1036,     0,     0,     0,   288,     0,     0,   289,
     2721     290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
     2722       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2723       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2724       0,   297,     0,   378,     0,     0,   172,     0,     0,    47,
     2725      48,   299,   300,   301,   302,     0,     0,     0,     0,  1037,
     2726       0,     0,     0,     0,  -134,     2,   207,     4,     5,     6,
     2727       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2728      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2729      27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
     2730       0,     0,    33,     0,   283,   284,     0,   285,  1023,     0,
     2731    1024,  1382,  1383,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
     2732    1032,     0,     0,  1510,  1033,     0,     0,     0,  1034,  1035,
     2733      36,    35,    37,   286,    38,     0,     0,    40,    41,  1036,
     2734       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
     2735     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
     2736       0,  1293,     0,     0,     0,     0,     0,     0,     0,     0,
     2737       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
     2738     378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
     2739     301,   302,     0,     0,   283,   284,  1037,   285,  1023,     0,
     2740    1024,  1382,  1383,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
     2741    1032,     0,     0,     0,  1033,     0,     0,     0,  1034,  1035,
     2742       0,    35,     0,   286,     0,     0,     0,     0,     0,  1036,
     2743       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
     2744     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
     2745       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2746       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
     2747     378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
     2748     301,   302,     0,     0,   283,   284,  1037,   285,  1023,     0,
     2749    1024,     0,     0,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
     2750    1032,     0,     0,     0,  1033,     0,     0,     0,  1034,  1035,
     2751       0,    35,     0,   286,     0,     0,     0,     0,     0,  1036,
     2752       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
     2753     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
     2754       0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
     2755       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
     2756     378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
     2757     301,   302,   286,     0,     0,     0,  1037,     0,   633,     0,
     2758     141,   142,   288,     0,     0,   289,   290,   291,   292,   293,
     2759     294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
     2760       0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
     2761       0,     0,     0,     0,     0,     0,     0,   297,     0,   634,
     2762       0,   635,   379,     0,     0,    47,    48,   299,   300,   301,
     2763     302,   286,     0,     0,     0,     0,     0,   287,     0,     0,
     2764       0,   288,     0,     0,   289,   290,   291,   292,   293,   294,
     2765      43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
     2766       0,   283,   284,     0,   285,     0,     0,     0,     0,     0,
     2767       0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
     2768       0,   379,     0,     0,    47,    48,   299,   300,   301,   302,
     2769     286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
     2770     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
     2771      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
     2772     283,   284,     0,   285,     0,     0,     0,     0,     0,     0,
     2773       0,     0,     0,     0,     0,   297,     0,   378,     0,     0,
     2774       0,     0,   750,    47,    48,   299,   300,   301,   302,   286,
     2775       0,     0,     0,     0,     0,   287,     0,     0,     0,   288,
     2776       0,     0,   289,   290,   291,   292,   293,   294,    43,    44,
     2777       0,   295,   296,     0,     0,     0,     0,     0,     0,   283,
     2778     284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
     2779       0,     0,     0,     0,   297,     0,   378,     0,     0,   958,
     2780       0,     0,    47,    48,   299,   300,   301,   302,   286,     0,
     2781       0,     0,     0,     0,   287,     0,     0,     0,   288,     0,
     2782       0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
     2783     295,   296,     0,     0,     0,     0,     0,     0,   283,   284,
     2784       0,   285,     0,     0,     0,     0,     0,     0,     0,     0,
     2785       0,     0,     0,   297,     0,   378,     0,     0,     0,     0,
     2786       0,    47,    48,   299,   300,   301,   302,   286,     0,     0,
     2787       0,     0,     0,   287,     0,     0,     0,   288,     0,     0,
     2788     289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
     2789     296,     0,     0,     0,     0,     0,     0,   283,   284,     0,
     2790     285,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2791       0,     0,   504,     0,   378,     0,     0,     0,     0,     0,
     2792      47,    48,   299,   300,   301,   302,   286,     0,     0,     0,
     2793       0,     0,   287,     0,     0,     0,   288,     0,     0,   289,
     2794     290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
     2795       0,     0,     0,     0,     0,     0,   283,   284,     0,   285,
     2796       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2797       0,   509,     0,   378,     0,     0,     0,     0,     0,    47,
     2798      48,   299,   300,   301,   302,   286,     0,     0,     0,     0,
     2799       0,   287,     0,     0,     0,   288,     0,     0,   289,   290,
     2800     291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
     2801       0,     0,     0,     0,     0,   283,   284,     0,   285,     0,
     2802       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2803     512,     0,   378,     0,     0,     0,     0,     0,    47,    48,
     2804     299,   300,   301,   302,   286,     0,     0,     0,     0,     0,
     2805     287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
     2806     292,   293,   294,    43,    44,     0,   295,   296,     0,     0,
     2807       0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
     2808       0,     0,     0,     0,     0,     0,     0,     0,     0,   297,
     2809       0,   378,     0,     0,     0,     0,     0,   701,    48,   299,
     2810     300,   301,   302,   286,     0,     0,     0,     0,     0,   287,
     2811       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
     2812     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
     2813       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2814       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
     2815     378,     0,     0,     0,     0,     0,   344,    48,   299,   300,
     2816     301,   302,     2,   207,     4,     5,     6,     7,     8,     9,
     2817      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2818      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
     2819       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2820       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2821      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2822      26,    27,     0,     0,    28,    29,    30,    36,     0,    37,
     2823       0,    38,    39,    33,   175,   176,    42,     0,     0,     0,
     2824       0,     0,     0,     0,     0,    43,    44,     0,     0,     0,
     2825       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2826       0,    36,     0,     0,     0,     0,   112,     0,    40,    41,
     2827       0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
     2828      44,   206,     2,   207,     4,     5,     6,     7,     8,     9,
     2829      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2830      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
     2831      28,    29,    30,     0,     0,     0,     0,     0,     0,    33,
     2832       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2833       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2834       0,     0,     0,     0,     0,     0,     0,    36,     0,    37,
     2835       0,    38,     0,     0,   208,    41,   465,     2,   207,     4,
     2836       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2837      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2838      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
     2839       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2840       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2841       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2842       0,     0,    36,     0,    37,     0,    38,     0,     0,    40,
     2843      41,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2844      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2845      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2846      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
     2847       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2848       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2849       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
     2850      38,     0,     0,   208,    41,     8,     9,    10,    11,    12,
     2851      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2852      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2853     483,   484,   485,     0,     0,     0,    33,     8,     9,    10,
     2854      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2855      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2856      29,    30,     0,     0,    36,     0,     0,     0,    33,     0,
     2857       0,    40,    41,     0,     0,     0,     0,     0,     0,     0,
     2858       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2859       0,     0,     0,     0,     0,     0,    36,     0,     0,     0,
     2860       0,     0,     0,   208,    41
     2861};
     2862
     2863#define yypact_value_is_default(yystate) \
     2864  ((yystate) == (-1267))
     2865
     2866#define yytable_value_is_error(yytable_value) \
     2867  YYID (0)
     2868
     2869static const yytype_int16 yycheck[] =
     2870{
     2871       0,     1,   186,   186,   532,    45,    45,     0,   186,    45,
     2872       1,   519,     0,   186,   186,   240,   186,   205,   186,   742,
     2873     742,     0,   511,     0,   118,   742,   188,   490,   639,   595,
     2874     862,   494,  1022,   615,    34,   220,   349,     1,   597,   595,
     2875    1303,    34,   282,   349,   685,    45,    34,   169,   170,    45,
     2876     598,    51,   595,   727,   568,    34,   604,    34,    51,   425,
     2877     426,     0,   417,   480,  1005,    65,    74,    30,    68,    83,
     2878     297,    71,    65,   597,    66,    68,    34,    45,    71,    41,
     2879      71,   436,   266,   266,   187,   595,   113,    51,   266,   444,
     2880    1004,  1005,   595,   266,   266,    34,   266,   595,   266,   595,
     2881     262,   263,     0,     1,   688,    46,    47,   107,   202,   630,
     2882       0,  1112,    65,   107,    74,   115,    45,    80,   118,   119,
     2883       0,   113,   629,   630,   645,    41,   492,   108,   136,    68,
     2884     111,    41,    41,   257,   968,   364,    34,   599,   645,   368,
     2885    1403,   603,    41,   107,    34,   511,   186,   186,   148,   149,
     2886     186,   115,  1382,   115,    34,    99,   149,   157,   158,    51,
     2887      74,   161,   624,   157,   267,    45,   628,    89,   161,   892,
     2888     892,    51,   680,    71,    11,   892,   136,    41,   119,   345,
     2889     486,  1015,   703,   136,   148,    65,   186,   187,    68,   133,
     2890     186,    71,    59,   157,   187,   117,   703,   116,   425,   426,
     2891      83,   711,   202,   113,   113,   115,   115,   121,   711,   575,
     2892     210,   100,   629,   630,   113,   711,   115,   210,   186,     0,
     2893       1,  1487,   222,   115,   409,  1455,   266,   266,   645,   222,
     2894     266,  1232,   115,  1234,  1235,   801,   113,   126,   219,   113,
     2895     240,   108,   206,   663,   111,   801,   210,   888,  1514,   113,
     2896     862,   115,   252,    34,   813,   803,   148,   186,   801,   252,
     2897     260,   135,   502,  1204,   252,   265,   266,   267,   114,   149,
     2898     113,   785,   272,   252,   267,   252,   240,   504,   257,   187,
     2899    1270,   161,   509,   222,   597,   512,   703,    68,   134,   813,
     2900      71,   801,   273,   417,   252,  1034,  1035,   297,   801,   280,
     2901     911,   395,   405,   801,   114,   801,   186,   187,   272,   893,
     2902     310,   275,   436,   252,   480,   462,   118,  1258,   210,   674,
     2903     444,   738,    46,    47,   134,    53,   326,    46,    47,   423,
     2904     210,   331,   229,   297,    51,   429,   111,   120,   331,   566,
     2905     100,   341,   222,  1257,  1258,   345,   310,   341,   240,   349,
     2906     350,   248,   219,   919,   252,   939,   585,  1031,  1190,   267,
     2907     135,   781,   252,   919,   364,    74,   126,   257,   368,  1108,
     2908     114,   791,   252,   835,     3,   478,   919,   341,    87,    88,
     2909     272,   345,   802,     3,   365,   113,   266,  1437,   369,    74,
     2910     134,   120,    57,   120,   118,   395,   920,   626,   115,   118,
     2911     364,   983,    87,    88,   368,   405,   273,   136,   462,  1458,
     2912    1022,   350,   405,   280,    74,  1464,    76,    77,   310,   659,
     2913     113,   114,  1472,   423,  1474,   425,   426,    87,    88,   429,
     2914     115,   431,    94,    95,    99,  1484,  1426,  1378,   417,     0,
     2915    1489,   222,    74,  1433,   992,   993,   954,     0,    41,   615,
     2916     113,   331,   452,   345,   620,    87,    88,   436,   118,   120,
     2917     135,   425,   426,   925,  1378,   444,   929,   129,   130,   349,
     2918     470,   252,   116,   113,   891,   136,   120,   966,   478,  1313,
     2919     480,   348,   482,   115,   114,   478,   486,   649,   452,   482,
     2920     730,   114,   492,   210,   482,  1485,  1107,   405,   365,   120,
     2921     813,   465,   369,   482,   504,   482,   506,   813,   113,   509,
     2922     132,   511,   512,   135,  1098,   136,   663,   120,   640,   519,
     2923     113,   120,   115,   523,  1487,   405,   490,   417,   492,   194,
     2924     494,   134,   471,   425,   426,   134,  1370,  1371,   123,   124,
     2925     504,   120,   506,   482,  1507,   509,   436,   511,   512,   113,
     2926     674,  1514,   217,   647,   444,   272,  1080,   136,  1066,   113,
     2927     114,   115,   227,  1071,   115,   794,   117,   567,   568,   113,
     2928     478,   115,   738,  1157,  1158,   575,   700,   680,  1190,   113,
     2929     297,  1001,  1002,   134,   482,   585,   586,  1004,   120,   589,
     2930     480,   120,   482,   310,   120,   595,  1270,   597,   586,   862,
     2931     492,   120,   482,   113,   136,   115,   486,   136,   134,   663,
     2932      74,   575,    76,    77,    78,   615,   113,   136,   924,   511,
     2933     620,   585,   622,    87,    88,   120,   626,   120,   113,   629,
     2934     630,   113,   297,   115,   781,   616,  1056,  1057,   114,   121,
     2935     122,   136,   114,   136,   791,   645,   121,   647,   120,   113,
     2936     631,   615,   127,   128,  1386,   802,   620,   116,  1270,    74,
     2937     120,   120,   626,   644,   849,     4,     5,     6,     7,     8,
     2938       9,  1345,    87,    88,   120,   120,   136,   677,   617,   114,
     2939     680,   120,   114,   575,   869,    10,    11,    12,    13,    14,
     2940     136,   136,   116,   114,   114,   674,   120,   136,   113,   120,
     2941     115,   482,   120,   703,   704,   705,   931,   113,   892,   892,
     2942    1127,   711,   712,   677,   892,   595,    41,   597,   136,   892,
     2943     892,   700,   892,   615,   892,   891,   113,   781,   620,   119,
     2944     114,   113,    71,   855,    73,   452,   120,   791,   738,   136,
     2945     114,   114,   742,   743,    69,   726,   120,   120,   802,   616,
     2946    1482,   715,   691,    66,   114,  1487,  1430,   114,  1432,  1287,
     2947     120,   114,  1025,   120,   631,   113,   705,   120,  1491,  1491,
     2948     113,   113,   680,   115,  1491,  1507,   441,   644,   136,   121,
     2949     122,  1365,  1514,   118,   674,   785,   116,   504,    83,   506,
     2950     120,   894,   509,   114,   794,   512,   796,   136,  1382,   120,
     2951     680,   801,   467,   118,   897,   114,   899,   113,   996,   115,
     2952     700,   120,  1486,   813,  1426,   121,   122,   983,   114,  1239,
     2953     113,  1433,   115,   114,   120,   136,  1246,  1247,  1248,   120,
     2954     794,   711,   712,     4,     5,     6,     7,     8,     9,   504,
     2955    1257,   116,     3,   113,   509,   120,   136,   512,   738,    10,
     2956      11,    12,    13,    14,  1001,  1002,  1096,   796,   118,   726,
     2957    1100,  1101,   862,    74,    35,    76,    77,     0,     1,   114,
     2958    1454,  1455,   114,  1485,   862,   120,    87,    88,   120,   113,
     2959      41,   115,   114,   862,   884,   504,   113,   506,   120,  1309,
     2960     509,   891,   892,   512,   894,  1017,   884,   114,    31,    32,
     2961      71,    34,    73,   120,   115,   114,   906,   113,    69,  1056,
     2962    1057,   120,    45,   113,   114,   115,   114,    83,    51,   919,
     2963     920,   801,   120,   862,   924,  1096,    59,  1190,   114,  1100,
     2964     930,   931,    65,   813,   120,    68,    92,    93,    71,   930,
     2965     119,   120,   906,  1170,  1171,   122,  1173,  1001,  1002,    96,
     2966      97,    84,    85,  1180,   954,  1182,   113,   114,   115,  1467,
     2967     677,  1127,   131,  1066,   862,   929,   930,   931,  1071,   113,
     2968     114,   115,   862,   132,  1214,   108,   114,   115,   111,    74,
     2969       3,    76,    77,   983,    98,   118,   894,    10,    11,    12,
     2970      13,    14,    87,    88,  1088,    60,    61,   662,    60,    61,
     2971      62,   891,  1056,  1057,  1004,  1005,   671,   113,  1516,   115,
     2972     675,   113,   892,   115,   894,   115,   149,    74,    41,   983,
     2973     119,   120,  1022,  1286,    81,    46,    47,    84,   161,    86,
     2974      87,    88,   930,   113,  1022,   115,  1113,  1114,  1204,   931,
     2975     551,   552,    72,  1022,   924,    75,    69,   986,    78,   113,
     2976      80,   115,   113,   186,   187,  1202,   116,    87,   115,   114,
     2977      74,  1061,   116,   113,  1304,   115,  1066,    81,  1308,   202,
     2978      84,  1071,    86,    87,    88,   114,  1339,   210,   285,  1342,
     2979    1080,   862,   114,  1022,   553,   554,   219,   114,  1088,   222,
     2980     114,   983,  1239,   559,   560,   114,   229,  1061,   116,  1246,
     2981    1247,  1248,   115,   310,   311,     4,     5,     6,     7,     8,
     2982       9,   244,   118,   120,  1341,   248,   118,    74,   135,   252,
     2983     253,    78,   118,  1386,  1022,   135,   113,  1127,  1391,   114,
     2984      87,    88,  1022,   266,   267,   114,   116,   134,   345,   116,
     2985     273,   116,   134,     3,   134,    31,   120,   280,  1202,   930,
     2986      10,    11,    12,    13,    14,   114,   113,  1420,  1066,   114,
     2987     118,   113,  1309,  1071,   121,   122,   119,  1407,  1168,  1169,
     2988     114,   119,    71,   380,    73,   120,   119,   114,  1169,   114,
     2989     134,    41,   120,   213,   114,  1239,  1066,   136,   114,   906,
     2990    1190,  1071,  1246,  1247,  1248,   114,   114,   120,   331,   114,
     2991     114,   114,  1190,   114,  1204,   114,   114,   114,  1208,    69,
     2992     114,  1190,   114,     0,     1,   348,   349,  1208,   114,   114,
     2993     114,   886,    10,    11,    12,    13,    14,   119,    31,  1168,
     2994     135,   114,   365,   134,   114,   120,   369,  1127,   116,   116,
     2995     114,  1022,  1505,   114,  1208,   120,   379,    34,  1511,   114,
     2996     280,  1190,   134,    41,   113,  1309,   120,  1257,  1258,  1522,
     2997     118,   114,   395,  1526,    51,  1265,   114,  1361,   114,    85,
     2998    1270,  1169,   405,    89,    90,    91,  1501,   555,   556,   557,
     2999     558,    69,  1270,   120,    71,   114,   114,   120,   120,   114,
     3000     423,  1270,  1190,   113,   113,   113,   429,   113,   113,   115,
     3001    1190,   117,   118,  1303,   113,   136,   119,  1491,  1491,   114,
     3002    1208,   134,  1303,  1491,  1204,   114,   114,   119,  1491,  1491,
     3003     107,  1491,   352,  1491,   354,   113,  1265,   115,   132,   119,
     3004     116,  1270,   465,   121,   122,   118,   136,   470,   114,  1303,
     3005     120,   548,   549,   550,  1061,   478,   116,   116,   114,   482,
     3006     114,   116,   114,   486,     1,   116,   489,   116,   491,   116,
     3007     116,  1361,   149,    74,   116,    76,    77,    49,  1033,   136,
     3008     157,   158,  1270,  1467,   114,   119,    87,    88,  1378,  1360,
     3009    1270,    74,   136,    76,    77,    78,   136,  1168,  1169,  1492,
     3010     136,   136,   119,   526,    87,    88,   134,   114,   531,   688,
     3011     187,   119,   113,  1403,   116,  1303,    85,   118,   116,  1190,
     3012     440,   116,  1403,  1516,   116,   202,   116,   116,   205,   206,
     3013     113,   116,   115,   210,   114,   114,  1426,  1208,   121,   122,
     3014     113,    62,   113,  1433,   114,  1435,   113,  1437,  1426,  1403,
     3015     114,   134,   118,   113,   231,  1433,   579,  1426,   235,   136,
     3016     237,  1491,  1491,   116,  1433,  1491,   116,   114,   116,   246,
     3017     114,   100,   595,   100,   597,   252,   119,  1467,   113,   113,
     3018     257,  1435,  1472,  1437,  1474,   136,   114,   120,   114,   114,
     3019     267,   114,    44,   616,  1265,  1485,   134,  1426,   275,  1270,
     3020     779,  1491,  1492,  1360,  1433,     0,   136,  1485,   631,  1492,
     3021     114,  1501,   635,   114,   136,  1403,  1485,   100,  1472,   100,
     3022    1474,   644,   136,   646,   647,   648,  1516,   114,   136,   114,
     3023     116,   136,  1303,  1516,   114,   114,   136,   119,  1426,    34,
     3024      10,    11,    12,    13,    14,  1433,  1426,  1501,   116,   116,
     3025     113,  1037,   749,  1433,   119,   119,  1485,   680,   136,   114,
     3026     114,   684,   136,   686,   341,   114,    51,   690,   345,   114,
     3027     561,    41,   851,   562,   351,   698,    71,   565,   563,   963,
     3028      65,   564,  1190,    68,  1455,  1347,    71,   364,   711,   712,
     3029    1526,   368,  1280,  1101,  1492,  1308,  1433,  1485,   677,    69,
     3030    1052,   677,  1071,   726,   899,  1485,   690,   907,   579,    74,
     3031     855,    76,    77,    78,   893,   641,   253,   958,  1516,  1501,
     3032     715,  1491,    87,    88,  1279,    74,  1208,    76,    77,    78,
     3033     927,   482,  1403,    74,    -1,    76,    77,    78,    87,    88,
     3034     417,   567,    -1,   113,   726,   115,    87,    88,   113,   567,
     3035     115,   121,   122,   567,   431,  1426,   121,   122,    -1,   436,
     3036     939,    -1,  1433,   158,   149,    -1,    -1,   444,    -1,    -1,
     3037      -1,    -1,   113,    -1,   115,    -1,   161,    -1,   801,    -1,
     3038     121,   122,    -1,    -1,    -1,   462,    -1,    -1,   465,    -1,
     3039     813,    -1,   971,    -1,    -1,    10,    11,    12,    13,    14,
     3040      -1,    68,   187,   480,    -1,   482,   726,    -1,    -1,    -1,
     3041      77,    -1,    -1,   490,  1485,    -1,    -1,   494,    10,    11,
     3042      12,    13,    14,    -1,    -1,   210,    41,    -1,  1435,    -1,
     3043    1437,    74,   855,    76,    77,    -1,   231,   222,   861,    -1,
     3044    1019,    -1,    -1,    -1,    87,    88,   523,    -1,    -1,    41,
     3045      -1,    -1,   119,    -1,    69,    -1,    -1,   252,    -1,    74,
     3046      -1,    -1,   257,    78,    -1,  1472,    -1,  1474,    -1,   892,
     3047     113,   894,    87,    88,    -1,   118,    -1,    69,   901,  1434,
     3048      -1,  1436,    -1,    74,    -1,    -1,   983,    -1,    -1,    -1,
     3049      81,   568,    -1,    84,   161,    86,    87,    88,   113,    -1,
     3050      74,   924,    76,    77,    78,    -1,   121,   122,   585,   586,
     3051      -1,    -1,    -1,    87,    88,    -1,  1471,    -1,  1473,  1098,
     3052     597,   113,   945,   115,   115,  1022,    -1,    -1,   465,   121,
     3053     122,    -1,    -1,    -1,    -1,   958,    -1,     0,   615,   113,
     3054      -1,   964,    -1,   620,    -1,   968,   331,   121,   122,   626,
     3055      -1,    -1,   629,   630,    -1,   222,   351,    -1,    -1,    -1,
     3056    1515,    -1,  1517,    -1,    -1,    -1,    -1,    -1,   645,    -1,
     3057      74,    34,    76,    77,    78,  1530,  1531,    74,  1157,  1158,
     3058      -1,    78,    -1,    87,    88,    -1,   663,    -1,    -1,   526,
     3059      87,    88,  1015,   260,   531,    -1,    -1,   674,   265,    -1,
     3060      85,    68,    -1,    -1,    89,    90,    91,    -1,    71,   113,
     3061      -1,    -1,    -1,   280,    -1,    -1,   113,    84,   115,    -1,
     3062     405,    -1,   417,   700,   121,   122,   703,    -1,   113,  1052,
     3063     115,    -1,   117,   118,    -1,   712,   431,    -1,   715,    -1,
     3064      -1,   436,   579,  1066,    -1,    -1,    -1,    -1,  1071,   444,
     3065      74,    -1,   119,    -1,    -1,    -1,    -1,    81,    -1,    -1,
     3066      84,   738,    86,    87,    88,  1088,   743,   462,    -1,    -1,
     3067      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
     3068      -1,    -1,    -1,   350,    74,   480,    -1,   482,    78,  1112,
     3069      -1,   115,    -1,    -1,   161,   158,    -1,    87,    88,    -1,
     3070      -1,    41,    -1,    -1,   781,    -1,    -1,    -1,    -1,   646,
     3071      -1,   648,    -1,    -1,   791,    68,    -1,   794,    -1,    -1,
     3072     797,    -1,    -1,   113,    -1,   802,    -1,    -1,   523,    69,
     3073      -1,   121,   122,    -1,    74,   812,    76,    77,    78,    -1,
     3074      74,  1164,    76,    77,    78,    -1,    -1,    87,    88,    -1,
     3075      -1,    -1,    -1,    87,    88,   222,    -1,    -1,    -1,    -1,
     3076      -1,   698,    -1,   430,    -1,    -1,   119,    -1,    -1,    -1,
     3077      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,   446,
     3078      -1,   121,   122,    -1,    -1,   862,  1365,    -1,    -1,   252,
     3079      -1,   586,    -1,   260,   257,    -1,    -1,    -1,   265,    -1,
     3080      -1,    -1,    -1,  1382,   471,    -1,    -1,   884,   161,  1232,
     3081      -1,  1234,  1235,    -1,   891,    -1,    -1,   894,    10,    11,
     3082      12,    13,    14,    -1,    -1,   190,    74,    -1,    76,    77,
     3083      78,    -1,   197,    -1,   629,   630,    -1,    -1,    -1,    87,
     3084      88,    -1,    -1,   920,    -1,    -1,    -1,    -1,    -1,    41,
     3085     645,    -1,   929,   930,    -1,    -1,    -1,    -1,    -1,    -1,
     3086      -1,    -1,    -1,     0,    -1,   113,    -1,   115,   663,   222,
     3087      -1,    -1,    -1,   121,   122,  1454,  1455,    69,    -1,   674,
     3088      -1,    -1,    74,   350,    76,    77,    78,    -1,   351,    -1,
     3089    1313,    -1,    -1,    -1,    -1,    87,    88,    34,    -1,    -1,
     3090      -1,    -1,    -1,    -1,   269,   700,   983,   260,   703,    -1,
     3091      -1,    -1,   265,    -1,    -1,    -1,    -1,    -1,    -1,   996,
     3092      -1,   113,   589,   115,  1001,  1002,    -1,  1004,  1005,   121,
     3093     122,    -1,    -1,    -1,    71,    -1,    -1,  1360,  1361,    -1,
     3094      -1,    -1,    -1,   738,    -1,  1022,    -1,  1370,  1371,    -1,
     3095     617,    -1,    -1,    -1,   417,   622,    -1,    -1,    -1,    -1,
     3096      -1,   326,    74,   430,    76,    77,    78,    -1,   431,   334,
     3097      -1,    -1,   337,   436,    -1,    87,    88,    -1,    -1,  1056,
     3098    1057,   444,    -1,    -1,    -1,  1408,   781,    10,    11,    12,
     3099      13,    14,    -1,    -1,    -1,    -1,   791,   350,    -1,   462,
     3100      -1,   113,   797,    -1,   471,    -1,    -1,   802,   945,   121,
     3101     122,    -1,    -1,    -1,    -1,    -1,    -1,   480,    41,   482,
     3102      -1,   158,    -1,    -1,   691,    -1,    -1,   964,    -1,     0,
     3103       1,   968,   397,    -1,    -1,    -1,   401,    -1,   705,    -1,
     3104      -1,    -1,    -1,    -1,  1467,  1468,    69,    -1,    -1,    -1,
     3105    1127,    74,    -1,    32,  1477,    78,    -1,    -1,    -1,   726,
     3106     523,    -1,    -1,    34,    87,    88,    -1,   862,  1491,  1492,
     3107      -1,    -1,    -1,    -1,    -1,    -1,    -1,   430,  1015,    -1,
     3108      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,   884,
     3109     113,    -1,  1169,  1516,    -1,    -1,   891,    68,   121,   122,
     3110      71,    -1,    28,    29,    30,    84,    85,    -1,    -1,    -1,
     3111      -1,    41,   477,  1190,    -1,   252,    -1,    -1,   471,    -1,
     3112     257,    -1,   589,   586,    -1,  1202,    -1,  1204,    -1,   796,
     3113      -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
     3114      -1,    -1,    -1,    -1,    74,     0,    76,    77,    78,    -1,
     3115     617,    -1,    -1,    -1,    -1,   622,    -1,    87,    88,    -1,
     3116      -1,    -1,  1239,    -1,    -1,    -1,   629,   630,    -1,  1246,
     3117    1247,  1248,    -1,    -1,   100,  1112,   102,    -1,    -1,    34,
     3118    1257,  1258,   645,   113,    -1,   115,    -1,   158,    -1,    -1,
     3119      -1,   121,   122,  1270,    -1,    -1,    -1,    -1,    -1,    -1,
     3120     663,    -1,   567,   568,    -1,    -1,  1001,  1002,    -1,  1004,
     3121    1005,   674,    -1,    -1,   351,    -1,    71,    -1,    -1,    -1,
     3122      -1,    -1,    -1,    -1,   691,    -1,  1303,  1022,    -1,    -1,
     3123      -1,    -1,  1309,    -1,    -1,    -1,   589,   700,   705,    -1,
     3124     703,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3125      -1,   222,    -1,    -1,    -1,    -1,   182,    -1,    -1,    -1,
     3126      -1,  1056,  1057,    -1,   617,   244,   192,   193,    -1,   622,
     3127      -1,   197,    -1,   199,   200,   738,    -1,    -1,    -1,    -1,
     3128     417,   252,    -1,    -1,    -1,   650,    -1,    -1,    -1,   654,
     3129      -1,    -1,    -1,    -1,   431,  1232,    -1,  1234,  1235,   436,
     3130      -1,  1378,    -1,   158,    -1,    -1,    -1,   444,    -1,    -1,
     3131      -1,    10,    11,    12,    13,    14,    -1,    -1,   781,   986,
     3132      -1,    -1,    -1,    -1,    -1,   462,  1403,    -1,   791,   796,
     3133      -1,    -1,  1127,    -1,   797,    -1,    -1,    -1,   691,   802,
     3134      -1,    -1,    41,   480,    -1,   482,    -1,    -1,    -1,  1426,
     3135      -1,    -1,   705,    -1,    -1,    -1,  1433,   101,   102,   103,
     3136     104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
     3137      69,    -1,    -1,    -1,  1169,    74,  1313,    76,    77,    78,
     3138      -1,    -1,    -1,    -1,    -1,    -1,   523,    -1,    87,    88,
     3139      -1,   135,    -1,    -1,    -1,  1190,    -1,   252,    -1,   862,
     3140     379,    -1,   257,    -1,    -1,    -1,    -1,  1202,  1485,  1204,
     3141      -1,    -1,    -1,    -1,   113,  1492,    -1,    -1,    -1,    -1,
     3142     785,   884,   121,   122,    -1,    -1,    -1,    -1,   891,    -1,
     3143      -1,    -1,    -1,  1370,  1371,    -1,    -1,    -1,    -1,    -1,
     3144      -1,    -1,    -1,   796,  1239,    -1,    -1,    -1,    -1,   586,
     3145      -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,    -1,    -1,
     3146     431,    -1,  1257,  1258,    -1,    -1,    -1,    -1,    -1,    -1,
     3147      -1,  1408,    -1,    -1,    -1,  1270,    -1,    -1,    -1,    -1,
     3148      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3149      -1,    -1,   629,   630,    -1,    -1,   351,    -1,    -1,    -1,
     3150      -1,  1168,    -1,    -1,    -1,    -1,    -1,    -1,   645,    -1,
     3151     489,   482,   491,    -1,  1309,    -1,    -1,    -1,    -1,   986,
     3152      -1,    -1,    -1,    -1,    -1,    -1,   663,    -1,    -1,    -1,
     3153      -1,  1468,    -1,   898,    -1,    -1,    -1,   674,  1001,  1002,
     3154    1477,  1004,  1005,    -1,    -1,    -1,    -1,    -1,    -1,    55,
     3155      -1,    57,   523,    -1,    60,    61,    62,    -1,    64,  1022,
     3156      -1,    -1,   417,   700,    -1,    -1,   703,    -1,    -1,    -1,
     3157      -1,    -1,    78,    -1,    -1,    -1,   431,    -1,    -1,    -1,
     3158      -1,   436,    -1,  1378,    90,    91,    -1,    -1,    -1,   444,
     3159      -1,    -1,    -1,  1056,  1057,    -1,    -1,    -1,  1265,    -1,
     3160      -1,   738,    -1,    -1,    -1,    -1,    -1,   462,   973,    -1,
     3161      -1,    -1,    -1,    -1,    -1,   586,    -1,    -1,    -1,    -1,
     3162      -1,    -1,    -1,    -1,   989,   480,    -1,   482,    -1,    -1,
     3163      -1,  1426,    -1,   986,    -1,    -1,    -1,    -1,  1433,    -1,
     3164      -1,    -1,    -1,    -1,   781,   571,   572,    -1,    -1,    -1,
     3165      -1,    -1,    -1,    -1,   791,    -1,   635,    -1,   629,   630,
     3166     797,    -1,    -1,    -1,  1127,   802,    -1,    -1,   523,    -1,
     3167      -1,    -1,   598,    -1,   645,   601,   602,    -1,   604,    -1,
     3168     606,   607,    -1,    -1,    -1,   611,   612,    -1,    -1,    -1,
     3169    1485,    -1,    -1,    10,    11,    12,    13,    14,    -1,  1064,
     3170      -1,  1168,    -1,    -1,    -1,   684,  1169,   686,    -1,    -1,
     3171      -1,   690,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3172      -1,    -1,    -1,    -1,    41,   862,    -1,  1190,    -1,    -1,
     3173      -1,   586,   703,    -1,    -1,    -1,    -1,    -1,  1103,  1202,
     3174      -1,  1204,    -1,    -1,    -1,    -1,    -1,   884,    -1,    -1,
     3175      -1,    -1,    69,    -1,   891,    -1,    -1,    74,    -1,    76,
     3176      77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3177      87,    88,    -1,    -1,   629,   630,  1239,    -1,    -1,    -1,
     3178      -1,    -1,    -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,
     3179     645,    -1,    -1,    -1,  1257,  1258,   113,    -1,  1265,    -1,
     3180      -1,    -1,    -1,    -1,   121,   122,    -1,  1270,   663,    -1,
     3181      -1,    -1,    -1,    -1,    -1,  1168,    -1,    -1,    -1,   674,
     3182      -1,   747,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3183      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   344,    -1,
     3184     346,    -1,    -1,    -1,    -1,   700,  1309,    -1,   703,    -1,
     3185      -1,   357,   358,    -1,    -1,    28,    29,    30,    -1,    -1,
     3186      -1,    -1,    -1,    -1,  1001,  1002,    -1,  1004,  1005,    -1,
     3187      -1,    -1,    -1,    -1,    -1,    -1,   855,    -1,    -1,    -1,
     3188      -1,    -1,   861,   738,    -1,  1022,    -1,    -1,    -1,    -1,
     3189      -1,   862,    10,    11,    12,    13,    14,    15,    16,    17,
     3190      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3191      28,    29,  1265,   884,    -1,  1378,    -1,    -1,    -1,  1056,
     3192    1057,    -1,   901,    41,    -1,    -1,   781,   100,    -1,   102,
     3193      -1,    -1,    -1,    -1,    -1,    -1,   791,    -1,    -1,    -1,
     3194      -1,    -1,   797,    -1,    -1,    -1,    -1,   802,    -1,    -1,
     3195      -1,    69,    -1,    -1,   127,    -1,    -1,    -1,    -1,   930,
     3196      -1,    -1,    -1,  1426,    -1,    -1,    -1,    -1,    -1,    -1,
     3197    1433,    -1,    -1,    -1,    -1,    -1,    -1,   903,    -1,   958,
     3198      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3199    1127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3200      -1,    -1,    -1,    -1,    -1,    -1,    -1,   862,     7,   182,
     3201      -1,    10,    11,    12,    13,    14,    -1,   190,    -1,   192,
     3202     193,    -1,  1485,    -1,   197,    -1,   199,   200,    -1,   884,
     3203      -1,    -1,  1169,  1004,  1005,    -1,   891,    -1,    -1,    -1,
     3204      39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,
     3205      -1,  1022,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,
     3206      -1,    -1,    -1,    -1,    -1,  1202,    -1,  1204,    -1,    68,
     3207      69,    -1,    -1,  1052,    -1,    74,    -1,    -1,    -1,    78,
     3208      -1,    -1,    81,    82,    83,    84,    85,    86,    87,    88,
     3209      -1,    90,    91,    -1,    -1,    -1,   269,    -1,    -1,    -1,
     3210      -1,    -1,  1239,    -1,    -1,    -1,    -1,    -1,    -1,  1246,
     3211    1247,  1248,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,
     3212    1257,  1258,   121,   122,   123,   124,   125,   126,    -1,    -1,
     3213      -1,    -1,  1058,  1270,    -1,    -1,    -1,    -1,    -1,    -1,
     3214      -1,    51,    -1,    -1,    -1,    -1,  1001,  1002,    -1,  1004,
     3215    1005,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
     3216      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1022,    -1,    -1,
     3217      -1,    -1,  1309,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3218      -1,    39,    40,    -1,    42,  1164,   692,    -1,   694,    -1,
     3219      -1,    -1,    -1,    -1,    -1,   701,   702,  1168,  1169,    -1,
     3220     706,  1056,  1057,    -1,    -1,   115,    -1,    -1,    -1,   119,
     3221      68,    -1,    -1,   719,    -1,    -1,    74,    -1,   724,  1190,
     3222      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
     3223      88,    -1,    90,    91,    -1,    -1,    -1,  1208,   148,    -1,
     3224      -1,  1378,    -1,    -1,    -1,   751,    -1,    -1,   158,    -1,
     3225      -1,   161,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
     3226    1186,    -1,    -1,   121,   122,   123,   124,   125,   126,    -1,
     3227      -1,    -1,  1127,    -1,    -1,    -1,   134,    -1,    -1,    -1,
     3228      -1,    -1,    -1,    -1,    -1,    -1,  1257,  1258,    -1,  1426,
     3229      -1,    -1,    -1,    -1,  1265,    -1,  1433,    -1,    -1,  1270,
     3230     210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3231      -1,    -1,   222,    -1,  1169,    -1,    -1,    -1,    -1,    -1,
     3232      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3233     240,    -1,  1303,    -1,    -1,  1190,    -1,    -1,   844,    -1,
     3234     846,   847,   848,    -1,    -1,    -1,    -1,  1202,  1485,  1204,
     3235      -1,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,   865,
     3236      -1,    -1,   272,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3237      -1,    -1,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,
     3238      -1,    -1,    -1,    -1,  1239,    -1,    -1,   297,    -1,    -1,
     3239      -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,   571,   572,
     3240     310,    -1,  1257,  1258,    -1,    -1,    -1,  1378,    -1,    -1,
     3241      -1,    -1,   918,    -1,    -1,  1270,    -1,    -1,    -1,    -1,
     3242      -1,    -1,    -1,    -1,    -1,   598,    -1,    -1,   601,   602,
     3243      -1,   604,  1403,   606,   607,   345,    -1,    -1,   611,   612,
     3244     350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3245      -1,    -1,    -1,    -1,  1309,  1426,   962,    -1,    -1,    -1,
     3246      -1,   967,  1433,    -1,    -1,    -1,   972,    -1,    -1,    -1,
     3247      -1,   977,    -1,    -1,    -1,    -1,   982,    -1,   984,   985,
     3248      -1,    -1,   988,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3249      -1,   997,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3250      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1013,  1014,    -1,
     3251      -1,    -1,    -1,    -1,  1485,   425,   426,    -1,    -1,    -1,
     3252      -1,   431,    -1,  1378,    -1,    -1,    -1,    -1,    -1,    -1,
     3253      -1,    -1,    -1,  1039,    -1,    -1,  1042,    -1,    -1,    -1,
     3254      -1,    -1,   452,    -1,    -1,    -1,    10,    11,    12,    13,
     3255      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3256      24,    25,    26,    27,    28,    29,    30,    -1,    -1,    -1,
     3257     480,  1426,    -1,    -1,   747,   748,    -1,    41,  1433,  1085,
     3258      -1,    -1,   492,    -1,    -1,  1091,  1092,    -1,    -1,    -1,
     3259      -1,    -1,    -1,    -1,   504,    -1,   506,    -1,    -1,   509,
     3260      -1,   511,   512,    -1,  1110,    69,    -1,    -1,    -1,  1115,
     3261      -1,    -1,    -1,   523,  1120,    -1,    80,    -1,    -1,    -1,
     3262      -1,    -1,    -1,    -1,    -1,  1131,    -1,    -1,    -1,    -1,
     3263    1485,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1144,    -1,
     3264    1146,  1147,  1148,  1149,    -1,    -1,    -1,    68,    -1,    -1,
     3265      -1,    -1,    -1,    -1,    -1,  1161,    77,  1163,    79,    -1,
     3266      81,  1167,    -1,    -1,    -1,   575,    -1,    88,    -1,    -1,
     3267      -1,    -1,    -1,    -1,    -1,    -1,   586,    -1,    -1,   589,
     3268      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1195,
     3269    1196,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,
     3270     121,   122,   123,    -1,    -1,   615,    -1,    -1,    -1,    -1,
     3271     620,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   629,
     3272     630,    -1,    -1,    -1,    -1,   898,    -1,    -1,    -1,    -1,
     3273     903,    -1,    -1,    -1,    -1,   645,    -1,    -1,    -1,    -1,
     3274     161,    -1,    -1,  1249,  1250,    -1,    -1,    -1,    -1,    -1,
     3275      -1,    -1,    -1,  1259,    -1,    -1,    -1,    -1,    -1,    -1,
     3276      -1,    -1,    -1,    -1,    -1,    -1,    -1,   677,    10,    11,
     3277      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3278      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
     3279      32,    33,    34,   703,    -1,   705,    -1,    -1,    -1,    41,
     3280      -1,   222,    -1,   224,   225,   226,    -1,    46,    -1,    -1,
     3281      -1,    -1,    -1,    -1,    -1,  1321,    -1,  1323,  1324,  1325,
     3282      -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,   738,  1335,
     3283      -1,    -1,    74,    -1,    76,    77,    78,  1343,    -1,   260,
     3284      -1,    -1,    -1,    -1,   265,    87,    88,    -1,    -1,    -1,
     3285      -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,   280,
     3286      -1,    -1,  1368,  1369,   103,    -1,    -1,    -1,    -1,    -1,
     3287      -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
     3288     122,   148,    -1,    -1,    -1,  1058,   796,    -1,    -1,    -1,
     3289      -1,   158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3290      -1,    -1,   169,   170,    -1,    -1,    -1,  1413,  1414,    -1,
     3291     331,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3292    1426,    -1,    -1,    -1,    -1,    -1,    -1,  1433,    -1,   350,
     3293      -1,    -1,    -1,   172,   355,   356,    -1,    -1,    -1,    -1,
     3294      -1,    -1,   363,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3295      -1,    -1,    -1,    -1,    -1,    -1,   195,    -1,    -1,    -1,
     3296    1466,    -1,    -1,    -1,  1470,    -1,    -1,    -1,    -1,    -1,
     3297     209,    -1,    -1,   240,   884,    -1,    -1,    -1,    -1,   218,
     3298      -1,   891,    -1,    -1,   405,    -1,    -1,    -1,    -1,   228,
     3299      -1,    -1,  1498,    -1,  1500,    -1,   906,   264,    -1,    -1,
     3300      -1,    -1,   423,    -1,    -1,    -1,    -1,   428,    -1,   430,
     3301      -1,    -1,    -1,  1186,   253,    -1,    -1,    -1,    -1,   258,
     3302      -1,   931,  1528,  1529,    -1,   446,    -1,    -1,   449,   450,
     3303    1536,  1537,   271,    -1,    -1,    -1,   457,    -1,   277,    -1,
     3304     279,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3305     471,    -1,    -1,    -1,    -1,    -1,    -1,   478,    -1,   298,
     3306      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3307      -1,    -1,    -1,   983,    10,    11,    12,    13,    14,    15,
     3308      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3309      26,    27,    28,    29,  1004,  1005,    32,    33,    34,    -1,
     3310     339,    -1,    -1,    -1,   343,    41,    -1,    -1,    -1,    -1,
     3311      -1,    -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3312      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3313      -1,    -1,   371,    69,    -1,    -1,   375,   376,    -1,   378,
     3314      76,    77,    -1,    -1,    -1,    -1,   385,   386,    -1,   388,
     3315     389,  1061,   391,    -1,   393,    -1,    -1,    -1,    -1,    -1,
     3316      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   589,    -1,
     3317      -1,   410,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,
     3318      -1,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
     3319      -1,    -1,    -1,    -1,    -1,    -1,   617,    -1,    -1,    -1,
     3320      -1,   622,    -1,   442,    -1,   472,    -1,    -1,    -1,    -1,
     3321      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1127,    -1,    -1,
     3322      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   468,
     3323      -1,    -1,    -1,    -1,    -1,   474,    -1,    -1,    -1,    -1,
     3324     479,    -1,    -1,    -1,   511,    -1,    -1,    -1,    -1,    -1,
     3325      -1,    -1,    -1,    -1,    -1,    -1,   523,    -1,  1168,    -1,
     3326      -1,    -1,   529,    -1,    -1,   532,   157,   158,    -1,    -1,
     3327     691,    -1,    -1,    -1,    -1,    -1,   515,    -1,   545,    -1,
     3328      -1,    -1,    -1,    -1,   705,    -1,    -1,    -1,    -1,    -1,
     3329      -1,   530,    -1,    -1,  1204,    -1,    -1,    -1,    -1,   190,
     3330      -1,    -1,    -1,    -1,    -1,   726,   197,    -1,   575,    -1,
     3331      -1,    -1,    -1,    -1,    -1,   582,    -1,    -1,    -1,   586,
     3332      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   567,    -1,
     3333      -1,    -1,    -1,    -1,    -1,    -1,    -1,   576,    -1,    -1,
     3334      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1257,  1258,    -1,
     3335      -1,    -1,    -1,    -1,    -1,  1265,    -1,   596,    -1,    -1,
     3336      -1,    -1,    -1,    -1,   785,   632,    -1,    -1,    -1,    -1,
     3337      -1,    -1,    -1,   640,    -1,   796,    -1,    -1,   269,    -1,
     3338      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3339      -1,    -1,   813,    -1,    -1,   634,    -1,    10,    11,    12,
     3340      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3341      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3342      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
     3343      -1,   670,    -1,    -1,    -1,   326,    -1,    -1,    -1,   678,
     3344      -1,    -1,    -1,   334,   335,    -1,   337,   338,    -1,   716,
     3345      -1,    -1,    -1,    -1,   345,    -1,    69,    -1,   349,    -1,
     3346      -1,    74,    -1,    76,    77,    78,    -1,    -1,  1378,    -1,
     3347     709,   738,    -1,   740,    87,    88,    -1,   368,    -1,    -1,
     3348      -1,   720,   721,   750,    -1,    -1,    -1,    -1,    -1,   756,
     3349      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3350     113,    -1,   115,   924,    -1,    -1,   397,    -1,   121,   122,
     3351     401,    -1,    -1,   752,    -1,    -1,    -1,    -1,   757,    -1,
     3352      -1,    -1,    -1,    -1,    -1,  1435,    -1,  1437,    -1,   796,
     3353     797,    -1,    -1,   954,    -1,    -1,    -1,    -1,    -1,    -1,
     3354     431,    -1,    -1,    -1,    -1,   812,    -1,    -1,    -1,    -1,
     3355      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3356      -1,    -1,  1472,    -1,  1474,   986,    -1,    -1,    -1,    -1,
     3357      -1,    -1,    -1,    -1,    -1,    -1,   997,    -1,   817,    -1,
     3358      -1,    -1,    -1,    -1,   851,   824,   477,    -1,   855,   480,
     3359      -1,  1501,    -1,    -1,    -1,    -1,    -1,    -1,   837,    -1,
     3360     839,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3361      -1,    -1,    -1,   852,    -1,    -1,    -1,   884,    -1,   858,
     3362      -1,    -1,    -1,    -1,   891,    -1,    -1,    -1,   519,    -1,
     3363      -1,   870,   523,    -1,   873,    -1,    -1,    -1,    -1,    -1,
     3364      -1,    -1,    -1,    -1,    -1,  1066,    -1,    -1,    -1,    -1,
     3365      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1080,
     3366      -1,    -1,    -1,    -1,   931,    -1,    -1,    -1,    -1,    -1,
     3367      -1,    -1,    -1,    -1,    -1,    -1,   567,   568,    -1,    -1,
     3368      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3369      -1,   958,    -1,    -1,   585,   586,   963,    -1,    -1,   966,
     3370      -1,    -1,    -1,    -1,   595,    -1,   597,   598,    -1,    -1,
     3371      -1,    -1,    -1,   604,    -1,    -1,    -1,    -1,    -1,   986,
     3372      -1,    -1,    -1,   614,   615,    -1,    -1,    -1,    -1,   620,
     3373     997,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   629,   630,
     3374      -1,    -1,   981,    -1,    -1,    -1,    -1,  1168,    -1,    -1,
     3375    1017,    -1,  1019,    -1,   645,    -1,    -1,    -1,    -1,   650,
     3376     651,    -1,    -1,   654,   655,    -1,    -1,  1034,  1035,   283,
     3377     661,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3378      -1,   295,   296,    -1,    -1,    -1,    -1,  1054,    -1,   680,
     3379      -1,    -1,    -1,    -1,    -1,    -1,   310,   311,    -1,    -1,
     3380      -1,    -1,    -1,  1042,    -1,    -1,    -1,    -1,    -1,    -1,
     3381      -1,    -1,   703,   704,    -1,    -1,    -1,    -1,    -1,    -1,
     3382      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3383      -1,   345,    -1,    -1,    -1,    -1,    -1,  1076,    -1,    -1,
     3384      -1,  1108,  1081,    -1,  1265,    -1,    -1,   738,    -1,    -1,
     3385    1089,   742,   743,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3386    1127,    -1,    -1,    -1,    -1,    -1,   380,    -1,    -1,    -1,
     3387      -1,    -1,    -1,    -1,    -1,  1142,  1143,    -1,    -1,    -1,
     3388      -1,    -1,    -1,    -1,  1123,    -1,    -1,    -1,    -1,    -1,
     3389      -1,    -1,    -1,    -1,   785,  1134,    -1,    -1,  1137,    -1,
     3390    1139,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3391     801,    -1,   803,    -1,    -1,  1154,  1155,    -1,    -1,    -1,
     3392      -1,    -1,   813,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3393      -1,    -1,    -1,    -1,    -1,  1174,    -1,    -1,    -1,    -1,
     3394      -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,     3,     4,
     3395       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3396      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3397      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3398      35,  1220,    -1,    38,    -1,    -1,    41,    42,    -1,  1228,
     3399      -1,    -1,    -1,   884,    -1,    -1,    -1,    -1,    -1,    -1,
     3400     891,   892,    -1,   894,    -1,    -1,    -1,   898,    -1,    -1,
     3401      -1,    66,    -1,    -1,    69,    -1,    71,  1284,    73,    74,
     3402    1287,    76,    77,    78,    -1,    -1,    -1,    -1,   919,   920,
     3403      -1,    -1,    87,    88,   548,   549,   550,   551,   552,   553,
     3404     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
     3405     564,   565,    -1,    -1,    -1,    -1,    -1,    -1,   113,  1298,
     3406     115,  1300,    -1,   954,    -1,    -1,   121,   122,    -1,    -1,
     3407      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1316,    -1,  1318,
     3408      -1,    -1,   973,   974,    -1,    -1,    -1,    -1,    -1,    -1,
     3409      -1,    -1,   983,    -1,  1333,  1516,    -1,    -1,   989,   990,
     3410      -1,   992,   993,   994,    -1,    -1,    -1,    -1,    -1,  1348,
     3411    1349,    -1,    -1,  1004,  1005,    -1,    -1,    -1,    -1,    -1,
     3412    1359,    -1,    -1,  1362,    10,    11,    12,    13,    14,    15,
     3413      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3414      26,    27,    28,    29,    30,  1384,    -1,    -1,    -1,    -1,
     3415      -1,    -1,    -1,    -1,  1393,    41,    -1,  1396,    -1,  1398,
     3416    1399,  1400,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3417      -1,    -1,    -1,  1064,   688,  1066,    -1,    -1,    -1,    -1,
     3418    1071,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,  1080,
     3419      -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,    -1,
     3420    1439,    -1,  1441,    -1,  1443,    -1,    -1,    -1,    -1,    -1,
     3421      -1,    -1,  1103,  1104,    -1,    -1,    -1,    -1,    -1,    -1,
     3422    1459,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3423      -1,    -1,    -1,    -1,  1501,   749,  1127,     3,     4,     5,
     3424       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3425      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3426      26,    27,    28,    29,    -1,   779,    32,    33,    34,    35,
     3427      -1,    -1,    38,    39,    40,    41,    42,    43,    -1,    45,
     3428      -1,    -1,    48,    49,    50,    51,    52,    53,    54,    55,
     3429      -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,
     3430      66,    -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,
     3431      76,    77,    78,  1204,    -1,    81,    82,    83,    84,    85,
     3432      86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
     3433      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3434      -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
     3435      -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,   125,
     3436     126,    -1,    -1,    -1,    -1,   131,  1257,  1258,    -1,    -1,
     3437     136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   893,
     3438       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3439      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3440      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3441      33,    34,    35,    -1,    -1,    38,    39,    40,    41,    42,
     3442      -1,    -1,    -1,    -1,    -1,   939,    -1,    -1,    -1,    -1,
     3443      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3444      -1,    -1,    -1,    -1,    -1,    68,    69,    -1,    71,    -1,
     3445      73,    74,    -1,    76,    77,    78,    -1,   971,    81,    82,
     3446      83,    84,    85,    86,    87,    88,    -1,    90,    91,   983,
     3447      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3448      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1378,    -1,    -1,
     3449     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3450     123,   124,   125,   126,    -1,    -1,    -1,    -1,  1022,    -1,
     3451      -1,    -1,    -1,   136,    -1,    -1,    -1,    -1,    -1,     3,
    25063452       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25073453      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2508       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2509        0,    44,     0,    31,     0,     0,     0,    45,    46,     0,
    2510        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2511        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2512        0,    34,     0,    35,     0,    36,     0,     0,   206,    39,
    2513        2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
    2514       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2515       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2516        0,     0,     0,     0,     0,    31,     0,   207,     0,     0,
    2517        0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
    2518        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2519        0,     0,     0,    34,     0,    35,     0,    36,    37,     0,
    2520      206,    39,    40,     0,     0,     0,     0,     0,     0,     0,
    2521        0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
    2522        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2523        0,     0,     0,     0,     0,     0,     0,    43,     0,   207,
    2524        0,     0,     0,     0,     0,    45,    46,     2,   205,     4,
     3454      24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
     3455      34,    35,    -1,    -1,    38,    -1,    -1,    41,    42,    -1,
     3456      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3457      -1,    -1,    -1,    -1,    -1,    -1,  1467,    -1,    -1,    -1,
     3458      -1,    -1,    66,    -1,  1098,    69,    -1,    71,    -1,    73,
     3459      74,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,
     3460    1491,  1492,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,
     3461      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3462      -1,    -1,    -1,    -1,    -1,  1516,    -1,    -1,    -1,   113,
     3463      -1,   115,    -1,    -1,    -1,   119,    -1,   121,   122,    -1,
     3464      -1,    -1,    -1,  1157,  1158,     3,     4,     5,     6,     7,
     3465       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3466      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3467      28,    29,    -1,    -1,    32,    33,    34,    35,    -1,    -1,
     3468      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
     3469      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3470      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3471      68,    69,    -1,    71,    -1,    73,    74,    -1,    76,    77,
     3472      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
     3473      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
     3474      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3475      -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
     3476      -1,    -1,    -1,   121,   122,   123,   124,   125,   126,    -1,
     3477      -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,     8,
     3478       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3479      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3480      29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
     3481      39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,
     3482      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3483      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
     3484      69,    -1,    71,    -1,    73,    74,    -1,    76,    77,    78,
     3485      -1,  1365,    81,    82,    83,    84,    85,    86,    87,    88,
     3486      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,  1382,    -1,
     3487      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3488      -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,
     3489      -1,   120,   121,   122,   123,   124,   125,   126,     4,     5,
     3490       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3491      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3492      26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
     3493      -1,    -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,
     3494    1454,  1455,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3495      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3496      -1,    -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,
     3497      76,    77,    78,    -1,    -1,    81,    82,    83,    84,    85,
     3498      86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
     3499      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3500      -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
     3501      -1,    -1,    -1,    -1,   120,   121,   122,   123,   124,   125,
     3502     126,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3503      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3504      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3505      33,    34,    -1,    -1,    -1,    -1,    39,    40,    41,    42,
     3506      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3507      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3508      -1,    -1,    -1,    -1,    -1,    68,    69,    -1,    71,    -1,
     3509      73,    74,    -1,    76,    77,    78,    -1,    -1,    81,    82,
     3510      83,    84,    85,    86,    87,    88,    -1,    90,    91,    -1,
     3511      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3512      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3513     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3514     123,   124,   125,   126,     4,     5,     6,     7,     8,     9,
     3515      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3516      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     3517      -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    39,
     3518      40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3519      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,
     3521      -1,    71,    -1,    73,    74,    -1,    76,    77,    78,    -1,
     3522      -1,    81,    82,    83,    84,    85,    86,    87,    88,    -1,
     3523      90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3524      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3525      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,
     3526      -1,   121,   122,   123,   124,   125,   126,     4,     5,     6,
     3527       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3528      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3529      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3530      -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
     3531      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3532      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3533      -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,    76,
     3534      77,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
     3535      87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
     3536      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3537      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
     3538      -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,   126,
     3539       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3540      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3541      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3542      33,    34,    35,    -1,    -1,    38,    -1,    -1,    41,    42,
     3543      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3544      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3545      -1,    -1,    -1,    66,    -1,    -1,    69,    -1,    71,    -1,
     3546      73,    74,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
     3547      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
     3548      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3550     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3551       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3552      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3553      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3554      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
     3555      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3556      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3557      29,    -1,    -1,    32,    33,    34,    69,    -1,    71,    -1,
     3558      73,    74,    41,    76,    77,    78,    -1,    -1,    -1,    -1,
     3559      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
     3560      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3561      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
     3562     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3563       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3564      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3565      23,    24,    25,    26,    27,    28,    29,    30,    -1,    32,
     3566      33,    34,    35,    -1,    -1,    38,    -1,    -1,    41,    -1,
     3567      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3568      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3569      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
     3570      73,    -1,    -1,    76,    77,    -1,    -1,    80,     3,     4,
    25253571       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25263572      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2527       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2528        0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    2529        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2530        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2531       34,     0,    35,     0,    36,     0,     0,    38,    39,     2,
    2532      205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2533       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2534       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2535        0,     0,     0,     0,    31,  -405,   668,     0,     0,     0,
    2536        0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
    2537        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2538        0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
    2539       39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2540        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2541        0,     0,     0,  1332,     0,     0,     0,     0,     0,     0,
    2542        0,     0,     0,     0,     0,     0,     0,     0,   668,     0,
    2543        0,     0,     0,     0,    45,    46,     2,   205,     4,     5,
     3573      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3574      35,    -1,   115,    38,    -1,    -1,    41,    -1,   121,   122,
     3575      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3576      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3577      -1,    -1,    -1,    -1,    69,    -1,    71,    -1,    73,    -1,
     3578      -1,    76,    77,     3,     4,     5,     6,     7,     8,     9,
     3579      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3580      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     3581      -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
     3582     115,    41,    -1,    -1,    -1,    -1,   121,   122,    -1,     7,
     3583      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3584      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
     3585      -1,    71,    -1,    73,    -1,    -1,    76,    77,    -1,    -1,
     3586      -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
     3587      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3588      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3589      68,    69,    -1,    -1,    -1,   115,    74,    -1,    -1,    -1,
     3590      78,   121,   122,    81,    82,    83,    84,    85,    86,    87,
     3591      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
     3592      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3593      -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
     3594      -1,    -1,    -1,   121,   122,   123,   124,   125,   126,     4,
     3595       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3596      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3597      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3598      -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    10,
     3599      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3600      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3601      -1,    32,    33,    34,    69,    -1,    71,    -1,    73,    74,
     3602      41,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
     3603      -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,
     3604      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
     3605      -1,    -1,    -1,    -1,    -1,    76,    77,    -1,   113,    -1,
     3606     115,    -1,    -1,    -1,    -1,    -1,   121,   122,     4,     5,
    25443607       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    25453608      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2546        0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2547        0,    31,     0,     0,     0,     8,     9,    10,    11,    12,
     3609      26,    27,    28,    29,   115,    -1,    32,    33,    34,    -1,
     3610     121,   122,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,
     3611      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3612      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3613      -1,    -1,    -1,    69,    -1,    71,    -1,    73,    -1,    -1,
     3614      76,    77,    -1,     4,     5,     6,     7,     8,     9,    10,
     3615      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3616      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3617      -1,    32,    33,    34,    -1,    -1,    -1,    -1,   114,   115,
     3618      41,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
     3619      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3620      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
     3621      71,    -1,    73,    -1,    -1,    76,    77,    -1,    -1,    -1,
     3622      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3623      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,
     3624      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3625      -1,    -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,
     3626     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
     3627      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3628      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
     3629      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
     3630      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3631      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3632      28,    29,    -1,    -1,    32,    33,    34,    69,    -1,    71,
     3633      -1,    73,    -1,    41,    76,    77,    -1,    -1,    -1,    -1,
     3634      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3635      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,
     3636      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
     3637      -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
     3638     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    25483639      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2549       23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
    2550        0,    35,     0,    36,    31,   675,    38,    39,     0,     0,
    2551        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2552        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2553     1334,     0,    34,     0,     0,     0,     0,     0,     0,    38,
    2554       39,     0,     0,     0,     0,   668,     0,     0,     0,     0,
    2555        0,    45,    46,     2,   205,     4,     5,     6,     7,     8,
    2556        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2557       19,    20,    21,    22,    23,    24,    25,     0,   676,    26,
    2558       27,    28,   677,     0,    45,    46,     0,     0,    31,     0,
    2559        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2560        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2561        0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2562       36,     0,     0,   206,    39,     2,   205,     4,     5,     6,
    2563        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2564       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2565        0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
    2566       31,     0,   269,     0,     0,     0,     0,     0,    45,    46,
    2567        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2568        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2569       35,     0,    36,     0,     0,    38,    39,     2,   205,     4,
    2570        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2571       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2572       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2573        0,     0,    31,     0,   668,     0,     0,     0,     0,     0,
    2574       45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
    2575        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2576       34,     0,    35,     0,    36,     0,     0,   206,    39,     8,
    2577        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2578       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2579       27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
    2580        0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
    2581        0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
    2582        0,     0,     0,     0,     0,   284,    34,     0,     0,     0,
    2583        0,   285,     0,    38,    39,   286,     0,     0,   287,   288,
    2584      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2585        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2586        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2587      295,     0,   513,     0,     0,   170,     0,     0,    45,    46,
    2588      297,   298,   299,   300,     8,     9,    10,    11,    12,    13,
    2589       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2590       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2591        0,   281,   282,    31,   283,     8,     9,    10,    11,    12,
    2592       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2593       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2594      284,    34,     0,     0,    31,     0,   285,     0,    38,    39,
    2595      286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
    2596       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2597        0,     0,    34,     0,     0,     0,     0,   110,     0,    38,
    2598       39,     0,     0,     0,     0,   295,   -40,   296,     0,     0,
    2599       41,    42,     0,    45,    46,   297,   298,   299,   300,     8,
    2600        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2601       19,    20,    21,    22,    23,    24,    25,     0,    44,    26,
    2602       27,    28,     0,     0,    45,    46,   281,   282,    31,   283,
    2603        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2604       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2605       26,    27,    28,     0,     0,   284,    34,     0,     0,    31,
    2606      675,   285,     0,    38,    39,   286,     0,     0,   287,   288,
    2607      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2608        0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
    2609        0,     0,     0,     0,    38,    39,     0,     0,     0,     0,
    2610      295,     0,   296,     0,     0,     0,     0,     0,    45,    46,
    2611      297,   298,   299,   300,     8,     9,    10,    11,    12,    13,
    2612       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2613       24,    25,     0,   676,    26,    27,    28,  1070,     0,    45,
    2614       46,   281,   282,    31,   283,     8,     9,    10,    11,    12,
    2615       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2616       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2617      284,    34,     0,     0,    31,   675,   285,     0,    38,    39,
    2618      286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
    2619       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2620        0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
    2621       39,     0,     0,     0,     0,   295,     0,   341,     0,     0,
    2622        0,     0,     0,    45,    46,   297,   298,   299,   300,     8,
    2623        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2624       19,    20,    21,    22,    23,    24,    25,     0,   676,    26,
    2625       27,    28,  1197,     0,    45,    46,   281,   282,    31,   283,
    2626        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2627       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2628       26,    27,    28,     0,     0,   284,    34,     0,     0,    31,
    2629        0,   285,     0,    38,    39,   286,     0,     0,   287,   288,
    2630      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2631        0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
    2632        0,     0,    37,     0,    38,    39,    40,     0,     0,     0,
    2633      295,     0,   376,     0,     0,    41,    42,     0,    45,    46,
    2634      297,   298,   299,   300,     0,     0,     0,     0,     0,     0,
    2635        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2636        0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
    2637       46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2638       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2639        0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
    2640       31,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2641       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2642        0,    26,    27,    28,     0,     0,     0,     0,    34,     0,
    2643       31,     0,     0,    37,     0,   206,    39,    40,     0,     0,
    2644        0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
    2645        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2646        0,     0,     0,     0,     0,    38,    39,     0,     0,     0,
    2647        0,     0,    43,     0,   269,     0,     0,     0,     0,     0,
    2648       45,    46,     0,     0,     0,     8,     9,    10,    11,    12,
    2649       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2650       23,    24,    25,     0,   256,    26,    27,    28,     0,     0,
    2651       45,    46,     0,     0,    31,     8,     9,    10,    11,    12,
    2652       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2653       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2654        0,     0,    34,     0,    31,     0,     0,     0,     0,    38,
    2655       39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2656        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2657        0,     0,    34,     0,     0,     0,     0,     0,     0,   206,
    2658       39,     0,     0,     0,     0,     0,     0,     0,    44,     0,
    2659        0,     0,     0,     0,    45,    46,     0,     0,     0,     8,
    2660        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2661       19,    20,    21,    22,    23,    24,    25,     0,   269,    26,
    2662       27,    28,     0,     0,    45,    46,     0,     0,    31,     8,
    2663        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2664       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2665       27,    28,     0,     0,     0,     0,    34,     0,    31,     0,
    2666        0,     0,     0,    38,    39,     0,     0,     0,     0,     0,
    2667        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2668        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2669        0,     0,     0,    38,    39,     0,     0,     0,     0,     0,
    2670        0,     0,   337,     0,     0,     0,     0,     0,    45,    46,
    2671        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2672       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2673       25,     0,   676,    26,    27,    28,     0,     0,    45,    46,
    2674        0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    2675        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2676        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2677       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2678        0,     0,   281,   282,     0,   283,  1021,     0,  1022,     0,
    2679        0,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,     0,
    2680        0,  1508,  1031,     0,     0,     0,  1032,  1033,     0,    33,
    2681        0,   284,     0,     0,     0,     0,   668,  1034,     0,     0,
    2682        0,   286,    45,    46,   287,   288,   289,   290,   291,   292,
    2683       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2684        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2685        0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
    2686        0,   170,     0,     0,    45,    46,   297,   298,   299,   300,
    2687        0,     0,   281,   282,  1035,   283,  1021,     0,  1022,  -134,
    2688        0,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,     0,
    2689        0,     0,  1031,     0,     0,     0,  1032,  1033,     0,    33,
    2690        0,   284,     0,     0,     0,     0,     0,  1034,     0,     0,
    2691        0,   286,     0,     0,   287,   288,   289,   290,   291,   292,
    2692       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2693        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2694        0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
    2695        0,   170,     0,     0,    45,    46,   297,   298,   299,   300,
    2696        0,     0,     0,     0,  1035,     0,     0,     0,     0,  -134,
    2697        2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
    2698       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2699       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2700        0,     0,     0,     0,     0,    31,     0,   281,   282,     0,
    2701      283,  1021,     0,  1022,  1380,  1381,  1023,  1024,  1025,  1026,
    2702     1027,  1028,  1029,  1030,     0,     0,  1508,  1031,     0,     0,
    2703        0,  1032,  1033,    34,    33,    35,   284,    36,     0,     0,
    2704       38,    39,  1034,     0,     0,     0,   286,     0,     0,   287,
    2705      288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2706        0,     0,     0,     0,  1291,     0,     0,     0,     0,     0,
    2707        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2708        0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
    2709       46,   297,   298,   299,   300,     0,     0,   281,   282,  1035,
    2710      283,  1021,     0,  1022,  1380,  1381,  1023,  1024,  1025,  1026,
    2711     1027,  1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,
    2712        0,  1032,  1033,     0,    33,     0,   284,     0,     0,     0,
    2713        0,     0,  1034,     0,     0,     0,   286,     0,     0,   287,
    2714      288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2715        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2716        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2717        0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
    2718       46,   297,   298,   299,   300,     0,     0,   281,   282,  1035,
    2719      283,  1021,     0,  1022,     0,     0,  1023,  1024,  1025,  1026,
    2720     1027,  1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,
    2721        0,  1032,  1033,     0,    33,     0,   284,     0,     0,     0,
    2722        0,     0,  1034,     0,     0,     0,   286,     0,     0,   287,
    2723      288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2724        0,     0,     0,     0,     0,     0,   281,   282,     0,   283,
    2725        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2726        0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
    2727       46,   297,   298,   299,   300,   284,     0,     0,     0,  1035,
    2728        0,   631,     0,   139,   140,   286,     0,     0,   287,   288,
    2729      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2730        0,     0,     0,     0,     0,   281,   282,     0,   283,     0,
    2731        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2732      295,     0,   632,     0,   633,   377,     0,     0,    45,    46,
    2733      297,   298,   299,   300,   284,     0,     0,     0,     0,     0,
    2734      285,     0,     0,     0,   286,     0,     0,   287,   288,   289,
    2735      290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
    2736        0,     0,     0,     0,   281,   282,     0,   283,     0,     0,
    2737        0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
    2738        0,   376,     0,     0,   377,     0,     0,    45,    46,   297,
    2739      298,   299,   300,   284,     0,     0,     0,     0,     0,   285,
    2740        0,     0,     0,   286,     0,     0,   287,   288,   289,   290,
    2741      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2742        0,     0,     0,   281,   282,     0,   283,     0,     0,     0,
    2743        0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
    2744      376,     0,     0,     0,     0,   748,    45,    46,   297,   298,
    2745      299,   300,   284,     0,     0,     0,     0,     0,   285,     0,
    2746        0,     0,   286,     0,     0,   287,   288,   289,   290,   291,
    2747      292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
    2748        0,     0,   281,   282,     0,   283,     0,     0,     0,     0,
    2749        0,     0,     0,     0,     0,     0,     0,   295,     0,   376,
    2750        0,     0,   956,     0,     0,    45,    46,   297,   298,   299,
    2751      300,   284,     0,     0,     0,     0,     0,   285,     0,     0,
    2752        0,   286,     0,     0,   287,   288,   289,   290,   291,   292,
    2753       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2754        0,   281,   282,     0,   283,     0,     0,     0,     0,     0,
    2755        0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
    2756        0,     0,     0,     0,    45,    46,   297,   298,   299,   300,
    2757      284,     0,     0,     0,     0,     0,   285,     0,     0,     0,
    2758      286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
    2759       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2760      281,   282,     0,   283,     0,     0,     0,     0,     0,     0,
    2761        0,     0,     0,     0,     0,   502,     0,   376,     0,     0,
    2762        0,     0,     0,    45,    46,   297,   298,   299,   300,   284,
    2763        0,     0,     0,     0,     0,   285,     0,     0,     0,   286,
    2764        0,     0,   287,   288,   289,   290,   291,   292,    41,    42,
    2765        0,   293,   294,     0,     0,     0,     0,     0,     0,   281,
    2766      282,     0,   283,     0,     0,     0,     0,     0,     0,     0,
    2767        0,     0,     0,     0,   507,     0,   376,     0,     0,     0,
    2768        0,     0,    45,    46,   297,   298,   299,   300,   284,     0,
    2769        0,     0,     0,     0,   285,     0,     0,     0,   286,     0,
    2770        0,   287,   288,   289,   290,   291,   292,    41,    42,     0,
    2771      293,   294,     0,     0,     0,     0,     0,     0,   281,   282,
    2772        0,   283,     0,     0,     0,     0,     0,     0,     0,     0,
    2773        0,     0,     0,   510,     0,   376,     0,     0,     0,     0,
    2774        0,    45,    46,   297,   298,   299,   300,   284,     0,     0,
    2775        0,     0,     0,   285,     0,     0,     0,   286,     0,     0,
    2776      287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
    2777      294,     0,     0,     0,     0,     0,     0,   281,   282,     0,
    2778      283,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2779        0,     0,   295,     0,   376,     0,     0,     0,     0,     0,
    2780      699,    46,   297,   298,   299,   300,   284,     0,     0,     0,
    2781        0,     0,   285,     0,     0,     0,   286,     0,     0,   287,
    2782      288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2783        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2784        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2785        0,   295,     0,   376,     0,     0,     0,     0,     0,   342,
    2786       46,   297,   298,   299,   300,     2,   205,     4,     5,     6,
    2787        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2788       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2789        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2790       31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2791        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2792        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2793       35,     0,    36,    37,     0,   173,   174,    40,     0,     0,
    2794        0,     0,     0,     0,     0,     0,    41,    42,   204,     2,
    2795      205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2796       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2797       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2798        0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
    2799        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2800        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2801        0,     0,    34,     0,    35,     0,    36,     0,     0,   206,
    2802       39,   463,     2,   205,     4,     5,     6,     7,     8,     9,
    2803       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2804       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2805       28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
    2806        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2807        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2808        0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2809        0,     0,    38,    39,     2,   205,     4,     5,     6,     7,
    2810        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2811       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2812       26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
    2813        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2814       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2815        0,    26,    27,    28,   481,   482,   483,    34,     0,    35,
    2816       31,    36,     0,     0,   206,    39,     0,     0,     0,     0,
    2817        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2818        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2819        0,     0,     0,     0,     0,    38,    39
    2820 };
    2821 
    2822 #define yypact_value_is_default(yystate) \
    2823   ((yystate) == (-1333))
    2824 
    2825 #define yytable_value_is_error(yytable_value) \
    2826   YYID (0)
    2827 
    2828 static const yytype_int16 yycheck[] =
    2829 {
    2830        0,     1,    43,    43,    43,   238,   184,     0,   116,   203,
    2831        1,   184,     0,   530,   184,   218,     0,   184,   184,   509,
    2832      740,     0,   167,   168,   740,   740,   184,   184,   860,   613,
    2833      595,    32,    32,   593,   725,   637,   347,     1,    43,    32,
    2834      460,   593,   517,    43,    32,   478,   488,   593,    32,    49,
    2835      492,   347,   566,    32,   105,   186,    49,   595,  1301,    39,
    2836      185,     0,   966,    63,   423,   424,    66,    81,    43,    69,
    2837       63,   593,   683,    66,   593,   362,    69,   593,    69,   366,
    2838     1002,  1003,    28,   593,    97,    49,   264,  1020,  1003,    43,
    2839       39,   264,   200,    32,   264,    81,    49,   264,   264,   627,
    2840      628,    51,     0,     1,   155,   105,   264,   264,   118,  1013,
    2841        0,  1110,   109,   113,    72,   643,   116,   117,   131,    81,
    2842        0,   343,  1032,  1033,   134,   106,   112,    66,   109,   260,
    2843      261,   490,    78,   113,    32,    63,   133,   111,    44,    45,
    2844      265,   105,    32,   184,   184,   184,   146,   147,    39,   113,
    2845      509,   113,    32,  1485,   147,   155,   156,    49,  1401,   159,
    2846      113,   111,   111,    43,   113,    64,   159,   860,   280,    49,
    2847      890,    69,   628,   701,   890,   890,   134,   111,   415,   184,
    2848     1512,   185,   146,    63,   184,   185,    66,   643,   484,    69,
    2849      709,   155,   185,   709,   627,   628,  1106,   434,   255,   709,
    2850      200,   686,  1485,   678,   407,   442,   134,   596,   208,   184,
    2851      643,   117,   111,   602,   573,   208,   111,   112,   113,    39,
    2852      220,   113,  1505,   264,   264,   264,    39,   220,  1380,  1512,
    2853      184,  1230,    72,  1232,  1233,    72,   217,   111,   238,   799,
    2854      204,   661,    44,    45,   208,   701,   811,   799,    39,   250,
    2855      250,    39,    11,   799,   146,   208,   478,   250,   258,   133,
    2856       98,   265,   250,   263,   264,   265,   250,   147,   701,   783,
    2857      270,   250,   265,   811,   238,   886,   255,   799,   403,   159,
    2858      799,   220,   119,   799,   595,   393,   124,  1202,   339,   799,
    2859      271,   111,    98,   113,   134,   295,   583,   278,   111,   118,
    2860      113,  1453,    87,   736,   184,   185,   270,   909,   308,   273,
    2861      111,   250,  1384,   421,   116,   134,   208,   270,   124,   427,
    2862      111,   114,   113,   111,   324,   113,  1435,  1020,   208,   329,
    2863      115,   295,   116,  1255,  1256,  1268,   329,   624,  1029,   339,
    2864      220,  1256,   295,   343,   308,   227,   238,   347,   348,   111,
    2865      112,   476,   250,   918,   112,   308,  1188,   917,   415,   779,
    2866      250,  1470,   362,  1472,   246,   255,   366,    44,    45,   789,
    2867      250,   917,     0,     1,   132,   339,    72,   434,   270,   343,
    2868      800,   112,   363,   118,   264,   442,   367,   118,   500,    85,
    2869       86,   613,     3,   393,  1456,   917,   618,   981,   362,   403,
    2870     1462,   597,   366,   403,    32,   601,   891,  1311,  1480,   348,
    2871      403,    55,   801,  1485,   118,   111,   308,   113,    30,     3,
    2872     1482,   421,   112,   423,   424,  1487,   622,   427,   132,   429,
    2873      626,   118,    72,  1505,    72,   672,   415,   112,    66,   116,
    2874     1512,    69,   132,     0,   118,    85,    86,    85,    86,   329,
    2875      450,   343,   937,    97,  1376,   434,   889,   132,   132,   423,
    2876      424,  1376,     0,   442,  1368,  1369,   118,   347,   468,   111,
    2877       82,    83,   476,   113,   964,   113,   476,   952,   478,   295,
    2878      480,   111,   134,   476,   484,   927,   450,   480,   121,   122,
    2879      490,  1424,   480,   638,   118,  1188,   480,   450,  1431,   463,
    2880      811,   480,   502,  1105,   504,   792,   112,   507,   132,   509,
    2881      510,   118,   118,  1078,   736,   811,   647,   517,   118,   118,
    2882      113,   521,   115,   403,   488,   415,   490,   134,   492,   114,
    2883      469,   423,   424,   118,   134,   134,   112,   645,   502,   132,
    2884      504,   480,   118,   507,   434,   509,   510,   133,   192,   502,
    2885     1483,   504,   442,   678,   507,   111,   118,   510,     4,     5,
    2886        6,     7,     8,     9,   130,   565,   566,   133,   112,  1002,
    2887      118,   215,   134,   573,   118,  1268,   111,  1268,   113,   999,
    2888     1000,   225,   480,   583,   584,   112,   134,   587,   478,  1064,
    2889      480,   118,   220,   593,  1069,   595,   584,   112,   490,   111,
    2890      480,   990,   991,   118,   484,   118,   112,   423,   424,   573,
    2891      114,  1096,   118,   613,   118,   672,   728,   509,   618,   583,
    2892      620,   134,   250,    69,   624,    71,   922,   627,   628,   111,
    2893      242,   118,   112,   614,  1054,  1055,   111,   833,   118,   118,
    2894      118,   698,   118,   643,   847,   645,   118,   134,   629,   613,
    2895      112,   295,  1343,   114,   618,   134,   134,   118,   134,    72,
    2896      624,   642,   134,    76,   867,   114,    72,   889,    49,   118,
    2897     1155,  1156,    85,    86,   678,   675,   615,   119,   678,    85,
    2898       86,   573,    63,   125,   126,    66,   502,   111,    69,   112,
    2899      112,   507,  1125,   672,   510,   118,   929,   111,   111,   113,
    2900      113,   701,   702,   703,    90,    91,   119,   120,   853,   709,
    2901      710,   675,   890,   593,   114,   595,   112,   890,   118,   698,
    2902      890,   613,   675,   890,   890,   112,   618,   923,   112,   112,
    2903      112,  1424,   890,   890,   118,   118,   736,  1428,  1431,  1430,
    2904      740,   741,   111,   724,   113,   112,   112,   112,   564,   713,
    2905      689,   118,   118,     4,     5,     6,     7,     8,     9,   981,
    2906      111,    92,    93,     1,   703,   377,   147,   892,  1285,  1489,
    2907      112,   112,   111,  1489,  1489,   112,   118,   118,   159,   117,
    2908     1200,   118,   672,   783,     4,     5,     6,     7,     8,     9,
    2909     1483,   111,   792,  1484,   794,   439,   127,   128,   678,   799,
    2910      994,   112,    72,   111,   185,   113,  1094,   118,   698,    79,
    2911     1098,   811,    82,    33,    84,    85,    86,  1237,    69,   134,
    2912       71,   465,  1255,   111,  1244,  1245,  1246,   208,   792,   709,
    2913      710,    72,   112,    74,    75,    76,    94,    95,   118,   220,
    2914       72,   112,    74,    75,    85,    86,   736,   118,   111,    69,
    2915      113,    71,   480,    85,    86,   794,   119,   120,   502,   111,
    2916      860,   113,   111,   507,    66,    64,   510,     0,     1,   111,
    2917     1015,   113,   860,   134,   111,   487,   113,   489,  1363,   111,
    2918       82,   860,   882,   134,   116,   112,   113,  1307,   892,   889,
    2919      890,   116,   892,   116,   882,  1380,    29,    30,    72,    32,
    2920       74,    75,   116,  1125,   904,   134,    57,   111,   112,   113,
    2921       43,    85,    86,    72,   111,   117,    49,   917,   918,   799,
    2922       79,   860,   922,    82,    57,    84,    85,    86,   928,   929,
    2923       63,   811,    72,    66,    74,    75,    69,   928,   134,  1064,
    2924      904,   111,   116,   113,  1069,    85,    86,    81,   329,    82,
    2925       83,   904,   952,   111,   113,   106,   111,   159,   109,   283,
    2926      117,   118,   860,   927,   928,   929,    81,  1452,  1453,   502,
    2927      860,   504,   120,   106,   507,   129,   109,   510,  1086,    96,
    2928     1202,   981,  1094,   116,   308,   309,  1098,  1099,   130,   111,
    2929     1465,   113,   111,   113,   113,   111,   112,   113,     3,   889,
    2930      119,   120,  1002,  1003,   114,    10,    11,    12,    13,    14,
    2931      890,   114,   892,   251,   147,   112,   660,   981,   220,   343,
    2932     1020,   633,   403,    58,    59,   669,   159,   117,   118,   673,
    2933      928,   895,  1020,   897,    39,    44,    45,   929,   112,  1514,
    2934      112,  1020,   922,   112,    72,   984,    74,    75,    76,  1111,
    2935     1112,   184,   185,   112,   378,   112,   258,    85,    86,  1059,
    2936     1064,   263,    67,   111,  1064,  1069,   217,   200,   114,  1069,
    2937      682,   111,   684,   113,   113,   208,   688,   118,  1078,   119,
    2938      120,  1020,   116,   111,   217,   113,  1086,   220,   133,   981,
    2939      116,   119,   120,   116,   227,  1059,   549,   550,    72,   111,
    2940     1212,   111,   112,   113,   132,    79,  1059,   114,    82,   242,
    2941       84,    85,    86,   246,    58,    59,    60,   250,   251,   133,
    2942      271,   112,  1020,   551,   552,  1125,   112,   278,   557,   558,
    2943     1020,   264,   265,     3,   553,   554,   555,   556,   271,   113,
    2944       10,    11,    12,    13,    14,   278,   348,     3,    10,    11,
    2945       12,    13,    14,   114,    10,    11,    12,    13,    14,   114,
    2946       72,   132,    74,    75,    76,   132,  1166,  1167,    72,    39,
    2947       74,    75,    76,    85,    86,   132,  1167,    39,   118,   860,
    2948       29,    85,    86,    39,  1064,   112,   112,   116,  1188,  1069,
    2949     1302,   112,   117,   117,  1306,   346,   329,    67,   117,   111,
    2950     1188,   113,  1202,   118,   111,    67,  1206,   119,   120,  1188,
    2951      112,    67,   363,   346,   347,  1206,   367,    10,    11,    12,
    2952       13,    14,   546,   547,   548,   463,   428,  1166,   134,   132,
    2953      363,   112,   860,   118,   367,  1125,   112,   112,   112,   112,
    2954      884,   853,  1206,   112,   377,   112,    39,   859,   112,  1188,
    2955      118,  1359,   112,   112,   112,  1255,  1256,   112,   112,   112,
    2956      393,   112,   112,  1263,   112,     0,  1499,   469,  1268,  1167,
    2957      403,   117,    29,   112,    67,   118,   133,   114,   114,   112,
    2958     1268,   112,   112,   118,   111,   132,   524,   899,   421,  1268,
    2959     1188,   529,    72,  1405,   427,   118,   116,    32,  1188,    79,
    2960      928,  1301,    82,   132,    84,    85,    86,   112,  1206,   112,
    2961     1301,  1489,  1202,   112,   118,   112,  1489,   112,   111,  1489,
    2962      113,   112,  1489,  1489,  1263,   111,   119,   120,   118,  1268,
    2963      463,  1489,  1489,   113,    69,   468,    72,  1301,   111,   577,
    2964       76,   118,  1023,   476,   956,   111,   111,   480,   111,    85,
    2965       86,   484,  1168,  1169,   487,  1171,   489,  1465,   132,  1359,
    2966      112,   117,  1178,   134,  1180,  1490,   112,   117,    72,   112,
    2967     1268,   130,    76,   117,   116,   111,  1376,  1358,  1268,   134,
    2968      114,    85,    86,   119,   120,   587,   112,  1031,   118,  1514,
    2969      114,   524,  1020,   114,   112,   112,   529,    47,   114,   114,
    2970      114,  1401,   112,  1301,   117,   114,   644,   111,   646,   114,
    2971     1401,   114,   134,   615,   134,   119,   120,   112,   620,     0,
    2972        1,   156,   134,   747,  1424,   117,    72,   134,    74,    75,
    2973      112,  1431,   134,  1433,   132,  1435,  1424,  1401,  1050,    85,
    2974       86,   117,   114,  1431,   577,  1424,    83,   114,  1489,  1489,
    2975     1489,    32,  1431,   114,   114,   114,   114,   112,   696,   112,
    2976      593,    60,   595,   614,   111,  1465,   114,   113,    49,  1433,
    2977     1470,  1435,  1472,   111,   116,   111,    98,   112,   629,   112,
    2978     1433,   614,  1435,  1483,   111,  1424,  1490,   689,    69,  1489,
    2979     1490,   642,  1431,   661,   229,  1483,   629,  1490,   114,  1499,
    2980      633,   703,   134,  1401,  1483,   114,  1470,  1188,  1472,   642,
    2981     1514,   644,   645,   646,  1514,   250,   112,  1470,   112,  1472,
    2982      255,  1514,   114,  1339,   105,    98,  1424,   111,   111,   134,
    2983      117,    42,   112,  1431,  1424,  1499,   112,   112,  1166,  1167,
    2984       72,  1431,    74,    75,  1483,   678,   112,   118,   134,   682,
    2985     1162,   684,   134,    85,    86,   688,    70,   112,   132,    73,
    2986     1188,   112,    76,   696,    78,    98,   147,    98,   112,   134,
    2987      134,    85,   112,   724,   155,   156,   709,   710,  1206,   111,
    2988      114,   134,   112,   112,   116,  1483,    72,   114,    74,    75,
    2989       76,   724,   794,  1483,   117,   114,   134,   134,   111,    85,
    2990       86,   117,   117,  1284,   185,   112,   112,  1499,   134,  1489,
    2991      112,   779,   112,   657,   349,  1035,   559,   562,   560,   200,
    2992      561,   789,   203,   204,   563,   111,   961,   208,  1188,  1453,
    2993     1345,  1524,   800,  1277,  1099,  1263,  1306,  1278,    66,  1431,
    2994     1268,    10,    11,    12,    13,    14,  1050,    75,   229,   686,
    2995      675,   675,   233,  1069,   235,   688,  1337,   981,   897,  1340,
    2996      905,   577,   956,   244,   853,   925,   799,   639,   480,   250,
    2997       39,   713,  1206,  1301,   255,   724,   565,   565,   811,   565,
    2998      415,    -1,    -1,    -1,   265,    -1,    -1,    -1,    -1,   117,
    2999       -1,    -1,   273,    -1,   429,    -1,  1020,   211,    67,   434,
    3000       -1,    -1,    -1,  1384,    -1,   943,    -1,   442,  1389,    -1,
    3001       10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
    3002      853,    -1,    -1,    -1,   962,   460,   859,    -1,   966,    -1,
    3003       -1,   159,    -1,    -1,    -1,    -1,    -1,  1418,    -1,    39,
    3004      777,    -1,   111,   478,   113,   480,    -1,    -1,    -1,    -1,
    3005      119,   120,    -1,    -1,    -1,    -1,    -1,   890,   339,   892,
    3006       -1,    -1,   343,    -1,   278,    -1,   899,    67,   349,    -1,
    3007       -1,    -1,    -1,  1401,    83,  1013,    -1,    -1,    87,    88,
    3008       89,   362,   984,    -1,    -1,   366,   521,    -1,  1432,   922,
    3009     1434,    -1,   220,    -1,    -1,    -1,  1424,    -1,   188,    -1,
    3010       -1,    66,   111,  1431,   113,   195,   115,   116,    -1,    -1,
    3011      943,   111,   849,   113,    -1,    -1,    -1,    -1,    -1,   119,
    3012      120,    -1,  1503,   956,    -1,  1469,    -1,  1471,  1509,   962,
    3013      258,   999,  1000,   966,   415,   263,   350,    -1,   352,  1520,
    3014       -1,    -1,    -1,  1524,    -1,    -1,    -1,    -1,   429,   584,
    3015      278,    -1,   117,   434,   891,  1483,    -1,    -1,    -1,    -1,
    3016       -1,   442,    72,    -1,    74,    75,    76,    -1,    -1,  1513,
    3017       -1,  1515,  1110,    -1,    -1,    85,    86,   267,    -1,   460,
    3018     1013,    -1,   463,    -1,  1528,  1529,  1054,  1055,    -1,    -1,
    3019       -1,    -1,   627,   628,   159,    -1,    -1,   478,    -1,   480,
    3020      937,   111,    -1,   113,    -1,    -1,    -1,   488,   643,   119,
    3021      120,   492,    10,    11,    12,    13,    14,  1050,    -1,    -1,
    3022      348,    -1,    -1,    -1,   438,    -1,   661,    -1,    -1,    -1,
    3023       -1,  1064,   969,    -1,   324,    -1,  1069,   672,    -1,    -1,
    3024      521,    39,   332,    -1,    72,   335,    74,    75,    76,    -1,
    3025        0,    -1,    -1,  1086,    -1,   220,    -1,    85,    86,    -1,
    3026       -1,    -1,    -1,   698,  1166,    -1,   701,    -1,    -1,    67,
    3027       -1,    -1,    -1,    -1,    72,    -1,    -1,  1110,    76,    -1,
    3028     1017,    -1,    32,   111,    -1,   566,    -1,    85,    86,    -1,
    3029       -1,    -1,  1230,   258,  1232,  1233,    -1,    -1,   263,    -1,
    3030      428,   736,   583,   584,    -1,   395,    -1,    -1,    -1,   399,
    3031       -1,    -1,    -1,   111,   595,    -1,   444,    -1,    -1,    69,
    3032      460,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,  1162,
    3033       -1,    -1,   613,    -1,     0,    -1,    -1,   618,    -1,    -1,
    3034       -1,   469,    -1,   624,   779,    -1,   627,   628,    -1,    -1,
    3035       -1,    -1,    -1,    -1,   789,    -1,    -1,    -1,    -1,  1096,
    3036      795,  1263,   643,    -1,    -1,   800,    32,    -1,    72,  1237,
    3037       74,    75,    76,  1311,    -1,    -1,  1244,  1245,  1246,    -1,
    3038      661,    85,    86,   348,    -1,   475,    -1,    -1,    -1,    -1,
    3039       -1,   672,    -1,    -1,    -1,    -1,    -1,  1230,    -1,  1232,
    3040     1233,    -1,    -1,    69,    -1,    -1,   156,   111,    10,    11,
    3041       12,    13,    14,    -1,    -1,   119,   120,   698,  1155,  1156,
    3042      701,    -1,    -1,    -1,    -1,   860,    -1,    -1,    -1,   710,
    3043     1368,  1369,   713,    -1,    -1,    -1,    -1,    39,    -1,  1307,
    3044       10,    11,    12,    13,    14,    -1,    -1,   882,    -1,    -1,
    3045       -1,    -1,    -1,    -1,   889,   736,    -1,    -1,    -1,   587,
    3046      741,    -1,    -1,   428,    -1,    67,    -1,    -1,  1406,    39,
    3047       72,    -1,    74,    75,    76,   565,   566,    -1,  1311,    -1,
    3048       -1,    -1,    -1,    85,    86,    -1,    -1,   615,    -1,    -1,
    3049      156,    -1,   620,    -1,    -1,    -1,    -1,    67,   779,    -1,
    3050      250,    -1,    72,    -1,   469,   255,    76,  1358,   789,   111,
    3051      724,   792,    -1,    -1,   795,    85,    86,   119,   120,   800,
    3052       -1,   661,    -1,    -1,    -1,  1358,  1359,    -1,  1466,   810,
    3053       72,    -1,    74,    75,    76,  1368,  1369,  1475,     0,     1,
    3054       -1,   111,    -1,    85,    86,    -1,    -1,    -1,    -1,   119,
    3055      120,    -1,    10,    11,    12,    13,    14,    -1,   648,    -1,
    3056       -1,   689,   652,    -1,   999,  1000,    -1,  1002,  1003,   111,
    3057       32,   113,    -1,  1406,    -1,   703,    -1,   119,   120,   860,
    3058       -1,    39,    -1,    -1,   250,  1020,    -1,    -1,    -1,   255,
    3059       -1,    -1,    -1,    -1,    -1,    -1,   724,    -1,    -1,   349,
    3060       -1,   882,    -1,    -1,    66,    -1,    -1,    69,   889,    67,
    3061       -1,   892,    -1,    -1,    72,    -1,    74,    75,    76,  1054,
    3062     1055,    -1,   587,    -1,    -1,    -1,  1363,    85,    86,    -1,
    3063       -1,    -1,  1465,  1466,    -1,    -1,    -1,   918,    -1,   779,
    3064       -1,    -1,  1475,  1380,    -1,    -1,   927,   928,     0,   789,
    3065      615,    -1,    -1,   111,    -1,   620,  1489,  1490,    -1,    -1,
    3066      800,   119,   120,    -1,    -1,   415,   794,    -1,    -1,    10,
    3067       11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,   429,
    3068       32,  1514,    -1,   349,   434,    -1,    -1,    -1,    -1,    -1,
    3069     1125,    -1,   442,   783,   156,    -1,    -1,    -1,    39,    -1,
    3070      981,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3071      460,    -1,    -1,   994,    -1,  1452,  1453,    69,   999,  1000,
    3072       -1,  1002,  1003,    -1,   689,    -1,    67,    -1,   478,    -1,
    3073      480,    72,  1167,    74,    75,    76,    -1,    -1,   703,  1020,
    3074       -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    72,   415,
    3075       74,    75,    76,  1188,    -1,    -1,    -1,    -1,   220,    -1,
    3076       -1,    85,    86,   429,    -1,  1200,    -1,  1202,   434,    -1,
    3077      111,   521,   113,  1054,  1055,    -1,   442,    -1,   119,   120,
    3078       -1,    -1,    -1,    -1,    -1,    83,    -1,   111,   250,    87,
    3079       88,    89,    -1,    -1,   460,   119,   120,    -1,    -1,    -1,
    3080       -1,    -1,  1237,    -1,   156,    -1,   896,    -1,    -1,  1244,
    3081     1245,  1246,   478,   111,   480,   113,    -1,   115,   116,    -1,
    3082     1255,  1256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   794,
    3083       -1,    -1,    -1,  1268,   584,    -1,    -1,    -1,    -1,    -1,
    3084       -1,    -1,    -1,    -1,  1125,    -1,    -1,    -1,    -1,    -1,
    3085       -1,    -1,    -1,    -1,    -1,   521,   984,    -1,    -1,   999,
    3086     1000,    99,   100,   101,   102,   103,   104,   105,   106,   107,
    3087      108,   109,  1307,    -1,    -1,    -1,    -1,   627,   628,    -1,
    3088       -1,   971,    -1,    -1,    -1,    -1,  1167,    -1,    -1,    -1,
    3089       -1,    -1,    -1,   643,    -1,   133,    -1,   987,   250,    -1,
    3090       -1,    -1,    -1,   255,    -1,    -1,    -1,  1188,    -1,    -1,
    3091       -1,   661,    -1,    -1,  1054,  1055,    -1,    -1,   584,  1200,
    3092       -1,  1202,   672,    -1,    -1,  1206,    -1,    -1,    -1,    -1,
     3640      23,    24,    25,    26,    27,    28,    29,   115,    -1,    32,
     3641      33,    34,    -1,   121,   122,    -1,    -1,    -1,    41,    -1,
    30933642      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3094       -1,  1376,    -1,    -1,    -1,    -1,    -1,    -1,   698,    -1,
    3095       -1,   701,    -1,    -1,    -1,    -1,  1237,    -1,    -1,    -1,
    3096       -1,   627,   628,  1244,  1245,  1246,    -1,   429,    -1,    -1,
    3097       -1,    -1,  1062,    -1,  1255,  1256,    -1,   643,    -1,    -1,
    3098       -1,    -1,    -1,    -1,    -1,    -1,   736,  1268,    -1,  1424,
    3099       -1,    -1,    -1,    -1,    -1,   661,  1431,   349,    53,    -1,
    3100       55,    -1,    -1,    58,    59,    60,   672,    62,    -1,    -1,
    3101       -1,  1101,    -1,    -1,    -1,    -1,    -1,    -1,   480,   984,
    3102     1301,    76,    -1,    -1,    -1,    -1,  1307,    -1,    -1,   779,
    3103       -1,    -1,   698,    88,    89,   701,    -1,    -1,  1166,   789,
    3104       -1,    -1,    -1,    -1,    -1,   795,    -1,    -1,  1483,    -1,
    3105      800,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   521,
    3106     1200,    -1,    -1,   415,    -1,    -1,    -1,    -1,    -1,    -1,
    3107      736,    -1,    -1,    -1,    -1,    -1,    -1,   429,    -1,    -1,
    3108       -1,    -1,   434,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3109      442,    -1,    -1,    -1,    -1,  1376,    -1,  1237,    -1,    -1,
    3110       -1,    -1,    -1,    -1,  1244,  1245,  1246,    -1,   460,    -1,
    3111      860,    -1,    -1,   779,    -1,    -1,    -1,    -1,    -1,    -1,
    3112     1401,    -1,   584,   789,    -1,    -1,   478,    -1,   480,   795,
    3113       -1,    -1,   882,    -1,   800,  1263,    -1,    -1,    -1,   889,
    3114       -1,    -1,    -1,  1424,    -1,    -1,    -1,    -1,    -1,    -1,
    3115     1431,    -1,     7,    -1,    -1,    10,    11,    12,    13,    14,
    3116       -1,    -1,    -1,    -1,    -1,   627,   628,  1307,    -1,   521,
    31173643      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3118       -1,   643,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3119       -1,    -1,    -1,    -1,   860,    -1,    -1,    -1,    -1,    -1,
    3120       -1,  1166,  1483,    -1,    -1,    -1,    -1,    -1,    -1,  1490,
    3121       -1,    66,    67,    -1,    -1,    -1,   882,    72,    -1,    -1,
    3122       -1,    76,    -1,   889,    79,    80,    81,    82,    83,    84,
    3123       85,    86,   584,    88,    89,    -1,    -1,    -1,    -1,   701,
    3124       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   999,
    3125     1000,    -1,  1002,  1003,    -1,    -1,   111,    -1,   113,    -1,
    3126       -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
    3127     1020,    -1,    -1,    -1,    -1,   627,   628,    -1,    -1,    -1,
    3128       -1,    -1,    -1,    -1,    -1,    -1,    -1,   342,    -1,   344,
    3129       -1,   643,    -1,    10,    11,    12,    13,    14,  1263,    -1,
    3130      355,   356,    -1,    -1,  1054,  1055,    -1,    -1,    -1,   661,
    3131       -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3132      672,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3133       -1,    -1,    -1,   999,  1000,    -1,  1002,  1003,    -1,    -1,
    3134       -1,    -1,    -1,    -1,    39,    -1,   698,    -1,    -1,   701,
    3135       67,    -1,    -1,    -1,  1020,    72,    -1,    74,    75,    76,
    3136       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,
    3137       -1,    -1,    67,    -1,    -1,  1125,    -1,    72,    -1,    74,
    3138       75,    76,    -1,    -1,   736,    -1,    -1,    -1,  1054,  1055,
    3139       85,    86,    -1,    -1,   111,    -1,   113,    -1,   860,    -1,
    3140       -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
    3141       -1,    -1,    -1,    -1,    -1,    -1,   111,  1167,   113,    -1,
    3142      882,    -1,    -1,    -1,   119,   120,    -1,   779,    37,    38,
    3143       -1,    40,    -1,    -1,    -1,    -1,    -1,   789,  1188,    -1,
    3144       -1,    -1,    -1,   795,    -1,    -1,    -1,    -1,   800,    -1,
    3145     1200,    -1,  1202,    -1,    -1,    -1,    -1,    66,    -1,  1125,
    3146       -1,    -1,    -1,    72,    -1,    -1,   928,    76,    -1,    -1,
    3147       79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
    3148       89,    -1,    -1,    -1,    -1,    -1,    -1,  1237,    -1,    -1,
    3149       -1,    -1,    -1,    -1,  1244,  1245,  1246,    -1,    -1,    -1,
    3150       -1,  1167,   111,    -1,   113,  1255,  1256,    -1,   860,    -1,
    3151      119,   120,   121,   122,   123,   124,    -1,    -1,  1268,    -1,
    3152       -1,    -1,  1188,   132,    -1,    -1,    -1,    -1,    -1,    -1,
    3153      882,    -1,    -1,    -1,  1200,    -1,  1202,   889,    -1,    -1,
    3154     1002,  1003,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3155       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1307,  1020,    -1,
    3156       -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
    3157       -1,  1237,    -1,    75,    -1,    77,    -1,    79,  1244,  1245,
    3158     1246,    -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,  1255,
    3159     1256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3160       -1,    -1,  1268,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3161       -1,    -1,    -1,    -1,    -1,   117,    -1,   119,   120,   121,
    3162       -1,    -1,    -1,    -1,    -1,    -1,  1376,    -1,    -1,    -1,
    3163       -1,    -1,    -1,    -1,    -1,   690,    -1,   692,    -1,    -1,
    3164       -1,  1307,    -1,    -1,   699,   700,    -1,   999,  1000,   704,
    3165     1002,  1003,    -1,    -1,    -1,    -1,    -1,   159,    -1,    -1,
    3166       -1,    -1,   717,    -1,    -1,    -1,    -1,   722,  1020,    -1,
    3167       -1,    -1,    -1,    -1,  1424,    -1,    -1,    -1,    -1,    -1,
    3168       -1,  1431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3169       -1,    -1,    -1,    -1,   749,    -1,    -1,    -1,    -1,    -1,
    3170       -1,    -1,  1054,  1055,  1166,  1167,    -1,    -1,    -1,    -1,
    3171     1376,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   220,    -1,
    3172      222,   223,   224,    -1,    -1,    -1,  1188,    -1,    -1,    -1,
    3173       -1,    -1,    -1,  1483,    -1,    -1,    -1,    -1,    -1,    -1,
    3174       -1,    -1,    -1,    -1,  1206,    -1,    -1,    -1,    -1,    -1,
    3175       -1,    -1,    -1,    -1,    -1,    -1,   258,    -1,  1424,    -1,
    3176       -1,   263,    -1,    -1,    -1,  1431,    -1,    -1,    -1,    -1,
    3177       -1,    -1,    -1,  1125,    -1,    -1,   278,    -1,    -1,    -1,
    3178       -1,    -1,    -1,    -1,    -1,    -1,    -1,   842,    -1,   844,
    3179      845,   846,    -1,  1255,  1256,    -1,    -1,    -1,    -1,    -1,
    3180       -1,  1263,    49,    -1,    -1,    -1,  1268,    -1,   863,    -1,
    3181       -1,    -1,    -1,    -1,    -1,  1167,    -1,  1483,    -1,    66,
    3182       -1,    -1,   877,    -1,    -1,    -1,    -1,   329,    -1,    -1,
    3183       -1,    -1,    -1,    -1,    -1,    -1,  1188,    -1,    -1,  1301,
    3184       -1,    -1,    -1,    -1,    -1,    -1,   348,    -1,  1200,    -1,
    3185     1202,   353,   354,    -1,    -1,    -1,    -1,    -1,    -1,   361,
    3186       -1,   916,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
    3187      117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3188       -1,    -1,    -1,    -1,    -1,  1237,    -1,    -1,    -1,    -1,
    3189       -1,    -1,  1244,  1245,  1246,    -1,    -1,    -1,    -1,   146,
    3190       -1,   403,    -1,  1255,  1256,   960,    -1,    -1,    -1,   156,
    3191      965,    -1,   159,    -1,  1376,   970,  1268,    -1,    -1,   421,
    3192      975,    -1,    -1,    -1,   426,   980,   428,   982,   983,    -1,
    3193       -1,   986,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1401,
    3194      995,    -1,   444,    -1,    -1,   447,   448,    -1,    -1,    -1,
    3195       -1,    -1,    -1,   455,    -1,  1307,  1011,  1012,    -1,    -1,
    3196       -1,   208,  1424,    -1,    -1,    -1,    -1,   469,    -1,  1431,
    3197       -1,    -1,    -1,   220,   476,    -1,    -1,    -1,    -1,    -1,
    3198       -1,    -1,  1037,    -1,    -1,  1040,    -1,    -1,    -1,    -1,
    3199       -1,   238,    -1,    -1,    -1,    26,    27,    28,    10,    11,
    3200       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3201       22,    23,    24,    25,    26,    27,   263,    -1,    -1,    -1,
    3202       -1,  1483,    -1,   270,  1376,    -1,    -1,    39,  1083,    -1,
    3203       -1,    -1,    -1,    -1,  1089,  1090,    -1,    -1,    -1,    -1,
    3204       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   295,    -1,
    3205       -1,    -1,    -1,  1108,    -1,    67,    -1,    -1,  1113,    -1,
    3206       -1,   308,    -1,  1118,    -1,    -1,    -1,    98,    -1,   100,
    3207       -1,    -1,  1424,    -1,  1129,    -1,    -1,    -1,    -1,  1431,
    3208       -1,    -1,    -1,    -1,    -1,   587,    -1,  1142,    -1,  1144,
    3209     1145,  1146,  1147,    -1,    -1,    -1,   343,    -1,    -1,    -1,
    3210       -1,   348,    -1,    -1,  1159,    -1,  1161,    -1,    -1,    -1,
    3211     1165,    -1,    -1,   615,    -1,    -1,    -1,    -1,   620,    -1,
    3212       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3213       -1,  1483,    -1,    -1,    -1,    -1,    -1,    -1,  1193,  1194,
    3214       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
    3215       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   190,
    3216      191,    -1,    -1,    -1,   195,    -1,   197,   198,    -1,    -1,
    3217       44,    -1,    -1,    -1,    -1,    -1,   423,   424,    -1,    -1,
    3218       -1,    -1,   429,    -1,    -1,    -1,    -1,   689,    -1,    -1,
    3219       -1,    -1,  1247,  1248,    -1,    -1,    -1,    -1,    -1,    -1,
    3220       -1,   703,  1257,   450,    -1,    -1,    -1,    -1,    -1,    -1,
    3221       -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
    3222       -1,    -1,   724,    -1,    -1,    -1,    -1,   101,    -1,    -1,
    3223       -1,   478,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3224       -1,    -1,    -1,   490,    -1,    -1,    -1,    -1,    -1,    -1,
    3225       -1,    -1,    -1,    -1,    -1,   502,    -1,   504,    -1,    -1,
    3226      507,    -1,   509,   510,  1319,    -1,  1321,  1322,  1323,    -1,
    3227       -1,    -1,    -1,    -1,   521,    -1,    -1,    -1,  1333,    -1,
    3228       -1,   783,    -1,    -1,    -1,    -1,  1341,    -1,    -1,    -1,
    3229       -1,    -1,   794,    -1,    -1,    -1,   170,    -1,    -1,    -1,
    3230       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   811,
    3231       -1,  1366,  1367,    -1,    -1,    -1,    -1,    -1,    -1,   193,
    3232       -1,    -1,    -1,    -1,    -1,    -1,   573,    -1,    -1,    -1,
    3233       -1,    -1,    -1,   207,    -1,    -1,    -1,   584,    -1,    -1,
    3234      587,    -1,   216,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3235       -1,    -1,   226,    -1,    -1,    -1,  1411,  1412,    -1,    -1,
    3236       -1,    -1,    -1,    -1,    -1,    -1,   613,    -1,    -1,  1424,
    3237       -1,   618,    -1,    -1,    -1,    -1,  1431,   251,    -1,    -1,
    3238      627,   628,   256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3239       -1,    -1,    -1,    -1,    -1,   269,   643,    -1,    -1,    -1,
    3240       -1,   275,    -1,   277,    -1,    -1,    -1,    -1,    -1,  1464,
    3241       -1,    -1,    -1,  1468,    -1,    -1,    -1,    -1,    -1,    -1,
    3242      922,    -1,   296,    -1,    -1,    -1,    -1,    -1,   675,    -1,
    3243       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3244       -1,  1496,    -1,  1498,    -1,    -1,    -1,    -1,    -1,    -1,
    3245      952,    -1,    -1,    -1,   701,    -1,   703,    -1,    -1,    -1,
    3246       -1,    -1,    -1,   337,    -1,    -1,    -1,   341,    -1,    -1,
    3247       -1,  1526,  1527,    -1,    -1,    -1,    -1,    -1,    -1,  1534,
    3248     1535,    -1,   984,    -1,    -1,    -1,    -1,    -1,    -1,   736,
    3249       -1,    -1,    -1,   995,    -1,   369,    -1,    -1,    -1,   373,
    3250      374,    -1,   376,    -1,    -1,    -1,    -1,    -1,    -1,   383,
    3251      384,    -1,   386,   387,    -1,   389,    -1,   391,    -1,    -1,
    3252       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3253       -1,    -1,    -1,    -1,   408,    -1,    -1,    -1,   569,   570,
    3254       -1,    -1,   416,    -1,    -1,    -1,    -1,   794,    -1,    -1,
    3255       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3256       -1,    -1,  1064,    -1,    -1,   596,   440,    -1,   599,   600,
    3257       -1,   602,    -1,   604,   605,    -1,  1078,    -1,   609,   610,
    3258       -1,    26,    27,    28,   281,    -1,   283,   284,    -1,    -1,
    3259       -1,    -1,   466,    -1,    -1,    -1,   293,   294,   472,    -1,
    3260       -1,    -1,    -1,   477,    -1,    -1,    -1,    -1,    -1,    -1,
    3261       -1,   308,   309,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3262       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
    3263      156,    -1,    -1,    -1,    -1,   882,    -1,    -1,    -1,   513,
    3264       -1,    -1,   889,    -1,    -1,    -1,   343,    -1,    -1,    -1,
    3265       -1,    -1,    -1,    98,   528,   100,    -1,   904,    -1,    -1,
    3266       -1,    -1,   188,    -1,  1166,    -1,    -1,    -1,    -1,   195,
    3267       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3268      125,   378,   929,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3269       -1,   565,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3270      574,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3271       -1,    -1,    -1,    -1,   745,   746,    -1,    -1,    -1,    -1,
    3272      594,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3273       -1,    -1,    -1,    -1,   981,   180,    -1,    -1,    -1,    -1,
    3274       -1,   267,    -1,   188,    -1,   190,   191,    -1,    -1,    -1,
    3275      195,    -1,   197,   198,    -1,  1002,  1003,    -1,   632,    -1,
    3276       -1,  1263,    -1,    -1,     3,     4,     5,     6,     7,     8,
    3277        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3278       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3279       -1,    30,    31,    32,   668,    -1,    -1,    -1,   324,    -1,
    3280       39,    -1,   676,    -1,    -1,    -1,   332,   333,    -1,   335,
    3281      336,    -1,  1059,    -1,    -1,    -1,    -1,   343,    -1,    -1,
    3282       -1,   347,   267,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3283       69,    -1,    71,   707,    -1,    74,    75,    -1,    -1,    -1,
    3284      366,    -1,    -1,    -1,   718,   719,    -1,    -1,    -1,   546,
    3285      547,   548,   549,   550,   551,   552,   553,   554,   555,   556,
    3286      557,   558,   559,   560,   561,   562,   563,    -1,    -1,   395,
    3287      901,    -1,    -1,   399,    -1,    -1,   750,   116,  1125,    -1,
    3288       -1,   755,    10,    11,    12,    13,    14,    15,    16,    17,
    3289       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3290       28,    -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,    -1,
    3291       -1,    39,    -1,   146,    -1,    -1,    -1,    -1,    -1,  1166,
    3292       -1,    -1,    -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,
    3293       -1,    -1,    -1,    -1,   167,   168,    -1,    -1,    -1,    67,
    3294       -1,   815,    -1,    -1,    -1,    -1,    -1,    -1,   822,   475,
    3295       78,    -1,   478,    -1,    -1,  1202,    -1,    -1,    -1,    -1,
    3296       -1,   835,    -1,   837,    -1,    -1,    -1,    -1,    -1,    -1,
    3297       -1,    -1,    -1,    -1,    -1,    -1,   850,    -1,    -1,    -1,
    3298       -1,    -1,   856,    -1,    -1,    -1,    -1,    -1,    -1,   686,
    3299       -1,   517,    -1,    -1,   868,   521,    -1,   871,    -1,    -1,
    3300       -1,    -1,    -1,    -1,    -1,   238,    -1,    -1,  1255,  1256,
    3301       -1,    -1,  1514,    -1,    -1,    -1,  1263,    -1,    -1,    -1,
    3302       -1,    -1,    -1,    -1,    -1,  1056,    -1,    -1,    -1,   262,
    3303       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   565,
    3304      566,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3305      747,    -1,    -1,    -1,    -1,    -1,    -1,   583,   584,    -1,
    3306       -1,    -1,    -1,    -1,    -1,    -1,    -1,   593,    -1,   595,
    3307      596,    -1,    -1,    -1,    -1,    -1,   602,    -1,    -1,    -1,
    3308      777,    -1,    -1,    -1,    -1,    -1,   612,   613,    -1,    -1,
    3309       -1,    -1,   618,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3310       -1,   627,   628,    -1,    -1,   979,    -1,    -1,    -1,    -1,
    3311       -1,    -1,    -1,    -1,    -1,    -1,    -1,   643,    -1,    -1,
    3312       -1,    -1,   648,   649,   569,   570,   652,   653,    -1,  1376,
    3313       -1,    -1,    -1,   659,    -1,    -1,    -1,    -1,    -1,    -1,
    3314       -1,    -1,    -1,    -1,   377,    -1,    -1,    -1,    -1,    -1,
    3315       -1,   596,   678,  1184,   599,   600,    -1,   602,    -1,   604,
    3316      605,    -1,    -1,    -1,   609,   610,  1040,    -1,    -1,    -1,
    3317       -1,    -1,    -1,    -1,    -1,   701,   702,    -1,    -1,    -1,
    3318       -1,    -1,    -1,    -1,    -1,    -1,  1433,    -1,  1435,    -1,
    3319       -1,    -1,    -1,    -1,   891,    -1,    -1,    -1,    -1,    -1,
    3320     1074,    -1,    -1,    -1,    -1,  1079,    -1,    -1,    -1,    -1,
    3321      736,    -1,    -1,  1087,   740,   741,    -1,    -1,    -1,    -1,
    3322       -1,    -1,    -1,  1470,    -1,  1472,    -1,    -1,    -1,    -1,
    3323       -1,    -1,    -1,    -1,    -1,    -1,    -1,   470,    -1,    -1,
    3324      937,    -1,    -1,    -1,    -1,    -1,    -1,  1121,    -1,    -1,
    3325       -1,    -1,  1499,    -1,    -1,    -1,    -1,   783,  1132,    -1,
    3326       -1,  1135,    -1,  1137,    -1,    -1,    -1,    -1,    -1,    -1,
    3327       -1,    -1,   969,   799,    -1,   801,   509,    -1,  1152,  1153,
    3328       -1,    -1,    -1,    -1,   981,   811,    -1,    -1,   521,    -1,
    3329       -1,    -1,    -1,    -1,   527,    -1,    -1,   530,  1172,    -1,
    3330      745,   746,     7,    -1,    -1,    10,    11,    12,    13,    14,
    3331      543,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3332       -1,    -1,    -1,  1020,    -1,    -1,    -1,    -1,    -1,    -1,
    3333       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3334      573,    -1,    -1,    -1,  1218,    -1,    -1,   580,    -1,    -1,
    3335       -1,   584,  1226,    -1,    -1,    -1,   882,    -1,    -1,    -1,
    3336       -1,    66,    67,   889,   890,    -1,   892,    72,    -1,    -1,
    3337      896,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3338       85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
    3339       -1,   917,   918,    -1,    -1,    -1,    -1,   630,    -1,  1096,
    3340       -1,    -1,    -1,    -1,    -1,   638,   111,    -1,   113,    -1,
    3341       -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
    3342       -1,    -1,  1296,    -1,  1298,    -1,   952,    -1,    -1,    -1,
    3343       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3344     1314,    -1,  1316,    -1,    -1,   971,   972,    -1,    -1,    -1,
    3345       -1,   896,    -1,    -1,    -1,   981,   901,  1331,  1155,  1156,
    3346       -1,   987,   988,    -1,   990,   991,   992,    -1,    -1,    -1,
    3347       -1,    -1,  1346,  1347,    -1,    -1,  1002,  1003,    -1,    -1,
    3348       -1,   714,    -1,  1357,    -1,    -1,  1360,    -1,    -1,    -1,
    3349       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3350       -1,    -1,    -1,   736,    -1,   738,    -1,    -1,  1382,    -1,
    3351       -1,    -1,    -1,    -1,    -1,   748,    -1,  1391,    -1,    -1,
    3352     1394,   754,  1396,  1397,  1398,    -1,    -1,    -1,    -1,    -1,
    3353       -1,    -1,    -1,    -1,    -1,    -1,  1062,    -1,  1064,    -1,
    3354       -1,    -1,    -1,  1069,    -1,    -1,    -1,    -1,    -1,    -1,
    3355       -1,    -1,  1078,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3356       -1,   794,   795,  1437,    -1,  1439,    -1,  1441,    -1,    -1,
    3357       -1,    -1,    -1,    -1,    -1,  1101,  1102,   810,    -1,    -1,
    3358       -1,    -1,    -1,  1457,    -1,    -1,    -1,    -1,    -1,    -1,
    3359       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1125,
    3360       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3361       -1,  1056,    -1,    -1,    -1,    -1,   849,    -1,    -1,    -1,
    3362      853,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3363       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3364       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,   882,
    3365       -1,    -1,    -1,    -1,    39,    -1,   889,    -1,    -1,    -1,
    3366       -1,    -1,    -1,    -1,    -1,    -1,  1363,    -1,    -1,    -1,
    3367       -1,    -1,    -1,    -1,    -1,    -1,  1202,    -1,    -1,    -1,
    3368       -1,    -1,    67,  1380,    -1,    -1,    -1,    -1,    -1,    74,
    3369       75,    -1,    -1,    -1,    -1,    -1,   929,     3,     4,     5,
    3370        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3371       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3372       26,    27,    -1,   956,    30,    31,    32,    -1,   961,  1255,
    3373     1256,   964,    -1,    39,   119,   120,    -1,    -1,    -1,  1184,
    3374       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3375       -1,   984,    -1,    -1,    -1,  1452,  1453,    -1,    -1,    -1,
    3376       -1,    67,   995,    69,    -1,    71,    72,    -1,    74,    75,
    3377       76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,
    3378       86,    -1,  1015,    -1,  1017,    -1,    -1,    -1,    -1,    -1,
    3379       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1032,
    3380     1033,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
    3381       -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,  1052,
    3382       -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
     3644      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
     3645      73,    -1,    -1,    76,    77,    -1,     4,     5,     6,     7,
    33833646       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    33843647      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3385     1376,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
    3386       -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3387       -1,    -1,    -1,  1106,    -1,    -1,    -1,    -1,    -1,    -1,
    3388       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3389       -1,    69,  1125,    71,    -1,    -1,    74,    75,    -1,    -1,
    3390       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1140,  1141,    -1,
    3391        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3392       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3393       24,    25,    26,    27,    -1,   113,    30,    31,    32,  1465,
    3394       -1,   119,   120,    -1,    -1,    39,    -1,    -1,    -1,    -1,
    3395       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3396       -1,    -1,    -1,  1489,  1490,    -1,    -1,    -1,    -1,    -1,
    3397       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
    3398       74,    75,    -1,    -1,    -1,    -1,    -1,    -1,  1514,    -1,
    3399       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3400       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3401       21,    22,    23,    24,    25,    26,    27,    -1,   112,    30,
    3402       31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
    3403       41,    -1,    43,    -1,    -1,    46,    47,    48,    49,    50,
    3404       51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,  1282,
    3405       61,    62,  1285,    64,    -1,    66,    67,    -1,    69,    -1,
    3406       71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3407       81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3648      28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
     3649      -1,    -1,   115,    41,    -1,    -1,    -1,    -1,   121,   122,
    34083650      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34093651      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3410      111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,
    3411      121,   122,   123,   124,    -1,    -1,    -1,    -1,   129,    -1,
    3412       -1,    -1,    -1,   134,     3,     4,     5,     6,     7,     8,
    3413        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3414       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3415       -1,    30,    31,    32,    33,    -1,    -1,    36,    37,    38,
    3416       39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
     3652      -1,    69,    -1,    71,    -1,    73,    -1,    -1,    76,    77,
     3653      -1,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3654      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3655      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3656      33,    34,    -1,    -1,    -1,    -1,    -1,   115,    41,    -1,
     3657      -1,    -1,    -1,   121,   122,    -1,    -1,    -1,    -1,    -1,
     3658      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3659      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
     3660      73,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
     3661      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3662      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3663      -1,    -1,    -1,    -1,    39,    40,    41,    42,    -1,    -1,
     3664      -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3665      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3666      -1,    -1,    -1,    68,    69,    -1,    -1,    -1,    -1,    74,
     3667      -1,    76,    77,    78,    -1,    -1,    81,    82,    83,    84,
     3668      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
     3669      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3670      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3671     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
     3672     125,   126,    10,    11,    12,    13,    14,    15,    16,    17,
    34173673      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3418       -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
    3419       69,    39,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    3420       79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
    3421       89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3422       -1,    -1,    -1,    -1,    72,    -1,    74,    75,    -1,    -1,
    3423       -1,    -1,   111,    -1,   113,    -1,    -1,    85,    86,    -1,
    3424      119,   120,   121,   122,   123,   124,    -1,    -1,    -1,    -1,
    3425       -1,    -1,    -1,    -1,    -1,   134,    -1,    -1,    -1,    -1,
    3426       -1,    -1,    -1,    -1,    -1,    -1,  1499,     3,     4,     5,
    3427        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3428       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3429       26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
    3430       36,    37,    38,    39,    40,    10,    11,    12,    13,    14,
    3431       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3432       25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,    -1,
    3433       66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
    3434       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
    3435       86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
    3436       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3437       -1,    -1,    -1,    78,    -1,   111,    -1,   113,    -1,    -1,
    3438       -1,    -1,    -1,   119,   120,   121,   122,   123,   124,     4,
    3439        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3440       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3441       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3442       -1,    -1,    37,    38,    39,    40,    10,    11,    12,    13,
    3443       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3444       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3445       -1,    66,    67,    -1,    69,    39,    71,    72,    -1,    74,
    3446       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3447       85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
    3448       -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
    3449       74,    75,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
    3450       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,   124,
    3451        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3452       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3453       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3454       -1,    -1,    -1,    37,    38,    39,    40,    10,    11,    12,
    3455       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3456       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3457       -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
    3458       74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3459       84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,
    3460       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
    3461       -1,    74,    75,    -1,    -1,    -1,    -1,   111,    -1,   113,
    3462       -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
    3463      124,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3464       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3465       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3466       -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
     3674      28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
     3675      -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
    34673676      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34683677      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3469       -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
    3470       -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    3471       83,    84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,
     3678      68,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,    77,
     3679      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
     3680      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
    34723681      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3473       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3474      113,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
    3475      123,   124,     4,     5,     6,     7,     8,     9,    10,    11,
    3476       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3477       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3478       32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
     3682      -1,    -1,    -1,    -1,    -1,   113,   114,   115,    -1,    -1,
     3683      -1,    -1,    -1,   121,   122,   123,   124,   125,   126,    10,
     3684      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3685      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3686      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    39,    40,
     3687      41,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3688      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3689      -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    -1,
     3690      -1,    -1,    -1,    74,    -1,    76,    77,    78,    -1,    -1,
     3691      81,    82,    83,    84,    85,    86,    87,    88,    -1,    90,
     3692      91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3693      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3694      -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,
     3695     121,   122,   123,   124,   125,   126,    10,    11,    12,    13,
     3696      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3697      24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
     3698      34,    -1,    -1,    -1,    -1,    39,    40,    41,    42,    -1,
    34793699      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34803700      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3481       -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,
    3482       72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
    3483       82,    83,    84,    85,    86,    -1,    88,    89,    -1,    -1,
     3701      -1,    -1,    -1,    -1,    68,    69,    -1,    -1,    -1,    -1,
     3702      74,    -1,    76,    77,    78,    -1,    -1,    81,    82,    83,
     3703      84,    85,    86,    87,    88,    -1,    90,    91,    -1,    -1,
    34843704      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3485       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    3486       -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,
    3487      122,   123,   124,     4,     5,     6,     7,     8,     9,    10,
    3488       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3489       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3490       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3705      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,
     3706      -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,
     3707     124,   125,   126,    10,    11,    12,    13,    14,    15,    16,
     3708      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3709      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3710      -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
    34913711      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34923712      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3493       -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
    3494       71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3495       81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3713      -1,    68,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,
     3714      77,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
     3715      87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
     3716      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3717      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
     3718      -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,   126,
     3719       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3720      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3721      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3722      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
     3723      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3724      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     3725      -1,    -1,    32,    33,    34,    -1,    69,    -1,    71,    -1,
     3726      73,    41,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,
     3727      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3728      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
     3729      -1,    -1,    -1,    -1,    74,    -1,    76,    77,    -1,    -1,
     3730      -1,    -1,    -1,    -1,    -1,   118,    -1,    87,    88,    -1,
     3731      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3732      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3733      26,    27,    28,    29,    -1,   115,    32,    33,    34,    -1,
     3734      -1,   121,   122,    -1,    -1,    41,    42,    10,    11,    12,
     3735      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3736      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3737      33,    34,    -1,    69,    -1,    -1,    -1,    -1,    41,    42,
     3738      76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3739      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3740      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
     3741      -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,   115,
     3742      -1,    -1,    -1,   119,    -1,   121,   122,    -1,    -1,    -1,
     3743      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3744      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3745      29,    -1,   115,    32,    33,    34,   119,    -1,   121,   122,
     3746      -1,    -1,    41,    42,    10,    11,    12,    13,    14,    15,
     3747      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3748      26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
     3749      69,    -1,    -1,    -1,    -1,    41,    -1,    76,    77,    -1,
    34963750      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34973751      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3498      111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
    3499      121,   122,   123,   124,     0,    -1,    -1,     3,     4,     5,
    3500        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3752      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
     3753      76,    77,    -1,    -1,    -1,    -1,   115,    -1,    -1,    -1,
     3754     119,    -1,   121,   122,    -1,    -1,    -1,    -1,    10,    11,
     3755      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3756      22,    23,    24,    25,    26,    27,    28,    29,    -1,   115,
     3757      32,    33,    34,    -1,    -1,   121,   122,    -1,    -1,    41,
     3758      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3759      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     3760      -1,    -1,    32,    33,    34,    -1,    -1,    69,    -1,    -1,
     3761      -1,    41,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
     3762      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3763      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
     3764      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
     3765      -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
     3766     122,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    35013767      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3502       26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
    3503       36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3505       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,
    3506       -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
    3507       76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,
    3508       86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3509       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3510       -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
    3511       -1,    -1,    -1,   119,   120,     3,     4,     5,     6,     7,
    3512        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3513       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3514       -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
    3515       -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3516       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3517       -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
    3518       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3519       -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    -1,
     3768      26,    27,    28,    29,    -1,   115,    32,    33,    34,    -1,
     3769      -1,   121,   122,    -1,    -1,    41,    -1,    -1,    -1,    -1,
    35203770      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35213771      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3522       -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,   117,
    3523       -1,   119,   120,     3,     4,     5,     6,     7,     8,     9,
    3524       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3525       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3526       30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
    3527       40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3772      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
     3773      76,    77,    -1,     4,     5,     6,     7,     8,     9,    10,
     3774      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3775      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3776      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,   115,
     3777      41,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
    35283778      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3529       -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,
    3530       -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
    3531       -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,
     3779      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
     3780      71,    -1,    73,    -1,    -1,    76,    77,    39,    40,    -1,
     3781      42,    43,    -1,    45,    -1,    -1,    48,    49,    50,    51,
     3782      52,    53,    54,    55,    -1,    -1,    58,    59,    -1,    -1,
     3783      -1,    63,    64,    -1,    66,    -1,    68,    -1,    -1,    -1,
     3784      -1,    -1,    74,   114,    -1,    -1,    78,    -1,    -1,    81,
     3785      82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
    35323786      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35333787      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3534       -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
    3535      120,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3536       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3537       22,    23,    24,    25,    26,    27,    28,    -1,    30,    31,
    3538       32,    33,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,
     3788      -1,   113,    -1,   115,    -1,    -1,   118,    -1,    -1,   121,
     3789     122,   123,   124,   125,   126,    -1,    -1,    39,    40,   131,
     3790      42,    43,    -1,    45,   136,    -1,    48,    49,    50,    51,
     3791      52,    53,    54,    55,    -1,    -1,    -1,    59,    -1,    -1,
     3792      -1,    63,    64,    -1,    66,    -1,    68,    -1,    -1,    -1,
     3793      -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,
     3794      82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
    35393795      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35403796      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3541       -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3542       -1,    -1,    74,    75,    -1,    -1,    78,     3,     4,     5,
    3543        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3544       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3545       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3546       -1,   113,    -1,    39,    -1,    -1,    -1,   119,   120,    -1,
     3797      -1,   113,    -1,   115,    -1,    -1,   118,    -1,    -1,   121,
     3798     122,   123,   124,   125,   126,    -1,    -1,    -1,    -1,   131,
     3799      -1,    -1,    -1,    -1,   136,     4,     5,     6,     7,     8,
     3800       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3801      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3802      29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
     3803      -1,    -1,    41,    -1,    39,    40,    -1,    42,    43,    -1,
     3804      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
     3805      55,    -1,    -1,    58,    59,    -1,    -1,    -1,    63,    64,
     3806      69,    66,    71,    68,    73,    -1,    -1,    76,    77,    74,
     3807      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
     3808      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
     3809      -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3810      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3811     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
     3812     125,   126,    -1,    -1,    39,    40,   131,    42,    43,    -1,
     3813      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
     3814      55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
     3815      -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    74,
     3816      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
     3817      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
     3818      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3819      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3820     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
     3821     125,   126,    -1,    -1,    39,    40,   131,    42,    43,    -1,
     3822      45,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
     3823      55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
     3824      -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    74,
     3825      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
     3826      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
     3827      -1,    -1,    -1,    39,    40,    -1,    42,    -1,    -1,    -1,
     3828      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3829     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
     3830     125,   126,    68,    -1,    -1,    -1,   131,    -1,    74,    -1,
     3831      76,    77,    78,    -1,    -1,    81,    82,    83,    84,    85,
     3832      86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
     3833      -1,    -1,    39,    40,    -1,    42,    -1,    -1,    -1,    -1,
     3834      -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
     3835      -1,   117,   118,    -1,    -1,   121,   122,   123,   124,   125,
     3836     126,    68,    -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,
     3837      -1,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
     3838      87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
     3839      -1,    39,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,
     3840      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
     3841      -1,   118,    -1,    -1,   121,   122,   123,   124,   125,   126,
     3842      68,    -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,
     3843      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
     3844      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
     3845      39,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
     3846      -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
     3847      -1,    -1,   120,   121,   122,   123,   124,   125,   126,    68,
     3848      -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    78,
     3849      -1,    -1,    81,    82,    83,    84,    85,    86,    87,    88,
     3850      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3851      40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3852      -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,   118,
     3853      -1,    -1,   121,   122,   123,   124,   125,   126,    68,    -1,
     3854      -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    78,    -1,
     3855      -1,    81,    82,    83,    84,    85,    86,    87,    88,    -1,
     3856      90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,
     3857      -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3858      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,
     3859      -1,   121,   122,   123,   124,   125,   126,    68,    -1,    -1,
     3860      -1,    -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,
     3861      81,    82,    83,    84,    85,    86,    87,    88,    -1,    90,
     3862      91,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,
     3863      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3864      -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,
     3865     121,   122,   123,   124,   125,   126,    68,    -1,    -1,    -1,
     3866      -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,
     3867      82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
     3868      -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    42,
     3869      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3870      -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
     3871     122,   123,   124,   125,   126,    68,    -1,    -1,    -1,    -1,
     3872      -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,    82,
     3873      83,    84,    85,    86,    87,    88,    -1,    90,    91,    -1,
     3874      -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    42,    -1,
     3875      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3876     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3877     123,   124,   125,   126,    68,    -1,    -1,    -1,    -1,    -1,
     3878      74,    -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,
     3879      84,    85,    86,    87,    88,    -1,    90,    91,    -1,    -1,
     3880      -1,    -1,    -1,    -1,    39,    40,    -1,    42,    -1,    -1,
     3881      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,
     3882      -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,
     3883     124,   125,   126,    68,    -1,    -1,    -1,    -1,    -1,    74,
     3884      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
     3885      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
     3886      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3887      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3888     115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,   124,
     3889     125,   126,     4,     5,     6,     7,     8,     9,    10,    11,
     3890      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3891      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
     3892      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,
     3893      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3894      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3895      28,    29,    -1,    -1,    32,    33,    34,    69,    -1,    71,
     3896      -1,    73,    74,    41,    76,    77,    78,    -1,    -1,    -1,
     3897      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,
     3898      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3899      -1,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,    77,
     3900      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     3901      88,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3902      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3903      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
     3904      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
    35473905      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35483906      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3549       -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
    3550        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3551       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3552       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3553       -1,    -1,    -1,    -1,    -1,    39,    -1,   113,    -1,    -1,
    3554       -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,
    3555       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3556       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
    3557       74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3558       -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3559       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3560       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,
    3561       -1,    -1,    -1,    -1,    -1,   119,   120,     4,     5,     6,
     3907      -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,
     3908      -1,    73,    -1,    -1,    76,    77,     3,     4,     5,     6,
    35623909       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    35633910      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3564       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3565       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3911      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3912      -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,
    35663913      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35673914      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3568       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     4,
    3569        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3570       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3571       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3572       -1,    -1,    -1,    -1,    39,   112,   113,    -1,    -1,    -1,
    3573       -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
    3574       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3575       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3576       75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3577       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3578       -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,
    3579       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
    3580       -1,    -1,    -1,    -1,   119,   120,     4,     5,     6,     7,
    3581        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3582       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3583       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3584       -1,    39,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3585       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3586       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
    3587       -1,    69,    -1,    71,    39,    40,    74,    75,    -1,    -1,
     3915      -1,    -1,    69,    -1,    71,    -1,    73,    -1,    -1,    76,
     3916      77,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3917      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3918      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3919      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
    35883920      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35893921      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3590       98,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
    3591       75,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,    -1,
    3592       -1,   119,   120,     4,     5,     6,     7,     8,     9,    10,
    3593       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3594       21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
    3595       31,    32,   117,    -1,   119,   120,    -1,    -1,    39,    -1,
     3922      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
     3923      73,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
     3924      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3925      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3926      35,    36,    37,    -1,    -1,    -1,    41,    10,    11,    12,
     3927      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3928      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3929      33,    34,    -1,    -1,    69,    -1,    -1,    -1,    41,    -1,
     3930      -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35963931      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3597       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3598       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
    3599       71,    -1,    -1,    74,    75,     4,     5,     6,     7,     8,
    3600        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3601       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3602       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    3603       39,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
    3604       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3605       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3606       69,    -1,    71,    -1,    -1,    74,    75,     4,     5,     6,
    3607        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3608       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3609       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3610       -1,    -1,    39,    -1,   113,    -1,    -1,    -1,    -1,    -1,
    3611      119,   120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3612       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3613       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    10,
    3614       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3615       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3616       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3617       -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
    3618       -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
    3619       -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
    3620       -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3621       81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
    3622       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3624      111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,
    3625      121,   122,   123,   124,    10,    11,    12,    13,    14,    15,
    3626       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3627       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3628       -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
    3629       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3630       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3631       66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
    3632       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
    3633       86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
    3634       -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3635       75,    -1,    -1,    -1,    -1,   111,   112,   113,    -1,    -1,
    3636       85,    86,    -1,   119,   120,   121,   122,   123,   124,    10,
    3637       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3638       21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
    3639       31,    32,    -1,    -1,   119,   120,    37,    38,    39,    40,
    3640       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3641       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3642       30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
    3643       40,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3644       81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
    3645       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    3646       -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
    3647      111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
    3648      121,   122,   123,   124,    10,    11,    12,    13,    14,    15,
    3649       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3650       26,    27,    -1,   113,    30,    31,    32,   117,    -1,   119,
    3651      120,    37,    38,    39,    40,    10,    11,    12,    13,    14,
    3652       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3653       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3654       66,    67,    -1,    -1,    39,    40,    72,    -1,    74,    75,
    3655       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
    3656       86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
    3657       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
    3658       75,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
    3659       -1,    -1,    -1,   119,   120,   121,   122,   123,   124,    10,
    3660       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3661       21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
    3662       31,    32,   117,    -1,   119,   120,    37,    38,    39,    40,
    3663       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3664       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3665       30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
    3666       -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3667       81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
    3668       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    3669       -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
    3670      111,    -1,   113,    -1,    -1,    85,    86,    -1,   119,   120,
    3671      121,   122,   123,   124,    -1,    -1,    -1,    -1,    -1,    -1,
    3672       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3673       -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
    3674      120,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3675       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3676       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    3677       39,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3678       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3679       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,
    3680       39,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
    3681       -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,
    3682       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3683       -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,
    3684       -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,
    3685      119,   120,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3686       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3687       25,    26,    27,    -1,   113,    30,    31,    32,    -1,    -1,
    3688      119,   120,    -1,    -1,    39,    10,    11,    12,    13,    14,
    3689       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3690       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3691       -1,    -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,
    3692       75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3693       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3694       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
    3695       75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
    3696       -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    10,
    3697       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3698       21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
    3699       31,    32,    -1,    -1,   119,   120,    -1,    -1,    39,    10,
    3700       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3701       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3702       31,    32,    -1,    -1,    -1,    -1,    67,    -1,    39,    -1,
    3703       -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
    3704       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3705       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3706       -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
    3707       -1,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
    3708       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3709       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3710       27,    -1,   113,    30,    31,    32,    -1,    -1,   119,   120,
    3711       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3712       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3713       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3714       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3715       -1,    -1,    37,    38,    -1,    40,    41,    -1,    43,    -1,
    3716       -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3717       -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
    3718       -1,    66,    -1,    -1,    -1,    -1,   113,    72,    -1,    -1,
    3719       -1,    76,   119,   120,    79,    80,    81,    82,    83,    84,
    3720       85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
    3721       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3722       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
    3723       -1,   116,    -1,    -1,   119,   120,   121,   122,   123,   124,
    3724       -1,    -1,    37,    38,   129,    40,    41,    -1,    43,   134,
    3725       -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3726       -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
    3727       -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
    3728       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3729       85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
    3730       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3731       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
    3732       -1,   116,    -1,    -1,   119,   120,   121,   122,   123,   124,
    3733       -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,   134,
    3734        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3735       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3736       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3737       -1,    -1,    -1,    -1,    -1,    39,    -1,    37,    38,    -1,
    3738       40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
    3739       50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    -1,
    3740       -1,    61,    62,    67,    64,    69,    66,    71,    -1,    -1,
    3741       74,    75,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    3742       80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
    3743       -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,
    3744       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3745       -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
    3746      120,   121,   122,   123,   124,    -1,    -1,    37,    38,   129,
    3747       40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
    3748       50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
    3749       -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
    3750       -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    3751       80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
    3752       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3753       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3754       -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
    3755      120,   121,   122,   123,   124,    -1,    -1,    37,    38,   129,
    3756       40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
    3757       50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
    3758       -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
    3759       -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    3760       80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
    3761       -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,
    3762       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3763       -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
    3764      120,   121,   122,   123,   124,    66,    -1,    -1,    -1,   129,
    3765       -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3766       81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
    3767       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,
    3768       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3769      111,    -1,   113,    -1,   115,   116,    -1,    -1,   119,   120,
    3770      121,   122,   123,   124,    66,    -1,    -1,    -1,    -1,    -1,
    3771       72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
    3772       82,    83,    84,    85,    86,    -1,    88,    89,    -1,    -1,
    3773       -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
    3774       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    3775       -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,   121,
    3776      122,   123,   124,    66,    -1,    -1,    -1,    -1,    -1,    72,
    3777       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3778       83,    84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,
    3779       -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
    3780       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3781      113,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
    3782      123,   124,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
    3783       -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3784       84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,
    3785       -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
    3786       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,
    3787       -1,    -1,   116,    -1,    -1,   119,   120,   121,   122,   123,
    3788      124,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
    3789       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3790       85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
    3791       -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
    3792       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
    3793       -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
    3794       66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
    3795       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
    3796       86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
    3797       37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3798       -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
    3799       -1,    -1,    -1,   119,   120,   121,   122,   123,   124,    66,
    3800       -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
    3801       -1,    -1,    79,    80,    81,    82,    83,    84,    85,    86,
    3802       -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    3803       38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3804       -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,
    3805       -1,    -1,   119,   120,   121,   122,   123,   124,    66,    -1,
    3806       -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    3807       -1,    79,    80,    81,    82,    83,    84,    85,    86,    -1,
    3808       88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
    3809       -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3810       -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,
    3811       -1,   119,   120,   121,   122,   123,   124,    66,    -1,    -1,
    3812       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3813       79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
    3814       89,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
    3815       40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3816       -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,
    3817      119,   120,   121,   122,   123,   124,    66,    -1,    -1,    -1,
    3818       -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    3819       80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
    3820       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3821       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3822       -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
    3823      120,   121,   122,   123,   124,     4,     5,     6,     7,     8,
    3824        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3825       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3826       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3827       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3828       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3829       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3830       69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    3831       -1,    -1,    -1,    -1,    -1,    -1,    85,    86,     3,     4,
    3832        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3833       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3834       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3835       -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    3836       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3837       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3838       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3839       75,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3840       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3841       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3842       32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    3843       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3844       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3845       -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3846       -1,    -1,    74,    75,     4,     5,     6,     7,     8,     9,
    3847       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3848       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3849       30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    3850       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3851       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3852       -1,    30,    31,    32,    33,    34,    35,    67,    -1,    69,
    3853       39,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
    3854       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3855       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3856       -1,    -1,    -1,    -1,    -1,    74,    75
     3932      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
     3933      -1,    -1,    -1,    76,    77
    38573934};
    38583935
     
    38633940       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    38643941      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3865       22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    3866       36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    3867       76,    85,    86,   111,   113,   119,   120,   139,   142,   154,
    3868      203,   217,   218,   219,   220,   221,   222,   223,   224,   225,
    3869      226,   227,   228,   229,   230,   231,   232,   233,   234,   236,
    3870      237,   238,   239,   240,   241,   242,   244,   245,   246,   247,
    3871      248,   249,   251,   259,   260,   287,   288,   289,   297,   300,
    3872      306,   307,   309,   311,   312,   318,   323,   327,   328,   329,
    3873      330,   331,   332,   333,   334,   354,   371,   372,   373,   374,
    3874       72,   141,   142,   154,   220,   222,   230,   232,   241,   245,
    3875      247,   288,    81,   111,   316,   317,   318,   316,   316,    72,
    3876       74,    75,    76,   140,   141,   277,   278,   298,   299,    74,
    3877       75,   278,   111,   309,    11,   204,   111,   154,   323,   328,
    3878      329,   330,   332,   333,   334,   114,   136,   223,   230,   232,
    3879      327,   331,   370,   371,   374,   375,   137,   109,   133,   281,
    3880      116,   137,   178,    74,    75,   139,   276,   137,   137,   137,
    3881      118,   137,    74,    75,   111,   154,   313,   322,   323,   324,
    3882      325,   326,   327,   331,   335,   336,   337,   338,   339,   345,
    3883        3,    28,    78,   243,     3,     5,    74,   113,   154,   222,
    3884      233,   237,   239,   248,   289,   327,   331,   374,   220,   222,
    3885      232,   241,   245,   247,   288,   327,   331,    33,   238,   238,
    3886      233,   239,   137,   238,   233,   238,   233,    75,   111,   116,
    3887      278,   289,   116,   278,   238,   233,   118,   137,   137,     0,
    3888      136,   111,   178,   316,   316,   136,   113,   230,   232,   372,
    3889      276,   276,   133,   232,   111,   154,   313,   323,   327,   113,
    3890      154,   374,   310,   235,   318,   111,   294,   111,   111,    51,
    3891      111,    37,    38,    40,    66,    72,    76,    79,    80,    81,
    3892       82,    83,    84,    88,    89,   111,   113,   121,   122,   123,
    3893      124,   138,   142,   143,   144,   145,   146,   153,   154,   155,
     3942      22,    23,    24,    25,    26,    27,    28,    29,    32,    33,
     3943      34,    35,    38,    41,    42,    66,    69,    71,    73,    74,
     3944      76,    77,    78,    87,    88,   113,   115,   121,   122,   141,
     3945     144,   156,   205,   219,   220,   221,   222,   223,   224,   225,
     3946     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
     3947     236,   238,   239,   240,   241,   242,   243,   244,   246,   247,
     3948     248,   249,   250,   251,   253,   261,   262,   289,   290,   291,
     3949     299,   302,   308,   309,   311,   313,   314,   320,   325,   329,
     3950     330,   331,   332,   333,   334,   335,   336,   356,   373,   374,
     3951     375,   376,    74,   143,   144,   156,   222,   224,   232,   234,
     3952     243,   247,   249,   290,    83,   113,   318,   319,   320,   318,
     3953     318,    74,    76,    77,    78,   142,   143,   279,   280,   300,
     3954     301,    76,    77,   280,   113,   311,    11,   206,   113,   156,
     3955     325,   330,   331,   332,   334,   335,   336,   116,   138,   225,
     3956     232,   234,   329,   333,   372,   373,   376,   377,   139,   111,
     3957     135,   283,   118,   139,   180,    76,    77,   141,   278,   139,
     3958     139,   139,   120,   139,    76,    77,   113,   156,   315,   324,
     3959     325,   326,   327,   328,   329,   333,   337,   338,   339,   340,
     3960     341,   347,     3,    30,    80,   245,     3,     5,    76,   115,
     3961     156,   224,   235,   239,   241,   250,   291,   329,   333,   376,
     3962     222,   224,   234,   243,   247,   249,   290,   329,   333,    35,
     3963     240,   240,   235,   241,   139,   240,   235,   240,   235,    77,
     3964     113,   118,   280,   291,   118,   280,   240,   235,   120,   139,
     3965     139,     0,   138,   113,   180,   318,   318,   138,   115,   232,
     3966     234,   374,   278,   278,   135,   234,   113,   156,   315,   325,
     3967     329,   115,   156,   376,   312,   237,   320,   113,   296,   113,
     3968     113,    53,   113,    39,    40,    42,    68,    74,    78,    81,
     3969      82,    83,    84,    85,    86,    90,    91,   113,   115,   123,
     3970     124,   125,   126,   140,   144,   145,   146,   147,   148,   155,
    38943971     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
    3895      166,   167,   169,   172,   230,   280,   296,   370,   375,   232,
    3896      112,   112,   112,   112,   112,   112,   112,   113,   230,   354,
    3897      372,   113,   119,   154,   169,   222,   223,   229,   232,   236,
    3898      237,   241,   244,   245,   247,   266,   267,   271,   272,   273,
    3899      274,   288,   354,   366,   367,   368,   369,   374,   375,   111,
    3900      327,   331,   374,   111,   118,   134,   113,   116,   154,   169,
    3901      282,   282,   117,   136,   118,   134,   111,   118,   134,   118,
    3902      134,   118,   134,   316,   134,   323,   324,   325,   326,   336,
    3903      337,   338,   339,   232,   322,   335,    64,   315,   113,   316,
    3904      353,   354,   316,   316,   178,   136,   111,   316,   353,   316,
    3905      316,   232,   313,   111,   111,   231,   232,   230,   232,   136,
    3906      230,   370,   375,   178,   136,   276,   281,   222,   237,   327,
    3907      331,   178,   136,   298,   232,   241,   134,   232,   232,   296,
    3908      252,   250,   262,   278,   261,   232,   298,   134,   134,   309,
    3909      136,   141,   275,     3,   137,   212,   213,   227,   229,   232,
    3910      136,   315,   111,   315,   169,   323,   232,   111,   136,   276,
    3911      116,    33,    34,    35,   230,   290,   291,   293,   136,   130,
    3912      133,   295,   136,   233,   238,   239,   276,   319,   320,   321,
    3913      111,   143,   111,   153,   111,   153,   156,   111,   153,   111,
    3914      111,   153,   153,   113,   169,   174,   178,   230,   279,   370,
    3915      374,   136,    81,    83,    87,    88,    89,   111,   113,   115,
    3916      116,    99,   100,   101,   102,   103,   104,   105,   106,   107,
    3917      108,   109,   133,   171,   156,   156,   119,   125,   126,   121,
    3918      122,    90,    91,    92,    93,   127,   128,    94,    95,   120,
    3919      129,   130,    96,    97,   131,   111,   154,   349,   350,   351,
    3920      352,   353,   112,   118,   111,   353,   354,   111,   353,   354,
    3921      136,   230,   372,   114,   136,   137,   230,   232,   365,   366,
    3922      374,   375,   137,   111,   113,   154,   323,   340,   341,   342,
    3923      343,   344,   345,   346,   347,   348,   354,   355,   356,   357,
    3924      358,   359,   360,   154,   374,   232,   137,   137,   154,   230,
    3925      232,   367,   276,   230,   354,   367,   276,   136,   136,   136,
    3926      136,    72,   113,   115,   142,   278,   282,   283,   284,   285,
    3927      286,   136,   136,   136,   136,   136,   136,   313,   112,   112,
    3928      112,   112,   112,   112,   112,   322,   335,   111,   281,   114,
    3929      212,   136,   313,   174,   280,   174,   280,   313,   113,   212,
    3930      315,   178,   136,   212,   112,    40,   113,   117,   230,   253,
    3931      254,   255,   370,   116,   118,   376,   133,   263,   116,   232,
    3932      268,   269,   270,   273,   274,   112,   118,   178,   136,   119,
    3933      169,   136,   229,   232,   267,   366,   374,   307,   308,   111,
    3934      154,   340,   112,   118,   133,   377,   278,   290,   111,   116,
    3935      278,   280,   290,   112,   118,   111,   143,   112,   132,   279,
    3936      279,   279,   148,   169,   280,   279,   136,   112,   118,   112,
    3937      111,   154,   353,   361,   362,   363,   364,   112,   118,   169,
    3938      113,   141,   147,   148,   136,   113,   141,   147,   169,   156,
    3939      156,   156,   157,   157,   158,   158,   159,   159,   159,   159,
    3940      160,   160,   161,   162,   163,   164,   165,   132,   174,   136,
    3941      350,   351,   352,   232,   349,   316,   316,   169,   280,   136,
    3942      275,   230,   354,   367,   232,   236,   114,   374,   114,   111,
    3943      136,   323,   341,   342,   343,   346,   356,   357,   358,   114,
    3944      136,   232,   340,   344,   355,   111,   316,   359,   377,   316,
    3945      316,   377,   111,   316,   359,   316,   316,   316,   316,   354,
    3946      230,   365,   375,   276,   114,   118,   114,   118,   377,   230,
    3947      367,   377,   264,   265,   266,   267,   264,   276,   169,   136,
    3948      113,   278,   132,   118,   376,   282,   113,   132,   286,    29,
    3949      214,   215,   276,   264,   141,   313,   141,   315,   111,   353,
    3950      354,   111,   353,   354,   144,   354,   178,   268,   112,   112,
    3951      112,   112,   136,   178,   212,   178,   116,   254,   255,   136,
    3952      111,   132,   154,   256,   258,   322,   323,   335,   361,   118,
    3953      134,   118,   134,   278,   252,   278,   117,   167,   168,   262,
    3954      137,   137,   141,   227,   137,   137,   264,   111,   154,   374,
    3955      137,   117,   232,   291,   169,   292,   137,   136,   136,   111,
    3956      137,   112,   320,   174,   175,   132,   134,   113,   143,   205,
    3957      206,   207,   112,   118,   112,   112,   112,   112,   169,   362,
    3958      363,   364,   232,   361,   316,   316,   116,   156,   169,   170,
    3959      173,   118,   136,   112,   118,   169,   136,   117,   167,   132,
    3960      268,   112,   112,   112,   349,   268,   112,   230,   367,   113,
    3961      119,   154,   169,   169,   232,   346,   268,   112,   112,   112,
    3962      112,   112,   112,   112,     7,   232,   340,   344,   355,   136,
    3963      136,   377,   136,   136,   137,   137,   137,   137,   281,   167,
    3964      168,   169,   314,   136,   282,   284,   117,   136,   216,   278,
    3965       40,    41,    43,    46,    47,    48,    49,    50,    51,    52,
    3966       53,    57,    61,    62,    72,   129,   175,   176,   177,   178,
    3967      179,   180,   182,   183,   195,   197,   198,   203,   217,   312,
    3968       29,   137,   133,   281,   136,   136,   112,   137,   178,   252,
    3969      134,   134,   323,   168,   232,   257,   258,   257,   278,   316,
    3970      117,   263,   376,   112,   118,   114,   114,   137,   232,   118,
    3971      377,   294,   112,   290,   220,   222,   230,   302,   303,   304,
    3972      305,   296,   112,   112,   132,   168,   111,   112,   132,   118,
    3973      141,   112,   112,   112,   361,   283,   118,   137,   173,    79,
    3974       82,    84,   141,   149,   150,   151,   148,   137,   149,   167,
    3975      137,   111,   353,   354,   137,   136,   137,   137,   137,   169,
    3976      112,   137,   111,   353,   354,   111,   359,   111,   359,   354,
    3977      231,     7,   119,   137,   169,   268,   268,   267,   271,   271,
    3978      272,   112,   118,   118,   112,    98,   124,   137,   137,   149,
    3979      282,   169,   118,   134,   217,   221,   232,   236,   111,   111,
    3980      176,   111,   111,    72,   134,    72,   134,    72,   119,   175,
    3981      111,   178,   170,   170,   132,   146,   134,   137,   136,   137,
    3982      216,   112,   169,   268,   268,   316,   112,   117,   256,   117,
    3983      136,   112,   136,   137,   313,   117,   136,   137,   137,   112,
    3984      116,   205,   114,   168,   134,   205,   207,   112,   111,   353,
    3985      354,   376,   170,   114,   137,   152,   113,   150,   152,   152,
    3986      118,   137,    87,   115,   114,   137,   112,   136,   112,   114,
    3987      114,   114,   137,   112,   136,   136,   136,   169,   169,   137,
    3988      114,   137,   137,   137,   137,   136,   136,   168,   168,   114,
    3989      114,   137,   278,   232,   174,   174,    47,   174,   136,   134,
    3990      134,   134,   174,   134,   174,    58,    59,    60,   199,   200,
    3991      201,   134,    63,   134,   316,   116,   180,   117,   134,   137,
    3992      137,    98,   273,   274,   112,   303,   118,   134,   118,   134,
    3993      117,   301,   132,   143,   112,   112,   132,   136,   117,   114,
    3994       83,   136,   150,   114,   113,   150,   113,   150,   114,   268,
    3995      114,   268,   268,   268,   137,   137,   114,   114,   112,   112,
    3996      114,   118,    98,   267,    98,   137,   114,   112,   112,   111,
    3997      112,   175,   196,   217,   134,   112,   111,   111,   178,   201,
    3998       58,    59,   169,   176,   147,   112,   112,   116,   136,   136,
    3999      302,   143,   208,   111,   134,   208,   268,   149,   136,   136,
    4000      137,   137,   137,   137,   114,   114,   136,   137,   114,   176,
    4001       44,    45,   116,   186,   187,   188,   174,   176,   137,   112,
    4002      175,   116,   188,    98,   136,    98,   136,   111,   111,   134,
    4003      117,   136,   276,   313,   117,   118,   132,   168,   112,   137,
    4004      137,   149,   149,   112,   112,   112,   112,   271,    42,   168,
    4005      184,   185,   314,   132,   136,   176,   186,   112,   134,   176,
    4006      134,   136,   112,   136,   112,   136,    98,   136,    98,   136,
    4007      134,   302,   143,   141,   209,   112,   134,   112,   114,   137,
    4008      137,   176,    98,   118,   132,   137,   210,   211,   217,   134,
    4009      175,   175,   210,   178,   202,   230,   370,   178,   202,   112,
    4010      136,   112,   136,   117,   112,   118,   114,   114,   168,   184,
    4011      187,   189,   190,   136,   134,   187,   191,   192,   137,   111,
    4012      154,   313,   361,   141,   137,   178,   202,   178,   202,   111,
    4013      134,   141,   176,   181,   117,   187,   217,   175,    56,   181,
    4014      194,   117,   187,   112,   232,   112,   137,   137,   296,   176,
    4015      181,   134,   193,   194,   181,   194,   178,   178,   112,   112,
    4016      112,   193,   137,   137,   178,   178,   137,   137
     3972     166,   167,   168,   169,   171,   174,   232,   282,   298,   372,
     3973     377,   234,   114,   114,   114,   114,   114,   114,   114,   115,
     3974     232,   356,   374,   115,   121,   156,   171,   224,   225,   231,
     3975     234,   238,   239,   243,   246,   247,   249,   268,   269,   273,
     3976     274,   275,   276,   290,   356,   368,   369,   370,   371,   376,
     3977     377,   113,   329,   333,   376,   113,   120,   136,   115,   118,
     3978     156,   171,   284,   284,   119,   138,   120,   136,   113,   120,
     3979     136,   120,   136,   120,   136,   318,   136,   325,   326,   327,
     3980     328,   338,   339,   340,   341,   234,   324,   337,    66,   317,
     3981     115,   318,   355,   356,   318,   318,   180,   138,   113,   318,
     3982     355,   318,   318,   234,   315,   113,   113,   233,   234,   232,
     3983     234,   138,   232,   372,   377,   180,   138,   278,   283,   224,
     3984     239,   329,   333,   180,   138,   300,   234,   243,   136,   234,
     3985     234,   298,   254,   252,   264,   280,   263,   234,   300,   136,
     3986     136,   311,   138,   143,   277,     3,   139,   214,   215,   229,
     3987     231,   234,   138,   317,   113,   317,   171,   325,   234,   113,
     3988     138,   278,   118,    35,    36,    37,   232,   292,   293,   295,
     3989     138,   132,   135,   297,   138,   235,   240,   241,   278,   321,
     3990     322,   323,   113,   145,   113,   155,   113,   155,   158,   113,
     3991     155,   113,   113,   155,   155,   115,   171,   176,   180,   232,
     3992     281,   372,   376,   138,    83,    85,    89,    90,    91,   113,
     3993     115,   117,   118,   101,   102,   103,   104,   105,   106,   107,
     3994     108,   109,   110,   111,   135,   173,   158,   158,   121,   127,
     3995     128,   123,   124,    92,    93,    94,    95,   129,   130,    96,
     3996      97,   122,   131,   132,    98,    99,   133,   113,   156,   351,
     3997     352,   353,   354,   355,   114,   120,   113,   355,   356,   113,
     3998     355,   356,   138,   232,   374,   116,   138,   139,   232,   234,
     3999     367,   368,   376,   377,   139,   113,   115,   156,   325,   342,
     4000     343,   344,   345,   346,   347,   348,   349,   350,   356,   357,
     4001     358,   359,   360,   361,   362,   156,   376,   234,   139,   139,
     4002     156,   232,   234,   369,   278,   232,   356,   369,   278,   138,
     4003     138,   138,   138,    74,   115,   117,   144,   280,   284,   285,
     4004     286,   287,   288,   138,   138,   138,   138,   138,   138,   315,
     4005     114,   114,   114,   114,   114,   114,   114,   324,   337,   113,
     4006     283,   116,   214,   138,   315,   176,   282,   176,   282,   315,
     4007     115,   214,   317,   180,   138,   214,   114,    42,   115,   119,
     4008     232,   255,   256,   257,   372,   118,   120,   378,   135,   265,
     4009     118,   234,   270,   271,   272,   275,   276,   114,   120,   180,
     4010     138,   121,   171,   138,   231,   234,   269,   368,   376,   309,
     4011     310,   113,   156,   342,   114,   120,   135,   379,   280,   292,
     4012     113,   118,   280,   282,   292,   114,   120,   113,   145,   114,
     4013     134,   281,   281,   281,   150,   171,   282,   281,   138,   114,
     4014     120,   114,   113,   156,   355,   363,   364,   365,   366,   114,
     4015     120,   171,   115,   143,   149,   150,   138,   115,   143,   149,
     4016     171,   158,   158,   158,   159,   159,   160,   160,   161,   161,
     4017     161,   161,   162,   162,   163,   164,   165,   166,   167,   134,
     4018     176,   138,   352,   353,   354,   234,   351,   318,   318,   171,
     4019     282,   138,   277,   232,   356,   369,   234,   238,   116,   376,
     4020     116,   113,   138,   325,   343,   344,   345,   348,   358,   359,
     4021     360,   116,   138,   234,   342,   346,   357,   113,   318,   361,
     4022     379,   318,   318,   379,   113,   318,   361,   318,   318,   318,
     4023     318,   356,   232,   367,   377,   278,   116,   120,   116,   120,
     4024     379,   232,   369,   379,   266,   267,   268,   269,   266,   278,
     4025     171,   138,   115,   280,   134,   120,   378,   284,   115,   134,
     4026     288,    31,   216,   217,   278,   266,   143,   315,   143,   317,
     4027     113,   355,   356,   113,   355,   356,   145,   356,   180,   270,
     4028     114,   114,   114,   114,   138,   180,   214,   180,   118,   256,
     4029     257,   138,   113,   134,   156,   258,   260,   324,   325,   337,
     4030     363,   120,   136,   120,   136,   280,   254,   280,   119,   169,
     4031     170,   264,   139,   139,   143,   229,   139,   139,   266,   113,
     4032     156,   376,   139,   119,   234,   293,   171,   294,   139,   138,
     4033     138,   113,   139,   114,   322,   176,   177,   134,   136,   115,
     4034     145,   207,   208,   209,   114,   120,   114,   114,   114,   114,
     4035     171,   364,   365,   366,   234,   363,   318,   318,   118,   158,
     4036     171,   172,   175,   120,   138,   114,   120,   171,   138,   119,
     4037     169,   134,   270,   114,   114,   114,   351,   270,   114,   232,
     4038     369,   115,   121,   156,   171,   171,   234,   348,   270,   114,
     4039     114,   114,   114,   114,   114,   114,     7,   234,   342,   346,
     4040     357,   138,   138,   379,   138,   138,   139,   139,   139,   139,
     4041     283,   169,   170,   171,   316,   138,   284,   286,   119,   138,
     4042     218,   280,    42,    43,    45,    48,    49,    50,    51,    52,
     4043      53,    54,    55,    59,    63,    64,    74,   131,   177,   178,
     4044     179,   180,   181,   182,   184,   185,   197,   199,   200,   205,
     4045     219,   314,    31,   139,   135,   283,   138,   138,   114,   139,
     4046     180,   254,   136,   136,   325,   170,   234,   259,   260,   259,
     4047     280,   318,   119,   265,   378,   114,   120,   116,   116,   139,
     4048     234,   120,   379,   296,   114,   292,   222,   224,   232,   304,
     4049     305,   306,   307,   298,   114,   114,   134,   170,   113,   114,
     4050     134,   120,   143,   114,   114,   114,   363,   285,   120,   139,
     4051     175,    81,    84,    86,   143,   151,   152,   153,   150,   139,
     4052     151,   169,   139,   113,   355,   356,   139,   138,   139,   139,
     4053     139,   171,   114,   139,   113,   355,   356,   113,   361,   113,
     4054     361,   356,   233,     7,   121,   139,   171,   270,   270,   269,
     4055     273,   273,   274,   114,   120,   120,   114,   100,   126,   139,
     4056     139,   151,   284,   171,   120,   136,   219,   223,   234,   238,
     4057     113,   113,   178,   113,   113,    74,   136,    74,   136,    74,
     4058     121,   177,   113,   180,   172,   172,   134,   148,   136,   139,
     4059     138,   139,   218,   114,   171,   270,   270,   318,   114,   119,
     4060     258,   119,   138,   114,   138,   139,   315,   119,   138,   139,
     4061     139,   114,   118,   207,   116,   170,   136,   207,   209,   114,
     4062     113,   355,   356,   378,   172,   116,   139,   154,   115,   152,
     4063     154,   154,   120,   139,    89,   117,   116,   139,   114,   138,
     4064     114,   116,   116,   116,   139,   114,   138,   138,   138,   171,
     4065     171,   139,   116,   139,   139,   139,   139,   138,   138,   170,
     4066     170,   116,   116,   139,   280,   234,   176,   176,    49,   176,
     4067     138,   136,   136,   136,   176,   136,   176,    60,    61,    62,
     4068     201,   202,   203,   136,    65,   136,   318,   118,   182,   119,
     4069     136,   139,   139,   100,   275,   276,   114,   305,   120,   136,
     4070     120,   136,   119,   303,   134,   145,   114,   114,   134,   138,
     4071     119,   116,    85,   138,   152,   116,   115,   152,   115,   152,
     4072     116,   270,   116,   270,   270,   270,   139,   139,   116,   116,
     4073     114,   114,   116,   120,   100,   269,   100,   139,   116,   114,
     4074     114,   113,   114,   177,   198,   219,   136,   114,   113,   113,
     4075     180,   203,    60,    61,   171,   178,   149,   114,   114,   118,
     4076     138,   138,   304,   145,   210,   113,   136,   210,   270,   151,
     4077     138,   138,   139,   139,   139,   139,   116,   116,   138,   139,
     4078     116,   178,    46,    47,   118,   188,   189,   190,   176,   178,
     4079     139,   114,   177,   118,   190,   100,   138,   100,   138,   113,
     4080     113,   136,   119,   138,   278,   315,   119,   120,   134,   170,
     4081     114,   139,   139,   151,   151,   114,   114,   114,   114,   273,
     4082      44,   170,   186,   187,   316,   134,   138,   178,   188,   114,
     4083     136,   178,   136,   138,   114,   138,   114,   138,   100,   138,
     4084     100,   138,   136,   304,   145,   143,   211,   114,   136,   114,
     4085     116,   139,   139,   178,   100,   120,   134,   139,   212,   213,
     4086     219,   136,   177,   177,   212,   180,   204,   232,   372,   180,
     4087     204,   114,   138,   114,   138,   119,   114,   120,   116,   116,
     4088     170,   186,   189,   191,   192,   138,   136,   189,   193,   194,
     4089     139,   113,   156,   315,   363,   143,   139,   180,   204,   180,
     4090     204,   113,   136,   143,   178,   183,   119,   189,   219,   177,
     4091      58,   183,   196,   119,   189,   114,   234,   114,   139,   139,
     4092     298,   178,   183,   136,   195,   196,   183,   196,   180,   180,
     4093     114,   114,   114,   195,   139,   139,   180,   180,   139,   139
    40174094};
    40184095
     
    48514928
    48524929/* Line 1806 of yacc.c  */
    4853 #line 305 "parser.yy"
     4930#line 306 "parser.yy"
    48544931    { typedefTable.enterScope(); }
    48554932    break;
     
    48584935
    48594936/* Line 1806 of yacc.c  */
    4860 #line 309 "parser.yy"
     4937#line 310 "parser.yy"
    48614938    { typedefTable.leaveScope(); }
    48624939    break;
     
    48654942
    48664943/* Line 1806 of yacc.c  */
    4867 #line 316 "parser.yy"
     4944#line 317 "parser.yy"
    48684945    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    48694946    break;
    48704947
    48714948  case 5:
    4872 
    4873 /* Line 1806 of yacc.c  */
    4874 #line 317 "parser.yy"
    4875     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    4876     break;
    4877 
    4878   case 6:
    48794949
    48804950/* Line 1806 of yacc.c  */
     
    48834953    break;
    48844954
    4885   case 7:
     4955  case 6:
    48864956
    48874957/* Line 1806 of yacc.c  */
     
    48904960    break;
    48914961
     4962  case 7:
     4963
     4964/* Line 1806 of yacc.c  */
     4965#line 320 "parser.yy"
     4966    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     4967    break;
     4968
    48924969  case 8:
    48934970
    48944971/* Line 1806 of yacc.c  */
    4895 #line 320 "parser.yy"
     4972#line 321 "parser.yy"
    48964973    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    48974974    break;
     
    49004977
    49014978/* Line 1806 of yacc.c  */
    4902 #line 345 "parser.yy"
     4979#line 346 "parser.yy"
    49034980    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    49044981    break;
     
    49074984
    49084985/* Line 1806 of yacc.c  */
    4909 #line 349 "parser.yy"
     4986#line 350 "parser.yy"
    49104987    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    49114988    break;
     
    49144991
    49154992/* Line 1806 of yacc.c  */
    4916 #line 351 "parser.yy"
     4993#line 352 "parser.yy"
    49174994    {
    49184995                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     
    49255002
    49265003/* Line 1806 of yacc.c  */
    4927 #line 362 "parser.yy"
     5004#line 363 "parser.yy"
    49285005    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    49295006    break;
     
    49325009
    49335010/* Line 1806 of yacc.c  */
    4934 #line 364 "parser.yy"
    4935     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     5011#line 365 "parser.yy"
     5012    { (yyval.en) = new ExpressionNode( build_constantZeroOne( *(yyvsp[(1) - (1)].tok) ) ); }
    49365013    break;
    49375014
     
    49395016
    49405017/* Line 1806 of yacc.c  */
    4941 #line 367 "parser.yy"
     5018#line 368 "parser.yy"
    49425019    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    49435020    break;
     
    49465023
    49475024/* Line 1806 of yacc.c  */
    4948 #line 369 "parser.yy"
     5025#line 370 "parser.yy"
    49495026    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    49505027    break;
     
    49535030
    49545031/* Line 1806 of yacc.c  */
    4955 #line 379 "parser.yy"
     5032#line 380 "parser.yy"
    49565033    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    49575034    break;
     
    49605037
    49615038/* Line 1806 of yacc.c  */
    4962 #line 381 "parser.yy"
     5039#line 382 "parser.yy"
    49635040    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    49645041    break;
     
    49675044
    49685045/* Line 1806 of yacc.c  */
    4969 #line 383 "parser.yy"
     5046#line 384 "parser.yy"
    49705047    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    49715048    break;
     
    49745051
    49755052/* Line 1806 of yacc.c  */
    4976 #line 385 "parser.yy"
     5053#line 386 "parser.yy"
    49775054    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    49785055    break;
     
    49815058
    49825059/* Line 1806 of yacc.c  */
    4983 #line 387 "parser.yy"
     5060#line 388 "parser.yy"
    49845061    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ) ) ); }
    49855062    break;
     
    49885065
    49895066/* Line 1806 of yacc.c  */
    4990 #line 389 "parser.yy"
     5067#line 390 "parser.yy"
    49915068    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    49925069    break;
     
    49955072
    49965073/* Line 1806 of yacc.c  */
    4997 #line 391 "parser.yy"
     5074#line 392 "parser.yy"
    49985075    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    49995076    break;
     
    50025079
    50035080/* Line 1806 of yacc.c  */
    5004 #line 393 "parser.yy"
     5081#line 394 "parser.yy"
    50055082    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    50065083    break;
     
    50095086
    50105087/* Line 1806 of yacc.c  */
    5011 #line 395 "parser.yy"
     5088#line 396 "parser.yy"
    50125089    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    50135090    break;
     
    50165093
    50175094/* Line 1806 of yacc.c  */
    5018 #line 397 "parser.yy"
     5095#line 398 "parser.yy"
    50195096    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    50205097    break;
     
    50235100
    50245101/* Line 1806 of yacc.c  */
    5025 #line 399 "parser.yy"
     5102#line 400 "parser.yy"
    50265103    {
    50275104                        Token fn;
     
    50345111
    50355112/* Line 1806 of yacc.c  */
    5036 #line 409 "parser.yy"
     5113#line 410 "parser.yy"
    50375114    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    50385115    break;
     
    50415118
    50425119/* Line 1806 of yacc.c  */
    5043 #line 414 "parser.yy"
    5044     { (yyval.en) = 0; }
     5120#line 415 "parser.yy"
     5121    { (yyval.en) = nullptr; }
    50455122    break;
    50465123
     
    50485125
    50495126/* Line 1806 of yacc.c  */
    5050 #line 420 "parser.yy"
     5127#line 421 "parser.yy"
    50515128    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    50525129    break;
     
    50555132
    50565133/* Line 1806 of yacc.c  */
    5057 #line 426 "parser.yy"
     5134#line 427 "parser.yy"
    50585135    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
    50595136    break;
     
    50625139
    50635140/* Line 1806 of yacc.c  */
    5064 #line 428 "parser.yy"
     5141#line 429 "parser.yy"
    50655142    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
    50665143    break;
     
    50695146
    50705147/* Line 1806 of yacc.c  */
    5071 #line 430 "parser.yy"
     5148#line 431 "parser.yy"
    50725149    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    50735150    break;
     
    50765153
    50775154/* Line 1806 of yacc.c  */
    5078 #line 432 "parser.yy"
     5155#line 433 "parser.yy"
    50795156    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    50805157    break;
     
    50835160
    50845161/* Line 1806 of yacc.c  */
    5085 #line 434 "parser.yy"
     5162#line 435 "parser.yy"
    50865163    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    50875164    break;
     
    50905167
    50915168/* Line 1806 of yacc.c  */
    5092 #line 436 "parser.yy"
     5169#line 437 "parser.yy"
    50935170    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    50945171    break;
     
    50975174
    50985175/* Line 1806 of yacc.c  */
    5099 #line 441 "parser.yy"
     5176#line 442 "parser.yy"
    51005177    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    51015178    break;
     
    51045181
    51055182/* Line 1806 of yacc.c  */
    5106 #line 443 "parser.yy"
     5183#line 444 "parser.yy"
    51075184    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    51085185    break;
     
    51115188
    51125189/* Line 1806 of yacc.c  */
    5113 #line 445 "parser.yy"
    5114     { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     5190#line 446 "parser.yy"
     5191    {
     5192                        if( (*(yyvsp[(1) - (2)].tok)) == "0" || (*(yyvsp[(1) - (2)].tok)) == "1" ) {
     5193                                (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) );
     5194                        } else {
     5195                                (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) );
     5196                        }
     5197                }
    51155198    break;
    51165199
     
    51185201
    51195202/* Line 1806 of yacc.c  */
    5120 #line 450 "parser.yy"
     5203#line 457 "parser.yy"
    51215204    { (yyval.en) = nullptr; }
    51225205    break;
     
    51255208
    51265209/* Line 1806 of yacc.c  */
    5127 #line 452 "parser.yy"
     5210#line 459 "parser.yy"
    51285211    {
    51295212                        Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) );
     
    51355218
    51365219/* Line 1806 of yacc.c  */
    5137 #line 463 "parser.yy"
     5220#line 470 "parser.yy"
    51385221    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51395222    break;
     
    51425225
    51435226/* Line 1806 of yacc.c  */
    5144 #line 465 "parser.yy"
     5227#line 472 "parser.yy"
    51455228    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    51465229    break;
     
    51495232
    51505233/* Line 1806 of yacc.c  */
    5151 #line 467 "parser.yy"
     5234#line 474 "parser.yy"
    51525235    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    51535236    break;
     
    51565239
    51575240/* Line 1806 of yacc.c  */
    5158 #line 472 "parser.yy"
     5241#line 479 "parser.yy"
    51595242    {
    51605243                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    51745257
    51755258/* Line 1806 of yacc.c  */
    5176 #line 485 "parser.yy"
     5259#line 492 "parser.yy"
    51775260    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    51785261    break;
     
    51815264
    51825265/* Line 1806 of yacc.c  */
    5183 #line 487 "parser.yy"
     5266#line 494 "parser.yy"
    51845267    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    51855268    break;
     
    51885271
    51895272/* Line 1806 of yacc.c  */
    5190 #line 489 "parser.yy"
     5273#line 496 "parser.yy"
    51915274    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    51925275    break;
     
    51955278
    51965279/* Line 1806 of yacc.c  */
    5197 #line 491 "parser.yy"
     5280#line 498 "parser.yy"
    51985281    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    51995282    break;
     
    52025285
    52035286/* Line 1806 of yacc.c  */
    5204 #line 493 "parser.yy"
     5287#line 500 "parser.yy"
    52055288    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52065289    break;
     
    52095292
    52105293/* Line 1806 of yacc.c  */
    5211 #line 495 "parser.yy"
     5294#line 502 "parser.yy"
    52125295    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52135296    break;
     
    52165299
    52175300/* Line 1806 of yacc.c  */
    5218 #line 497 "parser.yy"
     5301#line 504 "parser.yy"
    52195302    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52205303    break;
     
    52235306
    52245307/* Line 1806 of yacc.c  */
    5225 #line 499 "parser.yy"
     5308#line 506 "parser.yy"
    52265309    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    52275310    break;
     
    52305313
    52315314/* Line 1806 of yacc.c  */
    5232 #line 501 "parser.yy"
     5315#line 508 "parser.yy"
    52335316    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52345317    break;
     
    52375320
    52385321/* Line 1806 of yacc.c  */
    5239 #line 503 "parser.yy"
     5322#line 510 "parser.yy"
    52405323    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    52415324    break;
     
    52445327
    52455328/* Line 1806 of yacc.c  */
    5246 #line 505 "parser.yy"
     5329#line 512 "parser.yy"
    52475330    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    52485331    break;
     
    52515334
    52525335/* Line 1806 of yacc.c  */
    5253 #line 511 "parser.yy"
     5336#line 518 "parser.yy"
    52545337    { (yyval.op) = OperKinds::PointTo; }
    52555338    break;
     
    52585341
    52595342/* Line 1806 of yacc.c  */
    5260 #line 512 "parser.yy"
     5343#line 519 "parser.yy"
    52615344    { (yyval.op) = OperKinds::AddressOf; }
    52625345    break;
     
    52655348
    52665349/* Line 1806 of yacc.c  */
    5267 #line 518 "parser.yy"
     5350#line 525 "parser.yy"
    52685351    { (yyval.op) = OperKinds::UnPlus; }
    52695352    break;
     
    52725355
    52735356/* Line 1806 of yacc.c  */
    5274 #line 519 "parser.yy"
     5357#line 526 "parser.yy"
    52755358    { (yyval.op) = OperKinds::UnMinus; }
    52765359    break;
     
    52795362
    52805363/* Line 1806 of yacc.c  */
    5281 #line 520 "parser.yy"
     5364#line 527 "parser.yy"
    52825365    { (yyval.op) = OperKinds::Neg; }
    52835366    break;
     
    52865369
    52875370/* Line 1806 of yacc.c  */
    5288 #line 521 "parser.yy"
     5371#line 528 "parser.yy"
    52895372    { (yyval.op) = OperKinds::BitNeg; }
    52905373    break;
     
    52935376
    52945377/* Line 1806 of yacc.c  */
    5295 #line 527 "parser.yy"
     5378#line 534 "parser.yy"
    52965379    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    52975380    break;
     
    53005383
    53015384/* Line 1806 of yacc.c  */
    5302 #line 535 "parser.yy"
     5385#line 542 "parser.yy"
    53035386    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53045387    break;
     
    53075390
    53085391/* Line 1806 of yacc.c  */
    5309 #line 537 "parser.yy"
     5392#line 544 "parser.yy"
    53105393    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53115394    break;
     
    53145397
    53155398/* Line 1806 of yacc.c  */
    5316 #line 539 "parser.yy"
     5399#line 546 "parser.yy"
    53175400    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53185401    break;
     
    53215404
    53225405/* Line 1806 of yacc.c  */
    5323 #line 545 "parser.yy"
     5406#line 552 "parser.yy"
    53245407    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53255408    break;
     
    53285411
    53295412/* Line 1806 of yacc.c  */
    5330 #line 547 "parser.yy"
     5413#line 554 "parser.yy"
    53315414    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53325415    break;
     
    53355418
    53365419/* Line 1806 of yacc.c  */
    5337 #line 553 "parser.yy"
     5420#line 560 "parser.yy"
    53385421    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53395422    break;
     
    53425425
    53435426/* Line 1806 of yacc.c  */
    5344 #line 555 "parser.yy"
     5427#line 562 "parser.yy"
    53455428    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53465429    break;
     
    53495432
    53505433/* Line 1806 of yacc.c  */
    5351 #line 561 "parser.yy"
     5434#line 568 "parser.yy"
    53525435    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53535436    break;
     
    53565439
    53575440/* Line 1806 of yacc.c  */
    5358 #line 563 "parser.yy"
     5441#line 570 "parser.yy"
    53595442    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53605443    break;
     
    53635446
    53645447/* Line 1806 of yacc.c  */
    5365 #line 565 "parser.yy"
     5448#line 572 "parser.yy"
    53665449    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53675450    break;
     
    53705453
    53715454/* Line 1806 of yacc.c  */
    5372 #line 567 "parser.yy"
     5455#line 574 "parser.yy"
    53735456    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53745457    break;
     
    53775460
    53785461/* Line 1806 of yacc.c  */
    5379 #line 573 "parser.yy"
     5462#line 580 "parser.yy"
    53805463    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53815464    break;
     
    53845467
    53855468/* Line 1806 of yacc.c  */
    5386 #line 575 "parser.yy"
     5469#line 582 "parser.yy"
    53875470    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53885471    break;
     
    53915474
    53925475/* Line 1806 of yacc.c  */
    5393 #line 581 "parser.yy"
     5476#line 588 "parser.yy"
    53945477    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53955478    break;
     
    53985481
    53995482/* Line 1806 of yacc.c  */
    5400 #line 587 "parser.yy"
     5483#line 594 "parser.yy"
    54015484    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54025485    break;
     
    54055488
    54065489/* Line 1806 of yacc.c  */
    5407 #line 593 "parser.yy"
     5490#line 600 "parser.yy"
    54085491    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54095492    break;
     
    54125495
    54135496/* Line 1806 of yacc.c  */
    5414 #line 599 "parser.yy"
     5497#line 606 "parser.yy"
    54155498    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    54165499    break;
     
    54195502
    54205503/* Line 1806 of yacc.c  */
    5421 #line 605 "parser.yy"
     5504#line 612 "parser.yy"
    54225505    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    54235506    break;
     
    54265509
    54275510/* Line 1806 of yacc.c  */
    5428 #line 611 "parser.yy"
     5511#line 618 "parser.yy"
    54295512    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54305513    break;
     
    54335516
    54345517/* Line 1806 of yacc.c  */
    5435 #line 614 "parser.yy"
     5518#line 621 "parser.yy"
    54365519    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    54375520    break;
     
    54405523
    54415524/* Line 1806 of yacc.c  */
    5442 #line 627 "parser.yy"
     5525#line 634 "parser.yy"
    54435526    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54445527    break;
     
    54475530
    54485531/* Line 1806 of yacc.c  */
    5449 #line 634 "parser.yy"
     5532#line 641 "parser.yy"
    54505533    { (yyval.en) = nullptr; }
    54515534    break;
     
    54545537
    54555538/* Line 1806 of yacc.c  */
    5456 #line 639 "parser.yy"
     5539#line 646 "parser.yy"
    54575540    { (yyval.op) = OperKinds::Assign; }
    54585541    break;
     
    54615544
    54625545/* Line 1806 of yacc.c  */
    5463 #line 640 "parser.yy"
     5546#line 647 "parser.yy"
    54645547    { (yyval.op) = OperKinds::AtAssn; }
    54655548    break;
     
    54685551
    54695552/* Line 1806 of yacc.c  */
    5470 #line 641 "parser.yy"
     5553#line 648 "parser.yy"
    54715554    { (yyval.op) = OperKinds::MulAssn; }
    54725555    break;
     
    54755558
    54765559/* Line 1806 of yacc.c  */
    5477 #line 642 "parser.yy"
     5560#line 649 "parser.yy"
    54785561    { (yyval.op) = OperKinds::DivAssn; }
    54795562    break;
     
    54825565
    54835566/* Line 1806 of yacc.c  */
    5484 #line 643 "parser.yy"
     5567#line 650 "parser.yy"
    54855568    { (yyval.op) = OperKinds::ModAssn; }
    54865569    break;
     
    54895572
    54905573/* Line 1806 of yacc.c  */
    5491 #line 644 "parser.yy"
     5574#line 651 "parser.yy"
    54925575    { (yyval.op) = OperKinds::PlusAssn; }
    54935576    break;
     
    54965579
    54975580/* Line 1806 of yacc.c  */
    5498 #line 645 "parser.yy"
     5581#line 652 "parser.yy"
    54995582    { (yyval.op) = OperKinds::MinusAssn; }
    55005583    break;
     
    55035586
    55045587/* Line 1806 of yacc.c  */
    5505 #line 646 "parser.yy"
     5588#line 653 "parser.yy"
    55065589    { (yyval.op) = OperKinds::LSAssn; }
    55075590    break;
     
    55105593
    55115594/* Line 1806 of yacc.c  */
    5512 #line 647 "parser.yy"
     5595#line 654 "parser.yy"
    55135596    { (yyval.op) = OperKinds::RSAssn; }
    55145597    break;
     
    55175600
    55185601/* Line 1806 of yacc.c  */
    5519 #line 648 "parser.yy"
     5602#line 655 "parser.yy"
    55205603    { (yyval.op) = OperKinds::AndAssn; }
    55215604    break;
     
    55245607
    55255608/* Line 1806 of yacc.c  */
    5526 #line 649 "parser.yy"
     5609#line 656 "parser.yy"
    55275610    { (yyval.op) = OperKinds::ERAssn; }
    55285611    break;
     
    55315614
    55325615/* Line 1806 of yacc.c  */
    5533 #line 650 "parser.yy"
     5616#line 657 "parser.yy"
    55345617    { (yyval.op) = OperKinds::OrAssn; }
    55355618    break;
     
    55385621
    55395622/* Line 1806 of yacc.c  */
    5540 #line 661 "parser.yy"
     5623#line 668 "parser.yy"
    55415624    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    55425625    break;
     
    55455628
    55465629/* Line 1806 of yacc.c  */
    5547 #line 663 "parser.yy"
     5630#line 670 "parser.yy"
    55485631    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    55495632    break;
     
    55525635
    55535636/* Line 1806 of yacc.c  */
    5554 #line 669 "parser.yy"
     5637#line 676 "parser.yy"
    55555638    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    55565639    break;
     
    55595642
    55605643/* Line 1806 of yacc.c  */
    5561 #line 675 "parser.yy"
     5644#line 682 "parser.yy"
    55625645    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    55635646    break;
     
    55665649
    55675650/* Line 1806 of yacc.c  */
    5568 #line 680 "parser.yy"
    5569     { (yyval.en) = 0; }
     5651#line 687 "parser.yy"
     5652    { (yyval.en) = nullptr; }
    55705653    break;
    55715654
     
    55735656
    55745657/* Line 1806 of yacc.c  */
    5575 #line 689 "parser.yy"
     5658#line 696 "parser.yy"
    55765659    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    55775660    break;
     
    55805663
    55815664/* Line 1806 of yacc.c  */
    5582 #line 696 "parser.yy"
     5665#line 703 "parser.yy"
    55835666    {
    55845667                        Token fn;
     
    55915674
    55925675/* Line 1806 of yacc.c  */
    5593 #line 706 "parser.yy"
     5676#line 713 "parser.yy"
    55945677    {
    55955678                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56005683
    56015684/* Line 1806 of yacc.c  */
    5602 #line 713 "parser.yy"
     5685#line 720 "parser.yy"
    56035686    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    56045687    break;
     
    56075690
    56085691/* Line 1806 of yacc.c  */
    5609 #line 720 "parser.yy"
     5692#line 727 "parser.yy"
    56105693    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    56115694    break;
     
    56145697
    56155698/* Line 1806 of yacc.c  */
    5616 #line 726 "parser.yy"
     5699#line 733 "parser.yy"
    56175700    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    56185701    break;
     
    56215704
    56225705/* Line 1806 of yacc.c  */
    5623 #line 731 "parser.yy"
     5706#line 738 "parser.yy"
    56245707    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    56255708    break;
     
    56285711
    56295712/* Line 1806 of yacc.c  */
    5630 #line 733 "parser.yy"
     5713#line 740 "parser.yy"
    56315714    {   // mark all fields in list
    56325715                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    56395722
    56405723/* Line 1806 of yacc.c  */
    5641 #line 739 "parser.yy"
     5724#line 746 "parser.yy"
    56425725    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    56435726    break;
     
    56465729
    56475730/* Line 1806 of yacc.c  */
    5648 #line 746 "parser.yy"
     5731#line 753 "parser.yy"
    56495732    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    56505733    break;
     
    56535736
    56545737/* Line 1806 of yacc.c  */
    5655 #line 751 "parser.yy"
     5738#line 758 "parser.yy"
    56565739    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    56575740    break;
     
    56605743
    56615744/* Line 1806 of yacc.c  */
    5662 #line 757 "parser.yy"
     5745#line 764 "parser.yy"
    56635746    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    56645747    break;
     
    56675750
    56685751/* Line 1806 of yacc.c  */
    5669 #line 759 "parser.yy"
     5752#line 766 "parser.yy"
    56705753    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    56715754    break;
     
    56745757
    56755758/* Line 1806 of yacc.c  */
    5676 #line 761 "parser.yy"
     5759#line 768 "parser.yy"
    56775760    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    56785761    break;
     
    56815764
    56825765/* Line 1806 of yacc.c  */
    5683 #line 763 "parser.yy"
     5766#line 770 "parser.yy"
    56845767    {
    56855768                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    56895772                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    56905773                        // statement.
    5691                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
     5774                        (yyval.sn) = (yyvsp[(7) - (9)].decl) ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    56925775                }
    56935776    break;
     
    56965779
    56975780/* Line 1806 of yacc.c  */
    5698 #line 773 "parser.yy"
     5781#line 780 "parser.yy"
    56995782    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57005783    break;
     
    57035786
    57045787/* Line 1806 of yacc.c  */
    5705 #line 775 "parser.yy"
     5788#line 782 "parser.yy"
    57065789    {
    57075790                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    5708                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
     5791                        (yyval.sn) = (yyvsp[(7) - (9)].decl) ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    57095792                }
    57105793    break;
     
    57135796
    57145797/* Line 1806 of yacc.c  */
    5715 #line 785 "parser.yy"
     5798#line 792 "parser.yy"
    57165799    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57175800    break;
     
    57205803
    57215804/* Line 1806 of yacc.c  */
    5722 #line 787 "parser.yy"
     5805#line 794 "parser.yy"
    57235806    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57245807    break;
     
    57275810
    57285811/* Line 1806 of yacc.c  */
    5729 #line 792 "parser.yy"
     5812#line 799 "parser.yy"
    57305813    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    57315814    break;
     
    57345817
    57355818/* Line 1806 of yacc.c  */
    5736 #line 794 "parser.yy"
     5819#line 801 "parser.yy"
    57375820    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    57385821    break;
     
    57415824
    57425825/* Line 1806 of yacc.c  */
    5743 #line 798 "parser.yy"
     5826#line 805 "parser.yy"
    57445827    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    57455828    break;
     
    57485831
    57495832/* Line 1806 of yacc.c  */
    5750 #line 799 "parser.yy"
     5833#line 806 "parser.yy"
    57515834    { (yyval.sn) = new StatementNode( build_default() ); }
    57525835    break;
     
    57555838
    57565839/* Line 1806 of yacc.c  */
    5757 #line 805 "parser.yy"
     5840#line 812 "parser.yy"
    57585841    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    57595842    break;
     
    57625845
    57635846/* Line 1806 of yacc.c  */
    5764 #line 809 "parser.yy"
     5847#line 816 "parser.yy"
    57655848    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    57665849    break;
     
    57695852
    57705853/* Line 1806 of yacc.c  */
    5771 #line 814 "parser.yy"
    5772     { (yyval.sn) = 0; }
     5854#line 821 "parser.yy"
     5855    { (yyval.sn) = nullptr; }
    57735856    break;
    57745857
     
    57765859
    57775860/* Line 1806 of yacc.c  */
    5778 #line 820 "parser.yy"
     5861#line 827 "parser.yy"
    57795862    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    57805863    break;
     
    57835866
    57845867/* Line 1806 of yacc.c  */
    5785 #line 822 "parser.yy"
     5868#line 829 "parser.yy"
    57865869    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
    57875870    break;
     
    57905873
    57915874/* Line 1806 of yacc.c  */
    5792 #line 827 "parser.yy"
    5793     { (yyval.sn) = 0; }
     5875#line 834 "parser.yy"
     5876    { (yyval.sn) = nullptr; }
    57945877    break;
    57955878
     
    57975880
    57985881/* Line 1806 of yacc.c  */
    5799 #line 833 "parser.yy"
     5882#line 840 "parser.yy"
    58005883    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58015884    break;
     
    58045887
    58055888/* Line 1806 of yacc.c  */
    5806 #line 835 "parser.yy"
     5889#line 842 "parser.yy"
    58075890    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    58085891    break;
     
    58115894
    58125895/* Line 1806 of yacc.c  */
    5813 #line 837 "parser.yy"
     5896#line 844 "parser.yy"
    58145897    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58155898    break;
     
    58185901
    58195902/* Line 1806 of yacc.c  */
    5820 #line 839 "parser.yy"
     5903#line 846 "parser.yy"
    58215904    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    58225905    break;
     
    58255908
    58265909/* Line 1806 of yacc.c  */
    5827 #line 844 "parser.yy"
     5910#line 851 "parser.yy"
    58285911    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    58295912    break;
     
    58325915
    58335916/* Line 1806 of yacc.c  */
    5834 #line 850 "parser.yy"
    5835     { (yyval.sn) = 0; }
     5917#line 857 "parser.yy"
     5918    { (yyval.sn) = nullptr; }
    58365919    break;
    58375920
     
    58395922
    58405923/* Line 1806 of yacc.c  */
    5841 #line 852 "parser.yy"
    5842     { (yyval.sn) = 0; }
     5924#line 859 "parser.yy"
     5925    { (yyval.sn) = nullptr; }
    58435926    break;
    58445927
     
    58465929
    58475930/* Line 1806 of yacc.c  */
    5848 #line 857 "parser.yy"
     5931#line 864 "parser.yy"
    58495932    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    58505933    break;
     
    58535936
    58545937/* Line 1806 of yacc.c  */
    5855 #line 859 "parser.yy"
     5938#line 866 "parser.yy"
    58565939    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    58575940    break;
     
    58605943
    58615944/* Line 1806 of yacc.c  */
    5862 #line 861 "parser.yy"
     5945#line 868 "parser.yy"
    58635946    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    58645947    break;
     
    58675950
    58685951/* Line 1806 of yacc.c  */
    5869 #line 866 "parser.yy"
     5952#line 873 "parser.yy"
    58705953    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    58715954    break;
     
    58745957
    58755958/* Line 1806 of yacc.c  */
    5876 #line 868 "parser.yy"
     5959#line 875 "parser.yy"
    58775960    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    58785961    break;
     
    58815964
    58825965/* Line 1806 of yacc.c  */
    5883 #line 873 "parser.yy"
     5966#line 880 "parser.yy"
    58845967    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    58855968    break;
     
    58885971
    58895972/* Line 1806 of yacc.c  */
    5890 #line 877 "parser.yy"
     5973#line 884 "parser.yy"
    58915974    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    58925975    break;
     
    58955978
    58965979/* Line 1806 of yacc.c  */
    5897 #line 880 "parser.yy"
     5980#line 887 "parser.yy"
    58985981    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    58995982    break;
     
    59025985
    59035986/* Line 1806 of yacc.c  */
    5904 #line 884 "parser.yy"
     5987#line 891 "parser.yy"
    59055988    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    59065989    break;
     
    59095992
    59105993/* Line 1806 of yacc.c  */
    5911 #line 887 "parser.yy"
     5994#line 894 "parser.yy"
    59125995    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59135996    break;
     
    59165999
    59176000/* Line 1806 of yacc.c  */
    5918 #line 891 "parser.yy"
     6001#line 898 "parser.yy"
    59196002    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    59206003    break;
     
    59236006
    59246007/* Line 1806 of yacc.c  */
    5925 #line 893 "parser.yy"
     6008#line 900 "parser.yy"
    59266009    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    59276010    break;
     
    59306013
    59316014/* Line 1806 of yacc.c  */
    5932 #line 895 "parser.yy"
     6015#line 902 "parser.yy"
    59336016    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    59346017    break;
     
    59376020
    59386021/* Line 1806 of yacc.c  */
    5939 #line 897 "parser.yy"
     6022#line 904 "parser.yy"
    59406023    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    59416024    break;
     
    59446027
    59456028/* Line 1806 of yacc.c  */
    5946 #line 899 "parser.yy"
     6029#line 906 "parser.yy"
    59476030    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    59486031    break;
     
    59516034
    59526035/* Line 1806 of yacc.c  */
    5953 #line 904 "parser.yy"
     6036#line 911 "parser.yy"
    59546037    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    59556038    break;
     
    59586041
    59596042/* Line 1806 of yacc.c  */
    5960 #line 906 "parser.yy"
     6043#line 913 "parser.yy"
    59616044    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    59626045    break;
     
    59656048
    59666049/* Line 1806 of yacc.c  */
    5967 #line 908 "parser.yy"
     6050#line 915 "parser.yy"
    59686051    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    59696052    break;
     
    59726055
    59736056/* Line 1806 of yacc.c  */
    5974 #line 915 "parser.yy"
     6057#line 922 "parser.yy"
    59756058    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    59766059    break;
     
    59796062
    59806063/* Line 1806 of yacc.c  */
    5981 #line 917 "parser.yy"
     6064#line 924 "parser.yy"
    59826065    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    59836066    break;
     
    59866069
    59876070/* Line 1806 of yacc.c  */
    5988 #line 919 "parser.yy"
     6071#line 926 "parser.yy"
    59896072    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    59906073    break;
     
    59936076
    59946077/* Line 1806 of yacc.c  */
    5995 #line 921 "parser.yy"
     6078#line 928 "parser.yy"
    59966079    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    59976080    break;
     
    60006083
    60016084/* Line 1806 of yacc.c  */
    6002 #line 926 "parser.yy"
     6085#line 933 "parser.yy"
    60036086    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60046087    break;
     
    60076090
    60086091/* Line 1806 of yacc.c  */
    6009 #line 928 "parser.yy"
     6092#line 935 "parser.yy"
    60106093    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60116094    break;
     
    60146097
    60156098/* Line 1806 of yacc.c  */
    6016 #line 930 "parser.yy"
     6099#line 937 "parser.yy"
    60176100    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60186101    break;
     
    60216104
    60226105/* Line 1806 of yacc.c  */
    6023 #line 932 "parser.yy"
     6106#line 939 "parser.yy"
    60246107    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60256108    break;
     
    60286111
    60296112/* Line 1806 of yacc.c  */
    6030 #line 937 "parser.yy"
     6113#line 944 "parser.yy"
    60316114    {
    60326115                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    60376120
    60386121/* Line 1806 of yacc.c  */
    6039 #line 950 "parser.yy"
     6122#line 957 "parser.yy"
    60406123    {
    60416124                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60476130
    60486131/* Line 1806 of yacc.c  */
    6049 #line 955 "parser.yy"
     6132#line 962 "parser.yy"
    60506133    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    60516134    break;
     
    60546137
    60556138/* Line 1806 of yacc.c  */
    6056 #line 957 "parser.yy"
     6139#line 964 "parser.yy"
    60576140    {
    60586141                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60646147
    60656148/* Line 1806 of yacc.c  */
    6066 #line 966 "parser.yy"
     6149#line 973 "parser.yy"
    60676150    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
    60686151    break;
     
    60716154
    60726155/* Line 1806 of yacc.c  */
    6073 #line 968 "parser.yy"
     6156#line 975 "parser.yy"
    60746157    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
    60756158    break;
     
    60786161
    60796162/* Line 1806 of yacc.c  */
    6080 #line 970 "parser.yy"
     6163#line 977 "parser.yy"
    60816164    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
    60826165    break;
     
    60856168
    60866169/* Line 1806 of yacc.c  */
    6087 #line 972 "parser.yy"
     6170#line 979 "parser.yy"
    60886171    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
    60896172    break;
     
    60926175
    60936176/* Line 1806 of yacc.c  */
    6094 #line 974 "parser.yy"
     6177#line 981 "parser.yy"
    60956178    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
    60966179    break;
     
    60996182
    61006183/* Line 1806 of yacc.c  */
    6101 #line 979 "parser.yy"
     6184#line 986 "parser.yy"
    61026185    { (yyval.flag) = false; }
    61036186    break;
     
    61066189
    61076190/* Line 1806 of yacc.c  */
    6108 #line 981 "parser.yy"
     6191#line 988 "parser.yy"
    61096192    { (yyval.flag) = true; }
    61106193    break;
     
    61136196
    61146197/* Line 1806 of yacc.c  */
    6115 #line 986 "parser.yy"
    6116     { (yyval.en) = 0; }
     6198#line 993 "parser.yy"
     6199    { (yyval.en) = nullptr; }
    61176200    break;
    61186201
     
    61206203
    61216204/* Line 1806 of yacc.c  */
    6122 #line 993 "parser.yy"
     6205#line 1000 "parser.yy"
    61236206    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    61246207    break;
     
    61276210
    61286211/* Line 1806 of yacc.c  */
    6129 #line 998 "parser.yy"
     6212#line 1005 "parser.yy"
    61306213    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    61316214    break;
     
    61346217
    61356218/* Line 1806 of yacc.c  */
    6136 #line 1000 "parser.yy"
     6219#line 1007 "parser.yy"
    61376220    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    61386221    break;
     
    61416224
    61426225/* Line 1806 of yacc.c  */
    6143 #line 1005 "parser.yy"
    6144     { (yyval.en) = 0; }
     6226#line 1012 "parser.yy"
     6227    { (yyval.en) = nullptr; }
    61456228    break;
    61466229
     
    61486231
    61496232/* Line 1806 of yacc.c  */
    6150 #line 1007 "parser.yy"
     6233#line 1014 "parser.yy"
    61516234    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    61526235    break;
     
    61556238
    61566239/* Line 1806 of yacc.c  */
    6157 #line 1009 "parser.yy"
     6240#line 1017 "parser.yy"
    61586241    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    61596242    break;
     
    61626245
    61636246/* Line 1806 of yacc.c  */
    6164 #line 1014 "parser.yy"
     6247#line 1022 "parser.yy"
    61656248    {
    61666249                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    61726255
    61736256/* Line 1806 of yacc.c  */
    6174 #line 1019 "parser.yy"
     6257#line 1027 "parser.yy"
    61756258    {
    61766259                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    61826265
    61836266/* Line 1806 of yacc.c  */
    6184 #line 1029 "parser.yy"
    6185     { (yyval.decl) = 0; }
     6267#line 1037 "parser.yy"
     6268    { (yyval.decl) = nullptr; }
    61866269    break;
    61876270
     
    61896272
    61906273/* Line 1806 of yacc.c  */
    6191 #line 1036 "parser.yy"
     6274#line 1044 "parser.yy"
    61926275    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    61936276    break;
     
    61966279
    61976280/* Line 1806 of yacc.c  */
    6198 #line 1041 "parser.yy"
    6199     { (yyval.decl) = 0; }
     6281#line 1049 "parser.yy"
     6282    { (yyval.decl) = nullptr; }
    62006283    break;
    62016284
     
    62036286
    62046287/* Line 1806 of yacc.c  */
    6205 #line 1048 "parser.yy"
     6288#line 1056 "parser.yy"
    62066289    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62076290    break;
     
    62106293
    62116294/* Line 1806 of yacc.c  */
    6212 #line 1062 "parser.yy"
     6295#line 1070 "parser.yy"
    62136296    {}
    62146297    break;
     
    62176300
    62186301/* Line 1806 of yacc.c  */
    6219 #line 1063 "parser.yy"
     6302#line 1071 "parser.yy"
    62206303    {}
    62216304    break;
     
    62246307
    62256308/* Line 1806 of yacc.c  */
    6226 #line 1092 "parser.yy"
     6309#line 1100 "parser.yy"
    62276310    {
    62286311                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62346317
    62356318/* Line 1806 of yacc.c  */
    6236 #line 1099 "parser.yy"
     6319#line 1107 "parser.yy"
    62376320    {
    62386321                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62446327
    62456328/* Line 1806 of yacc.c  */
    6246 #line 1104 "parser.yy"
     6329#line 1112 "parser.yy"
    62476330    {
    62486331                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    62546337
    62556338/* Line 1806 of yacc.c  */
    6256 #line 1114 "parser.yy"
     6339#line 1122 "parser.yy"
    62576340    {
    62586341                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6259                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
     6342                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
    62606343                }
    62616344    break;
     
    62646347
    62656348/* Line 1806 of yacc.c  */
    6266 #line 1119 "parser.yy"
     6349#line 1127 "parser.yy"
    62676350    {
    62686351                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6269                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
     6352                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
    62706353                }
    62716354    break;
     
    62746357
    62756358/* Line 1806 of yacc.c  */
    6276 #line 1124 "parser.yy"
     6359#line 1132 "parser.yy"
    62776360    {
    62786361                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
    6279                         (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) );
     6362                        (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) )->addAsmName( (yyvsp[(4) - (4)].constant) );
    62806363                }
    62816364    break;
     
    62846367
    62856368/* Line 1806 of yacc.c  */
    6286 #line 1132 "parser.yy"
     6369#line 1140 "parser.yy"
    62876370    {
    62886371                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62946377
    62956378/* Line 1806 of yacc.c  */
    6296 #line 1137 "parser.yy"
     6379#line 1145 "parser.yy"
    62976380    {
    62986381                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63046387
    63056388/* Line 1806 of yacc.c  */
    6306 #line 1142 "parser.yy"
     6389#line 1150 "parser.yy"
    63076390    {
    63086391                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63146397
    63156398/* Line 1806 of yacc.c  */
    6316 #line 1147 "parser.yy"
     6399#line 1155 "parser.yy"
    63176400    {
    63186401                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63246407
    63256408/* Line 1806 of yacc.c  */
    6326 #line 1152 "parser.yy"
     6409#line 1160 "parser.yy"
    63276410    {
    63286411                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    63346417
    63356418/* Line 1806 of yacc.c  */
    6336 #line 1183 "parser.yy"
     6419#line 1191 "parser.yy"
    63376420    {
    63386421                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63436426
    63446427/* Line 1806 of yacc.c  */
    6345 #line 1187 "parser.yy"
     6428#line 1195 "parser.yy"
    63466429    {
    63476430                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63526435
    63536436/* Line 1806 of yacc.c  */
    6354 #line 1194 "parser.yy"
     6437#line 1202 "parser.yy"
    63556438    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    63566439    break;
     
    63596442
    63606443/* Line 1806 of yacc.c  */
    6361 #line 1198 "parser.yy"
     6444#line 1206 "parser.yy"
    63626445    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    63636446    break;
     
    63666449
    63676450/* Line 1806 of yacc.c  */
    6368 #line 1203 "parser.yy"
     6451#line 1211 "parser.yy"
    63696452    {
    63706453                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63766459
    63776460/* Line 1806 of yacc.c  */
    6378 #line 1208 "parser.yy"
     6461#line 1216 "parser.yy"
    63796462    {
    63806463                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63866469
    63876470/* Line 1806 of yacc.c  */
    6388 #line 1213 "parser.yy"
     6471#line 1221 "parser.yy"
    63896472    {
    63906473                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    63966479
    63976480/* Line 1806 of yacc.c  */
    6398 #line 1224 "parser.yy"
     6481#line 1232 "parser.yy"
    63996482    {
    64006483                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64066489
    64076490/* Line 1806 of yacc.c  */
    6408 #line 1229 "parser.yy"
     6491#line 1237 "parser.yy"
    64096492    {
    64106493                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64166499
    64176500/* Line 1806 of yacc.c  */
    6418 #line 1234 "parser.yy"
     6501#line 1242 "parser.yy"
    64196502    {
    64206503                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64266509
    64276510/* Line 1806 of yacc.c  */
    6428 #line 1239 "parser.yy"
     6511#line 1247 "parser.yy"
    64296512    {
    64306513                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64366519
    64376520/* Line 1806 of yacc.c  */
    6438 #line 1244 "parser.yy"
     6521#line 1252 "parser.yy"
    64396522    {
    64406523                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64466529
    64476530/* Line 1806 of yacc.c  */
    6448 #line 1253 "parser.yy"
     6531#line 1261 "parser.yy"
    64496532    {
    64506533                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    64566539
    64576540/* Line 1806 of yacc.c  */
    6458 #line 1258 "parser.yy"
     6541#line 1266 "parser.yy"
    64596542    {
    64606543                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    64666549
    64676550/* Line 1806 of yacc.c  */
    6468 #line 1275 "parser.yy"
     6551#line 1283 "parser.yy"
    64696552    {
    64706553                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6471                         (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
     6554                        (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addAsmName( (yyvsp[(3) - (4)].constant) )->addInitializer( (yyvsp[(4) - (4)].in) );
    64726555                }
    64736556    break;
     
    64766559
    64776560/* Line 1806 of yacc.c  */
    6478 #line 1280 "parser.yy"
     6561#line 1288 "parser.yy"
    64796562    {
    64806563                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6481                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
     6564                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addAsmName( (yyvsp[(5) - (6)].constant) )->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
    64826565                }
    64836566    break;
     
    64866569
    64876570/* Line 1806 of yacc.c  */
    6488 #line 1302 "parser.yy"
    6489     { (yyval.decl) = 0; }
     6571#line 1310 "parser.yy"
     6572    { (yyval.decl) = nullptr; }
    64906573    break;
    64916574
     
    64936576
    64946577/* Line 1806 of yacc.c  */
    6495 #line 1314 "parser.yy"
     6578#line 1322 "parser.yy"
    64966579    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    64976580    break;
     
    65006583
    65016584/* Line 1806 of yacc.c  */
    6502 #line 1325 "parser.yy"
     6585#line 1333 "parser.yy"
    65036586    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65046587    break;
     
    65076590
    65086591/* Line 1806 of yacc.c  */
    6509 #line 1327 "parser.yy"
     6592#line 1335 "parser.yy"
    65106593    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    65116594    break;
     
    65146597
    65156598/* Line 1806 of yacc.c  */
    6516 #line 1329 "parser.yy"
     6599#line 1337 "parser.yy"
    65176600    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    65186601    break;
     
    65216604
    65226605/* Line 1806 of yacc.c  */
    6523 #line 1331 "parser.yy"
     6606#line 1339 "parser.yy"
    65246607    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    65256608    break;
     
    65286611
    65296612/* Line 1806 of yacc.c  */
    6530 #line 1333 "parser.yy"
     6613#line 1341 "parser.yy"
    65316614    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    65326615    break;
     
    65356618
    65366619/* Line 1806 of yacc.c  */
    6537 #line 1335 "parser.yy"
     6620#line 1343 "parser.yy"
    65386621    {
    65396622                        typedefTable.enterScope();
     
    65446627
    65456628/* Line 1806 of yacc.c  */
    6546 #line 1339 "parser.yy"
     6629#line 1347 "parser.yy"
    65476630    {
    65486631                        typedefTable.leaveScope();
     
    65546637
    65556638/* Line 1806 of yacc.c  */
    6556 #line 1348 "parser.yy"
     6639#line 1356 "parser.yy"
    65576640    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65586641    break;
     
    65616644
    65626645/* Line 1806 of yacc.c  */
    6563 #line 1350 "parser.yy"
     6646#line 1358 "parser.yy"
    65646647    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    65656648    break;
     
    65686651
    65696652/* Line 1806 of yacc.c  */
    6570 #line 1361 "parser.yy"
     6653#line 1369 "parser.yy"
    65716654    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65726655    break;
     
    65756658
    65766659/* Line 1806 of yacc.c  */
    6577 #line 1366 "parser.yy"
     6660#line 1374 "parser.yy"
    65786661    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    65796662    break;
     
    65826665
    65836666/* Line 1806 of yacc.c  */
    6584 #line 1368 "parser.yy"
     6667#line 1376 "parser.yy"
    65856668    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    65866669    break;
     
    65896672
    65906673/* Line 1806 of yacc.c  */
    6591 #line 1370 "parser.yy"
     6674#line 1378 "parser.yy"
    65926675    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    65936676    break;
     
    65966679
    65976680/* Line 1806 of yacc.c  */
    6598 #line 1372 "parser.yy"
     6681#line 1380 "parser.yy"
    65996682    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66006683    break;
     
    66036686
    66046687/* Line 1806 of yacc.c  */
    6605 #line 1375 "parser.yy"
     6688#line 1383 "parser.yy"
    66066689    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    66076690    break;
     
    66106693
    66116694/* Line 1806 of yacc.c  */
    6612 #line 1377 "parser.yy"
     6695#line 1385 "parser.yy"
    66136696    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    66146697    break;
     
    66176700
    66186701/* Line 1806 of yacc.c  */
    6619 #line 1380 "parser.yy"
     6702#line 1388 "parser.yy"
    66206703    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    66216704    break;
     
    66246707
    66256708/* Line 1806 of yacc.c  */
    6626 #line 1382 "parser.yy"
     6709#line 1390 "parser.yy"
    66276710    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    66286711    break;
     
    66316714
    66326715/* Line 1806 of yacc.c  */
    6633 #line 1387 "parser.yy"
     6716#line 1395 "parser.yy"
    66346717    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    66356718    break;
     
    66386721
    66396722/* Line 1806 of yacc.c  */
    6640 #line 1389 "parser.yy"
     6723#line 1397 "parser.yy"
    66416724    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    66426725    break;
     
    66456728
    66466729/* Line 1806 of yacc.c  */
    6647 #line 1391 "parser.yy"
     6730#line 1399 "parser.yy"
    66486731    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    66496732    break;
     
    66526735
    66536736/* Line 1806 of yacc.c  */
    6654 #line 1393 "parser.yy"
     6737#line 1401 "parser.yy"
    66556738    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    66566739    break;
     
    66596742
    66606743/* Line 1806 of yacc.c  */
    6661 #line 1395 "parser.yy"
     6744#line 1403 "parser.yy"
    66626745    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    66636746    break;
     
    66666749
    66676750/* Line 1806 of yacc.c  */
    6668 #line 1397 "parser.yy"
     6751#line 1405 "parser.yy"
    66696752    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    66706753    break;
     
    66736756
    66746757/* Line 1806 of yacc.c  */
    6675 #line 1399 "parser.yy"
     6758#line 1407 "parser.yy"
    66766759    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    66776760    break;
     
    66806763
    66816764/* Line 1806 of yacc.c  */
    6682 #line 1401 "parser.yy"
     6765#line 1409 "parser.yy"
    66836766    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    66846767    break;
     
    66876770
    66886771/* Line 1806 of yacc.c  */
    6689 #line 1403 "parser.yy"
     6772#line 1411 "parser.yy"
    66906773    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    66916774    break;
     
    66946777
    66956778/* Line 1806 of yacc.c  */
    6696 #line 1405 "parser.yy"
     6779#line 1413 "parser.yy"
    66976780    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    66986781    break;
     
    67016784
    67026785/* Line 1806 of yacc.c  */
    6703 #line 1407 "parser.yy"
     6786#line 1415 "parser.yy"
    67046787    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    67056788    break;
     
    67086791
    67096792/* Line 1806 of yacc.c  */
    6710 #line 1409 "parser.yy"
     6793#line 1417 "parser.yy"
    67116794    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    67126795    break;
     
    67156798
    67166799/* Line 1806 of yacc.c  */
    6717 #line 1411 "parser.yy"
     6800#line 1419 "parser.yy"
    67186801    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    67196802    break;
    67206803
     6804  case 337:
     6805
     6806/* Line 1806 of yacc.c  */
     6807#line 1421 "parser.yy"
     6808    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
     6809    break;
     6810
    67216811  case 338:
    67226812
    67236813/* Line 1806 of yacc.c  */
    6724 #line 1418 "parser.yy"
     6814#line 1423 "parser.yy"
     6815    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
     6816    break;
     6817
     6818  case 340:
     6819
     6820/* Line 1806 of yacc.c  */
     6821#line 1430 "parser.yy"
    67256822    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67266823    break;
    67276824
    6728   case 339:
    6729 
    6730 /* Line 1806 of yacc.c  */
    6731 #line 1420 "parser.yy"
     6825  case 341:
     6826
     6827/* Line 1806 of yacc.c  */
     6828#line 1432 "parser.yy"
    67326829    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67336830    break;
    67346831
    6735   case 340:
    6736 
    6737 /* Line 1806 of yacc.c  */
    6738 #line 1422 "parser.yy"
     6832  case 342:
     6833
     6834/* Line 1806 of yacc.c  */
     6835#line 1434 "parser.yy"
    67396836    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67406837    break;
    67416838
    6742   case 341:
    6743 
    6744 /* Line 1806 of yacc.c  */
    6745 #line 1424 "parser.yy"
     6839  case 343:
     6840
     6841/* Line 1806 of yacc.c  */
     6842#line 1436 "parser.yy"
    67466843    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    67476844    break;
    67486845
    6749   case 343:
    6750 
    6751 /* Line 1806 of yacc.c  */
    6752 #line 1430 "parser.yy"
     6846  case 345:
     6847
     6848/* Line 1806 of yacc.c  */
     6849#line 1442 "parser.yy"
    67536850    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67546851    break;
    67556852
    6756   case 345:
    6757 
    6758 /* Line 1806 of yacc.c  */
    6759 #line 1437 "parser.yy"
     6853  case 347:
     6854
     6855/* Line 1806 of yacc.c  */
     6856#line 1449 "parser.yy"
    67606857    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67616858    break;
    67626859
    6763   case 346:
    6764 
    6765 /* Line 1806 of yacc.c  */
    6766 #line 1439 "parser.yy"
     6860  case 348:
     6861
     6862/* Line 1806 of yacc.c  */
     6863#line 1451 "parser.yy"
    67676864    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67686865    break;
    67696866
    6770   case 347:
    6771 
    6772 /* Line 1806 of yacc.c  */
    6773 #line 1441 "parser.yy"
     6867  case 349:
     6868
     6869/* Line 1806 of yacc.c  */
     6870#line 1453 "parser.yy"
    67746871    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    67756872    break;
    67766873
    6777   case 348:
    6778 
    6779 /* Line 1806 of yacc.c  */
    6780 #line 1446 "parser.yy"
     6874  case 350:
     6875
     6876/* Line 1806 of yacc.c  */
     6877#line 1458 "parser.yy"
    67816878    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    67826879    break;
    67836880
    6784   case 349:
    6785 
    6786 /* Line 1806 of yacc.c  */
    6787 #line 1448 "parser.yy"
     6881  case 351:
     6882
     6883/* Line 1806 of yacc.c  */
     6884#line 1460 "parser.yy"
    67886885    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    67896886    break;
    67906887
    6791   case 350:
    6792 
    6793 /* Line 1806 of yacc.c  */
    6794 #line 1450 "parser.yy"
     6888  case 352:
     6889
     6890/* Line 1806 of yacc.c  */
     6891#line 1462 "parser.yy"
    67956892    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    67966893    break;
    67976894
    6798   case 351:
    6799 
    6800 /* Line 1806 of yacc.c  */
    6801 #line 1452 "parser.yy"
     6895  case 353:
     6896
     6897/* Line 1806 of yacc.c  */
     6898#line 1464 "parser.yy"
    68026899    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    68036900    break;
    68046901
    6805   case 353:
    6806 
    6807 /* Line 1806 of yacc.c  */
    6808 #line 1458 "parser.yy"
     6902  case 355:
     6903
     6904/* Line 1806 of yacc.c  */
     6905#line 1470 "parser.yy"
    68096906    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68106907    break;
    68116908
    6812   case 354:
    6813 
    6814 /* Line 1806 of yacc.c  */
    6815 #line 1460 "parser.yy"
     6909  case 356:
     6910
     6911/* Line 1806 of yacc.c  */
     6912#line 1472 "parser.yy"
    68166913    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68176914    break;
    68186915
    6819   case 355:
    6820 
    6821 /* Line 1806 of yacc.c  */
    6822 #line 1462 "parser.yy"
     6916  case 357:
     6917
     6918/* Line 1806 of yacc.c  */
     6919#line 1474 "parser.yy"
    68236920    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68246921    break;
    68256922
    6826   case 357:
    6827 
    6828 /* Line 1806 of yacc.c  */
    6829 #line 1468 "parser.yy"
     6923  case 359:
     6924
     6925/* Line 1806 of yacc.c  */
     6926#line 1480 "parser.yy"
    68306927    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68316928    break;
    68326929
    6833   case 358:
    6834 
    6835 /* Line 1806 of yacc.c  */
    6836 #line 1470 "parser.yy"
     6930  case 360:
     6931
     6932/* Line 1806 of yacc.c  */
     6933#line 1482 "parser.yy"
    68376934    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68386935    break;
    68396936
    6840   case 360:
    6841 
    6842 /* Line 1806 of yacc.c  */
    6843 #line 1476 "parser.yy"
     6937  case 362:
     6938
     6939/* Line 1806 of yacc.c  */
     6940#line 1488 "parser.yy"
    68446941    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68456942    break;
    68466943
    6847   case 361:
    6848 
    6849 /* Line 1806 of yacc.c  */
    6850 #line 1478 "parser.yy"
     6944  case 363:
     6945
     6946/* Line 1806 of yacc.c  */
     6947#line 1490 "parser.yy"
    68516948    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68526949    break;
    68536950
    6854   case 362:
    6855 
    6856 /* Line 1806 of yacc.c  */
    6857 #line 1480 "parser.yy"
     6951  case 364:
     6952
     6953/* Line 1806 of yacc.c  */
     6954#line 1492 "parser.yy"
    68586955    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68596956    break;
    68606957
    6861   case 363:
    6862 
    6863 /* Line 1806 of yacc.c  */
    6864 #line 1485 "parser.yy"
     6958  case 365:
     6959
     6960/* Line 1806 of yacc.c  */
     6961#line 1497 "parser.yy"
    68656962    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    68666963    break;
    68676964
    6868   case 364:
    6869 
    6870 /* Line 1806 of yacc.c  */
    6871 #line 1487 "parser.yy"
     6965  case 366:
     6966
     6967/* Line 1806 of yacc.c  */
     6968#line 1499 "parser.yy"
    68726969    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68736970    break;
    68746971
    6875   case 365:
    6876 
    6877 /* Line 1806 of yacc.c  */
    6878 #line 1489 "parser.yy"
     6972  case 367:
     6973
     6974/* Line 1806 of yacc.c  */
     6975#line 1501 "parser.yy"
    68796976    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68806977    break;
    68816978
    6882   case 368:
    6883 
    6884 /* Line 1806 of yacc.c  */
    6885 #line 1499 "parser.yy"
     6979  case 370:
     6980
     6981/* Line 1806 of yacc.c  */
     6982#line 1511 "parser.yy"
    68866983    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
    68876984    break;
    68886985
    6889   case 369:
    6890 
    6891 /* Line 1806 of yacc.c  */
    6892 #line 1501 "parser.yy"
     6986  case 371:
     6987
     6988/* Line 1806 of yacc.c  */
     6989#line 1513 "parser.yy"
    68936990    {
    68946991                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    68976994    break;
    68986995
    6899   case 370:
    6900 
    6901 /* Line 1806 of yacc.c  */
    6902 #line 1506 "parser.yy"
     6996  case 372:
     6997
     6998/* Line 1806 of yacc.c  */
     6999#line 1518 "parser.yy"
    69037000    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    69047001    break;
    69057002
    6906   case 371:
    6907 
    6908 /* Line 1806 of yacc.c  */
    6909 #line 1508 "parser.yy"
     7003  case 373:
     7004
     7005/* Line 1806 of yacc.c  */
     7006#line 1520 "parser.yy"
    69107007    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
    69117008    break;
    69127009
    6913   case 372:
    6914 
    6915 /* Line 1806 of yacc.c  */
    6916 #line 1510 "parser.yy"
     7010  case 374:
     7011
     7012/* Line 1806 of yacc.c  */
     7013#line 1522 "parser.yy"
    69177014    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    69187015    break;
    69197016
    6920   case 373:
    6921 
    6922 /* Line 1806 of yacc.c  */
    6923 #line 1512 "parser.yy"
     7017  case 375:
     7018
     7019/* Line 1806 of yacc.c  */
     7020#line 1524 "parser.yy"
    69247021    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    69257022    break;
    69267023
    6927   case 374:
    6928 
    6929 /* Line 1806 of yacc.c  */
    6930 #line 1517 "parser.yy"
     7024  case 376:
     7025
     7026/* Line 1806 of yacc.c  */
     7027#line 1529 "parser.yy"
    69317028    { (yyval.aggKey) = DeclarationNode::Struct; }
    69327029    break;
    69337030
    6934   case 375:
    6935 
    6936 /* Line 1806 of yacc.c  */
    6937 #line 1519 "parser.yy"
     7031  case 377:
     7032
     7033/* Line 1806 of yacc.c  */
     7034#line 1531 "parser.yy"
    69387035    { (yyval.aggKey) = DeclarationNode::Union; }
    69397036    break;
    69407037
    6941   case 376:
    6942 
    6943 /* Line 1806 of yacc.c  */
    6944 #line 1524 "parser.yy"
    6945     { (yyval.decl) = 0; }
    6946     break;
    6947 
    6948   case 377:
    6949 
    6950 /* Line 1806 of yacc.c  */
    6951 #line 1526 "parser.yy"
    6952     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     7038  case 378:
     7039
     7040/* Line 1806 of yacc.c  */
     7041#line 1536 "parser.yy"
     7042    { (yyval.decl) = nullptr; }
    69537043    break;
    69547044
     
    69567046
    69577047/* Line 1806 of yacc.c  */
    6958 #line 1532 "parser.yy"
     7048#line 1538 "parser.yy"
     7049    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     7050    break;
     7051
     7052  case 381:
     7053
     7054/* Line 1806 of yacc.c  */
     7055#line 1544 "parser.yy"
    69597056    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    69607057    break;
    69617058
    6962   case 381:
    6963 
    6964 /* Line 1806 of yacc.c  */
    6965 #line 1535 "parser.yy"
     7059  case 383:
     7060
     7061/* Line 1806 of yacc.c  */
     7062#line 1547 "parser.yy"
    69667063    {   // mark all fields in list
    69677064                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    69717068    break;
    69727069
    6973   case 383:
    6974 
    6975 /* Line 1806 of yacc.c  */
    6976 #line 1545 "parser.yy"
     7070  case 385:
     7071
     7072/* Line 1806 of yacc.c  */
     7073#line 1557 "parser.yy"
    69777074    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    69787075    break;
    69797076
    6980   case 384:
    6981 
    6982 /* Line 1806 of yacc.c  */
    6983 #line 1547 "parser.yy"
     7077  case 386:
     7078
     7079/* Line 1806 of yacc.c  */
     7080#line 1559 "parser.yy"
    69847081    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    69857082    break;
    69867083
    6987   case 385:
    6988 
    6989 /* Line 1806 of yacc.c  */
    6990 #line 1549 "parser.yy"
     7084  case 387:
     7085
     7086/* Line 1806 of yacc.c  */
     7087#line 1561 "parser.yy"
    69917088    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    69927089    break;
    69937090
    6994   case 386:
    6995 
    6996 /* Line 1806 of yacc.c  */
    6997 #line 1554 "parser.yy"
     7091  case 388:
     7092
     7093/* Line 1806 of yacc.c  */
     7094#line 1566 "parser.yy"
    69987095    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    69997096    break;
    70007097
    7001   case 387:
    7002 
    7003 /* Line 1806 of yacc.c  */
    7004 #line 1556 "parser.yy"
     7098  case 389:
     7099
     7100/* Line 1806 of yacc.c  */
     7101#line 1568 "parser.yy"
    70057102    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    70067103    break;
    70077104
    7008   case 388:
    7009 
    7010 /* Line 1806 of yacc.c  */
    7011 #line 1561 "parser.yy"
     7105  case 390:
     7106
     7107/* Line 1806 of yacc.c  */
     7108#line 1573 "parser.yy"
    70127109    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    70137110    break;
    70147111
    7015   case 389:
    7016 
    7017 /* Line 1806 of yacc.c  */
    7018 #line 1563 "parser.yy"
     7112  case 391:
     7113
     7114/* Line 1806 of yacc.c  */
     7115#line 1575 "parser.yy"
    70197116    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    70207117    break;
    70217118
    7022   case 390:
    7023 
    7024 /* Line 1806 of yacc.c  */
    7025 #line 1566 "parser.yy"
     7119  case 392:
     7120
     7121/* Line 1806 of yacc.c  */
     7122#line 1578 "parser.yy"
    70267123    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70277124    break;
    70287125
    7029   case 391:
    7030 
    7031 /* Line 1806 of yacc.c  */
    7032 #line 1569 "parser.yy"
     7126  case 393:
     7127
     7128/* Line 1806 of yacc.c  */
     7129#line 1581 "parser.yy"
    70337130    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70347131    break;
    70357132
    7036   case 393:
    7037 
    7038 /* Line 1806 of yacc.c  */
    7039 #line 1575 "parser.yy"
    7040     { (yyval.en) = 0; }
    7041     break;
    7042 
    7043   case 394:
    7044 
    7045 /* Line 1806 of yacc.c  */
    7046 #line 1577 "parser.yy"
     7133  case 395:
     7134
     7135/* Line 1806 of yacc.c  */
     7136#line 1587 "parser.yy"
     7137    { (yyval.en) = nullptr; }
     7138    break;
     7139
     7140  case 396:
     7141
     7142/* Line 1806 of yacc.c  */
     7143#line 1589 "parser.yy"
    70477144    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    70487145    break;
    70497146
    7050   case 395:
    7051 
    7052 /* Line 1806 of yacc.c  */
    7053 #line 1582 "parser.yy"
     7147  case 397:
     7148
     7149/* Line 1806 of yacc.c  */
     7150#line 1594 "parser.yy"
    70547151    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    70557152    break;
    70567153
    7057   case 397:
    7058 
    7059 /* Line 1806 of yacc.c  */
    7060 #line 1591 "parser.yy"
     7154  case 399:
     7155
     7156/* Line 1806 of yacc.c  */
     7157#line 1603 "parser.yy"
    70617158    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
    70627159    break;
    70637160
    7064   case 398:
    7065 
    7066 /* Line 1806 of yacc.c  */
    7067 #line 1593 "parser.yy"
     7161  case 400:
     7162
     7163/* Line 1806 of yacc.c  */
     7164#line 1605 "parser.yy"
    70687165    {
    70697166                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    70727169    break;
    70737170
    7074   case 399:
    7075 
    7076 /* Line 1806 of yacc.c  */
    7077 #line 1598 "parser.yy"
     7171  case 401:
     7172
     7173/* Line 1806 of yacc.c  */
     7174#line 1610 "parser.yy"
    70787175    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    70797176    break;
    70807177
    7081   case 400:
    7082 
    7083 /* Line 1806 of yacc.c  */
    7084 #line 1600 "parser.yy"
     7178  case 402:
     7179
     7180/* Line 1806 of yacc.c  */
     7181#line 1612 "parser.yy"
    70857182    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    70867183    break;
    70877184
    7088   case 401:
    7089 
    7090 /* Line 1806 of yacc.c  */
    7091 #line 1605 "parser.yy"
     7185  case 403:
     7186
     7187/* Line 1806 of yacc.c  */
     7188#line 1617 "parser.yy"
    70927189    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    70937190    break;
    70947191
    7095   case 402:
    7096 
    7097 /* Line 1806 of yacc.c  */
    7098 #line 1607 "parser.yy"
     7192  case 404:
     7193
     7194/* Line 1806 of yacc.c  */
     7195#line 1619 "parser.yy"
    70997196    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71007197    break;
    71017198
    7102   case 403:
    7103 
    7104 /* Line 1806 of yacc.c  */
    7105 #line 1612 "parser.yy"
    7106     { (yyval.en) = 0; }
    7107     break;
    7108 
    7109   case 404:
    7110 
    7111 /* Line 1806 of yacc.c  */
    7112 #line 1614 "parser.yy"
     7199  case 405:
     7200
     7201/* Line 1806 of yacc.c  */
     7202#line 1624 "parser.yy"
     7203    { (yyval.en) = nullptr; }
     7204    break;
     7205
     7206  case 406:
     7207
     7208/* Line 1806 of yacc.c  */
     7209#line 1626 "parser.yy"
    71137210    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71147211    break;
    71157212
    7116   case 405:
    7117 
    7118 /* Line 1806 of yacc.c  */
    7119 #line 1621 "parser.yy"
    7120     { (yyval.decl) = 0; }
    7121     break;
    7122 
    7123   case 409:
    7124 
    7125 /* Line 1806 of yacc.c  */
    7126 #line 1629 "parser.yy"
    7127     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7128     break;
    7129 
    7130   case 410:
    7131 
    7132 /* Line 1806 of yacc.c  */
    7133 #line 1631 "parser.yy"
    7134     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7213  case 407:
     7214
     7215/* Line 1806 of yacc.c  */
     7216#line 1633 "parser.yy"
     7217    { (yyval.decl) = nullptr; }
    71357218    break;
    71367219
    71377220  case 411:
    7138 
    7139 /* Line 1806 of yacc.c  */
    7140 #line 1633 "parser.yy"
    7141     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7142     break;
    7143 
    7144   case 413:
    71457221
    71467222/* Line 1806 of yacc.c  */
     
    71497225    break;
    71507226
    7151   case 414:
     7227  case 412:
    71527228
    71537229/* Line 1806 of yacc.c  */
    71547230#line 1643 "parser.yy"
     7231    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7232    break;
     7233
     7234  case 413:
     7235
     7236/* Line 1806 of yacc.c  */
     7237#line 1645 "parser.yy"
     7238    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7239    break;
     7240
     7241  case 415:
     7242
     7243/* Line 1806 of yacc.c  */
     7244#line 1653 "parser.yy"
    71557245    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71567246    break;
    71577247
    7158   case 415:
    7159 
    7160 /* Line 1806 of yacc.c  */
    7161 #line 1645 "parser.yy"
     7248  case 416:
     7249
     7250/* Line 1806 of yacc.c  */
     7251#line 1655 "parser.yy"
     7252    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7253    break;
     7254
     7255  case 417:
     7256
     7257/* Line 1806 of yacc.c  */
     7258#line 1657 "parser.yy"
    71627259    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    71637260    break;
    71647261
    7165   case 417:
    7166 
    7167 /* Line 1806 of yacc.c  */
    7168 #line 1651 "parser.yy"
     7262  case 419:
     7263
     7264/* Line 1806 of yacc.c  */
     7265#line 1663 "parser.yy"
    71697266    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71707267    break;
    71717268
    7172   case 418:
    7173 
    7174 /* Line 1806 of yacc.c  */
    7175 #line 1656 "parser.yy"
    7176     { (yyval.decl) = 0; }
    7177     break;
    7178 
    7179   case 421:
    7180 
    7181 /* Line 1806 of yacc.c  */
    7182 #line 1663 "parser.yy"
     7269  case 420:
     7270
     7271/* Line 1806 of yacc.c  */
     7272#line 1668 "parser.yy"
     7273    { (yyval.decl) = nullptr; }
     7274    break;
     7275
     7276  case 423:
     7277
     7278/* Line 1806 of yacc.c  */
     7279#line 1675 "parser.yy"
    71837280    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71847281    break;
    71857282
    7186   case 424:
    7187 
    7188 /* Line 1806 of yacc.c  */
    7189 #line 1670 "parser.yy"
     7283  case 426:
     7284
     7285/* Line 1806 of yacc.c  */
     7286#line 1682 "parser.yy"
    71907287    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71917288    break;
    71927289
    7193   case 425:
    7194 
    7195 /* Line 1806 of yacc.c  */
    7196 #line 1672 "parser.yy"
     7290  case 427:
     7291
     7292/* Line 1806 of yacc.c  */
     7293#line 1684 "parser.yy"
    71977294    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71987295    break;
    71997296
    7200   case 427:
    7201 
    7202 /* Line 1806 of yacc.c  */
    7203 #line 1681 "parser.yy"
     7297  case 429:
     7298
     7299/* Line 1806 of yacc.c  */
     7300#line 1693 "parser.yy"
    72047301    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72057302    break;
    72067303
    7207   case 428:
    7208 
    7209 /* Line 1806 of yacc.c  */
    7210 #line 1684 "parser.yy"
     7304  case 430:
     7305
     7306/* Line 1806 of yacc.c  */
     7307#line 1696 "parser.yy"
    72117308    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72127309    break;
    72137310
    7214   case 429:
    7215 
    7216 /* Line 1806 of yacc.c  */
    7217 #line 1686 "parser.yy"
     7311  case 431:
     7312
     7313/* Line 1806 of yacc.c  */
     7314#line 1698 "parser.yy"
    72187315    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    72197316    break;
    72207317
    7221   case 434:
    7222 
    7223 /* Line 1806 of yacc.c  */
    7224 #line 1696 "parser.yy"
     7318  case 436:
     7319
     7320/* Line 1806 of yacc.c  */
     7321#line 1708 "parser.yy"
    72257322    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72267323    break;
    72277324
    7228   case 436:
    7229 
    7230 /* Line 1806 of yacc.c  */
    7231 #line 1702 "parser.yy"
     7325  case 438:
     7326
     7327/* Line 1806 of yacc.c  */
     7328#line 1714 "parser.yy"
    72327329    {
    72337330                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7234                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     7331                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr );
    72357332                }
    72367333    break;
    72377334
    7238   case 437:
    7239 
    7240 /* Line 1806 of yacc.c  */
    7241 #line 1707 "parser.yy"
     7335  case 439:
     7336
     7337/* Line 1806 of yacc.c  */
     7338#line 1719 "parser.yy"
    72427339    {
    72437340                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7244                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     7341                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr );
    72457342                }
    72467343    break;
    72477344
    7248   case 439:
    7249 
    7250 /* Line 1806 of yacc.c  */
    7251 #line 1716 "parser.yy"
     7345  case 441:
     7346
     7347/* Line 1806 of yacc.c  */
     7348#line 1728 "parser.yy"
    72527349    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72537350    break;
    72547351
    7255   case 440:
    7256 
    7257 /* Line 1806 of yacc.c  */
    7258 #line 1725 "parser.yy"
     7352  case 442:
     7353
     7354/* Line 1806 of yacc.c  */
     7355#line 1737 "parser.yy"
    72597356    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    72607357    break;
    72617358
    7262   case 441:
    7263 
    7264 /* Line 1806 of yacc.c  */
    7265 #line 1727 "parser.yy"
     7359  case 443:
     7360
     7361/* Line 1806 of yacc.c  */
     7362#line 1739 "parser.yy"
    72667363    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    72677364    break;
    72687365
    7269   case 453:
    7270 
    7271 /* Line 1806 of yacc.c  */
    7272 #line 1752 "parser.yy"
     7366  case 455:
     7367
     7368/* Line 1806 of yacc.c  */
     7369#line 1764 "parser.yy"
    72737370    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72747371    break;
    72757372
    7276   case 457:
    7277 
    7278 /* Line 1806 of yacc.c  */
    7279 #line 1760 "parser.yy"
     7373  case 459:
     7374
     7375/* Line 1806 of yacc.c  */
     7376#line 1772 "parser.yy"
    72807377    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72817378    break;
    72827379
    7283   case 458:
    7284 
    7285 /* Line 1806 of yacc.c  */
    7286 #line 1765 "parser.yy"
    7287     { (yyval.in) = 0; }
    7288     break;
    7289 
    7290   case 459:
    7291 
    7292 /* Line 1806 of yacc.c  */
    7293 #line 1767 "parser.yy"
     7380  case 460:
     7381
     7382/* Line 1806 of yacc.c  */
     7383#line 1777 "parser.yy"
     7384    { (yyval.in) = nullptr; }
     7385    break;
     7386
     7387  case 461:
     7388
     7389/* Line 1806 of yacc.c  */
     7390#line 1779 "parser.yy"
    72947391    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    72957392    break;
    72967393
    7297   case 460:
    7298 
    7299 /* Line 1806 of yacc.c  */
    7300 #line 1769 "parser.yy"
     7394  case 462:
     7395
     7396/* Line 1806 of yacc.c  */
     7397#line 1781 "parser.yy"
    73017398    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    73027399    break;
    73037400
    7304   case 461:
    7305 
    7306 /* Line 1806 of yacc.c  */
    7307 #line 1773 "parser.yy"
     7401  case 463:
     7402
     7403/* Line 1806 of yacc.c  */
     7404#line 1785 "parser.yy"
    73087405    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    73097406    break;
    73107407
    7311   case 462:
    7312 
    7313 /* Line 1806 of yacc.c  */
    7314 #line 1774 "parser.yy"
     7408  case 464:
     7409
     7410/* Line 1806 of yacc.c  */
     7411#line 1786 "parser.yy"
    73157412    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    73167413    break;
    73177414
    7318   case 463:
    7319 
    7320 /* Line 1806 of yacc.c  */
    7321 #line 1779 "parser.yy"
    7322     { (yyval.in) = 0; }
    7323     break;
    7324 
    73257415  case 465:
    73267416
    73277417/* Line 1806 of yacc.c  */
    7328 #line 1781 "parser.yy"
     7418#line 1791 "parser.yy"
     7419    { (yyval.in) = nullptr; }
     7420    break;
     7421
     7422  case 467:
     7423
     7424/* Line 1806 of yacc.c  */
     7425#line 1793 "parser.yy"
    73297426    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    73307427    break;
    73317428
    7332   case 466:
    7333 
    7334 /* Line 1806 of yacc.c  */
    7335 #line 1782 "parser.yy"
     7429  case 468:
     7430
     7431/* Line 1806 of yacc.c  */
     7432#line 1794 "parser.yy"
    73367433    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    73377434    break;
    73387435
    7339   case 467:
    7340 
    7341 /* Line 1806 of yacc.c  */
    7342 #line 1784 "parser.yy"
     7436  case 469:
     7437
     7438/* Line 1806 of yacc.c  */
     7439#line 1796 "parser.yy"
    73437440    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    73447441    break;
    73457442
    7346   case 469:
    7347 
    7348 /* Line 1806 of yacc.c  */
    7349 #line 1800 "parser.yy"
     7443  case 471:
     7444
     7445/* Line 1806 of yacc.c  */
     7446#line 1812 "parser.yy"
    73507447    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    73517448    break;
    73527449
    7353   case 471:
    7354 
    7355 /* Line 1806 of yacc.c  */
    7356 #line 1806 "parser.yy"
     7450  case 473:
     7451
     7452/* Line 1806 of yacc.c  */
     7453#line 1818 "parser.yy"
    73577454    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    73587455    break;
    73597456
    7360   case 472:
    7361 
    7362 /* Line 1806 of yacc.c  */
    7363 #line 1812 "parser.yy"
     7457  case 474:
     7458
     7459/* Line 1806 of yacc.c  */
     7460#line 1824 "parser.yy"
    73647461    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    73657462    break;
    73667463
    7367   case 473:
    7368 
    7369 /* Line 1806 of yacc.c  */
    7370 #line 1815 "parser.yy"
     7464  case 475:
     7465
     7466/* Line 1806 of yacc.c  */
     7467#line 1827 "parser.yy"
    73717468    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    73727469    break;
    73737470
    7374   case 474:
    7375 
    7376 /* Line 1806 of yacc.c  */
    7377 #line 1817 "parser.yy"
     7471  case 476:
     7472
     7473/* Line 1806 of yacc.c  */
     7474#line 1829 "parser.yy"
    73787475    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    73797476    break;
    73807477
    7381   case 475:
    7382 
    7383 /* Line 1806 of yacc.c  */
    7384 #line 1819 "parser.yy"
     7478  case 477:
     7479
     7480/* Line 1806 of yacc.c  */
     7481#line 1831 "parser.yy"
    73857482    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    73867483    break;
    73877484
    7388   case 476:
    7389 
    7390 /* Line 1806 of yacc.c  */
    7391 #line 1821 "parser.yy"
     7485  case 478:
     7486
     7487/* Line 1806 of yacc.c  */
     7488#line 1833 "parser.yy"
    73927489    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    73937490    break;
    73947491
    7395   case 478:
    7396 
    7397 /* Line 1806 of yacc.c  */
    7398 #line 1845 "parser.yy"
     7492  case 480:
     7493
     7494/* Line 1806 of yacc.c  */
     7495#line 1857 "parser.yy"
    73997496    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74007497    break;
    74017498
    7402   case 479:
    7403 
    7404 /* Line 1806 of yacc.c  */
    7405 #line 1847 "parser.yy"
     7499  case 481:
     7500
     7501/* Line 1806 of yacc.c  */
     7502#line 1859 "parser.yy"
    74067503    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74077504    break;
    74087505
    7409   case 480:
    7410 
    7411 /* Line 1806 of yacc.c  */
    7412 #line 1849 "parser.yy"
     7506  case 482:
     7507
     7508/* Line 1806 of yacc.c  */
     7509#line 1861 "parser.yy"
    74137510    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    74147511    break;
    74157512
    7416   case 482:
    7417 
    7418 /* Line 1806 of yacc.c  */
    7419 #line 1855 "parser.yy"
     7513  case 484:
     7514
     7515/* Line 1806 of yacc.c  */
     7516#line 1867 "parser.yy"
    74207517    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74217518    break;
    74227519
    7423   case 483:
    7424 
    7425 /* Line 1806 of yacc.c  */
    7426 #line 1857 "parser.yy"
     7520  case 485:
     7521
     7522/* Line 1806 of yacc.c  */
     7523#line 1869 "parser.yy"
    74277524    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74287525    break;
    74297526
    7430   case 484:
    7431 
    7432 /* Line 1806 of yacc.c  */
    7433 #line 1862 "parser.yy"
     7527  case 486:
     7528
     7529/* Line 1806 of yacc.c  */
     7530#line 1874 "parser.yy"
    74347531    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    74357532    break;
    74367533
    7437   case 486:
    7438 
    7439 /* Line 1806 of yacc.c  */
    7440 #line 1868 "parser.yy"
     7534  case 488:
     7535
     7536/* Line 1806 of yacc.c  */
     7537#line 1880 "parser.yy"
    74417538    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    74427539    break;
    74437540
    7444   case 487:
    7445 
    7446 /* Line 1806 of yacc.c  */
    7447 #line 1873 "parser.yy"
     7541  case 489:
     7542
     7543/* Line 1806 of yacc.c  */
     7544#line 1885 "parser.yy"
    74487545    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    74497546    break;
    74507547
    7451   case 488:
    7452 
    7453 /* Line 1806 of yacc.c  */
    7454 #line 1875 "parser.yy"
     7548  case 490:
     7549
     7550/* Line 1806 of yacc.c  */
     7551#line 1887 "parser.yy"
    74557552    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    74567553    break;
    74577554
    7458   case 490:
    7459 
    7460 /* Line 1806 of yacc.c  */
    7461 #line 1881 "parser.yy"
     7555  case 492:
     7556
     7557/* Line 1806 of yacc.c  */
     7558#line 1893 "parser.yy"
    74627559    { (yyval.tclass) = DeclarationNode::Otype; }
    74637560    break;
    74647561
    7465   case 491:
    7466 
    7467 /* Line 1806 of yacc.c  */
    7468 #line 1883 "parser.yy"
     7562  case 493:
     7563
     7564/* Line 1806 of yacc.c  */
     7565#line 1895 "parser.yy"
    74697566    { (yyval.tclass) = DeclarationNode::Ftype; }
    74707567    break;
    74717568
    7472   case 492:
    7473 
    7474 /* Line 1806 of yacc.c  */
    7475 #line 1885 "parser.yy"
     7569  case 494:
     7570
     7571/* Line 1806 of yacc.c  */
     7572#line 1897 "parser.yy"
    74767573    { (yyval.tclass) = DeclarationNode::Dtype; }
    74777574    break;
    74787575
    7479   case 493:
    7480 
    7481 /* Line 1806 of yacc.c  */
    7482 #line 1890 "parser.yy"
    7483     { (yyval.decl) = 0; }
    7484     break;
    7485 
    7486   case 494:
    7487 
    7488 /* Line 1806 of yacc.c  */
    7489 #line 1892 "parser.yy"
    7490     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7491     break;
    7492 
    74937576  case 495:
    74947577
    74957578/* Line 1806 of yacc.c  */
    7496 #line 1897 "parser.yy"
     7579#line 1902 "parser.yy"
     7580    { (yyval.decl) = nullptr; }
     7581    break;
     7582
     7583  case 496:
     7584
     7585/* Line 1806 of yacc.c  */
     7586#line 1904 "parser.yy"
     7587    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     7588    break;
     7589
     7590  case 497:
     7591
     7592/* Line 1806 of yacc.c  */
     7593#line 1909 "parser.yy"
    74977594    {
    74987595                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75017598    break;
    75027599
    7503   case 496:
    7504 
    7505 /* Line 1806 of yacc.c  */
    7506 #line 1902 "parser.yy"
     7600  case 498:
     7601
     7602/* Line 1806 of yacc.c  */
     7603#line 1914 "parser.yy"
    75077604    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    75087605    break;
    75097606
    7510   case 497:
    7511 
    7512 /* Line 1806 of yacc.c  */
    7513 #line 1904 "parser.yy"
    7514     { (yyval.decl) = 0; }
    7515     break;
    7516 
    7517   case 498:
    7518 
    7519 /* Line 1806 of yacc.c  */
    7520 #line 1909 "parser.yy"
     7607  case 499:
     7608
     7609/* Line 1806 of yacc.c  */
     7610#line 1916 "parser.yy"
     7611    { (yyval.decl) = nullptr; }
     7612    break;
     7613
     7614  case 500:
     7615
     7616/* Line 1806 of yacc.c  */
     7617#line 1921 "parser.yy"
    75217618    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    75227619    break;
    75237620
    7524   case 500:
    7525 
    7526 /* Line 1806 of yacc.c  */
    7527 #line 1912 "parser.yy"
     7621  case 502:
     7622
     7623/* Line 1806 of yacc.c  */
     7624#line 1924 "parser.yy"
    75287625    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    75297626    break;
    75307627
    7531   case 501:
    7532 
    7533 /* Line 1806 of yacc.c  */
    7534 #line 1914 "parser.yy"
     7628  case 503:
     7629
     7630/* Line 1806 of yacc.c  */
     7631#line 1926 "parser.yy"
    75357632    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    75367633    break;
    75377634
    7538   case 502:
    7539 
    7540 /* Line 1806 of yacc.c  */
    7541 #line 1919 "parser.yy"
     7635  case 504:
     7636
     7637/* Line 1806 of yacc.c  */
     7638#line 1931 "parser.yy"
    75427639    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    75437640    break;
    75447641
    7545   case 503:
    7546 
    7547 /* Line 1806 of yacc.c  */
    7548 #line 1921 "parser.yy"
     7642  case 505:
     7643
     7644/* Line 1806 of yacc.c  */
     7645#line 1933 "parser.yy"
    75497646    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    75507647    break;
    75517648
    7552   case 504:
    7553 
    7554 /* Line 1806 of yacc.c  */
    7555 #line 1923 "parser.yy"
     7649  case 506:
     7650
     7651/* Line 1806 of yacc.c  */
     7652#line 1935 "parser.yy"
    75567653    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    75577654    break;
    75587655
    7559   case 505:
    7560 
    7561 /* Line 1806 of yacc.c  */
    7562 #line 1928 "parser.yy"
     7656  case 507:
     7657
     7658/* Line 1806 of yacc.c  */
     7659#line 1940 "parser.yy"
    75637660    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    75647661    break;
    75657662
    7566   case 506:
    7567 
    7568 /* Line 1806 of yacc.c  */
    7569 #line 1930 "parser.yy"
     7663  case 508:
     7664
     7665/* Line 1806 of yacc.c  */
     7666#line 1942 "parser.yy"
    75707667    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    75717668    break;
    75727669
    7573   case 507:
    7574 
    7575 /* Line 1806 of yacc.c  */
    7576 #line 1935 "parser.yy"
     7670  case 509:
     7671
     7672/* Line 1806 of yacc.c  */
     7673#line 1947 "parser.yy"
    75777674    {
    75787675                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    75817678    break;
    75827679
    7583   case 508:
    7584 
    7585 /* Line 1806 of yacc.c  */
    7586 #line 1940 "parser.yy"
     7680  case 510:
     7681
     7682/* Line 1806 of yacc.c  */
     7683#line 1952 "parser.yy"
    75877684    {
    75887685                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    75917688    break;
    75927689
    7593   case 509:
    7594 
    7595 /* Line 1806 of yacc.c  */
    7596 #line 1948 "parser.yy"
     7690  case 511:
     7691
     7692/* Line 1806 of yacc.c  */
     7693#line 1960 "parser.yy"
    75977694    {
    75987695                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76017698    break;
    76027699
    7603   case 510:
    7604 
    7605 /* Line 1806 of yacc.c  */
    7606 #line 1953 "parser.yy"
     7700  case 512:
     7701
     7702/* Line 1806 of yacc.c  */
     7703#line 1965 "parser.yy"
    76077704    {
    76087705                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    76117708    break;
    76127709
    7613   case 511:
    7614 
    7615 /* Line 1806 of yacc.c  */
    7616 #line 1958 "parser.yy"
     7710  case 513:
     7711
     7712/* Line 1806 of yacc.c  */
     7713#line 1970 "parser.yy"
    76177714    {
    76187715                        typedefTable.leaveTrait();
     
    76227719    break;
    76237720
    7624   case 513:
    7625 
    7626 /* Line 1806 of yacc.c  */
    7627 #line 1968 "parser.yy"
     7721  case 515:
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1980 "parser.yy"
    76287725    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    76297726    break;
    76307727
    7631   case 516:
    7632 
    7633 /* Line 1806 of yacc.c  */
    7634 #line 1978 "parser.yy"
     7728  case 518:
     7729
     7730/* Line 1806 of yacc.c  */
     7731#line 1990 "parser.yy"
    76357732    {
    76367733                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76397736    break;
    76407737
    7641   case 517:
    7642 
    7643 /* Line 1806 of yacc.c  */
    7644 #line 1983 "parser.yy"
     7738  case 519:
     7739
     7740/* Line 1806 of yacc.c  */
     7741#line 1995 "parser.yy"
    76457742    {
    76467743                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76497746    break;
    76507747
    7651   case 518:
    7652 
    7653 /* Line 1806 of yacc.c  */
    7654 #line 1988 "parser.yy"
     7748  case 520:
     7749
     7750/* Line 1806 of yacc.c  */
     7751#line 2000 "parser.yy"
    76557752    {
    76567753                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    76597756    break;
    76607757
    7661   case 519:
    7662 
    7663 /* Line 1806 of yacc.c  */
    7664 #line 1996 "parser.yy"
     7758  case 521:
     7759
     7760/* Line 1806 of yacc.c  */
     7761#line 2008 "parser.yy"
    76657762    {
    76667763                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76697766    break;
    76707767
    7671   case 520:
    7672 
    7673 /* Line 1806 of yacc.c  */
    7674 #line 2001 "parser.yy"
     7768  case 522:
     7769
     7770/* Line 1806 of yacc.c  */
     7771#line 2013 "parser.yy"
    76757772    {
    76767773                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76797776    break;
    76807777
    7681   case 521:
    7682 
    7683 /* Line 1806 of yacc.c  */
    7684 #line 2011 "parser.yy"
     7778  case 523:
     7779
     7780/* Line 1806 of yacc.c  */
     7781#line 2023 "parser.yy"
    76857782    {}
    76867783    break;
    76877784
    7688   case 522:
    7689 
    7690 /* Line 1806 of yacc.c  */
    7691 #line 2013 "parser.yy"
    7692     { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
    7693     break;
    7694 
    76957785  case 524:
    76967786
    76977787/* Line 1806 of yacc.c  */
    7698 #line 2019 "parser.yy"
    7699     { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    7700     break;
    7701 
    7702   case 525:
    7703 
    7704 /* Line 1806 of yacc.c  */
    7705 #line 2024 "parser.yy"
    7706     { (yyval.decl) = 0; }
    7707     break;
    7708 
    7709   case 529:
    7710 
    7711 /* Line 1806 of yacc.c  */
    7712 #line 2032 "parser.yy"
     7788#line 2025 "parser.yy"
     7789    { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);       }
     7790    break;
     7791
     7792  case 526:
     7793
     7794/* Line 1806 of yacc.c  */
     7795#line 2031 "parser.yy"
     7796    { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7797    break;
     7798
     7799  case 527:
     7800
     7801/* Line 1806 of yacc.c  */
     7802#line 2036 "parser.yy"
     7803    { (yyval.decl) = nullptr; }
     7804    break;
     7805
     7806  case 531:
     7807
     7808/* Line 1806 of yacc.c  */
     7809#line 2044 "parser.yy"
    77137810    {}
    77147811    break;
    77157812
    7716   case 530:
    7717 
    7718 /* Line 1806 of yacc.c  */
    7719 #line 2034 "parser.yy"
     7813  case 532:
     7814
     7815/* Line 1806 of yacc.c  */
     7816#line 2046 "parser.yy"
    77207817    {
    77217818                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     
    77247821    break;
    77257822
    7726   case 531:
    7727 
    7728 /* Line 1806 of yacc.c  */
    7729 #line 2039 "parser.yy"
     7823  case 533:
     7824
     7825/* Line 1806 of yacc.c  */
     7826#line 2051 "parser.yy"
    77307827    {
    77317828                        linkage = linkageStack.top();
     
    77357832    break;
    77367833
    7737   case 532:
    7738 
    7739 /* Line 1806 of yacc.c  */
    7740 #line 2045 "parser.yy"
     7834  case 534:
     7835
     7836/* Line 1806 of yacc.c  */
     7837#line 2057 "parser.yy"
    77417838    {   // mark all fields in list
    77427839                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    77467843    break;
    77477844
    7748   case 534:
    7749 
    7750 /* Line 1806 of yacc.c  */
    7751 #line 2060 "parser.yy"
     7845  case 536:
     7846
     7847/* Line 1806 of yacc.c  */
     7848#line 2072 "parser.yy"
    77527849    {
    77537850                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77577854    break;
    77587855
    7759   case 535:
    7760 
    7761 /* Line 1806 of yacc.c  */
    7762 #line 2066 "parser.yy"
     7856  case 537:
     7857
     7858/* Line 1806 of yacc.c  */
     7859#line 2078 "parser.yy"
    77637860    {
    77647861                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77687865    break;
    77697866
    7770   case 536:
    7771 
    7772 /* Line 1806 of yacc.c  */
    7773 #line 2075 "parser.yy"
     7867  case 538:
     7868
     7869/* Line 1806 of yacc.c  */
     7870#line 2087 "parser.yy"
    77747871    {
    77757872                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77797876    break;
    77807877
    7781   case 537:
    7782 
    7783 /* Line 1806 of yacc.c  */
    7784 #line 2081 "parser.yy"
     7878  case 539:
     7879
     7880/* Line 1806 of yacc.c  */
     7881#line 2093 "parser.yy"
    77857882    {
    77867883                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77907887    break;
    77917888
    7792   case 538:
    7793 
    7794 /* Line 1806 of yacc.c  */
    7795 #line 2087 "parser.yy"
     7889  case 540:
     7890
     7891/* Line 1806 of yacc.c  */
     7892#line 2099 "parser.yy"
    77967893    {
    77977894                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78017898    break;
    78027899
    7803   case 539:
    7804 
    7805 /* Line 1806 of yacc.c  */
    7806 #line 2093 "parser.yy"
     7900  case 541:
     7901
     7902/* Line 1806 of yacc.c  */
     7903#line 2105 "parser.yy"
    78077904    {
    78087905                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78127909    break;
    78137910
    7814   case 540:
    7815 
    7816 /* Line 1806 of yacc.c  */
    7817 #line 2099 "parser.yy"
     7911  case 542:
     7912
     7913/* Line 1806 of yacc.c  */
     7914#line 2111 "parser.yy"
    78187915    {
    78197916                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78237920    break;
    78247921
    7825   case 541:
    7826 
    7827 /* Line 1806 of yacc.c  */
    7828 #line 2107 "parser.yy"
     7922  case 543:
     7923
     7924/* Line 1806 of yacc.c  */
     7925#line 2119 "parser.yy"
    78297926    {
    78307927                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78347931    break;
    78357932
    7836   case 542:
    7837 
    7838 /* Line 1806 of yacc.c  */
    7839 #line 2113 "parser.yy"
     7933  case 544:
     7934
     7935/* Line 1806 of yacc.c  */
     7936#line 2125 "parser.yy"
    78407937    {
    78417938                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78457942    break;
    78467943
    7847   case 543:
    7848 
    7849 /* Line 1806 of yacc.c  */
    7850 #line 2121 "parser.yy"
     7944  case 545:
     7945
     7946/* Line 1806 of yacc.c  */
     7947#line 2133 "parser.yy"
    78517948    {
    78527949                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78567953    break;
    78577954
    7858   case 544:
    7859 
    7860 /* Line 1806 of yacc.c  */
    7861 #line 2127 "parser.yy"
     7955  case 546:
     7956
     7957/* Line 1806 of yacc.c  */
     7958#line 2139 "parser.yy"
    78627959    {
    78637960                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78677964    break;
    78687965
    7869   case 548:
    7870 
    7871 /* Line 1806 of yacc.c  */
    7872 #line 2142 "parser.yy"
     7966  case 550:
     7967
     7968/* Line 1806 of yacc.c  */
     7969#line 2154 "parser.yy"
    78737970    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    78747971    break;
    78757972
    7876   case 550:
    7877 
    7878 /* Line 1806 of yacc.c  */
    7879 #line 2147 "parser.yy"
    7880     { delete (yyvsp[(3) - (5)].str); }
    7881     break;
    7882 
    78837973  case 551:
    78847974
    78857975/* Line 1806 of yacc.c  */
    7886 #line 2152 "parser.yy"
    7887     { (yyval.decl) = 0; }
    7888     break;
    7889 
    7890   case 554:
    7891 
    7892 /* Line 1806 of yacc.c  */
    78937976#line 2159 "parser.yy"
     7977    { (yyval.constant) = nullptr; }
     7978    break;
     7979
     7980  case 552:
     7981
     7982/* Line 1806 of yacc.c  */
     7983#line 2161 "parser.yy"
     7984    { (yyval.constant) = (yyvsp[(3) - (5)].constant); }
     7985    break;
     7986
     7987  case 553:
     7988
     7989/* Line 1806 of yacc.c  */
     7990#line 2166 "parser.yy"
     7991    { (yyval.decl) = nullptr; }
     7992    break;
     7993
     7994  case 556:
     7995
     7996/* Line 1806 of yacc.c  */
     7997#line 2173 "parser.yy"
    78947998    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    78957999    break;
    78968000
    7897   case 555:
    7898 
    7899 /* Line 1806 of yacc.c  */
    7900 #line 2165 "parser.yy"
    7901     { (yyval.decl) = 0; }
    7902     break;
    7903 
    7904   case 560:
    7905 
    7906 /* Line 1806 of yacc.c  */
    7907 #line 2176 "parser.yy"
     8001  case 557:
     8002
     8003/* Line 1806 of yacc.c  */
     8004#line 2179 "parser.yy"
     8005    { (yyval.decl) = nullptr; }
     8006    break;
     8007
     8008  case 562:
     8009
     8010/* Line 1806 of yacc.c  */
     8011#line 2190 "parser.yy"
    79088012    { delete (yyvsp[(3) - (4)].en); }
    79098013    break;
    79108014
    7911   case 561:
    7912 
    7913 /* Line 1806 of yacc.c  */
    7914 #line 2180 "parser.yy"
     8015  case 563:
     8016
     8017/* Line 1806 of yacc.c  */
     8018#line 2194 "parser.yy"
    79158019    { delete (yyvsp[(1) - (1)].tok); }
    79168020    break;
    79178021
    7918   case 562:
    7919 
    7920 /* Line 1806 of yacc.c  */
    7921 #line 2181 "parser.yy"
     8022  case 564:
     8023
     8024/* Line 1806 of yacc.c  */
     8025#line 2195 "parser.yy"
    79228026    { delete (yyvsp[(1) - (1)].decl); }
    79238027    break;
    79248028
    7925   case 563:
    7926 
    7927 /* Line 1806 of yacc.c  */
    7928 #line 2182 "parser.yy"
     8029  case 565:
     8030
     8031/* Line 1806 of yacc.c  */
     8032#line 2196 "parser.yy"
    79298033    { delete (yyvsp[(1) - (1)].decl); }
    79308034    break;
    79318035
    7932   case 564:
    7933 
    7934 /* Line 1806 of yacc.c  */
    7935 #line 2183 "parser.yy"
     8036  case 566:
     8037
     8038/* Line 1806 of yacc.c  */
     8039#line 2197 "parser.yy"
    79368040    { delete (yyvsp[(1) - (1)].decl); }
    79378041    break;
    79388042
    7939   case 565:
    7940 
    7941 /* Line 1806 of yacc.c  */
    7942 #line 2218 "parser.yy"
     8043  case 567:
     8044
     8045/* Line 1806 of yacc.c  */
     8046#line 2232 "parser.yy"
    79438047    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79448048    break;
    79458049
    7946   case 567:
    7947 
    7948 /* Line 1806 of yacc.c  */
    7949 #line 2221 "parser.yy"
     8050  case 569:
     8051
     8052/* Line 1806 of yacc.c  */
     8053#line 2235 "parser.yy"
    79508054    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79518055    break;
    79528056
    7953   case 568:
    7954 
    7955 /* Line 1806 of yacc.c  */
    7956 #line 2223 "parser.yy"
     8057  case 570:
     8058
     8059/* Line 1806 of yacc.c  */
     8060#line 2237 "parser.yy"
    79578061    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79588062    break;
    79598063
    7960   case 569:
    7961 
    7962 /* Line 1806 of yacc.c  */
    7963 #line 2228 "parser.yy"
     8064  case 571:
     8065
     8066/* Line 1806 of yacc.c  */
     8067#line 2242 "parser.yy"
    79648068    {
    79658069                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    79688072    break;
    79698073
    7970   case 570:
    7971 
    7972 /* Line 1806 of yacc.c  */
    7973 #line 2233 "parser.yy"
     8074  case 572:
     8075
     8076/* Line 1806 of yacc.c  */
     8077#line 2247 "parser.yy"
    79748078    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79758079    break;
    79768080
    7977   case 571:
    7978 
    7979 /* Line 1806 of yacc.c  */
    7980 #line 2238 "parser.yy"
     8081  case 573:
     8082
     8083/* Line 1806 of yacc.c  */
     8084#line 2252 "parser.yy"
    79818085    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    79828086    break;
    79838087
    7984   case 572:
    7985 
    7986 /* Line 1806 of yacc.c  */
    7987 #line 2240 "parser.yy"
     8088  case 574:
     8089
     8090/* Line 1806 of yacc.c  */
     8091#line 2254 "parser.yy"
    79888092    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    79898093    break;
    79908094
    7991   case 573:
    7992 
    7993 /* Line 1806 of yacc.c  */
    7994 #line 2242 "parser.yy"
     8095  case 575:
     8096
     8097/* Line 1806 of yacc.c  */
     8098#line 2256 "parser.yy"
    79958099    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79968100    break;
    79978101
    7998   case 574:
    7999 
    8000 /* Line 1806 of yacc.c  */
    8001 #line 2247 "parser.yy"
     8102  case 576:
     8103
     8104/* Line 1806 of yacc.c  */
     8105#line 2261 "parser.yy"
    80028106    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80038107    break;
    80048108
    8005   case 575:
    8006 
    8007 /* Line 1806 of yacc.c  */
    8008 #line 2249 "parser.yy"
     8109  case 577:
     8110
     8111/* Line 1806 of yacc.c  */
     8112#line 2263 "parser.yy"
    80098113    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80108114    break;
    80118115
    8012   case 576:
    8013 
    8014 /* Line 1806 of yacc.c  */
    8015 #line 2251 "parser.yy"
     8116  case 578:
     8117
     8118/* Line 1806 of yacc.c  */
     8119#line 2265 "parser.yy"
    80168120    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80178121    break;
    80188122
    8019   case 577:
    8020 
    8021 /* Line 1806 of yacc.c  */
    8022 #line 2253 "parser.yy"
     8123  case 579:
     8124
     8125/* Line 1806 of yacc.c  */
     8126#line 2267 "parser.yy"
    80238127    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80248128    break;
    80258129
    8026   case 578:
    8027 
    8028 /* Line 1806 of yacc.c  */
    8029 #line 2258 "parser.yy"
     8130  case 580:
     8131
     8132/* Line 1806 of yacc.c  */
     8133#line 2272 "parser.yy"
    80308134    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80318135    break;
    80328136
    8033   case 579:
    8034 
    8035 /* Line 1806 of yacc.c  */
    8036 #line 2260 "parser.yy"
     8137  case 581:
     8138
     8139/* Line 1806 of yacc.c  */
     8140#line 2274 "parser.yy"
    80378141    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80388142    break;
    80398143
    8040   case 580:
    8041 
    8042 /* Line 1806 of yacc.c  */
    8043 #line 2269 "parser.yy"
     8144  case 582:
     8145
     8146/* Line 1806 of yacc.c  */
     8147#line 2283 "parser.yy"
    80448148    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80458149    break;
    80468150
    8047   case 582:
    8048 
    8049 /* Line 1806 of yacc.c  */
    8050 #line 2272 "parser.yy"
     8151  case 584:
     8152
     8153/* Line 1806 of yacc.c  */
     8154#line 2286 "parser.yy"
    80518155    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80528156    break;
    80538157
    8054   case 583:
    8055 
    8056 /* Line 1806 of yacc.c  */
    8057 #line 2277 "parser.yy"
     8158  case 585:
     8159
     8160/* Line 1806 of yacc.c  */
     8161#line 2291 "parser.yy"
    80588162    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    80598163    break;
    80608164
    8061   case 584:
    8062 
    8063 /* Line 1806 of yacc.c  */
    8064 #line 2279 "parser.yy"
     8165  case 586:
     8166
     8167/* Line 1806 of yacc.c  */
     8168#line 2293 "parser.yy"
    80658169    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80668170    break;
    80678171
    8068   case 585:
    8069 
    8070 /* Line 1806 of yacc.c  */
    8071 #line 2281 "parser.yy"
     8172  case 587:
     8173
     8174/* Line 1806 of yacc.c  */
     8175#line 2295 "parser.yy"
    80728176    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80738177    break;
    80748178
    8075   case 586:
    8076 
    8077 /* Line 1806 of yacc.c  */
    8078 #line 2286 "parser.yy"
     8179  case 588:
     8180
     8181/* Line 1806 of yacc.c  */
     8182#line 2300 "parser.yy"
    80798183    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80808184    break;
    80818185
    8082   case 587:
    8083 
    8084 /* Line 1806 of yacc.c  */
    8085 #line 2288 "parser.yy"
     8186  case 589:
     8187
     8188/* Line 1806 of yacc.c  */
     8189#line 2302 "parser.yy"
    80868190    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80878191    break;
    80888192
    8089   case 588:
    8090 
    8091 /* Line 1806 of yacc.c  */
    8092 #line 2290 "parser.yy"
     8193  case 590:
     8194
     8195/* Line 1806 of yacc.c  */
     8196#line 2304 "parser.yy"
    80938197    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80948198    break;
    80958199
    8096   case 589:
    8097 
    8098 /* Line 1806 of yacc.c  */
    8099 #line 2295 "parser.yy"
     8200  case 591:
     8201
     8202/* Line 1806 of yacc.c  */
     8203#line 2309 "parser.yy"
    81008204    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81018205    break;
    81028206
    8103   case 590:
    8104 
    8105 /* Line 1806 of yacc.c  */
    8106 #line 2297 "parser.yy"
     8207  case 592:
     8208
     8209/* Line 1806 of yacc.c  */
     8210#line 2311 "parser.yy"
    81078211    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81088212    break;
    81098213
    8110   case 591:
    8111 
    8112 /* Line 1806 of yacc.c  */
    8113 #line 2299 "parser.yy"
     8214  case 593:
     8215
     8216/* Line 1806 of yacc.c  */
     8217#line 2313 "parser.yy"
    81148218    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81158219    break;
    81168220
    8117   case 595:
    8118 
    8119 /* Line 1806 of yacc.c  */
    8120 #line 2314 "parser.yy"
     8221  case 597:
     8222
     8223/* Line 1806 of yacc.c  */
     8224#line 2328 "parser.yy"
    81218225    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    81228226    break;
    81238227
    8124   case 596:
    8125 
    8126 /* Line 1806 of yacc.c  */
    8127 #line 2316 "parser.yy"
     8228  case 598:
     8229
     8230/* Line 1806 of yacc.c  */
     8231#line 2330 "parser.yy"
    81288232    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    81298233    break;
    81308234
    8131   case 597:
    8132 
    8133 /* Line 1806 of yacc.c  */
    8134 #line 2318 "parser.yy"
     8235  case 599:
     8236
     8237/* Line 1806 of yacc.c  */
     8238#line 2332 "parser.yy"
    81358239    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81368240    break;
    81378241
    8138   case 598:
    8139 
    8140 /* Line 1806 of yacc.c  */
    8141 #line 2323 "parser.yy"
     8242  case 600:
     8243
     8244/* Line 1806 of yacc.c  */
     8245#line 2337 "parser.yy"
    81428246    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81438247    break;
    81448248
    8145   case 599:
    8146 
    8147 /* Line 1806 of yacc.c  */
    8148 #line 2325 "parser.yy"
     8249  case 601:
     8250
     8251/* Line 1806 of yacc.c  */
     8252#line 2339 "parser.yy"
    81498253    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81508254    break;
    81518255
    8152   case 600:
    8153 
    8154 /* Line 1806 of yacc.c  */
    8155 #line 2327 "parser.yy"
     8256  case 602:
     8257
     8258/* Line 1806 of yacc.c  */
     8259#line 2341 "parser.yy"
    81568260    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81578261    break;
    81588262
    8159   case 601:
    8160 
    8161 /* Line 1806 of yacc.c  */
    8162 #line 2332 "parser.yy"
     8263  case 603:
     8264
     8265/* Line 1806 of yacc.c  */
     8266#line 2346 "parser.yy"
    81638267    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81648268    break;
    81658269
    8166   case 602:
    8167 
    8168 /* Line 1806 of yacc.c  */
    8169 #line 2334 "parser.yy"
     8270  case 604:
     8271
     8272/* Line 1806 of yacc.c  */
     8273#line 2348 "parser.yy"
    81708274    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81718275    break;
    81728276
    8173   case 603:
    8174 
    8175 /* Line 1806 of yacc.c  */
    8176 #line 2336 "parser.yy"
     8277  case 605:
     8278
     8279/* Line 1806 of yacc.c  */
     8280#line 2350 "parser.yy"
    81778281    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81788282    break;
    81798283
    8180   case 604:
    8181 
    8182 /* Line 1806 of yacc.c  */
    8183 #line 2351 "parser.yy"
     8284  case 606:
     8285
     8286/* Line 1806 of yacc.c  */
     8287#line 2365 "parser.yy"
    81848288    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81858289    break;
    81868290
    8187   case 606:
    8188 
    8189 /* Line 1806 of yacc.c  */
    8190 #line 2354 "parser.yy"
     8291  case 608:
     8292
     8293/* Line 1806 of yacc.c  */
     8294#line 2368 "parser.yy"
    81918295    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81928296    break;
    81938297
    8194   case 607:
    8195 
    8196 /* Line 1806 of yacc.c  */
    8197 #line 2356 "parser.yy"
     8298  case 609:
     8299
     8300/* Line 1806 of yacc.c  */
     8301#line 2370 "parser.yy"
    81988302    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81998303    break;
    82008304
    8201   case 609:
    8202 
    8203 /* Line 1806 of yacc.c  */
    8204 #line 2362 "parser.yy"
     8305  case 611:
     8306
     8307/* Line 1806 of yacc.c  */
     8308#line 2376 "parser.yy"
    82058309    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82068310    break;
    82078311
    8208   case 610:
    8209 
    8210 /* Line 1806 of yacc.c  */
    8211 #line 2367 "parser.yy"
     8312  case 612:
     8313
     8314/* Line 1806 of yacc.c  */
     8315#line 2381 "parser.yy"
    82128316    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82138317    break;
    82148318
    8215   case 611:
    8216 
    8217 /* Line 1806 of yacc.c  */
    8218 #line 2369 "parser.yy"
     8319  case 613:
     8320
     8321/* Line 1806 of yacc.c  */
     8322#line 2383 "parser.yy"
    82198323    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82208324    break;
    82218325
    8222   case 612:
    8223 
    8224 /* Line 1806 of yacc.c  */
    8225 #line 2371 "parser.yy"
     8326  case 614:
     8327
     8328/* Line 1806 of yacc.c  */
     8329#line 2385 "parser.yy"
    82268330    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82278331    break;
    82288332
    8229   case 613:
    8230 
    8231 /* Line 1806 of yacc.c  */
    8232 #line 2376 "parser.yy"
     8333  case 615:
     8334
     8335/* Line 1806 of yacc.c  */
     8336#line 2390 "parser.yy"
    82338337    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82348338    break;
    82358339
    8236   case 614:
    8237 
    8238 /* Line 1806 of yacc.c  */
    8239 #line 2378 "parser.yy"
     8340  case 616:
     8341
     8342/* Line 1806 of yacc.c  */
     8343#line 2392 "parser.yy"
    82408344    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82418345    break;
    82428346
    8243   case 615:
    8244 
    8245 /* Line 1806 of yacc.c  */
    8246 #line 2380 "parser.yy"
     8347  case 617:
     8348
     8349/* Line 1806 of yacc.c  */
     8350#line 2394 "parser.yy"
    82478351    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82488352    break;
    82498353
    8250   case 616:
    8251 
    8252 /* Line 1806 of yacc.c  */
    8253 #line 2382 "parser.yy"
     8354  case 618:
     8355
     8356/* Line 1806 of yacc.c  */
     8357#line 2396 "parser.yy"
    82548358    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82558359    break;
    82568360
    8257   case 617:
    8258 
    8259 /* Line 1806 of yacc.c  */
    8260 #line 2387 "parser.yy"
     8361  case 619:
     8362
     8363/* Line 1806 of yacc.c  */
     8364#line 2401 "parser.yy"
    82618365    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    82628366    break;
    82638367
    8264   case 618:
    8265 
    8266 /* Line 1806 of yacc.c  */
    8267 #line 2389 "parser.yy"
     8368  case 620:
     8369
     8370/* Line 1806 of yacc.c  */
     8371#line 2403 "parser.yy"
    82688372    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    82698373    break;
    82708374
    8271   case 619:
    8272 
    8273 /* Line 1806 of yacc.c  */
    8274 #line 2391 "parser.yy"
     8375  case 621:
     8376
     8377/* Line 1806 of yacc.c  */
     8378#line 2405 "parser.yy"
    82758379    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82768380    break;
    82778381
    8278   case 620:
    8279 
    8280 /* Line 1806 of yacc.c  */
    8281 #line 2401 "parser.yy"
     8382  case 622:
     8383
     8384/* Line 1806 of yacc.c  */
     8385#line 2415 "parser.yy"
    82828386    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82838387    break;
    82848388
    8285   case 622:
    8286 
    8287 /* Line 1806 of yacc.c  */
    8288 #line 2404 "parser.yy"
     8389  case 624:
     8390
     8391/* Line 1806 of yacc.c  */
     8392#line 2418 "parser.yy"
    82898393    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82908394    break;
    82918395
    8292   case 623:
    8293 
    8294 /* Line 1806 of yacc.c  */
    8295 #line 2406 "parser.yy"
     8396  case 625:
     8397
     8398/* Line 1806 of yacc.c  */
     8399#line 2420 "parser.yy"
    82968400    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82978401    break;
    82988402
    8299   case 624:
    8300 
    8301 /* Line 1806 of yacc.c  */
    8302 #line 2411 "parser.yy"
     8403  case 626:
     8404
     8405/* Line 1806 of yacc.c  */
     8406#line 2425 "parser.yy"
    83038407    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83048408    break;
    83058409
    8306   case 625:
    8307 
    8308 /* Line 1806 of yacc.c  */
    8309 #line 2413 "parser.yy"
     8410  case 627:
     8411
     8412/* Line 1806 of yacc.c  */
     8413#line 2427 "parser.yy"
    83108414    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83118415    break;
    83128416
    8313   case 626:
    8314 
    8315 /* Line 1806 of yacc.c  */
    8316 #line 2415 "parser.yy"
     8417  case 628:
     8418
     8419/* Line 1806 of yacc.c  */
     8420#line 2429 "parser.yy"
    83178421    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83188422    break;
    83198423
    8320   case 627:
    8321 
    8322 /* Line 1806 of yacc.c  */
    8323 #line 2420 "parser.yy"
     8424  case 629:
     8425
     8426/* Line 1806 of yacc.c  */
     8427#line 2434 "parser.yy"
    83248428    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83258429    break;
    83268430
    8327   case 628:
    8328 
    8329 /* Line 1806 of yacc.c  */
    8330 #line 2422 "parser.yy"
     8431  case 630:
     8432
     8433/* Line 1806 of yacc.c  */
     8434#line 2436 "parser.yy"
    83318435    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83328436    break;
    83338437
    8334   case 629:
    8335 
    8336 /* Line 1806 of yacc.c  */
    8337 #line 2424 "parser.yy"
     8438  case 631:
     8439
     8440/* Line 1806 of yacc.c  */
     8441#line 2438 "parser.yy"
    83388442    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83398443    break;
    83408444
    8341   case 630:
    8342 
    8343 /* Line 1806 of yacc.c  */
    8344 #line 2426 "parser.yy"
     8445  case 632:
     8446
     8447/* Line 1806 of yacc.c  */
     8448#line 2440 "parser.yy"
    83458449    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83468450    break;
    83478451
    8348   case 631:
    8349 
    8350 /* Line 1806 of yacc.c  */
    8351 #line 2431 "parser.yy"
     8452  case 633:
     8453
     8454/* Line 1806 of yacc.c  */
     8455#line 2445 "parser.yy"
    83528456    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83538457    break;
    83548458
    8355   case 632:
    8356 
    8357 /* Line 1806 of yacc.c  */
    8358 #line 2433 "parser.yy"
     8459  case 634:
     8460
     8461/* Line 1806 of yacc.c  */
     8462#line 2447 "parser.yy"
    83598463    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83608464    break;
    83618465
    8362   case 633:
    8363 
    8364 /* Line 1806 of yacc.c  */
    8365 #line 2435 "parser.yy"
     8466  case 635:
     8467
     8468/* Line 1806 of yacc.c  */
     8469#line 2449 "parser.yy"
    83668470    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83678471    break;
    83688472
    8369   case 634:
    8370 
    8371 /* Line 1806 of yacc.c  */
    8372 #line 2466 "parser.yy"
     8473  case 636:
     8474
     8475/* Line 1806 of yacc.c  */
     8476#line 2480 "parser.yy"
    83738477    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83748478    break;
    83758479
    8376   case 636:
    8377 
    8378 /* Line 1806 of yacc.c  */
    8379 #line 2469 "parser.yy"
     8480  case 638:
     8481
     8482/* Line 1806 of yacc.c  */
     8483#line 2483 "parser.yy"
    83808484    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83818485    break;
    83828486
    8383   case 637:
    8384 
    8385 /* Line 1806 of yacc.c  */
    8386 #line 2471 "parser.yy"
     8487  case 639:
     8488
     8489/* Line 1806 of yacc.c  */
     8490#line 2485 "parser.yy"
    83878491    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83888492    break;
    83898493
    8390   case 638:
    8391 
    8392 /* Line 1806 of yacc.c  */
    8393 #line 2476 "parser.yy"
     8494  case 640:
     8495
     8496/* Line 1806 of yacc.c  */
     8497#line 2490 "parser.yy"
    83948498    {
    83958499                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83988502    break;
    83998503
    8400   case 639:
    8401 
    8402 /* Line 1806 of yacc.c  */
    8403 #line 2481 "parser.yy"
     8504  case 641:
     8505
     8506/* Line 1806 of yacc.c  */
     8507#line 2495 "parser.yy"
    84048508    {
    84058509                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84088512    break;
    84098513
    8410   case 640:
    8411 
    8412 /* Line 1806 of yacc.c  */
    8413 #line 2489 "parser.yy"
     8514  case 642:
     8515
     8516/* Line 1806 of yacc.c  */
     8517#line 2503 "parser.yy"
    84148518    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84158519    break;
    84168520
    8417   case 641:
    8418 
    8419 /* Line 1806 of yacc.c  */
    8420 #line 2491 "parser.yy"
     8521  case 643:
     8522
     8523/* Line 1806 of yacc.c  */
     8524#line 2505 "parser.yy"
    84218525    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84228526    break;
    84238527
    8424   case 642:
    8425 
    8426 /* Line 1806 of yacc.c  */
    8427 #line 2493 "parser.yy"
     8528  case 644:
     8529
     8530/* Line 1806 of yacc.c  */
     8531#line 2507 "parser.yy"
    84288532    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84298533    break;
    84308534
    8431   case 643:
    8432 
    8433 /* Line 1806 of yacc.c  */
    8434 #line 2498 "parser.yy"
     8535  case 645:
     8536
     8537/* Line 1806 of yacc.c  */
     8538#line 2512 "parser.yy"
    84358539    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84368540    break;
    84378541
    8438   case 644:
    8439 
    8440 /* Line 1806 of yacc.c  */
    8441 #line 2500 "parser.yy"
     8542  case 646:
     8543
     8544/* Line 1806 of yacc.c  */
     8545#line 2514 "parser.yy"
    84428546    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84438547    break;
    84448548
    8445   case 645:
    8446 
    8447 /* Line 1806 of yacc.c  */
    8448 #line 2505 "parser.yy"
     8549  case 647:
     8550
     8551/* Line 1806 of yacc.c  */
     8552#line 2519 "parser.yy"
    84498553    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84508554    break;
    84518555
    8452   case 646:
    8453 
    8454 /* Line 1806 of yacc.c  */
    8455 #line 2507 "parser.yy"
     8556  case 648:
     8557
     8558/* Line 1806 of yacc.c  */
     8559#line 2521 "parser.yy"
    84568560    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84578561    break;
    84588562
    8459   case 648:
    8460 
    8461 /* Line 1806 of yacc.c  */
    8462 #line 2522 "parser.yy"
     8563  case 650:
     8564
     8565/* Line 1806 of yacc.c  */
     8566#line 2536 "parser.yy"
    84638567    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84648568    break;
    84658569
    8466   case 649:
    8467 
    8468 /* Line 1806 of yacc.c  */
    8469 #line 2524 "parser.yy"
     8570  case 651:
     8571
     8572/* Line 1806 of yacc.c  */
     8573#line 2538 "parser.yy"
    84708574    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84718575    break;
    84728576
    8473   case 650:
    8474 
    8475 /* Line 1806 of yacc.c  */
    8476 #line 2529 "parser.yy"
     8577  case 652:
     8578
     8579/* Line 1806 of yacc.c  */
     8580#line 2543 "parser.yy"
    84778581    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    84788582    break;
    84798583
    8480   case 651:
    8481 
    8482 /* Line 1806 of yacc.c  */
    8483 #line 2531 "parser.yy"
     8584  case 653:
     8585
     8586/* Line 1806 of yacc.c  */
     8587#line 2545 "parser.yy"
    84848588    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    84858589    break;
    84868590
    8487   case 652:
    8488 
    8489 /* Line 1806 of yacc.c  */
    8490 #line 2533 "parser.yy"
     8591  case 654:
     8592
     8593/* Line 1806 of yacc.c  */
     8594#line 2547 "parser.yy"
    84918595    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84928596    break;
    84938597
    8494   case 653:
    8495 
    8496 /* Line 1806 of yacc.c  */
    8497 #line 2535 "parser.yy"
     8598  case 655:
     8599
     8600/* Line 1806 of yacc.c  */
     8601#line 2549 "parser.yy"
    84988602    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84998603    break;
    85008604
    8501   case 654:
    8502 
    8503 /* Line 1806 of yacc.c  */
    8504 #line 2537 "parser.yy"
     8605  case 656:
     8606
     8607/* Line 1806 of yacc.c  */
     8608#line 2551 "parser.yy"
    85058609    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85068610    break;
    85078611
    8508   case 656:
    8509 
    8510 /* Line 1806 of yacc.c  */
    8511 #line 2543 "parser.yy"
     8612  case 658:
     8613
     8614/* Line 1806 of yacc.c  */
     8615#line 2557 "parser.yy"
    85128616    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85138617    break;
    85148618
    8515   case 657:
    8516 
    8517 /* Line 1806 of yacc.c  */
    8518 #line 2545 "parser.yy"
     8619  case 659:
     8620
     8621/* Line 1806 of yacc.c  */
     8622#line 2559 "parser.yy"
    85198623    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85208624    break;
    85218625
    8522   case 658:
    8523 
    8524 /* Line 1806 of yacc.c  */
    8525 #line 2547 "parser.yy"
     8626  case 660:
     8627
     8628/* Line 1806 of yacc.c  */
     8629#line 2561 "parser.yy"
    85268630    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85278631    break;
    85288632
    8529   case 659:
    8530 
    8531 /* Line 1806 of yacc.c  */
    8532 #line 2552 "parser.yy"
     8633  case 661:
     8634
     8635/* Line 1806 of yacc.c  */
     8636#line 2566 "parser.yy"
    85338637    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    85348638    break;
    85358639
    8536   case 660:
    8537 
    8538 /* Line 1806 of yacc.c  */
    8539 #line 2554 "parser.yy"
     8640  case 662:
     8641
     8642/* Line 1806 of yacc.c  */
     8643#line 2568 "parser.yy"
    85408644    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85418645    break;
    85428646
    8543   case 661:
    8544 
    8545 /* Line 1806 of yacc.c  */
    8546 #line 2556 "parser.yy"
     8647  case 663:
     8648
     8649/* Line 1806 of yacc.c  */
     8650#line 2570 "parser.yy"
    85478651    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85488652    break;
    85498653
    8550   case 662:
    8551 
    8552 /* Line 1806 of yacc.c  */
    8553 #line 2562 "parser.yy"
     8654  case 664:
     8655
     8656/* Line 1806 of yacc.c  */
     8657#line 2576 "parser.yy"
    85548658    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    85558659    break;
    85568660
    8557   case 663:
    8558 
    8559 /* Line 1806 of yacc.c  */
    8560 #line 2564 "parser.yy"
     8661  case 665:
     8662
     8663/* Line 1806 of yacc.c  */
     8664#line 2578 "parser.yy"
    85618665    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    85628666    break;
    85638667
    8564   case 665:
    8565 
    8566 /* Line 1806 of yacc.c  */
    8567 #line 2570 "parser.yy"
     8668  case 667:
     8669
     8670/* Line 1806 of yacc.c  */
     8671#line 2584 "parser.yy"
    85688672    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    85698673    break;
    85708674
    8571   case 666:
    8572 
    8573 /* Line 1806 of yacc.c  */
    8574 #line 2572 "parser.yy"
     8675  case 668:
     8676
     8677/* Line 1806 of yacc.c  */
     8678#line 2586 "parser.yy"
    85758679    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    85768680    break;
    85778681
    8578   case 667:
    8579 
    8580 /* Line 1806 of yacc.c  */
    8581 #line 2574 "parser.yy"
     8682  case 669:
     8683
     8684/* Line 1806 of yacc.c  */
     8685#line 2588 "parser.yy"
    85828686    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    85838687    break;
    85848688
    8585   case 668:
    8586 
    8587 /* Line 1806 of yacc.c  */
    8588 #line 2576 "parser.yy"
     8689  case 670:
     8690
     8691/* Line 1806 of yacc.c  */
     8692#line 2590 "parser.yy"
    85898693    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    85908694    break;
    85918695
    8592   case 670:
    8593 
    8594 /* Line 1806 of yacc.c  */
    8595 #line 2591 "parser.yy"
     8696  case 672:
     8697
     8698/* Line 1806 of yacc.c  */
     8699#line 2605 "parser.yy"
    85968700    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85978701    break;
    85988702
    8599   case 671:
    8600 
    8601 /* Line 1806 of yacc.c  */
    8602 #line 2593 "parser.yy"
     8703  case 673:
     8704
     8705/* Line 1806 of yacc.c  */
     8706#line 2607 "parser.yy"
    86038707    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86048708    break;
    86058709
    8606   case 672:
    8607 
    8608 /* Line 1806 of yacc.c  */
    8609 #line 2598 "parser.yy"
     8710  case 674:
     8711
     8712/* Line 1806 of yacc.c  */
     8713#line 2612 "parser.yy"
    86108714    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86118715    break;
    86128716
    8613   case 673:
    8614 
    8615 /* Line 1806 of yacc.c  */
    8616 #line 2600 "parser.yy"
     8717  case 675:
     8718
     8719/* Line 1806 of yacc.c  */
     8720#line 2614 "parser.yy"
    86178721    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86188722    break;
    86198723
    8620   case 674:
    8621 
    8622 /* Line 1806 of yacc.c  */
    8623 #line 2602 "parser.yy"
     8724  case 676:
     8725
     8726/* Line 1806 of yacc.c  */
     8727#line 2616 "parser.yy"
    86248728    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86258729    break;
    86268730
    8627   case 675:
    8628 
    8629 /* Line 1806 of yacc.c  */
    8630 #line 2604 "parser.yy"
     8731  case 677:
     8732
     8733/* Line 1806 of yacc.c  */
     8734#line 2618 "parser.yy"
    86318735    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86328736    break;
    86338737
    8634   case 676:
    8635 
    8636 /* Line 1806 of yacc.c  */
    8637 #line 2606 "parser.yy"
     8738  case 678:
     8739
     8740/* Line 1806 of yacc.c  */
     8741#line 2620 "parser.yy"
    86388742    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86398743    break;
    86408744
    8641   case 678:
    8642 
    8643 /* Line 1806 of yacc.c  */
    8644 #line 2612 "parser.yy"
     8745  case 680:
     8746
     8747/* Line 1806 of yacc.c  */
     8748#line 2626 "parser.yy"
    86458749    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86468750    break;
    86478751
    8648   case 679:
    8649 
    8650 /* Line 1806 of yacc.c  */
    8651 #line 2614 "parser.yy"
     8752  case 681:
     8753
     8754/* Line 1806 of yacc.c  */
     8755#line 2628 "parser.yy"
    86528756    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86538757    break;
    86548758
    8655   case 680:
    8656 
    8657 /* Line 1806 of yacc.c  */
    8658 #line 2616 "parser.yy"
     8759  case 682:
     8760
     8761/* Line 1806 of yacc.c  */
     8762#line 2630 "parser.yy"
    86598763    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86608764    break;
    86618765
    8662   case 681:
    8663 
    8664 /* Line 1806 of yacc.c  */
    8665 #line 2621 "parser.yy"
     8766  case 683:
     8767
     8768/* Line 1806 of yacc.c  */
     8769#line 2635 "parser.yy"
    86668770    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    86678771    break;
    86688772
    8669   case 682:
    8670 
    8671 /* Line 1806 of yacc.c  */
    8672 #line 2623 "parser.yy"
     8773  case 684:
     8774
     8775/* Line 1806 of yacc.c  */
     8776#line 2637 "parser.yy"
    86738777    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86748778    break;
    86758779
    8676   case 683:
    8677 
    8678 /* Line 1806 of yacc.c  */
    8679 #line 2625 "parser.yy"
     8780  case 685:
     8781
     8782/* Line 1806 of yacc.c  */
     8783#line 2639 "parser.yy"
    86808784    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86818785    break;
    86828786
    8683   case 685:
    8684 
    8685 /* Line 1806 of yacc.c  */
    8686 #line 2632 "parser.yy"
     8787  case 687:
     8788
     8789/* Line 1806 of yacc.c  */
     8790#line 2646 "parser.yy"
    86878791    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    86888792    break;
    86898793
    8690   case 687:
    8691 
    8692 /* Line 1806 of yacc.c  */
    8693 #line 2643 "parser.yy"
     8794  case 689:
     8795
     8796/* Line 1806 of yacc.c  */
     8797#line 2657 "parser.yy"
    86948798    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86958799    break;
    86968800
    8697   case 688:
    8698 
    8699 /* Line 1806 of yacc.c  */
    8700 #line 2646 "parser.yy"
     8801  case 690:
     8802
     8803/* Line 1806 of yacc.c  */
     8804#line 2660 "parser.yy"
    87018805    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    87028806    break;
    87038807
    8704   case 689:
    8705 
    8706 /* Line 1806 of yacc.c  */
    8707 #line 2648 "parser.yy"
     8808  case 691:
     8809
     8810/* Line 1806 of yacc.c  */
     8811#line 2662 "parser.yy"
    87088812    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    87098813    break;
    87108814
    8711   case 690:
    8712 
    8713 /* Line 1806 of yacc.c  */
    8714 #line 2651 "parser.yy"
     8815  case 692:
     8816
     8817/* Line 1806 of yacc.c  */
     8818#line 2665 "parser.yy"
    87158819    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    87168820    break;
    87178821
    8718   case 691:
    8719 
    8720 /* Line 1806 of yacc.c  */
    8721 #line 2653 "parser.yy"
     8822  case 693:
     8823
     8824/* Line 1806 of yacc.c  */
     8825#line 2667 "parser.yy"
    87228826    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    87238827    break;
    87248828
    8725   case 692:
    8726 
    8727 /* Line 1806 of yacc.c  */
    8728 #line 2655 "parser.yy"
     8829  case 694:
     8830
     8831/* Line 1806 of yacc.c  */
     8832#line 2669 "parser.yy"
    87298833    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    87308834    break;
    87318835
    8732   case 694:
    8733 
    8734 /* Line 1806 of yacc.c  */
    8735 #line 2669 "parser.yy"
     8836  case 696:
     8837
     8838/* Line 1806 of yacc.c  */
     8839#line 2683 "parser.yy"
    87368840    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87378841    break;
    87388842
    8739   case 695:
    8740 
    8741 /* Line 1806 of yacc.c  */
    8742 #line 2671 "parser.yy"
     8843  case 697:
     8844
     8845/* Line 1806 of yacc.c  */
     8846#line 2685 "parser.yy"
    87438847    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87448848    break;
    87458849
    8746   case 696:
    8747 
    8748 /* Line 1806 of yacc.c  */
    8749 #line 2676 "parser.yy"
     8850  case 698:
     8851
     8852/* Line 1806 of yacc.c  */
     8853#line 2690 "parser.yy"
    87508854    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87518855    break;
    87528856
    8753   case 697:
    8754 
    8755 /* Line 1806 of yacc.c  */
    8756 #line 2678 "parser.yy"
     8857  case 699:
     8858
     8859/* Line 1806 of yacc.c  */
     8860#line 2692 "parser.yy"
    87578861    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87588862    break;
    87598863
    8760   case 698:
    8761 
    8762 /* Line 1806 of yacc.c  */
    8763 #line 2680 "parser.yy"
     8864  case 700:
     8865
     8866/* Line 1806 of yacc.c  */
     8867#line 2694 "parser.yy"
    87648868    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87658869    break;
    87668870
    8767   case 699:
    8768 
    8769 /* Line 1806 of yacc.c  */
    8770 #line 2682 "parser.yy"
     8871  case 701:
     8872
     8873/* Line 1806 of yacc.c  */
     8874#line 2696 "parser.yy"
    87718875    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87728876    break;
    87738877
    8774   case 700:
    8775 
    8776 /* Line 1806 of yacc.c  */
    8777 #line 2684 "parser.yy"
     8878  case 702:
     8879
     8880/* Line 1806 of yacc.c  */
     8881#line 2698 "parser.yy"
    87788882    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87798883    break;
    87808884
    8781   case 702:
    8782 
    8783 /* Line 1806 of yacc.c  */
    8784 #line 2690 "parser.yy"
     8885  case 704:
     8886
     8887/* Line 1806 of yacc.c  */
     8888#line 2704 "parser.yy"
    87858889    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87868890    break;
    87878891
    8788   case 703:
    8789 
    8790 /* Line 1806 of yacc.c  */
    8791 #line 2692 "parser.yy"
     8892  case 705:
     8893
     8894/* Line 1806 of yacc.c  */
     8895#line 2706 "parser.yy"
    87928896    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87938897    break;
    87948898
    8795   case 704:
    8796 
    8797 /* Line 1806 of yacc.c  */
    8798 #line 2694 "parser.yy"
     8899  case 706:
     8900
     8901/* Line 1806 of yacc.c  */
     8902#line 2708 "parser.yy"
    87998903    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88008904    break;
    88018905
    8802   case 705:
    8803 
    8804 /* Line 1806 of yacc.c  */
    8805 #line 2699 "parser.yy"
     8906  case 707:
     8907
     8908/* Line 1806 of yacc.c  */
     8909#line 2713 "parser.yy"
    88068910    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    88078911    break;
    88088912
    8809   case 706:
    8810 
    8811 /* Line 1806 of yacc.c  */
    8812 #line 2701 "parser.yy"
     8913  case 708:
     8914
     8915/* Line 1806 of yacc.c  */
     8916#line 2715 "parser.yy"
    88138917    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88148918    break;
    88158919
    8816   case 709:
    8817 
    8818 /* Line 1806 of yacc.c  */
    8819 #line 2711 "parser.yy"
     8920  case 711:
     8921
     8922/* Line 1806 of yacc.c  */
     8923#line 2725 "parser.yy"
    88208924    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88218925    break;
    88228926
    8823   case 712:
    8824 
    8825 /* Line 1806 of yacc.c  */
    8826 #line 2721 "parser.yy"
     8927  case 714:
     8928
     8929/* Line 1806 of yacc.c  */
     8930#line 2735 "parser.yy"
    88278931    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88288932    break;
    88298933
    8830   case 713:
    8831 
    8832 /* Line 1806 of yacc.c  */
    8833 #line 2723 "parser.yy"
     8934  case 715:
     8935
     8936/* Line 1806 of yacc.c  */
     8937#line 2737 "parser.yy"
    88348938    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88358939    break;
    88368940
    8837   case 714:
    8838 
    8839 /* Line 1806 of yacc.c  */
    8840 #line 2725 "parser.yy"
     8941  case 716:
     8942
     8943/* Line 1806 of yacc.c  */
     8944#line 2739 "parser.yy"
    88418945    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88428946    break;
    88438947
    8844   case 715:
    8845 
    8846 /* Line 1806 of yacc.c  */
    8847 #line 2727 "parser.yy"
     8948  case 717:
     8949
     8950/* Line 1806 of yacc.c  */
     8951#line 2741 "parser.yy"
    88488952    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88498953    break;
    88508954
    8851   case 716:
    8852 
    8853 /* Line 1806 of yacc.c  */
    8854 #line 2729 "parser.yy"
     8955  case 718:
     8956
     8957/* Line 1806 of yacc.c  */
     8958#line 2743 "parser.yy"
    88558959    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88568960    break;
    88578961
    8858   case 717:
    8859 
    8860 /* Line 1806 of yacc.c  */
    8861 #line 2731 "parser.yy"
     8962  case 719:
     8963
     8964/* Line 1806 of yacc.c  */
     8965#line 2745 "parser.yy"
    88628966    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88638967    break;
    88648968
    8865   case 718:
    8866 
    8867 /* Line 1806 of yacc.c  */
    8868 #line 2738 "parser.yy"
     8969  case 720:
     8970
     8971/* Line 1806 of yacc.c  */
     8972#line 2752 "parser.yy"
    88698973    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88708974    break;
    88718975
    8872   case 719:
    8873 
    8874 /* Line 1806 of yacc.c  */
    8875 #line 2740 "parser.yy"
     8976  case 721:
     8977
     8978/* Line 1806 of yacc.c  */
     8979#line 2754 "parser.yy"
    88768980    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88778981    break;
    88788982
    8879   case 720:
    8880 
    8881 /* Line 1806 of yacc.c  */
    8882 #line 2742 "parser.yy"
     8983  case 722:
     8984
     8985/* Line 1806 of yacc.c  */
     8986#line 2756 "parser.yy"
    88838987    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88848988    break;
    88858989
    8886   case 721:
    8887 
    8888 /* Line 1806 of yacc.c  */
    8889 #line 2744 "parser.yy"
     8990  case 723:
     8991
     8992/* Line 1806 of yacc.c  */
     8993#line 2758 "parser.yy"
    88908994    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    88918995    break;
    88928996
    8893   case 722:
    8894 
    8895 /* Line 1806 of yacc.c  */
    8896 #line 2746 "parser.yy"
     8997  case 724:
     8998
     8999/* Line 1806 of yacc.c  */
     9000#line 2760 "parser.yy"
    88979001    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88989002    break;
    88999003
    8900   case 723:
    8901 
    8902 /* Line 1806 of yacc.c  */
    8903 #line 2749 "parser.yy"
     9004  case 725:
     9005
     9006/* Line 1806 of yacc.c  */
     9007#line 2763 "parser.yy"
    89049008    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89059009    break;
    89069010
    8907   case 724:
    8908 
    8909 /* Line 1806 of yacc.c  */
    8910 #line 2751 "parser.yy"
     9011  case 726:
     9012
     9013/* Line 1806 of yacc.c  */
     9014#line 2765 "parser.yy"
    89119015    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89129016    break;
    89139017
    8914   case 725:
    8915 
    8916 /* Line 1806 of yacc.c  */
    8917 #line 2753 "parser.yy"
     9018  case 727:
     9019
     9020/* Line 1806 of yacc.c  */
     9021#line 2767 "parser.yy"
    89189022    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89199023    break;
    89209024
    8921   case 726:
    8922 
    8923 /* Line 1806 of yacc.c  */
    8924 #line 2755 "parser.yy"
     9025  case 728:
     9026
     9027/* Line 1806 of yacc.c  */
     9028#line 2769 "parser.yy"
    89259029    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89269030    break;
    89279031
    8928   case 727:
    8929 
    8930 /* Line 1806 of yacc.c  */
    8931 #line 2757 "parser.yy"
     9032  case 729:
     9033
     9034/* Line 1806 of yacc.c  */
     9035#line 2771 "parser.yy"
    89329036    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89339037    break;
    89349038
    8935   case 728:
    8936 
    8937 /* Line 1806 of yacc.c  */
    8938 #line 2762 "parser.yy"
     9039  case 730:
     9040
     9041/* Line 1806 of yacc.c  */
     9042#line 2776 "parser.yy"
    89399043    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    89409044    break;
    89419045
    8942   case 729:
    8943 
    8944 /* Line 1806 of yacc.c  */
    8945 #line 2764 "parser.yy"
     9046  case 731:
     9047
     9048/* Line 1806 of yacc.c  */
     9049#line 2778 "parser.yy"
    89469050    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    89479051    break;
    89489052
    8949   case 730:
    8950 
    8951 /* Line 1806 of yacc.c  */
    8952 #line 2769 "parser.yy"
     9053  case 732:
     9054
     9055/* Line 1806 of yacc.c  */
     9056#line 2783 "parser.yy"
    89539057    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    89549058    break;
    89559059
    8956   case 731:
    8957 
    8958 /* Line 1806 of yacc.c  */
    8959 #line 2771 "parser.yy"
     9060  case 733:
     9061
     9062/* Line 1806 of yacc.c  */
     9063#line 2785 "parser.yy"
    89609064    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    89619065    break;
    89629066
    8963   case 733:
    8964 
    8965 /* Line 1806 of yacc.c  */
    8966 #line 2798 "parser.yy"
     9067  case 735:
     9068
     9069/* Line 1806 of yacc.c  */
     9070#line 2812 "parser.yy"
    89679071    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89689072    break;
    89699073
    8970   case 737:
    8971 
    8972 /* Line 1806 of yacc.c  */
    8973 #line 2809 "parser.yy"
     9074  case 739:
     9075
     9076/* Line 1806 of yacc.c  */
     9077#line 2823 "parser.yy"
    89749078    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89759079    break;
    89769080
    8977   case 738:
    8978 
    8979 /* Line 1806 of yacc.c  */
    8980 #line 2811 "parser.yy"
     9081  case 740:
     9082
     9083/* Line 1806 of yacc.c  */
     9084#line 2825 "parser.yy"
    89819085    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89829086    break;
    89839087
    8984   case 739:
    8985 
    8986 /* Line 1806 of yacc.c  */
    8987 #line 2813 "parser.yy"
     9088  case 741:
     9089
     9090/* Line 1806 of yacc.c  */
     9091#line 2827 "parser.yy"
    89889092    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89899093    break;
    89909094
    8991   case 740:
    8992 
    8993 /* Line 1806 of yacc.c  */
    8994 #line 2815 "parser.yy"
     9095  case 742:
     9096
     9097/* Line 1806 of yacc.c  */
     9098#line 2829 "parser.yy"
    89959099    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89969100    break;
    89979101
    8998   case 741:
    8999 
    9000 /* Line 1806 of yacc.c  */
    9001 #line 2817 "parser.yy"
     9102  case 743:
     9103
     9104/* Line 1806 of yacc.c  */
     9105#line 2831 "parser.yy"
    90029106    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90039107    break;
    90049108
    9005   case 742:
    9006 
    9007 /* Line 1806 of yacc.c  */
    9008 #line 2819 "parser.yy"
     9109  case 744:
     9110
     9111/* Line 1806 of yacc.c  */
     9112#line 2833 "parser.yy"
    90099113    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90109114    break;
    90119115
    9012   case 743:
    9013 
    9014 /* Line 1806 of yacc.c  */
    9015 #line 2826 "parser.yy"
     9116  case 745:
     9117
     9118/* Line 1806 of yacc.c  */
     9119#line 2840 "parser.yy"
    90169120    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    90179121    break;
    90189122
    9019   case 744:
    9020 
    9021 /* Line 1806 of yacc.c  */
    9022 #line 2828 "parser.yy"
     9123  case 746:
     9124
     9125/* Line 1806 of yacc.c  */
     9126#line 2842 "parser.yy"
    90239127    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    90249128    break;
    90259129
    9026   case 745:
    9027 
    9028 /* Line 1806 of yacc.c  */
    9029 #line 2830 "parser.yy"
     9130  case 747:
     9131
     9132/* Line 1806 of yacc.c  */
     9133#line 2844 "parser.yy"
    90309134    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90319135    break;
    90329136
    9033   case 746:
    9034 
    9035 /* Line 1806 of yacc.c  */
    9036 #line 2832 "parser.yy"
     9137  case 748:
     9138
     9139/* Line 1806 of yacc.c  */
     9140#line 2846 "parser.yy"
    90379141    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    90389142    break;
    90399143
    9040   case 747:
    9041 
    9042 /* Line 1806 of yacc.c  */
    9043 #line 2834 "parser.yy"
     9144  case 749:
     9145
     9146/* Line 1806 of yacc.c  */
     9147#line 2848 "parser.yy"
    90449148    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    90459149    break;
    90469150
    9047   case 748:
    9048 
    9049 /* Line 1806 of yacc.c  */
    9050 #line 2836 "parser.yy"
     9151  case 750:
     9152
     9153/* Line 1806 of yacc.c  */
     9154#line 2850 "parser.yy"
    90519155    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90529156    break;
    90539157
    9054   case 749:
    9055 
    9056 /* Line 1806 of yacc.c  */
    9057 #line 2841 "parser.yy"
     9158  case 751:
     9159
     9160/* Line 1806 of yacc.c  */
     9161#line 2855 "parser.yy"
    90589162    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    90599163    break;
    90609164
    9061   case 750:
    9062 
    9063 /* Line 1806 of yacc.c  */
    9064 #line 2848 "parser.yy"
     9165  case 752:
     9166
     9167/* Line 1806 of yacc.c  */
     9168#line 2862 "parser.yy"
    90659169    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    90669170    break;
    90679171
    9068   case 751:
    9069 
    9070 /* Line 1806 of yacc.c  */
    9071 #line 2850 "parser.yy"
     9172  case 753:
     9173
     9174/* Line 1806 of yacc.c  */
     9175#line 2864 "parser.yy"
    90729176    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    90739177    break;
    90749178
    9075   case 754:
    9076 
    9077 /* Line 1806 of yacc.c  */
    9078 #line 2874 "parser.yy"
    9079     { (yyval.en) = 0; }
    9080     break;
    9081 
    9082   case 755:
    9083 
    9084 /* Line 1806 of yacc.c  */
    9085 #line 2876 "parser.yy"
     9179  case 756:
     9180
     9181/* Line 1806 of yacc.c  */
     9182#line 2888 "parser.yy"
     9183    { (yyval.en) = nullptr; }
     9184    break;
     9185
     9186  case 757:
     9187
     9188/* Line 1806 of yacc.c  */
     9189#line 2890 "parser.yy"
    90869190    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    90879191    break;
     
    90909194
    90919195/* Line 1806 of yacc.c  */
    9092 #line 9093 "Parser/parser.cc"
     9196#line 9197 "Parser/parser.cc"
    90939197      default: break;
    90949198    }
     
    93219425
    93229426/* Line 2067 of yacc.c  */
    9323 #line 2879 "parser.yy"
     9427#line 2893 "parser.yy"
    93249428
    93259429// ----end of grammar----
  • src/Parser/parser.h

    r5802a4f r66f8528  
    5959     SIGNED = 277,
    6060     UNSIGNED = 278,
    61      VALIST = 279,
    62      BOOL = 280,
    63      COMPLEX = 281,
    64      IMAGINARY = 282,
    65      TYPEOF = 283,
    66      LABEL = 284,
    67      ENUM = 285,
    68      STRUCT = 286,
    69      UNION = 287,
    70      OTYPE = 288,
    71      FTYPE = 289,
    72      DTYPE = 290,
    73      TRAIT = 291,
    74      SIZEOF = 292,
    75      OFFSETOF = 293,
    76      ATTRIBUTE = 294,
    77      EXTENSION = 295,
    78      IF = 296,
    79      ELSE = 297,
    80      SWITCH = 298,
    81      CASE = 299,
    82      DEFAULT = 300,
    83      DO = 301,
    84      WHILE = 302,
    85      FOR = 303,
    86      BREAK = 304,
    87      CONTINUE = 305,
    88      GOTO = 306,
    89      RETURN = 307,
    90      CHOOSE = 308,
    91      DISABLE = 309,
    92      ENABLE = 310,
    93      FALLTHRU = 311,
    94      TRY = 312,
    95      CATCH = 313,
    96      CATCHRESUME = 314,
    97      FINALLY = 315,
    98      THROW = 316,
    99      THROWRESUME = 317,
    100      AT = 318,
    101      ASM = 319,
    102      ALIGNAS = 320,
    103      ALIGNOF = 321,
    104      ATOMIC = 322,
    105      GENERIC = 323,
    106      NORETURN = 324,
    107      STATICASSERT = 325,
    108      THREADLOCAL = 326,
    109      IDENTIFIER = 327,
    110      QUOTED_IDENTIFIER = 328,
    111      TYPEDEFname = 329,
    112      TYPEGENname = 330,
    113      ATTR_IDENTIFIER = 331,
    114      ATTR_TYPEDEFname = 332,
    115      ATTR_TYPEGENname = 333,
    116      INTEGERconstant = 334,
    117      CHARACTERconstant = 335,
    118      STRINGliteral = 336,
    119      REALDECIMALconstant = 337,
    120      REALFRACTIONconstant = 338,
    121      FLOATINGconstant = 339,
    122      ZERO = 340,
    123      ONE = 341,
    124      ARROW = 342,
    125      ICR = 343,
    126      DECR = 344,
    127      LS = 345,
    128      RS = 346,
    129      LE = 347,
    130      GE = 348,
    131      EQ = 349,
    132      NE = 350,
    133      ANDAND = 351,
    134      OROR = 352,
    135      ELLIPSIS = 353,
    136      MULTassign = 354,
    137      DIVassign = 355,
    138      MODassign = 356,
    139      PLUSassign = 357,
    140      MINUSassign = 358,
    141      LSassign = 359,
    142      RSassign = 360,
    143      ANDassign = 361,
    144      ERassign = 362,
    145      ORassign = 363,
    146      ATassign = 364,
    147      THEN = 365
     61     ZERO_T = 279,
     62     ONE_T = 280,
     63     VALIST = 281,
     64     BOOL = 282,
     65     COMPLEX = 283,
     66     IMAGINARY = 284,
     67     TYPEOF = 285,
     68     LABEL = 286,
     69     ENUM = 287,
     70     STRUCT = 288,
     71     UNION = 289,
     72     OTYPE = 290,
     73     FTYPE = 291,
     74     DTYPE = 292,
     75     TRAIT = 293,
     76     SIZEOF = 294,
     77     OFFSETOF = 295,
     78     ATTRIBUTE = 296,
     79     EXTENSION = 297,
     80     IF = 298,
     81     ELSE = 299,
     82     SWITCH = 300,
     83     CASE = 301,
     84     DEFAULT = 302,
     85     DO = 303,
     86     WHILE = 304,
     87     FOR = 305,
     88     BREAK = 306,
     89     CONTINUE = 307,
     90     GOTO = 308,
     91     RETURN = 309,
     92     CHOOSE = 310,
     93     DISABLE = 311,
     94     ENABLE = 312,
     95     FALLTHRU = 313,
     96     TRY = 314,
     97     CATCH = 315,
     98     CATCHRESUME = 316,
     99     FINALLY = 317,
     100     THROW = 318,
     101     THROWRESUME = 319,
     102     AT = 320,
     103     ASM = 321,
     104     ALIGNAS = 322,
     105     ALIGNOF = 323,
     106     ATOMIC = 324,
     107     GENERIC = 325,
     108     NORETURN = 326,
     109     STATICASSERT = 327,
     110     THREADLOCAL = 328,
     111     IDENTIFIER = 329,
     112     QUOTED_IDENTIFIER = 330,
     113     TYPEDEFname = 331,
     114     TYPEGENname = 332,
     115     ATTR_IDENTIFIER = 333,
     116     ATTR_TYPEDEFname = 334,
     117     ATTR_TYPEGENname = 335,
     118     INTEGERconstant = 336,
     119     CHARACTERconstant = 337,
     120     STRINGliteral = 338,
     121     REALDECIMALconstant = 339,
     122     REALFRACTIONconstant = 340,
     123     FLOATINGconstant = 341,
     124     ZERO = 342,
     125     ONE = 343,
     126     ARROW = 344,
     127     ICR = 345,
     128     DECR = 346,
     129     LS = 347,
     130     RS = 348,
     131     LE = 349,
     132     GE = 350,
     133     EQ = 351,
     134     NE = 352,
     135     ANDAND = 353,
     136     OROR = 354,
     137     ELLIPSIS = 355,
     138     MULTassign = 356,
     139     DIVassign = 357,
     140     MODassign = 358,
     141     PLUSassign = 359,
     142     MINUSassign = 360,
     143     LSassign = 361,
     144     RSassign = 362,
     145     ANDassign = 363,
     146     ERassign = 364,
     147     ORassign = 365,
     148     ATassign = 366,
     149     THEN = 367
    148150   };
    149151#endif
     
    170172#define SIGNED 277
    171173#define UNSIGNED 278
    172 #define VALIST 279
    173 #define BOOL 280
    174 #define COMPLEX 281
    175 #define IMAGINARY 282
    176 #define TYPEOF 283
    177 #define LABEL 284
    178 #define ENUM 285
    179 #define STRUCT 286
    180 #define UNION 287
    181 #define OTYPE 288
    182 #define FTYPE 289
    183 #define DTYPE 290
    184 #define TRAIT 291
    185 #define SIZEOF 292
    186 #define OFFSETOF 293
    187 #define ATTRIBUTE 294
    188 #define EXTENSION 295
    189 #define IF 296
    190 #define ELSE 297
    191 #define SWITCH 298
    192 #define CASE 299
    193 #define DEFAULT 300
    194 #define DO 301
    195 #define WHILE 302
    196 #define FOR 303
    197 #define BREAK 304
    198 #define CONTINUE 305
    199 #define GOTO 306
    200 #define RETURN 307
    201 #define CHOOSE 308
    202 #define DISABLE 309
    203 #define ENABLE 310
    204 #define FALLTHRU 311
    205 #define TRY 312
    206 #define CATCH 313
    207 #define CATCHRESUME 314
    208 #define FINALLY 315
    209 #define THROW 316
    210 #define THROWRESUME 317
    211 #define AT 318
    212 #define ASM 319
    213 #define ALIGNAS 320
    214 #define ALIGNOF 321
    215 #define ATOMIC 322
    216 #define GENERIC 323
    217 #define NORETURN 324
    218 #define STATICASSERT 325
    219 #define THREADLOCAL 326
    220 #define IDENTIFIER 327
    221 #define QUOTED_IDENTIFIER 328
    222 #define TYPEDEFname 329
    223 #define TYPEGENname 330
    224 #define ATTR_IDENTIFIER 331
    225 #define ATTR_TYPEDEFname 332
    226 #define ATTR_TYPEGENname 333
    227 #define INTEGERconstant 334
    228 #define CHARACTERconstant 335
    229 #define STRINGliteral 336
    230 #define REALDECIMALconstant 337
    231 #define REALFRACTIONconstant 338
    232 #define FLOATINGconstant 339
    233 #define ZERO 340
    234 #define ONE 341
    235 #define ARROW 342
    236 #define ICR 343
    237 #define DECR 344
    238 #define LS 345
    239 #define RS 346
    240 #define LE 347
    241 #define GE 348
    242 #define EQ 349
    243 #define NE 350
    244 #define ANDAND 351
    245 #define OROR 352
    246 #define ELLIPSIS 353
    247 #define MULTassign 354
    248 #define DIVassign 355
    249 #define MODassign 356
    250 #define PLUSassign 357
    251 #define MINUSassign 358
    252 #define LSassign 359
    253 #define RSassign 360
    254 #define ANDassign 361
    255 #define ERassign 362
    256 #define ORassign 363
    257 #define ATassign 364
    258 #define THEN 365
     174#define ZERO_T 279
     175#define ONE_T 280
     176#define VALIST 281
     177#define BOOL 282
     178#define COMPLEX 283
     179#define IMAGINARY 284
     180#define TYPEOF 285
     181#define LABEL 286
     182#define ENUM 287
     183#define STRUCT 288
     184#define UNION 289
     185#define OTYPE 290
     186#define FTYPE 291
     187#define DTYPE 292
     188#define TRAIT 293
     189#define SIZEOF 294
     190#define OFFSETOF 295
     191#define ATTRIBUTE 296
     192#define EXTENSION 297
     193#define IF 298
     194#define ELSE 299
     195#define SWITCH 300
     196#define CASE 301
     197#define DEFAULT 302
     198#define DO 303
     199#define WHILE 304
     200#define FOR 305
     201#define BREAK 306
     202#define CONTINUE 307
     203#define GOTO 308
     204#define RETURN 309
     205#define CHOOSE 310
     206#define DISABLE 311
     207#define ENABLE 312
     208#define FALLTHRU 313
     209#define TRY 314
     210#define CATCH 315
     211#define CATCHRESUME 316
     212#define FINALLY 317
     213#define THROW 318
     214#define THROWRESUME 319
     215#define AT 320
     216#define ASM 321
     217#define ALIGNAS 322
     218#define ALIGNOF 323
     219#define ATOMIC 324
     220#define GENERIC 325
     221#define NORETURN 326
     222#define STATICASSERT 327
     223#define THREADLOCAL 328
     224#define IDENTIFIER 329
     225#define QUOTED_IDENTIFIER 330
     226#define TYPEDEFname 331
     227#define TYPEGENname 332
     228#define ATTR_IDENTIFIER 333
     229#define ATTR_TYPEDEFname 334
     230#define ATTR_TYPEGENname 335
     231#define INTEGERconstant 336
     232#define CHARACTERconstant 337
     233#define STRINGliteral 338
     234#define REALDECIMALconstant 339
     235#define REALFRACTIONconstant 340
     236#define FLOATINGconstant 341
     237#define ZERO 342
     238#define ONE 343
     239#define ARROW 344
     240#define ICR 345
     241#define DECR 346
     242#define LS 347
     243#define RS 348
     244#define LE 349
     245#define GE 350
     246#define EQ 351
     247#define NE 352
     248#define ANDAND 353
     249#define OROR 354
     250#define ELLIPSIS 355
     251#define MULTassign 356
     252#define DIVassign 357
     253#define MODassign 358
     254#define PLUSassign 359
     255#define MINUSassign 360
     256#define LSassign 361
     257#define RSassign 362
     258#define ANDassign 363
     259#define ERassign 364
     260#define ORassign 365
     261#define ATassign 366
     262#define THEN 367
    259263
    260264
     
    286290
    287291/* Line 2068 of yacc.c  */
    288 #line 289 "Parser/parser.h"
     292#line 293 "Parser/parser.h"
    289293} YYSTYPE;
    290294# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r5802a4f r66f8528  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Oct 26 17:35:53 2016
    13 // Update Count     : 2066
     12// Last Modified On : Wed Dec 14 21:28:22 2016
     13// Update Count     : 2090
    1414//
    1515
     
    7878%token RESTRICT                                                                                 // C99
    7979%token FORALL LVALUE                                                                    // CFA
    80 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
     80%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED ZERO_T ONE_T
    8181%token VALIST                                                                                   // GCC
    8282%token BOOL COMPLEX IMAGINARY                                                   // C99
     
    153153%type<fctl> for_control_expression
    154154%type<en> subrange
     155%type<constant> asm_name_opt
    155156%type<en> asm_operands_opt asm_operands_list asm_operand
    156157%type<label> label_list
     
    362363                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    363364        | zero_one
    364                 { $$ = new ExpressionNode( build_varref( $1 ) ); }
     365                { $$ = new ExpressionNode( build_constantZeroOne( *$1 ) ); }
    365366        | tuple
    366367        | '(' comma_expression ')'
     
    412413argument_expression:
    413414        // empty
    414                 { $$ = 0; }                                                                             // use default argument
     415                { $$ = nullptr; }                                                               // use default argument
    415416        | assignment_expression
    416417        ;
     
    443444                { $$ = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *$1 ), $2 ) ); }
    444445        | no_attr_identifier fraction_constants
    445                 { $$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) ); }
     446                {
     447                        if( (*$1) == "0" || (*$1) == "1" ) {
     448                                $$ = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *$1 ), $2 ) );
     449                        } else {
     450                                $$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) );
     451                        }
     452                }
    446453        ;
    447454
     
    678685comma_expression_opt:
    679686        // empty
    680                 { $$ = 0; }
     687                { $$ = nullptr; }
    681688        | comma_expression
    682689        ;
     
    714721        | '{'
    715722                // Two scopes are necessary because the block itself has a scope, but every declaration within the block also
    716                 // requires its own scope
     723                // requires its own scope.
    717724          push push
    718725          local_label_declaration_opt                                           // GCC, local labels
     
    768775                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    769776                        // statement.
    770                         $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
     777                        $$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    771778                }
    772779        | CHOOSE '(' comma_expression ')' case_clause           // CFA
     
    775782                {
    776783                        StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
    777                         $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
     784                        $$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    778785                }
    779786        ;
     
    812819switch_clause_list_opt:                                                                 // CFA
    813820        // empty
    814                 { $$ = 0; }
     821                { $$ = nullptr; }
    815822        | switch_clause_list
    816823        ;
     
    825832choose_clause_list_opt:                                                                 // CFA
    826833        // empty
    827                 { $$ = 0; }
     834                { $$ = nullptr; }
    828835        | choose_clause_list
    829836        ;
     
    848855fall_through:                                                                                   // CFA
    849856        FALLTHRU
    850                 { $$ = 0; }
     857                { $$ = nullptr; }
    851858        | FALLTHRU ';'
    852                 { $$ = 0; }
     859                { $$ = nullptr; }
    853860        ;
    854861
     
    984991asm_operands_opt:                                                                               // GCC
    985992        // empty
    986                 { $$ = 0; }                                                                             // use default argument
     993                { $$ = nullptr; }                                                               // use default argument
    987994        | asm_operands_list
    988995        ;
     
    10031010asm_clobbers_list_opt:                                                                  // GCC
    10041011        // empty
    1005                 { $$ = 0; }                                                                             // use default argument
     1012                { $$ = nullptr; }                                                               // use default argument
    10061013        | string_literal
    10071014                { $$ = new ExpressionNode( $1 ); }
    10081015        | asm_clobbers_list_opt ',' string_literal
     1016                // set_last return ParseNode *
    10091017                { $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); }
    10101018        ;
     
    10271035declaration_list_opt:                                                                   // used at beginning of switch statement
    10281036        pop
    1029                 { $$ = 0; }
     1037                { $$ = nullptr; }
    10301038        | declaration_list
    10311039        ;
     
    10391047old_declaration_list_opt:                                                               // used to declare parameter types in K&R style functions
    10401048        pop
    1041                 { $$ = 0; }
     1049                { $$ = nullptr; }
    10421050        | old_declaration_list
    10431051        ;
     
    11141122                {
    11151123                        typedefTable.setNextIdentifier( *$2 );
    1116                         $$ = $1->addName( $2 );
     1124                        $$ = $1->addName( $2 )->addAsmName( $3 );
    11171125                }
    11181126        | new_abstract_tuple identifier_or_type_name asm_name_opt
    11191127                {
    11201128                        typedefTable.setNextIdentifier( *$2 );
    1121                         $$ = $1->addName( $2 );
     1129                        $$ = $1->addName( $2 )->addAsmName( $3 );
    11221130                }
    11231131        | type_qualifier_list new_abstract_tuple identifier_or_type_name asm_name_opt
    11241132                {
    11251133                        typedefTable.setNextIdentifier( *$3 );
    1126                         $$ = $2->addQualifiers( $1 )->addName( $3 );
     1134                        $$ = $2->addQualifiers( $1 )->addName( $3 )->addAsmName( $4 );
    11271135                }
    11281136        ;
     
    12751283                {
    12761284                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1277                         $$ = ( $2->addType( $1 ))->addInitializer( $4 );
     1285                        $$ = ( $2->addType( $1 ))->addAsmName( $3 )->addInitializer( $4 );
    12781286                }
    12791287        | declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
    12801288                {
    12811289                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1282                         $$ = $1->appendList( $1->cloneBaseType( $4->addInitializer( $6 ) ) );
     1290                        $$ = $1->appendList( $1->cloneBaseType( $4->addAsmName( $5 )->addInitializer( $6 ) ) );
    12831291                }
    12841292        ;
     
    13001308type_qualifier_list_opt:                                                                // GCC, used in asm_statement
    13011309        // empty
    1302                 { $$ = 0; }
     1310                { $$ = nullptr; }
    13031311        | type_qualifier_list
    13041312        ;
     
    14101418        | VALIST                                                                                        // GCC, __builtin_va_list
    14111419                { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     1420        | ZERO_T
     1421                { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
     1422        | ONE_T
     1423                { $$ = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
    14121424        ;
    14131425
     
    15221534field_declaration_list:
    15231535        // empty
    1524                 { $$ = 0; }
     1536                { $$ = nullptr; }
    15251537        | field_declaration_list field_declaration
    1526                 { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
     1538                { $$ = $1 ? $1->appendList( $2 ) : $2; }
    15271539        ;
    15281540
     
    15731585bit_subrange_size_opt:
    15741586        // empty
    1575                 { $$ = 0; }
     1587                { $$ = nullptr; }
    15761588        | bit_subrange_size
    15771589                { $$ = $1; }
     
    16101622enumerator_value_opt:
    16111623        // empty
    1612                 { $$ = 0; }
     1624                { $$ = nullptr; }
    16131625        | '=' constant_expression
    16141626                { $$ = $2; }
     
    16191631new_parameter_type_list_opt:                                                    // CFA
    16201632        // empty
    1621                 { $$ = 0; }
     1633                { $$ = nullptr; }
    16221634        | new_parameter_type_list
    16231635        ;
     
    16541666parameter_type_list_opt:
    16551667        // empty
    1656                 { $$ = 0; }
     1668                { $$ = nullptr; }
    16571669        | parameter_type_list
    16581670        ;
     
    17021714                {
    17031715                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1704                         $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
     1716                        $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr );
    17051717                }
    17061718        | declaration_specifier type_parameter_redeclarator assignment_opt
    17071719                {
    17081720                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1709                         $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
     1721                        $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr );
    17101722                }
    17111723        ;
     
    17631775initializer_opt:
    17641776        // empty
    1765                 { $$ = 0; }
     1777                { $$ = nullptr; }
    17661778        | '=' initializer
    17671779                { $$ = $2; }
     
    17771789initializer_list:
    17781790        // empty
    1779                 { $$ = 0; }
     1791                { $$ = nullptr; }
    17801792        | initializer
    17811793        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
     
    18881900assertion_list_opt:                                                                             // CFA
    18891901        // empty
    1890                 { $$ = 0; }
     1902                { $$ = nullptr; }
    18911903        | assertion_list_opt assertion
    1892                 { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
     1904                { $$ = $1 ? $1->appendList( $2 ) : $2; }
    18931905        ;
    18941906
     
    19021914                { $$ = $4; }
    19031915        | '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')'
    1904                 { $$ = 0; }
     1916                { $$ = nullptr; }
    19051917        ;
    19061918
     
    20112023                {}                                                                                              // empty input file
    20122024        | external_definition_list
    2013                 { parseTree = parseTree != nullptr ? parseTree->appendList( $1 ) : $1;  }
     2025                { parseTree = parseTree ? parseTree->appendList( $1 ) : $1;     }
    20142026        ;
    20152027
     
    20172029        external_definition
    20182030        | external_definition_list push external_definition
    2019                 { $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; }
     2031                { $$ = $1 ? $1->appendList( $3 ) : $3; }
    20202032        ;
    20212033
    20222034external_definition_list_opt:
    20232035        // empty
    2024                 { $$ = 0; }
     2036                { $$ = nullptr; }
    20252037        | external_definition_list
    20262038        ;
     
    21452157asm_name_opt:                                                                                   // GCC
    21462158        // empty
    2147         | ASM '(' string_literal_list ')' attribute_list_opt { delete $3; }     // FIX ME: unimplemented
     2159                { $$ = nullptr; }
     2160        | ASM '(' string_literal ')' attribute_list_opt
     2161                { $$ = $3; }
    21482162        ;
    21492163
    21502164attribute_list_opt:                                                                             // GCC
    21512165        // empty
    2152                 { $$ = 0; }
     2166                { $$ = nullptr; }
    21532167        | attribute_list
    21542168        ;
     
    21632177        ATTRIBUTE '(' '(' attribute_parameter_list ')' ')'
    21642178        //              { $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
    2165                 { $$ = 0; }
     2179                { $$ = nullptr; }
    21662180        ;
    21672181
     
    28722886assignment_opt:
    28732887        // empty
    2874                 { $$ = 0; }
     2888                { $$ = nullptr; }
    28752889        | '=' assignment_expression
    28762890                { $$ = $2; }
  • src/Parser/parseutility.cc

    r5802a4f r66f8528  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // parseutility.cc -- 
     7// parseutility.cc --
    88//
    99// Author           : Rodolfo G. Esteves
     
    1212// Last Modified On : Sun Aug 14 23:45:03 2016
    1313// Update Count     : 3
    14 // 
     14//
    1515
    1616#include "parseutility.h"
     
    2626        UntypedExpr *comparison = new UntypedExpr( new NameExpr( "?!=?" ) );
    2727        comparison->get_args().push_back( orig );
    28         comparison->get_args().push_back( new NameExpr( "0" ) );
     28        comparison->get_args().push_back( new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) ) );
    2929        return new CastExpr( comparison, new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
    3030}
  • src/ResolvExpr/CommonType.cc

    r5802a4f r66f8528  
    4242                virtual void visit( OneType *oneType );
    4343
     44                void getCommonWithVoidPointer( PointerType* voidPointer, PointerType* otherPointer );
    4445                template< typename RefType > void handleRefType( RefType *inst, Type *other );
    4546
     
    143144        }
    144145
    145         /// true if a common type for t must be a complete type
    146         bool requiredComplete( Type * t ) {
    147                 if ( TypeInstType * inst = dynamic_cast< TypeInstType * > ( t ) ) {
    148                         return inst->get_baseType()->isComplete();
     146        void CommonType::getCommonWithVoidPointer( PointerType* voidPointer, PointerType* otherPointer ) {
     147                if ( TypeInstType* var = dynamic_cast< TypeInstType* >( otherPointer->get_base() ) ) {
     148                        OpenVarSet::const_iterator entry = openVars.find( var->get_name() );
     149                        if ( entry != openVars.end() ) {
     150                                AssertionSet need, have;
     151                                WidenMode widen( widenFirst, widenSecond );
     152                                if ( entry != openVars.end() && ! bindVar(var, voidPointer->get_base(), entry->second, env, need, have, openVars, widen, indexer ) ) return;
     153                        }
    149154                }
    150                 return false;
     155                result = voidPointer->clone();
     156                result->get_qualifiers() += otherPointer->get_qualifiers();
    151157        }
    152158
    153159        void CommonType::visit( PointerType *pointerType ) {
    154160                if ( PointerType *otherPointer = dynamic_cast< PointerType* >( type2 ) ) {
    155                         // Note: relationship between formal and actual types is antisymmetric
    156                         //   void free(void *);
    157                         //   forall(otype T) void foo(T *);
    158                         //
    159                         // should be able to pass T* to free, but should not be able to pass a void* to foo.
    160                         // because of this, the requiredComplete check occurs only on the first, since it corresponds
    161                         // to the formal parameter type (though this may be incorrect in some cases, in which case
    162                         // perhaps the widen mode needs to incorporate another bit for whether this is a formal or actual context)
    163                         if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) && ! isFtype(pointerType->get_base(), indexer) && ! requiredComplete( pointerType->get_base() ) ) {
    164                                 result = otherPointer->clone();
    165                                 result->get_qualifiers() += pointerType->get_qualifiers();
     161                        if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) && ! isFtype(pointerType->get_base(), indexer) ) {
     162                                getCommonWithVoidPointer( otherPointer, pointerType );
    166163                        } else if ( widenSecond && dynamic_cast< VoidType* >( pointerType->get_base() ) && ! isFtype(otherPointer->get_base(), indexer) ) {
    167                                 result = pointerType->clone();
    168                                 result->get_qualifiers() += otherPointer->get_qualifiers();
     164                                getCommonWithVoidPointer( pointerType, otherPointer );
    169165                        } else if ( ( pointerType->get_base()->get_qualifiers() >= otherPointer->get_base()->get_qualifiers() || widenFirst )
    170166                                           && ( pointerType->get_base()->get_qualifiers() <= otherPointer->get_base()->get_qualifiers() || widenSecond ) ) {
     
    256252                                        result->get_qualifiers() += zeroType->get_qualifiers();
    257253                                }
     254                        } else if ( widenSecond && dynamic_cast< OneType* >( type2 ) ) {
     255                                result = new BasicType( zeroType->get_qualifiers(), BasicType::SignedInt );
     256                                result->get_qualifiers() += type2->get_qualifiers();
    258257                        }
    259258                }
     
    267266                                        result->get_qualifiers() += oneType->get_qualifiers();
    268267                                }
     268                        } else if ( widenSecond && dynamic_cast< ZeroType* >( type2 ) ) {
     269                                result = new BasicType( oneType->get_qualifiers(), BasicType::SignedInt );
     270                                result->get_qualifiers() += type2->get_qualifiers();
    269271                        }
    270272                }
  • src/ResolvExpr/Resolver.cc

    r5802a4f r66f8528  
    404404        template< typename AggrInst >
    405405        TypeSubstitution makeGenericSubstitutuion( AggrInst * inst ) {
     406                assert( inst );
     407                assert( inst->get_baseParameters() );
    406408                std::list< TypeDecl * > baseParams = *inst->get_baseParameters();
    407409                std::list< Expression * > typeSubs = inst->get_parameters();
     
    444446
    445447        void Resolver::resolveAggrInit( ReferenceToType * inst, InitIterator & init, InitIterator & initEnd ) {
    446 
    447448                if ( StructInstType * sit = dynamic_cast< StructInstType * >( inst ) ) {
    448449                        TypeSubstitution sub = makeGenericSubstitutuion( sit );
     
    455456                        }
    456457                } else if ( UnionInstType * uit = dynamic_cast< UnionInstType * >( inst ) ) {
    457                         TypeSubstitution sub = makeGenericSubstitutuion( sit );
     458                        TypeSubstitution sub = makeGenericSubstitutuion( uit );
    458459                        UnionDecl * un = uit->get_baseUnion();
    459460                        // only resolve to the first member of a union
  • src/ResolvExpr/Unify.cc

    r5802a4f r66f8528  
    3131
    3232namespace ResolvExpr {
    33         struct WidenMode {
    34                 WidenMode( bool widenFirst, bool widenSecond ): widenFirst( widenFirst ), widenSecond( widenSecond ) {}
    35                 WidenMode &operator|=( const WidenMode &other ) { widenFirst |= other.widenFirst; widenSecond |= other.widenSecond; return *this; }
    36                 WidenMode &operator&=( const WidenMode &other ) { widenFirst &= other.widenFirst; widenSecond &= other.widenSecond; return *this; }
    37                 WidenMode operator|( const WidenMode &other ) { WidenMode newWM( *this ); newWM |= other; return newWM; }
    38                 WidenMode operator&( const WidenMode &other ) { WidenMode newWM( *this ); newWM &= other; return newWM; }
    39                 operator bool() { return widenFirst && widenSecond; }
    40 
    41                 bool widenFirst : 1, widenSecond : 1;
    42         };
    4333
    4434        class Unify : public Visitor {
  • src/ResolvExpr/Unify.h

    r5802a4f r66f8528  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Unify.h -- 
     7// Unify.h --
    88//
    99// Author           : Richard C. Bilson
     
    2727
    2828namespace ResolvExpr {
     29        struct WidenMode {
     30                WidenMode( bool widenFirst, bool widenSecond ): widenFirst( widenFirst ), widenSecond( widenSecond ) {}
     31                WidenMode &operator|=( const WidenMode &other ) { widenFirst |= other.widenFirst; widenSecond |= other.widenSecond; return *this; }
     32                WidenMode &operator&=( const WidenMode &other ) { widenFirst &= other.widenFirst; widenSecond &= other.widenSecond; return *this; }
     33                WidenMode operator|( const WidenMode &other ) { WidenMode newWM( *this ); newWM |= other; return newWM; }
     34                WidenMode operator&( const WidenMode &other ) { WidenMode newWM( *this ); newWM &= other; return newWM; }
     35                operator bool() { return widenFirst && widenSecond; }
     36
     37                bool widenFirst : 1, widenSecond : 1;
     38        };
     39
     40        bool bindVar( TypeInstType *typeInst, Type *other, const TypeDecl::Data & data, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer );
    2941        bool unify( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, OpenVarSet &openVars, const SymTab::Indexer &indexer );
    3042        bool unify( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, OpenVarSet &openVars, const SymTab::Indexer &indexer, Type *&commonType );
  • src/SymTab/Autogen.h

    r5802a4f r66f8528  
    8888                if ( forward ) {
    8989                        // generate: for ( int i = 0; i < 0; ++i )
    90                         begin = new NameExpr( "0" );
     90                        begin = new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) );
    9191                        end = array->get_dimension()->clone();
    9292                        cmp = new NameExpr( "?<?" );
     
    9696                        begin = new UntypedExpr( new NameExpr( "?-?" ) );
    9797                        ((UntypedExpr*)begin)->get_args().push_back( array->get_dimension()->clone() );
    98                         ((UntypedExpr*)begin)->get_args().push_back( new NameExpr( "1" ) );
    99                         end = new NameExpr( "0" );
     98                        ((UntypedExpr*)begin)->get_args().push_back( new ConstantExpr( Constant( new OneType( emptyQualifiers ), "1" ) ) );
     99                        end = new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) );
    100100                        cmp = new NameExpr( "?>=?" );
    101101                        update = new NameExpr( "--?" );
     
    175175} // namespace SymTab
    176176#endif // AUTOGEN_H
    177 
  • src/SynTree/Declaration.h

    r5802a4f r66f8528  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 18 23:50:24 2016
    13 // Update Count     : 40
     12// Last Modified On : Tue Dec 13 13:37:33 2016
     13// Update Count     : 49
    1414//
    1515
     
    6969
    7070        std::string get_mangleName() const { return mangleName; }
    71         void set_mangleName( std::string newValue ) { mangleName = newValue; }
     71        DeclarationWithType * set_mangleName( std::string newValue ) { mangleName = newValue; return this; }
    7272
    7373        std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }
    7474
    7575        int get_scopeLevel() const { return scopeLevel; }
    76         void set_scopeLevel( int newValue ) { scopeLevel = newValue; }
     76        DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }
     77
     78        ConstantExpr *get_asmName() const { return asmName; }
     79        DeclarationWithType * set_asmName( ConstantExpr *newValue ) { asmName = newValue; return this; }
    7780
    7881        std::list< Attribute * >& get_attributes() { return attributes; }
     
    8790        // this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2
    8891        std::string mangleName;
    89         // need to remember the scope level at which the variable was declared, so that
    90         // shadowed identifiers can be accessed
     92        // need to remember the scope level at which the variable was declared, so that shadowed identifiers can be accessed
    9193        int scopeLevel = 0;
    9294
     95        ConstantExpr *asmName;
    9396        std::list< Attribute * > attributes;
    9497};
     
    106109        Initializer *get_init() const { return init; }
    107110        void set_init( Initializer *newValue ) { init = newValue; }
     111
    108112        Expression *get_bitfieldWidth() const { return bitfieldWidth; }
    109113        void set_bitfieldWidth( Expression *newValue ) { bitfieldWidth = newValue; }
  • src/SynTree/DeclarationWithType.cc

    r5802a4f r66f8528  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 18 23:50:41 2016
    13 // Update Count     : 4
     12// Last Modified On : Tue Dec 13 14:49:43 2016
     13// Update Count     : 7
    1414//
    1515
     
    2020
    2121DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes )
    22                 : Declaration( name, sc, linkage ), attributes( attributes ) {
     22        : Declaration( name, sc, linkage ), asmName( nullptr ), attributes( attributes ) {
    2323}
    2424
     
    2626                : Declaration( other ), mangleName( other.mangleName ), scopeLevel( other.scopeLevel ) {
    2727        cloneAll( other.attributes, attributes );
     28        asmName = maybeClone( other.asmName );
    2829}
    2930
    3031DeclarationWithType::~DeclarationWithType() {
    3132        deleteAll( attributes );
     33        delete asmName;
    3234}
    3335
  • src/SynTree/Expression.cc

    r5802a4f r66f8528  
    438438}
    439439
    440 NameExpr::NameExpr( std::string _name, Expression *_aname ) : Expression( _aname ), name(_name) {}
     440NameExpr::NameExpr( std::string _name, Expression *_aname ) : Expression( _aname ), name(_name) {
     441        assertf(_name != "0", "Zero is not a valid name\n");
     442        assertf(_name != "1", "One is not a valid name\n");
     443}
    441444
    442445NameExpr::NameExpr( const NameExpr &other ) : Expression( other ), name( other.name ) {
  • src/SynTree/Type.h

    r5802a4f r66f8528  
    8282        ForallList forall;
    8383};
     84
     85extern Type::Qualifiers emptyQualifiers;                                // no qualifiers on constants
    8486
    8587class VoidType : public Type {
  • src/driver/Makefile.am

    r5802a4f r66f8528  
    1616
    1717# applies to both programs
    18 AM_CXXFLAGS = -Wall
     18AM_CXXFLAGS = -Wall -O2
     19if BUILD_NO_LIB
     20else
     21AM_CXXFLAGS += -DHAVE_LIBCFA
     22endif
     23if BUILD_DEBUG
     24AM_CXXFLAGS += -DHAVE_LIBCFA_DEBUG
     25endif
     26if BUILD_RELEASE
     27AM_CXXFLAGS += -DHAVE_LIBCFA_RELEASE
     28endif
    1929
    2030bin_PROGRAMS = cfa
  • src/driver/Makefile.in

    r5802a4f r66f8528  
    3636PRE_UNINSTALL = :
    3737POST_UNINSTALL = :
     38build_triplet = @build@
     39host_triplet = @host@
     40@BUILD_NO_LIB_FALSE@am__append_1 = -DHAVE_LIBCFA
     41@BUILD_DEBUG_TRUE@am__append_2 = -DHAVE_LIBCFA_DEBUG
     42@BUILD_RELEASE_TRUE@am__append_3 = -DHAVE_LIBCFA_RELEASE
    3843bin_PROGRAMS = cfa$(EXEEXT)
    3944cc1lib_PROGRAMS = cc1$(EXEEXT)
     
    9297BACKEND_CC = @BACKEND_CC@
    9398CC = @CC@
     99CCAS = @CCAS@
     100CCASDEPMODE = @CCASDEPMODE@
     101CCASFLAGS = @CCASFLAGS@
    94102CCDEPMODE = @CCDEPMODE@
    95103CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    126134LIBS = @LIBS@
    127135LTLIBOBJS = @LTLIBOBJS@
     136MACHINE_TYPE = @MACHINE_TYPE@
    128137MAINT = @MAINT@
    129138MAKEINFO = @MAKEINFO@
     
    157166am__untar = @am__untar@
    158167bindir = @bindir@
     168build = @build@
    159169build_alias = @build_alias@
     170build_cpu = @build_cpu@
     171build_os = @build_os@
     172build_vendor = @build_vendor@
    160173builddir = @builddir@
    161174datadir = @datadir@
     
    164177dvidir = @dvidir@
    165178exec_prefix = @exec_prefix@
     179host = @host@
    166180host_alias = @host_alias@
     181host_cpu = @host_cpu@
     182host_os = @host_os@
     183host_vendor = @host_vendor@
    167184htmldir = @htmldir@
    168185includedir = @includedir@
     
    190207
    191208# applies to both programs
    192 AM_CXXFLAGS = -Wall
     209AM_CXXFLAGS = -Wall -O2 $(am__append_1) $(am__append_2) \
     210        $(am__append_3)
    193211cfa_SOURCES = cfa.cc
    194212
  • src/driver/cfa.cc

    r5802a4f r66f8528  
    231231        } // if
    232232
    233         string d;
    234         if ( debug ) {
    235                 d = "-d";
    236         } // if
    237 
    238233        // add the CFA include-library paths, which allow direct access to header files without directory qualification
    239 
    240234        args[nargs] = "-I" CFA_INCDIR;
    241235        nargs += 1;
     
    244238                nargs += 1;
    245239        } // if
     240        args[nargs] = "-I" CFA_INCDIR "/concurrency";
     241        nargs += 1;
    246242        args[nargs] = "-I" CFA_INCDIR "/containers";
    247243        nargs += 1;
    248244
     245#ifdef HAVE_LIBCFA
    249246        if ( link ) {
     247                #if ! defined(HAVE_LIBCFA_RELEASE)
     248                        if( !debug ) {
     249                                cerr << "error: Option -nodebug is not available, libcfa was not installed." << endl;
     250                                exit( EXIT_FAILURE );
     251                                }
     252                #endif
     253                #if ! defined(HAVE_LIBCFA_DEBUG)
     254                        if( debug ) {
     255                                cerr << "error: Option -debug is not available, libcfa-d was not installed." << endl;
     256                                exit( EXIT_FAILURE );
     257                                }
     258                #endif
     259
    250260                // include the cfa library in case it's needed
    251261                args[nargs] = "-L" CFA_LIBDIR;
    252262                nargs += 1;
    253                 args[nargs] = "-lcfa";
    254                 nargs += 1;
    255         } // if
     263                if( debug ) {
     264                        args[nargs] = "-lcfa-d";
     265                } else {
     266                        args[nargs] = "-lcfa";
     267                }
     268                nargs += 1;
     269        } // if
     270#endif //HAVE_LIBCFA
    256271
    257272        // add the correct set of flags based on the type of compile this is
  • src/examples/Makefile.am

    r5802a4f r66f8528  
    1616
    1717# applies to both programs
    18 CFLAGS = -g -Wall -Wno-unused-function # TEMPORARY: does not build with -O2
     18CFLAGS =
     19AM_CFLAGS = -g -Wall -Wno-unused-function -O2
    1920CC = @CFA_BINDIR@/cfa
    2021
    21 noinst_PROGRAMS = fstream_test vector_test avl_test # build but do not install
     22noinst_PROGRAMS = fstream_test vector_test avl_test Bench # build but do not install
    2223fstream_test_SOURCES = fstream_test.c
    2324vector_test_SOURCES = vector_int.c array.c vector_test.c
    2425avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
     26
     27Bench : Bench.c
     28        @for ccflags in "-debug" "-nodebug"; do \
     29                echo ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
     30                ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
     31                ./a.out ; \
     32        done ; \
     33        rm -f ./a.out ;
  • src/examples/Makefile.in

    r5802a4f r66f8528  
    3636PRE_UNINSTALL = :
    3737POST_UNINSTALL = :
     38build_triplet = @build@
     39host_triplet = @host@
    3840noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
    39         avl_test$(EXEEXT)
     41        avl_test$(EXEEXT) Bench$(EXEEXT)
    4042subdir = src/examples
    4143DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
     
    4951CONFIG_CLEAN_VPATH_FILES =
    5052PROGRAMS = $(noinst_PROGRAMS)
     53Bench_SOURCES = Bench.c
     54Bench_OBJECTS = Bench.$(OBJEXT)
     55Bench_LDADD = $(LDADD)
    5156am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \
    5257        avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \
     
    8489am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    8590am__v_GEN_0 = @echo "  GEN   " $@;
    86 SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
     91SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    8792        $(vector_test_SOURCES)
    88 DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
     93DIST_SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    8994        $(vector_test_SOURCES)
    9095ETAGS = etags
     
    101106BACKEND_CC = @BACKEND_CC@
    102107CC = @CFA_BINDIR@/cfa
     108CCAS = @CCAS@
     109CCASDEPMODE = @CCASDEPMODE@
     110CCASFLAGS = @CCASFLAGS@
    103111CCDEPMODE = @CCDEPMODE@
    104112CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    110118
    111119# applies to both programs
    112 CFLAGS = -g -Wall -Wno-unused-function # TEMPORARY: does not build with -O2
     120CFLAGS =
    113121CPP = @CPP@
    114122CPPFLAGS = @CPPFLAGS@
     
    137145LIBS = @LIBS@
    138146LTLIBOBJS = @LTLIBOBJS@
     147MACHINE_TYPE = @MACHINE_TYPE@
    139148MAINT = @MAINT@
    140149MAKEINFO = @MAKEINFO@
     
    168177am__untar = @am__untar@
    169178bindir = @bindir@
     179build = @build@
    170180build_alias = @build_alias@
     181build_cpu = @build_cpu@
     182build_os = @build_os@
     183build_vendor = @build_vendor@
    171184builddir = @builddir@
    172185datadir = @datadir@
     
    175188dvidir = @dvidir@
    176189exec_prefix = @exec_prefix@
     190host = @host@
    177191host_alias = @host_alias@
     192host_cpu = @host_cpu@
     193host_os = @host_os@
     194host_vendor = @host_vendor@
    178195htmldir = @htmldir@
    179196includedir = @includedir@
     
    199216top_builddir = @top_builddir@
    200217top_srcdir = @top_srcdir@
     218AM_CFLAGS = -g -Wall -Wno-unused-function -O2
    201219fstream_test_SOURCES = fstream_test.c
    202220vector_test_SOURCES = vector_int.c array.c vector_test.c
     
    255273        -rm -f *.tab.c
    256274
     275@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bench.Po@am__quote@
    257276@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
    258277@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl-private.Po@am__quote@
     
    580599
    581600
     601Bench : Bench.c
     602        @for ccflags in "-debug" "-nodebug"; do \
     603                echo ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
     604                ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
     605                ./a.out ; \
     606        done ; \
     607        rm -f ./a.out ;
     608
    582609# Tell versions [3.59,3.63) of GNU make to not export all variables.
    583610# Otherwise a system limit (for SysV at least) may be exceeded.
  • src/libcfa/Makefile.am

    r5802a4f r66f8528  
    1111## Created On       : Sun May 31 08:54:01 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Fri Aug 26 12:03:37 2016
    14 ## Update Count     : 199
     13## Last Modified On : Wed Dec 14 15:17:30 2016
     14## Update Count     : 211
    1515###############################################################################
    1616
     
    1818AUTOMAKE_OPTIONS = subdir-objects
    1919
    20 lib_LIBRARIES = libcfa.a
     20lib_LIBRARIES =
    2121
    22 # put into lib for now
    23 cfalibdir = ${libdir}
    24 cfalib_DATA = builtins.cf extras.cf prelude.cf
     22if BUILD_RELEASE
     23lib_LIBRARIES += libcfa.a
     24endif
    2525
    26 # create extra forward types/declarations to reduce inclusion of library files
    27 extras.cf : extras.regx extras.c
    28         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
     26if BUILD_DEBUG
     27lib_LIBRARIES += libcfa-d.a
     28endif
    2929
    30 # create forward declarations for gcc builtins
    31 builtins.cf : builtins.c
    32         ${AM_V_GEN}if [ -e $< ] ; then \
    33                 @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    34         fi
     30libcfa_a-libcfa-prelude.o : libcfa-prelude.c
     31         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -O2 -c -o $@ $<
    3532
    36 builtins.c : builtins.def prototypes.awk
    37         ${AM_V_GEN}if [ -e $< ] ; then \
    38                 @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    39         fi
     33libcfa_d_a-libcfa-prelude.o : libcfa-prelude.c
     34         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -D__CFA_DEBUG__ -O0 -c -o $@ $<
    4035
    41 builtins.def :
     36EXTRA_FLAGS = -g -Wall -Wno-unused-function -I${abs_top_srcdir}/src/libcfa/libhdr -imacros libcfa-prelude.c @CFA_FLAGS@
    4237
    43 prototypes.awk :
    44 
    45 MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
    46 
    47 #--------------------------------------------------
    48 
    49 libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
    50         ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    51 
    52 libcfa-prelude.o : libcfa-prelude.c
    53          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
    54 
    55 CFLAGS = -quiet -no-include-stdhdr -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     38AM_CCASFLAGS = @CFA_FLAGS@
     39CFLAGS = -quiet -no-include-stdhdr -XCFA -t -B${abs_top_srcdir}/src/driver ${EXTRA_FLAGS}
    5640CC = ${abs_top_srcdir}/src/driver/cfa
    5741
    58 headers = limits stdlib math iostream fstream iterator rational containers/vector
     42headers = limits stdlib math iostream fstream iterator rational assert containers/vector concurrency/threads
     43runtimehdrs = concurrency
    5944libobjs = ${headers:=.o}
    6045
     
    6348        @true
    6449
     50concurrency/libcfa_a-invoke.o : concurrency/invoke.c
     51        ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
     52
     53concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c
     54        ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
     55
    6556${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    6657
    67 libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
     58libsrc = libcfa-prelude.c ${headers:=.c} concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/invoke.c
     59
     60libcfa_a_SOURCES = ${libsrc}
     61libcfa_a_CFLAGS = -nodebug -O2
     62libcfa_d_a_SOURCES = ${libsrc}
     63libcfa_d_a_CFLAGS = -debug -O0
    6864
    6965stdhdr = ${shell echo stdhdr/*}
    7066
    71 nobase_include_HEADERS = ${headers} ${stdhdr}
     67nobase_include_HEADERS = ${headers} ${stdhdr} concurrency/invoke.h
    7268
    7369CLEANFILES = libcfa-prelude.c
  • src/libcfa/Makefile.in

    r5802a4f r66f8528  
    1818######################## -*- Mode: Makefile-Automake -*- ######################
    1919###############################################################################
    20 
    2120
    2221
     
    3837PRE_UNINSTALL = :
    3938POST_UNINSTALL = :
     39build_triplet = @build@
     40host_triplet = @host@
     41@BUILD_RELEASE_TRUE@am__append_1 = libcfa.a
     42@BUILD_DEBUG_TRUE@am__append_2 = libcfa-d.a
    4043subdir = src/libcfa
    4144DIST_COMMON = $(nobase_include_HEADERS) $(srcdir)/Makefile.am \
     
    7679         $(am__cd) "$$dir" && rm -f $$files; }; \
    7780  }
    78 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)" \
    79         "$(DESTDIR)$(includedir)"
     81am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
    8082LIBRARIES = $(lib_LIBRARIES)
    8183AR = ar
     
    8789am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    8890am__v_at_0 = @
     91libcfa_d_a_AR = $(AR) $(ARFLAGS)
     92libcfa_d_a_LIBADD =
     93am__dirstamp = $(am__leading_dot)dirstamp
     94am__objects_1 = libcfa_d_a-limits.$(OBJEXT) \
     95        libcfa_d_a-stdlib.$(OBJEXT) libcfa_d_a-math.$(OBJEXT) \
     96        libcfa_d_a-iostream.$(OBJEXT) libcfa_d_a-fstream.$(OBJEXT) \
     97        libcfa_d_a-iterator.$(OBJEXT) libcfa_d_a-rational.$(OBJEXT) \
     98        libcfa_d_a-assert.$(OBJEXT) \
     99        containers/libcfa_d_a-vector.$(OBJEXT) \
     100        concurrency/libcfa_d_a-threads.$(OBJEXT)
     101am__objects_2 = libcfa_d_a-libcfa-prelude.$(OBJEXT) $(am__objects_1) \
     102        concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) \
     103        concurrency/libcfa_d_a-invoke.$(OBJEXT)
     104am_libcfa_d_a_OBJECTS = $(am__objects_2)
     105libcfa_d_a_OBJECTS = $(am_libcfa_d_a_OBJECTS)
    89106libcfa_a_AR = $(AR) $(ARFLAGS)
    90107libcfa_a_LIBADD =
    91 am__dirstamp = $(am__leading_dot)dirstamp
    92 am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) math.$(OBJEXT) \
    93         iostream.$(OBJEXT) fstream.$(OBJEXT) iterator.$(OBJEXT) \
    94         rational.$(OBJEXT) containers/vector.$(OBJEXT)
    95 am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1)
     108am__objects_3 = libcfa_a-limits.$(OBJEXT) libcfa_a-stdlib.$(OBJEXT) \
     109        libcfa_a-math.$(OBJEXT) libcfa_a-iostream.$(OBJEXT) \
     110        libcfa_a-fstream.$(OBJEXT) libcfa_a-iterator.$(OBJEXT) \
     111        libcfa_a-rational.$(OBJEXT) libcfa_a-assert.$(OBJEXT) \
     112        containers/libcfa_a-vector.$(OBJEXT) \
     113        concurrency/libcfa_a-threads.$(OBJEXT)
     114am__objects_4 = libcfa_a-libcfa-prelude.$(OBJEXT) $(am__objects_3) \
     115        concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) \
     116        concurrency/libcfa_a-invoke.$(OBJEXT)
     117am_libcfa_a_OBJECTS = $(am__objects_4)
    96118libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
    97119DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
     
    99121am__depfiles_maybe = depfiles
    100122am__mv = mv -f
     123CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
     124        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
     125AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
     126am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
     127am__v_CPPAS_0 = @echo "  CPPAS " $@;
     128AM_V_lt = $(am__v_lt_@AM_V@)
     129am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     130am__v_lt_0 = --silent
    101131COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    102132        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     
    112142am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    113143am__v_GEN_0 = @echo "  GEN   " $@;
    114 SOURCES = $(libcfa_a_SOURCES)
    115 DIST_SOURCES = $(libcfa_a_SOURCES)
    116 DATA = $(cfalib_DATA)
     144SOURCES = $(libcfa_d_a_SOURCES) $(libcfa_a_SOURCES)
     145DIST_SOURCES = $(libcfa_d_a_SOURCES) $(libcfa_a_SOURCES)
    117146HEADERS = $(nobase_include_HEADERS)
    118147ETAGS = etags
     
    129158BACKEND_CC = @BACKEND_CC@
    130159CC = ${abs_top_srcdir}/src/driver/cfa
     160CCAS = @CCAS@
     161CCASDEPMODE = @CCASDEPMODE@
     162CCASFLAGS = @CCASFLAGS@
    131163CCDEPMODE = @CCDEPMODE@
    132164CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    136168CFA_LIBDIR = @CFA_LIBDIR@
    137169CFA_PREFIX = @CFA_PREFIX@
    138 CFLAGS = -quiet -no-include-stdhdr -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     170CFLAGS = -quiet -no-include-stdhdr -XCFA -t -B${abs_top_srcdir}/src/driver ${EXTRA_FLAGS}
    139171CPP = @CPP@
    140172CPPFLAGS = @CPPFLAGS@
     
    163195LIBS = @LIBS@
    164196LTLIBOBJS = @LTLIBOBJS@
     197MACHINE_TYPE = @MACHINE_TYPE@
    165198MAINT = @MAINT@
    166199MAKEINFO = @MAKEINFO@
     
    194227am__untar = @am__untar@
    195228bindir = @bindir@
     229build = @build@
    196230build_alias = @build_alias@
     231build_cpu = @build_cpu@
     232build_os = @build_os@
     233build_vendor = @build_vendor@
    197234builddir = @builddir@
    198235datadir = @datadir@
     
    201238dvidir = @dvidir@
    202239exec_prefix = @exec_prefix@
     240host = @host@
    203241host_alias = @host_alias@
     242host_cpu = @host_cpu@
     243host_os = @host_os@
     244host_vendor = @host_vendor@
    204245htmldir = @htmldir@
    205246includedir = @includedir@
     
    228269# create object files in directory with source files
    229270AUTOMAKE_OPTIONS = subdir-objects
    230 lib_LIBRARIES = libcfa.a
    231 
    232 # put into lib for now
    233 cfalibdir = ${libdir}
    234 cfalib_DATA = builtins.cf extras.cf prelude.cf
    235 MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
    236 headers = limits stdlib math iostream fstream iterator rational containers/vector
     271lib_LIBRARIES = $(am__append_1) $(am__append_2)
     272EXTRA_FLAGS = -g -Wall -Wno-unused-function -I${abs_top_srcdir}/src/libcfa/libhdr -imacros libcfa-prelude.c @CFA_FLAGS@
     273AM_CCASFLAGS = @CFA_FLAGS@
     274headers = limits stdlib math iostream fstream iterator rational assert containers/vector concurrency/threads
     275runtimehdrs = concurrency
    237276libobjs = ${headers:=.o}
    238 libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
     277libsrc = libcfa-prelude.c ${headers:=.c} concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/invoke.c
     278libcfa_a_SOURCES = ${libsrc}
     279libcfa_a_CFLAGS = -nodebug -O2
     280libcfa_d_a_SOURCES = ${libsrc}
     281libcfa_d_a_CFLAGS = -debug -O0
    239282stdhdr = ${shell echo stdhdr/*}
    240 nobase_include_HEADERS = ${headers} ${stdhdr}
     283nobase_include_HEADERS = ${headers} ${stdhdr} concurrency/invoke.h
    241284CLEANFILES = libcfa-prelude.c
    242285all: all-am
    243286
    244287.SUFFIXES:
    245 .SUFFIXES: .c .o .obj
     288.SUFFIXES: .S .c .o .obj
    246289$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
    247290        @for dep in $?; do \
     
    310353        @$(MKDIR_P) containers/$(DEPDIR)
    311354        @: > containers/$(DEPDIR)/$(am__dirstamp)
    312 containers/vector.$(OBJEXT): containers/$(am__dirstamp) \
     355containers/libcfa_d_a-vector.$(OBJEXT): containers/$(am__dirstamp) \
    313356        containers/$(DEPDIR)/$(am__dirstamp)
     357concurrency/$(am__dirstamp):
     358        @$(MKDIR_P) concurrency
     359        @: > concurrency/$(am__dirstamp)
     360concurrency/$(DEPDIR)/$(am__dirstamp):
     361        @$(MKDIR_P) concurrency/$(DEPDIR)
     362        @: > concurrency/$(DEPDIR)/$(am__dirstamp)
     363concurrency/libcfa_d_a-threads.$(OBJEXT): concurrency/$(am__dirstamp) \
     364        concurrency/$(DEPDIR)/$(am__dirstamp)
     365concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT):  \
     366        concurrency/$(am__dirstamp) \
     367        concurrency/$(DEPDIR)/$(am__dirstamp)
     368concurrency/libcfa_d_a-invoke.$(OBJEXT): concurrency/$(am__dirstamp) \
     369        concurrency/$(DEPDIR)/$(am__dirstamp)
     370libcfa-d.a: $(libcfa_d_a_OBJECTS) $(libcfa_d_a_DEPENDENCIES) $(EXTRA_libcfa_d_a_DEPENDENCIES)
     371        $(AM_V_at)-rm -f libcfa-d.a
     372        $(AM_V_AR)$(libcfa_d_a_AR) libcfa-d.a $(libcfa_d_a_OBJECTS) $(libcfa_d_a_LIBADD)
     373        $(AM_V_at)$(RANLIB) libcfa-d.a
     374containers/libcfa_a-vector.$(OBJEXT): containers/$(am__dirstamp) \
     375        containers/$(DEPDIR)/$(am__dirstamp)
     376concurrency/libcfa_a-threads.$(OBJEXT): concurrency/$(am__dirstamp) \
     377        concurrency/$(DEPDIR)/$(am__dirstamp)
     378concurrency/libcfa_a-invoke.$(OBJEXT): concurrency/$(am__dirstamp) \
     379        concurrency/$(DEPDIR)/$(am__dirstamp)
    314380libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES)
    315381        $(AM_V_at)-rm -f libcfa.a
     
    319385mostlyclean-compile:
    320386        -rm -f *.$(OBJEXT)
    321         -rm -f containers/vector.$(OBJEXT)
     387        -rm -f concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT)
     388        -rm -f concurrency/libcfa_a-invoke.$(OBJEXT)
     389        -rm -f concurrency/libcfa_a-threads.$(OBJEXT)
     390        -rm -f concurrency/libcfa_d_a-invoke.$(OBJEXT)
     391        -rm -f concurrency/libcfa_d_a-threads.$(OBJEXT)
     392        -rm -f containers/libcfa_a-vector.$(OBJEXT)
     393        -rm -f containers/libcfa_d_a-vector.$(OBJEXT)
    322394
    323395distclean-compile:
    324396        -rm -f *.tab.c
    325397
    326 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream.Po@am__quote@
    327 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iostream.Po@am__quote@
    328 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iterator.Po@am__quote@
    329 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa-prelude.Po@am__quote@
    330 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/limits.Po@am__quote@
    331 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Po@am__quote@
    332 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Po@am__quote@
    333 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdlib.Po@am__quote@
    334 @AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/vector.Po@am__quote@
     398@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-assert.Po@am__quote@
     399@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-fstream.Po@am__quote@
     400@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-iostream.Po@am__quote@
     401@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-iterator.Po@am__quote@
     402@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-libcfa-prelude.Po@am__quote@
     403@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-limits.Po@am__quote@
     404@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-math.Po@am__quote@
     405@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-rational.Po@am__quote@
     406@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-stdlib.Po@am__quote@
     407@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-assert.Po@am__quote@
     408@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-fstream.Po@am__quote@
     409@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-iostream.Po@am__quote@
     410@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-iterator.Po@am__quote@
     411@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-libcfa-prelude.Po@am__quote@
     412@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-limits.Po@am__quote@
     413@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-math.Po@am__quote@
     414@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-rational.Po@am__quote@
     415@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-stdlib.Po@am__quote@
     416@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/CtxSwitch-@MACHINE_TYPE@.Po@am__quote@
     417@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-invoke.Po@am__quote@
     418@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-threads.Po@am__quote@
     419@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-invoke.Po@am__quote@
     420@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-threads.Po@am__quote@
     421@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_a-vector.Po@am__quote@
     422@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_d_a-vector.Po@am__quote@
     423
     424.S.o:
     425@am__fastdepCCAS_TRUE@  $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
     426@am__fastdepCCAS_TRUE@  $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     427@am__fastdepCCAS_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Po
     428@AMDEP_TRUE@@am__fastdepCCAS_FALSE@     $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     429@AMDEP_TRUE@@am__fastdepCCAS_FALSE@     DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     430@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $<
     431
     432.S.obj:
     433@am__fastdepCCAS_TRUE@  $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
     434@am__fastdepCCAS_TRUE@  $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
     435@am__fastdepCCAS_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Po
     436@AMDEP_TRUE@@am__fastdepCCAS_FALSE@     $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     437@AMDEP_TRUE@@am__fastdepCCAS_FALSE@     DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     438@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    335439
    336440.c.o:
     
    349453@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    350454@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    351 install-cfalibDATA: $(cfalib_DATA)
    352         @$(NORMAL_INSTALL)
    353         test -z "$(cfalibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfalibdir)"
    354         @list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
    355         for p in $$list; do \
    356           if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
    357           echo "$$d$$p"; \
    358         done | $(am__base_list) | \
    359         while read files; do \
    360           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cfalibdir)'"; \
    361           $(INSTALL_DATA) $$files "$(DESTDIR)$(cfalibdir)" || exit $$?; \
    362         done
    363 
    364 uninstall-cfalibDATA:
    365         @$(NORMAL_UNINSTALL)
    366         @list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
    367         files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
    368         dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir)
     455
     456libcfa_d_a-libcfa-prelude.obj: libcfa-prelude.c
     457@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-libcfa-prelude.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-libcfa-prelude.Tpo -c -o libcfa_d_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
     458@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-libcfa-prelude.Tpo $(DEPDIR)/libcfa_d_a-libcfa-prelude.Po
     459@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='libcfa-prelude.c' object='libcfa_d_a-libcfa-prelude.obj' libtool=no @AMDEPBACKSLASH@
     460@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     461@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
     462
     463libcfa_d_a-limits.o: limits.c
     464@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
     465@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po
     466@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.o' libtool=no @AMDEPBACKSLASH@
     467@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     468@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
     469
     470libcfa_d_a-limits.obj: limits.c
     471@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
     472@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po
     473@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.obj' libtool=no @AMDEPBACKSLASH@
     474@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     475@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
     476
     477libcfa_d_a-stdlib.o: stdlib.c
     478@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
     479@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po
     480@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.o' libtool=no @AMDEPBACKSLASH@
     481@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     482@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
     483
     484libcfa_d_a-stdlib.obj: stdlib.c
     485@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
     486@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po
     487@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@
     488@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     489@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
     490
     491libcfa_d_a-math.o: math.c
     492@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-math.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-math.Tpo -c -o libcfa_d_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
     493@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-math.Tpo $(DEPDIR)/libcfa_d_a-math.Po
     494@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='math.c' object='libcfa_d_a-math.o' libtool=no @AMDEPBACKSLASH@
     495@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     496@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
     497
     498libcfa_d_a-math.obj: math.c
     499@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-math.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-math.Tpo -c -o libcfa_d_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
     500@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-math.Tpo $(DEPDIR)/libcfa_d_a-math.Po
     501@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='math.c' object='libcfa_d_a-math.obj' libtool=no @AMDEPBACKSLASH@
     502@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     503@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
     504
     505libcfa_d_a-iostream.o: iostream.c
     506@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
     507@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po
     508@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.o' libtool=no @AMDEPBACKSLASH@
     509@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     510@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
     511
     512libcfa_d_a-iostream.obj: iostream.c
     513@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
     514@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po
     515@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.obj' libtool=no @AMDEPBACKSLASH@
     516@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     517@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
     518
     519libcfa_d_a-fstream.o: fstream.c
     520@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
     521@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po
     522@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.o' libtool=no @AMDEPBACKSLASH@
     523@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     524@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
     525
     526libcfa_d_a-fstream.obj: fstream.c
     527@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
     528@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po
     529@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.obj' libtool=no @AMDEPBACKSLASH@
     530@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     531@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
     532
     533libcfa_d_a-iterator.o: iterator.c
     534@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
     535@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po
     536@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.o' libtool=no @AMDEPBACKSLASH@
     537@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     538@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
     539
     540libcfa_d_a-iterator.obj: iterator.c
     541@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
     542@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po
     543@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.obj' libtool=no @AMDEPBACKSLASH@
     544@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     545@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
     546
     547libcfa_d_a-rational.o: rational.c
     548@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
     549@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po
     550@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.o' libtool=no @AMDEPBACKSLASH@
     551@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     552@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
     553
     554libcfa_d_a-rational.obj: rational.c
     555@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
     556@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po
     557@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.obj' libtool=no @AMDEPBACKSLASH@
     558@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     559@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
     560
     561libcfa_d_a-assert.o: assert.c
     562@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-assert.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-assert.Tpo -c -o libcfa_d_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
     563@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-assert.Tpo $(DEPDIR)/libcfa_d_a-assert.Po
     564@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='assert.c' object='libcfa_d_a-assert.o' libtool=no @AMDEPBACKSLASH@
     565@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     566@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
     567
     568libcfa_d_a-assert.obj: assert.c
     569@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-assert.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-assert.Tpo -c -o libcfa_d_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
     570@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-assert.Tpo $(DEPDIR)/libcfa_d_a-assert.Po
     571@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='assert.c' object='libcfa_d_a-assert.obj' libtool=no @AMDEPBACKSLASH@
     572@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     573@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
     574
     575containers/libcfa_d_a-vector.o: containers/vector.c
     576@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
     577@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po
     578@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.o' libtool=no @AMDEPBACKSLASH@
     579@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     580@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
     581
     582containers/libcfa_d_a-vector.obj: containers/vector.c
     583@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
     584@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po
     585@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.obj' libtool=no @AMDEPBACKSLASH@
     586@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     587@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
     588
     589concurrency/libcfa_d_a-threads.o: concurrency/threads.c
     590@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-threads.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo -c -o concurrency/libcfa_d_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
     591@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_d_a-threads.Po
     592@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_d_a-threads.o' libtool=no @AMDEPBACKSLASH@
     593@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     594@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
     595
     596concurrency/libcfa_d_a-threads.obj: concurrency/threads.c
     597@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-threads.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo -c -o concurrency/libcfa_d_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
     598@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_d_a-threads.Po
     599@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_d_a-threads.obj' libtool=no @AMDEPBACKSLASH@
     600@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     601@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
     602
     603concurrency/libcfa_d_a-invoke.obj: concurrency/invoke.c
     604@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-invoke.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-invoke.Tpo -c -o concurrency/libcfa_d_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
     605@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-invoke.Tpo concurrency/$(DEPDIR)/libcfa_d_a-invoke.Po
     606@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/invoke.c' object='concurrency/libcfa_d_a-invoke.obj' libtool=no @AMDEPBACKSLASH@
     607@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     608@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
     609
     610libcfa_a-libcfa-prelude.obj: libcfa-prelude.c
     611@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-libcfa-prelude.obj -MD -MP -MF $(DEPDIR)/libcfa_a-libcfa-prelude.Tpo -c -o libcfa_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
     612@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-libcfa-prelude.Tpo $(DEPDIR)/libcfa_a-libcfa-prelude.Po
     613@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='libcfa-prelude.c' object='libcfa_a-libcfa-prelude.obj' libtool=no @AMDEPBACKSLASH@
     614@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     615@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
     616
     617libcfa_a-limits.o: limits.c
     618@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
     619@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po
     620@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='limits.c' object='libcfa_a-limits.o' libtool=no @AMDEPBACKSLASH@
     621@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     622@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
     623
     624libcfa_a-limits.obj: limits.c
     625@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
     626@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po
     627@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='limits.c' object='libcfa_a-limits.obj' libtool=no @AMDEPBACKSLASH@
     628@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     629@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
     630
     631libcfa_a-stdlib.o: stdlib.c
     632@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
     633@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po
     634@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.o' libtool=no @AMDEPBACKSLASH@
     635@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     636@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
     637
     638libcfa_a-stdlib.obj: stdlib.c
     639@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
     640@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po
     641@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@
     642@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     643@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
     644
     645libcfa_a-math.o: math.c
     646@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-math.o -MD -MP -MF $(DEPDIR)/libcfa_a-math.Tpo -c -o libcfa_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
     647@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-math.Tpo $(DEPDIR)/libcfa_a-math.Po
     648@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='math.c' object='libcfa_a-math.o' libtool=no @AMDEPBACKSLASH@
     649@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     650@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
     651
     652libcfa_a-math.obj: math.c
     653@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-math.obj -MD -MP -MF $(DEPDIR)/libcfa_a-math.Tpo -c -o libcfa_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
     654@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-math.Tpo $(DEPDIR)/libcfa_a-math.Po
     655@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='math.c' object='libcfa_a-math.obj' libtool=no @AMDEPBACKSLASH@
     656@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     657@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
     658
     659libcfa_a-iostream.o: iostream.c
     660@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
     661@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po
     662@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.o' libtool=no @AMDEPBACKSLASH@
     663@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     664@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
     665
     666libcfa_a-iostream.obj: iostream.c
     667@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
     668@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po
     669@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.obj' libtool=no @AMDEPBACKSLASH@
     670@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     671@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
     672
     673libcfa_a-fstream.o: fstream.c
     674@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
     675@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po
     676@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.o' libtool=no @AMDEPBACKSLASH@
     677@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     678@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
     679
     680libcfa_a-fstream.obj: fstream.c
     681@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
     682@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po
     683@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.obj' libtool=no @AMDEPBACKSLASH@
     684@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     685@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
     686
     687libcfa_a-iterator.o: iterator.c
     688@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
     689@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po
     690@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.o' libtool=no @AMDEPBACKSLASH@
     691@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     692@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
     693
     694libcfa_a-iterator.obj: iterator.c
     695@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
     696@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po
     697@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.obj' libtool=no @AMDEPBACKSLASH@
     698@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     699@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
     700
     701libcfa_a-rational.o: rational.c
     702@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
     703@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po
     704@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='rational.c' object='libcfa_a-rational.o' libtool=no @AMDEPBACKSLASH@
     705@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     706@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
     707
     708libcfa_a-rational.obj: rational.c
     709@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
     710@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po
     711@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='rational.c' object='libcfa_a-rational.obj' libtool=no @AMDEPBACKSLASH@
     712@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     713@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
     714
     715libcfa_a-assert.o: assert.c
     716@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-assert.o -MD -MP -MF $(DEPDIR)/libcfa_a-assert.Tpo -c -o libcfa_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
     717@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-assert.Tpo $(DEPDIR)/libcfa_a-assert.Po
     718@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='assert.c' object='libcfa_a-assert.o' libtool=no @AMDEPBACKSLASH@
     719@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     720@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
     721
     722libcfa_a-assert.obj: assert.c
     723@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-assert.obj -MD -MP -MF $(DEPDIR)/libcfa_a-assert.Tpo -c -o libcfa_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
     724@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-assert.Tpo $(DEPDIR)/libcfa_a-assert.Po
     725@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='assert.c' object='libcfa_a-assert.obj' libtool=no @AMDEPBACKSLASH@
     726@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     727@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
     728
     729containers/libcfa_a-vector.o: containers/vector.c
     730@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
     731@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po
     732@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.o' libtool=no @AMDEPBACKSLASH@
     733@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     734@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
     735
     736containers/libcfa_a-vector.obj: containers/vector.c
     737@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
     738@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po
     739@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.obj' libtool=no @AMDEPBACKSLASH@
     740@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     741@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
     742
     743concurrency/libcfa_a-threads.o: concurrency/threads.c
     744@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-threads.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-threads.Tpo -c -o concurrency/libcfa_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
     745@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_a-threads.Po
     746@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_a-threads.o' libtool=no @AMDEPBACKSLASH@
     747@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     748@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
     749
     750concurrency/libcfa_a-threads.obj: concurrency/threads.c
     751@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-threads.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-threads.Tpo -c -o concurrency/libcfa_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
     752@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_a-threads.Po
     753@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_a-threads.obj' libtool=no @AMDEPBACKSLASH@
     754@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     755@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
     756
     757concurrency/libcfa_a-invoke.obj: concurrency/invoke.c
     758@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-invoke.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-invoke.Tpo -c -o concurrency/libcfa_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
     759@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-invoke.Tpo concurrency/$(DEPDIR)/libcfa_a-invoke.Po
     760@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/invoke.c' object='concurrency/libcfa_a-invoke.obj' libtool=no @AMDEPBACKSLASH@
     761@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     762@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
    369763install-nobase_includeHEADERS: $(nobase_include_HEADERS)
    370764        @$(NORMAL_INSTALL)
     
    473867check-am: all-am
    474868check: check-am
    475 all-am: Makefile $(LIBRARIES) $(DATA) $(HEADERS)
     869all-am: Makefile $(LIBRARIES) $(HEADERS)
    476870installdirs:
    477         for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)" "$(DESTDIR)$(includedir)"; do \
     871        for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
    478872          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
    479873        done
     
    505899        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
    506900        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
     901        -rm -f concurrency/$(DEPDIR)/$(am__dirstamp)
     902        -rm -f concurrency/$(am__dirstamp)
    507903        -rm -f containers/$(DEPDIR)/$(am__dirstamp)
    508904        -rm -f containers/$(am__dirstamp)
     
    511907        @echo "This command is intended for maintainers to use"
    512908        @echo "it deletes files that may require special tools to rebuild."
    513         -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
    514909clean: clean-am
    515910
     
    517912
    518913distclean: distclean-am
    519         -rm -rf ./$(DEPDIR) containers/$(DEPDIR)
     914        -rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR)
    520915        -rm -f Makefile
    521916distclean-am: clean-am distclean-compile distclean-generic \
     
    534929info-am:
    535930
    536 install-data-am: install-cfalibDATA install-nobase_includeHEADERS
     931install-data-am: install-nobase_includeHEADERS
    537932
    538933install-dvi: install-dvi-am
     
    563958
    564959maintainer-clean: maintainer-clean-am
    565         -rm -rf ./$(DEPDIR) containers/$(DEPDIR)
     960        -rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR)
    566961        -rm -f Makefile
    567962maintainer-clean-am: distclean-am maintainer-clean-generic \
     
    580975ps-am:
    581976
    582 uninstall-am: uninstall-cfalibDATA uninstall-libLIBRARIES \
    583         uninstall-nobase_includeHEADERS
     977uninstall-am: uninstall-libLIBRARIES uninstall-nobase_includeHEADERS
    584978
    585979.MAKE: install-am install-strip
     
    588982        clean-libLIBRARIES ctags distclean distclean-compile \
    589983        distclean-generic distclean-tags distdir dvi dvi-am html \
    590         html-am info info-am install install-am install-cfalibDATA \
    591         install-data install-data-am install-dvi install-dvi-am \
    592         install-exec install-exec-am install-html install-html-am \
    593         install-info install-info-am install-libLIBRARIES install-man \
     984        html-am info info-am install install-am install-data \
     985        install-data-am install-dvi install-dvi-am install-exec \
     986        install-exec-am install-html install-html-am install-info \
     987        install-info-am install-libLIBRARIES install-man \
    594988        install-nobase_includeHEADERS install-pdf install-pdf-am \
    595989        install-ps install-ps-am install-strip installcheck \
     
    597991        maintainer-clean-generic maintainer-clean-local mostlyclean \
    598992        mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
    599         tags uninstall uninstall-am uninstall-cfalibDATA \
    600         uninstall-libLIBRARIES uninstall-nobase_includeHEADERS
    601 
    602 
    603 # create extra forward types/declarations to reduce inclusion of library files
    604 extras.cf : extras.regx extras.c
    605         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
    606 
    607 # create forward declarations for gcc builtins
    608 builtins.cf : builtins.c
    609         ${AM_V_GEN}if [ -e $< ] ; then \
    610                 @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    611         fi
    612 
    613 builtins.c : builtins.def prototypes.awk
    614         ${AM_V_GEN}if [ -e $< ] ; then \
    615                 @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    616         fi
    617 
    618 builtins.def :
    619 
    620 prototypes.awk :
    621 
    622 #--------------------------------------------------
    623 
    624 libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
    625         ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    626 
    627 libcfa-prelude.o : libcfa-prelude.c
    628          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
     993        tags uninstall uninstall-am uninstall-libLIBRARIES \
     994        uninstall-nobase_includeHEADERS
     995
     996
     997libcfa_a-libcfa-prelude.o : libcfa-prelude.c
     998         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -O2 -c -o $@ $<
     999
     1000libcfa_d_a-libcfa-prelude.o : libcfa-prelude.c
     1001         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -D__CFA_DEBUG__ -O0 -c -o $@ $<
    6291002
    6301003# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
     
    6321005        @true
    6331006
     1007concurrency/libcfa_a-invoke.o : concurrency/invoke.c
     1008        ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
     1009
     1010concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c
     1011        ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
     1012
    6341013${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    6351014
  • src/libcfa/stdhdr/assert.h

    r5802a4f r66f8528  
    1414//
    1515
     16#ifdef __CFORALL__
    1617extern "C" {
    17 #include_next <assert.h>                                                                // has internal check for multiple expansion
     18#endif //__CFORALL__
     19
     20// has internal check for multiple expansion
     21#include_next <assert.h>
     22
     23#ifdef __CFORALL__
    1824} // extern "C"
     25#endif //__CFORALL__
    1926
    2027// Local Variables: //
  • src/main.cc

    r5802a4f r66f8528  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Oct 30 10:11:38 2016
    13 // Update Count     : 435
     12// Last Modified On : Wed Dec 14 14:35:54 2016
     13// Update Count     : 436
    1414//
    1515
     
    178178                if ( ! nopreludep ) {                                                   // include gcc builtins
    179179                        // -l is for initial build ONLY and builtins.cf is not in the lib directory so access it here.
    180                         FILE * builtins = fopen( libcfap | treep ? "builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
     180                        FILE * builtins = fopen( libcfap | treep ? "../prelude/builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
    181181                        assertf( builtins, "cannot open builtins.cf\n" );
    182182                        parse( builtins, LinkageSpec::Compiler );
    183183
    184184                        // read the extra prelude in, if not generating the cfa library
    185                         FILE * extras = fopen( libcfap | treep ? "extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
     185                        FILE * extras = fopen( libcfap | treep ? "../prelude/extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
    186186                        assertf( extras, "cannot open extras.cf\n" );
    187187                        parse( extras, LinkageSpec::C );
     
    189189                        if ( ! libcfap ) {
    190190                                // read the prelude in, if not generating the cfa library
    191                                 FILE * prelude = fopen( treep ? "prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
     191                                FILE * prelude = fopen( treep ? "../prelude/prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
    192192                                assertf( prelude, "cannot open prelude.cf\n" );
    193193                                parse( prelude, LinkageSpec::Intrinsic );
  • src/prelude/prelude.cf

    r5802a4f r66f8528  
    2222// ------------------------------------------------------------
    2323
    24 const int 0, 1;
    25 
    26 forall ( dtype DT ) const DT * const    0;
    27 forall ( ftype FT ) FT * const          0;
     24//We have none
    2825
    2926// ------------------------------------------------------------
     
    249246// ------------------------------------------------------------
    250247
    251 signed int ?==?( _Bool, _Bool ),                                        ?!=?( _Bool, _Bool );
    252 signed int ?==?( signed int, signed int ),                              ?!=?( signed int, signed int );
    253 signed int ?==?( unsigned int, unsigned int ),                          ?!=?( unsigned int, unsigned int );
    254 signed int ?==?( signed long int, signed long int ),                    ?!=?( signed long int, signed long int );
    255 signed int ?==?( unsigned long int, unsigned long int ),                ?!=?( unsigned long int, unsigned long int );
     248signed int ?==?( _Bool, _Bool ),                                                        ?!=?( _Bool, _Bool );
     249signed int ?==?( signed int, signed int ),                                      ?!=?( signed int, signed int );
     250signed int ?==?( unsigned int, unsigned int ),                                  ?!=?( unsigned int, unsigned int );
     251signed int ?==?( signed long int, signed long int ),                            ?!=?( signed long int, signed long int );
     252signed int ?==?( unsigned long int, unsigned long int ),                        ?!=?( unsigned long int, unsigned long int );
    256253signed int ?==?( signed long long int, long long int  signed),          ?!=?( signed long long int, signed long long int );
    257254signed int ?==?( unsigned long long int, unsigned long long int ),      ?!=?( unsigned long long int, unsigned long long int );
    258 signed int ?==?( float, float ),                                        ?!=?( float, float );
    259 signed int ?==?( double, double ),                                      ?!=?( double, double );
    260 signed int ?==?( long double, long double ),                            ?!=?( long double, long double );
    261 signed int ?==?( float _Complex, float _Complex ),                      ?!=?( float _Complex, float _Complex );
    262 signed int ?==?( double _Complex, double _Complex ),                    ?!=?( double _Complex, double _Complex );
     255signed int ?==?( float, float ),                                                        ?!=?( float, float );
     256signed int ?==?( double, double ),                                                      ?!=?( double, double );
     257signed int ?==?( long double, long double ),                                    ?!=?( long double, long double );
     258signed int ?==?( float _Complex, float _Complex ),                              ?!=?( float _Complex, float _Complex );
     259signed int ?==?( double _Complex, double _Complex ),                            ?!=?( double _Complex, double _Complex );
    263260signed int ?==?( long double _Complex, long double _Complex ),          ?!=?( long double _Complex, long double _Complex );
     261signed int ?==?( zero_t, zero_t ),                                                      ?!=?( zero_t, zero_t );
     262signed int ?==?( one_t, one_t ),                                                        ?!=?( one_t, one_t );
    264263
    265264forall( dtype DT ) signed int ?==?(                DT *,                DT * );
     
    274273forall( ftype FT ) signed int ?!=?( FT *, FT * );
    275274
    276 forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
    277 forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
    278 forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
    279 forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
    280 
    281 forall( dtype DT ) signed int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
    282 forall( dtype DT ) signed int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
    283 forall( ftype FT ) signed int ?==?( FT *, forall( ftype FT2 )FT2 * );
    284 forall( ftype FT ) signed int ?==?( forall( ftype FT2 )FT2 *, FT * );
    285 forall( dtype DT ) signed int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
    286 forall( dtype DT ) signed int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
    287 forall( ftype FT ) signed int ?!=?( FT *, forall( ftype FT2 )FT2 * );
    288 forall( ftype FT ) signed int ?!=?( forall( ftype FT2 )FT2 *, FT * );
     275// forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
     276// forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
     277// forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
     278// forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
     279
     280// forall( dtype DT ) signed int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
     281// forall( dtype DT ) signed int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
     282// forall( ftype FT ) signed int ?==?( FT *, forall( ftype FT2 )FT2 * );
     283// forall( ftype FT ) signed int ?==?( forall( ftype FT2 )FT2 *, FT * );
     284// forall( dtype DT ) signed int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
     285// forall( dtype DT ) signed int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
     286// forall( ftype FT ) signed int ?!=?( FT *, forall( ftype FT2 )FT2 * );
     287// forall( ftype FT ) signed int ?!=?( forall( ftype FT2 )FT2 *, FT * );
    289288
    290289// ------------------------------------------------------------
     
    458457signed long long int    ?=?( signed long long int *, signed long long int ),    ?=?( volatile signed long long int *, signed long long int );
    459458unsigned long long int  ?=?( unsigned long long int *, unsigned long long int ), ?=?( volatile unsigned long long int *, unsigned long long int );
     459zero_t          ?=?( zero_t *, zero_t );
     460one_t                   ?=?( one_t *, one_t );
     461
    460462
    461463_Bool                   ?*=?( _Bool *, _Bool ),                                 ?*=?( volatile _Bool *, _Bool );
     
    654656void    ?{}( double _Complex * );
    655657void    ?{}( long double _Complex * );
     658void    ?{}( zero_t * );
     659void    ?{}( one_t * );
    656660
    657661// copy ctor
     
    674678void    ?{}( double _Complex *, double _Complex);
    675679void    ?{}( long double _Complex *, long double _Complex);
     680void    ?{}( zero_t *, zero_t );
     681void    ?{}( one_t *, one_t );
    676682
    677683// dtor
     
    694700void    ^?{}( double _Complex * );
    695701void    ^?{}( long double _Complex * );
     702void    ^?{}( zero_t * );
     703void    ^?{}( one_t * );
    696704
    697705// // default ctor
  • src/tests/.expect/32/declarationSpecifier.txt

    r5802a4f r66f8528  
    2020static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
    2121static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1);
     22static inline void ___constructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
     23    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ?{} */);
     24}
     25static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
     26    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))=___src__13s__anonymous0_1.__i__i_1) /* ?{} */);
     27}
     28static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
     29    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ^?{} */);
     30}
    2231static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
    2332    ((void)((*___dst__P13s__anonymous0_1).__i__i_1=___src__13s__anonymous0_1.__i__i_1));
    2433    return ((struct __anonymous0 )___src__13s__anonymous0_1);
    25 }
    26 static inline void ___constructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
    27     ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ?{} */);
    28 }
    29 static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
    30     ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))=___src__13s__anonymous0_1.__i__i_1) /* ?{} */);
    31 }
    32 static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
    33     ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ^?{} */);
    3434}
    3535static inline void ___constructor__F_P13s__anonymous0i_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, int __i__i_1){
     
    4444static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1);
    4545static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1);
     46static inline void ___constructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
     47    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ?{} */);
     48}
     49static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
     50    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))=___src__13s__anonymous1_1.__i__i_1) /* ?{} */);
     51}
     52static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
     53    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ^?{} */);
     54}
    4655static inline struct __anonymous1 ___operator_assign__F13s__anonymous1_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
    4756    ((void)((*___dst__P13s__anonymous1_1).__i__i_1=___src__13s__anonymous1_1.__i__i_1));
    4857    return ((struct __anonymous1 )___src__13s__anonymous1_1);
    49 }
    50 static inline void ___constructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
    51     ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ?{} */);
    52 }
    53 static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
    54     ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))=___src__13s__anonymous1_1.__i__i_1) /* ?{} */);
    55 }
    56 static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
    57     ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ^?{} */);
    5858}
    5959static inline void ___constructor__F_P13s__anonymous1i_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, int __i__i_1){
     
    6868static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
    6969static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1);
     70static inline void ___constructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
     71    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ?{} */);
     72}
     73static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
     74    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))=___src__13s__anonymous2_1.__i__i_1) /* ?{} */);
     75}
     76static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
     77    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ^?{} */);
     78}
    7079static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
    7180    ((void)((*___dst__P13s__anonymous2_1).__i__i_1=___src__13s__anonymous2_1.__i__i_1));
    7281    return ((struct __anonymous2 )___src__13s__anonymous2_1);
    73 }
    74 static inline void ___constructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
    75     ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ?{} */);
    76 }
    77 static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
    78     ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))=___src__13s__anonymous2_1.__i__i_1) /* ?{} */);
    79 }
    80 static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
    81     ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ^?{} */);
    8282}
    8383static inline void ___constructor__F_P13s__anonymous2i_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, int __i__i_1){
     
    9292static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1);
    9393static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1);
     94static inline void ___constructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
     95    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ?{} */);
     96}
     97static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
     98    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))=___src__13s__anonymous3_1.__i__i_1) /* ?{} */);
     99}
     100static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
     101    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ^?{} */);
     102}
    94103static inline struct __anonymous3 ___operator_assign__F13s__anonymous3_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
    95104    ((void)((*___dst__P13s__anonymous3_1).__i__i_1=___src__13s__anonymous3_1.__i__i_1));
    96105    return ((struct __anonymous3 )___src__13s__anonymous3_1);
    97 }
    98 static inline void ___constructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
    99     ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ?{} */);
    100 }
    101 static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
    102     ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))=___src__13s__anonymous3_1.__i__i_1) /* ?{} */);
    103 }
    104 static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
    105     ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ^?{} */);
    106106}
    107107static inline void ___constructor__F_P13s__anonymous3i_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, int __i__i_1){
     
    116116static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1);
    117117static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1);
     118static inline void ___constructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
     119    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ?{} */);
     120}
     121static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
     122    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))=___src__13s__anonymous4_1.__i__i_1) /* ?{} */);
     123}
     124static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
     125    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ^?{} */);
     126}
    118127static inline struct __anonymous4 ___operator_assign__F13s__anonymous4_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
    119128    ((void)((*___dst__P13s__anonymous4_1).__i__i_1=___src__13s__anonymous4_1.__i__i_1));
    120129    return ((struct __anonymous4 )___src__13s__anonymous4_1);
    121 }
    122 static inline void ___constructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
    123     ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ?{} */);
    124 }
    125 static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
    126     ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))=___src__13s__anonymous4_1.__i__i_1) /* ?{} */);
    127 }
    128 static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
    129     ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ^?{} */);
    130130}
    131131static inline void ___constructor__F_P13s__anonymous4i_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, int __i__i_1){
     
    140140static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1);
    141141static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1);
     142static inline void ___constructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
     143    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ?{} */);
     144}
     145static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
     146    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))=___src__13s__anonymous5_1.__i__i_1) /* ?{} */);
     147}
     148static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
     149    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ^?{} */);
     150}
    142151static inline struct __anonymous5 ___operator_assign__F13s__anonymous5_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
    143152    ((void)((*___dst__P13s__anonymous5_1).__i__i_1=___src__13s__anonymous5_1.__i__i_1));
    144153    return ((struct __anonymous5 )___src__13s__anonymous5_1);
    145 }
    146 static inline void ___constructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
    147     ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ?{} */);
    148 }
    149 static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
    150     ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))=___src__13s__anonymous5_1.__i__i_1) /* ?{} */);
    151 }
    152 static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
    153     ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ^?{} */);
    154154}
    155155static inline void ___constructor__F_P13s__anonymous5i_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, int __i__i_1){
     
    164164static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1);
    165165static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1);
     166static inline void ___constructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
     167    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ?{} */);
     168}
     169static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
     170    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))=___src__13s__anonymous6_1.__i__i_1) /* ?{} */);
     171}
     172static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
     173    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ^?{} */);
     174}
    166175static inline struct __anonymous6 ___operator_assign__F13s__anonymous6_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
    167176    ((void)((*___dst__P13s__anonymous6_1).__i__i_1=___src__13s__anonymous6_1.__i__i_1));
    168177    return ((struct __anonymous6 )___src__13s__anonymous6_1);
    169 }
    170 static inline void ___constructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
    171     ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ?{} */);
    172 }
    173 static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
    174     ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))=___src__13s__anonymous6_1.__i__i_1) /* ?{} */);
    175 }
    176 static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
    177     ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ^?{} */);
    178178}
    179179static inline void ___constructor__F_P13s__anonymous6i_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, int __i__i_1){
     
    188188static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1);
    189189static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1);
     190static inline void ___constructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
     191    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ?{} */);
     192}
     193static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
     194    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))=___src__13s__anonymous7_1.__i__i_1) /* ?{} */);
     195}
     196static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
     197    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ^?{} */);
     198}
    190199static inline struct __anonymous7 ___operator_assign__F13s__anonymous7_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
    191200    ((void)((*___dst__P13s__anonymous7_1).__i__i_1=___src__13s__anonymous7_1.__i__i_1));
    192201    return ((struct __anonymous7 )___src__13s__anonymous7_1);
    193 }
    194 static inline void ___constructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
    195     ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ?{} */);
    196 }
    197 static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
    198     ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))=___src__13s__anonymous7_1.__i__i_1) /* ?{} */);
    199 }
    200 static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
    201     ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ^?{} */);
    202202}
    203203static inline void ___constructor__F_P13s__anonymous7i_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, int __i__i_1){
     
    220220static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1);
    221221static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1);
     222static inline void ___constructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
     223    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ?{} */);
     224}
     225static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
     226    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))=___src__13s__anonymous8_1.__i__s_1) /* ?{} */);
     227}
     228static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
     229    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ^?{} */);
     230}
    222231static inline struct __anonymous8 ___operator_assign__F13s__anonymous8_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
    223232    ((void)((*___dst__P13s__anonymous8_1).__i__s_1=___src__13s__anonymous8_1.__i__s_1));
    224233    return ((struct __anonymous8 )___src__13s__anonymous8_1);
    225 }
    226 static inline void ___constructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
    227     ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ?{} */);
    228 }
    229 static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
    230     ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))=___src__13s__anonymous8_1.__i__s_1) /* ?{} */);
    231 }
    232 static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
    233     ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ^?{} */);
    234234}
    235235static inline void ___constructor__F_P13s__anonymous8s_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, short __i__s_1){
     
    244244static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1);
    245245static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1);
     246static inline void ___constructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
     247    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ?{} */);
     248}
     249static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
     250    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))=___src__13s__anonymous9_1.__i__s_1) /* ?{} */);
     251}
     252static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
     253    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ^?{} */);
     254}
    246255static inline struct __anonymous9 ___operator_assign__F13s__anonymous9_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
    247256    ((void)((*___dst__P13s__anonymous9_1).__i__s_1=___src__13s__anonymous9_1.__i__s_1));
    248257    return ((struct __anonymous9 )___src__13s__anonymous9_1);
    249 }
    250 static inline void ___constructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
    251     ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ?{} */);
    252 }
    253 static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
    254     ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))=___src__13s__anonymous9_1.__i__s_1) /* ?{} */);
    255 }
    256 static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
    257     ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ^?{} */);
    258258}
    259259static inline void ___constructor__F_P13s__anonymous9s_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, short __i__s_1){
     
    268268static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1);
    269269static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1);
     270static inline void ___constructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
     271    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ?{} */);
     272}
     273static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
     274    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))=___src__14s__anonymous10_1.__i__s_1) /* ?{} */);
     275}
     276static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
     277    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ^?{} */);
     278}
    270279static inline struct __anonymous10 ___operator_assign__F14s__anonymous10_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
    271280    ((void)((*___dst__P14s__anonymous10_1).__i__s_1=___src__14s__anonymous10_1.__i__s_1));
    272281    return ((struct __anonymous10 )___src__14s__anonymous10_1);
    273 }
    274 static inline void ___constructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
    275     ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ?{} */);
    276 }
    277 static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
    278     ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))=___src__14s__anonymous10_1.__i__s_1) /* ?{} */);
    279 }
    280 static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
    281     ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ^?{} */);
    282282}
    283283static inline void ___constructor__F_P14s__anonymous10s_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, short __i__s_1){
     
    292292static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1);
    293293static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1);
     294static inline void ___constructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
     295    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ?{} */);
     296}
     297static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
     298    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))=___src__14s__anonymous11_1.__i__s_1) /* ?{} */);
     299}
     300static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
     301    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ^?{} */);
     302}
    294303static inline struct __anonymous11 ___operator_assign__F14s__anonymous11_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
    295304    ((void)((*___dst__P14s__anonymous11_1).__i__s_1=___src__14s__anonymous11_1.__i__s_1));
    296305    return ((struct __anonymous11 )___src__14s__anonymous11_1);
    297 }
    298 static inline void ___constructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
    299     ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ?{} */);
    300 }
    301 static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
    302     ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))=___src__14s__anonymous11_1.__i__s_1) /* ?{} */);
    303 }
    304 static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
    305     ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ^?{} */);
    306306}
    307307static inline void ___constructor__F_P14s__anonymous11s_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, short __i__s_1){
     
    316316static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1);
    317317static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1);
     318static inline void ___constructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
     319    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ?{} */);
     320}
     321static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
     322    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))=___src__14s__anonymous12_1.__i__s_1) /* ?{} */);
     323}
     324static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
     325    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ^?{} */);
     326}
    318327static inline struct __anonymous12 ___operator_assign__F14s__anonymous12_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
    319328    ((void)((*___dst__P14s__anonymous12_1).__i__s_1=___src__14s__anonymous12_1.__i__s_1));
    320329    return ((struct __anonymous12 )___src__14s__anonymous12_1);
    321 }
    322 static inline void ___constructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
    323     ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ?{} */);
    324 }
    325 static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
    326     ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))=___src__14s__anonymous12_1.__i__s_1) /* ?{} */);
    327 }
    328 static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
    329     ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ^?{} */);
    330330}
    331331static inline void ___constructor__F_P14s__anonymous12s_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, short __i__s_1){
     
    340340static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1);
    341341static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1);
     342static inline void ___constructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
     343    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ?{} */);
     344}
     345static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
     346    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))=___src__14s__anonymous13_1.__i__s_1) /* ?{} */);
     347}
     348static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
     349    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ^?{} */);
     350}
    342351static inline struct __anonymous13 ___operator_assign__F14s__anonymous13_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
    343352    ((void)((*___dst__P14s__anonymous13_1).__i__s_1=___src__14s__anonymous13_1.__i__s_1));
    344353    return ((struct __anonymous13 )___src__14s__anonymous13_1);
    345 }
    346 static inline void ___constructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
    347     ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ?{} */);
    348 }
    349 static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
    350     ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))=___src__14s__anonymous13_1.__i__s_1) /* ?{} */);
    351 }
    352 static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
    353     ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ^?{} */);
    354354}
    355355static inline void ___constructor__F_P14s__anonymous13s_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, short __i__s_1){
     
    364364static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1);
    365365static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1);
     366static inline void ___constructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
     367    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ?{} */);
     368}
     369static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
     370    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))=___src__14s__anonymous14_1.__i__s_1) /* ?{} */);
     371}
     372static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
     373    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ^?{} */);
     374}
    366375static inline struct __anonymous14 ___operator_assign__F14s__anonymous14_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
    367376    ((void)((*___dst__P14s__anonymous14_1).__i__s_1=___src__14s__anonymous14_1.__i__s_1));
    368377    return ((struct __anonymous14 )___src__14s__anonymous14_1);
    369 }
    370 static inline void ___constructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
    371     ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ?{} */);
    372 }
    373 static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
    374     ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))=___src__14s__anonymous14_1.__i__s_1) /* ?{} */);
    375 }
    376 static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
    377     ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ^?{} */);
    378378}
    379379static inline void ___constructor__F_P14s__anonymous14s_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, short __i__s_1){
     
    388388static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1);
    389389static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1);
     390static inline void ___constructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
     391    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ?{} */);
     392}
     393static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
     394    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))=___src__14s__anonymous15_1.__i__s_1) /* ?{} */);
     395}
     396static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
     397    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ^?{} */);
     398}
    390399static inline struct __anonymous15 ___operator_assign__F14s__anonymous15_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
    391400    ((void)((*___dst__P14s__anonymous15_1).__i__s_1=___src__14s__anonymous15_1.__i__s_1));
    392401    return ((struct __anonymous15 )___src__14s__anonymous15_1);
    393 }
    394 static inline void ___constructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
    395     ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ?{} */);
    396 }
    397 static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
    398     ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))=___src__14s__anonymous15_1.__i__s_1) /* ?{} */);
    399 }
    400 static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
    401     ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ^?{} */);
    402402}
    403403static inline void ___constructor__F_P14s__anonymous15s_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, short __i__s_1){
     
    428428static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1);
    429429static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1);
     430static inline void ___constructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
     431    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ?{} */);
     432}
     433static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
     434    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))=___src__14s__anonymous16_1.__i__i_1) /* ?{} */);
     435}
     436static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
     437    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ^?{} */);
     438}
    430439static inline struct __anonymous16 ___operator_assign__F14s__anonymous16_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
    431440    ((void)((*___dst__P14s__anonymous16_1).__i__i_1=___src__14s__anonymous16_1.__i__i_1));
    432441    return ((struct __anonymous16 )___src__14s__anonymous16_1);
    433 }
    434 static inline void ___constructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
    435     ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ?{} */);
    436 }
    437 static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
    438     ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))=___src__14s__anonymous16_1.__i__i_1) /* ?{} */);
    439 }
    440 static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
    441     ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ^?{} */);
    442442}
    443443static inline void ___constructor__F_P14s__anonymous16i_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, int __i__i_1){
     
    452452static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1);
    453453static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1);
     454static inline void ___constructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
     455    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ?{} */);
     456}
     457static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
     458    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))=___src__14s__anonymous17_1.__i__i_1) /* ?{} */);
     459}
     460static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
     461    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ^?{} */);
     462}
    454463static inline struct __anonymous17 ___operator_assign__F14s__anonymous17_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
    455464    ((void)((*___dst__P14s__anonymous17_1).__i__i_1=___src__14s__anonymous17_1.__i__i_1));
    456465    return ((struct __anonymous17 )___src__14s__anonymous17_1);
    457 }
    458 static inline void ___constructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
    459     ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ?{} */);
    460 }
    461 static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
    462     ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))=___src__14s__anonymous17_1.__i__i_1) /* ?{} */);
    463 }
    464 static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
    465     ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ^?{} */);
    466466}
    467467static inline void ___constructor__F_P14s__anonymous17i_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, int __i__i_1){
     
    476476static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1);
    477477static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1);
     478static inline void ___constructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
     479    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ?{} */);
     480}
     481static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
     482    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))=___src__14s__anonymous18_1.__i__i_1) /* ?{} */);
     483}
     484static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
     485    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ^?{} */);
     486}
    478487static inline struct __anonymous18 ___operator_assign__F14s__anonymous18_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
    479488    ((void)((*___dst__P14s__anonymous18_1).__i__i_1=___src__14s__anonymous18_1.__i__i_1));
    480489    return ((struct __anonymous18 )___src__14s__anonymous18_1);
    481 }
    482 static inline void ___constructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
    483     ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ?{} */);
    484 }
    485 static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
    486     ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))=___src__14s__anonymous18_1.__i__i_1) /* ?{} */);
    487 }
    488 static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
    489     ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ^?{} */);
    490490}
    491491static inline void ___constructor__F_P14s__anonymous18i_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, int __i__i_1){
     
    500500static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1);
    501501static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1);
     502static inline void ___constructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
     503    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ?{} */);
     504}
     505static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
     506    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))=___src__14s__anonymous19_1.__i__i_1) /* ?{} */);
     507}
     508static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
     509    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ^?{} */);
     510}
    502511static inline struct __anonymous19 ___operator_assign__F14s__anonymous19_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
    503512    ((void)((*___dst__P14s__anonymous19_1).__i__i_1=___src__14s__anonymous19_1.__i__i_1));
    504513    return ((struct __anonymous19 )___src__14s__anonymous19_1);
    505 }
    506 static inline void ___constructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
    507     ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ?{} */);
    508 }
    509 static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
    510     ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))=___src__14s__anonymous19_1.__i__i_1) /* ?{} */);
    511 }
    512 static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
    513     ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ^?{} */);
    514514}
    515515static inline void ___constructor__F_P14s__anonymous19i_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, int __i__i_1){
     
    524524static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1);
    525525static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1);
     526static inline void ___constructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
     527    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ?{} */);
     528}
     529static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
     530    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))=___src__14s__anonymous20_1.__i__i_1) /* ?{} */);
     531}
     532static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
     533    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ^?{} */);
     534}
    526535static inline struct __anonymous20 ___operator_assign__F14s__anonymous20_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
    527536    ((void)((*___dst__P14s__anonymous20_1).__i__i_1=___src__14s__anonymous20_1.__i__i_1));
    528537    return ((struct __anonymous20 )___src__14s__anonymous20_1);
    529 }
    530 static inline void ___constructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
    531     ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ?{} */);
    532 }
    533 static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
    534     ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))=___src__14s__anonymous20_1.__i__i_1) /* ?{} */);
    535 }
    536 static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
    537     ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ^?{} */);
    538538}
    539539static inline void ___constructor__F_P14s__anonymous20i_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, int __i__i_1){
     
    548548static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1);
    549549static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1);
     550static inline void ___constructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
     551    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ?{} */);
     552}
     553static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
     554    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))=___src__14s__anonymous21_1.__i__i_1) /* ?{} */);
     555}
     556static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
     557    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ^?{} */);
     558}
    550559static inline struct __anonymous21 ___operator_assign__F14s__anonymous21_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
    551560    ((void)((*___dst__P14s__anonymous21_1).__i__i_1=___src__14s__anonymous21_1.__i__i_1));
    552561    return ((struct __anonymous21 )___src__14s__anonymous21_1);
    553 }
    554 static inline void ___constructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
    555     ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ?{} */);
    556 }
    557 static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
    558     ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))=___src__14s__anonymous21_1.__i__i_1) /* ?{} */);
    559 }
    560 static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
    561     ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ^?{} */);
    562562}
    563563static inline void ___constructor__F_P14s__anonymous21i_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, int __i__i_1){
     
    572572static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1);
    573573static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1);
     574static inline void ___constructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
     575    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ?{} */);
     576}
     577static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
     578    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))=___src__14s__anonymous22_1.__i__i_1) /* ?{} */);
     579}
     580static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
     581    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ^?{} */);
     582}
    574583static inline struct __anonymous22 ___operator_assign__F14s__anonymous22_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
    575584    ((void)((*___dst__P14s__anonymous22_1).__i__i_1=___src__14s__anonymous22_1.__i__i_1));
    576585    return ((struct __anonymous22 )___src__14s__anonymous22_1);
    577 }
    578 static inline void ___constructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
    579     ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ?{} */);
    580 }
    581 static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
    582     ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))=___src__14s__anonymous22_1.__i__i_1) /* ?{} */);
    583 }
    584 static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
    585     ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ^?{} */);
    586586}
    587587static inline void ___constructor__F_P14s__anonymous22i_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, int __i__i_1){
     
    596596static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1);
    597597static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1);
     598static inline void ___constructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
     599    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ?{} */);
     600}
     601static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
     602    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))=___src__14s__anonymous23_1.__i__i_1) /* ?{} */);
     603}
     604static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
     605    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ^?{} */);
     606}
    598607static inline struct __anonymous23 ___operator_assign__F14s__anonymous23_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
    599608    ((void)((*___dst__P14s__anonymous23_1).__i__i_1=___src__14s__anonymous23_1.__i__i_1));
    600609    return ((struct __anonymous23 )___src__14s__anonymous23_1);
    601 }
    602 static inline void ___constructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
    603     ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ?{} */);
    604 }
    605 static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
    606     ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))=___src__14s__anonymous23_1.__i__i_1) /* ?{} */);
    607 }
    608 static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
    609     ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ^?{} */);
    610610}
    611611static inline void ___constructor__F_P14s__anonymous23i_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, int __i__i_1){
     
    622622static inline volatile const short __f48__FCVs___1();
    623623int main(int __argc__i_1, const char **__argv__PPCc_1){
    624     int _retVal0 = { 0 };
    625     ((void)(_retVal0=0) /* ?{} */);
    626     return ((int )_retVal0);
    627 }
     624    int ___retval_main__i_1;
     625    ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
     626    return ((int )___retval_main__i_1);
     627}
  • src/tests/.expect/32/extension.txt

    r5802a4f r66f8528  
    6161}
    6262static inline void ___constructor__F_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
    63     void *_tmp_cp_ret0;
    64     ((void)((_tmp_cp_ret0=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret0));
    65     ((void)(_tmp_cp_ret0) /* ^?{} */);
     63    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
    6664}
    6765static inline void ___destructor__F_P2uU_autogen___1(union U *___dst__P2uU_1){
    6866}
    6967static inline union U ___operator_assign__F2uU_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
    70     void *_tmp_cp_ret1;
    71     ((void)((_tmp_cp_ret1=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret1));
    72     ((void)(_tmp_cp_ret1) /* ^?{} */);
     68    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
    7369    return ((union U )___src__2uU_1);
    7470}
    7571static inline void ___constructor__F_P2uUi_autogen___1(union U *___dst__P2uU_1, int __src__i_1){
    76     void *_tmp_cp_ret2;
    77     ((void)((_tmp_cp_ret2=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int ))) , _tmp_cp_ret2));
    78     ((void)(_tmp_cp_ret2) /* ^?{} */);
     72    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int )));
    7973}
    8074__extension__ enum E {
     
    9791    __extension__ int __c__i_2;
    9892    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
    99     int _tmp_cp_ret3;
    100     ((void)((_tmp_cp_ret3=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret3));
    101     ((void)(_tmp_cp_ret3) /* ^?{} */);
     93    int _tmp_cp_ret0;
     94    ((void)((_tmp_cp_ret0=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret0));
     95    ((void)(_tmp_cp_ret0) /* ^?{} */);
    10296    ((void)__extension__ sizeof(3));
    103     ((void)__extension__ (((int )(3!=0)) || ((int )(4!=0))));
     97    ((void)__extension__ (((int )(3!=((int )0))) || ((int )(4!=((int )0)))));
    10498    ((void)__extension__ __alignof__(__extension__ __a__i_2));
    105     ((void)(((int )(__extension__ __a__i_2!=0)) || ((int )((((int )(__extension__ __b__i_2!=0)) && ((int )(__extension__ __c__i_2!=0)))!=0))));
    106     ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=0)) ? __extension__ __c__i_2 : __extension__ __c__i_2));
     99    ((void)(((int )(__extension__ __a__i_2!=((int )0))) || ((int )((((int )(__extension__ __b__i_2!=((int )0))) && ((int )(__extension__ __c__i_2!=((int )0))))!=((int )0)))));
     100    ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=((int )0))) ? __extension__ __c__i_2 : __extension__ __c__i_2));
    107101    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
    108102    ((void)((__extension__ __a__i_2 , __extension__ __b__i_2) , __extension__ __c__i_2));
  • src/tests/.expect/32/gccExtensions.txt

    r5802a4f r66f8528  
    55extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
    7 extern int __x__i_1;
     7extern int __x__i_1 asm ( "xx" );
    88int main(int __argc__i_1, const char **__argv__PPCc_1){
    99    int ___retval_main__i_1;
     
    1111    asm ( "nop" :  :  :  );
    1212    asm ( "nop" :  :  :  );
    13     static int __y__i_2;
    14     static int *__z__Pi_2;
     13    static int __y__i_2 asm ( "yy" );
     14    static int *__z__Pi_2 asm ( "zz" );
    1515    int __src__i_2;
    1616    int __dst__i_2;
     
    160160    int __m2__A0A0i_2[((unsigned int )10)][((unsigned int )10)];
    161161    int __m3__A0A0i_2[((unsigned int )10)][((unsigned int )10)];
    162     ((void)(___retval_main__i_1=0) /* ?{} */);
     162    ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
    163163    return ((int )___retval_main__i_1);
    164164}
  • src/tests/.expect/64/declarationSpecifier.txt

    r5802a4f r66f8528  
    623623int main(int __argc__i_1, const char **__argv__PPCc_1){
    624624    int ___retval_main__i_1;
    625     ((void)(___retval_main__i_1=0) /* ?{} */);
     625    ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
    626626    return ((int )___retval_main__i_1);
    627627}
  • src/tests/.expect/64/extension.txt

    r5802a4f r66f8528  
    6161}
    6262static inline void ___constructor__F_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
    63     void *_tmp_cp_ret0;
    64     ((void)((_tmp_cp_ret0=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret0));
    65     ((void)(_tmp_cp_ret0) /* ^?{} */);
     63    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
    6664}
    6765static inline void ___destructor__F_P2uU_autogen___1(union U *___dst__P2uU_1){
    6866}
    6967static inline union U ___operator_assign__F2uU_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
    70     void *_tmp_cp_ret1;
    71     ((void)((_tmp_cp_ret1=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret1));
    72     ((void)(_tmp_cp_ret1) /* ^?{} */);
     68    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
    7369    return ((union U )___src__2uU_1);
    7470}
    7571static inline void ___constructor__F_P2uUi_autogen___1(union U *___dst__P2uU_1, int __src__i_1){
    76     void *_tmp_cp_ret2;
    77     ((void)((_tmp_cp_ret2=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int ))) , _tmp_cp_ret2));
    78     ((void)(_tmp_cp_ret2) /* ^?{} */);
     72    ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int )));
    7973}
    8074__extension__ enum E {
     
    9791    __extension__ int __c__i_2;
    9892    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
    99     int _tmp_cp_ret3;
    100     ((void)((_tmp_cp_ret3=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret3));
    101     ((void)(_tmp_cp_ret3) /* ^?{} */);
     93    int _tmp_cp_ret0;
     94    ((void)((_tmp_cp_ret0=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret0));
     95    ((void)(_tmp_cp_ret0) /* ^?{} */);
    10296    ((void)__extension__ sizeof(3));
    103     ((void)__extension__ (((int )(3!=0)) || ((int )(4!=0))));
     97    ((void)__extension__ (((int )(3!=((int )0))) || ((int )(4!=((int )0)))));
    10498    ((void)__extension__ __alignof__(__extension__ __a__i_2));
    105     ((void)(((int )(__extension__ __a__i_2!=0)) || ((int )((((int )(__extension__ __b__i_2!=0)) && ((int )(__extension__ __c__i_2!=0)))!=0))));
    106     ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=0)) ? __extension__ __c__i_2 : __extension__ __c__i_2));
     99    ((void)(((int )(__extension__ __a__i_2!=((int )0))) || ((int )((((int )(__extension__ __b__i_2!=((int )0))) && ((int )(__extension__ __c__i_2!=((int )0))))!=((int )0)))));
     100    ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=((int )0))) ? __extension__ __c__i_2 : __extension__ __c__i_2));
    107101    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
    108102    ((void)((__extension__ __a__i_2 , __extension__ __b__i_2) , __extension__ __c__i_2));
  • src/tests/.expect/64/gccExtensions.txt

    r5802a4f r66f8528  
    55extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
    7 extern int __x__i_1;
     7extern int __x__i_1 asm ( "xx" );
    88int main(int __argc__i_1, const char **__argv__PPCc_1){
    99    int ___retval_main__i_1;
     
    1111    asm ( "nop" :  :  :  );
    1212    asm ( "nop" :  :  :  );
    13     static int __y__i_2;
    14     static int *__z__Pi_2;
     13    static int __y__i_2 asm ( "yy" );
     14    static int *__z__Pi_2 asm ( "zz" );
    1515    int __src__i_2;
    1616    int __dst__i_2;
     
    160160    int __m2__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
    161161    int __m3__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
    162     ((void)(___retval_main__i_1=0) /* ?{} */);
     162    ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
    163163    return ((int )___retval_main__i_1);
    164164}
  • src/tests/.expect/castError.txt

    r5802a4f r66f8528  
    1 CFA Version 1.0.0 (debug)
    21Error: Can't choose between 3 alternatives for expression Cast of:
    32  Name: f
  • src/tests/.expect/completeTypeError.txt

    r5802a4f r66f8528  
    1 CFA Version 1.0.0 (debug)
    21Error: No reasonable alternatives for expression Applying untyped:
    32  Name: *?
  • src/tests/.expect/constant0-1DP.txt

    r5802a4f r66f8528  
    1 CFA Version 1.0.0 (debug)
    21Error: duplicate object definition for 0: signed int
    32Error: duplicate object definition for 0: const signed int
  • src/tests/.expect/constant0-1NDDP.txt

    r5802a4f r66f8528  
    1 CFA Version 1.0.0 (debug)
    21Error: duplicate object definition for 0: signed int
    32Error: duplicate object definition for 0: const signed int
  • src/tests/.expect/declarationErrors.txt

    r5802a4f r66f8528  
    1 CFA Version 1.0.0 (debug)
    21Error: duplicate static in declaration of x1: static const volatile short int
    32
  • src/tests/.expect/dtor-early-exit-ERR1.txt

    r5802a4f r66f8528  
    1 CFA Version 1.0.0 (debug)
    21Error: jump to label 'L1' crosses initialization of y Branch (Goto)
    32
  • src/tests/.expect/dtor-early-exit-ERR2.txt

    r5802a4f r66f8528  
    1 CFA Version 1.0.0 (debug)
    21Error: jump to label 'L2' crosses initialization of y Branch (Goto)
    32
  • src/tests/.expect/memberCtors-ERR1.txt

    r5802a4f r66f8528  
    1 CFA Version 1.0.0 (debug)
    21Error: in void ?{}(struct B *b), field a2 used before being constructed
    32make: *** [memberCtors-ERR1] Error 1
  • src/tests/.expect/scopeErrors.txt

    r5802a4f r66f8528  
    1 CFA Version 1.0.0 (debug)
    21Error: duplicate object definition for thisIsAnError: signed int
    32Error: duplicate function definition for butThisIsAnError: function
  • src/tests/Makefile.am

    r5802a4f r66f8528  
    1515###############################################################################
    1616
     17debug=yes
     18
    1719# applies to both programs
    18 CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ # TEMPORARY: does not build with -O2
     20EXTRA_FLAGS =
     21CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ ${EXTRA_FLAGS}
    1922CC = @CFA_BINDIR@/cfa
    2023
     
    3033
    3134all-tests :
    32         @+python test.py --all          # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
     35        @+python test.py --all --debug=${debug}         # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
    3336
    3437clean-local :
     
    5457
    5558declarationSpecifier: declarationSpecifier.c
    56         ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}
     59        ${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
    5760
    5861gccExtensions : gccExtensions.c
     
    6366
    6467memberCtors-ERR1: memberCtors.c
    65         ${CC} ${CFALGS} -DERR1 ${<} -o ${@}
     68        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
    6669
    6770completeTypeError : completeTypeError.c
    68         ${CC} ${CFALGS} -DERR1 ${<} -o ${@}
     71        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
  • src/tests/Makefile.in

    r5802a4f r66f8528  
    3535PRE_UNINSTALL = :
    3636POST_UNINSTALL = :
     37build_triplet = @build@
     38host_triplet = @host@
    3739EXTRA_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
    3840        avl_test$(EXEEXT) constant0-1DP$(EXEEXT) \
     
    111113BACKEND_CC = @BACKEND_CC@
    112114CC = @CFA_BINDIR@/cfa
     115CCAS = @CCAS@
     116CCASDEPMODE = @CCASDEPMODE@
     117CCASFLAGS = @CCASFLAGS@
    113118CCDEPMODE = @CCDEPMODE@
    114119CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    118123CFA_LIBDIR = @CFA_LIBDIR@
    119124CFA_PREFIX = @CFA_PREFIX@
    120 
    121 # applies to both programs
    122 CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ # TEMPORARY: does not build with -O2
     125CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ ${EXTRA_FLAGS}
    123126CPP = @CPP@
    124127CPPFLAGS = @CPPFLAGS@
     
    147150LIBS = @LIBS@
    148151LTLIBOBJS = @LTLIBOBJS@
     152MACHINE_TYPE = @MACHINE_TYPE@
    149153MAINT = @MAINT@
    150154MAKEINFO = @MAKEINFO@
     
    178182am__untar = @am__untar@
    179183bindir = @bindir@
     184build = @build@
    180185build_alias = @build_alias@
     186build_cpu = @build_cpu@
     187build_os = @build_os@
     188build_vendor = @build_vendor@
    181189builddir = @builddir@
    182190datadir = @datadir@
     
    185193dvidir = @dvidir@
    186194exec_prefix = @exec_prefix@
     195host = @host@
    187196host_alias = @host_alias@
     197host_cpu = @host_cpu@
     198host_os = @host_os@
     199host_vendor = @host_vendor@
    188200htmldir = @htmldir@
    189201includedir = @includedir@
     
    209221top_builddir = @top_builddir@
    210222top_srcdir = @top_srcdir@
     223debug = yes
     224
     225# applies to both programs
     226EXTRA_FLAGS =
    211227fstream_test_SOURCES = fstream_test.c
    212228vector_test_SOURCES = vector/vector_int.c vector/array.c vector/vector_test.c
     
    638654
    639655all-tests :
    640         @+python test.py --all          # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
     656        @+python test.py --all --debug=${debug}         # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
    641657
    642658clean-local :
     
    662678
    663679declarationSpecifier: declarationSpecifier.c
    664         ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}
     680        ${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
    665681
    666682gccExtensions : gccExtensions.c
     
    671687
    672688memberCtors-ERR1: memberCtors.c
    673         ${CC} ${CFALGS} -DERR1 ${<} -o ${@}
     689        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
    674690
    675691completeTypeError : completeTypeError.c
    676         ${CC} ${CFALGS} -DERR1 ${<} -o ${@}
     692        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
    677693
    678694# Tell versions [3.59,3.63) of GNU make to not export all variables.
  • src/tests/test.py

    r5802a4f r66f8528  
    104104#               running test functions
    105105################################################################################
    106 def run_single_test(test, generate, dry_run):
     106def run_single_test(test, generate, dry_run, debug):
    107107
    108108        # find the output file based on the test name and options flag
     
    113113        sh("rm -f %s > /dev/null 2>&1" % test.name, dry_run)
    114114
     115        options = "-debug" if debug else "-nodebug";
     116
    115117        # build, skipping to next test on error
    116         make_ret, _ = sh("%s %s 2> %s 1> /dev/null" % (make_cmd, test.name, out_file), dry_run)
     118        make_ret, _ = sh("""%s EXTRA_FLAGS="-quiet %s" %s 2> %s 1> /dev/null""" % (make_cmd, options, test.name, out_file), dry_run)
    117119
    118120        # if the make command succeds continue otherwise skip to diff
     
    165167        return retcode, error
    166168
    167 def run_test_instance(t, generate, dry_run) :
     169def run_test_instance(t, generate, dry_run, debug) :
    168170        # print formated name
    169171        name_txt = "%20s  " % t.name
    170172
    171173        #run the test instance and collect the result
    172         test_failed, error = run_single_test(t, generate, dry_run)
     174        test_failed, error = run_single_test(t, generate, dry_run, debug)
    173175
    174176        # update output based on current action
     
    194196
    195197# run the given list of tests with the given parameters
    196 def run_tests(tests, generate, dry_run, jobs) :
     198def run_tests(tests, generate, dry_run, jobs, debug) :
    197199        # clean the sandbox from previous commands
    198200        sh("%s clean > /dev/null 2>&1" % make_cmd, dry_run)
     
    207209        pool = Pool(jobs)
    208210        try :
    209                 results = pool.map_async(partial(run_test_instance, generate=generate, dry_run=dry_run), tests ).get(99999999)
     211                results = pool.map_async(partial(run_test_instance, generate=generate, dry_run=dry_run, debug=debug), tests ).get(99999999)
    210212        except KeyboardInterrupt:
    211213                pool.terminate()
     
    222224        return 0
    223225
     226def yes_no(string):
     227        if string == "yes" :
     228                return True
     229        if string == "no" :
     230                return False
     231        raise argparse.ArgumentTypeError(msg)
     232        return False
     233
     234
    224235################################################################################
    225236#               main loop
     
    227238# create a parser with the arguments for the tests script
    228239parser = argparse.ArgumentParser(description='Script which runs cforall tests')
     240parser.add_argument('--debug', help='Run all tests in debug or release', type=yes_no, default='no')
    229241parser.add_argument('--dry-run', help='Don\'t run the tests, only output the commands', action='store_true')
    230242parser.add_argument('--list', help='List all test available', action='store_true')
     
    296308        sys.exit(1)
    297309
    298 print('Running on %i cores' % options.jobs)
     310print('Running (%s) on %i cores' % ("debug" if options.debug else "no debug", options.jobs))
    299311make_cmd = "make" if make_flags else ("make -j%i" % options.jobs)
    300312
     
    305317else :
    306318        # otherwise run all tests and make sure to return the correct error code
    307         sys.exit( run_tests(tests, options.regenerate_expected, options.dry_run, options.jobs) )
     319        sys.exit( run_tests(tests, options.regenerate_expected, options.dry_run, options.jobs, options.debug) )
Note: See TracChangeset for help on using the changeset viewer.