Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2004-03-24 13:20:14 +0300
committerCorinna Vinschen <corinna@vinschen.de>2004-03-24 13:20:14 +0300
commite4736d89a875cd3699c0777c59ebea3e282aa3c1 (patch)
tree2b0496ba8d95e863fbe65ad44d5c8363507420d7 /winsup/testsuite
parenta65cfe3c8cee9d8da739b5cc2b9731e21dc627be (diff)
* winsup.api/devdsp.c: New file, testing fhandler_dev_dsp code.
* winsup.api/devdsp_okay.h: Ditto.
Diffstat (limited to 'winsup/testsuite')
-rw-r--r--winsup/testsuite/ChangeLog5
-rw-r--r--winsup/testsuite/winsup.api/devdsp.c618
-rw-r--r--winsup/testsuite/winsup.api/devdsp_okay.h531
3 files changed, 1154 insertions, 0 deletions
diff --git a/winsup/testsuite/ChangeLog b/winsup/testsuite/ChangeLog
index 3a790587e..fa53a2f3f 100644
--- a/winsup/testsuite/ChangeLog
+++ b/winsup/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-24 Gerd Spalink <Gerd.Spalink@t-online.de>
+
+ * winsup.api/devdsp.c: New file, testing fhandler_dev_dsp code.
+ * winsup.api/devdsp_okay.h: Ditto.
+
2004-03-06 Christopher Faylor <cgf@redhat.com>
* winsup.api/known_bugs.tcl: Remove mknod01 since mknod now works.
diff --git a/winsup/testsuite/winsup.api/devdsp.c b/winsup/testsuite/winsup.api/devdsp.c
new file mode 100644
index 000000000..81d664ada
--- /dev/null
+++ b/winsup/testsuite/winsup.api/devdsp.c
@@ -0,0 +1,618 @@
+/* devdsp.c: Device tests for /dev/dsp
+
+ Copyright 2004 Red Hat, Inc
+
+ Written by Gerd Spalink (Gerd.Spalink@t-online.de)
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+/* Conventions used here:
+ We use the libltp framework
+ 1. Any unexpected behaviour leads to an exit with nonzero exit status
+ 2. Unexpected behaviour from /dev/dsp results in an exit status of TFAIL
+ 3. Unexpected behaviour from OS (malloc, fork, waitpid...) result
+ in an exit status of TBROK */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <sys/wait.h>
+#include <sys/types.h>
+#include <sys/soundcard.h>
+#include <math.h>
+#include <errno.h>
+#include "test.h" /* use libltp framework */
+
+static const char wavfile_okay[] =
+ {
+#include "devdsp_okay.h" /* a sound sample */
+ };
+
+/* Globals required by libltp */
+const char *TCID = "devdsp"; /* set test case identifier */
+int TST_TOTAL = 32;
+
+/* Prototypes */
+void sinegen (void *wave, int rate, int bits, int len, int stride);
+void sinegenw (int freq, int samprate, short *value, int len, int stride);
+void sinegenb (int freq, int samprate, unsigned char *value, int len,
+ int stride);
+void playtest (int fd, int rate, int stereo, int bits);
+void rectest (int fd, int rate, int stereo, int bits);
+void rwtest (int fd, int rate, int stereo, int bits);
+void setpars (int fd, int rate, int stereo, int bits);
+void forkplaytest (void);
+void forkrectest (void);
+void recordingtest (void);
+void playbacktest (void);
+void monitortest (void);
+void ioctltest (void);
+void playwavtest (void);
+void syncwithchild (pid_t pid, int expected_exit_status);
+void cleanup (void);
+
+static int expect_child_failure = 0;
+
+/* Sampling rates we want to test */
+static const int rates[] = { 44100, 22050, 8000 };
+
+/* Combinations of stereo/bits we want to test */
+struct sb
+{
+ int stereo;
+ int bits;
+};
+static const struct sb sblut[] = { {0, 8}, {0, 16}, {1, 8}, {1, 16} };
+
+int
+main (int argc, char *argv[])
+{
+ /* tst_brkm(TBROK, cleanup, "see if it breaks all right"); */
+ ioctltest ();
+ playbacktest ();
+ recordingtest ();
+ monitortest ();
+ forkplaytest ();
+ forkrectest ();
+ playwavtest ();
+ tst_exit ();
+ /* NOTREACHED */
+ return 0;
+}
+
+/* test some extra ioctls */
+void
+ioctltest (void)
+{
+ int audio1;
+ int ioctl_par;
+
+ audio1 = open ("/dev/dsp", O_WRONLY);
+ if (audio1 < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "open W: %s", strerror (errno));
+ }
+ setpars (audio1, 44100, 1, 16);
+ /* Note: block size may depend on parameters */
+ if (ioctl (audio1, SNDCTL_DSP_GETBLKSIZE, &ioctl_par) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "ioctl GETBLKSIZE: %s", strerror (errno));
+ }
+ tst_resm (TPASS, "ioctl get buffer size=%d", ioctl_par);
+ if (ioctl (audio1, SNDCTL_DSP_GETFMTS, &ioctl_par) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "ioctl GETFMTS: %s", strerror (errno));
+ }
+ tst_resm (TPASS, "ioctl get formats=%08x", ioctl_par);
+ if (close (audio1) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Close audio: %s", strerror (errno));
+ }
+}
+
+/* test write / play */
+void
+playbacktest (void)
+{
+ int audio1, audio2;
+ int rate, k;
+
+ audio1 = open ("/dev/dsp", O_WRONLY);
+ if (audio1 < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Error open /dev/dsp W: %s",
+ strerror (errno));
+ }
+ audio2 = open ("/dev/dsp", O_WRONLY);
+ if (audio2 >= 0)
+ {
+ tst_brkm (TFAIL, cleanup,
+ "Second open /dev/dsp W succeeded, but is expected to fail");
+ }
+ if (errno != EBUSY)
+ {
+ tst_brkm (TFAIL, cleanup, "Expected EBUSY here, exit: %s",
+ strerror (errno));
+ }
+ for (rate = 0; rate < sizeof (rates) / sizeof (int); rate++)
+ for (k = 0; k < sizeof (sblut) / sizeof (struct sb); k++)
+ {
+ playtest (audio1, rates[rate], sblut[k].stereo, sblut[k].bits);
+ tst_resm (TPASS, "Play bits=%2d stereo=%d rate=%5d",
+ sblut[k].bits, sblut[k].stereo, rates[rate]);
+ }
+ if (close (audio1) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Close audio: %s", strerror (errno));
+ }
+}
+
+/* test read / record */
+void
+recordingtest (void)
+{
+ int audio1, audio2;
+ int rate, k;
+ /* test read / record */
+ audio1 = open ("/dev/dsp", O_RDONLY);
+ if (audio1 < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Error open /dev/dsp R: %s",
+ strerror (errno));
+ }
+ audio2 = open ("/dev/dsp", O_RDONLY);
+ if (audio2 >= 0)
+ {
+ tst_brkm (TFAIL, cleanup,
+ "Second open /dev/dsp R succeeded, but is expected to fail");
+ }
+ if (errno != EBUSY)
+ {
+ tst_brkm (TFAIL, cleanup, "Expected EBUSY here, exit: %s",
+ strerror (errno));
+ }
+ for (rate = 0; rate < sizeof (rates) / sizeof (int); rate++)
+ for (k = 0; k < sizeof (sblut) / sizeof (struct sb); k++)
+ {
+ rectest (audio1, rates[rate], sblut[k].stereo, sblut[k].bits);
+ tst_resm (TPASS, "Record bits=%2d stereo=%d rate=%5d",
+ sblut[k].bits, sblut[k].stereo, rates[rate]);
+ }
+ if (close (audio1) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Close audio: %s", strerror (errno));
+ }
+}
+
+/* simultaneous read/write */
+void
+monitortest (void)
+{
+ int fd;
+
+ fd = open ("/dev/dsp", O_RDWR);
+ if (fd < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "open RW: %s", strerror (errno));
+ }
+ rwtest (fd, 44100, 1, 16);
+ tst_resm (TPASS, "Record+Play rate=44100, stereo, 16 bits");
+ if (close (fd) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Close audio: %s", strerror (errno));
+ }
+}
+
+void
+forkrectest (void)
+{
+ int pid;
+ int fd;
+
+ fd = open ("/dev/dsp", O_RDONLY);
+ if (fd < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Error open /dev/dsp R: %s",
+ strerror (errno));
+ }
+ pid = fork ();
+ if (pid < 0)
+ {
+ tst_brkm (TBROK, cleanup, "Fork failed: %s", strerror (errno));
+ }
+ if (pid)
+ {
+ tst_resm (TINFO, "forked, child PID=%d", pid);
+ sleep (1);
+ tst_resm (TINFO, "parent records..");
+ rectest (fd, 22050, 1, 16);
+ tst_resm (TINFO, "parent done");
+ syncwithchild (pid, 0);
+ }
+ else
+ { /* child */
+ tst_resm (TINFO, "child records..");
+ rectest (fd, 44100, 1, 16);
+ tst_resm (TINFO, "child done");
+ fflush (stdout);
+ exit (0); /* implicit close */
+ }
+ tst_resm (TPASS, "child records after fork");
+ /* fork again, but now we have done a read before,
+ * so the child is expected to fail
+ */
+ pid = fork ();
+ if (pid < 0)
+ {
+ tst_brkm (TBROK, cleanup, "Fork failed: %s", strerror (errno));
+ }
+ if (pid)
+ {
+ tst_resm (TINFO, "forked, child PID=%d", pid);
+ tst_resm (TINFO, "parent records again ..");
+ rectest (fd, 22050, 1, 16);
+ tst_resm (TINFO, "parent done");
+ syncwithchild (pid, TFAIL); /* expecting error exit */
+ }
+ else
+ { /* child */
+ expect_child_failure = 1;
+ tst_resm (TINFO, "child trying to record (should fail)..");
+ rectest (fd, 44100, 1, 16);
+ /* NOTREACHED */
+ tst_resm (TINFO, "child done");
+ fflush (stdout);
+ exit (0); /* implicit close */
+ }
+ if (close (fd) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Close audio: %s", strerror (errno));
+ }
+ tst_resm (TPASS, "child cannot record if parent is already recording");
+}
+
+void
+forkplaytest (void)
+{
+ int pid;
+ int fd;
+
+ fd = open ("/dev/dsp", O_WRONLY);
+ if (fd < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Error open /dev/dsp R: %s",
+ strerror (errno));
+ }
+ pid = fork ();
+ if (pid < 0)
+ {
+ tst_brkm (TBROK, cleanup, "Fork failed: %s", strerror (errno));
+ }
+ if (pid)
+ {
+ tst_resm (TINFO, "forked, child PID=%d", pid);
+ sleep (1);
+ tst_resm (TINFO, "parent plays..");
+ playtest (fd, 22050, 0, 8);
+ tst_resm (TINFO, "parent done");
+ syncwithchild (pid, 0);
+ }
+ else
+ { /* child */
+ tst_resm (TINFO, "child plays..");
+ playtest (fd, 44100, 1, 16);
+ tst_resm (TINFO, "child done");
+ fflush (stdout);
+ exit (0); /* implicit close */
+ }
+ tst_resm (TPASS, "child plays after fork");
+ /* fork again, but now we have done a write before,
+ * so the child is expected to fail
+ */
+ pid = fork ();
+ if (pid < 0)
+ {
+ tst_brkm (TBROK, cleanup, "Fork failed");
+ }
+ if (pid)
+ {
+ tst_resm (TINFO, "forked, child PID=%d", pid);
+ tst_resm (TINFO, "parent plays again..");
+ playtest (fd, 22050, 0, 8);
+ tst_resm (TINFO, "parent done");
+ syncwithchild (pid, TFAIL); /* expected failure */
+ }
+ else
+ { /* child */
+ expect_child_failure = 1;
+ tst_resm (TINFO, "child trying to play (should fail)..");
+ playtest (fd, 44100, 1, 16);
+ /* NOTREACHED */
+ tst_resm (TINFO, "child done");
+ fflush (stdout);
+ exit (0); /* implicit close */
+ }
+ if (close (fd) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Close audio: %s", strerror (errno));
+ }
+ tst_resm (TPASS, "child cannot play if parent is already playing");
+}
+
+void
+playtest (int fd, int rate, int stereo, int bits)
+{ /* Play sine waves, always 0.25 sec */
+ void *wave;
+ int n, c, b;
+ int size;
+ if (stereo)
+ c = 2;
+ else
+ c = 1;
+ if (bits == 8)
+ b = 1;
+ else
+ b = 2;
+ size = rate / 4 * c * b;
+
+ wave = malloc (size);
+ if (wave == NULL)
+ {
+ tst_brkm (TBROK, cleanup, "Malloc failed, exit");
+ }
+ setpars (fd, rate, stereo, bits);
+ sinegen (wave, rate, bits, rate / 4, c);
+
+ if ((n = write (fd, wave, size)) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "write: %s", strerror (errno));
+ }
+ if (n != size)
+ {
+ tst_brkm (TFAIL, cleanup, "Wrote %d, expected %d; exit", n, size);
+ }
+ free (wave);
+}
+
+void
+rectest (int fd, int rate, int stereo, int bits)
+{
+ void *wave;
+ int n, c, b;
+ int size;
+ if (stereo)
+ c = 2;
+ else
+ c = 1;
+ if (bits == 8)
+ b = 1;
+ else
+ b = 2;
+ size = rate / 4 * c * b;
+
+ wave = malloc (size);
+ if (wave == NULL)
+ {
+ tst_brkm (TBROK, cleanup, "Malloc failed, exit");
+ }
+ setpars (fd, rate, stereo, bits);
+ if ((n = read (fd, wave, size)) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "read: %s", strerror (errno));
+ }
+ if (n != size)
+ {
+ tst_brkm (TFAIL, cleanup, "Read n=%d (%d expected); exit", n, size);
+ }
+ if ((n = read (fd, wave, size)) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "read: %s", strerror (errno));
+ }
+ if (n != size)
+ {
+ tst_brkm (TFAIL, cleanup, "Read n=%d (%d expected); exit", n, size);
+ }
+ free (wave);
+}
+
+void
+rwtest (int fd, int rate, int stereo, int bits)
+{
+ int pid;
+ void *wave;
+ int n, c, b;
+ int size;
+ if (stereo)
+ c = 2;
+ else
+ c = 1;
+ if (bits == 8)
+ b = 1;
+ else
+ b = 2;
+ size = rate / 4 * c * b;
+
+ wave = malloc (size);
+ if (wave == NULL)
+ {
+ tst_brkm (TBROK, cleanup, "Malloc failed, exit");
+ }
+ setpars (fd, rate, stereo, bits);
+ pid = fork ();
+ if (pid < 0)
+ {
+ tst_brkm (TBROK, cleanup, "Fork failed: %s", strerror (errno));
+ }
+ if (pid)
+ {
+ tst_resm (TINFO, "forked, child PID=%d parent records", pid);
+ if ((n = read (fd, wave, size)) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "read: %s", strerror (errno));
+ }
+ if (n != size)
+ {
+ tst_brkm (TFAIL, cleanup, "Read n=%d (%d expected)", n, size);
+ }
+ free (wave);
+ syncwithchild (pid, 0);
+ }
+ else
+ { /* child */
+ tst_resm (TINFO, "child plays");
+ sinegen (wave, rate, bits, rate / 4, c);
+ if ((n = write (fd, wave, size)) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "child write: %s", strerror (errno));
+ }
+ if (n != size)
+ {
+ tst_brkm (TFAIL, cleanup, "child write n=%d OK (%d expected)", n,
+ size);
+ }
+ free (wave);
+ exit (0);
+ }
+}
+
+void
+setpars (int fd, int rate, int stereo, int bits)
+{
+ int ioctl_par = 0;
+
+ if (ioctl (fd, SNDCTL_DSP_SAMPLESIZE, &bits) < 0)
+ {
+ if (expect_child_failure)
+ { /* Note: Don't print this to stderr because we expect failures here
+ * for the some cases after fork()
+ */
+ tst_resm (TINFO, "ioctl SNDCTL_DSP_SAMPLESIZE: %s",
+ strerror (errno));
+ exit (TFAIL);
+ }
+ else
+ {
+ tst_brkm (TFAIL, cleanup, "ioctl SNDCTL_DSP_SAMPLESIZE: %s",
+ strerror (errno));
+ }
+ }
+ if (ioctl (fd, SNDCTL_DSP_STEREO, &stereo) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "ioctl SNDCTL_DSP_STEREO: %s",
+ strerror (errno));
+ }
+ if (ioctl (fd, SNDCTL_DSP_SPEED, &rate) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "ioctl SNDCTL_DSP_SPEED: %s",
+ strerror (errno));
+ }
+ if (ioctl (fd, SNDCTL_DSP_SYNC, &ioctl_par) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "ioctl SNDCTL_DSP_SYNC: %s",
+ strerror (errno));
+ }
+}
+
+void
+syncwithchild (pid_t pid, int expected_exit_status)
+{
+ int status;
+
+ if (waitpid (pid, &status, 0) != pid)
+ {
+ tst_brkm (TBROK, cleanup, "Wait for child: %s", strerror (errno));
+ }
+ if (!WIFEXITED (status))
+ {
+ tst_brkm (TBROK, cleanup, "Child had abnormal exit");
+ }
+ if (WEXITSTATUS (status) != expected_exit_status)
+ {
+ tst_brkm (TBROK, cleanup, "Child had exit status != 0");
+ }
+}
+
+void
+sinegen (void *wave, int rate, int bits, int len, int stride)
+{
+ if (bits == 8)
+ {
+ sinegenb (1000, rate, (unsigned char *) wave, len, stride);
+ if (stride == 2)
+ sinegenb (800, rate, (unsigned char *) wave + 1, len, stride);
+ }
+ else
+ {
+ sinegenw (1000, rate, (short *) wave, len, stride);
+ if (stride == 2)
+ sinegenw (800, rate, (short *) wave + 1, len, stride);
+ }
+}
+
+void
+sinegenw (int freq, int samprate, short *value, int len, int stride)
+{
+ double phase, incr;
+
+ phase = 0.0;
+ incr = M_PI * 2.0 * (double) freq / (double) samprate;
+ while (len-- > 0)
+ {
+ *value = (short) floor (0.5 + 32766.5 * sin (phase));
+ value += stride;
+ phase += incr;
+ }
+}
+
+void
+sinegenb (int freq, int samprate, unsigned char *value, int len, int stride)
+{
+ double phase, incr;
+
+ phase = 0.0;
+ incr = M_PI * 2.0 * (double) freq / (double) samprate;
+ while (len-- > 0)
+ {
+ *value = (unsigned char) floor (128.5 + 126.5 * sin (phase));
+ value += stride;
+ phase += incr;
+ }
+}
+
+void
+playwavtest (void)
+{
+ int audio;
+ int size = sizeof (wavfile_okay);
+ int n;
+ audio = open ("/dev/dsp", O_WRONLY);
+ if (audio < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Error open /dev/dsp W: %s",
+ strerror (errno));
+ }
+ if ((n = write (audio, wavfile_okay, size)) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "write: %s", strerror (errno));
+ }
+ if (n != size)
+ {
+ tst_brkm (TFAIL, cleanup, "Wrote %d, expected %d; exit", n, size);
+ }
+ if (close (audio) < 0)
+ {
+ tst_brkm (TFAIL, cleanup, "Close audio: %s", strerror (errno));
+ }
+ tst_resm (TPASS, "Set parameters from wave file header");
+}
+
+void
+cleanup (void)
+{
+}
diff --git a/winsup/testsuite/winsup.api/devdsp_okay.h b/winsup/testsuite/winsup.api/devdsp_okay.h
new file mode 100644
index 000000000..0fefa635c
--- /dev/null
+++ b/winsup/testsuite/winsup.api/devdsp_okay.h
@@ -0,0 +1,531 @@
+/* This is the decimal representation of a wave file.
+ It contains the spoken word "okay" sampled at 11025 Hz
+ and 8 bit resolution. */
+ 82, 73, 70, 70, 108, 30, 0, 0, 87, 65, 86, 69, 102, 109, 116, 32, 16, 0, 0,
+ 0, 1, 0, 1, 0, 17, 43, 0, 0, 17, 43, 0, 0, 1, 0, 8, 0, 100, 97, 116, 97,
+ 72, 30, 0, 0, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 115, 114, 114, 115, 115,
+ 115, 117, 117, 117, 116, 115, 115, 115, 115, 116, 116, 116, 118, 116, 115,
+ 115, 115, 115, 115, 116, 116, 116, 117, 116, 116, 115, 116, 116, 116, 116,
+ 117, 116, 116, 117, 116, 115, 116, 116, 116, 117, 117, 117, 116, 116, 117,
+ 116, 116, 116, 117, 117, 117, 117, 116, 116, 116, 118, 117, 117, 117, 117,
+ 116, 116, 116, 116, 116, 116, 117, 117, 117, 117, 116, 116, 116, 116, 116,
+ 116, 116, 117, 116, 116, 116, 115, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 117, 115, 115, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 118, 119, 118, 118, 118,
+ 118, 119, 119, 119, 119, 119, 120, 120, 120, 120, 121, 120, 120, 120, 120,
+ 121, 121, 120, 119, 118, 116, 115, 114, 115, 114, 113, 112, 112, 111, 112,
+ 113, 114, 116, 116, 117, 117, 117, 116, 115, 115, 115, 115, 116, 115, 115,
+ 114, 114, 114, 114, 114, 114, 114, 116, 115, 115, 115, 114, 114, 113, 113,
+ 114, 115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116,
+ 115, 115, 115, 115, 116, 116, 116, 118, 117, 117, 117, 117, 117, 118, 118,
+ 119, 119, 119, 120, 120, 120, 120, 120, 120, 121, 121, 121, 120, 119, 118,
+ 117, 117, 117, 116, 117, 116, 116, 115, 115, 115, 115, 115, 116, 116, 117,
+ 116, 116, 116, 116, 116, 116, 116, 115, 115, 115, 114, 113, 113, 113, 113,
+ 113, 113, 113, 115, 114, 113, 113, 113, 113, 114, 114, 114, 115, 114, 114,
+ 114, 114, 114, 114, 114, 115, 116, 115, 115, 115, 115, 114, 114, 115, 115,
+ 115, 117, 116, 116, 116, 116, 116, 116, 117, 117, 118, 118, 119, 118, 118,
+ 118, 118, 119, 120, 120, 121, 121, 122, 122, 123, 124, 125, 126, 127, 126,
+ 126, 126, 126, 127, -127, 124, 114, 102, 94, 89, 94, 102, 109, 115, 120,
+ 124, 123, 122, 121, 117, 116, 121, 124, 125, 124, 120, 114, 109, 107, 105,
+ 104, 108, 111, 115, 118, 120, 118, 116, 114, 114, 116, 117, 119, 120, 119,
+ 118, 116, 113, 112, 111, 113, 117, 120, 122, 122, 121, 118, 115, 114, 113,
+ 112, 113, 114, 113, 114, 114, 112, 111, 110, 110, 113, 116, 118, 119, 120,
+ 119, 116, 115, 114, 112, 111, 114, 114, 115, 115, 113, 110, 109, 110, 113,
+ 115, 118, 120, 120, 119, 119, 116, 114, 112, 112, 113, 114, 115, 115, 114,
+ 115, 114, 114, 115, 117, 117, 118, 119, 119, 118, 117, 116, 115, 115, 116,
+ 116, 118, 119, 119, 119, 118, 118, 118, 119, 120, 121, 122, 123, 123, 123,
+ 122, 122, 124, 122, 121, 119, 118, 117, 115, 115, 115, 115, 116, 117, 118,
+ 118, 119, 117, 112, 110, 110, 110, 111, 117, 118, 118, 118, 119, 118, 116,
+ 115, 114, 114, 116, 118, 118, 116, 116, 115, 113, 112, 113, 113, 114, 117,
+ 117, 117, 117, 115, 113, 112, 111, 108, 108, 110, 111, 113, 115, 116, 115,
+ 115, 116, 116, 114, 115, 115, 114, 115, 114, 112, 111, 113, 112, 113, 115,
+ 116, 117, 118, 118, 117, 116, 117, 115, 115, 116, 117, 117, 118, 118, 119,
+ 119, 119, 120, 122, 122, 124, 125, 126, -128, -127, -126, -124, -121,
+ -117, -112, -113, -123, 121, 108, 91, 75, 75, 84, 91, 103, 119, 127, -128,
+ -126, -127, 124, 120, 122, 121, 123, 127, 126, 120, 114, 110, 104, 99,
+ 101, 104, 107, 114, 120, 123, 123, 122, 119, 116, 116, 117, 116, 117, 118,
+ 117, 115, 113, 111, 110, 111, 113, 116, 120, 123, 124, 123, 121, 118, 115,
+ 113, 112, 112, 112, 114, 113, 112, 110, 107, 107, 107, 110, 112, 116, 119,
+ 120, 119, 118, 115, 113, 110, 110, 111, 112, 113, 114, 114, 116, 115, 114,
+ 115, 116, 117, 118, 119, 119, 118, 117, 116, 115, 113, 114, 114, 115, 117,
+ 119, 119, 120, 120, 120, 121, 122, 123, 123, 125, 127, -128, -127, -126,
+ -126, -124, -121, -120, -119, -123, 124, 113, 101, 90, 81, 81, 87, 96,
+ 108, 121, 127, -127, -125, -125, 126, 122, 121, 120, 120, 122, 121, 118,
+ 114, 110, 106, 103, 102, 104, 106, 112, 117, 120, 122, 123, 122, 119, 117,
+ 117, 116, 115, 116, 116, 115, 115, 114, 113, 113, 113, 115, 117, 119, 120,
+ 120, 120, 118, 114, 112, 110, 108, 108, 108, 109, 110, 112, 111, 112, 112,
+ 112, 112, 112, 114, 117, 117, 118, 117, 115, 113, 112, 111, 111, 113, 114,
+ 116, 118, 119, 119, 118, 118, 118, 117, 117, 117, 118, 117, 118, 118, 118,
+ 119, 119, 120, 121, 122, 124, 126, 127, -128, -127, -124, -122, -120,
+ -117, -115, -117, -125, 119, 102, 85, 77, 76, 83, 91, 103, 115, 124, -125,
+ -122, -126, 124, 121, 119, 119, 121, 122, 121, 118, 117, 114, 109, 106,
+ 103, 102, 107, 112, 117, 119, 122, 122, 120, 119, 117, 114, 112, 114, 114,
+ 115, 116, 115, 114, 114, 114, 114, 116, 116, 118, 119, 120, 121, 119, 116,
+ 113, 109, 108, 107, 107, 109, 111, 112, 113, 114, 115, 113, 112, 112, 112,
+ 113, 114, 115, 116, 115, 114, 113, 113, 113, 113, 113, 114, 117, 117, 118,
+ 118, 117, 117, 117, 116, 116, 117, 117, 118, 119, 118, 118, 118, 118, 119,
+ 120, 121, 122, 124, 126, -128, -127, -125, -124, -123, -120, -117, -114,
+ -115, -123, 119, 102, 84, 76, 76, 80, 90, 102, 115, 125, -124, -120, -125,
+ 124, 121, 119, 119, 120, 121, 121, 120, 119, 117, 110, 105, 101, 101, 104,
+ 110, 114, 118, 121, 123, 122, 120, 118, 115, 113, 114, 116, 116, 117, 117,
+ 115, 115, 114, 114, 113, 114, 117, 118, 120, 120, 119, 117, 114, 111, 109,
+ 107, 107, 107, 109, 112, 115, 115, 115, 115, 115, 114, 113, 113, 113, 113,
+ 114, 114, 114, 114, 113, 113, 113, 114, 116, 117, 118, 119, 119, 120, 118,
+ 118, 117, 116, 117, 117, 118, 118, 118, 119, 119, 120, 121, 121, 121, 123,
+ 124, 125, 126, -128, -127, -124, -121, -118, -116, -112, -114, -123, 118,
+ 99, 81, 75, 77, 82, 92, 104, 114, 125, -123, -122, -128, 123, 120, 118,
+ 119, 121, 121, 120, 121, 121, 117, 112, 107, 102, 102, 105, 110, 114, 118,
+ 121, 124, 123, 121, 118, 114, 113, 113, 113, 115, 116, 116, 117, 117, 116,
+ 115, 115, 115, 115, 116, 118, 119, 118, 118, 115, 112, 110, 107, 106, 107,
+ 110, 112, 115, 117, 118, 117, 117, 115, 113, 112, 112, 111, 112, 113, 113,
+ 113, 114, 114, 116, 115, 116, 117, 118, 119, 119, 118, 118, 117, 116, 115,
+ 116, 116, 117, 118, 119, 121, 120, 120, 121, 121, 121, 121, 121, 122, 123,
+ 125, 125, 126, -127, -124, -122, -119, -117, -115, -117, -123, 120, 102,
+ 88, 81, 80, 85, 92, 100, 110, 120, -127, -125, 127, 123, 121, 120, 121,
+ 122, 121, 121, 123, 122, 119, 114, 109, 104, 103, 104, 107, 110, 114, 117,
+ 119, 121, 121, 119, 117, 114, 114, 114, 116, 117, 117, 117, 118, 118, 117,
+ 115, 113, 113, 113, 115, 116, 117, 116, 114, 113, 110, 109, 109, 110, 111,
+ 113, 116, 117, 117, 116, 115, 112, 111, 110, 109, 112, 113, 115, 117, 118,
+ 117, 117, 116, 115, 114, 115, 115, 116, 118, 119, 120, 120, 120, 118, 117,
+ 116, 116, 116, 118, 118, 120, 121, 122, 122, 122, 120, 120, 120, 121, 123,
+ 125, 127, -126, -123, -121, -120, -119, -118, -120, -128, 115, 101, 91,
+ 87, 86, 89, 94, 100, 109, 117, 123, 125, 123, 121, 119, 119, 120, 121,
+ 120, 121, 122, 122, 121, 117, 112, 107, 105, 106, 106, 108, 111, 113, 117,
+ 119, 119, 118, 117, 114, 113, 114, 115, 116, 117, 118, 119, 120, 118, 117,
+ 114, 112, 112, 113, 113, 114, 114, 114, 114, 112, 111, 110, 110, 110, 111,
+ 113, 114, 115, 115, 115, 113, 112, 111, 110, 111, 111, 113, 115, 116, 117,
+ 117, 117, 116, 115, 115, 113, 114, 115, 116, 118, 119, 120, 120, 119, 118,
+ 118, 117, 116, 117, 118, 119, 120, 121, 121, 121, 121, 121, 121, 121, 122,
+ 123, 125, 127, -128, -126, -124, -122, -120, -120, -126, 119, 108, 101,
+ 93, 91, 93, 93, 97, 105, 112, 117, 120, 120, 118, 117, 118, 118, 117, 118,
+ 120, 122, 123, 123, 121, 116, 114, 110, 108, 107, 107, 108, 110, 114, 116,
+ 117, 117, 116, 115, 114, 114, 114, 115, 117, 117, 119, 120, 120, 119, 118,
+ 116, 115, 114, 113, 113, 112, 112, 112, 111, 111, 111, 111, 112, 112, 113,
+ 113, 115, 116, 116, 116, 115, 115, 113, 113, 113, 113, 114, 115, 116, 117,
+ 117, 117, 116, 116, 115, 116, 116, 116, 117, 118, 119, 120, 120, 120, 119,
+ 119, 118, 118, 117, 117, 118, 119, 119, 120, 121, 121, 122, 123, 121, 121,
+ 121, 122, 123, 125, 127, -127, -126, -125, -124, -127, 122, 115, 109, 103,
+ 100, 101, 100, 102, 105, 109, 114, 115, 115, 115, 113, 113, 114, 114, 115,
+ 117, 120, 121, 122, 123, 121, 118, 116, 113, 112, 111, 111, 111, 112, 114,
+ 115, 116, 116, 115, 114, 113, 114, 113, 113, 114, 115, 117, 120, 121, 121,
+ 120, 119, 118, 117, 115, 113, 113, 113, 113, 114, 114, 113, 113, 111, 111,
+ 111, 111, 112, 112, 114, 116, 116, 117, 116, 116, 115, 115, 114, 114, 114,
+ 116, 116, 117, 118, 118, 118, 118, 117, 117, 116, 116, 116, 118, 118, 119,
+ 119, 118, 118, 118, 117, 117, 117, 117, 117, 119, 119, 119, 120, 120, 120,
+ 120, 120, 119, 119, 119, 119, 120, 120, 120, 121, 120, 120, 120, 120, 120,
+ 120, 119, 118, 117, 115, 114, 113, 113, 112, 112, 112, 112, 113, 113, 113,
+ 114, 113, 113, 113, 113, 113, 114, 115, 116, 118, 117, 117, 117, 116, 116,
+ 116, 115, 115, 115, 115, 116, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 117, 116, 117, 117, 117, 117, 117, 117, 117, 116, 116, 117, 116, 115, 115,
+ 115, 115, 115, 115, 115, 114, 115, 114, 114, 114, 114, 114, 115, 115, 116,
+ 117, 116, 116, 116, 116, 116, 116, 116, 116, 117, 117, 118, 117, 117, 117,
+ 116, 116, 116, 116, 116, 117, 117, 118, 118, 117, 117, 117, 117, 117, 117,
+ 117, 117, 117, 117, 118, 117, 117, 117, 116, 116, 116, 116, 116, 117, 117,
+ 118, 117, 117, 117, 117, 116, 117, 117, 117, 117, 117, 117, 118, 117, 117,
+ 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 115, 115,
+ 115, 115, 115, 116, 114, 114, 115, 115, 115, 115, 116, 116, 116, 117, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117,
+ 118, 117, 117, 117, 117, 117, 117, 117, 117, 116, 116, 116, 117, 115, 115,
+ 116, 116, 116, 117, 117, 117, 117, 117, 118, 117, 117, 117, 117, 117, 117,
+ 117, 117, 117, 117, 117, 116, 116, 116, 116, 116, 116, 116, 117, 117, 116,
+ 117, 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 118, 117, 117, 116,
+ 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 117, 117,
+ 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 118, 117, 117, 117, 116, 116, 116, 116, 116, 115, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 115,
+ 115, 115, 116, 116, 117, 117, 117, 117, 117, 118, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 117, 117,
+ 117, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 117, 117, 116, 116, 116, 116, 116, 115, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 117, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 115, 115, 116,
+ 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, 117,
+ 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116,
+ 116, 117, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 117, 116, 117, 117, 117, 117, 117, 116, 116,
+ 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116,
+ 116, 116, 116, 117, 116, 116, 117, 117, 116, 116, 116, 117, 116, 116, 116,
+ 116, 116, 116, 117, 117, 117, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 116, 116, 116, 116, 117, 117, 116, 116, 117, 118, 117, 117, 117, 117,
+ 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 117, 117,
+ 117, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116,
+ 114, 108, 108, 118, 125, -126, 123, 98, 95, 109, 117, 124, 127, 123, 118,
+ 109, 103, 113, 125, -127, 120, 108, 106, 112, 115, 112, 110, 112, 111,
+ 112, 112, 116, 120, 120, 118, 114, 113, 120, 122, 119, 116, 115, 115, 117,
+ 117, 116, 115, 115, 115, 112, 107, 109, 119, 121, 120, 118, 114, 117, 120,
+ 118, 119, 119, 117, 119, 116, 113, 119, 120, 117, 114, 112, 114, 117, 117,
+ 116, 113, 114, 118, 117, 117, 119, 121, 118, 113, 114, 116, 116, 118, 116,
+ 114, 113, 111, 112, 117, 118, 121, 119, 117, 117, 113, 110, 114, 117, 119,
+ 117, 114, 113, 113, 114, 115, 115, 117, 117, 114, 114, 116, 119, 121, 119,
+ 115, 116, 117, 117, 120, 122, 121, 115, 109, 112, 117, 117, 116, 115, 116,
+ 117, 113, 113, 116, 118, 118, 115, 115, 118, 120, 120, 120, 118, 119, 120,
+ 119, 119, 118, 119, 119, 117, 116, 117, 118, 119, 116, 115, 117, 118, 118,
+ 118, 118, 118, 119, 119, 120, 120, 121, 120, 118, 118, 119, 119, 119, 118,
+ 118, 117, 116, 117, 117, 118, 118, 117, 116, 117, 116, 117, 119, 118, 117,
+ 116, 118, 120, 117, 117, 119, 120, 119, 118, 118, 118, 119, 118, 117, 116,
+ 119, 118, 117, 116, 117, 118, 118, 117, 116, 117, 118, 117, 116, 116, 117,
+ 118, 117, 115, 116, 118, 119, 117, 117, 119, 117, 117, 116, 117, 118, 118,
+ 117, 116, 116, 117, 117, 117, 116, 116, 116, 117, 116, 115, 116, 116, 116,
+ 118, 117, 116, 116, 117, 117, 117, 117, 117, 116, 115, 116, 116, 117, 118,
+ 116, 114, 115, 115, 116, 116, 117, 117, 115, 115, 116, 116, 118, 118, 117,
+ 117, 116, 116, 117, 117, 118, 117, 116, 116, 115, 115, 115, 115, 116, 118,
+ 116, 115, 115, 116, 116, 116, 116, 117, 117, 117, 118, 117, 117, 117, 117,
+ 116, 116, 116, 117, 115, 115, 114, 114, 115, 115, 115, 116, 115, 114, 114,
+ 117, 116, 116, 115, 115, 115, 116, 116, 116, 116, 116, 115, 116, 116, 116,
+ 116, 115, 115, 115, 116, 115, 115, 115, 116, 116, 116, 116, 115, 115, 116,
+ 116, 117, 116, 116, 116, 117, 117, 116, 116, 116, 117, 117, 118, 117, 117,
+ 117, 117, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 117,
+ 118, 118, 117, 118, 117, 117, 117, 117, 117, 118, 117, 117, 116, 115, 117,
+ 117, 117, 116, 115, 116, 117, 117, 117, 117, 117, 117, 116, 117, 117, 117,
+ 116, 115, 115, 116, 117, 118, 116, 116, 118, 117, 116, 117, 117, 117, 116,
+ 116, 116, 117, 116, 117, 115, 115, 116, 117, 117, 116, 115, 115, 117, 118,
+ 119, 117, 116, 116, 115, 116, 117, 117, 116, 115, 115, 117, 117, 117, 115,
+ 115, 115, 115, 114, 115, 116, 116, 115, 116, 116, 116, 116, 115, 116, 116,
+ 116, 116, 115, 116, 116, 116, 116, 115, 116, 117, 116, 117, 118, 116, 116,
+ 116, 116, 116, 117, 117, 117, 117, 118, 118, 117, 118, 118, 117, 116, 117,
+ 117, 118, 118, 117, 115, 117, 118, 118, 118, 117, 115, 115, 117, 118, 117,
+ 116, 116, 114, 115, 117, 117, 117, 116, 115, 116, 116, 116, 117, 116, 116,
+ 115, 115, 115, 115, 116, 115, 114, 116, 115, 115, 115, 114, 113, 113, 113,
+ 113, 114, 113, 112, 111, 113, 114, 113, 113, 114, 112, 113, 113, 113, 114,
+ 113, 113, 113, 114, 114, 114, 114, 114, 114, 115, 115, 116, 117, 116, 116,
+ 116, 117, 117, 117, 117, 117, 117, 118, 118, 120, 120, 121, 120, 120, 122,
+ 123, 123, 125, 126, 127, -128, -128, -126, -124, -121, -117, -112, -113,
+ -127, 106, 94, 105, 117, 114, 106, 94, 85, 89, 105, 116, 121, 118, 109,
+ 106, 116, 127, -126, 127, 121, 116, 115, 117, 117, 117, 116, 112, 103, 99,
+ 106, 110, 111, 108, 103, 104, 109, 112, 115, 116, 114, 111, 110, 113, 116,
+ 118, 116, 112, 110, 111, 112, 112, 114, 115, 113, 111, 111, 113, 116, 118,
+ 116, 115, 115, 117, 119, 120, 120, 120, 121, 122, 125, -126, -121, -119,
+ -116, -111, -107, -100, -101, -111, 110, 73, 90, 124, 119, 96, 82, 71, 71,
+ 95, 119, -127, 126, 114, 103, 115, -117, -108, -116, -126, 123, 119, 116,
+ 114, 116, 118, 112, 101, 91, 93, 103, 112, 113, 107, 108, 111, 114, 120,
+ 125, 124, 119, 111, 110, 116, 120, 117, 112, 107, 106, 108, 112, 112, 114,
+ 114, 110, 107, 110, 115, 118, 117, 114, 111, 110, 112, 114, 116, 116, 114,
+ 110, 110, 113, 117, 118, 116, 113, 114, 117, 118, 119, 120, 122, 123, 122,
+ 124, -127, -124, -122, -117, -114, -112, -110, -103, -96, -116, 80, 53,
+ 97, -125, 112, 89, 77, 65, 73, 107, -121, -114, -123, 113, 104, 127, -104,
+ -103, -117, -127, 124, 115, 106, 105, 113, 117, 108, 91, 80, 86, 103, 114,
+ 112, 110, 111, 111, 113, 122, -127, -128, 120, 113, 110, 114, 117, 115,
+ 112, 109, 106, 105, 105, 109, 116, 116, 109, 105, 108, 115, 119, 120, 117,
+ 114, 112, 114, 118, 122, 124, 120, 117, 118, 121, 125, -128, -127, -124,
+ -121, -116, -108, -93, -75, -73, -120, 57, 40, 106, -108, 120, 81, 62, 48,
+ 59, 104, -106, -99, -123, 106, 100, -128, -96, -92, -107, -120, 127, 108,
+ 93, 100, 118, 123, 105, 79, 69, 82, 106, 119, 118, 116, 117, 116, 118,
+ 127, -121, -123, 121, 111, 108, 110, 110, 111, 111, 109, 105, 101, 102,
+ 112, 121, 122, 112, 105, 111, 120, 123, 120, 115, 112, 108, 110, 114, 115,
+ 113, 111, 109, 111, 115, 119, 122, 122, 120, 120, 120, 125, -124, -119,
+ -117, -118, -114, -105, -88, -73, -79, 120, 40, 37, 115, -106, 109, 69,
+ 57, 51, 67, 119, -95, -97, -125, 108, 110, -118, -92, -93, -109, -122,
+ 120, 97, 84, 95, 118, 121, 98, 72, 68, 88, 110, 123, 124, 123, 123, 119,
+ 115, 125, -119, -125, 116, 106, 103, 104, 106, 110, 114, 111, 103, 99,
+ 105, 120, -127, 123, 111, 105, 111, 118, 120, 118, 114, 109, 106, 110,
+ 116, 122, 122, 118, 114, 117, 121, 126, -126, -124, -123, -122, -119,
+ -106, -88, -68, -59, -99, 61, 9, 75, -100, -117, 80, 54, 47, 46, 87, -103,
+ -78, -104, 115, 104, 124, -100, -85, -95, -114, -127, 105, 76, 77, 110,
+ -127, 111, 76, 60, 73, 101, 122, -127, -126, -128, 122, 116, 123, -120,
+ -116, 124, 107, 99, 98, 99, 105, 114, 112, 104, 96, 100, 115, -126, -126,
+ 118, 108, 107, 116, 122, 121, 117, 111, 103, 103, 110, 116, 119, 117, 113,
+ 112, 114, 118, 126, -126, 126, 123, 125, -126, -114, -104, -96, -88, -76,
+ -72, -119, 48, 20, 94, -102, 120, 67, 50, 48, 60, 109, -94, -84, -115,
+ 114, 111, -122, -94, -87, -104, -120, 120, 94, 71, 81, 115, 126, 100, 64,
+ 58, 83, 118, -122, -126, 125, 125, 121, 117, 127, -118, -125, 111, 97, 94,
+ 99, 101, 106, 110, 109, 103, 101, 108, 122, -126, 126, 113, 107, 112, 117,
+ 117, 115, 114, 112, 108, 106, 112, 121, 123, 118, 115, 117, 120, 124,
+ -126, -122, -119, -118, -113, -100, -81, -57, -59, -123, 30, 11, 103, -96,
+ 115, 62, 48, 42, 50, 108, -85, -76, -112, 114, 112, -121, -92, -85, -100,
+ -117, 119, 85, 63, 80, 117, 126, 99, 66, 60, 82, 115, -121, -120, -121,
+ -124, 120, 112, 123, -119, -123, 113, 96, 90, 92, 98, 108, 115, 113, 104,
+ 102, 109, 124, -121, -127, 113, 105, 110, 116, 116, 114, 112, 109, 106,
+ 107, 114, 121, 123, 119, 116, 116, 119, 124, -125, -122, -124, -123, -118,
+ -107, -90, -67, -56, -80, 87, 7, 42, -117, -104, 91, 53, 46, 44, 72, -117,
+ -74, -89, -126, 111, 118, -113, -89, -90, -107, -124, 104, 68, 64, 98,
+ -127, 118, 84, 59, 68, 102, -124, -119, -121, -121, 126, 113, 114, -127,
+ -119, 124, 101, 88, 91, 96, 104, 114, 116, 109, 103, 104, 118, -122, -122,
+ 117, 103, 105, 115, 120, 118, 115, 113, 108, 104, 109, 120, 124, 122, 117,
+ 114, 117, 124, -124, -121, -118, -117, -113, -103, -83, -60, -52, -107,
+ 44, 4, 87, -98, 125, 70, 50, 45, 49, 99, -96, -77, -103, 123, 112, 126,
+ -102, -88, -100, -113, 124, 87, 58, 76, 118, -127, 102, 71, 65, 85, 119,
+ -121, -121, -118, -121, 120, 111, 119, -123, -126, 110, 92, 88, 92, 98,
+ 109, 117, 113, 106, 104, 113, -128, -119, -128, 111, 104, 109, 115, 119,
+ 119, 116, 110, 102, 103, 116, 126, 124, 117, 113, 115, 120, 125, -125,
+ -120, -120, -119, -115, -103, -81, -59, -57, -105, 50, 7, 84, -101, -126,
+ 76, 51, 40, 49, 101, -94, -80, -103, 125, 113, 124, -106, -92, -100, -112,
+ 124, 85, 58, 76, 116, -125, 106, 74, 63, 85, 120, -119, -118, -120, -126,
+ 118, 112, 120, -125, -128, 109, 91, 87, 93, 99, 110, 117, 113, 106, 104,
+ 114, -127, -120, 126, 110, 103, 109, 116, 119, 117, 113, 109, 102, 105,
+ 117, 126, 123, 115, 111, 114, 121, 127, -124, -123, -125, -124, -116,
+ -104, -88, -70, -55, -77, 91, 9, 45, -118, -108, 94, 59, 43, 42, 77, -116,
+ -79, -91, -123, 111, 116, -114, -93, -99, -110, -124, 98, 63, 65, 105,
+ -125, 117, 84, 65, 79, 111, -122, -118, -121, -125, 123, 112, 114, 127,
+ -126, 114, 94, 88, 90, 97, 105, 114, 115, 110, 105, 110, 124, -121, -125,
+ 115, 105, 108, 115, 117, 114, 112, 110, 104, 103, 112, 123, 125, 118, 113,
+ 113, 117, 125, -126, -125, -127, 127, -125, -115, -101, -88, -76, -68,
+ -80, 107, 24, 42, -128, -109, 97, 59, 47, 48, 79, -122, -89, -97, -124,
+ 115, 118, -114, -97, -102, -115, -127, 102, 71, 72, 103, 127, 117, 88, 68,
+ 81, 113, -121, -122, -127, -128, 122, 115, 116, 123, 125, 114, 98, 91, 94,
+ 100, 106, 111, 111, 108, 105, 113, 125, -125, 126, 114, 108, 111, 117,
+ 118, 114, 110, 108, 104, 105, 112, 118, 120, 117, 114, 113, 118, 125,
+ -128, 127, 124, 122, 125, -122, -111, -104, -100, -92, -79, -73, -101, 75,
+ 26, 82, -115, 122, 74, 55, 51, 67, 108, -110, -100, -111, -128, 117, -126,
+ -105, -102, -115, -125, 118, 92, 77, 87, 113, 122, 103, 79, 75, 101, -126,
+ -119, 127, 121, 123, 122, 118, 119, 124, 118, 102, 91, 93, 101, 106, 106,
+ 107, 109, 111, 114, 121, -128, 127, 119, 111, 111, 115, 116, 112, 109,
+ 108, 108, 106, 106, 112, 120, 121, 117, 114, 117, 122, 125, 126, 124, 124,
+ 126, -127, -122, -115, -110, -108, -100, -87, -77, -87, 108, 40, 60, 127,
+ -123, 89, 65, 60, 65, 92, -127, -107, -105, -121, 116, 119, -117, -106,
+ -112, -121, 123, 101, 83, 85, 108, 123, 110, 88, 80, 97, 121, -125, 126,
+ 119, 121, 123, 120, 119, 121, 118, 107, 96, 94, 101, 106, 106, 105, 108,
+ 111, 114, 120, 123, 125, 123, 116, 111, 111, 114, 113, 109, 108, 106, 105,
+ 108, 114, 119, 120, 116, 114, 119, 124, 126, 124, 122, 121, 123, 125,
+ -128, -123, -119, -116, -114, -105, -94, -86, -86, -109, 86, 49, 90, -124,
+ 117, 83, 64, 60, 76, 111, -118, -110, -118, 121, 114, -127, -108, -107,
+ -120, 125, 113, 98, 94, 102, 116, 115, 99, 87, 90, 107, 126, -127, 119,
+ 115, 120, 123, 122, 121, 118, 112, 103, 98, 100, 107, 111, 107, 103, 104,
+ 110, 119, 124, 123, 119, 116, 111, 111, 115, 117, 112, 108, 106, 106, 108,
+ 114, 117, 118, 116, 115, 117, 121, 124, 124, 121, 117, 118, 123, 125, 126,
+ -128, -125, -123, -118, -109, -99, -92, -91, -98, -113, 97, 59, 90, -126,
+ 118, 82, 61, 63, 84, 116, -122, -121, -127, 117, 115, -123, -106, -108,
+ -124, 119, 111, 105, 103, 106, 114, 113, 99, 89, 91, 107, 126, -127, 116,
+ 109, 115, 124, 125, 123, 117, 108, 104, 103, 106, 110, 111, 107, 105, 106,
+ 108, 113, 119, 121, 118, 113, 109, 112, 118, 120, 117, 109, 105, 108, 112,
+ 116, 117, 116, 113, 110, 112, 118, 122, 120, 118, 117, 117, 119, 122, 125,
+ 126, 125, 126, -124, -119, -115, -110, -104, -103, -100, -99, -103, 124,
+ 76, 74, 109, 118, 96, 77, 69, 76, 100, 121, -127, -123, 127, 116, 123,
+ -116, -113, -120, 126, 118, 113, 107, 104, 108, 113, 108, 97, 93, 100,
+ 115, 125, 119, 111, 114, 118, 121, 122, 119, 112, 108, 105, 106, 111, 111,
+ 108, 107, 107, 109, 113, 118, 117, 116, 115, 113, 112, 116, 117, 114, 111,
+ 108, 109, 110, 111, 113, 113, 113, 114, 113, 115, 118, 121, 120, 117, 117,
+ 119, 122, 124, 124, 121, 121, 125, -125, -120, -117, -118, -114, -104,
+ -98, -100, -103, -110, 117, 80, 80, 110, 113, 95, 79, 68, 78, 102, 121,
+ -126, -123, 126, 117, 123, -118, -111, -118, 125, 114, 111, 110, 109, 110,
+ 112, 105, 98, 96, 102, 115, 122, 117, 109, 111, 120, 123, 120, 115, 110,
+ 110, 109, 110, 112, 111, 107, 107, 111, 113, 116, 116, 115, 113, 113, 113,
+ 111, 112, 113, 111, 107, 107, 108, 111, 114, 113, 113, 114, 117, 120, 119,
+ 118, 117, 116, 116, 118, 118, 117, 116, 117, 119, 121, 124, 126, -128,
+ -124, -122, -122, -119, -111, -102, -102, -106, -110, -114, 125, 91, 82,
+ 104, 112, 95, 79, 73, 83, 103, 117, 123, 125, 124, 119, 122, -120, -113,
+ -121, 122, 116, 117, 118, 114, 108, 107, 107, 100, 97, 101, 109, 116, 114,
+ 107, 110, 119, 125, 124, 119, 115, 113, 113, 114, 114, 115, 112, 108, 107,
+ 109, 112, 114, 110, 108, 110, 110, 110, 112, 115, 114, 111, 109, 111, 115,
+ 116, 114, 112, 113, 113, 115, 116, 116, 115, 115, 115, 115, 118, 121, 119,
+ 118, 117, 118, 120, 123, 125, 125, 125, -128, -124, -119, -115, -111,
+ -107, -108, -108, -106, -105, -122, 93, 75, 100, 116, 100, 80, 74, 79, 95,
+ 112, 120, 127, -128, 119, 118, -123, -110, -114, -128, 118, 116, 117, 114,
+ 108, 108, 107, 103, 97, 99, 107, 116, 116, 110, 110, 119, 125, 125, 122,
+ 118, 114, 114, 113, 114, 116, 113, 105, 103, 108, 114, 116, 111, 107, 107,
+ 111, 114, 115, 115, 113, 112, 112, 111, 114, 116, 114, 112, 112, 113, 115,
+ 116, 117, 116, 116, 115, 114, 116, 118, 118, 117, 117, 116, 119, 122, 123,
+ 124, 124, 126, -128, -124, -120, -118, -117, -113, -110, -108, -107, -107,
+ -116, 112, 82, 91, 115, 110, 89, 78, 76, 87, 105, 117, 121, 126, 121, 115,
+ 125, -115, -113, -124, 122, 116, 118, 120, 116, 111, 109, 104, 99, 99,
+ 106, 113, 115, 110, 107, 112, 122, 126, 124, 119, 115, 114, 116, 117, 118,
+ 114, 108, 105, 109, 113, 115, 112, 107, 107, 109, 112, 114, 114, 112, 110,
+ 110, 113, 116, 118, 116, 112, 111, 113, 117, 118, 116, 115, 112, 112, 114,
+ 115, 116, 116, 114, 114, 117, 118, 120, 121, 122, 121, 122, 124, -128,
+ -125, -124, -124, -121, -117, -114, -112, -110, -108, -108, -117, 110, 81,
+ 92, 117, 112, 89, 79, 76, 87, 106, 117, 122, 124, 118, 111, 124, -112,
+ -110, -123, 121, 116, 119, 122, 118, 113, 108, 102, 98, 99, 106, 112, 114,
+ 108, 105, 111, 121, 125, 124, 120, 116, 115, 116, 117, 119, 118, 112, 106,
+ 107, 109, 111, 112, 111, 109, 109, 109, 110, 113, 116, 114, 113, 112, 113,
+ 114, 115, 113, 113, 113, 113, 114, 114, 115, 114, 114, 114, 114, 114, 116,
+ 117, 117, 117, 117, 117, 119, 121, 122, 121, 121, 124, 127, -125, -123,
+ -123, -120, -115, -112, -111, -109, -108, -112, 119, 87, 90, 116, 116, 94,
+ 81, 78, 87, 103, 113, 118, 121, 117, 112, 120, -118, -112, -123, 121, 117,
+ 120, 123, 121, 114, 109, 106, 101, 100, 105, 111, 113, 107, 103, 109, 119,
+ 124, 122, 119, 116, 116, 119, 120, 120, 118, 113, 108, 109, 113, 114, 113,
+ 107, 104, 107, 111, 113, 112, 112, 109, 110, 113, 116, 116, 115, 113, 111,
+ 112, 114, 116, 115, 113, 111, 112, 113, 116, 115, 115, 115, 114, 114, 116,
+ 118, 119, 119, 119, 119, 122, 123, 125, 127, -126, -124, -122, -120, -115,
+ -112, -111, -109, -107, -112, 117, 84, 91, 119, 118, 93, 78, 78, 87, 103,
+ 112, 117, 120, 116, 112, 120, -118, -112, -122, 120, 117, 122, 125, 121,
+ 114, 110, 107, 103, 102, 104, 110, 112, 107, 104, 110, 119, 123, 121, 118,
+ 117, 118, 118, 119, 120, 119, 114, 110, 111, 112, 114, 114, 109, 107, 107,
+ 110, 110, 112, 113, 111, 109, 111, 113, 116, 116, 114, 113, 114, 115, 116,
+ 116, 114, 113, 113, 113, 114, 114, 114, 114, 114, 114, 116, 120, 120, 119,
+ 119, 120, 122, 125, 127, -128, -126, -124, -123, -120, -115, -113, -113,
+ -110, -107, -112, 117, 86, 94, 122, 119, 93, 79, 81, 89, 103, 112, 116,
+ 118, 115, 110, 119, -117, -111, -123, 120, 117, 123, -128, 124, 115, 110,
+ 107, 104, 104, 106, 110, 110, 104, 103, 109, 119, 122, 119, 116, 117, 119,
+ 119, 120, 121, 119, 114, 112, 112, 114, 115, 113, 108, 106, 109, 110, 110,
+ 110, 110, 109, 110, 113, 114, 115, 115, 114, 114, 115, 116, 116, 116, 115,
+ 112, 113, 115, 115, 114, 114, 113, 114, 117, 117, 117, 117, 118, 119, 121,
+ 123, 124, 125, 126, -128, -125, -122, -120, -118, -118, -116, -112, -108,
+ -108, -128, 95, 88, 115, 125, 103, 84, 81, 86, 99, 111, 114, 117, 115,
+ 109, 113, -124, -112, -120, 121, 116, 121, -128, 127, 119, 112, 108, 106,
+ 103, 106, 110, 110, 106, 104, 106, 116, 122, 119, 116, 116, 117, 119, 120,
+ 122, 119, 115, 112, 111, 114, 116, 114, 108, 105, 106, 111, 113, 111, 109,
+ 108, 111, 113, 116, 116, 115, 113, 112, 114, 117, 118, 115, 113, 112, 114,
+ 115, 116, 114, 114, 115, 114, 116, 117, 118, 118, 118, 118, 120, 122, 123,
+ 124, 125, 126, -127, -124, -122, -119, -117, -116, -114, -111, -109, -121,
+ 101, 86, 112, 126, 107, 89, 82, 86, 98, 107, 111, 115, 116, 110, 110, 127,
+ -116, -120, 122, 115, 120, -128, -128, 121, 113, 110, 109, 107, 107, 109,
+ 111, 107, 103, 106, 115, 120, 117, 113, 115, 117, 119, 120, 119, 119, 116,
+ 113, 113, 115, 116, 115, 110, 106, 108, 111, 111, 110, 110, 109, 109, 112,
+ 115, 116, 116, 114, 114, 114, 116, 117, 116, 114, 112, 113, 115, 115, 115,
+ 114, 114, 114, 115, 117, 117, 118, 118, 119, 120, 122, 121, 122, 125, 126,
+ 127, -127, -125, -123, -120, -120, -117, -113, -110, -112, 126, 97, 94,
+ 119, 124, 103, 87, 83, 89, 101, 109, 111, 114, 114, 108, 114, -126, -117,
+ -124, 120, 116, 123, -127, 126, 118, 113, 111, 108, 108, 109, 109, 109,
+ 107, 104, 107, 116, 118, 115, 114, 115, 117, 118, 119, 118, 118, 115, 114,
+ 113, 114, 115, 113, 110, 108, 110, 114, 112, 110, 110, 111, 113, 114, 114,
+ 115, 114, 114, 114, 115, 116, 116, 115, 114, 114, 117, 117, 115, 114, 114,
+ 115, 116, 116, 116, 116, 118, 117, 119, 120, 121, 122, 123, 125, 127,
+ -126, -125, -123, -119, -118, -117, -114, -113, -113, 125, 96, 95, 121,
+ 123, 101, 88, 86, 92, 104, 109, 111, 114, 113, 108, 115, -126, -118, -126,
+ 118, 115, 123, -127, 126, 118, 113, 110, 110, 109, 110, 110, 110, 107,
+ 105, 108, 116, 118, 115, 113, 114, 117, 119, 119, 118, 119, 116, 114, 115,
+ 116, 117, 115, 111, 109, 113, 114, 112, 110, 108, 109, 111, 113, 114, 113,
+ 113, 114, 114, 115, 117, 116, 116, 116, 114, 115, 115, 114, 114, 114, 114,
+ 114, 115, 116, 116, 117, 117, 119, 120, 120, 121, 122, 123, 125, 127,
+ -127, -126, -124, -122, -122, -119, -116, -115, -116, 125, 100, 98, 119,
+ 122, 105, 92, 88, 94, 106, 109, 109, 113, 113, 109, 114, 126, -123, -128,
+ 119, 116, 123, -128, 125, 117, 112, 111, 111, 111, 110, 110, 111, 108,
+ 105, 109, 116, 117, 115, 113, 114, 116, 118, 117, 116, 117, 115, 113, 113,
+ 114, 116, 115, 111, 109, 112, 114, 113, 111, 111, 112, 113, 113, 113, 114,
+ 114, 114, 114, 116, 116, 116, 116, 115, 115, 116, 116, 115, 115, 116, 115,
+ 115, 115, 116, 117, 118, 119, 120, 120, 121, 122, 124, 125, 127, -128,
+ -127, -125, -122, -121, -120, -119, -117, -117, 127, 102, 98, 119, 122,
+ 106, 95, 90, 96, 106, 110, 110, 114, 115, 110, 114, 125, -124, -128, 119,
+ 115, 120, 126, 124, 118, 114, 112, 112, 111, 111, 112, 112, 109, 107, 110,
+ 116, 117, 115, 114, 113, 116, 118, 116, 116, 117, 116, 115, 115, 117, 117,
+ 116, 111, 110, 112, 113, 113, 112, 110, 111, 113, 113, 113, 114, 115, 115,
+ 116, 115, 116, 116, 116, 115, 115, 116, 116, 115, 116, 115, 115, 116, 116,
+ 116, 117, 117, 118, 119, 120, 121, 121, 124, 125, 127, -128, -127, -125,
+ -124, -122, -121, -120, -118, -120, 119, 100, 107, 121, 116, 103, 96, 95,
+ 100, 109, 110, 111, 115, 113, 111, 116, 126, -127, 124, 117, 114, 121,
+ 125, 122, 116, 113, 111, 111, 112, 112, 113, 111, 107, 107, 112, 116, 117,
+ 114, 112, 113, 117, 117, 116, 115, 115, 115, 115, 115, 115, 115, 114, 111,
+ 111, 114, 115, 113, 111, 111, 112, 113, 113, 113, 114, 115, 114, 114, 115,
+ 115, 116, 116, 115, 116, 116, 117, 115, 115, 115, 116, 116, 115, 116, 117,
+ 118, 120, 120, 120, 121, 122, 123, 125, 127, -128, -128, -127, -125, -123,
+ -123, -124, -125, -126, 118, 105, 108, 118, 114, 105, 102, 99, 105, 112,
+ 111, 112, 116, 115, 113, 117, 122, 124, 122, 116, 114, 119, 121, 119, 115,
+ 113, 111, 112, 112, 112, 113, 112, 110, 111, 113, 116, 116, 114, 112, 113,
+ 116, 116, 115, 114, 114, 114, 115, 114, 113, 115, 114, 114, 113, 114, 114,
+ 113, 113, 112, 113, 114, 115, 113, 114, 114, 115, 116, 116, 116, 116, 116,
+ 117, 116, 117, 116, 115, 115, 115, 116, 116, 116, 117, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 127, -127, -126, -127, -127, -127,
+ -126, 125, 112, 107, 116, 117, 111, 108, 104, 105, 112, 113, 113, 116,
+ 117, 113, 114, 118, 120, 121, 118, 112, 114, 118, 118, 115, 113, 111, 112,
+ 114, 113, 114, 115, 113, 111, 113, 115, 115, 115, 113, 110, 113, 114, 113,
+ 114, 114, 113, 114, 115, 115, 117, 116, 115, 114, 114, 114, 113, 114, 113,
+ 113, 113, 113, 113, 114, 114, 114, 115, 116, 116, 117, 116, 116, 116, 116,
+ 116, 116, 116, 115, 116, 118, 117, 117, 117, 118, 118, 119, 120, 121, 122,
+ 123, 123, 125, 126, 127, 126, 126, 126, 125, 126, 127, 126, 120, 114, 112,
+ 117, 116, 112, 110, 108, 110, 115, 114, 114, 117, 116, 114, 115, 117, 118,
+ 118, 116, 113, 114, 116, 115, 115, 112, 112, 114, 115, 115, 114, 114, 113,
+ 114, 114, 114, 114, 114, 113, 112, 113, 114, 114, 114, 114, 114, 116, 117,
+ 115, 116, 116, 115, 115, 114, 114, 114, 115, 113, 113, 115, 115, 115, 115,
+ 115, 115, 116, 117, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 118,
+ 118, 117, 117, 117, 118, 119, 120, 120, 121, 121, 122, 123, 124, 124, 124,
+ 124, 123, 123, 123, 124, 124, 122, 119, 118, 117, 116, 117, 115, 113, 113,
+ 114, 113, 115, 115, 115, 115, 115, 115, 115, 116, 115, 114, 113, 113, 114,
+ 114, 113, 112, 114, 115, 114, 114, 113, 113, 115, 115, 113, 114, 114, 114,
+ 113, 113, 114, 114, 115, 114, 115, 116, 116, 115, 115, 115, 115, 115, 115,
+ 114, 115, 115, 114, 114, 115, 115, 115, 115, 115, 115, 117, 116, 116, 116,
+ 116, 116, 116, 116, 116, 117, 117, 116, 116, 117, 117, 117, 117, 118, 119,
+ 119, 119, 120, 120, 122, 121, 121, 121, 121, 121, 121, 120, 121, 122, 121,
+ 121, 119, 118, 118, 119, 118, 117, 115, 116, 116, 115, 115, 115, 116, 116,
+ 115, 116, 115, 115, 115, 114, 114, 114, 114, 114, 113, 112, 115, 115, 113,
+ 114, 113, 114, 115, 115, 114, 114, 114, 113, 113, 114, 114, 114, 115, 114,
+ 114, 116, 115, 115, 116, 115, 115, 115, 115, 115, 115, 115, 114, 115, 115,
+ 115, 116, 116, 116, 116, 115, 115, 116, 116, 116, 116, 116, 116, 117, 117,
+ 117, 116, 117, 117, 117, 117, 117, 117, 118, 118, 119, 118, 119, 120, 120,
+ 119, 119, 119, 120, 120, 119, 119, 119, 120, 119, 120, 119, 118, 118, 118,
+ 117, 117, 117, 117, 116, 116, 115, 117, 116, 115, 115, 115, 115, 115, 115,
+ 114, 115, 114, 114, 114, 114, 113, 113, 113, 113, 115, 114, 114, 113, 114,
+ 114, 115, 114, 114, 115, 115, 114, 114, 114, 114, 114, 115, 115, 115, 116,
+ 115, 115, 115, 115, 116, 115, 115, 115, 115, 116, 115, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 117, 117, 117, 117, 117, 117,
+ 118, 119, 118, 118, 118, 119, 119, 119, 118, 118, 118, 118, 118, 118, 119,
+ 119, 118, 118, 118, 119, 119, 119, 118, 117, 117, 117, 117, 117, 117, 116,
+ 116, 116, 116, 116, 116, 116, 115, 117, 116, 115, 114, 114, 114, 114, 114,
+ 114, 114, 116, 115, 114, 115, 115, 115, 115, 115, 115, 116, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 116, 115, 115, 115, 115, 115, 115, 115, 115,
+ 116, 117, 115, 115, 116, 115, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 117, 117, 117, 117, 118, 117, 117, 117, 117, 117, 117,
+ 117, 118, 117, 118, 118, 119, 118, 118, 118, 118, 117, 117, 117, 117, 117,
+ 117, 117, 119, 117, 117, 117, 117, 117, 116, 116, 116, 116, 116, 117, 116,
+ 116, 116, 116, 116, 116, 116, 115, 115, 116, 115, 115, 115, 115, 115, 116,
+ 116, 116, 115, 116, 115, 115, 115, 115, 115, 115, 115, 115, 116, 117, 115,
+ 115, 115, 116, 115, 115, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 117, 117,
+ 118, 117, 117, 117, 117, 117, 117, 116, 116, 117, 117, 117, 118, 117, 117,
+ 117, 118, 117, 117, 117, 117, 117, 117, 118, 117, 117, 117, 117, 117, 117,
+ 117, 117, 117, 116, 116, 118, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 115, 116, 116, 116, 115, 115, 115, 115, 116, 116, 116, 117, 116, 116, 115,
+ 115, 116, 115, 115, 115, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 117, 118, 117, 117, 117, 117, 117, 117,
+ 117, 116, 116, 116, 117, 117, 116, 116, 116, 117, 117, 117, 117, 117, 117,
+ 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 116, 117, 118, 116, 116,
+ 116, 116, 117, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 116, 116, 116, 115, 115, 116, 116, 116, 116, 117, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 117, 117, 117, 117, 118, 117, 116, 117, 117, 117, 117,
+ 116, 116, 116, 116, 117, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116,
+ 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 117, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 117, 116, 117, 117, 116, 116, 116, 116, 116,
+ 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 117, 118, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 116, 116, 116, 117, 117, 116, 116, 116, 116, 117, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116
+