summaryrefslogtreecommitdiffstats
path: root/contrib/groff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/groff')
-rw-r--r--contrib/groff/FREEBSD-Xlist3
-rw-r--r--contrib/groff/FREEBSD-upgrade31
-rw-r--r--contrib/groff/src/devices/grotty/grotty.man17
-rw-r--r--contrib/groff/src/include/getopt.h181
-rw-r--r--contrib/groff/src/libs/libgroff/cmap.cpp10
-rw-r--r--contrib/groff/src/libs/libgroff/cset.cpp10
-rw-r--r--contrib/groff/src/libs/libgroff/getopt.c1277
-rw-r--r--contrib/groff/src/libs/libgroff/getopt1.c188
-rw-r--r--contrib/groff/src/libs/libgroff/invalid.cpp6
-rw-r--r--contrib/groff/src/preproc/eqn/eqn.cpp1170
-rw-r--r--contrib/groff/src/preproc/eqn/eqn_tab.h67
-rw-r--r--contrib/groff/src/preproc/eqn/neqn.sh19
-rw-r--r--contrib/groff/src/preproc/pic/pic.cpp5619
-rw-r--r--contrib/groff/src/preproc/pic/pic_tab.h139
-rw-r--r--contrib/groff/src/preproc/refer/label.cpp1605
-rw-r--r--contrib/groff/src/roff/groff/groff.man7
-rw-r--r--contrib/groff/src/roff/nroff/nroff.man4
-rwxr-xr-xcontrib/groff/src/roff/nroff/nroff.sh24
-rw-r--r--contrib/groff/tmac/eqnrc2
-rw-r--r--contrib/groff/tmac/mdoc.local2
-rw-r--r--contrib/groff/tmac/troffrc17
-rw-r--r--contrib/groff/tmac/tty-char.tmac2
-rw-r--r--contrib/groff/tmac/tty.tmac7
23 files changed, 139 insertions, 10268 deletions
diff --git a/contrib/groff/FREEBSD-Xlist b/contrib/groff/FREEBSD-Xlist
new file mode 100644
index 0000000..4549878
--- /dev/null
+++ b/contrib/groff/FREEBSD-Xlist
@@ -0,0 +1,3 @@
+$FreeBSD$
+*/arch
+*/src/libs/snprintf
diff --git a/contrib/groff/FREEBSD-upgrade b/contrib/groff/FREEBSD-upgrade
new file mode 100644
index 0000000..65154f1
--- /dev/null
+++ b/contrib/groff/FREEBSD-upgrade
@@ -0,0 +1,31 @@
+$FreeBSD$
+
+This directory contains virgin copies of the original distribution files
+on a "vendor" branch. Do not, under any circumstances, attempt to upgrade
+the files in this directory via patches and a cvs commit.
+
+To upgrade to a newer version of groff, when it is available:
+ 1. Unpack the new version into an empty directory.
+ [Do not make ANY changes to the files.]
+
+ 2. Use the command:
+ cvs import -m 'Virgin import of FSF groff v<version>' \
+ src/contrib/groff FSF v<version>
+
+ For example, to do the import of version 1.19, I typed:
+ cvs import -m 'Virgin import of FSF groff v1.19' \
+ src/contrib/groff FSF v1_19
+
+ 3. Follow the instructions printed out in step 2 to resolve any
+ conflicts between local FreeBSD changes and the newer version.
+
+Do not, under any circumstances, deviate from this procedure.
+
+To make local changes to groff, simply patch and commit to the main
+branch (aka HEAD). Never make local changes on the FSF branch.
+
+All local changes should be submitted to Werner Lemberg <wl@gnu.org> or
+Ted Harding <ted.harding@nessie.mcc.ac.uk> for inclusion in the next
+vendor release.
+
+ru@FreeBSD.org - 2 May 2003
diff --git a/contrib/groff/src/devices/grotty/grotty.man b/contrib/groff/src/devices/grotty/grotty.man
index 198ca47..7e59569 100644
--- a/contrib/groff/src/devices/grotty/grotty.man
+++ b/contrib/groff/src/devices/grotty/grotty.man
@@ -1,4 +1,5 @@
.ig
+$FreeBSD$
Copyright (C) 1989-2000, 2001, 2002 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -50,7 +51,8 @@ should be invoked by using the
command
with a
.BR \-Tascii ,
-.B \-Tlatin1
+.BR \-Tlatin1 ,
+.B \-Tkoi8-r
or
.B \-Tutf8
option on ASCII based systems, and with
@@ -236,6 +238,7 @@ to the search path for font and device description files;
is the name of the device, usually
.BR ascii ,
.BR latin1 ,
+.BR koi8-r ,
.BR utf8 ,
or
.BR cp1047 .
@@ -321,6 +324,18 @@ Font description file for font
of
.B ascii
device.
+.TP
+.B @FONTDIR@/devkoi8-r/DESC
+Device description file for
+.B koi8-r
+device.
+.TP
+.BI @FONTDIR@/devkoi8-r/ F
+Font description file for font
+.I F
+of
+.B koi8-r
+device.
.
.TP
.B @FONTDIR@/devlatin1/DESC
diff --git a/contrib/groff/src/include/getopt.h b/contrib/groff/src/include/getopt.h
deleted file mode 100644
index 4283c35..0000000
--- a/contrib/groff/src/include/getopt.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/* Declarations for getopt.
- Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _GETOPT_H
-
-#ifndef __need_getopt
-# define _GETOPT_H 1
-#endif
-
-/* If __GNU_LIBRARY__ is not already defined, either we are being used
- standalone, or this is the first header included in the source file.
- If we are being used with glibc, we need to include <features.h>, but
- that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
- not defined, include <ctype.h>, which will pull in <features.h> for us
- if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
- doesn't flood the namespace with stuff the way some other headers do.) */
-#if !defined __GNU_LIBRARY__
-# include <ctype.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns -1, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
- for unrecognized options. */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized. */
-
-extern int optopt;
-
-#ifndef __need_getopt
-/* Describe the long-named options requested by the application.
- The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
- of `struct option' terminated by an element containing a name which is
- zero.
-
- The field `has_arg' is:
- no_argument (or 0) if the option does not take an argument,
- required_argument (or 1) if the option requires an argument,
- optional_argument (or 2) if the option takes an optional argument.
-
- If the field `flag' is not NULL, it points to a variable that is set
- to the value given in the field `val' when the option is found, but
- left unchanged if the option is not found.
-
- To have a long-named option do something other than set an `int' to
- a compiled-in constant, such as set a value from `optarg', set the
- option's `flag' field to zero and its `val' field to a nonzero
- value (the equivalent single-letter option character, if there is
- one). For long options that have a zero `flag' field, `getopt'
- returns the contents of the `val' field. */
-
-struct option
-{
-# if (defined __STDC__ && __STDC__) || defined __cplusplus
- const char *name;
-# else
- char *name;
-# endif
- /* has_arg can't be an enum because some compilers complain about
- type mismatches in all the code that assumes it is an int. */
- int has_arg;
- int *flag;
- int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'. */
-
-# define no_argument 0
-# define required_argument 1
-# define optional_argument 2
-#endif /* need getopt */
-
-
-/* Get definitions and prototypes for functions to process the
- arguments in ARGV (ARGC of them, minus the program name) for
- options given in OPTS.
-
- Return the option character from OPTS just read. Return -1 when
- there are no more options. For unrecognized options, or options
- missing arguments, `optopt' is set to the option letter, and '?' is
- returned.
-
- The OPTS string is a list of characters which are recognized option
- letters, optionally followed by colons, specifying that that letter
- takes an argument, to be placed in `optarg'.
-
- If a letter in OPTS is followed by two colons, its argument is
- optional. This behavior is specific to the GNU `getopt'.
-
- The argument `--' causes premature termination of argument
- scanning, explicitly telling `getopt' that there are no more
- options.
-
- If OPTS begins with `--', then non-option arguments are treated as
- arguments to the option '\0'. This behavior is specific to the GNU
- `getopt'. */
-
-#if (defined __STDC__ && __STDC__) || defined __cplusplus
-# ifdef __GNU_LIBRARY__
-/* Many other libraries have conflicting prototypes for getopt, with
- differences in the consts, in stdlib.h. To avoid compilation
- errors, only prototype getopt for the GNU C library. */
-extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
-# else /* not __GNU_LIBRARY__ */
-extern int getopt ();
-# endif /* __GNU_LIBRARY__ */
-
-# ifndef __need_getopt
-extern int getopt_long (int ___argc, char *const *___argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind);
-extern int getopt_long_only (int ___argc, char *const *___argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind);
-
-/* Internal only. Users should not call this directly. */
-extern int _getopt_internal (int ___argc, char *const *___argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind,
- int __long_only);
-# endif
-#else /* not __STDC__ */
-extern int getopt ();
-# ifndef __need_getopt
-extern int getopt_long ();
-extern int getopt_long_only ();
-
-extern int _getopt_internal ();
-# endif
-#endif /* __STDC__ */
-
-#ifdef __cplusplus
-}
-#endif
-
-/* Make sure we later can get all the definitions and declarations. */
-#undef __need_getopt
-
-#endif /* getopt.h */
diff --git a/contrib/groff/src/libs/libgroff/cmap.cpp b/contrib/groff/src/libs/libgroff/cmap.cpp
index 4b75d06..a637991 100644
--- a/contrib/groff/src/libs/libgroff/cmap.cpp
+++ b/contrib/groff/src/libs/libgroff/cmap.cpp
@@ -18,13 +18,18 @@ You should have received a copy of the GNU General Public License along
with groff; see the file COPYING. If not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/* $FreeBSD$ */
+
#include <ctype.h>
+#ifdef __FreeBSD__
+#include <locale.h>
+#endif
#include "cmap.h"
cmap cmlower(CMAP_BUILTIN);
cmap cmupper(CMAP_BUILTIN);
-#ifdef isascii
+#if defined(isascii) && !defined(__FreeBSD__)
#define ISASCII(c) isascii(c)
#else
#define ISASCII(c) (1)
@@ -49,6 +54,9 @@ cmap_init::cmap_init()
if (initialised)
return;
initialised = 1;
+#ifdef __FreeBSD__
+ (void) setlocale(LC_CTYPE, "");
+#endif
for (int i = 0; i <= UCHAR_MAX; i++) {
cmupper.v[i] = ISASCII(i) && islower(i) ? toupper(i) : i;
cmlower.v[i] = ISASCII(i) && isupper(i) ? tolower(i) : i;
diff --git a/contrib/groff/src/libs/libgroff/cset.cpp b/contrib/groff/src/libs/libgroff/cset.cpp
index e4845c1..68564c4 100644
--- a/contrib/groff/src/libs/libgroff/cset.cpp
+++ b/contrib/groff/src/libs/libgroff/cset.cpp
@@ -18,7 +18,12 @@ You should have received a copy of the GNU General Public License along
with groff; see the file COPYING. If not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/* $FreeBSD$ */
+
#include <ctype.h>
+#ifdef __FreeBSD__
+#include <locale.h>
+#endif
#include "cset.h"
cset csalpha(CSET_BUILTIN);
@@ -33,7 +38,7 @@ cset csprint(CSET_BUILTIN);
cset csgraph(CSET_BUILTIN);
cset cscntrl(CSET_BUILTIN);
-#ifdef isascii
+#if defined(isascii) && !defined(__FreeBSD__)
#define ISASCII(c) isascii(c)
#else
#define ISASCII(c) (1)
@@ -86,6 +91,9 @@ cset_init::cset_init()
if (initialised)
return;
initialised = 1;
+#ifdef __FreeBSD__
+ (void) setlocale(LC_CTYPE, "");
+#endif
for (int i = 0; i <= UCHAR_MAX; i++) {
csalpha.v[i] = ISASCII(i) && isalpha(i);
csupper.v[i] = ISASCII(i) && isupper(i);
diff --git a/contrib/groff/src/libs/libgroff/getopt.c b/contrib/groff/src/libs/libgroff/getopt.c
deleted file mode 100644
index 289d137..0000000
--- a/contrib/groff/src/libs/libgroff/getopt.c
+++ /dev/null
@@ -1,1277 +0,0 @@
-/* Getopt for GNU.
- NOTE: getopt is now part of the C library, so if you don't know what
- "Keep this file name-space clean" means, talk to drepper@gnu.org
- before changing it!
- Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
- Ditto for AIX 3.2 and <stdlib.h>. */
-#ifndef _NO_PROTO
-# define _NO_PROTO
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-# ifndef const
-# define const
-# endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-# include <gnu-versions.h>
-# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-# define ELIDE_CODE
-# endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-/* Don't include stdlib.h for non-GNU C libraries because some of them
- contain conflicting prototypes for getopt. */
-# include <stdlib.h>
-# include <unistd.h>
-#endif /* GNU C library. */
-
-#ifdef VMS
-# include <unixlib.h>
-# if HAVE_STRING_H - 0
-# include <string.h>
-# endif
-#endif
-
-#ifndef _
-/* This is for other GNU distributions with internationalized messages. */
-# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
-# include <libintl.h>
-# ifndef _
-# define _(msgid) gettext (msgid)
-# endif
-# else
-# define _(msgid) (msgid)
-# endif
-# if defined _LIBC && defined USE_IN_LIBIO
-# include <wchar.h>
-# endif
-#endif
-
-#ifndef attribute_hidden
-# define attribute_hidden
-#endif
-
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
- but it behaves differently for the user, since it allows the user
- to intersperse the options with the other arguments.
-
- As `getopt' works, it permutes the elements of ARGV so that,
- when it is done, all the options precede everything else. Thus
- all application programs are extended to handle flexible argument order.
-
- Setting the environment variable POSIXLY_CORRECT disables permutation.
- Then the behavior is completely standard.
-
- GNU application programs can use a third alternative mode in which
- they can distinguish the relative order of options and other arguments. */
-
-#include "getopt.h"
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns -1, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-/* 1003.2 says this must be 1 before any call. */
-int optind = 1;
-
-/* Formerly, initialization of getopt depended on optind==0, which
- causes problems with re-calling getopt as programs generally don't
- know that. */
-
-int __getopt_initialized attribute_hidden;
-
-/* The next char to be scanned in the option-element
- in which the last option character we returned was found.
- This allows us to pick up the scan where we left off.
-
- If this is zero, or a null string, it means resume the scan
- by advancing to the next ARGV-element. */
-
-static char *nextchar;
-
-/* Callers store zero here to inhibit the error message
- for unrecognized options. */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
- This must be initialized on some systems to avoid linking in the
- system's own getopt implementation. */
-
-int optopt = '?';
-
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
- If the caller did not specify anything,
- the default is REQUIRE_ORDER if the environment variable
- POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
- REQUIRE_ORDER means don't recognize them as options;
- stop option processing when the first non-option is seen.
- This is what Unix does.
- This mode of operation is selected by either setting the environment
- variable POSIXLY_CORRECT, or using `+' as the first character
- of the list of option characters.
-
- PERMUTE is the default. We permute the contents of ARGV as we scan,
- so that eventually all the non-options are at the end. This allows options
- to be given in any order, even with programs that were not written to
- expect this.
-
- RETURN_IN_ORDER is an option available to programs that were written
- to expect options and other ARGV-elements in any order and that care about
- the ordering of the two. We describe each non-option ARGV-element
- as if it were the argument of an option with character code 1.
- Using `-' as the first character of the list of option characters
- selects this mode of operation.
-
- The special argument `--' forces an end of option-scanning regardless
- of the value of `ordering'. In the case of RETURN_IN_ORDER, only
- `--' can cause `getopt' to return -1 with `optind' != ARGC. */
-
-static enum
-{
- REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-} ordering;
-
-/* Value of POSIXLY_CORRECT environment variable. */
-static char *posixly_correct;
-
-#ifdef __GNU_LIBRARY__
-/* We want to avoid inclusion of string.h with non-GNU libraries
- because there are many ways it can cause trouble.
- On some systems, it contains special magic macros that don't work
- in GCC. */
-# include <string.h>
-# define my_index strchr
-#else
-
-# if HAVE_STRING_H
-# include <string.h>
-# else
-# include <strings.h>
-# endif
-
-/* Avoid depending on library functions or files
- whose names are inconsistent. */
-
-#ifndef getenv
-extern char *getenv ();
-#endif
-
-static char *
-my_index (str, chr)
- const char *str;
- int chr;
-{
- while (*str)
- {
- if (*str == chr)
- return (char *) str;
- str++;
- }
- return 0;
-}
-
-/* If using GCC, we can safely declare strlen this way.
- If not using GCC, it is ok not to declare it. */
-#ifdef __GNUC__
-/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
- That was relevant to code that was here before. */
-# if (!defined __STDC__ || !__STDC__) && !defined strlen
-/* gcc with -traditional declares the built-in strlen to return int,
- and has done so at least since version 2.4.5. -- rms. */
-extern int strlen (const char *);
-# endif /* not __STDC__ */
-#endif /* __GNUC__ */
-
-#endif /* not __GNU_LIBRARY__ */
-
-/* Handle permutation of arguments. */
-
-/* Describe the part of ARGV that contains non-options that have
- been skipped. `first_nonopt' is the index in ARGV of the first of them;
- `last_nonopt' is the index after the last of them. */
-
-static int first_nonopt;
-static int last_nonopt;
-
-#ifdef _LIBC
-/* Stored original parameters.
- XXX This is no good solution. We should rather copy the args so
- that we can compare them later. But we must not use malloc(3). */
-extern int __libc_argc;
-extern char **__libc_argv;
-
-/* Bash 2.0 gives us an environment variable containing flags
- indicating ARGV elements that should not be considered arguments. */
-
-# ifdef USE_NONOPTION_FLAGS
-/* Defined in getopt_init.c */
-extern char *__getopt_nonoption_flags;
-
-static int nonoption_flags_max_len;
-static int nonoption_flags_len;
-# endif
-
-# ifdef USE_NONOPTION_FLAGS
-# define SWAP_FLAGS(ch1, ch2) \
- if (nonoption_flags_len > 0) \
- { \
- char __tmp = __getopt_nonoption_flags[ch1]; \
- __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
- __getopt_nonoption_flags[ch2] = __tmp; \
- }
-# else
-# define SWAP_FLAGS(ch1, ch2)
-# endif
-#else /* !_LIBC */
-# define SWAP_FLAGS(ch1, ch2)
-#endif /* _LIBC */
-
-/* Exchange two adjacent subsequences of ARGV.
- One subsequence is elements [first_nonopt,last_nonopt)
- which contains all the non-options that have been skipped so far.
- The other is elements [last_nonopt,optind), which contains all
- the options processed since those non-options were skipped.
-
- `first_nonopt' and `last_nonopt' are relocated so that they describe
- the new indices of the non-options in ARGV after they are moved. */
-
-#if defined __STDC__ && __STDC__
-static void exchange (char **);
-#endif
-
-static void
-exchange (argv)
- char **argv;
-{
- int bottom = first_nonopt;
- int middle = last_nonopt;
- int top = optind;
- char *tem;
-
- /* Exchange the shorter segment with the far end of the longer segment.
- That puts the shorter segment into the right place.
- It leaves the longer segment in the right place overall,
- but it consists of two parts that need to be swapped next. */
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
- /* First make sure the handling of the `__getopt_nonoption_flags'
- string can work normally. Our top argument must be in the range
- of the string. */
- if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
- {
- /* We must extend the array. The user plays games with us and
- presents new arguments. */
- char *new_str = malloc (top + 1);
- if (new_str == NULL)
- nonoption_flags_len = nonoption_flags_max_len = 0;
- else
- {
- memset (__mempcpy (new_str, __getopt_nonoption_flags,
- nonoption_flags_max_len),
- '\0', top + 1 - nonoption_flags_max_len);
- nonoption_flags_max_len = top + 1;
- __getopt_nonoption_flags = new_str;
- }
- }
-#endif
-
- while (top > middle && middle > bottom)
- {
- if (top - middle > middle - bottom)
- {
- /* Bottom segment is the short one. */
- int len = middle - bottom;
- register int i;
-
- /* Swap it with the top part of the top segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[top - (middle - bottom) + i];
- argv[top - (middle - bottom) + i] = tem;
- SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
- }
- /* Exclude the moved bottom segment from further swapping. */
- top -= len;
- }
- else
- {
- /* Top segment is the short one. */
- int len = top - middle;
- register int i;
-
- /* Swap it with the bottom part of the bottom segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[middle + i];
- argv[middle + i] = tem;
- SWAP_FLAGS (bottom + i, middle + i);
- }
- /* Exclude the moved top segment from further swapping. */
- bottom += len;
- }
- }
-
- /* Update records for the slots the non-options now occupy. */
-
- first_nonopt += (optind - last_nonopt);
- last_nonopt = optind;
-}
-
-/* Initialize the internal data when the first call is made. */
-
-#if defined __STDC__ && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
-#endif
-static const char *
-_getopt_initialize (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
-{
- /* Start processing options with ARGV-element 1 (since ARGV-element 0
- is the program name); the sequence of previously skipped
- non-option ARGV-elements is empty. */
-
- first_nonopt = last_nonopt = optind;
-
- nextchar = NULL;
-
- posixly_correct = getenv ("POSIXLY_CORRECT");
-
- /* Determine how to handle the ordering of options and nonoptions. */
-
- if (optstring[0] == '-')
- {
- ordering = RETURN_IN_ORDER;
- ++optstring;
- }
- else if (optstring[0] == '+')
- {
- ordering = REQUIRE_ORDER;
- ++optstring;
- }
- else if (posixly_correct != NULL)
- ordering = REQUIRE_ORDER;
- else
- ordering = PERMUTE;
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
- if (posixly_correct == NULL
- && argc == __libc_argc && argv == __libc_argv)
- {
- if (nonoption_flags_max_len == 0)
- {
- if (__getopt_nonoption_flags == NULL
- || __getopt_nonoption_flags[0] == '\0')
- nonoption_flags_max_len = -1;
- else
- {
- const char *orig_str = __getopt_nonoption_flags;
- int len = nonoption_flags_max_len = strlen (orig_str);
- if (nonoption_flags_max_len < argc)
- nonoption_flags_max_len = argc;
- __getopt_nonoption_flags =
- (char *) malloc (nonoption_flags_max_len);
- if (__getopt_nonoption_flags == NULL)
- nonoption_flags_max_len = -1;
- else
- memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
- '\0', nonoption_flags_max_len - len);
- }
- }
- nonoption_flags_len = nonoption_flags_max_len;
- }
- else
- nonoption_flags_len = 0;
-#endif
-
- return optstring;
-}
-
-/* Scan elements of ARGV (whose length is ARGC) for option characters
- given in OPTSTRING.
-
- If an element of ARGV starts with '-', and is not exactly "-" or "--",
- then it is an option element. The characters of this element
- (aside from the initial '-') are option characters. If `getopt'
- is called repeatedly, it returns successively each of the option characters
- from each of the option elements.
-
- If `getopt' finds another option character, it returns that character,
- updating `optind' and `nextchar' so that the next call to `getopt' can
- resume the scan with the following option character or ARGV-element.
-
- If there are no more option characters, `getopt' returns -1.
- Then `optind' is the index in ARGV of the first ARGV-element
- that is not an option. (The ARGV-elements have been permuted
- so that those that are not options now come last.)
-
- OPTSTRING is a string containing the legitimate option characters.
- If an option character is seen that is not listed in OPTSTRING,
- return '?' after printing an error message. If you set `opterr' to
- zero, the error message is suppressed but we still return '?'.
-
- If a char in OPTSTRING is followed by a colon, that means it wants an arg,
- so the following text in the same ARGV-element, or the text of the following
- ARGV-element, is returned in `optarg'. Two colons mean an option that
- wants an optional arg; if there is text in the current ARGV-element,
- it is returned in `optarg', otherwise `optarg' is set to zero.
-
- If OPTSTRING starts with `-' or `+', it requests different methods of
- handling the non-option ARGV-elements.
- See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
- Long-named options begin with `--' instead of `-'.
- Their names may be abbreviated as long as the abbreviation is unique
- or is an exact match for some defined option. If they have an
- argument, it follows the option name in the same ARGV-element, separated
- from the option name by a `=', or else the in next ARGV-element.
- When `getopt' finds a long-named option, it returns 0 if that option's
- `flag' field is nonzero, the value of the option's `val' field
- if the `flag' field is zero.
-
- The elements of ARGV aren't really const, because we permute them.
- But we pretend they're const in the prototype to be compatible
- with other systems.
-
- LONGOPTS is a vector of `struct option' terminated by an
- element containing a name which is zero.
-
- LONGIND returns the index in LONGOPT of the long-named option found.
- It is only valid when a long-named option has been found by the most
- recent call.
-
- If LONG_ONLY is nonzero, '-' as well as '--' can introduce
- long-named options. */
-
-int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
- int argc;
- char *const *argv;
- const char *optstring;
- const struct option *longopts;
- int *longind;
- int long_only;
-{
- int print_errors = opterr;
- if (optstring[0] == ':')
- print_errors = 0;
-
- if (argc < 1)
- return -1;
-
- optarg = NULL;
-
- if (optind == 0 || !__getopt_initialized)
- {
- if (optind == 0)
- optind = 1; /* Don't scan ARGV[0], the program name. */
- optstring = _getopt_initialize (argc, argv, optstring);
- __getopt_initialized = 1;
- }
-
- /* Test whether ARGV[optind] points to a non-option argument.
- Either it does not have option syntax, or there is an environment flag
- from the shell indicating it is not an option. The later information
- is only used when the used in the GNU libc. */
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
- || (optind < nonoption_flags_len \
- && __getopt_nonoption_flags[optind] == '1'))
-#else
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
-#endif
-
- if (nextchar == NULL || *nextchar == '\0')
- {
- /* Advance to the next ARGV-element. */
-
- /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
- moved back by the user (who may also have changed the arguments). */
- if (last_nonopt > optind)
- last_nonopt = optind;
- if (first_nonopt > optind)
- first_nonopt = optind;
-
- if (ordering == PERMUTE)
- {
- /* If we have just processed some options following some non-options,
- exchange them so that the options come first. */
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (last_nonopt != optind)
- first_nonopt = optind;
-
- /* Skip any additional non-options
- and extend the range of non-options previously skipped. */
-
- while (optind < argc && NONOPTION_P)
- optind++;
- last_nonopt = optind;
- }
-
- /* The special ARGV-element `--' means premature end of options.
- Skip it like a null option,
- then exchange with previous non-options as if it were an option,
- then skip everything else like a non-option. */
-
- if (optind != argc && !strcmp (argv[optind], "--"))
- {
- optind++;
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (first_nonopt == last_nonopt)
- first_nonopt = optind;
- last_nonopt = argc;
-
- optind = argc;
- }
-
- /* If we have done all the ARGV-elements, stop the scan
- and back over any non-options that we skipped and permuted. */
-
- if (optind == argc)
- {
- /* Set the next-arg-index to point at the non-options
- that we previously skipped, so the caller will digest them. */
- if (first_nonopt != last_nonopt)
- optind = first_nonopt;
- return -1;
- }
-
- /* If we have come to a non-option and did not permute it,
- either stop the scan or describe it to the caller and pass it by. */
-
- if (NONOPTION_P)
- {
- if (ordering == REQUIRE_ORDER)
- return -1;
- optarg = argv[optind++];
- return 1;
- }
-
- /* We have found another option-ARGV-element.
- Skip the initial punctuation. */
-
- nextchar = (argv[optind] + 1
- + (longopts != NULL && argv[optind][1] == '-'));
- }
-
- /* Decode the current option-ARGV-element. */
-
- /* Check whether the ARGV-element is a long option.
-
- If long_only and the ARGV-element has the form "-f", where f is
- a valid short option, don't consider it an abbreviated form of
- a long option that starts with f. Otherwise there would be no
- way to give the -f short option.
-
- On the other hand, if there's a long option "fubar" and
- the ARGV-element is "-fu", do consider that an abbreviation of
- the long option, just like "--fu", and not "-f" with arg "u".
-
- This distinction seems to be the most useful approach. */
-
- if (longopts != NULL
- && (argv[optind][1] == '-'
- || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = -1;
- int option_index;
-
- for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
- {
- if ((unsigned int) (nameend - nextchar)
- == (unsigned int) strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else if (long_only
- || pfound->has_arg != p->has_arg
- || pfound->flag != p->flag
- || pfound->val != p->val)
- /* Second or later nonexact match found. */
- ambig = 1;
- }
-
- if (ambig && !exact)
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[optind]) >= 0)
- {
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[optind]);
-#endif
- }
- nextchar += strlen (nextchar);
- optind++;
- optopt = 0;
- return '?';
- }
-
- if (pfound != NULL)
- {
- option_index = indfound;
- optind++;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
- int n;
-#endif
-
- if (argv[optind - 1][1] == '-')
- {
- /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("\
-%s: option `--%s' doesn't allow an argument\n"),
- argv[0], pfound->name);
-#else
- fprintf (stderr, _("\
-%s: option `--%s' doesn't allow an argument\n"),
- argv[0], pfound->name);
-#endif
- }
- else
- {
- /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
- argv[0], argv[optind - 1][0],
- pfound->name);
-#else
- fprintf (stderr, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
- argv[0], argv[optind - 1][0], pfound->name);
-#endif
- }
-
-#if defined _LIBC && defined USE_IN_LIBIO
- if (n >= 0)
- {
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- free (buf);
- }
-#endif
- }
-
- nextchar += strlen (nextchar);
-
- optopt = pfound->val;
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]) >= 0)
- {
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
-#endif
- }
- nextchar += strlen (nextchar);
- optopt = pfound->val;
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen (nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
-
- /* Can't find it as a long option. If this is not getopt_long_only,
- or the option starts with '--' or is not a valid short
- option, then it's an error.
- Otherwise interpret it as a short option. */
- if (!long_only || argv[optind][1] == '-'
- || my_index (optstring, *nextchar) == NULL)
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
- int n;
-#endif
-
- if (argv[optind][1] == '-')
- {
- /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
- argv[0], nextchar);
-#else
- fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
- argv[0], nextchar);
-#endif
- }
- else
- {
- /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
- argv[0], argv[optind][0], nextchar);
-#else
- fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
- argv[0], argv[optind][0], nextchar);
-#endif
- }
-
-#if defined _LIBC && defined USE_IN_LIBIO
- if (n >= 0)
- {
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- free (buf);
- }
-#endif
- }
- nextchar = (char *) "";
- optind++;
- optopt = 0;
- return '?';
- }
- }
-
- /* Look at and handle the next short option-character. */
-
- {
- char c = *nextchar++;
- char *temp = my_index (optstring, c);
-
- /* Increment `optind' when we start to process its last character. */
- if (*nextchar == '\0')
- ++optind;
-
- if (temp == NULL || c == ':')
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
- int n;
-#endif
-
- if (posixly_correct)
- {
- /* 1003.2 specifies the format of this message. */
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
- argv[0], c);
-#else
- fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
-#endif
- }
- else
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
- argv[0], c);
-#else
- fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
-#endif
- }
-
-#if defined _LIBC && defined USE_IN_LIBIO
- if (n >= 0)
- {
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- free (buf);
- }
-#endif
- }
- optopt = c;
- return '?';
- }
- /* Convenience. Treat POSIX -W foo same as long option --foo */
- if (temp[0] == 'W' && temp[1] == ';')
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = 0;
- int option_index;
-
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (print_errors)
- {
- /* 1003.2 specifies the format of this message. */
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf,
- _("%s: option requires an argument -- %c\n"),
- argv[0], c) >= 0)
- {
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr, _("%s: option requires an argument -- %c\n"),
- argv[0], c);
-#endif
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- return c;
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
-
- /* optarg is now the argument, see if it's in the
- table of longopts. */
-
- for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
- {
- if ((unsigned int) (nameend - nextchar) == strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
- if (ambig && !exact)
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[optind]) >= 0)
- {
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[optind]);
-#endif
- }
- nextchar += strlen (nextchar);
- optind++;
- return '?';
- }
- if (pfound != NULL)
- {
- option_index = indfound;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
- argv[0], pfound->name) >= 0)
- {
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
- argv[0], pfound->name);
-#endif
- }
-
- nextchar += strlen (nextchar);
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]) >= 0)
- {
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
-#endif
- }
- nextchar += strlen (nextchar);
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen (nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
- nextchar = NULL;
- return 'W'; /* Let the application handle it. */
- }
- if (temp[1] == ':')
- {
- if (temp[2] == ':')
- {
- /* This is an option that accepts an argument optionally. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- optind++;
- }
- else
- optarg = NULL;
- nextchar = NULL;
- }
- else
- {
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (print_errors)
- {
- /* 1003.2 specifies the format of this message. */
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("\
-%s: option requires an argument -- %c\n"),
- argv[0], c) >= 0)
- {
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr,
- _("%s: option requires an argument -- %c\n"),
- argv[0], c);
-#endif
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
- nextchar = NULL;
- }
- }
- return c;
- }
-}
-
-int
-getopt (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
-{
- return _getopt_internal (argc, argv, optstring,
- (const struct option *) 0,
- (int *) 0,
- 0);
-}
-
-#endif /* Not ELIDE_CODE. */
-
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
- the above definition of `getopt'. */
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
-
- c = getopt (argc, argv, "abc:d:0123456789");
- if (c == -1)
- break;
-
- switch (c)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
diff --git a/contrib/groff/src/libs/libgroff/getopt1.c b/contrib/groff/src/libs/libgroff/getopt1.c
deleted file mode 100644
index 22a7efb..0000000
--- a/contrib/groff/src/libs/libgroff/getopt1.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "getopt.h"
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-#ifndef const
-#define const
-#endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-#include <gnu-versions.h>
-#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-#define ELIDE_CODE
-#endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-#include <stdlib.h>
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-int
-getopt_long (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
-{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
-}
-
-/* Like getopt_long, but '-' as well as '--' can indicate a long option.
- If an option that starts with '-' (not '--') doesn't match a long option,
- but does match a short option, it is parsed as a short option
- instead. */
-
-int
-getopt_long_only (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
-{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
-}
-
-
-#endif /* Not ELIDE_CODE. */
-
-#ifdef TEST
-
-#include <stdio.h>
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
- int option_index = 0;
- static struct option long_options[] =
- {
- {"add", 1, 0, 0},
- {"append", 0, 0, 0},
- {"delete", 1, 0, 0},
- {"verbose", 0, 0, 0},
- {"create", 0, 0, 0},
- {"file", 1, 0, 0},
- {0, 0, 0, 0}
- };
-
- c = getopt_long (argc, argv, "abc:d:0123456789",
- long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c)
- {
- case 0:
- printf ("option %s", long_options[option_index].name);
- if (optarg)
- printf (" with arg %s", optarg);
- printf ("\n");
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case 'd':
- printf ("option d with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
diff --git a/contrib/groff/src/libs/libgroff/invalid.cpp b/contrib/groff/src/libs/libgroff/invalid.cpp
index f36894a..63b3cc2 100644
--- a/contrib/groff/src/libs/libgroff/invalid.cpp
+++ b/contrib/groff/src/libs/libgroff/invalid.cpp
@@ -17,6 +17,8 @@ You should have received a copy of the GNU General Public License along
with groff; see the file COPYING. If not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/* $FreeBSD$ */
+
#include "lib.h"
// Table of invalid input characters.
@@ -31,8 +33,8 @@ char invalid_char_table[256]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
diff --git a/contrib/groff/src/preproc/eqn/eqn.cpp b/contrib/groff/src/preproc/eqn/eqn.cpp
deleted file mode 100644
index 2c01ba6..0000000
--- a/contrib/groff/src/preproc/eqn/eqn.cpp
+++ /dev/null
@@ -1,1170 +0,0 @@
-#ifndef lint
-static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93 (groff)";
-#endif
-#define YYBYACC 1
-#define YYMAJOR 1
-#define YYMINOR 9
-#define yyclearin (yychar=(-1))
-#define yyerrok (yyerrflag=0)
-#define YYRECOVERING (yyerrflag!=0)
-#define YYPREFIX "yy"
-#line 20 "eqn.y"
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "lib.h"
-#include "box.h"
-extern int non_empty_flag;
-char *strsave(const char *);
-int yylex();
-void yyerror(const char *);
-#line 32 "eqn.y"
-typedef union {
- char *str;
- box *b;
- pile_box *pb;
- matrix_box *mb;
- int n;
- column *col;
-} YYSTYPE;
-#line 32 "y.tab.c"
-#define OVER 257
-#define SMALLOVER 258
-#define SQRT 259
-#define SUB 260
-#define SUP 261
-#define LPILE 262
-#define RPILE 263
-#define CPILE 264
-#define PILE 265
-#define LEFT 266
-#define RIGHT 267
-#define TO 268
-#define FROM 269
-#define SIZE 270
-#define FONT 271
-#define ROMAN 272
-#define BOLD 273
-#define ITALIC 274
-#define FAT 275
-#define ACCENT 276
-#define BAR 277
-#define UNDER 278
-#define ABOVE 279
-#define TEXT 280
-#define QUOTED_TEXT 281
-#define FWD 282
-#define BACK 283
-#define DOWN 284
-#define UP 285
-#define MATRIX 286
-#define COL 287
-#define LCOL 288
-#define RCOL 289
-#define CCOL 290
-#define MARK 291
-#define LINEUP 292
-#define TYPE 293
-#define VCENTER 294
-#define PRIME 295
-#define SPLIT 296
-#define NOSPLIT 297
-#define UACCENT 298
-#define SPECIAL 299
-#define SPACE 300
-#define GFONT 301
-#define GSIZE 302
-#define DEFINE 303
-#define NDEFINE 304
-#define TDEFINE 305
-#define SDEFINE 306
-#define UNDEF 307
-#define IFDEF 308
-#define INCLUDE 309
-#define DELIM 310
-#define CHARTYPE 311
-#define SET 312
-#define GRFONT 313
-#define GBFONT 314
-#define YYERRCODE 256
-short yylhs[] = { -1,
- 0, 0, 6, 6, 1, 1, 1, 2, 2, 2,
- 2, 2, 3, 3, 3, 3, 4, 4, 7, 7,
- 7, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 8, 11, 11, 12, 12, 13,
- 13, 16, 16, 15, 15, 14, 14, 14, 14, 9,
- 9, 10, 10, 10,
-};
-short yylen[] = { 2,
- 0, 1, 1, 2, 1, 2, 2, 1, 3, 3,
- 5, 5, 1, 2, 3, 3, 1, 3, 1, 3,
- 5, 1, 1, 2, 2, 1, 1, 1, 3, 2,
- 2, 2, 2, 4, 5, 3, 2, 2, 2, 3,
- 3, 2, 2, 2, 2, 3, 3, 3, 3, 3,
- 3, 3, 2, 3, 1, 1, 3, 3, 4, 1,
- 2, 1, 3, 3, 4, 2, 2, 2, 2, 1,
- 1, 1, 1, 1,
-};
-short yydefred[] = { 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 22, 23, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 26, 27, 28, 0,
- 0, 3, 5, 0, 13, 0, 0, 17, 14, 70,
- 71, 0, 0, 55, 31, 32, 33, 30, 73, 74,
- 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 6, 7, 0, 0, 24, 25, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 37, 38,
- 39, 0, 4, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 60, 0,
- 0, 29, 15, 16, 9, 0, 0, 20, 18, 40,
- 41, 0, 58, 0, 0, 0, 0, 66, 67, 68,
- 69, 34, 61, 0, 0, 0, 0, 59, 35, 0,
- 0, 0, 11, 12, 21, 0, 64, 0, 0, 65,
-};
-short yydgoto[] = { 31,
- 32, 33, 34, 35, 36, 84, 38, 43, 44, 52,
- 85, 45, 98, 99, 118, 131,
-};
-short yysindex[] = { 1488,
- 1527, -120, -120, -120, -120, -123, -249, -249, 1566, 1566,
- 1566, 1566, 0, 0, -249, -249, -249, -249, -115, 1488,
- 1488, -249, 1566, -256, -251, -249, 0, 0, 0, 1488,
- 0, 0, 0, -221, 0, -233, 1488, 0, 0, 0,
- 0, 1488, -85, 0, 0, 0, 0, 0, 0, 0,
- 0, 1488, 1566, 1566, -195, -195, -195, -195, 1566, 1566,
- 1566, 1566, -272, 0, 0, 1566, -195, 0, 0, 1566,
- 1402, 1527, 1527, 1527, 1527, 1566, 1566, 1566, 0, 0,
- 0, 1566, 0, 1488, -113, 1488, 1444, -195, -195, -195,
- -195, -195, -195, -117, -117, -117, -117, -118, 0, -195,
- -195, 0, 0, 0, 0, -167, -189, 0, 0, 0,
- 0, 1488, 0, -106, -123, 1488, -83, 0, 0, 0,
- 0, 0, 0, 1527, 1527, 1566, 1488, 0, 0, 1488,
- -105, 1488, 0, 0, 0, 1488, 0, -104, 1488, 0,
-};
-short yyrindex[] = { 41,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 1220, 46, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 85, 128, 363, 406, 0, 0,
- 0, 0, 0, 0, 0, 0, 449, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -103, 0, 0, 185, 492, 727, 770,
- 813, 856, 1091, 0, 0, 0, 0, 0, 0, 1134,
- 1177, 0, 0, 0, 0, 42, 1220, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -102, 0, 0, -101,
- 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
-};
-short yygindex[] = { 0,
- -7, -69, 3, -66, 458, 9, -26, 52, 27, -63,
- -32, 54, 0, -35, 2, -59,
-};
-#define YYTABLESIZE 1865
-short yytable[] = { 49,
- 8, 50, 42, 39, 105, 116, 122, 63, 37, 8,
- 109, 113, 64, 65, 94, 95, 96, 97, 128, 137,
- 140, 56, 57, 62, 68, 63, 76, 77, 69, 83,
- 40, 41, 51, 53, 54, 72, 73, 86, 71, 132,
- 1, 10, 78, 79, 80, 2, 74, 75, 66, 108,
- 10, 129, 70, 114, 133, 134, 46, 47, 48, 135,
- 87, 81, 123, 83, 82, 0, 59, 60, 61, 62,
- 76, 126, 138, 0, 103, 104, 83, 106, 0, 83,
- 78, 79, 80, 0, 42, 0, 78, 79, 80, 72,
- 73, 0, 0, 42, 8, 0, 119, 120, 121, 81,
- 124, 125, 82, 0, 0, 81, 0, 0, 82, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,
- 127, 0, 83, 8, 130, 8, 8, 43, 0, 0,
- 0, 83, 0, 0, 0, 10, 43, 0, 0, 0,
- 130, 51, 0, 0, 139, 117, 117, 117, 117, 0,
- 0, 0, 0, 0, 0, 0, 40, 41, 0, 40,
- 41, 0, 40, 41, 10, 112, 10, 10, 94, 95,
- 96, 97, 112, 136, 136, 56, 57, 62, 42, 63,
- 0, 0, 0, 0, 36, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 42, 0, 42,
- 42, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 43, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 43, 0, 43, 43, 0, 0, 0, 0, 0, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 0, 0,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 0, 0, 0,
- 0, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 36,
- 0, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 0, 0,
- 0, 0, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 0, 0, 44, 42, 42, 42, 42, 42, 42, 42,
- 42, 44, 0, 0, 0, 42, 42, 42, 42, 0,
- 42, 42, 0, 42, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 0, 0, 45, 43, 43, 43, 43,
- 43, 43, 43, 43, 45, 0, 0, 0, 43, 43,
- 43, 43, 0, 43, 43, 0, 43, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 36, 36, 0, 36, 36, 0, 0, 53, 0,
- 0, 0, 36, 36, 0, 0, 44, 53, 0, 0,
- 36, 36, 36, 36, 0, 0, 55, 56, 57, 58,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
- 67, 0, 36, 0, 0, 44, 0, 44, 44, 0,
- 0, 47, 0, 0, 0, 0, 0, 0, 0, 45,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 88, 89, 0, 0, 0, 0, 90, 91, 92, 93,
- 0, 0, 0, 100, 0, 0, 0, 101, 45, 0,
- 45, 45, 0, 107, 0, 110, 0, 0, 0, 111,
- 0, 0, 53, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 53, 0, 53, 53, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 47, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 47, 0, 47, 47, 0, 44,
- 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
- 44, 44, 44, 44, 44, 44, 44, 44, 0, 0,
- 0, 44, 44, 44, 44, 44, 44, 44, 44, 0,
- 0, 0, 0, 44, 44, 44, 44, 0, 44, 44,
- 0, 44, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 0, 0, 0, 45, 45, 45, 45, 45, 45,
- 45, 45, 0, 0, 0, 0, 45, 45, 45, 45,
- 0, 45, 45, 0, 45, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 0, 0, 46, 53, 53, 53,
- 53, 53, 53, 53, 53, 46, 0, 0, 0, 53,
- 53, 53, 53, 0, 53, 53, 0, 53, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 0, 0, 48,
- 47, 47, 47, 47, 47, 47, 47, 47, 48, 0,
- 0, 0, 47, 47, 47, 47, 0, 47, 47, 0,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 49, 0, 0, 0, 0, 0, 0, 0,
- 46, 49, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 46,
- 0, 46, 46, 0, 0, 51, 0, 0, 0, 0,
- 0, 0, 0, 48, 51, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 48, 0, 48, 48, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 49, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 49, 0, 49, 49, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 51, 0,
- 51, 51, 0, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 0, 0, 0, 46, 46, 46, 46, 46,
- 46, 46, 46, 0, 0, 0, 0, 46, 46, 46,
- 46, 0, 46, 46, 0, 46, 48, 48, 48, 48,
- 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
- 48, 48, 48, 48, 48, 0, 0, 0, 48, 48,
- 48, 48, 48, 48, 48, 48, 0, 0, 0, 0,
- 48, 48, 48, 48, 0, 48, 48, 0, 48, 49,
- 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49, 0, 0,
- 50, 49, 49, 49, 49, 49, 49, 49, 49, 50,
- 0, 0, 0, 49, 49, 49, 49, 0, 49, 49,
- 0, 49, 51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
- 51, 0, 0, 52, 51, 51, 51, 51, 51, 51,
- 51, 51, 52, 0, 0, 0, 51, 51, 51, 51,
- 0, 51, 51, 0, 51, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
- 0, 0, 0, 0, 50, 54, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 50, 0, 50, 50, 0, 0, 19,
- 0, 0, 0, 0, 0, 0, 0, 52, 19, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 52, 52,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,
- 0, 54, 54, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 19, 19, 0, 50, 50, 50,
- 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
- 50, 50, 50, 50, 50, 50, 0, 0, 0, 50,
- 50, 50, 50, 50, 50, 50, 50, 0, 0, 0,
- 0, 50, 50, 50, 50, 0, 50, 50, 0, 50,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 0,
- 29, 0, 52, 52, 52, 52, 52, 52, 52, 52,
- 0, 0, 0, 0, 52, 52, 52, 52, 0, 52,
- 52, 0, 52, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 29, 0, 0, 54, 54, 54, 54, 54,
- 54, 54, 54, 0, 0, 0, 0, 54, 54, 54,
- 54, 0, 54, 54, 0, 54, 19, 19, 19, 0,
- 0, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 19, 27, 29, 0, 19, 19,
- 19, 19, 19, 19, 19, 19, 0, 0, 0, 0,
- 19, 19, 19, 19, 0, 19, 19, 0, 19, 0,
- 0, 0, 0, 0, 30, 0, 102, 28, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 27, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 30, 0, 0, 28,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
- 0, 27, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 30, 0, 0, 28, 0, 0, 0, 0, 0, 0,
- 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,
- 0, 0, 28, 0, 0, 0, 0, 0, 0, 27,
- 1, 0, 0, 2, 3, 4, 5, 6, 0, 0,
- 0, 7, 8, 9, 10, 11, 12, 0, 0, 0,
- 0, 13, 14, 15, 16, 17, 18, 19, 30, 0,
- 0, 28, 20, 21, 22, 23, 0, 24, 25, 0,
- 26, 0, 1, 0, 0, 2, 3, 4, 5, 6,
- 115, 0, 0, 7, 8, 9, 10, 11, 12, 0,
- 0, 0, 0, 13, 14, 15, 16, 17, 18, 19,
- 0, 0, 0, 0, 20, 21, 22, 23, 0, 24,
- 25, 0, 26, 0, 0, 0, 1, 0, 0, 2,
- 3, 4, 5, 6, 0, 0, 0, 7, 8, 9,
- 10, 11, 12, 0, 0, 0, 0, 13, 14, 15,
- 16, 17, 18, 19, 0, 0, 0, 0, 20, 21,
- 22, 23, 0, 24, 25, 1, 26, 0, 2, 3,
- 4, 5, 6, 0, 0, 0, 7, 8, 9, 10,
- 11, 12, 0, 0, 0, 0, 13, 14, 15, 16,
- 17, 18, 19, 0, 0, 0, 0, 0, 0, 22,
- 23, 0, 24, 25, 0, 26, 0, 2, 3, 4,
- 5, 6, 0, 0, 0, 7, 8, 9, 10, 11,
- 12, 0, 0, 0, 0, 13, 14, 15, 16, 17,
- 18, 19, 0, 0, 0, 0, 0, 0, 22, 23,
- 0, 24, 25, 0, 26,
-};
-short yycheck[] = { 123,
- 0, 125, 123, 1, 74, 123, 125, 123, 0, 9,
- 77, 125, 20, 21, 287, 288, 289, 290, 125, 125,
- 125, 125, 125, 125, 281, 125, 260, 261, 280, 37,
- 280, 281, 6, 7, 8, 257, 258, 123, 30, 123,
- 0, 0, 276, 277, 278, 0, 268, 269, 22, 76,
- 9, 115, 26, 86, 124, 125, 3, 4, 5, 126,
- 52, 295, 98, 71, 298, -1, 15, 16, 17, 18,
- 260, 261, 132, -1, 72, 73, 84, 75, -1, 87,
- 276, 277, 278, -1, 0, -1, 276, 277, 278, 257,
- 258, -1, -1, 9, 94, -1, 95, 96, 97, 295,
- 268, 269, 298, -1, -1, 295, -1, -1, 298, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 127,
- 112, -1, 130, 123, 116, 125, 126, 0, -1, -1,
- -1, 139, -1, -1, -1, 94, 9, -1, -1, -1,
- 132, 115, -1, -1, 136, 94, 95, 96, 97, -1,
- -1, -1, -1, -1, -1, -1, 280, 281, -1, 280,
- 281, -1, 280, 281, 123, 279, 125, 126, 287, 288,
- 289, 290, 279, 279, 279, 279, 279, 279, 94, 279,
- -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 123, -1, 125,
- 126, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 123, -1, 125, 126, -1, -1, -1, -1, -1, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, -1, -1,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, -1, -1, -1,
- -1, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 125,
- -1, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, -1, -1,
- -1, -1, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- -1, -1, 0, 279, 280, 281, 282, 283, 284, 285,
- 286, 9, -1, -1, -1, 291, 292, 293, 294, -1,
- 296, 297, -1, 299, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, -1, -1, 0, 279, 280, 281, 282,
- 283, 284, 285, 286, 9, -1, -1, -1, 291, 292,
- 293, 294, -1, 296, 297, -1, 299, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, -1, 260, 261, -1, -1, 0, -1,
- -1, -1, 268, 269, -1, -1, 94, 9, -1, -1,
- 276, 277, 278, 279, -1, -1, 9, 10, 11, 12,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 295,
- 23, -1, 298, -1, -1, 123, -1, 125, 126, -1,
- -1, 0, -1, -1, -1, -1, -1, -1, -1, 94,
- 9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 53, 54, -1, -1, -1, -1, 59, 60, 61, 62,
- -1, -1, -1, 66, -1, -1, -1, 70, 123, -1,
- 125, 126, -1, 76, -1, 78, -1, -1, -1, 82,
- -1, -1, 94, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 123, -1, 125, 126, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 94, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 123, -1, 125, 126, -1, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, -1, -1,
- -1, 279, 280, 281, 282, 283, 284, 285, 286, -1,
- -1, -1, -1, 291, 292, 293, 294, -1, 296, 297,
- -1, 299, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, -1, -1, -1, 279, 280, 281, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
- -1, 296, 297, -1, 299, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, -1, -1, 0, 279, 280, 281,
- 282, 283, 284, 285, 286, 9, -1, -1, -1, 291,
- 292, 293, 294, -1, 296, 297, -1, 299, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, -1, -1, 0,
- 279, 280, 281, 282, 283, 284, 285, 286, 9, -1,
- -1, -1, 291, 292, 293, 294, -1, 296, 297, -1,
- 299, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- 94, 9, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 123,
- -1, 125, 126, -1, -1, 0, -1, -1, -1, -1,
- -1, -1, -1, 94, 9, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 123, -1, 125, 126, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 94, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 123, -1, 125, 126, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 94,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 123, -1,
- 125, 126, -1, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, -1, -1, -1, 279, 280, 281, 282, 283,
- 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
- 294, -1, 296, 297, -1, 299, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, -1, -1, -1, 279, 280,
- 281, 282, 283, 284, 285, 286, -1, -1, -1, -1,
- 291, 292, 293, 294, -1, 296, 297, -1, 299, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, -1, -1,
- 0, 279, 280, 281, 282, 283, 284, 285, 286, 9,
- -1, -1, -1, 291, 292, 293, 294, -1, 296, 297,
- -1, 299, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, -1, -1, 0, 279, 280, 281, 282, 283, 284,
- 285, 286, 9, -1, -1, -1, 291, 292, 293, 294,
- -1, 296, 297, -1, 299, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, 94, 9, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 123, -1, 125, 126, -1, -1, 0,
- -1, -1, -1, -1, -1, -1, -1, 94, 9, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 123, -1, 125, 126,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 94, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 123,
- -1, 125, 126, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 94, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 123, -1, 125, 126, -1, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, -1, -1, -1, 279,
- 280, 281, 282, 283, 284, 285, 286, -1, -1, -1,
- -1, 291, 292, 293, 294, -1, 296, 297, -1, 299,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, -1,
- 9, -1, 279, 280, 281, 282, 283, 284, 285, 286,
- -1, -1, -1, -1, 291, 292, 293, 294, -1, 296,
- 297, -1, 299, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 9, -1, -1, 279, 280, 281, 282, 283,
- 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
- 294, -1, 296, 297, -1, 299, 257, 258, 259, -1,
- -1, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 94, 9, -1, 279, 280,
- 281, 282, 283, 284, 285, 286, -1, -1, -1, -1,
- 291, 292, 293, 294, -1, 296, 297, -1, 299, -1,
- -1, -1, -1, -1, 123, -1, 125, 126, -1, -1,
- -1, -1, -1, -1, -1, 9, -1, 94, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 123, -1, -1, 126,
- -1, -1, -1, -1, 9, -1, -1, -1, -1, -1,
- -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 123, -1, -1, 126, -1, -1, -1, -1, -1, -1,
- 94, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 123,
- -1, -1, 126, -1, -1, -1, -1, -1, -1, 94,
- 259, -1, -1, 262, 263, 264, 265, 266, -1, -1,
- -1, 270, 271, 272, 273, 274, 275, -1, -1, -1,
- -1, 280, 281, 282, 283, 284, 285, 286, 123, -1,
- -1, 126, 291, 292, 293, 294, -1, 296, 297, -1,
- 299, -1, 259, -1, -1, 262, 263, 264, 265, 266,
- 267, -1, -1, 270, 271, 272, 273, 274, 275, -1,
- -1, -1, -1, 280, 281, 282, 283, 284, 285, 286,
- -1, -1, -1, -1, 291, 292, 293, 294, -1, 296,
- 297, -1, 299, -1, -1, -1, 259, -1, -1, 262,
- 263, 264, 265, 266, -1, -1, -1, 270, 271, 272,
- 273, 274, 275, -1, -1, -1, -1, 280, 281, 282,
- 283, 284, 285, 286, -1, -1, -1, -1, 291, 292,
- 293, 294, -1, 296, 297, 259, 299, -1, 262, 263,
- 264, 265, 266, -1, -1, -1, 270, 271, 272, 273,
- 274, 275, -1, -1, -1, -1, 280, 281, 282, 283,
- 284, 285, 286, -1, -1, -1, -1, -1, -1, 293,
- 294, -1, 296, 297, -1, 299, -1, 262, 263, 264,
- 265, 266, -1, -1, -1, 270, 271, 272, 273, 274,
- 275, -1, -1, -1, -1, 280, 281, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, -1, -1, 293, 294,
- -1, 296, 297, -1, 299,
-};
-#define YYFINAL 31
-#ifndef YYDEBUG
-#define YYDEBUG 0
-#endif
-#define YYMAXTOKEN 314
-#if YYDEBUG
-char *yyname[] = {
-"end-of-file",0,0,0,0,0,0,0,0,"'\\t'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'","'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"OVER",
-"SMALLOVER","SQRT","SUB","SUP","LPILE","RPILE","CPILE","PILE","LEFT","RIGHT",
-"TO","FROM","SIZE","FONT","ROMAN","BOLD","ITALIC","FAT","ACCENT","BAR","UNDER",
-"ABOVE","TEXT","QUOTED_TEXT","FWD","BACK","DOWN","UP","MATRIX","COL","LCOL",
-"RCOL","CCOL","MARK","LINEUP","TYPE","VCENTER","PRIME","SPLIT","NOSPLIT",
-"UACCENT","SPECIAL","SPACE","GFONT","GSIZE","DEFINE","NDEFINE","TDEFINE",
-"SDEFINE","UNDEF","IFDEF","INCLUDE","DELIM","CHARTYPE","SET","GRFONT","GBFONT",
-};
-char *yyrule[] = {
-"$accept : top",
-"top :",
-"top : equation",
-"equation : mark",
-"equation : equation mark",
-"mark : from_to",
-"mark : MARK mark",
-"mark : LINEUP mark",
-"from_to : sqrt_over",
-"from_to : sqrt_over TO from_to",
-"from_to : sqrt_over FROM sqrt_over",
-"from_to : sqrt_over FROM sqrt_over TO from_to",
-"from_to : sqrt_over FROM sqrt_over FROM from_to",
-"sqrt_over : script",
-"sqrt_over : SQRT sqrt_over",
-"sqrt_over : sqrt_over OVER sqrt_over",
-"sqrt_over : sqrt_over SMALLOVER sqrt_over",
-"script : nonsup",
-"script : simple SUP script",
-"nonsup : simple",
-"nonsup : simple SUB nonsup",
-"nonsup : simple SUB simple SUP script",
-"simple : TEXT",
-"simple : QUOTED_TEXT",
-"simple : SPLIT QUOTED_TEXT",
-"simple : NOSPLIT TEXT",
-"simple : '^'",
-"simple : '~'",
-"simple : '\\t'",
-"simple : '{' equation '}'",
-"simple : PILE pile_arg",
-"simple : LPILE pile_arg",
-"simple : RPILE pile_arg",
-"simple : CPILE pile_arg",
-"simple : MATRIX '{' column_list '}'",
-"simple : LEFT delim equation RIGHT delim",
-"simple : LEFT delim equation",
-"simple : simple BAR",
-"simple : simple UNDER",
-"simple : simple PRIME",
-"simple : simple ACCENT simple",
-"simple : simple UACCENT simple",
-"simple : ROMAN simple",
-"simple : BOLD simple",
-"simple : ITALIC simple",
-"simple : FAT simple",
-"simple : FONT text simple",
-"simple : SIZE text simple",
-"simple : FWD number simple",
-"simple : BACK number simple",
-"simple : UP number simple",
-"simple : DOWN number simple",
-"simple : TYPE text simple",
-"simple : VCENTER simple",
-"simple : SPECIAL text simple",
-"number : text",
-"pile_element_list : equation",
-"pile_element_list : pile_element_list ABOVE equation",
-"pile_arg : '{' pile_element_list '}'",
-"pile_arg : number '{' pile_element_list '}'",
-"column_list : column",
-"column_list : column_list column",
-"column_element_list : equation",
-"column_element_list : column_element_list ABOVE equation",
-"column_arg : '{' column_element_list '}'",
-"column_arg : number '{' column_element_list '}'",
-"column : COL column_arg",
-"column : LCOL column_arg",
-"column : RCOL column_arg",
-"column : CCOL column_arg",
-"text : TEXT",
-"text : QUOTED_TEXT",
-"delim : text",
-"delim : '{'",
-"delim : '}'",
-};
-#endif
-#ifdef YYSTACKSIZE
-#undef YYMAXDEPTH
-#define YYMAXDEPTH YYSTACKSIZE
-#else
-#ifdef YYMAXDEPTH
-#define YYSTACKSIZE YYMAXDEPTH
-#else
-#define YYSTACKSIZE 500
-#define YYMAXDEPTH 500
-#endif
-#endif
-int yydebug;
-int yynerrs;
-int yyerrflag;
-int yychar;
-short *yyssp;
-YYSTYPE *yyvsp;
-YYSTYPE yyval;
-YYSTYPE yylval;
-short yyss[YYSTACKSIZE];
-YYSTYPE yyvs[YYSTACKSIZE];
-#define yystacksize YYSTACKSIZE
-#define YYABORT goto yyabort
-#define YYREJECT goto yyabort
-#define YYACCEPT goto yyaccept
-#define YYERROR goto yyerrlab
-int
-#if defined(__STDC__)
-yyparse(void)
-#else
-yyparse()
-#endif
-{
- register int yym, yyn, yystate;
-#if YYDEBUG
- register char *yys;
- extern char *getenv();
-
- if (yys = getenv("YYDEBUG"))
- {
- yyn = *yys;
- if (yyn >= '0' && yyn <= '9')
- yydebug = yyn - '0';
- }
-#endif
-
- yynerrs = 0;
- yyerrflag = 0;
- yychar = (-1);
-
- yyssp = yyss;
- yyvsp = yyvs;
- *yyssp = yystate = 0;
-
-yyloop:
- if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, reading %d (%s)\n",
- YYPREFIX, yystate, yychar, yys);
- }
-#endif
- }
- if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, shifting to state %d\n",
- YYPREFIX, yystate, yytable[yyn]);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- yychar = (-1);
- if (yyerrflag > 0) --yyerrflag;
- goto yyloop;
- }
- if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
- yyn = yytable[yyn];
- goto yyreduce;
- }
- if (yyerrflag) goto yyinrecovery;
-#ifdef lint
- goto yynewerror;
-#endif
-yynewerror:
- yyerror("syntax error");
-#ifdef lint
- goto yyerrlab;
-#endif
-yyerrlab:
- ++yynerrs;
-yyinrecovery:
- if (yyerrflag < 3)
- {
- yyerrflag = 3;
- for (;;)
- {
- if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, error recovery shifting\
- to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- goto yyloop;
- }
- else
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: error recovery discarding state %d\n",
- YYPREFIX, *yyssp);
-#endif
- if (yyssp <= yyss) goto yyabort;
- --yyssp;
- --yyvsp;
- }
- }
- }
- else
- {
- if (yychar == 0) goto yyabort;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
- YYPREFIX, yystate, yychar, yys);
- }
-#endif
- yychar = (-1);
- goto yyloop;
- }
-yyreduce:
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, reducing by rule %d (%s)\n",
- YYPREFIX, yystate, yyn, yyrule[yyn]);
-#endif
- yym = yylen[yyn];
- yyval = yyvsp[1-yym];
- switch (yyn)
- {
-case 2:
-#line 126 "eqn.y"
-{ yyvsp[0].b->top_level(); non_empty_flag = 1; }
-break;
-case 3:
-#line 131 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 4:
-#line 133 "eqn.y"
-{
- list_box *lb = yyvsp[-1].b->to_list_box();
- if (!lb)
- lb = new list_box(yyvsp[-1].b);
- lb->append(yyvsp[0].b);
- yyval.b = lb;
- }
-break;
-case 5:
-#line 144 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 6:
-#line 146 "eqn.y"
-{ yyval.b = make_mark_box(yyvsp[0].b); }
-break;
-case 7:
-#line 148 "eqn.y"
-{ yyval.b = make_lineup_box(yyvsp[0].b); }
-break;
-case 8:
-#line 153 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 9:
-#line 155 "eqn.y"
-{ yyval.b = make_limit_box(yyvsp[-2].b, 0, yyvsp[0].b); }
-break;
-case 10:
-#line 157 "eqn.y"
-{ yyval.b = make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0); }
-break;
-case 11:
-#line 159 "eqn.y"
-{ yyval.b = make_limit_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 12:
-#line 161 "eqn.y"
-{ yyval.b = make_limit_box(yyvsp[-4].b, make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0), 0); }
-break;
-case 13:
-#line 166 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 14:
-#line 168 "eqn.y"
-{ yyval.b = make_sqrt_box(yyvsp[0].b); }
-break;
-case 15:
-#line 170 "eqn.y"
-{ yyval.b = make_over_box(yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 16:
-#line 172 "eqn.y"
-{ yyval.b = make_small_over_box(yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 17:
-#line 177 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 18:
-#line 179 "eqn.y"
-{ yyval.b = make_script_box(yyvsp[-2].b, 0, yyvsp[0].b); }
-break;
-case 19:
-#line 184 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 20:
-#line 186 "eqn.y"
-{ yyval.b = make_script_box(yyvsp[-2].b, yyvsp[0].b, 0); }
-break;
-case 21:
-#line 188 "eqn.y"
-{ yyval.b = make_script_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 22:
-#line 193 "eqn.y"
-{ yyval.b = split_text(yyvsp[0].str); }
-break;
-case 23:
-#line 195 "eqn.y"
-{ yyval.b = new quoted_text_box(yyvsp[0].str); }
-break;
-case 24:
-#line 197 "eqn.y"
-{ yyval.b = split_text(yyvsp[0].str); }
-break;
-case 25:
-#line 199 "eqn.y"
-{ yyval.b = new quoted_text_box(yyvsp[0].str); }
-break;
-case 26:
-#line 201 "eqn.y"
-{ yyval.b = new half_space_box; }
-break;
-case 27:
-#line 203 "eqn.y"
-{ yyval.b = new space_box; }
-break;
-case 28:
-#line 205 "eqn.y"
-{ yyval.b = new tab_box; }
-break;
-case 29:
-#line 207 "eqn.y"
-{ yyval.b = yyvsp[-1].b; }
-break;
-case 30:
-#line 209 "eqn.y"
-{ yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; }
-break;
-case 31:
-#line 211 "eqn.y"
-{ yyvsp[0].pb->set_alignment(LEFT_ALIGN); yyval.b = yyvsp[0].pb; }
-break;
-case 32:
-#line 213 "eqn.y"
-{ yyvsp[0].pb->set_alignment(RIGHT_ALIGN); yyval.b = yyvsp[0].pb; }
-break;
-case 33:
-#line 215 "eqn.y"
-{ yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; }
-break;
-case 34:
-#line 217 "eqn.y"
-{ yyval.b = yyvsp[-1].mb; }
-break;
-case 35:
-#line 219 "eqn.y"
-{ yyval.b = make_delim_box(yyvsp[-3].str, yyvsp[-2].b, yyvsp[0].str); }
-break;
-case 36:
-#line 221 "eqn.y"
-{ yyval.b = make_delim_box(yyvsp[-1].str, yyvsp[0].b, 0); }
-break;
-case 37:
-#line 223 "eqn.y"
-{ yyval.b = make_overline_box(yyvsp[-1].b); }
-break;
-case 38:
-#line 225 "eqn.y"
-{ yyval.b = make_underline_box(yyvsp[-1].b); }
-break;
-case 39:
-#line 227 "eqn.y"
-{ yyval.b = make_prime_box(yyvsp[-1].b); }
-break;
-case 40:
-#line 229 "eqn.y"
-{ yyval.b = make_accent_box(yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 41:
-#line 231 "eqn.y"
-{ yyval.b = make_uaccent_box(yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 42:
-#line 233 "eqn.y"
-{ yyval.b = new font_box(strsave(get_grfont()), yyvsp[0].b); }
-break;
-case 43:
-#line 235 "eqn.y"
-{ yyval.b = new font_box(strsave(get_gbfont()), yyvsp[0].b); }
-break;
-case 44:
-#line 237 "eqn.y"
-{ yyval.b = new font_box(strsave(get_gfont()), yyvsp[0].b); }
-break;
-case 45:
-#line 239 "eqn.y"
-{ yyval.b = new fat_box(yyvsp[0].b); }
-break;
-case 46:
-#line 241 "eqn.y"
-{ yyval.b = new font_box(yyvsp[-1].str, yyvsp[0].b); }
-break;
-case 47:
-#line 243 "eqn.y"
-{ yyval.b = new size_box(yyvsp[-1].str, yyvsp[0].b); }
-break;
-case 48:
-#line 245 "eqn.y"
-{ yyval.b = new hmotion_box(yyvsp[-1].n, yyvsp[0].b); }
-break;
-case 49:
-#line 247 "eqn.y"
-{ yyval.b = new hmotion_box(-yyvsp[-1].n, yyvsp[0].b); }
-break;
-case 50:
-#line 249 "eqn.y"
-{ yyval.b = new vmotion_box(yyvsp[-1].n, yyvsp[0].b); }
-break;
-case 51:
-#line 251 "eqn.y"
-{ yyval.b = new vmotion_box(-yyvsp[-1].n, yyvsp[0].b); }
-break;
-case 52:
-#line 253 "eqn.y"
-{ yyvsp[0].b->set_spacing_type(yyvsp[-1].str); yyval.b = yyvsp[0].b; }
-break;
-case 53:
-#line 255 "eqn.y"
-{ yyval.b = new vcenter_box(yyvsp[0].b); }
-break;
-case 54:
-#line 257 "eqn.y"
-{ yyval.b = make_special_box(yyvsp[-1].str, yyvsp[0].b); }
-break;
-case 55:
-#line 262 "eqn.y"
-{
- int n;
- if (sscanf(yyvsp[0].str, "%d", &n) == 1)
- yyval.n = n;
- a_delete yyvsp[0].str;
- }
-break;
-case 56:
-#line 272 "eqn.y"
-{ yyval.pb = new pile_box(yyvsp[0].b); }
-break;
-case 57:
-#line 274 "eqn.y"
-{ yyvsp[-2].pb->append(yyvsp[0].b); yyval.pb = yyvsp[-2].pb; }
-break;
-case 58:
-#line 279 "eqn.y"
-{ yyval.pb = yyvsp[-1].pb; }
-break;
-case 59:
-#line 281 "eqn.y"
-{ yyvsp[-1].pb->set_space(yyvsp[-3].n); yyval.pb = yyvsp[-1].pb; }
-break;
-case 60:
-#line 286 "eqn.y"
-{ yyval.mb = new matrix_box(yyvsp[0].col); }
-break;
-case 61:
-#line 288 "eqn.y"
-{ yyvsp[-1].mb->append(yyvsp[0].col); yyval.mb = yyvsp[-1].mb; }
-break;
-case 62:
-#line 293 "eqn.y"
-{ yyval.col = new column(yyvsp[0].b); }
-break;
-case 63:
-#line 295 "eqn.y"
-{ yyvsp[-2].col->append(yyvsp[0].b); yyval.col = yyvsp[-2].col; }
-break;
-case 64:
-#line 300 "eqn.y"
-{ yyval.col = yyvsp[-1].col; }
-break;
-case 65:
-#line 302 "eqn.y"
-{ yyvsp[-1].col->set_space(yyvsp[-3].n); yyval.col = yyvsp[-1].col; }
-break;
-case 66:
-#line 307 "eqn.y"
-{ yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; }
-break;
-case 67:
-#line 309 "eqn.y"
-{ yyvsp[0].col->set_alignment(LEFT_ALIGN); yyval.col = yyvsp[0].col; }
-break;
-case 68:
-#line 311 "eqn.y"
-{ yyvsp[0].col->set_alignment(RIGHT_ALIGN); yyval.col = yyvsp[0].col; }
-break;
-case 69:
-#line 313 "eqn.y"
-{ yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; }
-break;
-case 70:
-#line 317 "eqn.y"
-{ yyval.str = yyvsp[0].str; }
-break;
-case 71:
-#line 319 "eqn.y"
-{ yyval.str = yyvsp[0].str; }
-break;
-case 72:
-#line 324 "eqn.y"
-{ yyval.str = yyvsp[0].str; }
-break;
-case 73:
-#line 326 "eqn.y"
-{ yyval.str = strsave("{"); }
-break;
-case 74:
-#line 328 "eqn.y"
-{ yyval.str = strsave("}"); }
-break;
-#line 1115 "y.tab.c"
- }
- yyssp -= yym;
- yystate = *yyssp;
- yyvsp -= yym;
- yym = yylhs[yyn];
- if (yystate == 0 && yym == 0)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: after reduction, shifting from state 0 to\
- state %d\n", YYPREFIX, YYFINAL);
-#endif
- yystate = YYFINAL;
- *++yyssp = YYFINAL;
- *++yyvsp = yyval;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, reading %d (%s)\n",
- YYPREFIX, YYFINAL, yychar, yys);
- }
-#endif
- }
- if (yychar == 0) goto yyaccept;
- goto yyloop;
- }
- if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
- yystate = yytable[yyn];
- else
- yystate = yydgoto[yym];
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: after reduction, shifting from state %d \
-to state %d\n", YYPREFIX, *yyssp, yystate);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate;
- *++yyvsp = yyval;
- goto yyloop;
-yyoverflow:
- yyerror("yacc stack overflow");
-yyabort:
- return (1);
-yyaccept:
- return (0);
-}
diff --git a/contrib/groff/src/preproc/eqn/eqn_tab.h b/contrib/groff/src/preproc/eqn/eqn_tab.h
deleted file mode 100644
index 9a8b3cb..0000000
--- a/contrib/groff/src/preproc/eqn/eqn_tab.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#define OVER 257
-#define SMALLOVER 258
-#define SQRT 259
-#define SUB 260
-#define SUP 261
-#define LPILE 262
-#define RPILE 263
-#define CPILE 264
-#define PILE 265
-#define LEFT 266
-#define RIGHT 267
-#define TO 268
-#define FROM 269
-#define SIZE 270
-#define FONT 271
-#define ROMAN 272
-#define BOLD 273
-#define ITALIC 274
-#define FAT 275
-#define ACCENT 276
-#define BAR 277
-#define UNDER 278
-#define ABOVE 279
-#define TEXT 280
-#define QUOTED_TEXT 281
-#define FWD 282
-#define BACK 283
-#define DOWN 284
-#define UP 285
-#define MATRIX 286
-#define COL 287
-#define LCOL 288
-#define RCOL 289
-#define CCOL 290
-#define MARK 291
-#define LINEUP 292
-#define TYPE 293
-#define VCENTER 294
-#define PRIME 295
-#define SPLIT 296
-#define NOSPLIT 297
-#define UACCENT 298
-#define SPECIAL 299
-#define SPACE 300
-#define GFONT 301
-#define GSIZE 302
-#define DEFINE 303
-#define NDEFINE 304
-#define TDEFINE 305
-#define SDEFINE 306
-#define UNDEF 307
-#define IFDEF 308
-#define INCLUDE 309
-#define DELIM 310
-#define CHARTYPE 311
-#define SET 312
-#define GRFONT 313
-#define GBFONT 314
-typedef union {
- char *str;
- box *b;
- pile_box *pb;
- matrix_box *mb;
- int n;
- column *col;
-} YYSTYPE;
-extern YYSTYPE yylval;
diff --git a/contrib/groff/src/preproc/eqn/neqn.sh b/contrib/groff/src/preproc/eqn/neqn.sh
index 43fe1e8..dcea2ff 100644
--- a/contrib/groff/src/preproc/eqn/neqn.sh
+++ b/contrib/groff/src/preproc/eqn/neqn.sh
@@ -1,10 +1,25 @@
#!/bin/sh
# Provision of this shell script should not be taken to imply that use of
-# GNU eqn with groff -Tascii|-Tlatin1|-Tutf8|-Tcp1047 is supported.
+# GNU eqn with groff -Tascii|-Tlatin1|-Tkoi8-r|-Tutf8|-Tcp1047 is supported.
+# $FreeBSD$
+
+# Default device.
+case "${LC_ALL-${LC_CTYPE-${LANG}}}" in
+ *.UTF-8)
+ T=utf8 ;;
+ iso_8859_1 | *.ISO*8859-1 | *.ISO*8859-15)
+ T=latin1 ;;
+ *.IBM-1047)
+ T=cp1047 ;;
+ *.KOI8-R)
+ T=koi8-r ;;
+ *)
+ T=ascii ;;
+esac
: ${GROFF_BIN_PATH=@BINDIR@}
PATH=$GROFF_BIN_PATH@SEP@$PATH
export PATH
-exec @g@eqn -Tascii ${1+"$@"}
+exec @g@eqn -T${T} ${1+"$@"}
# eof
diff --git a/contrib/groff/src/preproc/pic/pic.cpp b/contrib/groff/src/preproc/pic/pic.cpp
deleted file mode 100644
index 41ae347..0000000
--- a/contrib/groff/src/preproc/pic/pic.cpp
+++ /dev/null
@@ -1,5619 +0,0 @@
-#ifndef lint
-static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93 (groff)";
-#endif
-#define YYBYACC 1
-#define YYMAJOR 1
-#define YYMINOR 9
-#define yyclearin (yychar=(-1))
-#define yyerrok (yyerrflag=0)
-#define YYRECOVERING (yyerrflag!=0)
-#define YYPREFIX "yy"
-#line 21 "pic.y"
-#include "pic.h"
-#include "ptable.h"
-#include "object.h"
-
-extern int delim_flag;
-extern void do_copy(const char *);
-extern void copy_rest_thru(const char *, const char *);
-extern void copy_file_thru(const char *, const char *, const char *);
-extern void push_body(const char *);
-extern void do_for(char *var, double from, double to,
- int by_is_multiplicative, double by, char *body);
-extern void do_lookahead();
-
-/* Maximum number of characters produced by printf("%g") */
-#define GDIGITS 14
-
-int yylex();
-void yyerror(const char *);
-
-void reset(const char *nm);
-void reset_all();
-
-place *lookup_label(const char *);
-void define_label(const char *label, const place *pl);
-
-direction current_direction;
-position current_position;
-
-implement_ptable(place)
-
-PTABLE(place) top_table;
-
-PTABLE(place) *current_table = &top_table;
-saved_state *current_saved_state = 0;
-
-object_list olist;
-
-const char *ordinal_postfix(int n);
-const char *object_type_name(object_type type);
-char *format_number(const char *form, double n);
-char *do_sprintf(const char *form, const double *v, int nv);
-
-#line 66 "pic.y"
-typedef union {
- char *str;
- int n;
- double x;
- struct { double x, y; } pair;
- struct { double x; char *body; } if_data;
- struct { char *str; const char *filename; int lineno; } lstr;
- struct { double *v; int nv; int maxv; } dv;
- struct { double val; int is_multiplicative; } by;
- place pl;
- object *obj;
- corner crn;
- path *pth;
- object_spec *spec;
- saved_state *pstate;
- graphics_state state;
- object_type obtype;
-} YYSTYPE;
-#line 74 "y.tab.c"
-#define LABEL 257
-#define VARIABLE 258
-#define NUMBER 259
-#define TEXT 260
-#define COMMAND_LINE 261
-#define DELIMITED 262
-#define ORDINAL 263
-#define TH 264
-#define LEFT_ARROW_HEAD 265
-#define RIGHT_ARROW_HEAD 266
-#define DOUBLE_ARROW_HEAD 267
-#define LAST 268
-#define UP 269
-#define DOWN 270
-#define LEFT 271
-#define RIGHT 272
-#define BOX 273
-#define CIRCLE 274
-#define ELLIPSE 275
-#define ARC 276
-#define LINE 277
-#define ARROW 278
-#define MOVE 279
-#define SPLINE 280
-#define HEIGHT 281
-#define RADIUS 282
-#define FIGNAME 283
-#define WIDTH 284
-#define DIAMETER 285
-#define FROM 286
-#define TO 287
-#define AT 288
-#define WITH 289
-#define BY 290
-#define THEN 291
-#define SOLID 292
-#define DOTTED 293
-#define DASHED 294
-#define CHOP 295
-#define SAME 296
-#define INVISIBLE 297
-#define LJUST 298
-#define RJUST 299
-#define ABOVE 300
-#define BELOW 301
-#define OF 302
-#define THE 303
-#define WAY 304
-#define BETWEEN 305
-#define AND 306
-#define HERE 307
-#define DOT_N 308
-#define DOT_E 309
-#define DOT_W 310
-#define DOT_S 311
-#define DOT_NE 312
-#define DOT_SE 313
-#define DOT_NW 314
-#define DOT_SW 315
-#define DOT_C 316
-#define DOT_START 317
-#define DOT_END 318
-#define DOT_X 319
-#define DOT_Y 320
-#define DOT_HT 321
-#define DOT_WID 322
-#define DOT_RAD 323
-#define SIN 324
-#define COS 325
-#define ATAN2 326
-#define LOG 327
-#define EXP 328
-#define SQRT 329
-#define K_MAX 330
-#define K_MIN 331
-#define INT 332
-#define RAND 333
-#define SRAND 334
-#define COPY 335
-#define THRU 336
-#define TOP 337
-#define BOTTOM 338
-#define UPPER 339
-#define LOWER 340
-#define SH 341
-#define PRINT 342
-#define CW 343
-#define CCW 344
-#define FOR 345
-#define DO 346
-#define IF 347
-#define ELSE 348
-#define ANDAND 349
-#define OROR 350
-#define NOTEQUAL 351
-#define EQUALEQUAL 352
-#define LESSEQUAL 353
-#define GREATEREQUAL 354
-#define LEFT_CORNER 355
-#define RIGHT_CORNER 356
-#define NORTH 357
-#define SOUTH 358
-#define EAST 359
-#define WEST 360
-#define CENTER 361
-#define END 362
-#define START 363
-#define RESET 364
-#define UNTIL 365
-#define PLOT 366
-#define THICKNESS 367
-#define FILL 368
-#define COLORED 369
-#define OUTLINED 370
-#define SHADED 371
-#define ALIGNED 372
-#define SPRINTF 373
-#define COMMAND 374
-#define DEFINE 375
-#define UNDEF 376
-#define YYERRCODE 256
-short yylhs[] = { -1,
- 0, 0, 16, 17, 17, 29, 29, 30, 30, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 31, 32,
- 31, 31, 33, 34, 31, 35, 36, 31, 37, 31,
- 31, 38, 31, 31, 31, 23, 23, 39, 39, 39,
- 27, 27, 28, 28, 28, 40, 7, 24, 24, 2,
- 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 4, 4, 4, 15, 15, 15, 15, 41, 43, 15,
- 15, 42, 42, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 44, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 26, 26, 25, 25, 19, 19, 6, 6,
- 6, 6, 6, 6, 45, 45, 5, 5, 13, 13,
- 13, 13, 13, 14, 14, 14, 22, 22, 21, 21,
- 8, 8, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 11, 11, 12, 12, 12, 10, 10, 10, 10,
- 10, 10, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-};
-short yylen[] = { 2,
- 1, 1, 3, 1, 3, 0, 1, 1, 2, 3,
- 3, 4, 1, 1, 1, 1, 1, 2, 2, 0,
- 3, 2, 0, 0, 7, 0, 0, 6, 0, 10,
- 1, 0, 4, 1, 1, 1, 1, 2, 2, 3,
- 1, 2, 1, 1, 1, 0, 5, 0, 2, 1,
- 1, 3, 3, 3, 3, 3, 3, 3, 3, 2,
- 0, 2, 3, 1, 4, 4, 4, 0, 0, 6,
- 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 3, 0, 4, 3, 3, 3, 3,
- 2, 2, 3, 2, 3, 2, 3, 2, 3, 3,
- 3, 3, 3, 3, 3, 2, 2, 2, 3, 2,
- 3, 2, 3, 3, 3, 3, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 1, 5, 0, 3, 1, 1, 1, 3,
- 3, 5, 5, 6, 1, 4, 3, 3, 1, 2,
- 2, 3, 1, 1, 1, 3, 1, 3, 1, 2,
- 2, 2, 1, 1, 1, 1, 1, 1, 1, 2,
- 1, 2, 3, 1, 1, 2, 1, 5, 4, 3,
- 3, 2, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
- 2, 1, 1, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
- 2, 3, 3, 3, 3, 3, 3, 2, 3, 4,
- 4, 6, 4, 4, 4, 6, 6, 4, 4, 3,
- 4, 3, 3, 3, 3, 3, 3, 3, 3, 2,
-};
-short yydefred[] = { 0,
- 8, 0, 2, 0, 0, 0, 0, 133, 17, 13,
- 14, 15, 16, 74, 75, 76, 77, 78, 79, 80,
- 81, 0, 0, 20, 0, 0, 0, 0, 0, 0,
- 0, 85, 68, 0, 4, 0, 0, 82, 71, 0,
- 9, 0, 0, 0, 0, 0, 26, 0, 154, 215,
- 216, 157, 159, 196, 197, 153, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 194, 195,
- 0, 0, 202, 203, 208, 209, 210, 211, 212, 214,
- 213, 0, 0, 0, 0, 0, 139, 137, 155, 0,
- 0, 0, 0, 0, 0, 44, 0, 41, 0, 0,
- 0, 0, 0, 0, 0, 0, 38, 0, 0, 0,
- 0, 0, 32, 3, 0, 121, 122, 123, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 106, 107, 0, 0, 0, 119, 120, 127, 128,
- 129, 130, 124, 125, 0, 0, 0, 0, 0, 132,
- 0, 126, 39, 0, 0, 11, 0, 37, 36, 10,
- 23, 0, 21, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 198, 200, 204, 206, 199, 201,
- 205, 207, 0, 0, 0, 0, 0, 0, 0, 0,
- 145, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 217,
- 218, 219, 220, 221, 0, 150, 0, 0, 171, 163,
- 164, 165, 166, 167, 168, 169, 0, 162, 160, 161,
- 42, 0, 0, 60, 0, 0, 0, 46, 0, 0,
- 0, 0, 84, 135, 0, 0, 0, 0, 5, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 103, 0, 177,
- 0, 0, 0, 105, 0, 0, 0, 0, 0, 115,
- 116, 114, 40, 0, 0, 0, 0, 0, 0, 65,
- 0, 12, 0, 27, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 240, 0, 0, 229, 148, 0, 158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 156,
- 140, 141, 170, 0, 0, 56, 0, 0, 0, 0,
- 0, 54, 0, 0, 53, 52, 0, 86, 69, 33,
- 174, 182, 0, 0, 0, 172, 0, 0, 176, 0,
- 0, 24, 0, 230, 231, 0, 233, 234, 235, 0,
- 0, 238, 239, 241, 0, 0, 0, 0, 0, 47,
- 0, 134, 0, 0, 181, 180, 0, 173, 0, 0,
- 28, 0, 0, 0, 142, 146, 0, 0, 0, 0,
- 73, 70, 179, 0, 25, 49, 232, 236, 237, 144,
- 0, 0, 178, 0, 0, 29, 0, 0, 30,
-};
-short yydgoto[] = { 2,
- 112, 194, 114, 422, 97, 98, 34, 99, 100, 278,
- 279, 280, 115, 102, 35, 3, 36, 37, 103, 238,
- 104, 105, 170, 401, 357, 116, 107, 108, 256, 5,
- 39, 48, 303, 399, 172, 373, 428, 258, 40, 350,
- 122, 412, 393, 121, 217,
-};
-short yysindex[] = { -57,
- 0, 0, 0, 5015, -24, -4, -8, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -2, -245, 0,12240, -182,12363, -175,12960, 45,
-12240, 0, 0, -261, 0, -57,11821, 0, 0, -43,
- 0, -57,12363, 42, -103, -214, 0, -125, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 126, 161, 166,
- 176, 186, 187, 190, 194, 197, 198, 203, 0, 0,
- -199, -147, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,12480,12363,12960,12960, 1256, 0, 0, 0, -22,
- -223, 867, 21, 191, -1, 0,12240, 0, 183,12363,
-12363, 361, -44, -187, -223, -179, 0, 798, -11,12240,
- -57, -57, 0, 0,13430, 0, 0, 0,13323,13323,
-13323,13323,12960,12960,12960,12960,13083,13083,13083,12720,
-13200, 0, 0,13323,13323,13323, 0, 0, 0, 0,
- 0, 0, 0, 0,12960,13323, -247, -247, -247, 0,
- 1697, 0, 0, -6,11489, 0,12363, 0, 0, 0,
- 0, -9, 0,12363,12363,12363,12363,12363,12363,12363,
-12363,12363,11938,12363, 0, 0, 0, 0, 0, 0,
- 0, 0, 1597, 214, 221, 36, 1, 172, 172, -34,
- 0,12960,12960,12960,12960,12960,12960,12960,13083,12960,
-12960,12960,12960,12960,12960,12960,13083, -18, 232, 0,
- 0, 0, 0, 0, 24, 0,13200,13200, 0, 0,
- 0, 0, 0, 0, 0, 0, 192, 0, 0, 0,
- 0,12960, 172, 0,12363,12363,12960, 0,12363,12363,
- -247, -247, 0, 0, 195, 5015, 162, 27, 0, 1697,
- 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1256, 21, 21,
- 21, 1783, 428, 428, 43,12123, -22, 0, 467, 0,
- 21,12603, 680, 0, 1697, 1697, 1697, 1697, 1697, 0,
- 0, 0, 0, -4, -8, 0, 0, 0, -223, 0,
- 21, 0, 44, 0, 252, 264, 278, 267, 290, 291,
- 289, 301, 294, 0, 310, 312, 0, 0,13083, 0,
- 51, -5, -26, 99, 99, 714, 714, 1697, -19, 49,
- 714, 337, 337, 172, 172, 172, 172, -38, 232, 0,
- 0, 0, 0, 3111, -5, 0, 1733, 11, 714, 96,
- -5, 0, 1733, 11, 0, 0, 17, 0, 0, 0,
- 0, 0, 191, 927, 927, 0, 323, 113, 0, 1277,
- 221, 0, 13, 0, 0,12363, 0, 0, 0,12363,
-12363, 0, 0, 0, 6, 66,13083,13083,12960, 0,
-12960, 0, 5015, 927, 0, 0, 927, 0, 13, 115,
- 0, 332, 339, 340, 0, 0, -14, 21, 2174, 1697,
- 0, 0, 0, 344, 0, 0, 0, 0, 0, 0,
-12843, 46, 0,12960, 1697, 0, 1697, 125, 0,
-};
-short yyrindex[] = { 41,
- 0, 0, 0, 389, 167, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 25, 0, 0,
- 0, 0, 0, 117, 0, 8, 135, 0, 0, 236,
- 0,11685, 0, 0, 0, 284, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,10065, 0, 0, 0, 0,
- 4419, 9457,10400, 0, 0, 0, 633, 0, 0, 0,
- 0, 2068, 0, 2113, 0, 0, 0,11307, 0, 661,
- 5476, 5476, 0, 0, 9, 0, 0, 0,10642,10706,
-10218,10521, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,10770,10896,10960, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,11024, 0, 0, 0, 0,
- 5218, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 350, 0, 84, 0, 0, 297, 638, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3045, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,10568, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 5335,
- 5676, 5793, 6134, 6251, 6592, 6709, 7050, 0, 7167, 7508,
- 7625, 9759, -238, 134, 0, 0, 9340, 0, 9853, 0,
- 7966, 0, 0, 0, 8083, 8424, 8541, 8882, 8999, 0,
- 0, 0, 0,11377, 1711, 2448, 2906, 211, 309, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3961, 4302, 3386, 3503, 2129, 2470, 4877, 9942, 0,
- 2587, 1671, 2012, 755, 1096, 1213, 1554, 0, 3844, 0,
- 0, 0, 0, 0, 4392, 0, 4850, 3059, 2928, 0,
- 3931, 0, 5305, 5763, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 350,
- 0, 0, 676, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 694, 0, 0, 0, 0, 0, 676, 0,
- 0, 0, 0, 0, 0, 0, 0, 4760, 54, 19,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 55, 0, 64, 0, 0,
-};
-short yygindex[] = { 0,
- -25, 368, -97, 0, -53, 247, 0, 0, 93, 0,
- 0, -133, 31, -73, -122, 97, 0, 0, 1557, -60,
- 0, 0, 0, 14, 0, 40, 366, -87, 10, 380,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
-};
-#define YYTABLESIZE 13804
-short yytable[] = { 96,
- 164, 1, 259, 118, 227, 96, 228, 6, 7, 4,
- 215, 161, 8, 244, 46, 213, 211, 215, 212, 241,
- 214, 157, 213, 211, 35, 212, 219, 214, 227, 157,
- 228, 215, 241, 247, 41, 210, 213, 211, 195, 212,
- 6, 214, 300, 38, 240, 124, 405, 420, 227, 44,
- 228, 165, 43, 42, 247, 101, 210, 392, 45, 136,
- 391, 101, 136, 227, 106, 228, 193, 216, 198, 199,
- 106, 185, 186, 93, 216, 109, 162, 93, 227, 319,
- 228, 96, 117, 35, 119, 243, 123, 284, 216, 237,
- 47, 227, 387, 228, 96, 220, 221, 222, 223, 224,
- 6, 7, 167, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 268, 268, 268, 283, 31, 35, 285, 286,
- 287, 171, 101, 189, 190, 30, 139, 139, 139, 288,
- 289, 6, 6, 7, 64, 215, 173, 101, 362, 268,
- 213, 211, 367, 212, 339, 214, 106, 346, 348, 35,
- 101, 352, 354, 168, 169, 187, 188, 253, 247, 106,
- 210, 249, 250, 6, 38, 174, 7, 101, 101, 101,
- 101, 251, 252, 341, 342, 31, 322, 323, 324, 325,
- 326, 327, 328, 329, 331, 332, 333, 334, 335, 336,
- 337, 268, 216, 64, 226, 299, 290, 291, 292, 7,
- 175, 283, 283, 219, 38, 176, 7, 191, 192, 31,
- 66, 7, 364, 365, 163, 177, 344, 255, 257, 345,
- 347, 349, 195, 351, 353, 178, 179, 64, 371, 180,
- 395, 396, 277, 181, 49, 34, 182, 183, 49, 101,
- 52, 31, 184, 242, 52, 53, 248, 101, 254, 53,
- 193, 293, 304, 137, 317, 137, 370, 7, 229, 64,
- 413, 318, 7, 414, 320, 216, 239, 388, 321, 66,
- 411, 230, 231, 232, 233, 234, 235, 225, 236, 218,
- 340, 237, 200, 22, 343, 201, 359, 358, 360, 7,
- 355, 356, 374, 268, 34, 38, 228, 6, 6, 366,
- 6, 6, 394, 66, 375, 372, 101, 377, 67, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 376, 202, 6, 204, 205, 206, 207, 34, 228,
- 378, 379, 380, 228, 382, 66, 228, 228, 228, 228,
- 228, 228, 22, 228, 381, 204, 205, 206, 207, 101,
- 383, 138, 384, 138, 386, 228, 228, 390, 228, 249,
- 34, 268, 268, 409, 361, 410, 397, 67, 277, 398,
- 406, 369, 417, 215, 416, 6, 22, 400, 213, 418,
- 419, 6, 6, 214, 423, 6, 429, 6, 1, 228,
- 50, 426, 228, 159, 113, 425, 120, 215, 427, 61,
- 62, 67, 213, 211, 6, 212, 6, 214, 22, 63,
- 166, 298, 415, 6, 6, 125, 0, 101, 101, 0,
- 247, 228, 210, 7, 7, 7, 7, 7, 0, 7,
- 216, 0, 38, 67, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 0, 0, 7,
- 229, 206, 207, 0, 216, 0, 361, 361, 0, 0,
- 197, 0, 0, 230, 231, 232, 233, 234, 235, 0,
- 236, 0, 0, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 0, 361, 0, 0, 361,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 0, 7, 7, 7, 7, 7, 7, 0,
- 0, 7, 368, 7, 0, 0, 0, 0, 237, 0,
- 0, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 0, 7, 0, 302, 0, 0, 0, 0, 7,
- 7, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 315, 316, 0, 228, 228, 228, 228, 0, 0, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 0,
- 0, 0, 0, 0, 0, 0, 0, 228, 228, 0,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 0,
- 0, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 0, 0, 0, 0, 0,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 0, 19, 228, 228, 228, 228, 250, 0, 228,
- 228, 0, 228, 0, 0, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 18, 0, 0, 228, 228, 228, 228, 228, 228, 228,
- 250, 0, 0, 0, 250, 48, 0, 250, 250, 250,
- 250, 250, 250, 0, 250, 0, 0, 0, 0, 0,
- 0, 19, 0, 72, 0, 0, 250, 250, 0, 250,
- 230, 231, 232, 233, 234, 235, 0, 236, 0, 245,
- 246, 204, 205, 206, 207, 0, 215, 0, 0, 18,
- 0, 213, 211, 208, 212, 19, 214, 0, 0, 0,
- 250, 0, 0, 250, 48, 0, 0, 54, 55, 247,
- 0, 210, 0, 402, 0, 0, 0, 403, 404, 0,
- 215, 0, 72, 18, 224, 213, 211, 19, 212, 0,
- 214, 0, 250, 0, 0, 0, 0, 0, 48, 0,
- 0, 0, 0, 216, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 18, 72, 224, 0, 0,
- 0, 224, 0, 0, 224, 224, 224, 224, 224, 224,
- 48, 224, 0, 79, 80, 81, 82, 216, 0, 0,
- 0, 0, 0, 224, 224, 0, 224, 0, 72, 0,
- 0, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 0, 0, 0, 0, 215, 0, 0, 0, 0, 213,
- 211, 0, 212, 0, 214, 0, 0, 224, 0, 0,
- 224, 0, 0, 0, 0, 0, 0, 247, 0, 210,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 224,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 216, 0, 0, 250, 250, 250, 250, 0, 0,
- 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
- 0, 0, 225, 0, 0, 0, 0, 0, 250, 250,
- 0, 250, 250, 250, 250, 250, 250, 250, 250, 250,
- 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
- 0, 0, 250, 250, 250, 250, 250, 250, 250, 250,
- 250, 250, 250, 250, 250, 250, 0, 0, 0, 0,
- 0, 250, 250, 250, 250, 250, 250, 250, 250, 250,
- 250, 250, 275, 0, 250, 250, 250, 250, 0, 0,
- 250, 250, 0, 250, 0, 0, 250, 250, 250, 250,
- 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
- 250, 0, 0, 0, 250, 250, 250, 250, 250, 250,
- 250, 224, 224, 224, 224, 0, 0, 224, 224, 224,
- 224, 224, 224, 224, 224, 224, 224, 0, 202, 203,
- 204, 205, 206, 207, 0, 224, 224, 0, 224, 224,
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
- 224, 224, 224, 224, 224, 224, 224, 8, 0, 224,
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
- 224, 224, 224, 0, 0, 0, 0, 0, 224, 224,
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 0,
- 0, 224, 224, 224, 224, 225, 0, 224, 224, 0,
- 224, 0, 0, 224, 224, 224, 224, 224, 224, 224,
- 224, 224, 224, 224, 224, 224, 224, 224, 0, 0,
- 0, 224, 224, 224, 224, 224, 224, 224, 225, 0,
- 0, 0, 225, 0, 0, 225, 225, 225, 225, 225,
- 225, 0, 225, 0, 0, 0, 202, 203, 204, 205,
- 206, 207, 0, 0, 225, 225, 0, 225, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 30, 0, 0, 0, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 0, 0, 0, 225, 0,
- 0, 225, 0, 0, 0, 0, 0, 54, 55, 0,
- 0, 0, 0, 79, 80, 81, 82, 0, 0, 0,
- 0, 0, 226, 0, 0, 0, 0, 0, 0, 0,
- 225, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 226, 0, 0, 0, 226,
- 0, 0, 226, 226, 226, 226, 226, 226, 0, 226,
- 0, 0, 0, 79, 80, 81, 82, 0, 0, 0,
- 0, 226, 226, 0, 226, 0, 0, 0, 0, 0,
- 0, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 0, 0, 215, 0, 0, 0, 0, 213, 211, 208,
- 212, 0, 214, 0, 0, 226, 0, 0, 226, 0,
- 0, 0, 0, 215, 0, 209, 0, 210, 213, 211,
- 208, 212, 0, 214, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 247, 226, 210, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 216,
- 0, 0, 225, 225, 225, 225, 0, 0, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 0, 0,
- 216, 0, 0, 0, 0, 0, 225, 225, 0, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 0, 0,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 0, 0, 0, 0, 0, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 0, 0, 225, 225, 225, 225, 0, 0, 225, 225,
- 0, 225, 0, 0, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 0,
- 0, 0, 225, 225, 225, 225, 225, 225, 225, 226,
- 226, 226, 226, 0, 0, 226, 226, 226, 226, 226,
- 226, 226, 226, 226, 226, 0, 0, 0, 0, 0,
- 0, 0, 0, 226, 226, 0, 226, 226, 226, 226,
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
- 226, 226, 226, 226, 226, 0, 0, 226, 226, 226,
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
- 226, 0, 0, 0, 0, 0, 226, 226, 226, 226,
- 226, 226, 226, 226, 226, 226, 226, 0, 0, 226,
- 226, 226, 226, 227, 0, 226, 226, 200, 226, 0,
- 201, 226, 226, 226, 226, 226, 226, 226, 226, 226,
- 226, 226, 226, 226, 226, 226, 0, 0, 0, 226,
- 226, 226, 226, 226, 226, 226, 227, 0, 0, 0,
- 227, 0, 0, 227, 227, 227, 227, 227, 227, 0,
- 227, 0, 0, 0, 202, 203, 204, 205, 206, 207,
- 0, 0, 227, 227, 0, 227, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 245, 246, 204, 205, 206,
- 207, 0, 0, 215, 0, 0, 0, 0, 213, 211,
- 208, 212, 0, 214, 0, 0, 227, 0, 196, 227,
- 0, 0, 0, 0, 0, 0, 209, 0, 210, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 222, 0, 0, 0, 0, 0, 0, 0, 227, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 216, 0, 0, 269, 270, 271, 281, 0, 0, 0,
- 0, 0, 0, 222, 0, 0, 0, 0, 0, 0,
- 222, 222, 0, 222, 222, 222, 0, 0, 0, 0,
- 0, 301, 0, 0, 0, 0, 0, 0, 0, 222,
- 222, 0, 222, 215, 0, 0, 0, 0, 213, 211,
- 0, 212, 0, 214, 0, 0, 0, 215, 0, 0,
- 0, 0, 215, 215, 215, 215, 247, 215, 210, 0,
- 0, 0, 0, 222, 0, 330, 222, 0, 0, 215,
- 215, 0, 215, 338, 213, 211, 0, 212, 0, 214,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 216, 0, 247, 0, 210, 222, 0, 0, 0, 0,
- 0, 0, 0, 0, 215, 0, 0, 0, 0, 0,
- 227, 227, 227, 227, 0, 0, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 216, 0, 0, 0,
- 0, 0, 196, 0, 227, 227, 0, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 0, 0, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 0, 0, 0, 385, 0, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 0, 0,
- 227, 227, 227, 227, 0, 0, 227, 227, 200, 227,
- 0, 201, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 0, 0, 0,
- 227, 227, 227, 227, 227, 227, 227, 222, 222, 222,
- 222, 0, 0, 222, 222, 222, 222, 222, 222, 222,
- 222, 222, 222, 407, 408, 245, 246, 204, 205, 206,
- 207, 222, 222, 0, 222, 222, 222, 222, 222, 222,
- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
- 222, 222, 222, 0, 0, 222, 222, 222, 222, 222,
- 222, 222, 222, 222, 222, 222, 222, 222, 222, 0,
- 0, 0, 0, 0, 222, 222, 222, 222, 222, 222,
- 222, 222, 222, 222, 222, 0, 0, 222, 222, 222,
- 222, 223, 215, 222, 222, 215, 222, 0, 0, 222,
- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
- 222, 222, 222, 222, 0, 0, 0, 222, 222, 222,
- 222, 222, 222, 222, 223, 202, 203, 204, 205, 206,
- 207, 223, 223, 0, 223, 223, 223, 0, 0, 215,
- 215, 215, 215, 215, 215, 0, 0, 50, 0, 0,
- 223, 223, 0, 223, 0, 0, 0, 0, 0, 0,
- 0, 245, 0, 204, 205, 206, 207, 0, 0, 0,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 0, 0, 0, 223, 0, 0, 223, 50, 0,
- 0, 50, 51, 0, 0, 0, 0, 0, 0, 79,
- 80, 81, 82, 0, 0, 0, 50, 0, 243, 0,
- 0, 0, 0, 0, 0, 0, 223, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 0, 0, 0, 0,
- 0, 0, 0, 51, 0, 0, 51, 0, 0, 0,
- 50, 243, 0, 0, 0, 0, 0, 0, 243, 243,
- 0, 51, 243, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 243, 243, 0,
- 243, 0, 50, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 0, 0, 0, 0,
- 215, 0, 0, 0, 0, 213, 211, 0, 212, 0,
- 214, 243, 0, 0, 243, 0, 0, 0, 0, 0,
- 0, 0, 0, 247, 0, 210, 0, 51, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 243, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 216, 223, 223,
- 223, 223, 0, 0, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 0, 0, 0, 0, 0, 0,
- 0, 0, 223, 223, 0, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 0, 0, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 0, 50, 0, 0, 0, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 0, 0, 223, 223,
- 223, 223, 0, 0, 223, 223, 0, 223, 50, 0,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 0, 51, 0, 223, 223,
- 223, 223, 223, 223, 223, 243, 243, 243, 243, 0,
- 0, 243, 243, 243, 243, 243, 243, 243, 243, 243,
- 243, 0, 0, 51, 0, 0, 0, 0, 0, 243,
- 243, 0, 243, 243, 243, 243, 243, 243, 243, 243,
- 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
- 243, 0, 0, 243, 243, 243, 243, 243, 243, 243,
- 243, 243, 243, 243, 243, 243, 243, 15, 0, 0,
- 0, 0, 243, 243, 243, 243, 243, 243, 243, 243,
- 243, 243, 243, 421, 0, 243, 243, 243, 243, 245,
- 0, 243, 243, 0, 243, 0, 0, 243, 243, 243,
- 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
- 243, 243, 0, 0, 0, 243, 243, 243, 243, 243,
- 243, 243, 245, 0, 0, 0, 15, 0, 0, 245,
- 245, 0, 0, 245, 0, 0, 0, 0, 0, 0,
- 0, 0, 202, 203, 204, 205, 206, 207, 245, 245,
- 0, 245, 0, 0, 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 196, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 245, 0, 0, 245, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 244, 0, 0, 0,
- 0, 0, 0, 0, 245, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 244,
- 0, 0, 0, 0, 0, 0, 244, 244, 0, 0,
- 244, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 244, 244, 0, 244, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 244,
- 0, 0, 244, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 196, 0, 0, 0, 0, 0,
- 196, 244, 0, 0, 0, 196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 245, 245, 245, 245,
- 0, 0, 245, 245, 245, 245, 245, 245, 245, 245,
- 245, 245, 0, 0, 0, 0, 0, 0, 0, 196,
- 245, 245, 0, 245, 245, 245, 245, 245, 245, 245,
- 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
- 245, 245, 0, 0, 245, 245, 245, 245, 245, 245,
- 245, 245, 245, 245, 245, 245, 245, 245, 0, 0,
- 0, 0, 0, 245, 245, 245, 245, 245, 245, 245,
- 245, 245, 245, 245, 0, 0, 245, 245, 245, 245,
- 0, 0, 245, 245, 0, 245, 0, 0, 245, 245,
- 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
- 245, 245, 245, 0, 0, 0, 245, 245, 245, 245,
- 245, 245, 245, 244, 244, 244, 244, 0, 0, 244,
- 244, 244, 244, 244, 244, 244, 244, 244, 244, 0,
- 0, 0, 0, 0, 0, 0, 0, 244, 244, 0,
- 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
- 244, 244, 244, 244, 244, 244, 244, 244, 244, 0,
- 0, 244, 244, 244, 244, 244, 244, 244, 244, 244,
- 244, 244, 244, 244, 244, 16, 0, 0, 0, 0,
- 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
- 244, 0, 0, 244, 244, 244, 244, 242, 0, 244,
- 244, 0, 244, 0, 0, 244, 244, 244, 244, 244,
- 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
- 0, 0, 0, 244, 244, 244, 244, 244, 244, 244,
- 242, 0, 0, 0, 16, 0, 0, 242, 242, 0,
- 0, 242, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 242, 242, 0, 242,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0,
- 0, 197, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 242, 0, 0, 242, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 151, 0, 0, 0, 0, 0,
- 0, 0, 242, 0, 0, 0, 0, 0, 59, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 151, 0, 0,
- 0, 0, 0, 0, 151, 151, 0, 151, 151, 151,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 59,
- 0, 0, 59, 151, 0, 0, 151, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 59, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 151, 0, 0,
- 151, 0, 0, 0, 0, 0, 0, 215, 0, 0,
- 0, 59, 213, 211, 0, 212, 0, 214, 0, 0,
- 0, 0, 197, 0, 0, 0, 0, 0, 197, 151,
- 247, 0, 210, 197, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 59, 242, 242, 242, 242, 0, 0,
- 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 0, 0, 0, 0, 216, 0, 0, 197, 242, 242,
- 0, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 0, 0, 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 0, 0, 0, 0,
- 0, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 0, 0, 242, 242, 242, 242, 0, 0,
- 242, 242, 0, 242, 0, 0, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 0, 0, 0, 242, 242, 242, 242, 242, 242,
- 242, 151, 151, 151, 151, 0, 0, 151, 0, 151,
- 151, 151, 151, 151, 151, 151, 151, 0, 0, 0,
- 0, 0, 59, 0, 0, 151, 151, 0, 151, 151,
- 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
- 151, 151, 151, 151, 151, 151, 0, 0, 0, 59,
- 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
- 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
- 151, 151, 151, 151, 151, 151, 151, 151, 151, 0,
- 0, 151, 151, 151, 151, 247, 0, 151, 151, 0,
- 0, 0, 0, 0, 0, 0, 0, 389, 0, 151,
- 151, 151, 151, 151, 151, 151, 151, 151, 59, 0,
- 0, 151, 151, 151, 151, 151, 151, 151, 247, 0,
- 0, 0, 0, 0, 0, 247, 247, 0, 0, 247,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 247, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 202,
- 203, 204, 205, 206, 207, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 247, 0,
- 0, 247, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 246, 0, 0, 0, 0, 0, 0, 0,
- 247, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 246, 0, 0, 0, 0,
- 0, 0, 246, 246, 0, 0, 246, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 246, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 246, 0, 0, 246, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 246, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 247, 247, 247, 247, 0, 0, 247, 247,
- 247, 247, 247, 247, 247, 247, 247, 247, 0, 0,
- 0, 0, 0, 0, 0, 0, 247, 247, 0, 247,
- 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
- 247, 247, 247, 247, 247, 247, 247, 247, 0, 0,
- 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
- 247, 247, 247, 247, 0, 0, 0, 0, 0, 247,
- 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
- 0, 0, 247, 247, 247, 247, 0, 0, 247, 247,
- 0, 247, 0, 0, 247, 247, 247, 247, 0, 0,
- 247, 247, 247, 247, 247, 247, 247, 247, 247, 0,
- 0, 0, 247, 247, 247, 247, 247, 247, 247, 246,
- 246, 246, 246, 0, 0, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 0, 0, 0, 0, 0,
- 0, 0, 0, 246, 246, 0, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 0, 0, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 0, 0, 0, 0, 0, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 0, 0, 246,
- 246, 246, 246, 152, 0, 246, 246, 0, 246, 0,
- 0, 246, 246, 246, 246, 0, 0, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 0, 0, 0, 246,
- 246, 246, 246, 246, 246, 246, 152, 0, 0, 0,
- 0, 0, 0, 152, 152, 0, 152, 152, 152, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 152, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 55, 0, 0, 0, 0, 0, 152, 0, 0, 152,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 248, 0, 0, 0, 0, 0, 0, 0, 152, 0,
- 0, 55, 0, 0, 55, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,
- 0, 0, 0, 248, 0, 0, 0, 0, 0, 0,
- 248, 248, 0, 0, 248, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 248,
- 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 248, 0, 55, 248, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 248, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 152, 152, 152, 152, 0, 0, 152, 0, 152, 152,
- 152, 152, 152, 152, 152, 152, 0, 0, 0, 0,
- 0, 0, 0, 0, 152, 152, 0, 152, 152, 152,
- 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
- 152, 152, 152, 152, 152, 0, 0, 0, 0, 152,
- 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
- 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
- 152, 152, 152, 152, 152, 152, 152, 152, 0, 0,
- 152, 152, 152, 152, 0, 0, 152, 152, 0, 0,
- 0, 0, 0, 0, 55, 0, 0, 0, 152, 152,
- 152, 152, 152, 152, 152, 152, 152, 0, 0, 0,
- 152, 152, 152, 152, 152, 152, 152, 248, 248, 248,
- 248, 55, 0, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 0, 0, 0, 0, 0, 0, 0,
- 0, 248, 248, 0, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 0, 0, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248, 248, 55,
- 55, 0, 0, 0, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 0, 0, 248, 248, 248,
- 248, 249, 0, 248, 248, 0, 248, 0, 0, 248,
- 248, 0, 0, 0, 0, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 0, 0, 0, 248, 248, 248,
- 248, 248, 248, 248, 249, 0, 0, 0, 0, 0,
- 0, 249, 249, 0, 0, 249, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 249, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 248, 0, 0, 249, 0, 0, 249, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 138, 0,
- 0, 0, 0, 0, 0, 0, 249, 0, 0, 0,
- 0, 0, 248, 0, 0, 248, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 248, 138, 0, 0, 0, 0, 0, 0, 138, 138,
- 0, 138, 138, 138, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 138, 0, 0,
- 138, 0, 0, 0, 248, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 138, 0, 0, 138, 0, 248, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 138, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 249, 249,
- 249, 249, 0, 0, 249, 249, 249, 249, 249, 249,
- 249, 249, 249, 249, 0, 0, 0, 0, 0, 0,
- 0, 0, 249, 249, 0, 249, 249, 249, 249, 249,
- 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
- 249, 249, 249, 249, 0, 0, 249, 249, 249, 249,
- 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
- 0, 0, 0, 0, 0, 249, 249, 249, 249, 249,
- 249, 249, 249, 249, 249, 249, 0, 0, 249, 249,
- 249, 249, 0, 0, 249, 249, 0, 249, 0, 0,
- 0, 249, 0, 0, 0, 248, 249, 249, 249, 249,
- 249, 249, 249, 249, 249, 0, 0, 0, 249, 249,
- 249, 249, 249, 249, 249, 138, 138, 138, 138, 0,
- 0, 138, 248, 138, 138, 138, 138, 138, 138, 138,
- 138, 0, 0, 248, 0, 0, 248, 0, 0, 138,
- 138, 0, 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
- 0, 0, 0, 0, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 0, 0, 0,
- 248, 248, 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 0, 0, 138, 138, 138, 138, 143,
- 0, 138, 138, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 0, 0, 0, 138, 138, 138, 138, 138,
- 138, 138, 143, 0, 0, 0, 0, 0, 0, 143,
- 143, 0, 0, 143, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 143, 0,
- 0, 143, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 249,
- 0, 0, 143, 0, 0, 143, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 147, 0, 0, 0,
- 0, 0, 0, 0, 143, 0, 0, 0, 0, 0,
- 249, 0, 0, 249, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 249, 147,
- 0, 0, 0, 0, 0, 0, 147, 147, 0, 0,
- 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 147, 0, 0, 0, 0,
- 0, 0, 249, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 147,
- 0, 0, 147, 0, 249, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 147, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 143, 143, 143, 143,
- 0, 0, 143, 0, 143, 143, 143, 143, 143, 143,
- 143, 143, 0, 0, 0, 0, 0, 0, 0, 0,
- 143, 143, 0, 143, 143, 143, 143, 143, 143, 143,
- 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
- 143, 0, 0, 0, 0, 143, 143, 143, 143, 143,
- 143, 143, 143, 143, 143, 143, 143, 143, 0, 0,
- 0, 0, 0, 143, 143, 143, 143, 143, 143, 143,
- 143, 143, 143, 143, 0, 0, 143, 143, 143, 143,
- 0, 0, 143, 143, 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 249, 143, 143, 143, 143, 143, 143,
- 143, 143, 143, 0, 0, 0, 143, 143, 143, 143,
- 143, 143, 143, 147, 147, 147, 147, 33, 0, 147,
- 249, 147, 147, 147, 147, 147, 147, 147, 147, 0,
- 0, 249, 0, 0, 249, 0, 0, 147, 147, 0,
- 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
- 147, 147, 147, 147, 147, 147, 147, 147, 0, 0,
- 0, 0, 147, 147, 147, 147, 147, 147, 147, 147,
- 147, 147, 147, 147, 147, 0, 0, 0, 0, 249,
- 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
- 147, 0, 0, 147, 147, 147, 147, 91, 0, 147,
- 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 147, 147, 147, 147, 147, 147, 147, 147, 147,
- 0, 0, 0, 147, 147, 147, 147, 147, 147, 147,
- 91, 0, 0, 0, 0, 0, 0, 91, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 6, 7, 0, 8, 9, 91, 0, 0, 0,
- 0, 0, 0, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 0, 0, 22, 0, 0,
- 0, 0, 0, 0, 58, 0, 0, 0, 0, 0,
- 91, 0, 0, 91, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 93, 0, 0, 0, 0, 0,
- 0, 0, 91, 0, 0, 58, 0, 0, 58, 23,
- 0, 0, 0, 0, 0, 24, 25, 0, 0, 26,
- 0, 27, 0, 58, 0, 0, 0, 93, 0, 0,
- 0, 0, 0, 0, 93, 0, 0, 0, 28, 0,
- 29, 0, 0, 0, 0, 0, 0, 30, 31, 0,
- 0, 0, 0, 93, 0, 0, 0, 58, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 93, 0, 58,
- 93, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 93,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 91, 91, 91, 91, 0, 0,
- 91, 0, 91, 91, 91, 91, 91, 91, 91, 91,
- 0, 0, 0, 0, 0, 0, 0, 0, 91, 91,
- 0, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 0,
- 0, 0, 0, 0, 91, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 0, 0, 0, 0,
- 0, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 0, 0, 91, 91, 91, 91, 0, 0,
- 91, 91, 0, 0, 0, 0, 6, 0, 58, 0,
- 0, 0, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 0, 0, 0, 91, 91, 91, 91, 91, 91,
- 91, 93, 93, 93, 93, 58, 0, 93, 6, 93,
- 93, 93, 93, 93, 93, 93, 93, 0, 0, 0,
- 0, 0, 0, 0, 0, 93, 93, 0, 93, 93,
- 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
- 93, 93, 93, 93, 93, 93, 0, 0, 0, 0,
- 0, 93, 93, 93, 93, 93, 93, 93, 93, 93,
- 93, 93, 93, 0, 58, 0, 0, 0, 93, 93,
- 93, 93, 93, 93, 93, 93, 93, 93, 93, 0,
- 0, 93, 93, 93, 93, 95, 0, 93, 93, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 93,
- 93, 93, 93, 93, 93, 93, 93, 93, 0, 0,
- 0, 93, 93, 93, 93, 93, 93, 93, 95, 0,
- 0, 0, 0, 0, 0, 95, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 6, 6, 95, 6, 6, 0, 0, 0,
- 0, 0, 0, 0, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 0, 0, 6, 0,
- 0, 0, 57, 0, 0, 0, 0, 0, 95, 0,
- 0, 95, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,
- 95, 0, 0, 57, 0, 0, 57, 0, 0, 0,
- 6, 0, 0, 0, 0, 0, 6, 6, 0, 0,
- 6, 57, 6, 0, 0, 99, 0, 0, 0, 0,
- 0, 0, 99, 0, 0, 0, 0, 0, 0, 6,
- 0, 6, 0, 0, 0, 0, 0, 0, 6, 6,
- 0, 99, 0, 0, 0, 57, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 99, 0, 57, 99, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 99, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 95, 95, 95, 95, 0, 0, 95, 0,
- 95, 95, 95, 95, 95, 95, 95, 95, 0, 0,
- 0, 0, 0, 0, 0, 0, 95, 95, 0, 95,
- 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
- 95, 95, 95, 95, 95, 95, 95, 0, 0, 0,
- 0, 0, 95, 95, 95, 95, 95, 95, 95, 95,
- 95, 95, 95, 95, 0, 0, 0, 0, 0, 95,
- 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
- 0, 0, 95, 95, 95, 95, 0, 0, 95, 95,
- 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
- 95, 95, 95, 95, 95, 95, 95, 95, 95, 0,
- 0, 0, 95, 95, 95, 95, 95, 95, 95, 99,
- 99, 99, 99, 57, 0, 99, 0, 99, 99, 99,
- 99, 99, 99, 99, 99, 0, 0, 0, 0, 0,
- 0, 0, 0, 99, 99, 0, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 0, 0, 0, 0, 0, 99,
- 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 0, 57, 0, 0, 0, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 0, 0, 99,
- 99, 99, 99, 97, 0, 99, 99, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 0, 0, 0, 99,
- 99, 99, 99, 99, 99, 99, 97, 0, 0, 0,
- 0, 0, 0, 97, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 97, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 97, 0, 0, 97,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 87, 0, 0, 0, 0, 0, 0, 0, 97, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 87, 0, 0, 0, 0, 0, 0,
- 87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 87, 0, 0, 87, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 87, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 97, 97, 97, 97, 0, 0, 97, 0, 97, 97,
- 97, 97, 97, 97, 97, 97, 0, 0, 0, 0,
- 0, 0, 0, 0, 97, 97, 0, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 97, 97, 97, 97, 0, 0, 0, 0, 0,
- 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 97, 0, 0, 0, 0, 0, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 97, 0, 0,
- 97, 97, 97, 97, 0, 0, 97, 97, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 0, 0, 0,
- 97, 97, 97, 97, 97, 97, 97, 87, 87, 87,
- 87, 0, 0, 87, 0, 87, 87, 87, 87, 87,
- 87, 87, 87, 0, 0, 0, 0, 0, 0, 0,
- 0, 87, 87, 0, 87, 87, 87, 87, 87, 87,
- 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
- 87, 87, 0, 0, 0, 0, 0, 87, 87, 87,
- 87, 87, 87, 87, 87, 87, 87, 87, 87, 0,
- 0, 0, 0, 0, 87, 87, 87, 87, 87, 87,
- 87, 87, 87, 87, 87, 0, 0, 87, 87, 87,
- 87, 88, 0, 87, 87, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 87, 87, 87, 87, 87,
- 87, 87, 87, 87, 0, 0, 0, 87, 87, 87,
- 87, 87, 87, 87, 88, 0, 0, 0, 0, 0,
- 0, 88, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 88, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 88, 0, 0, 88, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 89, 0,
- 0, 0, 0, 0, 0, 0, 88, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 89, 0, 0, 0, 0, 0, 0, 89, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 89, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 89, 0, 0, 89, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 89, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 88, 88,
- 88, 88, 0, 0, 88, 0, 88, 88, 88, 88,
- 88, 88, 88, 88, 0, 0, 0, 0, 0, 0,
- 0, 0, 88, 88, 0, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 0, 0, 0, 0, 0, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 0, 0, 0, 0, 0, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 0, 0, 88, 88,
- 88, 88, 0, 0, 88, 88, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 0, 0, 0, 88, 88,
- 88, 88, 88, 88, 88, 89, 89, 89, 89, 0,
- 0, 89, 0, 89, 89, 89, 89, 89, 89, 89,
- 89, 0, 0, 0, 0, 0, 0, 0, 0, 89,
- 89, 0, 89, 89, 89, 89, 89, 89, 89, 89,
- 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
- 0, 0, 0, 0, 0, 89, 89, 89, 89, 89,
- 89, 89, 89, 89, 89, 89, 89, 0, 0, 0,
- 0, 0, 89, 89, 89, 89, 89, 89, 89, 89,
- 89, 89, 89, 0, 0, 89, 89, 89, 89, 90,
- 0, 89, 89, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 89, 89, 89, 89, 89, 89, 89,
- 89, 89, 0, 0, 0, 89, 89, 89, 89, 89,
- 89, 89, 90, 0, 0, 0, 0, 0, 0, 90,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 90, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 90, 0, 0, 90, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 100, 0, 0, 0,
- 0, 0, 0, 0, 90, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 100,
- 0, 0, 0, 0, 0, 0, 100, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 100, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 100,
- 0, 0, 100, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 100, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 90, 90, 90, 90,
- 0, 0, 90, 0, 90, 90, 90, 90, 90, 90,
- 90, 90, 0, 0, 0, 0, 0, 0, 0, 0,
- 90, 90, 0, 90, 90, 90, 90, 90, 90, 90,
- 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
- 90, 0, 0, 0, 0, 0, 90, 90, 90, 90,
- 90, 90, 90, 90, 90, 90, 90, 90, 0, 0,
- 0, 0, 0, 90, 90, 90, 90, 90, 90, 90,
- 90, 90, 90, 90, 0, 0, 90, 90, 90, 90,
- 0, 0, 90, 90, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 90, 90, 90, 90, 90, 90,
- 90, 90, 90, 0, 0, 0, 90, 90, 90, 90,
- 90, 90, 90, 100, 100, 100, 100, 0, 0, 100,
- 0, 100, 100, 100, 100, 100, 100, 100, 100, 0,
- 0, 0, 0, 0, 0, 0, 0, 100, 100, 0,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 0, 0,
- 0, 0, 0, 100, 100, 100, 100, 100, 100, 100,
- 100, 100, 100, 100, 100, 0, 0, 0, 0, 0,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100, 0, 0, 100, 100, 100, 100, 101, 0, 100,
- 100, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 0, 0, 0, 100, 100, 100, 100, 100, 100, 100,
- 101, 0, 0, 0, 0, 0, 0, 101, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 101, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 101, 0, 0, 101, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 102, 0, 0, 0, 0, 0,
- 0, 0, 101, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 102, 0, 0,
- 0, 0, 0, 0, 102, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 102, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 102, 0, 0,
- 102, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 102,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 101, 101, 101, 101, 0, 0,
- 101, 0, 101, 101, 101, 101, 101, 101, 101, 101,
- 0, 0, 0, 0, 0, 0, 0, 0, 101, 101,
- 0, 101, 101, 101, 101, 101, 101, 101, 101, 101,
- 101, 101, 101, 101, 101, 101, 101, 101, 101, 0,
- 0, 0, 0, 0, 101, 101, 101, 101, 101, 101,
- 101, 101, 101, 101, 101, 101, 0, 0, 0, 0,
- 0, 101, 101, 101, 101, 101, 101, 101, 101, 101,
- 101, 101, 0, 0, 101, 101, 101, 101, 0, 0,
- 101, 101, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 101, 101, 101, 101, 101, 101, 101, 101,
- 101, 0, 0, 0, 101, 101, 101, 101, 101, 101,
- 101, 102, 102, 102, 102, 0, 0, 102, 0, 102,
- 102, 102, 102, 102, 102, 102, 102, 0, 0, 0,
- 0, 0, 0, 0, 0, 102, 102, 0, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 102, 0, 0, 0, 0,
- 0, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 0, 0, 0, 0, 0, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 0,
- 0, 102, 102, 102, 102, 104, 0, 102, 102, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 0, 0,
- 0, 102, 102, 102, 102, 102, 102, 102, 104, 0,
- 0, 0, 0, 0, 0, 104, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 104, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 104, 0,
- 0, 104, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 109, 0, 0, 0, 0, 0, 0, 0,
- 104, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109, 0, 0, 0, 0,
- 0, 0, 109, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 109, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109, 0, 0, 109, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 109, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 104, 104, 104, 104, 0, 0, 104, 0,
- 104, 104, 104, 104, 104, 104, 104, 104, 0, 0,
- 0, 0, 0, 0, 0, 0, 104, 104, 0, 104,
- 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
- 104, 104, 104, 104, 104, 104, 104, 0, 0, 0,
- 0, 0, 104, 104, 104, 104, 104, 104, 104, 104,
- 104, 104, 104, 104, 0, 0, 0, 0, 0, 104,
- 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
- 0, 0, 104, 104, 104, 104, 0, 0, 104, 104,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 104, 104, 104, 104, 104, 104, 104, 104, 104, 0,
- 0, 0, 104, 104, 104, 104, 104, 104, 104, 109,
- 109, 109, 109, 0, 0, 109, 0, 109, 109, 109,
- 109, 109, 109, 109, 109, 0, 0, 0, 0, 0,
- 0, 0, 0, 109, 109, 0, 109, 109, 109, 109,
- 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
- 109, 109, 109, 109, 0, 0, 0, 0, 0, 109,
- 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
- 109, 0, 0, 0, 0, 0, 109, 109, 109, 109,
- 109, 109, 109, 109, 109, 109, 109, 0, 0, 109,
- 109, 109, 109, 111, 0, 109, 109, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 109, 109, 109,
- 109, 109, 109, 109, 109, 109, 0, 0, 0, 109,
- 109, 109, 109, 109, 109, 109, 111, 0, 0, 0,
- 0, 0, 0, 111, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 111, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 111, 0, 0, 111,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 118, 0, 0, 0, 0, 0, 0, 0, 111, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 118, 0, 0, 0, 0, 0, 0,
- 118, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 118, 0, 0, 118, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 118, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 111, 111, 111, 111, 0, 0, 111, 0, 111, 111,
- 111, 111, 111, 111, 111, 111, 0, 0, 0, 0,
- 0, 0, 0, 0, 111, 111, 0, 111, 111, 111,
- 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
- 111, 111, 111, 111, 111, 0, 0, 0, 0, 0,
- 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
- 111, 111, 0, 0, 0, 0, 0, 111, 111, 111,
- 111, 111, 111, 111, 111, 111, 111, 111, 0, 0,
- 111, 111, 111, 111, 0, 0, 111, 111, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 111, 111,
- 111, 111, 111, 111, 111, 111, 111, 0, 0, 0,
- 111, 111, 111, 111, 111, 111, 111, 118, 118, 118,
- 118, 0, 0, 118, 0, 118, 118, 118, 118, 118,
- 118, 118, 118, 0, 0, 0, 0, 0, 0, 0,
- 0, 118, 118, 0, 118, 118, 118, 118, 118, 118,
- 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
- 118, 118, 0, 0, 0, 0, 0, 118, 118, 118,
- 118, 118, 118, 118, 118, 118, 118, 118, 118, 0,
- 0, 0, 0, 0, 118, 118, 118, 118, 118, 118,
- 118, 118, 118, 118, 118, 0, 0, 118, 118, 118,
- 118, 131, 0, 118, 118, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 118, 118, 118, 118, 118,
- 118, 118, 118, 118, 0, 0, 0, 118, 118, 118,
- 118, 118, 118, 118, 131, 0, 0, 0, 0, 0,
- 0, 131, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 131, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 131, 0, 0, 131, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 113, 0,
- 0, 0, 0, 0, 0, 0, 131, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 113, 0, 0, 0, 0, 0, 0, 113, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 113, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 113, 0, 0, 113, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 113, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 131, 131,
- 131, 131, 0, 0, 131, 0, 131, 131, 131, 131,
- 131, 131, 131, 131, 0, 0, 0, 0, 0, 0,
- 0, 0, 131, 131, 0, 131, 131, 131, 131, 131,
- 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
- 131, 131, 131, 0, 0, 0, 0, 0, 131, 131,
- 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
- 0, 0, 0, 0, 0, 131, 131, 131, 131, 131,
- 131, 131, 131, 131, 131, 131, 0, 0, 131, 131,
- 131, 131, 0, 0, 131, 131, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 131, 131, 131, 131,
- 131, 131, 131, 131, 131, 0, 0, 0, 131, 131,
- 131, 131, 131, 131, 131, 113, 113, 113, 113, 0,
- 0, 113, 0, 113, 113, 113, 113, 113, 113, 113,
- 113, 0, 0, 0, 0, 0, 0, 0, 0, 113,
- 113, 0, 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
- 0, 0, 0, 0, 0, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 0, 0, 0,
- 0, 0, 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 0, 0, 113, 113, 113, 113, 174,
- 0, 113, 113, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 0, 0, 0, 113, 113, 113, 113, 113,
- 113, 113, 174, 0, 0, 0, 0, 0, 0, 174,
- 0, 0, 0, 174, 174, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 174, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 174, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 149, 0, 0, 0,
- 0, 0, 0, 0, 174, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 149,
- 0, 0, 0, 0, 0, 0, 149, 149, 0, 149,
- 149, 149, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 149, 0, 0, 149, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 149,
- 0, 0, 149, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 149, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 174, 174, 174,
- 0, 0, 0, 0, 174, 174, 174, 0, 174, 174,
- 174, 174, 0, 0, 0, 0, 0, 0, 0, 0,
- 174, 174, 0, 174, 174, 174, 174, 174, 174, 174,
- 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
- 174, 0, 0, 0, 0, 0, 174, 174, 174, 174,
- 174, 174, 174, 174, 174, 174, 174, 174, 0, 0,
- 0, 0, 0, 174, 174, 174, 174, 174, 174, 174,
- 174, 174, 174, 174, 0, 0, 174, 174, 174, 174,
- 0, 0, 174, 174, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 174, 174, 174, 174, 174, 174,
- 174, 174, 174, 0, 0, 0, 174, 174, 174, 174,
- 174, 174, 174, 149, 149, 149, 149, 0, 0, 149,
- 0, 149, 149, 149, 149, 149, 149, 149, 149, 0,
- 0, 0, 0, 0, 0, 0, 0, 149, 149, 0,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 154, 0,
- 0, 0, 149, 149, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 154, 0, 0, 0, 0, 0, 0, 154, 149,
- 149, 154, 0, 154, 154, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 154, 0, 0,
- 0, 0, 0, 149, 149, 149, 149, 149, 149, 149,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 154, 175, 0, 154, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 154, 0, 175, 0, 0, 0, 0,
- 0, 0, 175, 175, 0, 0, 175, 175, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 175, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 242, 0, 0, 0, 175, 0, 0, 175, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 242, 0, 0, 175, 0, 0,
- 0, 242, 242, 0, 0, 242, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 242, 242, 0, 242, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 154, 154, 154, 154, 0,
- 0, 154, 0, 154, 154, 154, 154, 154, 154, 154,
- 154, 0, 0, 0, 242, 0, 0, 242, 0, 154,
- 154, 0, 154, 154, 154, 154, 154, 154, 154, 154,
- 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
- 0, 0, 0, 0, 43, 154, 242, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 154, 154, 154,
- 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
- 154, 154, 154, 0, 0, 0, 0, 43, 0, 0,
- 0, 154, 154, 0, 43, 0, 0, 0, 0, 175,
- 175, 175, 175, 0, 0, 175, 0, 175, 175, 175,
- 175, 175, 175, 43, 0, 154, 154, 154, 154, 154,
- 154, 154, 0, 175, 175, 0, 175, 175, 175, 175,
- 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
- 175, 175, 175, 175, 0, 0, 0, 43, 0, 175,
- 43, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 175, 175, 175, 175,
- 175, 175, 175, 175, 175, 175, 175, 0, 0, 43,
- 0, 0, 0, 0, 0, 175, 175, 0, 242, 242,
- 242, 242, 0, 0, 242, 0, 0, 0, 0, 242,
- 0, 0, 242, 242, 0, 0, 0, 98, 0, 175,
- 175, 175, 175, 175, 175, 175, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 0, 0, 0, 0, 0, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 98, 0, 242, 242,
- 242, 242, 0, 0, 0, 0, 0, 0, 0, 0,
- 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 0, 0, 0, 0, 0,
- 98, 0, 0, 0, 242, 0, 0, 0, 0, 0,
- 0, 43, 43, 43, 43, 0, 0, 43, 0, 0,
- 0, 0, 43, 0, 0, 43, 43, 0, 0, 0,
- 0, 0, 98, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 0, 0, 0, 0, 0, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 45,
- 0, 43, 43, 43, 43, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 0, 0,
- 0, 0, 45, 0, 0, 0, 0, 43, 0, 45,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 45, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 98, 0, 0,
- 0, 0, 98, 98, 98, 0, 98, 98, 98, 98,
- 0, 0, 45, 0, 0, 45, 0, 0, 98, 98,
- 0, 98, 98, 98, 98, 98, 98, 98, 98, 98,
- 98, 98, 98, 98, 98, 98, 98, 98, 98, 196,
- 96, 0, 0, 0, 45, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 98, 98, 0, 0, 0, 0, 0, 250, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,
- 0, 0, 0, 0, 98, 98, 98, 98, 98, 98,
- 98, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 250, 0, 0, 0, 250, 250,
- 250, 250, 250, 96, 250, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 250, 250, 0, 250,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 92, 0, 0, 0, 96, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 45, 45, 45, 45,
- 250, 0, 45, 0, 0, 0, 0, 45, 0, 0,
- 45, 45, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 250, 0, 0, 0, 0, 0, 0, 0,
- 92, 0, 0, 0, 0, 94, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 0, 0,
- 0, 0, 0, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 92, 0, 45, 45, 45, 45,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 0, 94, 0, 92, 0, 0, 108,
- 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
- 96, 0, 0, 0, 0, 96, 96, 96, 0, 96,
- 96, 96, 96, 0, 0, 0, 0, 0, 94, 0,
- 0, 96, 96, 0, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 197, 0, 0, 0, 0, 0, 108, 0,
- 94, 250, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 250, 0,
- 0, 0, 108, 96, 96, 0, 0, 0, 0, 250,
- 0, 0, 250, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 96, 96, 96,
- 96, 96, 96, 96, 108, 110, 0, 0, 0, 0,
- 0, 92, 0, 0, 0, 0, 92, 92, 92, 0,
- 92, 92, 92, 92, 0, 0, 250, 250, 250, 250,
- 250, 250, 92, 92, 0, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 110, 0, 0, 0, 0, 117,
- 0, 0, 0, 0, 0, 94, 0, 0, 0, 0,
- 94, 94, 94, 0, 94, 94, 94, 94, 0, 0,
- 0, 0, 0, 0, 92, 92, 94, 94, 110, 94,
- 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
- 94, 94, 94, 94, 94, 94, 94, 0, 92, 92,
- 92, 92, 92, 92, 92, 0, 0, 0, 117, 0,
- 110, 0, 0, 112, 0, 0, 0, 0, 0, 108,
- 0, 0, 0, 0, 108, 108, 108, 0, 108, 108,
- 108, 108, 0, 0, 0, 0, 0, 0, 94, 94,
- 108, 108, 117, 108, 108, 108, 108, 108, 108, 108,
- 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
- 108, 0, 94, 94, 94, 94, 94, 94, 94, 0,
- 0, 0, 112, 0, 117, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 108, 108, 0, 0, 112, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 108, 108, 108, 108,
- 108, 108, 108, 0, 0, 0, 0, 0, 112, 0,
- 0, 0, 0, 0, 0, 110, 0, 0, 0, 0,
- 110, 110, 110, 0, 110, 110, 110, 110, 0, 0,
- 0, 0, 0, 0, 0, 0, 110, 110, 0, 110,
- 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
- 110, 110, 110, 110, 110, 110, 110, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 117,
- 0, 0, 0, 0, 117, 117, 117, 0, 117, 117,
- 117, 117, 0, 0, 0, 0, 0, 0, 110, 110,
- 117, 117, 0, 117, 117, 117, 117, 117, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
- 117, 0, 110, 110, 110, 110, 110, 110, 110, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 112, 0, 0, 0, 0, 112, 112,
- 112, 0, 112, 112, 112, 112, 0, 0, 0, 0,
- 0, 0, 117, 117, 112, 112, 83, 112, 112, 112,
- 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
- 112, 112, 112, 112, 112, 0, 117, 117, 117, 117,
- 117, 117, 117, 0, 0, 0, 0, 0, 0, 83,
- 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 83, 112, 112, 0, 0,
- 0, 0, 0, 0, 0, 0, 154, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 112, 112, 112, 112, 112, 112, 112, 0, 0, 83,
- 0, 0, 83, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 154,
- 0, 154, 154, 0, 0, 0, 0, 0, 0, 0,
- 0, 83, 0, 0, 0, 154, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 154,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 154, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 95, 0, 0, 0, 0, 0, 0, 92, 0,
- 0, 0, 0, 94, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 83, 83, 83, 0, 0, 0, 83,
- 0, 83, 83, 83, 83, 83, 83, 83, 83, 32,
- 0, 0, 0, 0, 93, 0, 0, 83, 83, 0,
- 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83, 0, 0,
- 0, 33, 0, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 0, 0, 0, 0, 0,
- 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 0, 0, 83, 83, 83, 83, 154, 154, 83,
- 83, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 83, 83, 83, 83, 83, 83, 83, 83, 83,
- 0, 0, 0, 83, 83, 83, 83, 83, 83, 0,
- 0, 0, 0, 0, 154, 154, 154, 154, 154, 154,
- 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 154, 154, 154, 154, 6, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 0, 6,
- 0, 154, 154, 154, 154, 154, 154, 154, 154, 154,
- 0, 0, 0, 0, 0, 294, 295, 51, 8, 9,
- 0, 52, 0, 0, 0, 0, 53, 10, 11, 296,
- 297, 14, 15, 16, 17, 18, 19, 20, 21, 0,
- 0, 22, 0, 0, 0, 6, 0, 0, 0, 0,
- 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 6, 0, 0,
- 0, 0, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 23, 0, 79, 80, 81, 82, 24,
- 25, 0, 0, 26, 0, 27, 0, 0, 0, 0,
- 0, 0, 0, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 28, 95, 29, 0, 0, 0, 0, 0,
- 110, 30, 31, 0, 0, 94, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 93, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 6, 6, 6, 6, 6, 0, 6, 0, 0,
- 0, 0, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 0, 0, 6, 0, 0,
- 111, 0, 0, 0, 0, 0, 0, 110, 314, 0,
- 0, 0, 94, 0, 0, 0, 0, 0, 0, 0,
- 0, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 0, 0, 0, 0, 0, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 0, 6, 6, 6, 6, 6, 6, 0, 0, 6,
- 0, 6, 0, 93, 0, 0, 0, 0, 0, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 0,
- 6, 0, 0, 0, 0, 0, 0, 6, 6, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 49, 50, 51,
- 8, 0, 0, 52, 0, 126, 127, 128, 53, 129,
- 130, 131, 132, 0, 0, 0, 0, 0, 0, 0,
- 0, 133, 134, 0, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 0, 0, 0, 0, 0, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 0,
- 0, 0, 0, 0, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 111, 0, 79, 80, 81,
- 82, 0, 92, 153, 154, 0, 0, 94, 275, 0,
- 0, 0, 0, 0, 0, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 0, 0, 0, 155, 156, 157,
- 158, 159, 160, 30, 49, 50, 51, 8, 0, 0,
- 52, 0, 0, 0, 0, 53, 0, 0, 54, 55,
- 0, 0, 0, 0, 0, 0, 0, 0, 93, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 0, 0, 0, 0,
- 0, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 95, 0, 79, 80, 81, 82, 0, 92,
- 0, 0, 0, 0, 94, 0, 0, 0, 0, 0,
- 0, 0, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 30, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 93, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
- 50, 51, 8, 0, 0, 52, 0, 0, 0, 0,
- 53, 0, 0, 54, 55, 111, 0, 0, 0, 0,
- 0, 0, 110, 0, 0, 0, 0, 94, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 0, 0, 0, 0, 0, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 0, 93, 79,
- 80, 81, 82, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 30, 49, 50, 51, 8,
- 0, 0, 52, 0, 0, 0, 0, 53, 0, 0,
- 54, 55, 111, 0, 0, 0, 0, 0, 0, 92,
- 0, 0, 0, 0, 94, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 0, 0,
- 0, 0, 0, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 0, 93, 79, 80, 81, 82,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 30, 0, 0, 0, 0, 0, 0, 49,
- 50, 51, 8, 0, 0, 52, 0, 0, 0, 0,
- 53, 0, 0, 54, 55, 111, 0, 0, 0, 0,
- 0, 0, 282, 0, 0, 0, 0, 94, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 0, 0, 0, 0, 0, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 0, 93, 79,
- 80, 81, 82, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 30, 49, 50, 51, 8,
- 0, 0, 52, 0, 0, 0, 0, 53, 0, 0,
- 54, 55, 95, 0, 0, 0, 0, 0, 0, 276,
- 0, 0, 0, 0, 94, 275, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 0, 0,
- 0, 0, 0, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 0, 93, 79, 80, 81, 82,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 30, 0, 0, 0, 0, 0, 0, 49,
- 50, 51, 8, 0, 0, 52, 0, 0, 0, 0,
- 53, 0, 0, 54, 55, 95, 0, 0, 0, 0,
- 0, 0, 110, 0, 424, 0, 0, 94, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 0, 0, 0, 0, 0, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 0, 93, 79,
- 80, 81, 82, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 30, 272, 50, 51, 0,
- 0, 0, 273, 0, 0, 0, 0, 274, 0, 0,
- 54, 55, 95, 0, 0, 0, 0, 0, 0, 110,
- 0, 0, 0, 0, 94, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 0, 0,
- 0, 0, 0, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 0, 93, 79, 80, 81, 82,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
- 50, 51, 0, 0, 0, 52, 0, 0, 0, 0,
- 53, 0, 0, 54, 55, 95, 0, 0, 0, 0,
- 0, 0, 92, 0, 0, 0, 0, 94, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 0, 0, 0, 0, 0, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 0, 93, 79,
- 80, 81, 82, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 49, 50, 51, 0,
- 0, 0, 52, 0, 0, 0, 0, 53, 0, 0,
- 54, 55, 95, 0, 0, 0, 0, 0, 0, 282,
- 0, 0, 0, 0, 94, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 0, 0,
- 0, 0, 0, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 0, 93, 79, 80, 81, 82,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
- 50, 51, 0, 0, 0, 52, 0, 0, 0, 0,
- 53, 0, 0, 54, 55, 95, 0, 0, 0, 0,
- 0, 0, 110, 0, 0, 0, 0, 94, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 0, 0, 0, 0, 0, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 0, 93, 79,
- 80, 81, 82, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 49, 50, 51, 0,
- 0, 0, 52, 0, 0, 0, 0, 53, 0, 0,
- 54, 55, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 41, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 0, 0,
- 32, 0, 0, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 0, 0, 79, 80, 81, 82,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 33, 0, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
- 50, 51, 0, 0, 0, 52, 0, 0, 0, 0,
- 53, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 0, 0, 0, 0, 0, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 0, 0, 79,
- 80, 81, 82, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 6, 7, 0, 8,
- 9, 0, 0, 0, 0, 0, 0, 0, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 23, 0, 0, 0, 0, 0,
- 24, 25, 0, 0, 26, 0, 27, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 28, 0, 29, 0, 0, 0, 0,
- 0, 0, 30, 31,
-};
-short yycheck[] = { 25,
- 44, 59, 125, 29, 43, 31, 45, 0, 0, 0,
- 37, 37, 260, 111, 260, 42, 43, 37, 45, 107,
- 47, 260, 42, 43, 0, 45, 100, 47, 43, 268,
- 45, 37, 120, 60, 59, 62, 42, 43, 92, 45,
- 0, 47, 165, 4, 105, 36, 41, 62, 43, 58,
- 45, 42, 61, 58, 60, 25, 62, 41, 61, 41,
- 44, 31, 44, 43, 25, 45, 92, 94, 94, 95,
- 31, 271, 272, 96, 94, 258, 37, 96, 43, 44,
- 45, 107, 258, 59, 40, 111, 348, 141, 94, 91,
- 336, 43, 44, 45, 120, 319, 320, 321, 322, 323,
- 93, 93, 61, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 0, 93, 144, 145,
- 146, 336, 92, 271, 272, 373, 43, 44, 45, 155,
- 156, 91, 125, 125, 0, 37, 262, 107, 272, 165,
- 42, 43, 276, 45, 218, 47, 107, 245, 246, 125,
- 120, 249, 250, 257, 258, 355, 356, 118, 60, 120,
- 62, 349, 350, 123, 125, 40, 0, 137, 138, 139,
- 140, 351, 352, 227, 228, 59, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 94, 59, 102, 165, 157, 158, 159, 33,
- 40, 227, 228, 277, 165, 40, 40, 355, 356, 93,
- 0, 45, 273, 274, 258, 40, 242, 121, 122, 245,
- 246, 247, 276, 249, 250, 40, 40, 93, 282, 40,
- 364, 365, 140, 40, 257, 0, 40, 40, 257, 209,
- 263, 125, 40, 61, 263, 268, 291, 217, 260, 268,
- 276, 258, 262, 43, 41, 45, 282, 91, 260, 125,
- 394, 41, 96, 397, 264, 94, 268, 306, 303, 59,
- 393, 273, 274, 275, 276, 277, 278, 46, 280, 302,
- 257, 91, 302, 0, 93, 305, 125, 93, 262, 123,
- 251, 252, 41, 319, 59, 256, 0, 257, 258, 257,
- 260, 261, 363, 93, 41, 262, 276, 41, 0, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 44, 349, 283, 351, 352, 353, 354, 93, 33,
- 41, 41, 44, 37, 41, 125, 40, 41, 42, 43,
- 44, 45, 59, 47, 44, 351, 352, 353, 354, 319,
- 41, 43, 41, 45, 304, 59, 60, 262, 62, 349,
- 125, 387, 388, 389, 272, 391, 44, 59, 276, 257,
- 305, 279, 41, 37, 260, 335, 93, 365, 42, 41,
- 41, 341, 342, 47, 41, 345, 262, 347, 0, 93,
- 41, 346, 96, 260, 27, 421, 31, 37, 424, 346,
- 346, 93, 42, 43, 364, 45, 366, 47, 125, 346,
- 43, 165, 399, 373, 374, 36, -1, 387, 388, -1,
- 60, 125, 62, 257, 258, 259, 260, 261, -1, 263,
- 94, -1, 393, 125, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, -1, -1, 283,
- 260, 353, 354, -1, 94, -1, 364, 365, -1, -1,
- 93, -1, -1, 273, 274, 275, 276, 277, 278, -1,
- 280, -1, -1, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, -1, 394, -1, -1, 397,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, -1, 337, 338, 339, 340, 341, 342, -1,
- -1, 345, 46, 347, -1, -1, -1, -1, 91, -1,
- -1, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, -1, 366, -1, 167, -1, -1, -1, -1, 373,
- 374, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, -1, 257, 258, 259, 260, -1, -1, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, -1, -1, -1, -1, -1, -1, 281, 282, -1,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, -1,
- -1, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, -1, -1, -1, -1, -1,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, -1, 0, 337, 338, 339, 340, 0, -1, 343,
- 344, -1, 346, -1, -1, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 0, -1, -1, 367, 368, 369, 370, 371, 372, 373,
- 33, -1, -1, -1, 37, 0, -1, 40, 41, 42,
- 43, 44, 45, -1, 47, -1, -1, -1, -1, -1,
- -1, 59, -1, 0, -1, -1, 59, 60, -1, 62,
- 273, 274, 275, 276, 277, 278, -1, 280, -1, 349,
- 350, 351, 352, 353, 354, -1, 37, -1, -1, 59,
- -1, 42, 43, 44, 45, 93, 47, -1, -1, -1,
- 93, -1, -1, 96, 59, -1, -1, 271, 272, 60,
- -1, 62, -1, 376, -1, -1, -1, 380, 381, -1,
- 37, -1, 59, 93, 0, 42, 43, 125, 45, -1,
- 47, -1, 125, -1, -1, -1, -1, -1, 93, -1,
- -1, -1, -1, 94, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, 125, 93, 33, -1, -1,
- -1, 37, -1, -1, 40, 41, 42, 43, 44, 45,
- 125, 47, -1, 337, 338, 339, 340, 94, -1, -1,
- -1, -1, -1, 59, 60, -1, 62, -1, 125, -1,
- -1, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- -1, -1, -1, -1, 37, -1, -1, -1, -1, 42,
- 43, -1, 45, -1, 47, -1, -1, 93, -1, -1,
- 96, -1, -1, -1, -1, -1, -1, 60, -1, 62,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 125,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 94, -1, -1, 257, 258, 259, 260, -1, -1,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- -1, -1, 46, -1, -1, -1, -1, -1, 281, 282,
- -1, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- -1, -1, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, -1, -1, -1, -1,
- -1, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 46, -1, 337, 338, 339, 340, -1, -1,
- 343, 344, -1, 346, -1, -1, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, -1, -1, -1, 367, 368, 369, 370, 371, 372,
- 373, 257, 258, 259, 260, -1, -1, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, 349, 350,
- 351, 352, 353, 354, -1, 281, 282, -1, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 260, -1, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, -1, -1, -1, -1, -1, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, -1,
- -1, 337, 338, 339, 340, 0, -1, 343, 344, -1,
- 346, -1, -1, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, -1, -1,
- -1, 367, 368, 369, 370, 371, 372, 373, 33, -1,
- -1, -1, 37, -1, -1, 40, 41, 42, 43, 44,
- 45, -1, 47, -1, -1, -1, 349, 350, 351, 352,
- 353, 354, -1, -1, 59, 60, -1, 62, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 373, -1, -1, -1, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, -1, -1, -1, 93, -1,
- -1, 96, -1, -1, -1, -1, -1, 271, 272, -1,
- -1, -1, -1, 337, 338, 339, 340, -1, -1, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- 125, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- -1, -1, -1, -1, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, 33, -1, -1, -1, 37,
- -1, -1, 40, 41, 42, 43, 44, 45, -1, 47,
- -1, -1, -1, 337, 338, 339, 340, -1, -1, -1,
- -1, 59, 60, -1, 62, -1, -1, -1, -1, -1,
- -1, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- -1, -1, 37, -1, -1, -1, -1, 42, 43, 44,
- 45, -1, 47, -1, -1, 93, -1, -1, 96, -1,
- -1, -1, -1, 37, -1, 60, -1, 62, 42, 43,
- 44, 45, -1, 47, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 60, 125, 62, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 94,
- -1, -1, 257, 258, 259, 260, -1, -1, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, -1, -1,
- 94, -1, -1, -1, -1, -1, 281, 282, -1, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, -1, -1,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, -1, -1, -1, -1, -1, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- -1, -1, 337, 338, 339, 340, -1, -1, 343, 344,
- -1, 346, -1, -1, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, -1,
- -1, -1, 367, 368, 369, 370, 371, 372, 373, 257,
- 258, 259, 260, -1, -1, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, -1, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, -1, -1, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, -1, 337,
- 338, 339, 340, 0, -1, 343, 344, 302, 346, -1,
- 305, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, -1, -1, 367,
- 368, 369, 370, 371, 372, 373, 33, -1, -1, -1,
- 37, -1, -1, 40, 41, 42, 43, 44, 45, -1,
- 47, -1, -1, -1, 349, 350, 351, 352, 353, 354,
- -1, -1, 59, 60, -1, 62, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 349, 350, 351, 352, 353,
- 354, -1, -1, 37, -1, -1, -1, -1, 42, 43,
- 44, 45, -1, 47, -1, -1, 93, -1, 92, 96,
- -1, -1, -1, -1, -1, -1, 60, -1, 62, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, -1, -1, -1, -1, -1, -1, 125, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 94, -1, -1, 137, 138, 139, 140, -1, -1, -1,
- -1, -1, -1, 33, -1, -1, -1, -1, -1, -1,
- 40, 41, -1, 43, 44, 45, -1, -1, -1, -1,
- -1, 165, -1, -1, -1, -1, -1, -1, -1, 59,
- 60, -1, 62, 37, -1, -1, -1, -1, 42, 43,
- -1, 45, -1, 47, -1, -1, -1, 37, -1, -1,
- -1, -1, 42, 43, 44, 45, 60, 47, 62, -1,
- -1, -1, -1, 93, -1, 209, 96, -1, -1, 37,
- 60, -1, 62, 217, 42, 43, -1, 45, -1, 47,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 94, -1, 60, -1, 62, 125, -1, -1, -1, -1,
- -1, -1, -1, -1, 94, -1, -1, -1, -1, -1,
- 257, 258, 259, 260, -1, -1, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 94, -1, -1, -1,
- -1, -1, 276, -1, 281, 282, -1, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, -1, -1, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, -1, -1, -1, 319, -1, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, -1, -1,
- 337, 338, 339, 340, -1, -1, 343, 344, 302, 346,
- -1, 305, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, -1, -1, -1,
- 367, 368, 369, 370, 371, 372, 373, 257, 258, 259,
- 260, -1, -1, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 387, 388, 349, 350, 351, 352, 353,
- 354, 281, 282, -1, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, -1, -1, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 318, -1,
- -1, -1, -1, -1, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, -1, -1, 337, 338, 339,
- 340, 0, 302, 343, 344, 305, 346, -1, -1, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, -1, -1, -1, 367, 368, 369,
- 370, 371, 372, 373, 33, 349, 350, 351, 352, 353,
- 354, 40, 41, -1, 43, 44, 45, -1, -1, 349,
- 350, 351, 352, 353, 354, -1, -1, 0, -1, -1,
- 59, 60, -1, 62, -1, -1, -1, -1, -1, -1,
- -1, 349, -1, 351, 352, 353, 354, -1, -1, -1,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, 93, -1, -1, 96, 41, -1,
- -1, 44, 0, -1, -1, -1, -1, -1, -1, 337,
- 338, 339, 340, -1, -1, -1, 59, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, 125, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, -1, -1, -1,
- -1, -1, -1, 41, -1, -1, 44, -1, -1, -1,
- 93, 33, -1, -1, -1, -1, -1, -1, 40, 41,
- -1, 59, 44, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 59, 60, -1,
- 62, -1, 125, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 93, -1, -1, -1, -1,
- 37, -1, -1, -1, -1, 42, 43, -1, 45, -1,
- 47, 93, -1, -1, 96, -1, -1, -1, -1, -1,
- -1, -1, -1, 60, -1, 62, -1, 125, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 125, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 94, 257, 258,
- 259, 260, -1, -1, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, -1, -1, -1, -1, -1, -1,
- -1, -1, 281, 282, -1, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, -1, -1, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- -1, 264, -1, -1, -1, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, -1, -1, 337, 338,
- 339, 340, -1, -1, 343, 344, -1, 346, 291, -1,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, -1, 264, -1, 367, 368,
- 369, 370, 371, 372, 373, 257, 258, 259, 260, -1,
- -1, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, 291, -1, -1, -1, -1, -1, 281,
- 282, -1, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, -1, -1, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, 0, -1, -1,
- -1, -1, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 290, -1, 337, 338, 339, 340, 0,
- -1, 343, 344, -1, 346, -1, -1, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, -1, -1, -1, 367, 368, 369, 370, 371,
- 372, 373, 33, -1, -1, -1, 59, -1, -1, 40,
- 41, -1, -1, 44, -1, -1, -1, -1, -1, -1,
- -1, -1, 349, 350, 351, 352, 353, 354, 59, 60,
- -1, 62, -1, -1, -1, -1, -1, -1, -1, -1,
- 93, -1, -1, 96, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 93, -1, -1, 96, -1, -1, -1, -1,
- -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, 125, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 33,
- -1, -1, -1, -1, -1, -1, 40, 41, -1, -1,
- 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 59, 60, -1, 62, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 93,
- -1, -1, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 257, -1, -1, -1, -1, -1,
- 263, 125, -1, -1, -1, 268, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 257, 258, 259, 260,
- -1, -1, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, -1, -1, -1, -1, -1, -1, -1, 302,
- 281, 282, -1, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, -1, -1, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, -1, -1, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, -1, -1, 337, 338, 339, 340,
- -1, -1, 343, 344, -1, 346, -1, -1, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, -1, -1, -1, 367, 368, 369, 370,
- 371, 372, 373, 257, 258, 259, 260, -1, -1, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, -1, -1, -1, -1, -1, -1, 281, 282, -1,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, -1,
- -1, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, 0, -1, -1, -1, -1,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, -1, -1, 337, 338, 339, 340, 0, -1, 343,
- 344, -1, 346, -1, -1, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- -1, -1, -1, 367, 368, 369, 370, 371, 372, 373,
- 33, -1, -1, -1, 59, -1, -1, 40, 41, -1,
- -1, 44, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 59, 60, -1, 62,
- -1, -1, -1, -1, -1, -1, -1, -1, 93, -1,
- -1, 96, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 93, -1, -1, 96, -1, -1, -1, -1, -1, -1,
- 125, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
- -1, -1, 125, -1, -1, -1, -1, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 33, -1, -1,
- -1, -1, -1, -1, 40, 41, -1, 43, 44, 45,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
- -1, -1, 44, 59, -1, -1, 62, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 59, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
- 96, -1, -1, -1, -1, -1, -1, 37, -1, -1,
- -1, 93, 42, 43, -1, 45, -1, 47, -1, -1,
- -1, -1, 257, -1, -1, -1, -1, -1, 263, 125,
- 60, -1, 62, 268, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 125, 257, 258, 259, 260, -1, -1,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- -1, -1, -1, -1, 94, -1, -1, 302, 281, 282,
- -1, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- -1, -1, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, -1, -1, -1, -1,
- -1, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, -1, -1, 337, 338, 339, 340, -1, -1,
- 343, 344, -1, 346, -1, -1, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, -1, -1, -1, 367, 368, 369, 370, 371, 372,
- 373, 257, 258, 259, 260, -1, -1, 263, -1, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, 264, -1, -1, 281, 282, -1, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, -1, -1, -1, 291,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, -1,
- -1, 337, 338, 339, 340, 0, -1, 343, 344, -1,
- -1, -1, -1, -1, -1, -1, -1, 287, -1, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 350, -1,
- -1, 367, 368, 369, 370, 371, 372, 373, 33, -1,
- -1, -1, -1, -1, -1, 40, 41, -1, -1, 44,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 59, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 349,
- 350, 351, 352, 353, 354, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 93, -1,
- -1, 96, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- 125, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 33, -1, -1, -1, -1,
- -1, -1, 40, 41, -1, -1, 44, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 59, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 93, -1, -1, 96, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 125, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 257, 258, 259, 260, -1, -1, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, -1, -1,
- -1, -1, -1, -1, -1, -1, 281, 282, -1, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, -1, -1,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, -1, -1, -1, -1, -1, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- -1, -1, 337, 338, 339, 340, -1, -1, 343, 344,
- -1, 346, -1, -1, 349, 350, 351, 352, -1, -1,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, -1,
- -1, -1, 367, 368, 369, 370, 371, 372, 373, 257,
- 258, 259, 260, -1, -1, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, -1, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, -1, -1, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, -1, 337,
- 338, 339, 340, 0, -1, 343, 344, -1, 346, -1,
- -1, 349, 350, 351, 352, -1, -1, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, -1, -1, 367,
- 368, 369, 370, 371, 372, 373, 33, -1, -1, -1,
- -1, -1, -1, 40, 41, -1, 43, 44, 45, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 59, -1, -1, 62, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, -1, -1, -1, -1, 93, -1, -1, 96,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, -1, -1, -1, -1, -1, -1, 125, -1,
- -1, 41, -1, -1, 44, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
- -1, -1, -1, 33, -1, -1, -1, -1, -1, -1,
- 40, 41, -1, -1, 44, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
- -1, -1, -1, 93, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 93, -1, 125, 96, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 125, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 257, 258, 259, 260, -1, -1, 263, -1, 265, 266,
- 267, 268, 269, 270, 271, 272, -1, -1, -1, -1,
- -1, -1, -1, -1, 281, 282, -1, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, -1, -1, -1, -1, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, -1, -1,
- 337, 338, 339, 340, -1, -1, 343, 344, -1, -1,
- -1, -1, -1, -1, 264, -1, -1, -1, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, -1, -1, -1,
- 367, 368, 369, 370, 371, 372, 373, 257, 258, 259,
- 260, 291, -1, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, -1, -1, -1, -1, -1,
- -1, 281, 282, -1, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, -1, -1, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 318, 349,
- 350, -1, -1, -1, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, -1, -1, 337, 338, 339,
- 340, 0, -1, 343, 344, -1, 346, -1, -1, 349,
- 350, -1, -1, -1, -1, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, -1, -1, -1, 367, 368, 369,
- 370, 371, 372, 373, 33, -1, -1, -1, -1, -1,
- -1, 40, 41, -1, -1, 44, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 59, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 0, -1, -1, 93, -1, -1, 96, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, 125, -1, -1, -1,
- -1, -1, 41, -1, -1, 44, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 59, 33, -1, -1, -1, -1, -1, -1, 40, 41,
- -1, 43, 44, 45, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 59, -1, -1,
- 62, -1, -1, -1, 93, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 93, -1, -1, 96, -1, 125, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 125, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 257, 258,
- 259, 260, -1, -1, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, -1, -1, -1, -1, -1, -1,
- -1, -1, 281, 282, -1, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, -1, -1, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- -1, -1, -1, -1, -1, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, -1, -1, 337, 338,
- 339, 340, -1, -1, 343, 344, -1, 346, -1, -1,
- -1, 350, -1, -1, -1, 264, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, -1, -1, -1, 367, 368,
- 369, 370, 371, 372, 373, 257, 258, 259, 260, -1,
- -1, 263, 291, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, 302, -1, -1, 305, -1, -1, 281,
- 282, -1, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- -1, -1, -1, -1, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, -1, -1, -1,
- 349, 350, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, -1, -1, 337, 338, 339, 340, 0,
- -1, 343, 344, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, -1, -1, -1, 367, 368, 369, 370, 371,
- 372, 373, 33, -1, -1, -1, -1, -1, -1, 40,
- 41, -1, -1, 44, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 59, -1,
- -1, 62, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
- -1, -1, 93, -1, -1, 96, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, 125, -1, -1, -1, -1, -1,
- 41, -1, -1, 44, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 59, 33,
- -1, -1, -1, -1, -1, -1, 40, 41, -1, -1,
- 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 59, -1, -1, -1, -1,
- -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 93,
- -1, -1, 96, -1, 125, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 125, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 257, 258, 259, 260,
- -1, -1, 263, -1, 265, 266, 267, 268, 269, 270,
- 271, 272, -1, -1, -1, -1, -1, -1, -1, -1,
- 281, 282, -1, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, -1, -1, -1, -1, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, -1, -1, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, -1, -1, 337, 338, 339, 340,
- -1, -1, 343, 344, -1, 91, -1, -1, -1, -1,
- -1, -1, -1, 264, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, -1, -1, -1, 367, 368, 369, 370,
- 371, 372, 373, 257, 258, 259, 260, 123, -1, 263,
- 291, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, 302, -1, -1, 305, -1, -1, 281, 282, -1,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, -1, -1,
- -1, -1, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, -1, -1, -1, -1, 350,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, -1, -1, 337, 338, 339, 340, 0, -1, 343,
- 344, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- -1, -1, -1, 367, 368, 369, 370, 371, 372, 373,
- 33, -1, -1, -1, -1, -1, -1, 40, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, -1, 260, 261, 59, -1, -1, -1,
- -1, -1, -1, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, -1, -1, 283, -1, -1,
- -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
- 93, -1, -1, 96, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
- -1, -1, 125, -1, -1, 41, -1, -1, 44, 335,
- -1, -1, -1, -1, -1, 341, 342, -1, -1, 345,
- -1, 347, -1, 59, -1, -1, -1, 33, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, 364, -1,
- 366, -1, -1, -1, -1, -1, -1, 373, 374, -1,
- -1, -1, -1, 59, -1, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 93, -1, 125,
- 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 125,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 257, 258, 259, 260, -1, -1,
- 263, -1, 265, 266, 267, 268, 269, 270, 271, 272,
- -1, -1, -1, -1, -1, -1, -1, -1, 281, 282,
- -1, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, -1,
- -1, -1, -1, -1, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, -1, -1, -1, -1,
- -1, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, -1, -1, 337, 338, 339, 340, -1, -1,
- 343, 344, -1, -1, -1, -1, 91, -1, 264, -1,
- -1, -1, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, -1, -1, -1, 367, 368, 369, 370, 371, 372,
- 373, 257, 258, 259, 260, 291, -1, 263, 123, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, -1, -1, -1, 281, 282, -1, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, -1, -1, -1, -1,
- -1, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, -1, 350, -1, -1, -1, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, -1,
- -1, 337, 338, 339, 340, 0, -1, 343, 344, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, -1, -1,
- -1, 367, 368, 369, 370, 371, 372, 373, 33, -1,
- -1, -1, -1, -1, -1, 40, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 257, 258, 59, 260, 261, -1, -1, -1,
- -1, -1, -1, -1, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, -1, -1, 283, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, 93, -1,
- -1, 96, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- 125, -1, -1, 41, -1, -1, 44, -1, -1, -1,
- 335, -1, -1, -1, -1, -1, 341, 342, -1, -1,
- 345, 59, 347, -1, -1, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, -1, 364,
- -1, 366, -1, -1, -1, -1, -1, -1, 373, 374,
- -1, 59, -1, -1, -1, 93, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 93, -1, 125, 96, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 125, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 257, 258, 259, 260, -1, -1, 263, -1,
- 265, 266, 267, 268, 269, 270, 271, 272, -1, -1,
- -1, -1, -1, -1, -1, -1, 281, 282, -1, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, -1, -1, -1,
- -1, -1, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, -1, -1, -1, -1, -1, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- -1, -1, 337, 338, 339, 340, -1, -1, 343, 344,
- -1, -1, -1, -1, -1, -1, 264, -1, -1, -1,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, -1,
- -1, -1, 367, 368, 369, 370, 371, 372, 373, 257,
- 258, 259, 260, 291, -1, 263, -1, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, -1, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, -1, -1, -1, -1, -1, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, 350, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, -1, 337,
- 338, 339, 340, 0, -1, 343, 344, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, -1, -1, 367,
- 368, 369, 370, 371, 372, 373, 33, -1, -1, -1,
- -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 93, -1, -1, 96,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, -1, -1, -1, -1, -1, -1, 125, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 33, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 93, -1, -1, 96, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 125, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 257, 258, 259, 260, -1, -1, 263, -1, 265, 266,
- 267, 268, 269, 270, 271, 272, -1, -1, -1, -1,
- -1, -1, -1, -1, 281, 282, -1, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, -1, -1, -1, -1, -1,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, -1, -1, -1, -1, -1, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, -1, -1,
- 337, 338, 339, 340, -1, -1, 343, 344, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, -1, -1, -1,
- 367, 368, 369, 370, 371, 372, 373, 257, 258, 259,
- 260, -1, -1, 263, -1, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, -1, -1, -1, -1, -1,
- -1, 281, 282, -1, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, -1, -1, -1, -1, -1, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 318, -1,
- -1, -1, -1, -1, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, -1, -1, 337, 338, 339,
- 340, 0, -1, 343, 344, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, -1, -1, -1, 367, 368, 369,
- 370, 371, 372, 373, 33, -1, -1, -1, -1, -1,
- -1, 40, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 59, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 93, -1, -1, 96, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, 125, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 33, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 59, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 93, -1, -1, 96, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 125, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 257, 258,
- 259, 260, -1, -1, 263, -1, 265, 266, 267, 268,
- 269, 270, 271, 272, -1, -1, -1, -1, -1, -1,
- -1, -1, 281, 282, -1, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, -1, -1, -1, -1, -1, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- -1, -1, -1, -1, -1, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, -1, -1, 337, 338,
- 339, 340, -1, -1, 343, 344, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, -1, -1, -1, 367, 368,
- 369, 370, 371, 372, 373, 257, 258, 259, 260, -1,
- -1, 263, -1, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, -1, -1, -1, -1, -1, -1, 281,
- 282, -1, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- -1, -1, -1, -1, -1, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, -1, -1, -1,
- -1, -1, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, -1, -1, 337, 338, 339, 340, 0,
- -1, 343, 344, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, -1, -1, -1, 367, 368, 369, 370, 371,
- 372, 373, 33, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 59, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 93, -1, -1, 96, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, 125, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 33,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 59, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 93,
- -1, -1, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 125, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 257, 258, 259, 260,
- -1, -1, 263, -1, 265, 266, 267, 268, 269, 270,
- 271, 272, -1, -1, -1, -1, -1, -1, -1, -1,
- 281, 282, -1, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, -1, -1, -1, -1, -1, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, -1, -1, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, -1, -1, 337, 338, 339, 340,
- -1, -1, 343, 344, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, -1, -1, -1, 367, 368, 369, 370,
- 371, 372, 373, 257, 258, 259, 260, -1, -1, 263,
- -1, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, -1, -1, -1, -1, -1, -1, 281, 282, -1,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, -1, -1,
- -1, -1, -1, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, -1, -1, -1, -1, -1,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, -1, -1, 337, 338, 339, 340, 0, -1, 343,
- 344, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- -1, -1, -1, 367, 368, 369, 370, 371, 372, 373,
- 33, -1, -1, -1, -1, -1, -1, 40, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 59, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 93, -1, -1, 96, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
- -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 33, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 59, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
- 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 125,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 257, 258, 259, 260, -1, -1,
- 263, -1, 265, 266, 267, 268, 269, 270, 271, 272,
- -1, -1, -1, -1, -1, -1, -1, -1, 281, 282,
- -1, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, -1,
- -1, -1, -1, -1, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, -1, -1, -1, -1,
- -1, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, -1, -1, 337, 338, 339, 340, -1, -1,
- 343, 344, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, -1, -1, -1, 367, 368, 369, 370, 371, 372,
- 373, 257, 258, 259, 260, -1, -1, 263, -1, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, -1, -1, -1, 281, 282, -1, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, -1, -1, -1, -1,
- -1, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, -1, -1, -1, -1, -1, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, -1,
- -1, 337, 338, 339, 340, 0, -1, 343, 344, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, -1, -1,
- -1, 367, 368, 369, 370, 371, 372, 373, 33, -1,
- -1, -1, -1, -1, -1, 40, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 59, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 93, -1,
- -1, 96, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- 125, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 59, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 93, -1, -1, 96, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 125, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 257, 258, 259, 260, -1, -1, 263, -1,
- 265, 266, 267, 268, 269, 270, 271, 272, -1, -1,
- -1, -1, -1, -1, -1, -1, 281, 282, -1, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, -1, -1, -1,
- -1, -1, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, -1, -1, -1, -1, -1, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- -1, -1, 337, 338, 339, 340, -1, -1, 343, 344,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, -1,
- -1, -1, 367, 368, 369, 370, 371, 372, 373, 257,
- 258, 259, 260, -1, -1, 263, -1, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, -1, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, -1, -1, -1, -1, -1, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, -1, 337,
- 338, 339, 340, 0, -1, 343, 344, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, -1, -1, 367,
- 368, 369, 370, 371, 372, 373, 33, -1, -1, -1,
- -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 93, -1, -1, 96,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, -1, -1, -1, -1, -1, -1, 125, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 33, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 93, -1, -1, 96, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 125, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 257, 258, 259, 260, -1, -1, 263, -1, 265, 266,
- 267, 268, 269, 270, 271, 272, -1, -1, -1, -1,
- -1, -1, -1, -1, 281, 282, -1, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, -1, -1, -1, -1, -1,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, -1, -1, -1, -1, -1, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, -1, -1,
- 337, 338, 339, 340, -1, -1, 343, 344, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, -1, -1, -1,
- 367, 368, 369, 370, 371, 372, 373, 257, 258, 259,
- 260, -1, -1, 263, -1, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, -1, -1, -1, -1, -1,
- -1, 281, 282, -1, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, -1, -1, -1, -1, -1, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 318, -1,
- -1, -1, -1, -1, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, -1, -1, 337, 338, 339,
- 340, 0, -1, 343, 344, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, -1, -1, -1, 367, 368, 369,
- 370, 371, 372, 373, 33, -1, -1, -1, -1, -1,
- -1, 40, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 59, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 93, -1, -1, 96, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, 125, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 33, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 59, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 93, -1, -1, 96, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 125, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 257, 258,
- 259, 260, -1, -1, 263, -1, 265, 266, 267, 268,
- 269, 270, 271, 272, -1, -1, -1, -1, -1, -1,
- -1, -1, 281, 282, -1, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, -1, -1, -1, -1, -1, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- -1, -1, -1, -1, -1, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, -1, -1, 337, 338,
- 339, 340, -1, -1, 343, 344, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, -1, -1, -1, 367, 368,
- 369, 370, 371, 372, 373, 257, 258, 259, 260, -1,
- -1, 263, -1, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, -1, -1, -1, -1, -1, -1, 281,
- 282, -1, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- -1, -1, -1, -1, -1, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, -1, -1, -1,
- -1, -1, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, -1, -1, 337, 338, 339, 340, 0,
- -1, 343, 344, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, -1, -1, -1, 367, 368, 369, 370, 371,
- 372, 373, 33, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, 44, 45, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 59, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, 125, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 33,
- -1, -1, -1, -1, -1, -1, 40, 41, -1, 43,
- 44, 45, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 59, -1, -1, 62, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 93,
- -1, -1, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 125, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 258, 259, 260,
- -1, -1, -1, -1, 265, 266, 267, -1, 269, 270,
- 271, 272, -1, -1, -1, -1, -1, -1, -1, -1,
- 281, 282, -1, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, -1, -1, -1, -1, -1, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, -1, -1, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, -1, -1, 337, 338, 339, 340,
- -1, -1, 343, 344, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, -1, -1, -1, 367, 368, 369, 370,
- 371, 372, 373, 257, 258, 259, 260, -1, -1, 263,
- -1, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, -1, -1, -1, -1, -1, -1, 281, 282, -1,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 0, -1,
- -1, -1, 306, 307, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 33, -1, -1, -1, -1, -1, -1, 40, 343,
- 344, 43, -1, 45, 46, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 59, -1, -1,
- -1, -1, -1, 367, 368, 369, 370, 371, 372, 373,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 93, 0, -1, 96, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 125, -1, 33, -1, -1, -1, -1,
- -1, -1, 40, 41, -1, -1, 44, 45, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 59, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 0, -1, -1, -1, 93, -1, -1, 96, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 33, -1, -1, 125, -1, -1,
- -1, 40, 41, -1, -1, 44, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 59, 60, -1, 62, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 257, 258, 259, 260, -1,
- -1, 263, -1, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, -1, 93, -1, -1, 96, -1, 281,
- 282, -1, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- -1, -1, -1, -1, 0, 307, 125, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, -1, -1, -1, -1, 33, -1, -1,
- -1, 343, 344, -1, 40, -1, -1, -1, -1, 257,
- 258, 259, 260, -1, -1, 263, -1, 265, 266, 267,
- 268, 269, 270, 59, -1, 367, 368, 369, 370, 371,
- 372, 373, -1, 281, 282, -1, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, -1, -1, -1, 93, -1, 307,
- 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, -1, 125,
- -1, -1, -1, -1, -1, 343, 344, -1, 257, 258,
- 259, 260, -1, -1, 263, -1, -1, -1, -1, 268,
- -1, -1, 271, 272, -1, -1, -1, 0, -1, 367,
- 368, 369, 370, 371, 372, 373, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- -1, -1, -1, -1, -1, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 59, -1, 337, 338,
- 339, 340, -1, -1, -1, -1, -1, -1, -1, -1,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, -1, -1, -1, -1, -1,
- 93, -1, -1, -1, 373, -1, -1, -1, -1, -1,
- -1, 257, 258, 259, 260, -1, -1, 263, -1, -1,
- -1, -1, 268, -1, -1, 271, 272, -1, -1, -1,
- -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, -1, -1, -1, -1, -1, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 0,
- -1, 337, 338, 339, 340, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, -1, -1,
- -1, -1, 33, -1, -1, -1, -1, 373, -1, 40,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 59, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
- -1, -1, 265, 266, 267, -1, 269, 270, 271, 272,
- -1, -1, 93, -1, -1, 96, -1, -1, 281, 282,
- -1, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 0, -1, -1, -1, 125, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 343, 344, -1, -1, -1, -1, -1, 0, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
- -1, -1, -1, -1, 367, 368, 369, 370, 371, 372,
- 373, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 37, -1, -1, -1, 41, 42,
- 43, 44, 45, 93, 47, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 59, 60, -1, 62,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 0, -1, -1, -1, 125, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 257, 258, 259, 260,
- 93, -1, 263, -1, -1, -1, -1, 268, -1, -1,
- 271, 272, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
- 59, -1, -1, -1, -1, 0, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, -1, -1, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 93, -1, 337, 338, 339, 340,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, -1, 59, -1, 125, -1, -1, 0,
- -1, -1, 373, -1, -1, -1, -1, -1, -1, -1,
- 260, -1, -1, -1, -1, 265, 266, 267, -1, 269,
- 270, 271, 272, -1, -1, -1, -1, -1, 93, -1,
- -1, 281, 282, -1, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, -1, -1, -1, -1, -1, 59, -1,
- 125, 264, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 291, -1,
- -1, -1, 93, 343, 344, -1, -1, -1, -1, 302,
- -1, -1, 305, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 367, 368, 369,
- 370, 371, 372, 373, 125, 0, -1, -1, -1, -1,
- -1, 260, -1, -1, -1, -1, 265, 266, 267, -1,
- 269, 270, 271, 272, -1, -1, 349, 350, 351, 352,
- 353, 354, 281, 282, -1, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 59, -1, -1, -1, -1, 0,
- -1, -1, -1, -1, -1, 260, -1, -1, -1, -1,
- 265, 266, 267, -1, 269, 270, 271, 272, -1, -1,
- -1, -1, -1, -1, 343, 344, 281, 282, 93, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, -1, 367, 368,
- 369, 370, 371, 372, 373, -1, -1, -1, 59, -1,
- 125, -1, -1, 0, -1, -1, -1, -1, -1, 260,
- -1, -1, -1, -1, 265, 266, 267, -1, 269, 270,
- 271, 272, -1, -1, -1, -1, -1, -1, 343, 344,
- 281, 282, 93, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, -1, 367, 368, 369, 370, 371, 372, 373, -1,
- -1, -1, 59, -1, 125, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 343, 344, -1, -1, 93, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 367, 368, 369, 370,
- 371, 372, 373, -1, -1, -1, -1, -1, 125, -1,
- -1, -1, -1, -1, -1, 260, -1, -1, -1, -1,
- 265, 266, 267, -1, 269, 270, 271, 272, -1, -1,
- -1, -1, -1, -1, -1, -1, 281, 282, -1, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 260,
- -1, -1, -1, -1, 265, 266, 267, -1, 269, 270,
- 271, 272, -1, -1, -1, -1, -1, -1, 343, 344,
- 281, 282, -1, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, -1, 367, 368, 369, 370, 371, 372, 373, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 260, -1, -1, -1, -1, 265, 266,
- 267, -1, 269, 270, 271, 272, -1, -1, -1, -1,
- -1, -1, 343, 344, 281, 282, 0, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, -1, 367, 368, 369, 370,
- 371, 372, 373, -1, -1, -1, -1, -1, -1, 33,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 59, 343, 344, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 367, 368, 369, 370, 371, 372, 373, -1, -1, 93,
- -1, -1, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 43,
- -1, 45, 46, -1, -1, -1, -1, -1, -1, -1,
- -1, 125, -1, -1, -1, 59, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 93,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 125, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 33, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, 45, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 257, 258, 259, -1, -1, -1, 263,
- -1, 265, 266, 267, 268, 269, 270, 271, 272, 91,
- -1, -1, -1, -1, 96, -1, -1, 281, 282, -1,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, -1, -1,
- -1, 123, -1, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, -1, -1, -1, -1, -1,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, -1, -1, 337, 338, 339, 340, 271, 272, 343,
- 344, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- -1, -1, -1, 367, 368, 369, 370, 371, 372, -1,
- -1, -1, -1, -1, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 337, 338, 339, 340, 33, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, 45,
- -1, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- -1, -1, -1, -1, -1, 257, 258, 259, 260, 261,
- -1, 263, -1, -1, -1, -1, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, -1,
- -1, 283, -1, -1, -1, 91, -1, -1, -1, -1,
- 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, 123, -1, -1,
- -1, -1, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, -1, 337, 338, 339, 340, 341,
- 342, -1, -1, 345, -1, 347, -1, -1, -1, -1,
- -1, -1, -1, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 33, 366, -1, -1, -1, -1, -1,
- 40, 373, 374, -1, -1, 45, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 96, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, 259, 260, 261, -1, 263, -1, -1,
- -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, -1, -1, 283, -1, -1,
- 33, -1, -1, -1, -1, -1, -1, 40, 41, -1,
- -1, -1, 45, -1, -1, -1, -1, -1, -1, -1,
- -1, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, -1, -1, -1, -1, -1, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- -1, 337, 338, 339, 340, 341, 342, -1, -1, 345,
- -1, 347, -1, 96, -1, -1, -1, -1, -1, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, -1,
- 366, -1, -1, -1, -1, -1, -1, 373, 374, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
- 260, -1, -1, 263, -1, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, -1, -1, -1, -1, -1,
- -1, 281, 282, -1, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, -1, -1, -1, -1, -1, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 318, -1,
- -1, -1, -1, -1, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, 33, -1, 337, 338, 339,
- 340, -1, 40, 343, 344, -1, -1, 45, 46, -1,
- -1, -1, -1, -1, -1, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, -1, -1, -1, 367, 368, 369,
- 370, 371, 372, 373, 257, 258, 259, 260, -1, -1,
- 263, -1, -1, -1, -1, 268, -1, -1, 271, 272,
- -1, -1, -1, -1, -1, -1, -1, -1, 96, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, -1, -1, -1, -1,
- -1, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 33, -1, 337, 338, 339, 340, -1, 40,
- -1, -1, -1, -1, 45, -1, -1, -1, -1, -1,
- -1, -1, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 373, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 96, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
- 258, 259, 260, -1, -1, 263, -1, -1, -1, -1,
- 268, -1, -1, 271, 272, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, 45, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, 96, 337,
- 338, 339, 340, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 373, 257, 258, 259, 260,
- -1, -1, 263, -1, -1, -1, -1, 268, -1, -1,
- 271, 272, 33, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, 45, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, -1, -1, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, -1, 96, 337, 338, 339, 340,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 373, -1, -1, -1, -1, -1, -1, 257,
- 258, 259, 260, -1, -1, 263, -1, -1, -1, -1,
- 268, -1, -1, 271, 272, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, 45, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, 96, 337,
- 338, 339, 340, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 373, 257, 258, 259, 260,
- -1, -1, 263, -1, -1, -1, -1, 268, -1, -1,
- 271, 272, 33, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, 45, 46, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, -1, -1, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, -1, 96, 337, 338, 339, 340,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 373, -1, -1, -1, -1, -1, -1, 257,
- 258, 259, 260, -1, -1, 263, -1, -1, -1, -1,
- 268, -1, -1, 271, 272, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, 42, -1, -1, 45, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, 96, 337,
- 338, 339, 340, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 373, 257, 258, 259, -1,
- -1, -1, 263, -1, -1, -1, -1, 268, -1, -1,
- 271, 272, 33, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, 45, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, -1, -1, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, -1, 96, 337, 338, 339, 340,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
- 258, 259, -1, -1, -1, 263, -1, -1, -1, -1,
- 268, -1, -1, 271, 272, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, 45, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, 96, 337,
- 338, 339, 340, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 257, 258, 259, -1,
- -1, -1, 263, -1, -1, -1, -1, 268, -1, -1,
- 271, 272, 33, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, 45, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, -1, -1, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, -1, 96, 337, 338, 339, 340,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
- 258, 259, -1, -1, -1, 263, -1, -1, -1, -1,
- 268, -1, -1, 271, 272, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, 45, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, 96, 337,
- 338, 339, 340, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 257, 258, 259, -1,
- -1, -1, 263, -1, -1, -1, -1, 268, -1, -1,
- 271, 272, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 59, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- 91, -1, -1, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, -1, -1, 337, 338, 339, 340,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 123, -1, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
- 258, 259, -1, -1, -1, 263, -1, -1, -1, -1,
- 268, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, -1, 337,
- 338, 339, 340, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 257, 258, -1, 260,
- 261, -1, -1, -1, -1, -1, -1, -1, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- -1, -1, 283, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 335, -1, -1, -1, -1, -1,
- 341, 342, -1, -1, 345, -1, 347, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 364, -1, 366, -1, -1, -1, -1,
- -1, -1, 373, 374,
-};
-#define YYFINAL 2
-#ifndef YYDEBUG
-#define YYDEBUG 0
-#endif
-#define YYMAXTOKEN 376
-#if YYDEBUG
-char *yyname[] = {
-"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-"'!'",0,0,0,"'%'",0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,
-0,0,0,0,0,"':'","';'","'<'","'='","'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,"'['",0,"']'","'^'",0,"'`'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"LABEL","VARIABLE","NUMBER",
-"TEXT","COMMAND_LINE","DELIMITED","ORDINAL","TH","LEFT_ARROW_HEAD",
-"RIGHT_ARROW_HEAD","DOUBLE_ARROW_HEAD","LAST","UP","DOWN","LEFT","RIGHT","BOX",
-"CIRCLE","ELLIPSE","ARC","LINE","ARROW","MOVE","SPLINE","HEIGHT","RADIUS",
-"FIGNAME","WIDTH","DIAMETER","FROM","TO","AT","WITH","BY","THEN","SOLID",
-"DOTTED","DASHED","CHOP","SAME","INVISIBLE","LJUST","RJUST","ABOVE","BELOW",
-"OF","THE","WAY","BETWEEN","AND","HERE","DOT_N","DOT_E","DOT_W","DOT_S",
-"DOT_NE","DOT_SE","DOT_NW","DOT_SW","DOT_C","DOT_START","DOT_END","DOT_X",
-"DOT_Y","DOT_HT","DOT_WID","DOT_RAD","SIN","COS","ATAN2","LOG","EXP","SQRT",
-"K_MAX","K_MIN","INT","RAND","SRAND","COPY","THRU","TOP","BOTTOM","UPPER",
-"LOWER","SH","PRINT","CW","CCW","FOR","DO","IF","ELSE","ANDAND","OROR",
-"NOTEQUAL","EQUALEQUAL","LESSEQUAL","GREATEREQUAL","LEFT_CORNER","RIGHT_CORNER",
-"NORTH","SOUTH","EAST","WEST","CENTER","END","START","RESET","UNTIL","PLOT",
-"THICKNESS","FILL","COLORED","OUTLINED","SHADED","ALIGNED","SPRINTF","COMMAND",
-"DEFINE","UNDEF",
-};
-char *yyrule[] = {
-"$accept : top",
-"top : optional_separator",
-"top : element_list",
-"element_list : optional_separator middle_element_list optional_separator",
-"middle_element_list : element",
-"middle_element_list : middle_element_list separator element",
-"optional_separator :",
-"optional_separator : separator",
-"separator : ';'",
-"separator : separator ';'",
-"placeless_element : FIGNAME '=' macro_name",
-"placeless_element : VARIABLE '=' any_expr",
-"placeless_element : VARIABLE ':' '=' any_expr",
-"placeless_element : UP",
-"placeless_element : DOWN",
-"placeless_element : LEFT",
-"placeless_element : RIGHT",
-"placeless_element : COMMAND_LINE",
-"placeless_element : COMMAND print_args",
-"placeless_element : PRINT print_args",
-"$$1 :",
-"placeless_element : SH $$1 DELIMITED",
-"placeless_element : COPY TEXT",
-"$$2 :",
-"$$3 :",
-"placeless_element : COPY TEXT THRU $$2 DELIMITED $$3 until",
-"$$4 :",
-"$$5 :",
-"placeless_element : COPY THRU $$4 DELIMITED $$5 until",
-"$$6 :",
-"placeless_element : FOR VARIABLE '=' expr TO expr optional_by DO $$6 DELIMITED",
-"placeless_element : simple_if",
-"$$7 :",
-"placeless_element : simple_if ELSE $$7 DELIMITED",
-"placeless_element : reset_variables",
-"placeless_element : RESET",
-"macro_name : VARIABLE",
-"macro_name : LABEL",
-"reset_variables : RESET VARIABLE",
-"reset_variables : reset_variables VARIABLE",
-"reset_variables : reset_variables ',' VARIABLE",
-"print_args : print_arg",
-"print_args : print_args print_arg",
-"print_arg : expr",
-"print_arg : text",
-"print_arg : position",
-"$$8 :",
-"simple_if : IF any_expr THEN $$8 DELIMITED",
-"until :",
-"until : UNTIL TEXT",
-"any_expr : expr",
-"any_expr : text_expr",
-"text_expr : text EQUALEQUAL text",
-"text_expr : text NOTEQUAL text",
-"text_expr : text_expr ANDAND text_expr",
-"text_expr : text_expr ANDAND expr",
-"text_expr : expr ANDAND text_expr",
-"text_expr : text_expr OROR text_expr",
-"text_expr : text_expr OROR expr",
-"text_expr : expr OROR text_expr",
-"text_expr : '!' text_expr",
-"optional_by :",
-"optional_by : BY expr",
-"optional_by : BY '*' expr",
-"element : object_spec",
-"element : LABEL ':' optional_separator element",
-"element : LABEL ':' optional_separator position_not_place",
-"element : LABEL ':' optional_separator place",
-"$$9 :",
-"$$10 :",
-"element : '{' $$9 element_list '}' $$10 optional_element",
-"element : placeless_element",
-"optional_element :",
-"optional_element : element",
-"object_spec : BOX",
-"object_spec : CIRCLE",
-"object_spec : ELLIPSE",
-"object_spec : ARC",
-"object_spec : LINE",
-"object_spec : ARROW",
-"object_spec : MOVE",
-"object_spec : SPLINE",
-"object_spec : text",
-"object_spec : PLOT expr",
-"object_spec : PLOT expr text",
-"$$11 :",
-"object_spec : '[' $$11 element_list ']'",
-"object_spec : object_spec HEIGHT expr",
-"object_spec : object_spec RADIUS expr",
-"object_spec : object_spec WIDTH expr",
-"object_spec : object_spec DIAMETER expr",
-"object_spec : object_spec expr",
-"object_spec : object_spec UP",
-"object_spec : object_spec UP expr",
-"object_spec : object_spec DOWN",
-"object_spec : object_spec DOWN expr",
-"object_spec : object_spec RIGHT",
-"object_spec : object_spec RIGHT expr",
-"object_spec : object_spec LEFT",
-"object_spec : object_spec LEFT expr",
-"object_spec : object_spec FROM position",
-"object_spec : object_spec TO position",
-"object_spec : object_spec AT position",
-"object_spec : object_spec WITH path",
-"object_spec : object_spec WITH position",
-"object_spec : object_spec BY expr_pair",
-"object_spec : object_spec THEN",
-"object_spec : object_spec SOLID",
-"object_spec : object_spec DOTTED",
-"object_spec : object_spec DOTTED expr",
-"object_spec : object_spec DASHED",
-"object_spec : object_spec DASHED expr",
-"object_spec : object_spec FILL",
-"object_spec : object_spec FILL expr",
-"object_spec : object_spec SHADED text",
-"object_spec : object_spec COLORED text",
-"object_spec : object_spec OUTLINED text",
-"object_spec : object_spec CHOP",
-"object_spec : object_spec CHOP expr",
-"object_spec : object_spec SAME",
-"object_spec : object_spec INVISIBLE",
-"object_spec : object_spec LEFT_ARROW_HEAD",
-"object_spec : object_spec RIGHT_ARROW_HEAD",
-"object_spec : object_spec DOUBLE_ARROW_HEAD",
-"object_spec : object_spec CW",
-"object_spec : object_spec CCW",
-"object_spec : object_spec text",
-"object_spec : object_spec LJUST",
-"object_spec : object_spec RJUST",
-"object_spec : object_spec ABOVE",
-"object_spec : object_spec BELOW",
-"object_spec : object_spec THICKNESS expr",
-"object_spec : object_spec ALIGNED",
-"text : TEXT",
-"text : SPRINTF '(' TEXT sprintf_args ')'",
-"sprintf_args :",
-"sprintf_args : sprintf_args ',' expr",
-"position : position_not_place",
-"position : place",
-"position_not_place : expr_pair",
-"position_not_place : position '+' expr_pair",
-"position_not_place : position '-' expr_pair",
-"position_not_place : '(' position ',' position ')'",
-"position_not_place : expr between position AND position",
-"position_not_place : expr '<' position ',' position '>'",
-"between : BETWEEN",
-"between : OF THE WAY BETWEEN",
-"expr_pair : expr ',' expr",
-"expr_pair : '(' expr_pair ')'",
-"place : label",
-"place : label corner",
-"place : corner label",
-"place : corner OF label",
-"place : HERE",
-"label : LABEL",
-"label : nth_primitive",
-"label : label '.' LABEL",
-"ordinal : ORDINAL",
-"ordinal : '`' any_expr TH",
-"optional_ordinal_last : LAST",
-"optional_ordinal_last : ordinal LAST",
-"nth_primitive : ordinal object_type",
-"nth_primitive : optional_ordinal_last object_type",
-"object_type : BOX",
-"object_type : CIRCLE",
-"object_type : ELLIPSE",
-"object_type : ARC",
-"object_type : LINE",
-"object_type : ARROW",
-"object_type : SPLINE",
-"object_type : '[' ']'",
-"object_type : TEXT",
-"label_path : '.' LABEL",
-"label_path : label_path '.' LABEL",
-"relative_path : corner",
-"relative_path : label_path",
-"relative_path : label_path corner",
-"path : relative_path",
-"path : '(' relative_path ',' relative_path ')'",
-"path : ORDINAL LAST object_type relative_path",
-"path : LAST object_type relative_path",
-"path : ORDINAL object_type relative_path",
-"path : LABEL relative_path",
-"corner : DOT_N",
-"corner : DOT_E",
-"corner : DOT_W",
-"corner : DOT_S",
-"corner : DOT_NE",
-"corner : DOT_SE",
-"corner : DOT_NW",
-"corner : DOT_SW",
-"corner : DOT_C",
-"corner : DOT_START",
-"corner : DOT_END",
-"corner : TOP",
-"corner : BOTTOM",
-"corner : LEFT",
-"corner : RIGHT",
-"corner : UPPER LEFT",
-"corner : LOWER LEFT",
-"corner : UPPER RIGHT",
-"corner : LOWER RIGHT",
-"corner : LEFT_CORNER",
-"corner : RIGHT_CORNER",
-"corner : UPPER LEFT_CORNER",
-"corner : LOWER LEFT_CORNER",
-"corner : UPPER RIGHT_CORNER",
-"corner : LOWER RIGHT_CORNER",
-"corner : NORTH",
-"corner : SOUTH",
-"corner : EAST",
-"corner : WEST",
-"corner : CENTER",
-"corner : START",
-"corner : END",
-"expr : VARIABLE",
-"expr : NUMBER",
-"expr : place DOT_X",
-"expr : place DOT_Y",
-"expr : place DOT_HT",
-"expr : place DOT_WID",
-"expr : place DOT_RAD",
-"expr : expr '+' expr",
-"expr : expr '-' expr",
-"expr : expr '*' expr",
-"expr : expr '/' expr",
-"expr : expr '%' expr",
-"expr : expr '^' expr",
-"expr : '-' expr",
-"expr : '(' any_expr ')'",
-"expr : SIN '(' any_expr ')'",
-"expr : COS '(' any_expr ')'",
-"expr : ATAN2 '(' any_expr ',' any_expr ')'",
-"expr : LOG '(' any_expr ')'",
-"expr : EXP '(' any_expr ')'",
-"expr : SQRT '(' any_expr ')'",
-"expr : K_MAX '(' any_expr ',' any_expr ')'",
-"expr : K_MIN '(' any_expr ',' any_expr ')'",
-"expr : INT '(' any_expr ')'",
-"expr : RAND '(' any_expr ')'",
-"expr : RAND '(' ')'",
-"expr : SRAND '(' any_expr ')'",
-"expr : expr '<' expr",
-"expr : expr LESSEQUAL expr",
-"expr : expr '>' expr",
-"expr : expr GREATEREQUAL expr",
-"expr : expr EQUALEQUAL expr",
-"expr : expr NOTEQUAL expr",
-"expr : expr ANDAND expr",
-"expr : expr OROR expr",
-"expr : '!' expr",
-};
-#endif
-#ifdef YYSTACKSIZE
-#undef YYMAXDEPTH
-#define YYMAXDEPTH YYSTACKSIZE
-#else
-#ifdef YYMAXDEPTH
-#define YYSTACKSIZE YYMAXDEPTH
-#else
-#define YYSTACKSIZE 500
-#define YYMAXDEPTH 500
-#endif
-#endif
-int yydebug;
-int yynerrs;
-int yyerrflag;
-int yychar;
-short *yyssp;
-YYSTYPE *yyvsp;
-YYSTYPE yyval;
-YYSTYPE yylval;
-short yyss[YYSTACKSIZE];
-YYSTYPE yyvs[YYSTACKSIZE];
-#define yystacksize YYSTACKSIZE
-#line 1610 "pic.y"
-
-/* bison defines const to be empty unless __STDC__ is defined, which it
-isn't under cfront */
-
-#ifdef const
-#undef const
-#endif
-
-static struct {
- const char *name;
- double val;
- int scaled; // non-zero if val should be multiplied by scale
-} defaults_table[] = {
- { "arcrad", .25, 1 },
- { "arrowht", .1, 1 },
- { "arrowwid", .05, 1 },
- { "circlerad", .25, 1 },
- { "boxht", .5, 1 },
- { "boxwid", .75, 1 },
- { "boxrad", 0.0, 1 },
- { "dashwid", .05, 1 },
- { "ellipseht", .5, 1 },
- { "ellipsewid", .75, 1 },
- { "moveht", .5, 1 },
- { "movewid", .5, 1 },
- { "lineht", .5, 1 },
- { "linewid", .5, 1 },
- { "textht", 0.0, 1 },
- { "textwid", 0.0, 1 },
- { "scale", 1.0, 0 },
- { "linethick", -1.0, 0 }, // in points
- { "fillval", .5, 0 },
- { "arrowhead", 1.0, 0 },
- { "maxpswid", 8.5, 0 },
- { "maxpsht", 11.0, 0 },
-};
-
-place *lookup_label(const char *label)
-{
- saved_state *state = current_saved_state;
- PTABLE(place) *tbl = current_table;
- for (;;) {
- place *pl = tbl->lookup(label);
- if (pl)
- return pl;
- if (!state)
- return 0;
- tbl = state->tbl;
- state = state->prev;
- }
-}
-
-void define_label(const char *label, const place *pl)
-{
- place *p = new place[1];
- *p = *pl;
- current_table->define(label, p);
-}
-
-int lookup_variable(const char *name, double *val)
-{
- place *pl = lookup_label(name);
- if (pl) {
- *val = pl->x;
- return 1;
- }
- return 0;
-}
-
-void define_variable(const char *name, double val)
-{
- place *p = new place[1];
- p->obj = 0;
- p->x = val;
- p->y = 0.0;
- current_table->define(name, p);
- if (strcmp(name, "scale") == 0) {
- // When the scale changes, reset all scaled pre-defined variables to
- // their default values.
- for (unsigned int i = 0;
- i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
- if (defaults_table[i].scaled)
- define_variable(defaults_table[i].name, val*defaults_table[i].val);
- }
-}
-
-// called once only (not once per parse)
-
-void parse_init()
-{
- current_direction = RIGHT_DIRECTION;
- current_position.x = 0.0;
- current_position.y = 0.0;
- // This resets everything to its default value.
- reset_all();
-}
-
-void reset(const char *nm)
-{
- for (unsigned int i = 0;
- i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
- if (strcmp(nm, defaults_table[i].name) == 0) {
- double val = defaults_table[i].val;
- if (defaults_table[i].scaled) {
- double scale;
- lookup_variable("scale", &scale);
- val *= scale;
- }
- define_variable(defaults_table[i].name, val);
- return;
- }
- lex_error("`%1' is not a predefined variable", nm);
-}
-
-void reset_all()
-{
- // We only have to explicitly reset the pre-defined variables that
- // aren't scaled because `scale' is not scaled, and changing the
- // value of `scale' will reset all the pre-defined variables that
- // are scaled.
- for (unsigned int i = 0;
- i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
- if (!defaults_table[i].scaled)
- define_variable(defaults_table[i].name, defaults_table[i].val);
-}
-
-// called after each parse
-
-void parse_cleanup()
-{
- while (current_saved_state != 0) {
- delete current_table;
- current_table = current_saved_state->tbl;
- saved_state *tem = current_saved_state;
- current_saved_state = current_saved_state->prev;
- delete tem;
- }
- assert(current_table == &top_table);
- PTABLE_ITERATOR(place) iter(current_table);
- const char *key;
- place *pl;
- while (iter.next(&key, &pl))
- if (pl->obj != 0) {
- position pos = pl->obj->origin();
- pl->obj = 0;
- pl->x = pos.x;
- pl->y = pos.y;
- }
- while (olist.head != 0) {
- object *tem = olist.head;
- olist.head = olist.head->next;
- delete tem;
- }
- olist.tail = 0;
- current_direction = RIGHT_DIRECTION;
- current_position.x = 0.0;
- current_position.y = 0.0;
-}
-
-const char *ordinal_postfix(int n)
-{
- if (n < 10 || n > 20)
- switch (n % 10) {
- case 1:
- return "st";
- case 2:
- return "nd";
- case 3:
- return "rd";
- }
- return "th";
-}
-
-const char *object_type_name(object_type type)
-{
- switch (type) {
- case BOX_OBJECT:
- return "box";
- case CIRCLE_OBJECT:
- return "circle";
- case ELLIPSE_OBJECT:
- return "ellipse";
- case ARC_OBJECT:
- return "arc";
- case SPLINE_OBJECT:
- return "spline";
- case LINE_OBJECT:
- return "line";
- case ARROW_OBJECT:
- return "arrow";
- case MOVE_OBJECT:
- return "move";
- case TEXT_OBJECT:
- return "\"\"";
- case BLOCK_OBJECT:
- return "[]";
- case OTHER_OBJECT:
- case MARK_OBJECT:
- default:
- break;
- }
- return "object";
-}
-
-static char sprintf_buf[1024];
-
-char *format_number(const char *form, double n)
-{
- if (form == 0)
- form = "%g";
- return do_sprintf(form, &n, 1);
-}
-
-char *do_sprintf(const char *form, const double *v, int nv)
-{
- string result;
- int i = 0;
- string one_format;
- while (*form) {
- if (*form == '%') {
- one_format += *form++;
- for (; *form != '\0' && strchr("#-+ 0123456789.", *form) != 0; form++)
- one_format += *form;
- if (*form == '\0' || strchr("eEfgG%", *form) == 0) {
- lex_error("bad sprintf format");
- result += one_format;
- result += form;
- break;
- }
- if (*form == '%') {
- one_format += *form++;
- one_format += '\0';
- snprintf(sprintf_buf, sizeof(sprintf_buf),
- "%s", one_format.contents());
- }
- else {
- if (i >= nv) {
- lex_error("too few arguments to snprintf");
- result += one_format;
- result += form;
- break;
- }
- one_format += *form++;
- one_format += '\0';
- snprintf(sprintf_buf, sizeof(sprintf_buf),
- one_format.contents(), v[i++]);
- }
- one_format.clear();
- result += sprintf_buf;
- }
- else
- result += *form++;
- }
- result += '\0';
- return strsave(result.contents());
-}
-#line 3729 "y.tab.c"
-#define YYABORT goto yyabort
-#define YYREJECT goto yyabort
-#define YYACCEPT goto yyaccept
-#define YYERROR goto yyerrlab
-int
-#if defined(__STDC__)
-yyparse(void)
-#else
-yyparse()
-#endif
-{
- register int yym, yyn, yystate;
-#if YYDEBUG
- register char *yys;
- extern char *getenv();
-
- if (yys = getenv("YYDEBUG"))
- {
- yyn = *yys;
- if (yyn >= '0' && yyn <= '9')
- yydebug = yyn - '0';
- }
-#endif
-
- yynerrs = 0;
- yyerrflag = 0;
- yychar = (-1);
-
- yyssp = yyss;
- yyvsp = yyvs;
- *yyssp = yystate = 0;
-
-yyloop:
- if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, reading %d (%s)\n",
- YYPREFIX, yystate, yychar, yys);
- }
-#endif
- }
- if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, shifting to state %d\n",
- YYPREFIX, yystate, yytable[yyn]);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- yychar = (-1);
- if (yyerrflag > 0) --yyerrflag;
- goto yyloop;
- }
- if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
- yyn = yytable[yyn];
- goto yyreduce;
- }
- if (yyerrflag) goto yyinrecovery;
-#ifdef lint
- goto yynewerror;
-#endif
-yynewerror:
- yyerror("syntax error");
-#ifdef lint
- goto yyerrlab;
-#endif
-yyerrlab:
- ++yynerrs;
-yyinrecovery:
- if (yyerrflag < 3)
- {
- yyerrflag = 3;
- for (;;)
- {
- if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, error recovery shifting\
- to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- goto yyloop;
- }
- else
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: error recovery discarding state %d\n",
- YYPREFIX, *yyssp);
-#endif
- if (yyssp <= yyss) goto yyabort;
- --yyssp;
- --yyvsp;
- }
- }
- }
- else
- {
- if (yychar == 0) goto yyabort;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
- YYPREFIX, yystate, yychar, yys);
- }
-#endif
- yychar = (-1);
- goto yyloop;
- }
-yyreduce:
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, reducing by rule %d (%s)\n",
- YYPREFIX, yystate, yyn, yyrule[yyn]);
-#endif
- yym = yylen[yyn];
- yyval = yyvsp[1-yym];
- switch (yyn)
- {
-case 2:
-#line 279 "pic.y"
-{
- if (olist.head)
- print_picture(olist.head);
- }
-break;
-case 3:
-#line 288 "pic.y"
-{ yyval.pl = yyvsp[-1].pl; }
-break;
-case 4:
-#line 293 "pic.y"
-{ yyval.pl = yyvsp[0].pl; }
-break;
-case 5:
-#line 295 "pic.y"
-{ yyval.pl = yyvsp[-2].pl; }
-break;
-case 10:
-#line 310 "pic.y"
-{
- a_delete graphname;
- graphname = new char[strlen(yyvsp[0].str) + 1];
- strcpy(graphname, yyvsp[0].str);
- a_delete yyvsp[0].str;
- }
-break;
-case 11:
-#line 318 "pic.y"
-{
- define_variable(yyvsp[-2].str, yyvsp[0].x);
- a_delete yyvsp[-2].str;
- }
-break;
-case 12:
-#line 323 "pic.y"
-{
- place *p = lookup_label(yyvsp[-3].str);
- if (!p) {
- lex_error("variable `%1' not defined", yyvsp[-3].str);
- YYABORT;
- }
- p->obj = 0;
- p->x = yyvsp[0].x;
- p->y = 0.0;
- a_delete yyvsp[-3].str;
- }
-break;
-case 13:
-#line 335 "pic.y"
-{ current_direction = UP_DIRECTION; }
-break;
-case 14:
-#line 337 "pic.y"
-{ current_direction = DOWN_DIRECTION; }
-break;
-case 15:
-#line 339 "pic.y"
-{ current_direction = LEFT_DIRECTION; }
-break;
-case 16:
-#line 341 "pic.y"
-{ current_direction = RIGHT_DIRECTION; }
-break;
-case 17:
-#line 343 "pic.y"
-{
- olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename,
- yyvsp[0].lstr.lineno));
- }
-break;
-case 18:
-#line 348 "pic.y"
-{
- olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename,
- yyvsp[0].lstr.lineno));
- }
-break;
-case 19:
-#line 353 "pic.y"
-{
- fprintf(stderr, "%s\n", yyvsp[0].lstr.str);
- a_delete yyvsp[0].lstr.str;
- fflush(stderr);
- }
-break;
-case 20:
-#line 359 "pic.y"
-{ delim_flag = 1; }
-break;
-case 21:
-#line 361 "pic.y"
-{
- delim_flag = 0;
- if (safer_flag)
- lex_error("unsafe to run command `%1'", yyvsp[0].str);
- else
- system(yyvsp[0].str);
- a_delete yyvsp[0].str;
- }
-break;
-case 22:
-#line 370 "pic.y"
-{
- if (yychar < 0)
- do_lookahead();
- do_copy(yyvsp[0].lstr.str);
- /* do not delete the filename*/
- }
-break;
-case 23:
-#line 377 "pic.y"
-{ delim_flag = 2; }
-break;
-case 24:
-#line 379 "pic.y"
-{ delim_flag = 0; }
-break;
-case 25:
-#line 381 "pic.y"
-{
- if (yychar < 0)
- do_lookahead();
- copy_file_thru(yyvsp[-5].lstr.str, yyvsp[-2].str, yyvsp[0].str);
- /* do not delete the filename*/
- a_delete yyvsp[-2].str;
- a_delete yyvsp[0].str;
- }
-break;
-case 26:
-#line 390 "pic.y"
-{ delim_flag = 2; }
-break;
-case 27:
-#line 392 "pic.y"
-{ delim_flag = 0; }
-break;
-case 28:
-#line 394 "pic.y"
-{
- if (yychar < 0)
- do_lookahead();
- copy_rest_thru(yyvsp[-2].str, yyvsp[0].str);
- a_delete yyvsp[-2].str;
- a_delete yyvsp[0].str;
- }
-break;
-case 29:
-#line 402 "pic.y"
-{ delim_flag = 1; }
-break;
-case 30:
-#line 404 "pic.y"
-{
- delim_flag = 0;
- if (yychar < 0)
- do_lookahead();
- do_for(yyvsp[-8].str, yyvsp[-6].x, yyvsp[-4].x, yyvsp[-3].by.is_multiplicative, yyvsp[-3].by.val, yyvsp[0].str);
- }
-break;
-case 31:
-#line 411 "pic.y"
-{
- if (yychar < 0)
- do_lookahead();
- if (yyvsp[0].if_data.x != 0.0)
- push_body(yyvsp[0].if_data.body);
- a_delete yyvsp[0].if_data.body;
- }
-break;
-case 32:
-#line 419 "pic.y"
-{ delim_flag = 1; }
-break;
-case 33:
-#line 421 "pic.y"
-{
- delim_flag = 0;
- if (yychar < 0)
- do_lookahead();
- if (yyvsp[-3].if_data.x != 0.0)
- push_body(yyvsp[-3].if_data.body);
- else
- push_body(yyvsp[0].str);
- a_delete yyvsp[-3].if_data.body;
- a_delete yyvsp[0].str;
- }
-break;
-case 35:
-#line 434 "pic.y"
-{ define_variable("scale", 1.0); }
-break;
-case 38:
-#line 444 "pic.y"
-{
- reset(yyvsp[0].str);
- a_delete yyvsp[0].str;
- }
-break;
-case 39:
-#line 449 "pic.y"
-{
- reset(yyvsp[0].str);
- a_delete yyvsp[0].str;
- }
-break;
-case 40:
-#line 454 "pic.y"
-{
- reset(yyvsp[0].str);
- a_delete yyvsp[0].str;
- }
-break;
-case 41:
-#line 462 "pic.y"
-{ yyval.lstr = yyvsp[0].lstr; }
-break;
-case 42:
-#line 464 "pic.y"
-{
- yyval.lstr.str = new char[strlen(yyvsp[-1].lstr.str) + strlen(yyvsp[0].lstr.str) + 1];
- strcpy(yyval.lstr.str, yyvsp[-1].lstr.str);
- strcat(yyval.lstr.str, yyvsp[0].lstr.str);
- a_delete yyvsp[-1].lstr.str;
- a_delete yyvsp[0].lstr.str;
- if (yyvsp[-1].lstr.filename) {
- yyval.lstr.filename = yyvsp[-1].lstr.filename;
- yyval.lstr.lineno = yyvsp[-1].lstr.lineno;
- }
- else if (yyvsp[0].lstr.filename) {
- yyval.lstr.filename = yyvsp[0].lstr.filename;
- yyval.lstr.lineno = yyvsp[0].lstr.lineno;
- }
- }
-break;
-case 43:
-#line 483 "pic.y"
-{
- yyval.lstr.str = new char[GDIGITS + 1];
- sprintf(yyval.lstr.str, "%g", yyvsp[0].x);
- yyval.lstr.filename = 0;
- yyval.lstr.lineno = 0;
- }
-break;
-case 44:
-#line 490 "pic.y"
-{ yyval.lstr = yyvsp[0].lstr; }
-break;
-case 45:
-#line 492 "pic.y"
-{
- yyval.lstr.str = new char[GDIGITS + 2 + GDIGITS + 1];
- sprintf(yyval.lstr.str, "%g, %g", yyvsp[0].pair.x, yyvsp[0].pair.y);
- yyval.lstr.filename = 0;
- yyval.lstr.lineno = 0;
- }
-break;
-case 46:
-#line 502 "pic.y"
-{ delim_flag = 1; }
-break;
-case 47:
-#line 504 "pic.y"
-{
- delim_flag = 0;
- yyval.if_data.x = yyvsp[-3].x;
- yyval.if_data.body = yyvsp[0].str;
- }
-break;
-case 48:
-#line 513 "pic.y"
-{ yyval.str = 0; }
-break;
-case 49:
-#line 515 "pic.y"
-{ yyval.str = yyvsp[0].lstr.str; }
-break;
-case 50:
-#line 520 "pic.y"
-{ yyval.x = yyvsp[0].x; }
-break;
-case 51:
-#line 522 "pic.y"
-{ yyval.x = yyvsp[0].x; }
-break;
-case 52:
-#line 527 "pic.y"
-{
- yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) == 0;
- a_delete yyvsp[-2].lstr.str;
- a_delete yyvsp[0].lstr.str;
- }
-break;
-case 53:
-#line 533 "pic.y"
-{
- yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) != 0;
- a_delete yyvsp[-2].lstr.str;
- a_delete yyvsp[0].lstr.str;
- }
-break;
-case 54:
-#line 539 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
-break;
-case 55:
-#line 541 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
-break;
-case 56:
-#line 543 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
-break;
-case 57:
-#line 545 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
-break;
-case 58:
-#line 547 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
-break;
-case 59:
-#line 549 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
-break;
-case 60:
-#line 551 "pic.y"
-{ yyval.x = (yyvsp[0].x == 0.0); }
-break;
-case 61:
-#line 557 "pic.y"
-{
- yyval.by.val = 1.0;
- yyval.by.is_multiplicative = 0;
- }
-break;
-case 62:
-#line 562 "pic.y"
-{
- yyval.by.val = yyvsp[0].x;
- yyval.by.is_multiplicative = 0;
- }
-break;
-case 63:
-#line 567 "pic.y"
-{
- yyval.by.val = yyvsp[0].x;
- yyval.by.is_multiplicative = 1;
- }
-break;
-case 64:
-#line 575 "pic.y"
-{
- yyval.pl.obj = yyvsp[0].spec->make_object(&current_position,
- &current_direction);
- if (yyval.pl.obj == 0)
- YYABORT;
- delete yyvsp[0].spec;
- if (yyval.pl.obj)
- olist.append(yyval.pl.obj);
- else {
- yyval.pl.x = current_position.x;
- yyval.pl.y = current_position.y;
- }
- }
-break;
-case 65:
-#line 589 "pic.y"
-{
- yyval.pl = yyvsp[0].pl;
- define_label(yyvsp[-3].str, & yyval.pl);
- a_delete yyvsp[-3].str;
- }
-break;
-case 66:
-#line 595 "pic.y"
-{
- yyval.pl.obj = 0;
- yyval.pl.x = yyvsp[0].pair.x;
- yyval.pl.y = yyvsp[0].pair.y;
- define_label(yyvsp[-3].str, & yyval.pl);
- a_delete yyvsp[-3].str;
- }
-break;
-case 67:
-#line 603 "pic.y"
-{
- yyval.pl = yyvsp[0].pl;
- define_label(yyvsp[-3].str, & yyval.pl);
- a_delete yyvsp[-3].str;
- }
-break;
-case 68:
-#line 609 "pic.y"
-{
- yyval.state.x = current_position.x;
- yyval.state.y = current_position.y;
- yyval.state.dir = current_direction;
- }
-break;
-case 69:
-#line 615 "pic.y"
-{
- current_position.x = yyvsp[-2].state.x;
- current_position.y = yyvsp[-2].state.y;
- current_direction = yyvsp[-2].state.dir;
- }
-break;
-case 70:
-#line 621 "pic.y"
-{
- yyval.pl = yyvsp[-3].pl;
- }
-break;
-case 71:
-#line 625 "pic.y"
-{
- yyval.pl.obj = 0;
- yyval.pl.x = current_position.x;
- yyval.pl.y = current_position.y;
- }
-break;
-case 72:
-#line 634 "pic.y"
-{}
-break;
-case 73:
-#line 636 "pic.y"
-{}
-break;
-case 74:
-#line 641 "pic.y"
-{ yyval.spec = new object_spec(BOX_OBJECT); }
-break;
-case 75:
-#line 643 "pic.y"
-{ yyval.spec = new object_spec(CIRCLE_OBJECT); }
-break;
-case 76:
-#line 645 "pic.y"
-{ yyval.spec = new object_spec(ELLIPSE_OBJECT); }
-break;
-case 77:
-#line 647 "pic.y"
-{
- yyval.spec = new object_spec(ARC_OBJECT);
- yyval.spec->dir = current_direction;
- }
-break;
-case 78:
-#line 652 "pic.y"
-{
- yyval.spec = new object_spec(LINE_OBJECT);
- lookup_variable("lineht", & yyval.spec->segment_height);
- lookup_variable("linewid", & yyval.spec->segment_width);
- yyval.spec->dir = current_direction;
- }
-break;
-case 79:
-#line 659 "pic.y"
-{
- yyval.spec = new object_spec(ARROW_OBJECT);
- lookup_variable("lineht", & yyval.spec->segment_height);
- lookup_variable("linewid", & yyval.spec->segment_width);
- yyval.spec->dir = current_direction;
- }
-break;
-case 80:
-#line 666 "pic.y"
-{
- yyval.spec = new object_spec(MOVE_OBJECT);
- lookup_variable("moveht", & yyval.spec->segment_height);
- lookup_variable("movewid", & yyval.spec->segment_width);
- yyval.spec->dir = current_direction;
- }
-break;
-case 81:
-#line 673 "pic.y"
-{
- yyval.spec = new object_spec(SPLINE_OBJECT);
- lookup_variable("lineht", & yyval.spec->segment_height);
- lookup_variable("linewid", & yyval.spec->segment_width);
- yyval.spec->dir = current_direction;
- }
-break;
-case 82:
-#line 680 "pic.y"
-{
- yyval.spec = new object_spec(TEXT_OBJECT);
- yyval.spec->text = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
- }
-break;
-case 83:
-#line 685 "pic.y"
-{
- yyval.spec = new object_spec(TEXT_OBJECT);
- yyval.spec->text = new text_item(format_number(0, yyvsp[0].x), 0, -1);
- }
-break;
-case 84:
-#line 690 "pic.y"
-{
- yyval.spec = new object_spec(TEXT_OBJECT);
- yyval.spec->text = new text_item(format_number(yyvsp[0].lstr.str, yyvsp[-1].x),
- yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
- a_delete yyvsp[0].lstr.str;
- }
-break;
-case 85:
-#line 697 "pic.y"
-{
- saved_state *p = new saved_state;
- yyval.pstate = p;
- p->x = current_position.x;
- p->y = current_position.y;
- p->dir = current_direction;
- p->tbl = current_table;
- p->prev = current_saved_state;
- current_position.x = 0.0;
- current_position.y = 0.0;
- current_table = new PTABLE(place);
- current_saved_state = p;
- olist.append(make_mark_object());
- }
-break;
-case 86:
-#line 712 "pic.y"
-{
- current_position.x = yyvsp[-2].pstate->x;
- current_position.y = yyvsp[-2].pstate->y;
- current_direction = yyvsp[-2].pstate->dir;
- yyval.spec = new object_spec(BLOCK_OBJECT);
- olist.wrap_up_block(& yyval.spec->oblist);
- yyval.spec->tbl = current_table;
- current_table = yyvsp[-2].pstate->tbl;
- current_saved_state = yyvsp[-2].pstate->prev;
- delete yyvsp[-2].pstate;
- }
-break;
-case 87:
-#line 724 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->height = yyvsp[0].x;
- yyval.spec->flags |= HAS_HEIGHT;
- }
-break;
-case 88:
-#line 730 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->radius = yyvsp[0].x;
- yyval.spec->flags |= HAS_RADIUS;
- }
-break;
-case 89:
-#line 736 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->width = yyvsp[0].x;
- yyval.spec->flags |= HAS_WIDTH;
- }
-break;
-case 90:
-#line 742 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->radius = yyvsp[0].x/2.0;
- yyval.spec->flags |= HAS_RADIUS;
- }
-break;
-case 91:
-#line 748 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= HAS_SEGMENT;
- switch (yyval.spec->dir) {
- case UP_DIRECTION:
- yyval.spec->segment_pos.y += yyvsp[0].x;
- break;
- case DOWN_DIRECTION:
- yyval.spec->segment_pos.y -= yyvsp[0].x;
- break;
- case RIGHT_DIRECTION:
- yyval.spec->segment_pos.x += yyvsp[0].x;
- break;
- case LEFT_DIRECTION:
- yyval.spec->segment_pos.x -= yyvsp[0].x;
- break;
- }
- }
-break;
-case 92:
-#line 767 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->dir = UP_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.y += yyval.spec->segment_height;
- }
-break;
-case 93:
-#line 774 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->dir = UP_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.y += yyvsp[0].x;
- }
-break;
-case 94:
-#line 781 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->dir = DOWN_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.y -= yyval.spec->segment_height;
- }
-break;
-case 95:
-#line 788 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->dir = DOWN_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.y -= yyvsp[0].x;
- }
-break;
-case 96:
-#line 795 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->dir = RIGHT_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x += yyval.spec->segment_width;
- }
-break;
-case 97:
-#line 802 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->dir = RIGHT_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x += yyvsp[0].x;
- }
-break;
-case 98:
-#line 809 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->dir = LEFT_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x -= yyval.spec->segment_width;
- }
-break;
-case 99:
-#line 816 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->dir = LEFT_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x -= yyvsp[0].x;
- }
-break;
-case 100:
-#line 823 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_FROM;
- yyval.spec->from.x = yyvsp[0].pair.x;
- yyval.spec->from.y = yyvsp[0].pair.y;
- }
-break;
-case 101:
-#line 830 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- if (yyval.spec->flags & HAS_SEGMENT)
- yyval.spec->segment_list = new segment(yyval.spec->segment_pos,
- yyval.spec->segment_is_absolute,
- yyval.spec->segment_list);
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x = yyvsp[0].pair.x;
- yyval.spec->segment_pos.y = yyvsp[0].pair.y;
- yyval.spec->segment_is_absolute = 1;
- yyval.spec->flags |= HAS_TO;
- yyval.spec->to.x = yyvsp[0].pair.x;
- yyval.spec->to.y = yyvsp[0].pair.y;
- }
-break;
-case 102:
-#line 845 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_AT;
- yyval.spec->at.x = yyvsp[0].pair.x;
- yyval.spec->at.y = yyvsp[0].pair.y;
- if (yyval.spec->type != ARC_OBJECT) {
- yyval.spec->flags |= HAS_FROM;
- yyval.spec->from.x = yyvsp[0].pair.x;
- yyval.spec->from.y = yyvsp[0].pair.y;
- }
- }
-break;
-case 103:
-#line 857 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_WITH;
- yyval.spec->with = yyvsp[0].pth;
- }
-break;
-case 104:
-#line 863 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_WITH;
- position pos;
- pos.x = yyvsp[0].pair.x;
- pos.y = yyvsp[0].pair.y;
- yyval.spec->with = new path(pos);
- }
-break;
-case 105:
-#line 872 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x += yyvsp[0].pair.x;
- yyval.spec->segment_pos.y += yyvsp[0].pair.y;
- }
-break;
-case 106:
-#line 879 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- if (yyval.spec->flags & HAS_SEGMENT) {
- yyval.spec->segment_list = new segment(yyval.spec->segment_pos,
- yyval.spec->segment_is_absolute,
- yyval.spec->segment_list);
- yyval.spec->flags &= ~HAS_SEGMENT;
- yyval.spec->segment_pos.x = yyval.spec->segment_pos.y = 0.0;
- yyval.spec->segment_is_absolute = 0;
- }
- }
-break;
-case 107:
-#line 891 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec; /* nothing*/
- }
-break;
-case 108:
-#line 895 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_DOTTED;
- lookup_variable("dashwid", & yyval.spec->dash_width);
- }
-break;
-case 109:
-#line 901 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= IS_DOTTED;
- yyval.spec->dash_width = yyvsp[0].x;
- }
-break;
-case 110:
-#line 907 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_DASHED;
- lookup_variable("dashwid", & yyval.spec->dash_width);
- }
-break;
-case 111:
-#line 913 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= IS_DASHED;
- yyval.spec->dash_width = yyvsp[0].x;
- }
-break;
-case 112:
-#line 919 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_DEFAULT_FILLED;
- }
-break;
-case 113:
-#line 924 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= IS_FILLED;
- yyval.spec->fill = yyvsp[0].x;
- }
-break;
-case 114:
-#line 930 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= (IS_SHADED | IS_FILLED);
- yyval.spec->shaded = new char[strlen(yyvsp[0].lstr.str)+1];
- strcpy(yyval.spec->shaded, yyvsp[0].lstr.str);
- }
-break;
-case 115:
-#line 937 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= (IS_SHADED | IS_OUTLINED | IS_FILLED);
- yyval.spec->shaded = new char[strlen(yyvsp[0].lstr.str)+1];
- strcpy(yyval.spec->shaded, yyvsp[0].lstr.str);
- yyval.spec->outlined = new char[strlen(yyvsp[0].lstr.str)+1];
- strcpy(yyval.spec->outlined, yyvsp[0].lstr.str);
- }
-break;
-case 116:
-#line 946 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= IS_OUTLINED;
- yyval.spec->outlined = new char[strlen(yyvsp[0].lstr.str)+1];
- strcpy(yyval.spec->outlined, yyvsp[0].lstr.str);
- }
-break;
-case 117:
-#line 953 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- /* line chop chop means line chop 0 chop 0*/
- if (yyval.spec->flags & IS_DEFAULT_CHOPPED) {
- yyval.spec->flags |= IS_CHOPPED;
- yyval.spec->flags &= ~IS_DEFAULT_CHOPPED;
- yyval.spec->start_chop = yyval.spec->end_chop = 0.0;
- }
- else if (yyval.spec->flags & IS_CHOPPED) {
- yyval.spec->end_chop = 0.0;
- }
- else {
- yyval.spec->flags |= IS_DEFAULT_CHOPPED;
- }
- }
-break;
-case 118:
-#line 969 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- if (yyval.spec->flags & IS_DEFAULT_CHOPPED) {
- yyval.spec->flags |= IS_CHOPPED;
- yyval.spec->flags &= ~IS_DEFAULT_CHOPPED;
- yyval.spec->start_chop = 0.0;
- yyval.spec->end_chop = yyvsp[0].x;
- }
- else if (yyval.spec->flags & IS_CHOPPED) {
- yyval.spec->end_chop = yyvsp[0].x;
- }
- else {
- yyval.spec->start_chop = yyval.spec->end_chop = yyvsp[0].x;
- yyval.spec->flags |= IS_CHOPPED;
- }
- }
-break;
-case 119:
-#line 986 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_SAME;
- }
-break;
-case 120:
-#line 991 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_INVISIBLE;
- }
-break;
-case 121:
-#line 996 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= HAS_LEFT_ARROW_HEAD;
- }
-break;
-case 122:
-#line 1001 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= HAS_RIGHT_ARROW_HEAD;
- }
-break;
-case 123:
-#line 1006 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= (HAS_LEFT_ARROW_HEAD|HAS_RIGHT_ARROW_HEAD);
- }
-break;
-case 124:
-#line 1011 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_CLOCKWISE;
- }
-break;
-case 125:
-#line 1016 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags &= ~IS_CLOCKWISE;
- }
-break;
-case 126:
-#line 1021 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- text_item **p;
- for (p = & yyval.spec->text; *p; p = &(*p)->next)
- ;
- *p = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
- }
-break;
-case 127:
-#line 1029 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- if (yyval.spec->text) {
- text_item *p;
- for (p = yyval.spec->text; p->next; p = p->next)
- ;
- p->adj.h = LEFT_ADJUST;
- }
- }
-break;
-case 128:
-#line 1039 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- if (yyval.spec->text) {
- text_item *p;
- for (p = yyval.spec->text; p->next; p = p->next)
- ;
- p->adj.h = RIGHT_ADJUST;
- }
- }
-break;
-case 129:
-#line 1049 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- if (yyval.spec->text) {
- text_item *p;
- for (p = yyval.spec->text; p->next; p = p->next)
- ;
- p->adj.v = ABOVE_ADJUST;
- }
- }
-break;
-case 130:
-#line 1059 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- if (yyval.spec->text) {
- text_item *p;
- for (p = yyval.spec->text; p->next; p = p->next)
- ;
- p->adj.v = BELOW_ADJUST;
- }
- }
-break;
-case 131:
-#line 1069 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_THICKNESS;
- yyval.spec->thickness = yyvsp[0].x;
- }
-break;
-case 132:
-#line 1075 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_ALIGNED;
- }
-break;
-case 133:
-#line 1083 "pic.y"
-{ yyval.lstr = yyvsp[0].lstr; }
-break;
-case 134:
-#line 1085 "pic.y"
-{
- yyval.lstr.filename = yyvsp[-2].lstr.filename;
- yyval.lstr.lineno = yyvsp[-2].lstr.lineno;
- yyval.lstr.str = do_sprintf(yyvsp[-2].lstr.str, yyvsp[-1].dv.v, yyvsp[-1].dv.nv);
- a_delete yyvsp[-1].dv.v;
- a_delete yyvsp[-2].lstr.str;
- }
-break;
-case 135:
-#line 1096 "pic.y"
-{
- yyval.dv.v = 0;
- yyval.dv.nv = 0;
- yyval.dv.maxv = 0;
- }
-break;
-case 136:
-#line 1102 "pic.y"
-{
- yyval.dv = yyvsp[-2].dv;
- if (yyval.dv.nv >= yyval.dv.maxv) {
- if (yyval.dv.nv == 0) {
- yyval.dv.v = new double[4];
- yyval.dv.maxv = 4;
- }
- else {
- double *oldv = yyval.dv.v;
- yyval.dv.maxv *= 2;
- yyval.dv.v = new double[yyval.dv.maxv];
- memcpy(yyval.dv.v, oldv, yyval.dv.nv*sizeof(double));
- a_delete oldv;
- }
- }
- yyval.dv.v[yyval.dv.nv] = yyvsp[0].x;
- yyval.dv.nv += 1;
- }
-break;
-case 137:
-#line 1124 "pic.y"
-{ yyval.pair = yyvsp[0].pair; }
-break;
-case 138:
-#line 1126 "pic.y"
-{
- position pos = yyvsp[0].pl;
- yyval.pair.x = pos.x;
- yyval.pair.y = pos.y;
- }
-break;
-case 139:
-#line 1135 "pic.y"
-{ yyval.pair = yyvsp[0].pair; }
-break;
-case 140:
-#line 1137 "pic.y"
-{
- yyval.pair.x = yyvsp[-2].pair.x + yyvsp[0].pair.x;
- yyval.pair.y = yyvsp[-2].pair.y + yyvsp[0].pair.y;
- }
-break;
-case 141:
-#line 1142 "pic.y"
-{
- yyval.pair.x = yyvsp[-2].pair.x - yyvsp[0].pair.x;
- yyval.pair.y = yyvsp[-2].pair.y - yyvsp[0].pair.y;
- }
-break;
-case 142:
-#line 1147 "pic.y"
-{
- yyval.pair.x = yyvsp[-3].pair.x;
- yyval.pair.y = yyvsp[-1].pair.y;
- }
-break;
-case 143:
-#line 1152 "pic.y"
-{
- yyval.pair.x = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.x + yyvsp[-4].x*yyvsp[0].pair.x;
- yyval.pair.y = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.y + yyvsp[-4].x*yyvsp[0].pair.y;
- }
-break;
-case 144:
-#line 1157 "pic.y"
-{
- yyval.pair.x = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.x + yyvsp[-5].x*yyvsp[-1].pair.x;
- yyval.pair.y = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.y + yyvsp[-5].x*yyvsp[-1].pair.y;
- }
-break;
-case 147:
-#line 1170 "pic.y"
-{
- yyval.pair.x = yyvsp[-2].x;
- yyval.pair.y = yyvsp[0].x;
- }
-break;
-case 148:
-#line 1175 "pic.y"
-{ yyval.pair = yyvsp[-1].pair; }
-break;
-case 149:
-#line 1181 "pic.y"
-{ yyval.pl = yyvsp[0].pl; }
-break;
-case 150:
-#line 1183 "pic.y"
-{
- path pth(yyvsp[0].crn);
- if (!pth.follow(yyvsp[-1].pl, & yyval.pl))
- YYABORT;
- }
-break;
-case 151:
-#line 1189 "pic.y"
-{
- path pth(yyvsp[-1].crn);
- if (!pth.follow(yyvsp[0].pl, & yyval.pl))
- YYABORT;
- }
-break;
-case 152:
-#line 1195 "pic.y"
-{
- path pth(yyvsp[-2].crn);
- if (!pth.follow(yyvsp[0].pl, & yyval.pl))
- YYABORT;
- }
-break;
-case 153:
-#line 1201 "pic.y"
-{
- yyval.pl.x = current_position.x;
- yyval.pl.y = current_position.y;
- yyval.pl.obj = 0;
- }
-break;
-case 154:
-#line 1210 "pic.y"
-{
- place *p = lookup_label(yyvsp[0].str);
- if (!p) {
- lex_error("there is no place `%1'", yyvsp[0].str);
- YYABORT;
- }
- yyval.pl = *p;
- a_delete yyvsp[0].str;
- }
-break;
-case 155:
-#line 1220 "pic.y"
-{ yyval.pl.obj = yyvsp[0].obj; }
-break;
-case 156:
-#line 1222 "pic.y"
-{
- path pth(yyvsp[0].str);
- if (!pth.follow(yyvsp[-2].pl, & yyval.pl))
- YYABORT;
- }
-break;
-case 157:
-#line 1231 "pic.y"
-{ yyval.n = yyvsp[0].n; }
-break;
-case 158:
-#line 1233 "pic.y"
-{
- /* XXX Check for overflow (and non-integers?).*/
- yyval.n = (int)yyvsp[-1].x;
- }
-break;
-case 159:
-#line 1241 "pic.y"
-{ yyval.n = 1; }
-break;
-case 160:
-#line 1243 "pic.y"
-{ yyval.n = yyvsp[-1].n; }
-break;
-case 161:
-#line 1248 "pic.y"
-{
- int count = 0;
- object *p;
- for (p = olist.head; p != 0; p = p->next)
- if (p->type() == yyvsp[0].obtype && ++count == yyvsp[-1].n) {
- yyval.obj = p;
- break;
- }
- if (p == 0) {
- lex_error("there is no %1%2 %3", yyvsp[-1].n, ordinal_postfix(yyvsp[-1].n),
- object_type_name(yyvsp[0].obtype));
- YYABORT;
- }
- }
-break;
-case 162:
-#line 1263 "pic.y"
-{
- int count = 0;
- object *p;
- for (p = olist.tail; p != 0; p = p->prev)
- if (p->type() == yyvsp[0].obtype && ++count == yyvsp[-1].n) {
- yyval.obj = p;
- break;
- }
- if (p == 0) {
- lex_error("there is no %1%2 last %3", yyvsp[-1].n,
- ordinal_postfix(yyvsp[-1].n), object_type_name(yyvsp[0].obtype));
- YYABORT;
- }
- }
-break;
-case 163:
-#line 1281 "pic.y"
-{ yyval.obtype = BOX_OBJECT; }
-break;
-case 164:
-#line 1283 "pic.y"
-{ yyval.obtype = CIRCLE_OBJECT; }
-break;
-case 165:
-#line 1285 "pic.y"
-{ yyval.obtype = ELLIPSE_OBJECT; }
-break;
-case 166:
-#line 1287 "pic.y"
-{ yyval.obtype = ARC_OBJECT; }
-break;
-case 167:
-#line 1289 "pic.y"
-{ yyval.obtype = LINE_OBJECT; }
-break;
-case 168:
-#line 1291 "pic.y"
-{ yyval.obtype = ARROW_OBJECT; }
-break;
-case 169:
-#line 1293 "pic.y"
-{ yyval.obtype = SPLINE_OBJECT; }
-break;
-case 170:
-#line 1295 "pic.y"
-{ yyval.obtype = BLOCK_OBJECT; }
-break;
-case 171:
-#line 1297 "pic.y"
-{ yyval.obtype = TEXT_OBJECT; }
-break;
-case 172:
-#line 1302 "pic.y"
-{ yyval.pth = new path(yyvsp[0].str); }
-break;
-case 173:
-#line 1304 "pic.y"
-{
- yyval.pth = yyvsp[-2].pth;
- yyval.pth->append(yyvsp[0].str);
- }
-break;
-case 174:
-#line 1312 "pic.y"
-{ yyval.pth = new path(yyvsp[0].crn); }
-break;
-case 175:
-#line 1316 "pic.y"
-{ yyval.pth = yyvsp[0].pth; }
-break;
-case 176:
-#line 1318 "pic.y"
-{
- yyval.pth = yyvsp[-1].pth;
- yyval.pth->append(yyvsp[0].crn);
- }
-break;
-case 177:
-#line 1326 "pic.y"
-{ yyval.pth = yyvsp[0].pth; }
-break;
-case 178:
-#line 1328 "pic.y"
-{
- yyval.pth = yyvsp[-3].pth;
- yyval.pth->set_ypath(yyvsp[-1].pth);
- }
-break;
-case 179:
-#line 1334 "pic.y"
-{
- lex_warning("`%1%2 last %3' in `with' argument ignored",
- yyvsp[-3].n, ordinal_postfix(yyvsp[-3].n), object_type_name(yyvsp[-1].obtype));
- yyval.pth = yyvsp[0].pth;
- }
-break;
-case 180:
-#line 1340 "pic.y"
-{
- lex_warning("`last %1' in `with' argument ignored",
- object_type_name(yyvsp[-1].obtype));
- yyval.pth = yyvsp[0].pth;
- }
-break;
-case 181:
-#line 1346 "pic.y"
-{
- lex_warning("`%1%2 %3' in `with' argument ignored",
- yyvsp[-2].n, ordinal_postfix(yyvsp[-2].n), object_type_name(yyvsp[-1].obtype));
- yyval.pth = yyvsp[0].pth;
- }
-break;
-case 182:
-#line 1352 "pic.y"
-{
- lex_warning("initial `%1' in `with' argument ignored", yyvsp[-1].str);
- a_delete yyvsp[-1].str;
- yyval.pth = yyvsp[0].pth;
- }
-break;
-case 183:
-#line 1361 "pic.y"
-{ yyval.crn = &object::north; }
-break;
-case 184:
-#line 1363 "pic.y"
-{ yyval.crn = &object::east; }
-break;
-case 185:
-#line 1365 "pic.y"
-{ yyval.crn = &object::west; }
-break;
-case 186:
-#line 1367 "pic.y"
-{ yyval.crn = &object::south; }
-break;
-case 187:
-#line 1369 "pic.y"
-{ yyval.crn = &object::north_east; }
-break;
-case 188:
-#line 1371 "pic.y"
-{ yyval.crn = &object:: south_east; }
-break;
-case 189:
-#line 1373 "pic.y"
-{ yyval.crn = &object::north_west; }
-break;
-case 190:
-#line 1375 "pic.y"
-{ yyval.crn = &object::south_west; }
-break;
-case 191:
-#line 1377 "pic.y"
-{ yyval.crn = &object::center; }
-break;
-case 192:
-#line 1379 "pic.y"
-{ yyval.crn = &object::start; }
-break;
-case 193:
-#line 1381 "pic.y"
-{ yyval.crn = &object::end; }
-break;
-case 194:
-#line 1383 "pic.y"
-{ yyval.crn = &object::north; }
-break;
-case 195:
-#line 1385 "pic.y"
-{ yyval.crn = &object::south; }
-break;
-case 196:
-#line 1387 "pic.y"
-{ yyval.crn = &object::west; }
-break;
-case 197:
-#line 1389 "pic.y"
-{ yyval.crn = &object::east; }
-break;
-case 198:
-#line 1391 "pic.y"
-{ yyval.crn = &object::north_west; }
-break;
-case 199:
-#line 1393 "pic.y"
-{ yyval.crn = &object::south_west; }
-break;
-case 200:
-#line 1395 "pic.y"
-{ yyval.crn = &object::north_east; }
-break;
-case 201:
-#line 1397 "pic.y"
-{ yyval.crn = &object::south_east; }
-break;
-case 202:
-#line 1399 "pic.y"
-{ yyval.crn = &object::west; }
-break;
-case 203:
-#line 1401 "pic.y"
-{ yyval.crn = &object::east; }
-break;
-case 204:
-#line 1403 "pic.y"
-{ yyval.crn = &object::north_west; }
-break;
-case 205:
-#line 1405 "pic.y"
-{ yyval.crn = &object::south_west; }
-break;
-case 206:
-#line 1407 "pic.y"
-{ yyval.crn = &object::north_east; }
-break;
-case 207:
-#line 1409 "pic.y"
-{ yyval.crn = &object::south_east; }
-break;
-case 208:
-#line 1411 "pic.y"
-{ yyval.crn = &object::north; }
-break;
-case 209:
-#line 1413 "pic.y"
-{ yyval.crn = &object::south; }
-break;
-case 210:
-#line 1415 "pic.y"
-{ yyval.crn = &object::east; }
-break;
-case 211:
-#line 1417 "pic.y"
-{ yyval.crn = &object::west; }
-break;
-case 212:
-#line 1419 "pic.y"
-{ yyval.crn = &object::center; }
-break;
-case 213:
-#line 1421 "pic.y"
-{ yyval.crn = &object::start; }
-break;
-case 214:
-#line 1423 "pic.y"
-{ yyval.crn = &object::end; }
-break;
-case 215:
-#line 1428 "pic.y"
-{
- if (!lookup_variable(yyvsp[0].str, & yyval.x)) {
- lex_error("there is no variable `%1'", yyvsp[0].str);
- YYABORT;
- }
- a_delete yyvsp[0].str;
- }
-break;
-case 216:
-#line 1436 "pic.y"
-{ yyval.x = yyvsp[0].x; }
-break;
-case 217:
-#line 1438 "pic.y"
-{
- if (yyvsp[-1].pl.obj != 0)
- yyval.x = yyvsp[-1].pl.obj->origin().x;
- else
- yyval.x = yyvsp[-1].pl.x;
- }
-break;
-case 218:
-#line 1445 "pic.y"
-{
- if (yyvsp[-1].pl.obj != 0)
- yyval.x = yyvsp[-1].pl.obj->origin().y;
- else
- yyval.x = yyvsp[-1].pl.y;
- }
-break;
-case 219:
-#line 1452 "pic.y"
-{
- if (yyvsp[-1].pl.obj != 0)
- yyval.x = yyvsp[-1].pl.obj->height();
- else
- yyval.x = 0.0;
- }
-break;
-case 220:
-#line 1459 "pic.y"
-{
- if (yyvsp[-1].pl.obj != 0)
- yyval.x = yyvsp[-1].pl.obj->width();
- else
- yyval.x = 0.0;
- }
-break;
-case 221:
-#line 1466 "pic.y"
-{
- if (yyvsp[-1].pl.obj != 0)
- yyval.x = yyvsp[-1].pl.obj->radius();
- else
- yyval.x = 0.0;
- }
-break;
-case 222:
-#line 1473 "pic.y"
-{ yyval.x = yyvsp[-2].x + yyvsp[0].x; }
-break;
-case 223:
-#line 1475 "pic.y"
-{ yyval.x = yyvsp[-2].x - yyvsp[0].x; }
-break;
-case 224:
-#line 1477 "pic.y"
-{ yyval.x = yyvsp[-2].x * yyvsp[0].x; }
-break;
-case 225:
-#line 1479 "pic.y"
-{
- if (yyvsp[0].x == 0.0) {
- lex_error("division by zero");
- YYABORT;
- }
- yyval.x = yyvsp[-2].x/yyvsp[0].x;
- }
-break;
-case 226:
-#line 1487 "pic.y"
-{
- if (yyvsp[0].x == 0.0) {
- lex_error("modulus by zero");
- YYABORT;
- }
- yyval.x = fmod(yyvsp[-2].x, yyvsp[0].x);
- }
-break;
-case 227:
-#line 1495 "pic.y"
-{
- errno = 0;
- yyval.x = pow(yyvsp[-2].x, yyvsp[0].x);
- if (errno == EDOM) {
- lex_error("arguments to `^' operator out of domain");
- YYABORT;
- }
- if (errno == ERANGE) {
- lex_error("result of `^' operator out of range");
- YYABORT;
- }
- }
-break;
-case 228:
-#line 1508 "pic.y"
-{ yyval.x = -yyvsp[0].x; }
-break;
-case 229:
-#line 1510 "pic.y"
-{ yyval.x = yyvsp[-1].x; }
-break;
-case 230:
-#line 1512 "pic.y"
-{
- errno = 0;
- yyval.x = sin(yyvsp[-1].x);
- if (errno == ERANGE) {
- lex_error("sin result out of range");
- YYABORT;
- }
- }
-break;
-case 231:
-#line 1521 "pic.y"
-{
- errno = 0;
- yyval.x = cos(yyvsp[-1].x);
- if (errno == ERANGE) {
- lex_error("cos result out of range");
- YYABORT;
- }
- }
-break;
-case 232:
-#line 1530 "pic.y"
-{
- errno = 0;
- yyval.x = atan2(yyvsp[-3].x, yyvsp[-1].x);
- if (errno == EDOM) {
- lex_error("atan2 argument out of domain");
- YYABORT;
- }
- if (errno == ERANGE) {
- lex_error("atan2 result out of range");
- YYABORT;
- }
- }
-break;
-case 233:
-#line 1543 "pic.y"
-{
- errno = 0;
- yyval.x = log10(yyvsp[-1].x);
- if (errno == ERANGE) {
- lex_error("log result out of range");
- YYABORT;
- }
- }
-break;
-case 234:
-#line 1552 "pic.y"
-{
- errno = 0;
- yyval.x = pow(10.0, yyvsp[-1].x);
- if (errno == ERANGE) {
- lex_error("exp result out of range");
- YYABORT;
- }
- }
-break;
-case 235:
-#line 1561 "pic.y"
-{
- errno = 0;
- yyval.x = sqrt(yyvsp[-1].x);
- if (errno == EDOM) {
- lex_error("sqrt argument out of domain");
- YYABORT;
- }
- }
-break;
-case 236:
-#line 1570 "pic.y"
-{ yyval.x = yyvsp[-3].x > yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; }
-break;
-case 237:
-#line 1572 "pic.y"
-{ yyval.x = yyvsp[-3].x < yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; }
-break;
-case 238:
-#line 1574 "pic.y"
-{ yyval.x = floor(yyvsp[-1].x); }
-break;
-case 239:
-#line 1576 "pic.y"
-{ yyval.x = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*yyvsp[-1].x); }
-break;
-case 240:
-#line 1578 "pic.y"
-{
- /* return a random number in the range [0,1) */
- /* portable, but not very random */
- yyval.x = (rand() & 0x7fff) / double(0x8000);
- }
-break;
-case 241:
-#line 1584 "pic.y"
-{
- yyval.x = 0;
- srand((unsigned int)yyvsp[-1].x);
- }
-break;
-case 242:
-#line 1589 "pic.y"
-{ yyval.x = (yyvsp[-2].x < yyvsp[0].x); }
-break;
-case 243:
-#line 1591 "pic.y"
-{ yyval.x = (yyvsp[-2].x <= yyvsp[0].x); }
-break;
-case 244:
-#line 1593 "pic.y"
-{ yyval.x = (yyvsp[-2].x > yyvsp[0].x); }
-break;
-case 245:
-#line 1595 "pic.y"
-{ yyval.x = (yyvsp[-2].x >= yyvsp[0].x); }
-break;
-case 246:
-#line 1597 "pic.y"
-{ yyval.x = (yyvsp[-2].x == yyvsp[0].x); }
-break;
-case 247:
-#line 1599 "pic.y"
-{ yyval.x = (yyvsp[-2].x != yyvsp[0].x); }
-break;
-case 248:
-#line 1601 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
-break;
-case 249:
-#line 1603 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
-break;
-case 250:
-#line 1605 "pic.y"
-{ yyval.x = (yyvsp[0].x == 0.0); }
-break;
-#line 5564 "y.tab.c"
- }
- yyssp -= yym;
- yystate = *yyssp;
- yyvsp -= yym;
- yym = yylhs[yyn];
- if (yystate == 0 && yym == 0)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: after reduction, shifting from state 0 to\
- state %d\n", YYPREFIX, YYFINAL);
-#endif
- yystate = YYFINAL;
- *++yyssp = YYFINAL;
- *++yyvsp = yyval;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, reading %d (%s)\n",
- YYPREFIX, YYFINAL, yychar, yys);
- }
-#endif
- }
- if (yychar == 0) goto yyaccept;
- goto yyloop;
- }
- if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
- yystate = yytable[yyn];
- else
- yystate = yydgoto[yym];
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: after reduction, shifting from state %d \
-to state %d\n", YYPREFIX, *yyssp, yystate);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate;
- *++yyvsp = yyval;
- goto yyloop;
-yyoverflow:
- yyerror("yacc stack overflow");
-yyabort:
- return (1);
-yyaccept:
- return (0);
-}
diff --git a/contrib/groff/src/preproc/pic/pic_tab.h b/contrib/groff/src/preproc/pic/pic_tab.h
deleted file mode 100644
index 12611ba..0000000
--- a/contrib/groff/src/preproc/pic/pic_tab.h
+++ /dev/null
@@ -1,139 +0,0 @@
-#define LABEL 257
-#define VARIABLE 258
-#define NUMBER 259
-#define TEXT 260
-#define COMMAND_LINE 261
-#define DELIMITED 262
-#define ORDINAL 263
-#define TH 264
-#define LEFT_ARROW_HEAD 265
-#define RIGHT_ARROW_HEAD 266
-#define DOUBLE_ARROW_HEAD 267
-#define LAST 268
-#define UP 269
-#define DOWN 270
-#define LEFT 271
-#define RIGHT 272
-#define BOX 273
-#define CIRCLE 274
-#define ELLIPSE 275
-#define ARC 276
-#define LINE 277
-#define ARROW 278
-#define MOVE 279
-#define SPLINE 280
-#define HEIGHT 281
-#define RADIUS 282
-#define FIGNAME 283
-#define WIDTH 284
-#define DIAMETER 285
-#define FROM 286
-#define TO 287
-#define AT 288
-#define WITH 289
-#define BY 290
-#define THEN 291
-#define SOLID 292
-#define DOTTED 293
-#define DASHED 294
-#define CHOP 295
-#define SAME 296
-#define INVISIBLE 297
-#define LJUST 298
-#define RJUST 299
-#define ABOVE 300
-#define BELOW 301
-#define OF 302
-#define THE 303
-#define WAY 304
-#define BETWEEN 305
-#define AND 306
-#define HERE 307
-#define DOT_N 308
-#define DOT_E 309
-#define DOT_W 310
-#define DOT_S 311
-#define DOT_NE 312
-#define DOT_SE 313
-#define DOT_NW 314
-#define DOT_SW 315
-#define DOT_C 316
-#define DOT_START 317
-#define DOT_END 318
-#define DOT_X 319
-#define DOT_Y 320
-#define DOT_HT 321
-#define DOT_WID 322
-#define DOT_RAD 323
-#define SIN 324
-#define COS 325
-#define ATAN2 326
-#define LOG 327
-#define EXP 328
-#define SQRT 329
-#define K_MAX 330
-#define K_MIN 331
-#define INT 332
-#define RAND 333
-#define SRAND 334
-#define COPY 335
-#define THRU 336
-#define TOP 337
-#define BOTTOM 338
-#define UPPER 339
-#define LOWER 340
-#define SH 341
-#define PRINT 342
-#define CW 343
-#define CCW 344
-#define FOR 345
-#define DO 346
-#define IF 347
-#define ELSE 348
-#define ANDAND 349
-#define OROR 350
-#define NOTEQUAL 351
-#define EQUALEQUAL 352
-#define LESSEQUAL 353
-#define GREATEREQUAL 354
-#define LEFT_CORNER 355
-#define RIGHT_CORNER 356
-#define NORTH 357
-#define SOUTH 358
-#define EAST 359
-#define WEST 360
-#define CENTER 361
-#define END 362
-#define START 363
-#define RESET 364
-#define UNTIL 365
-#define PLOT 366
-#define THICKNESS 367
-#define FILL 368
-#define COLORED 369
-#define OUTLINED 370
-#define SHADED 371
-#define ALIGNED 372
-#define SPRINTF 373
-#define COMMAND 374
-#define DEFINE 375
-#define UNDEF 376
-typedef union {
- char *str;
- int n;
- double x;
- struct { double x, y; } pair;
- struct { double x; char *body; } if_data;
- struct { char *str; const char *filename; int lineno; } lstr;
- struct { double *v; int nv; int maxv; } dv;
- struct { double val; int is_multiplicative; } by;
- place pl;
- object *obj;
- corner crn;
- path *pth;
- object_spec *spec;
- saved_state *pstate;
- graphics_state state;
- object_type obtype;
-} YYSTYPE;
-extern YYSTYPE yylval;
diff --git a/contrib/groff/src/preproc/refer/label.cpp b/contrib/groff/src/preproc/refer/label.cpp
deleted file mode 100644
index 8d915a8..0000000
--- a/contrib/groff/src/preproc/refer/label.cpp
+++ /dev/null
@@ -1,1605 +0,0 @@
-#ifndef lint
-static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93 (groff)";
-#endif
-#define YYBYACC 1
-#define YYMAJOR 1
-#define YYMINOR 9
-#define yyclearin (yychar=(-1))
-#define yyerrok (yyerrflag=0)
-#define YYRECOVERING (yyerrflag!=0)
-#define YYPREFIX "yy"
-#line 22 "label.y"
-
-#include "refer.h"
-#include "refid.h"
-#include "ref.h"
-#include "token.h"
-
-int yylex();
-void yyerror(const char *);
-int yyparse();
-
-static const char *format_serial(char c, int n);
-
-struct label_info {
- int start;
- int length;
- int count;
- int total;
- label_info(const string &);
-};
-
-label_info *lookup_label(const string &label);
-
-struct expression {
- enum {
- /* Does the tentative label depend on the reference?*/
- CONTAINS_VARIABLE = 01,
- CONTAINS_STAR = 02,
- CONTAINS_FORMAT = 04,
- CONTAINS_AT = 010
- };
- virtual ~expression() { }
- virtual void evaluate(int, const reference &, string &,
- substring_position &) = 0;
- virtual unsigned analyze() { return 0; }
-};
-
-class at_expr : public expression {
-public:
- at_expr() { }
- void evaluate(int, const reference &, string &, substring_position &);
- unsigned analyze() { return CONTAINS_VARIABLE|CONTAINS_AT; }
-};
-
-class format_expr : public expression {
- char type;
- int width;
- int first_number;
-public:
- format_expr(char c, int w = 0, int f = 1)
- : type(c), width(w), first_number(f) { }
- void evaluate(int, const reference &, string &, substring_position &);
- unsigned analyze() { return CONTAINS_FORMAT; }
-};
-
-class field_expr : public expression {
- int number;
- char name;
-public:
- field_expr(char nm, int num) : number(num), name(nm) { }
- void evaluate(int, const reference &, string &, substring_position &);
- unsigned analyze() { return CONTAINS_VARIABLE; }
-};
-
-class literal_expr : public expression {
- string s;
-public:
- literal_expr(const char *ptr, int len) : s(ptr, len) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class unary_expr : public expression {
-protected:
- expression *expr;
-public:
- unary_expr(expression *e) : expr(e) { }
- ~unary_expr() { delete expr; }
- void evaluate(int, const reference &, string &, substring_position &) = 0;
- unsigned analyze() { return expr ? expr->analyze() : 0; }
-};
-
-/* This caches the analysis of an expression.*/
-
-class analyzed_expr : public unary_expr {
- unsigned flags;
-public:
- analyzed_expr(expression *);
- void evaluate(int, const reference &, string &, substring_position &);
- unsigned analyze() { return flags; }
-};
-
-class star_expr : public unary_expr {
-public:
- star_expr(expression *e) : unary_expr(e) { }
- void evaluate(int, const reference &, string &, substring_position &);
- unsigned analyze() {
- return ((expr ? (expr->analyze() & ~CONTAINS_VARIABLE) : 0)
- | CONTAINS_STAR);
- }
-};
-
-typedef void map_func(const char *, const char *, string &);
-
-class map_expr : public unary_expr {
- map_func *func;
-public:
- map_expr(expression *e, map_func *f) : unary_expr(e), func(f) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-typedef const char *extractor_func(const char *, const char *, const char **);
-
-class extractor_expr : public unary_expr {
- int part;
- extractor_func *func;
-public:
- enum { BEFORE = +1, MATCH = 0, AFTER = -1 };
- extractor_expr(expression *e, extractor_func *f, int pt)
- : unary_expr(e), part(pt), func(f) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class truncate_expr : public unary_expr {
- int n;
-public:
- truncate_expr(expression *e, int i) : unary_expr(e), n(i) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class separator_expr : public unary_expr {
-public:
- separator_expr(expression *e) : unary_expr(e) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class binary_expr : public expression {
-protected:
- expression *expr1;
- expression *expr2;
-public:
- binary_expr(expression *e1, expression *e2) : expr1(e1), expr2(e2) { }
- ~binary_expr() { delete expr1; delete expr2; }
- void evaluate(int, const reference &, string &, substring_position &) = 0;
- unsigned analyze() {
- return (expr1 ? expr1->analyze() : 0) | (expr2 ? expr2->analyze() : 0);
- }
-};
-
-class alternative_expr : public binary_expr {
-public:
- alternative_expr(expression *e1, expression *e2) : binary_expr(e1, e2) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class list_expr : public binary_expr {
-public:
- list_expr(expression *e1, expression *e2) : binary_expr(e1, e2) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class substitute_expr : public binary_expr {
-public:
- substitute_expr(expression *e1, expression *e2) : binary_expr(e1, e2) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class ternary_expr : public expression {
-protected:
- expression *expr1;
- expression *expr2;
- expression *expr3;
-public:
- ternary_expr(expression *e1, expression *e2, expression *e3)
- : expr1(e1), expr2(e2), expr3(e3) { }
- ~ternary_expr() { delete expr1; delete expr2; delete expr3; }
- void evaluate(int, const reference &, string &, substring_position &) = 0;
- unsigned analyze() {
- return ((expr1 ? expr1->analyze() : 0)
- | (expr2 ? expr2->analyze() : 0)
- | (expr3 ? expr3->analyze() : 0));
- }
-};
-
-class conditional_expr : public ternary_expr {
-public:
- conditional_expr(expression *e1, expression *e2, expression *e3)
- : ternary_expr(e1, e2, e3) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-static expression *parsed_label = 0;
-static expression *parsed_date_label = 0;
-static expression *parsed_short_label = 0;
-
-static expression *parse_result;
-
-string literals;
-
-#line 221 "label.y"
-typedef union {
- int num;
- expression *expr;
- struct { int ndigits; int val; } dig;
- struct { int start; int len; } str;
-} YYSTYPE;
-#line 217 "y.tab.c"
-#define TOKEN_LETTER 257
-#define TOKEN_LITERAL 258
-#define TOKEN_DIGIT 259
-#define YYERRCODE 256
-short yylhs[] = { -1,
- 0, 1, 1, 6, 6, 2, 2, 2, 3, 3,
- 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 9, 9, 7, 7, 8, 8,
- 10, 10, 10,
-};
-short yylen[] = { 2,
- 1, 1, 5, 0, 1, 1, 3, 3, 1, 2,
- 1, 3, 1, 1, 1, 2, 2, 2, 5, 3,
- 3, 2, 3, 3, 0, 1, 1, 2, 1, 2,
- 0, 1, 1,
-};
-short yydefred[] = { 0,
- 0, 14, 13, 0, 0, 0, 0, 5, 0, 0,
- 0, 0, 1, 27, 0, 17, 29, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 22, 0, 28,
- 30, 23, 24, 0, 0, 0, 32, 33, 0, 0,
- 0, 0, 0, 0, 3, 0, 19,
-};
-short yydgoto[] = { 7,
- 8, 9, 10, 11, 12, 13, 15, 18, 47, 39,
-};
-short yysindex[] = { -32,
- -257, 0, 0, -240, -32, -32, 0, 0, -18, -32,
- -36, -114, 0, 0, -246, 0, 0, -241, -14, -39,
- -32, -32, -32, -114, -21, -257, -257, 0, -32, 0,
- 0, 0, 0, -25, -32, -32, 0, 0, -223, -246,
- -246, -36, -32, -257, 0, -246, 0,
-};
-short yyrindex[] = { 35,
- 1, 0, 0, 0, -5, -4, 0, 0, 14, 208,
- 159, 224, 0, 0, 11, 0, 0, 40, 0, 0,
- 2, 0, 0, 253, -220, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 263, 281, 0, 0, 0, 50,
- 105, 214, 0, 115, 0, 149, 0,
-};
-short yygindex[] = { 0,
- 19, 0, 7, 37, -10, 10, -23, 0, 0, 0,
-};
-#define YYTABLESIZE 511
-short yytable[] = { 24,
- 15, 14, 40, 41, 4, 28, 26, 5, 27, 25,
- 16, 29, 30, 2, 19, 20, 16, 31, 17, 23,
- 46, 37, 33, 38, 24, 24, 32, 6, 35, 36,
- 34, 3, 43, 44, 4, 4, 31, 15, 15, 18,
- 15, 15, 15, 15, 21, 15, 15, 16, 16, 20,
- 16, 16, 16, 16, 2, 16, 16, 4, 15, 4,
- 15, 45, 15, 15, 15, 42, 0, 0, 16, 0,
- 16, 2, 16, 16, 16, 2, 18, 18, 0, 18,
- 18, 18, 18, 0, 18, 18, 20, 20, 0, 20,
- 20, 20, 20, 0, 20, 20, 0, 18, 0, 18,
- 0, 18, 18, 18, 21, 22, 0, 20, 0, 20,
- 0, 20, 20, 20, 25, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 15, 0, 15, 0, 0, 0,
- 0, 0, 0, 0, 16, 0, 16, 0, 0, 0,
- 0, 21, 21, 0, 21, 21, 21, 21, 26, 21,
- 21, 25, 25, 0, 25, 25, 25, 25, 11, 25,
- 25, 0, 21, 18, 21, 18, 21, 21, 21, 0,
- 0, 0, 25, 20, 25, 20, 25, 25, 25, 0,
- 0, 0, 0, 0, 0, 26, 26, 0, 26, 26,
- 26, 26, 0, 26, 26, 11, 11, 0, 11, 11,
- 0, 0, 0, 0, 0, 0, 26, 6, 26, 0,
- 26, 26, 26, 12, 0, 0, 11, 0, 11, 0,
- 11, 11, 11, 9, 1, 2, 0, 0, 21, 0,
- 21, 0, 0, 0, 0, 0, 0, 0, 25, 0,
- 25, 0, 0, 0, 0, 6, 0, 0, 6, 0,
- 12, 12, 10, 12, 12, 0, 0, 15, 15, 0,
- 9, 9, 7, 9, 9, 6, 0, 16, 16, 6,
- 6, 12, 26, 12, 26, 12, 12, 12, 0, 0,
- 8, 9, 11, 9, 11, 9, 9, 9, 0, 10,
- 10, 0, 10, 10, 0, 0, 18, 18, 0, 0,
- 7, 0, 0, 7, 0, 0, 20, 20, 0, 0,
- 10, 0, 10, 0, 10, 10, 10, 0, 8, 0,
- 7, 8, 0, 0, 7, 7, 0, 0, 0, 0,
- 0, 6, 0, 0, 0, 0, 0, 12, 8, 12,
- 0, 0, 8, 8, 0, 0, 0, 9, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 21, 21, 0, 0, 0, 0, 0, 0, 0,
- 0, 25, 25, 0, 0, 0, 10, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 8, 26, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 11, 11, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 12, 12, 0, 0, 0, 0, 0, 0, 0, 0,
- 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
- 10,
-};
-short yycheck[] = { 10,
- 0, 259, 26, 27, 37, 42, 43, 40, 45, 46,
- 0, 126, 259, 0, 5, 6, 257, 259, 259, 38,
- 44, 43, 62, 45, 35, 36, 41, 60, 22, 23,
- 21, 64, 58, 257, 0, 41, 257, 37, 38, 0,
- 40, 41, 42, 43, 63, 45, 46, 37, 38, 0,
- 40, 41, 42, 43, 41, 45, 46, 62, 58, 58,
- 60, 43, 62, 63, 64, 29, -1, -1, 58, -1,
- 60, 58, 62, 63, 64, 62, 37, 38, -1, 40,
- 41, 42, 43, -1, 45, 46, 37, 38, -1, 40,
- 41, 42, 43, -1, 45, 46, -1, 58, -1, 60,
- -1, 62, 63, 64, 0, 124, -1, 58, -1, 60,
- -1, 62, 63, 64, 0, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 124, -1, 126, -1, -1, -1,
- -1, -1, -1, -1, 124, -1, 126, -1, -1, -1,
- -1, 37, 38, -1, 40, 41, 42, 43, 0, 45,
- 46, 37, 38, -1, 40, 41, 42, 43, 0, 45,
- 46, -1, 58, 124, 60, 126, 62, 63, 64, -1,
- -1, -1, 58, 124, 60, 126, 62, 63, 64, -1,
- -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
- 42, 43, -1, 45, 46, 37, 38, -1, 40, 41,
- -1, -1, -1, -1, -1, -1, 58, 0, 60, -1,
- 62, 63, 64, 0, -1, -1, 58, -1, 60, -1,
- 62, 63, 64, 0, 257, 258, -1, -1, 124, -1,
- 126, -1, -1, -1, -1, -1, -1, -1, 124, -1,
- 126, -1, -1, -1, -1, 38, -1, -1, 41, -1,
- 37, 38, 0, 40, 41, -1, -1, 257, 258, -1,
- 37, 38, 0, 40, 41, 58, -1, 257, 258, 62,
- 63, 58, 124, 60, 126, 62, 63, 64, -1, -1,
- 0, 58, 124, 60, 126, 62, 63, 64, -1, 37,
- 38, -1, 40, 41, -1, -1, 257, 258, -1, -1,
- 38, -1, -1, 41, -1, -1, 257, 258, -1, -1,
- 58, -1, 60, -1, 62, 63, 64, -1, 38, -1,
- 58, 41, -1, -1, 62, 63, -1, -1, -1, -1,
- -1, 124, -1, -1, -1, -1, -1, 124, 58, 126,
- -1, -1, 62, 63, -1, -1, -1, 124, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, -1, -1, -1, 124, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 124, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 124, 257, 258, -1, -1, -1,
- -1, -1, -1, -1, -1, 257, 258, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 257, 258, -1, -1, -1, -1, -1, -1, -1, -1,
- 257, 258, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
- 258,
-};
-#define YYFINAL 7
-#ifndef YYDEBUG
-#define YYDEBUG 0
-#endif
-#define YYMAXTOKEN 259
-#if YYDEBUG
-char *yyname[] = {
-"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'","'.'",0,0,0,0,0,0,0,0,0,0,0,
-"':'",0,"'<'",0,"'>'","'?'","'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,
-"'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,"TOKEN_LETTER","TOKEN_LITERAL","TOKEN_DIGIT",
-};
-char *yyrule[] = {
-"$accept : expr",
-"expr : optional_conditional",
-"conditional : alternative",
-"conditional : alternative '?' optional_conditional ':' conditional",
-"optional_conditional :",
-"optional_conditional : conditional",
-"alternative : list",
-"alternative : alternative '|' list",
-"alternative : alternative '&' list",
-"list : substitute",
-"list : list substitute",
-"substitute : string",
-"substitute : substitute '~' string",
-"string : '@'",
-"string : TOKEN_LITERAL",
-"string : TOKEN_LETTER",
-"string : TOKEN_LETTER number",
-"string : '%' TOKEN_LETTER",
-"string : '%' digits",
-"string : string '.' flag TOKEN_LETTER optional_number",
-"string : string '+' number",
-"string : string '-' number",
-"string : string '*'",
-"string : '(' optional_conditional ')'",
-"string : '<' optional_conditional '>'",
-"optional_number :",
-"optional_number : number",
-"number : TOKEN_DIGIT",
-"number : number TOKEN_DIGIT",
-"digits : TOKEN_DIGIT",
-"digits : digits TOKEN_DIGIT",
-"flag :",
-"flag : '+'",
-"flag : '-'",
-};
-#endif
-#ifdef YYSTACKSIZE
-#undef YYMAXDEPTH
-#define YYMAXDEPTH YYSTACKSIZE
-#else
-#ifdef YYMAXDEPTH
-#define YYSTACKSIZE YYMAXDEPTH
-#else
-#define YYSTACKSIZE 500
-#define YYMAXDEPTH 500
-#endif
-#endif
-int yydebug;
-int yynerrs;
-int yyerrflag;
-int yychar;
-short *yyssp;
-YYSTYPE *yyvsp;
-YYSTYPE yyval;
-YYSTYPE yylval;
-short yyss[YYSTACKSIZE];
-YYSTYPE yyvs[YYSTACKSIZE];
-#define yystacksize YYSTACKSIZE
-#line 397 "label.y"
-
-/* bison defines const to be empty unless __STDC__ is defined, which it
-isn't under cfront */
-
-#ifdef const
-#undef const
-#endif
-
-const char *spec_ptr;
-const char *spec_end;
-const char *spec_cur;
-
-int yylex()
-{
- while (spec_ptr < spec_end && csspace(*spec_ptr))
- spec_ptr++;
- spec_cur = spec_ptr;
- if (spec_ptr >= spec_end)
- return 0;
- unsigned char c = *spec_ptr++;
- if (csalpha(c)) {
- yylval.num = c;
- return TOKEN_LETTER;
- }
- if (csdigit(c)) {
- yylval.num = c - '0';
- return TOKEN_DIGIT;
- }
- if (c == '\'') {
- yylval.str.start = literals.length();
- for (; spec_ptr < spec_end; spec_ptr++) {
- if (*spec_ptr == '\'') {
- if (++spec_ptr < spec_end && *spec_ptr == '\'')
- literals += '\'';
- else {
- yylval.str.len = literals.length() - yylval.str.start;
- return TOKEN_LITERAL;
- }
- }
- else
- literals += *spec_ptr;
- }
- yylval.str.len = literals.length() - yylval.str.start;
- return TOKEN_LITERAL;
- }
- return c;
-}
-
-int set_label_spec(const char *label_spec)
-{
- spec_cur = spec_ptr = label_spec;
- spec_end = strchr(label_spec, '\0');
- literals.clear();
- if (yyparse())
- return 0;
- delete parsed_label;
- parsed_label = parse_result;
- return 1;
-}
-
-int set_date_label_spec(const char *label_spec)
-{
- spec_cur = spec_ptr = label_spec;
- spec_end = strchr(label_spec, '\0');
- literals.clear();
- if (yyparse())
- return 0;
- delete parsed_date_label;
- parsed_date_label = parse_result;
- return 1;
-}
-
-int set_short_label_spec(const char *label_spec)
-{
- spec_cur = spec_ptr = label_spec;
- spec_end = strchr(label_spec, '\0');
- literals.clear();
- if (yyparse())
- return 0;
- delete parsed_short_label;
- parsed_short_label = parse_result;
- return 1;
-}
-
-void yyerror(const char *message)
-{
- if (spec_cur < spec_end)
- command_error("label specification %1 before `%2'", message, spec_cur);
- else
- command_error("label specification %1 at end of string",
- message, spec_cur);
-}
-
-void at_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &)
-{
- if (tentative)
- ref.canonicalize_authors(result);
- else {
- const char *end, *start = ref.get_authors(&end);
- if (start)
- result.append(start, end - start);
- }
-}
-
-void format_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &)
-{
- if (tentative)
- return;
- const label_info *lp = ref.get_label_ptr();
- int num = lp == 0 ? ref.get_number() : lp->count;
- if (type != '0')
- result += format_serial(type, num + 1);
- else {
- const char *ptr = i_to_a(num + first_number);
- int pad = width - strlen(ptr);
- while (--pad >= 0)
- result += '0';
- result += ptr;
- }
-}
-
-static const char *format_serial(char c, int n)
-{
- assert(n > 0);
- static char buf[128]; // more than enough.
- switch (c) {
- case 'i':
- case 'I':
- {
- char *p = buf;
- // troff uses z and w to represent 10000 and 5000 in Roman
- // numerals; I can find no historical basis for this usage
- const char *s = c == 'i' ? "zwmdclxvi" : "ZWMDCLXVI";
- if (n >= 40000)
- return i_to_a(n);
- while (n >= 10000) {
- *p++ = s[0];
- n -= 10000;
- }
- for (int i = 1000; i > 0; i /= 10, s += 2) {
- int m = n/i;
- n -= m*i;
- switch (m) {
- case 3:
- *p++ = s[2];
- /* falls through */
- case 2:
- *p++ = s[2];
- /* falls through */
- case 1:
- *p++ = s[2];
- break;
- case 4:
- *p++ = s[2];
- *p++ = s[1];
- break;
- case 8:
- *p++ = s[1];
- *p++ = s[2];
- *p++ = s[2];
- *p++ = s[2];
- break;
- case 7:
- *p++ = s[1];
- *p++ = s[2];
- *p++ = s[2];
- break;
- case 6:
- *p++ = s[1];
- *p++ = s[2];
- break;
- case 5:
- *p++ = s[1];
- break;
- case 9:
- *p++ = s[2];
- *p++ = s[0];
- }
- }
- *p = 0;
- break;
- }
- case 'a':
- case 'A':
- {
- char *p = buf;
- // this is derived from troff/reg.c
- while (n > 0) {
- int d = n % 26;
- if (d == 0)
- d = 26;
- n -= d;
- n /= 26;
- *p++ = c + d - 1; // ASCII dependent
- }
- *p-- = 0;
- // Reverse it.
- char *q = buf;
- while (q < p) {
- char temp = *q;
- *q = *p;
- *p = temp;
- --p;
- ++q;
- }
- break;
- }
- default:
- assert(0);
- }
- return buf;
-}
-
-void field_expr::evaluate(int, const reference &ref,
- string &result, substring_position &)
-{
- const char *end;
- const char *start = ref.get_field(name, &end);
- if (start) {
- start = nth_field(number, start, &end);
- if (start)
- result.append(start, end - start);
- }
-}
-
-void literal_expr::evaluate(int, const reference &,
- string &result, substring_position &)
-{
- result += s;
-}
-
-analyzed_expr::analyzed_expr(expression *e)
-: unary_expr(e), flags(e ? e->analyze() : 0)
-{
-}
-
-void analyzed_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- if (expr)
- expr->evaluate(tentative, ref, result, pos);
-}
-
-void star_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- const label_info *lp = ref.get_label_ptr();
- if (!tentative
- && (lp == 0 || lp->total > 1)
- && expr)
- expr->evaluate(tentative, ref, result, pos);
-}
-
-void separator_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- int start_length = result.length();
- int is_first = pos.start < 0;
- if (expr)
- expr->evaluate(tentative, ref, result, pos);
- if (is_first) {
- pos.start = start_length;
- pos.length = result.length() - start_length;
- }
-}
-
-void map_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &)
-{
- if (expr) {
- string temp;
- substring_position temp_pos;
- expr->evaluate(tentative, ref, temp, temp_pos);
- (*func)(temp.contents(), temp.contents() + temp.length(), result);
- }
-}
-
-void extractor_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &)
-{
- if (expr) {
- string temp;
- substring_position temp_pos;
- expr->evaluate(tentative, ref, temp, temp_pos);
- const char *end, *start = (*func)(temp.contents(),
- temp.contents() + temp.length(),
- &end);
- switch (part) {
- case BEFORE:
- if (start)
- result.append(temp.contents(), start - temp.contents());
- else
- result += temp;
- break;
- case MATCH:
- if (start)
- result.append(start, end - start);
- break;
- case AFTER:
- if (start)
- result.append(end, temp.contents() + temp.length() - end);
- break;
- default:
- assert(0);
- }
- }
-}
-
-static void first_part(int len, const char *ptr, const char *end,
- string &result)
-{
- for (;;) {
- const char *token_start = ptr;
- if (!get_token(&ptr, end))
- break;
- const token_info *ti = lookup_token(token_start, ptr);
- int counts = ti->sortify_non_empty(token_start, ptr);
- if (counts && --len < 0)
- break;
- if (counts || ti->is_accent())
- result.append(token_start, ptr - token_start);
- }
-}
-
-static void last_part(int len, const char *ptr, const char *end,
- string &result)
-{
- const char *start = ptr;
- int count = 0;
- for (;;) {
- const char *token_start = ptr;
- if (!get_token(&ptr, end))
- break;
- const token_info *ti = lookup_token(token_start, ptr);
- if (ti->sortify_non_empty(token_start, ptr))
- count++;
- }
- ptr = start;
- int skip = count - len;
- if (skip > 0) {
- for (;;) {
- const char *token_start = ptr;
- if (!get_token(&ptr, end))
- assert(0);
- const token_info *ti = lookup_token(token_start, ptr);
- if (ti->sortify_non_empty(token_start, ptr) && --skip < 0) {
- ptr = token_start;
- break;
- }
- }
- }
- first_part(len, ptr, end, result);
-}
-
-void truncate_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &)
-{
- if (expr) {
- string temp;
- substring_position temp_pos;
- expr->evaluate(tentative, ref, temp, temp_pos);
- const char *start = temp.contents();
- const char *end = start + temp.length();
- if (n > 0)
- first_part(n, start, end, result);
- else if (n < 0)
- last_part(-n, start, end, result);
- }
-}
-
-void alternative_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- int start_length = result.length();
- if (expr1)
- expr1->evaluate(tentative, ref, result, pos);
- if (result.length() == start_length && expr2)
- expr2->evaluate(tentative, ref, result, pos);
-}
-
-void list_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- if (expr1)
- expr1->evaluate(tentative, ref, result, pos);
- if (expr2)
- expr2->evaluate(tentative, ref, result, pos);
-}
-
-void substitute_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- int start_length = result.length();
- if (expr1)
- expr1->evaluate(tentative, ref, result, pos);
- if (result.length() > start_length && result[result.length() - 1] == '-') {
- // ought to see if pos covers the -
- result.set_length(result.length() - 1);
- if (expr2)
- expr2->evaluate(tentative, ref, result, pos);
- }
-}
-
-void conditional_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- string temp;
- substring_position temp_pos;
- if (expr1)
- expr1->evaluate(tentative, ref, temp, temp_pos);
- if (temp.length() > 0) {
- if (expr2)
- expr2->evaluate(tentative, ref, result, pos);
- }
- else {
- if (expr3)
- expr3->evaluate(tentative, ref, result, pos);
- }
-}
-
-void reference::pre_compute_label()
-{
- if (parsed_label != 0
- && (parsed_label->analyze() & expression::CONTAINS_VARIABLE)) {
- label.clear();
- substring_position temp_pos;
- parsed_label->evaluate(1, *this, label, temp_pos);
- label_ptr = lookup_label(label);
- }
-}
-
-void reference::compute_label()
-{
- label.clear();
- if (parsed_label)
- parsed_label->evaluate(0, *this, label, separator_pos);
- if (short_label_flag && parsed_short_label)
- parsed_short_label->evaluate(0, *this, short_label, short_separator_pos);
- if (date_as_label) {
- string new_date;
- if (parsed_date_label) {
- substring_position temp_pos;
- parsed_date_label->evaluate(0, *this, new_date, temp_pos);
- }
- set_date(new_date);
- }
- if (label_ptr)
- label_ptr->count += 1;
-}
-
-void reference::immediate_compute_label()
-{
- if (label_ptr)
- label_ptr->total = 2; // force use of disambiguator
- compute_label();
-}
-
-int reference::merge_labels(reference **v, int n, label_type type,
- string &result)
-{
- if (abbreviate_label_ranges)
- return merge_labels_by_number(v, n, type, result);
- else
- return merge_labels_by_parts(v, n, type, result);
-}
-
-int reference::merge_labels_by_number(reference **v, int n, label_type type,
- string &result)
-{
- if (n <= 1)
- return 0;
- int num = get_number();
- // Only merge three or more labels.
- if (v[0]->get_number() != num + 1
- || v[1]->get_number() != num + 2)
- return 0;
- int i;
- for (i = 2; i < n; i++)
- if (v[i]->get_number() != num + i + 1)
- break;
- result = get_label(type);
- result += label_range_indicator;
- result += v[i - 1]->get_label(type);
- return i;
-}
-
-const substring_position &reference::get_separator_pos(label_type type) const
-{
- if (type == SHORT_LABEL && short_label_flag)
- return short_separator_pos;
- else
- return separator_pos;
-}
-
-const string &reference::get_label(label_type type) const
-{
- if (type == SHORT_LABEL && short_label_flag)
- return short_label;
- else
- return label;
-}
-
-int reference::merge_labels_by_parts(reference **v, int n, label_type type,
- string &result)
-{
- if (n <= 0)
- return 0;
- const string &lb = get_label(type);
- const substring_position &sp = get_separator_pos(type);
- if (sp.start < 0
- || sp.start != v[0]->get_separator_pos(type).start
- || memcmp(lb.contents(), v[0]->get_label(type).contents(),
- sp.start) != 0)
- return 0;
- result = lb;
- int i = 0;
- do {
- result += separate_label_second_parts;
- const substring_position &s = v[i]->get_separator_pos(type);
- int sep_end_pos = s.start + s.length;
- result.append(v[i]->get_label(type).contents() + sep_end_pos,
- v[i]->get_label(type).length() - sep_end_pos);
- } while (++i < n
- && sp.start == v[i]->get_separator_pos(type).start
- && memcmp(lb.contents(), v[i]->get_label(type).contents(),
- sp.start) == 0);
- return i;
-}
-
-string label_pool;
-
-label_info::label_info(const string &s)
-: start(label_pool.length()), length(s.length()), count(0), total(1)
-{
- label_pool += s;
-}
-
-static label_info **label_table = 0;
-static int label_table_size = 0;
-static int label_table_used = 0;
-
-label_info *lookup_label(const string &label)
-{
- if (label_table == 0) {
- label_table = new label_info *[17];
- label_table_size = 17;
- for (int i = 0; i < 17; i++)
- label_table[i] = 0;
- }
- unsigned h = hash_string(label.contents(), label.length()) % label_table_size;
- label_info **ptr;
- for (ptr = label_table + h;
- *ptr != 0;
- (ptr == label_table)
- ? (ptr = label_table + label_table_size - 1)
- : ptr--)
- if ((*ptr)->length == label.length()
- && memcmp(label_pool.contents() + (*ptr)->start, label.contents(),
- label.length()) == 0) {
- (*ptr)->total += 1;
- return *ptr;
- }
- label_info *result = *ptr = new label_info(label);
- if (++label_table_used * 2 > label_table_size) {
- // Rehash the table.
- label_info **old_table = label_table;
- int old_size = label_table_size;
- label_table_size = next_size(label_table_size);
- label_table = new label_info *[label_table_size];
- int i;
- for (i = 0; i < label_table_size; i++)
- label_table[i] = 0;
- for (i = 0; i < old_size; i++)
- if (old_table[i]) {
- unsigned h = hash_string(label_pool.contents() + old_table[i]->start,
- old_table[i]->length);
- label_info **p;
- for (p = label_table + (h % label_table_size);
- *p != 0;
- (p == label_table)
- ? (p = label_table + label_table_size - 1)
- : --p)
- ;
- *p = old_table[i];
- }
- a_delete old_table;
- }
- return result;
-}
-
-void clear_labels()
-{
- for (int i = 0; i < label_table_size; i++) {
- delete label_table[i];
- label_table[i] = 0;
- }
- label_table_used = 0;
- label_pool.clear();
-}
-
-static void consider_authors(reference **start, reference **end, int i);
-
-void compute_labels(reference **v, int n)
-{
- if (parsed_label
- && (parsed_label->analyze() & expression::CONTAINS_AT)
- && sort_fields.length() >= 2
- && sort_fields[0] == 'A'
- && sort_fields[1] == '+')
- consider_authors(v, v + n, 0);
- for (int i = 0; i < n; i++)
- v[i]->compute_label();
-}
-
-
-/* A reference with a list of authors <A0,A1,...,AN> _needs_ author i
-where 0 <= i <= N if there exists a reference with a list of authors
-<B0,B1,...,BM> such that <A0,A1,...,AN> != <B0,B1,...,BM> and M >= i
-and Aj = Bj for 0 <= j < i. In this case if we can't say ``A0,
-A1,...,A(i-1) et al'' because this would match both <A0,A1,...,AN> and
-<B0,B1,...,BM>. If a reference needs author i we only have to call
-need_author(j) for some j >= i such that the reference also needs
-author j. */
-
-/* This function handles 2 tasks:
-determine which authors are needed (cannot be elided with et al.);
-determine which authors can have only last names in the labels.
-
-References >= start and < end have the same first i author names.
-Also they're sorted by A+. */
-
-static void consider_authors(reference **start, reference **end, int i)
-{
- if (start >= end)
- return;
- reference **p = start;
- if (i >= (*p)->get_nauthors()) {
- for (++p; p < end && i >= (*p)->get_nauthors(); p++)
- ;
- if (p < end && i > 0) {
- // If we have an author list <A B C> and an author list <A B C D>,
- // then both lists need C.
- for (reference **q = start; q < end; q++)
- (*q)->need_author(i - 1);
- }
- start = p;
- }
- while (p < end) {
- reference **last_name_start = p;
- reference **name_start = p;
- for (++p;
- p < end && i < (*p)->get_nauthors()
- && same_author_last_name(**last_name_start, **p, i);
- p++) {
- if (!same_author_name(**name_start, **p, i)) {
- consider_authors(name_start, p, i + 1);
- name_start = p;
- }
- }
- consider_authors(name_start, p, i + 1);
- if (last_name_start == name_start) {
- for (reference **q = last_name_start; q < p; q++)
- (*q)->set_last_name_unambiguous(i);
- }
- // If we have an author list <A B C D> and <A B C E>, then the lists
- // need author D and E respectively.
- if (name_start > start || p < end) {
- for (reference **q = last_name_start; q < p; q++)
- (*q)->need_author(i);
- }
- }
-}
-
-int same_author_last_name(const reference &r1, const reference &r2, int n)
-{
- const char *ae1;
- const char *as1 = r1.get_sort_field(0, n, 0, &ae1);
- assert(as1 != 0);
- const char *ae2;
- const char *as2 = r2.get_sort_field(0, n, 0, &ae2);
- assert(as2 != 0);
- return ae1 - as1 == ae2 - as2 && memcmp(as1, as2, ae1 - as1) == 0;
-}
-
-int same_author_name(const reference &r1, const reference &r2, int n)
-{
- const char *ae1;
- const char *as1 = r1.get_sort_field(0, n, -1, &ae1);
- assert(as1 != 0);
- const char *ae2;
- const char *as2 = r2.get_sort_field(0, n, -1, &ae2);
- assert(as2 != 0);
- return ae1 - as1 == ae2 - as2 && memcmp(as1, as2, ae1 - as1) == 0;
-}
-
-
-void int_set::set(int i)
-{
- assert(i >= 0);
- int bytei = i >> 3;
- if (bytei >= v.length()) {
- int old_length = v.length();
- v.set_length(bytei + 1);
- for (int j = old_length; j <= bytei; j++)
- v[j] = 0;
- }
- v[bytei] |= 1 << (i & 7);
-}
-
-int int_set::get(int i) const
-{
- assert(i >= 0);
- int bytei = i >> 3;
- return bytei >= v.length() ? 0 : (v[bytei] & (1 << (i & 7))) != 0;
-}
-
-void reference::set_last_name_unambiguous(int i)
-{
- last_name_unambiguous.set(i);
-}
-
-void reference::need_author(int n)
-{
- if (n > last_needed_author)
- last_needed_author = n;
-}
-
-const char *reference::get_authors(const char **end) const
-{
- if (!computed_authors) {
- ((reference *)this)->computed_authors = 1;
- string &result = ((reference *)this)->authors;
- int na = get_nauthors();
- result.clear();
- for (int i = 0; i < na; i++) {
- if (last_name_unambiguous.get(i)) {
- const char *e, *start = get_author_last_name(i, &e);
- assert(start != 0);
- result.append(start, e - start);
- }
- else {
- const char *e, *start = get_author(i, &e);
- assert(start != 0);
- result.append(start, e - start);
- }
- if (i == last_needed_author
- && et_al.length() > 0
- && et_al_min_elide > 0
- && last_needed_author + et_al_min_elide < na
- && na >= et_al_min_total) {
- result += et_al;
- break;
- }
- if (i < na - 1) {
- if (na == 2)
- result += join_authors_exactly_two;
- else if (i < na - 2)
- result += join_authors_default;
- else
- result += join_authors_last_two;
- }
- }
- }
- const char *start = authors.contents();
- *end = start + authors.length();
- return start;
-}
-
-int reference::get_nauthors() const
-{
- if (nauthors < 0) {
- const char *dummy;
- int na;
- for (na = 0; get_author(na, &dummy) != 0; na++)
- ;
- ((reference *)this)->nauthors = na;
- }
- return nauthors;
-}
-#line 1227 "y.tab.c"
-#define YYABORT goto yyabort
-#define YYREJECT goto yyabort
-#define YYACCEPT goto yyaccept
-#define YYERROR goto yyerrlab
-int
-#if defined(__STDC__)
-yyparse(void)
-#else
-yyparse()
-#endif
-{
- register int yym, yyn, yystate;
-#if YYDEBUG
- register char *yys;
- extern char *getenv();
-
- if (yys = getenv("YYDEBUG"))
- {
- yyn = *yys;
- if (yyn >= '0' && yyn <= '9')
- yydebug = yyn - '0';
- }
-#endif
-
- yynerrs = 0;
- yyerrflag = 0;
- yychar = (-1);
-
- yyssp = yyss;
- yyvsp = yyvs;
- *yyssp = yystate = 0;
-
-yyloop:
- if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, reading %d (%s)\n",
- YYPREFIX, yystate, yychar, yys);
- }
-#endif
- }
- if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, shifting to state %d\n",
- YYPREFIX, yystate, yytable[yyn]);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- yychar = (-1);
- if (yyerrflag > 0) --yyerrflag;
- goto yyloop;
- }
- if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
- yyn = yytable[yyn];
- goto yyreduce;
- }
- if (yyerrflag) goto yyinrecovery;
-#ifdef lint
- goto yynewerror;
-#endif
-yynewerror:
- yyerror("syntax error");
-#ifdef lint
- goto yyerrlab;
-#endif
-yyerrlab:
- ++yynerrs;
-yyinrecovery:
- if (yyerrflag < 3)
- {
- yyerrflag = 3;
- for (;;)
- {
- if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, error recovery shifting\
- to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- goto yyloop;
- }
- else
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: error recovery discarding state %d\n",
- YYPREFIX, *yyssp);
-#endif
- if (yyssp <= yyss) goto yyabort;
- --yyssp;
- --yyvsp;
- }
- }
- }
- else
- {
- if (yychar == 0) goto yyabort;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
- YYPREFIX, yystate, yychar, yys);
- }
-#endif
- yychar = (-1);
- goto yyloop;
- }
-yyreduce:
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, reducing by rule %d (%s)\n",
- YYPREFIX, yystate, yyn, yyrule[yyn]);
-#endif
- yym = yylen[yyn];
- yyval = yyvsp[1-yym];
- switch (yyn)
- {
-case 1:
-#line 250 "label.y"
-{ parse_result = (yyvsp[0].expr ? new analyzed_expr(yyvsp[0].expr) : 0); }
-break;
-case 2:
-#line 255 "label.y"
-{ yyval.expr = yyvsp[0].expr; }
-break;
-case 3:
-#line 257 "label.y"
-{ yyval.expr = new conditional_expr(yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].expr); }
-break;
-case 4:
-#line 262 "label.y"
-{ yyval.expr = 0; }
-break;
-case 5:
-#line 264 "label.y"
-{ yyval.expr = yyvsp[0].expr; }
-break;
-case 6:
-#line 269 "label.y"
-{ yyval.expr = yyvsp[0].expr; }
-break;
-case 7:
-#line 271 "label.y"
-{ yyval.expr = new alternative_expr(yyvsp[-2].expr, yyvsp[0].expr); }
-break;
-case 8:
-#line 273 "label.y"
-{ yyval.expr = new conditional_expr(yyvsp[-2].expr, yyvsp[0].expr, 0); }
-break;
-case 9:
-#line 278 "label.y"
-{ yyval.expr = yyvsp[0].expr; }
-break;
-case 10:
-#line 280 "label.y"
-{ yyval.expr = new list_expr(yyvsp[-1].expr, yyvsp[0].expr); }
-break;
-case 11:
-#line 285 "label.y"
-{ yyval.expr = yyvsp[0].expr; }
-break;
-case 12:
-#line 287 "label.y"
-{ yyval.expr = new substitute_expr(yyvsp[-2].expr, yyvsp[0].expr); }
-break;
-case 13:
-#line 292 "label.y"
-{ yyval.expr = new at_expr; }
-break;
-case 14:
-#line 294 "label.y"
-{
- yyval.expr = new literal_expr(literals.contents() + yyvsp[0].str.start,
- yyvsp[0].str.len);
- }
-break;
-case 15:
-#line 299 "label.y"
-{ yyval.expr = new field_expr(yyvsp[0].num, 0); }
-break;
-case 16:
-#line 301 "label.y"
-{ yyval.expr = new field_expr(yyvsp[-1].num, yyvsp[0].num - 1); }
-break;
-case 17:
-#line 303 "label.y"
-{
- switch (yyvsp[0].num) {
- case 'I':
- case 'i':
- case 'A':
- case 'a':
- yyval.expr = new format_expr(yyvsp[0].num);
- break;
- default:
- command_error("unrecognized format `%1'", char(yyvsp[0].num));
- yyval.expr = new format_expr('a');
- break;
- }
- }
-break;
-case 18:
-#line 319 "label.y"
-{
- yyval.expr = new format_expr('0', yyvsp[0].dig.ndigits, yyvsp[0].dig.val);
- }
-break;
-case 19:
-#line 323 "label.y"
-{
- switch (yyvsp[-1].num) {
- case 'l':
- yyval.expr = new map_expr(yyvsp[-4].expr, lowercase);
- break;
- case 'u':
- yyval.expr = new map_expr(yyvsp[-4].expr, uppercase);
- break;
- case 'c':
- yyval.expr = new map_expr(yyvsp[-4].expr, capitalize);
- break;
- case 'r':
- yyval.expr = new map_expr(yyvsp[-4].expr, reverse_name);
- break;
- case 'a':
- yyval.expr = new map_expr(yyvsp[-4].expr, abbreviate_name);
- break;
- case 'y':
- yyval.expr = new extractor_expr(yyvsp[-4].expr, find_year, yyvsp[-2].num);
- break;
- case 'n':
- yyval.expr = new extractor_expr(yyvsp[-4].expr, find_last_name, yyvsp[-2].num);
- break;
- default:
- yyval.expr = yyvsp[-4].expr;
- command_error("unknown function `%1'", char(yyvsp[-1].num));
- break;
- }
- }
-break;
-case 20:
-#line 354 "label.y"
-{ yyval.expr = new truncate_expr(yyvsp[-2].expr, yyvsp[0].num); }
-break;
-case 21:
-#line 356 "label.y"
-{ yyval.expr = new truncate_expr(yyvsp[-2].expr, -yyvsp[0].num); }
-break;
-case 22:
-#line 358 "label.y"
-{ yyval.expr = new star_expr(yyvsp[-1].expr); }
-break;
-case 23:
-#line 360 "label.y"
-{ yyval.expr = yyvsp[-1].expr; }
-break;
-case 24:
-#line 362 "label.y"
-{ yyval.expr = new separator_expr(yyvsp[-1].expr); }
-break;
-case 25:
-#line 367 "label.y"
-{ yyval.num = -1; }
-break;
-case 26:
-#line 369 "label.y"
-{ yyval.num = yyvsp[0].num; }
-break;
-case 27:
-#line 374 "label.y"
-{ yyval.num = yyvsp[0].num; }
-break;
-case 28:
-#line 376 "label.y"
-{ yyval.num = yyvsp[-1].num*10 + yyvsp[0].num; }
-break;
-case 29:
-#line 381 "label.y"
-{ yyval.dig.ndigits = 1; yyval.dig.val = yyvsp[0].num; }
-break;
-case 30:
-#line 383 "label.y"
-{ yyval.dig.ndigits = yyvsp[-1].dig.ndigits + 1; yyval.dig.val = yyvsp[-1].dig.val*10 + yyvsp[0].num; }
-break;
-case 31:
-#line 389 "label.y"
-{ yyval.num = 0; }
-break;
-case 32:
-#line 391 "label.y"
-{ yyval.num = 1; }
-break;
-case 33:
-#line 393 "label.y"
-{ yyval.num = -1; }
-break;
-#line 1550 "y.tab.c"
- }
- yyssp -= yym;
- yystate = *yyssp;
- yyvsp -= yym;
- yym = yylhs[yyn];
- if (yystate == 0 && yym == 0)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: after reduction, shifting from state 0 to\
- state %d\n", YYPREFIX, YYFINAL);
-#endif
- yystate = YYFINAL;
- *++yyssp = YYFINAL;
- *++yyvsp = yyval;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, reading %d (%s)\n",
- YYPREFIX, YYFINAL, yychar, yys);
- }
-#endif
- }
- if (yychar == 0) goto yyaccept;
- goto yyloop;
- }
- if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
- yystate = yytable[yyn];
- else
- yystate = yydgoto[yym];
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: after reduction, shifting from state %d \
-to state %d\n", YYPREFIX, *yyssp, yystate);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate;
- *++yyvsp = yyval;
- goto yyloop;
-yyoverflow:
- yyerror("yacc stack overflow");
-yyabort:
- return (1);
-yyaccept:
- return (0);
-}
diff --git a/contrib/groff/src/roff/groff/groff.man b/contrib/groff/src/roff/groff/groff.man
index 2227b71..347fec2 100644
--- a/contrib/groff/src/roff/groff/groff.man
+++ b/contrib/groff/src/roff/groff/groff.man
@@ -14,6 +14,9 @@ Front-Cover Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
+
+$FreeBSD$
+
..
.
.\" --------------------------------------------------------------------
@@ -1013,6 +1016,10 @@ Text output using the ISO \%Latin-1 (ISO \%8859-1) character set; see
.BR \%iso_8859_1 (7).
.
.TP
+.B koi8-r
+Text output using the Russian KOI8-R character set.
+.
+.TP
.B lbp
Output for Canon CAPSL printers (\%LBP-4 and \%LBP-8 series laser printers).
.
diff --git a/contrib/groff/src/roff/nroff/nroff.man b/contrib/groff/src/roff/nroff/nroff.man
index 6a9c942..4b81a78 100644
--- a/contrib/groff/src/roff/nroff/nroff.man
+++ b/contrib/groff/src/roff/nroff/nroff.man
@@ -15,6 +15,9 @@ manual into another language, under the above conditions for modified
versions, except that this permission notice may be included in
translations approved by the Free Software Foundation instead of in
the original English.
+
+ $FreeBSD$
+
..
.TH @G@NROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
@@ -49,6 +52,7 @@ command using groff.
Only
.BR ascii ,
.BR latin1 ,
+.BR koi8-r ,
.BR utf8 ,
and
.B cp1047
diff --git a/contrib/groff/src/roff/nroff/nroff.sh b/contrib/groff/src/roff/nroff/nroff.sh
index 5144ba4..e8feb04 100755
--- a/contrib/groff/src/roff/nroff/nroff.sh
+++ b/contrib/groff/src/roff/nroff/nroff.sh
@@ -1,31 +1,38 @@
#!/bin/sh
# Emulate nroff with groff.
+# $FreeBSD$
prog="$0"
# Default device.
# First try the "locale charmap" command, because it's most reliable.
# On systems where it doesn't exist, look at the environment variables.
case "`locale charmap 2>/dev/null`" in
+ ISO*8859-1 | ISO*8859-15)
+ T=-Tlatin1 ;;
+ KOI8-R)
+ T=-Tkoi8-r ;;
UTF-8)
T=-Tutf8 ;;
- ISO-8859-1)
- T=-Tlatin1 ;;
IBM-1047)
T=-Tcp1047 ;;
*)
case "${LC_ALL-${LC_CTYPE-${LANG}}}" in
+ iso_8859_1 | *.ISO*8859-1 | *.ISO*8859-15)
+ T=-Tlatin1 ;;
+ *.KOI8-R)
+ T=-Tkoi8-r ;;
*.UTF-8)
T=-Tutf8 ;;
- iso_8859_1 | *.ISO-8859-1)
- T=-Tlatin1 ;;
*.IBM-1047)
T=-Tcp1047 ;;
*)
case "$LESSCHARSET" in
- utf-8)
- T=-Tutf8 ;;
latin1)
T=-Tlatin1 ;;
+ koi8-r)
+ T=-Tkoi8-r ;;
+ utf-8)
+ T=-Tutf8 ;;
cp1047)
T=-Tcp1047 ;;
*)
@@ -52,7 +59,7 @@ for i
exit 1 ;;
-[iptSUC] | -[dmrno]*)
opts="$opts $1" ;;
- -Tascii | -Tlatin1 | -Tutf8 | -Tcp1047)
+ -Tascii | -Tlatin1 | -Tkoi8-r | -Tutf8 | -Tcp1047)
T=$1 ;;
-T*)
# ignore other devices
@@ -65,8 +72,7 @@ for i
echo "GNU nroff (groff) version @VERSION@"
exit 0 ;;
--help)
- echo "usage: nroff [-CchipStUv] [-dCS] [-mNAME] [-nNUM] [-oLIST] [-rCN]"
- echo " [-Tname] [FILE...]"
+ echo "usage: nroff [-CchipStUv] [-dCS] [-mNAME] [-nNUM] [-oLIST] [-rCN] [-Tname] [FILE...]"
exit 0 ;;
--)
shift
diff --git a/contrib/groff/tmac/eqnrc b/contrib/groff/tmac/eqnrc
index 874d735..e23db46 100644
--- a/contrib/groff/tmac/eqnrc
+++ b/contrib/groff/tmac/eqnrc
@@ -1,4 +1,5 @@
.\" Startup file for eqn.
+.\" $FreeBSD$
.EQ
sdefine << %{ < back 20 < }%
sdefine >> %{ > back 20 > }%
@@ -51,6 +52,7 @@ ifdef ps|X|html ! set draw_lines 1 !
ifdef ascii ! define n %1% !
ifdef latin1 ! define n %1% !
+ifdef koi8-r ! define n %1% !
ifdef utf8 ! define n %1% !
ifdef cp1047 ! define n %1% !
ifdef n !
diff --git a/contrib/groff/tmac/mdoc.local b/contrib/groff/tmac/mdoc.local
deleted file mode 100644
index 2de6621..0000000
--- a/contrib/groff/tmac/mdoc.local
+++ /dev/null
@@ -1,2 +0,0 @@
-.\" This file is loaded after doc.tmac.
-.\" Put any local modifications to doc.tmac here.
diff --git a/contrib/groff/tmac/troffrc b/contrib/groff/tmac/troffrc
index 61cb32d..231a66c 100644
--- a/contrib/groff/tmac/troffrc
+++ b/contrib/groff/tmac/troffrc
@@ -1,4 +1,5 @@
.\" Startup file for troff.
+.\" $FreeBSD$
.
.\" This is tested by pic.
.nr 0p 0
@@ -14,6 +15,7 @@
.do ds troffrc!X100-12 X.tmac
.do ds troffrc!ascii tty.tmac
.do ds troffrc!latin1 tty.tmac
+.do ds troffrc!koi8-r tty.tmac
.do ds troffrc!utf8 tty.tmac
.do ds troffrc!cp1047 tty.tmac
.do ds troffrc!lj4 lj4.tmac
@@ -26,7 +28,10 @@ troffrc!X100 troffrc!X100-12 troffrc!lj4 troff!lbp troffrc!html
.
.\" test whether we work under EBCDIC
.do ie '\[char97]'a' \
-. do tr \[char160]\~
+. ie '\*[.T]'koi8-r' \
+. do tr \[char154]\~
+. el \
+. do tr \[char160]\~
.el \
. do tr \[char65]\~
.
@@ -36,6 +41,8 @@ troffrc!X100 troffrc!X100-12 troffrc!lj4 troff!lbp troffrc!html
.\" Load hyphenation patterns and exceptions.
.do hpf hyphen.us
.do hpfa hyphenex.us
+.if '\*[.T]'koi8-r' \
+. do hpfa hyphen.ru
.
.\" Load composite mappings.
.do mso composite.tmac
@@ -43,4 +50,12 @@ troffrc!X100 troffrc!X100-12 troffrc!lj4 troff!lbp troffrc!html
.\" Handle paper formats
.do mso papersize.tmac
.
+.\" Disable SGR support in grotty(1).
+.if n \{\
+. do nop \X'tty: sgr 0'
+. sp -1
+. nr nl 0-1
+. nr % -1
+.\}
+.
.\" Don't let blank lines creep in here.
diff --git a/contrib/groff/tmac/tty-char.tmac b/contrib/groff/tmac/tty-char.tmac
index c5483ac..b7cf2e3 100644
--- a/contrib/groff/tmac/tty-char.tmac
+++ b/contrib/groff/tmac/tty-char.tmac
@@ -227,5 +227,7 @@
.
.ie '\*(.T'cp1047' \
. do mso cp1047.tmac
+.el .ie '\*(.T'koi8-r' \
+. do mso koi8-r.tmac
.el \
. do mso latin1.tmac
diff --git a/contrib/groff/tmac/tty.tmac b/contrib/groff/tmac/tty.tmac
index 4b337fd..34fa11d 100644
--- a/contrib/groff/tmac/tty.tmac
+++ b/contrib/groff/tmac/tty.tmac
@@ -79,9 +79,10 @@
.
.ie '\*(.T'cp1047' \
. do mso cp1047.tmac
-.el \
-. if !'\*(.T'ascii' \
-. do mso latin1.tmac
+.el .ie '\*(.T'koi8-r' \
+. do mso koi8-r.tmac
+.el .if !'\*(.T'ascii' \
+. do mso latin1.tmac
.
.\" If you want the character definitions in tty-char.tmac to be loaded
.\" automatically, remove the `\"' from the next line.
OpenPOWER on IntegriCloud