diff tests/agcl/oldagsrc/good/cc-crash.cpp @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/agcl/oldagsrc/good/cc-crash.cpp	Sat Dec 22 17:52:45 2007 -0500
@@ -0,0 +1,3751 @@
+                                           // C Prologue
+/*
+ AnaGram, a System for Syntax Directed Programming
+
+ A Dos Script Language
+
+ Copyright (c) 1993, 1996 Parsifal Software.
+ All Rights Reserved.
+
+*/
+
+
+#include "stack.h"
+#include "charsink.h"
+#include "strdict.h"
+#include "array.h"
+#include "symbol.h"
+#include "query.h"
+#include <conio.h>
+
+#ifdef __BCPLUSPLUS__
+  #define ARGS ((char **) args)
+
+  extern unsigned _stklen = 0x4000;              // set stack size
+
+#else
+  #define ARGS ((char const * const *) (char **) args)
+#endif
+
+
+// Define stacks for temporary storage
+
+stack <action_pointer>      as(25);              // Stack actions
+stack <int>                 is(100);             // Stack string indices
+stack <char *>              ps(1000,20);         // Stack parameter strings
+stack <query_item>          qs(23);              // Stack query items
+
+
+// Define data structures for symbol table
+
+#define N_STRINGS 2000
+
+string_accumulator          sa(64000U,500);
+string_dictionary           sd(N_STRINGS);
+array <symbol_table_entry>  st(N_STRINGS);
+
+
+/*
+ * AnaGram, A System for Syntax Directed Programming
+ * File generated by: ...
+ *
+ * AnaGram Parsing Engine
+ * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ */
+
+#ifndef CC-CRASH_H
+#include "cc-crash.h"
+#endif
+
+#ifndef CC-CRASH_H
+#error Mismatched header file
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+
+#define RULE_CONTEXT (&((PCB).cs[(PCB).ssx]))
+#define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx])
+#define CONTEXT ((PCB).cs[(PCB).ssx])
+
+
+
+cc-crash_pcb_type cc-crash_pcb;
+#define PCB cc-crash_pcb
+#define CHANGE_REDUCTION(x) cc-crash_change_reduction(cc-crash_##x##_token)
+int cc-crash_change_reduction(cc-crash_token_type);
+
+
+#line - "cc-crash.syn"
+#include <process.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <io.h>
+#include <conio.h>
+#include <dos.h>
+#include <time.h>
+#include "assert.h"
+
+#include "edit.h"
+
+
+#include "screen.h"
+#include "util.h"
+#include "redirect.h"
+
+#define GET_CONTEXT CONTEXT.pointer = PCB.pointer;\
+  CONTEXT.line=PCB.line;\
+  CONTEXT.column = PCB.column;
+
+
+int       debug_switch = 0;
+char     *error_msg = NULL;
+unsigned  errorlevel_index;
+int       errorlevel;
+int       exitcode = 0;
+int       exitflag = 0;
+int       first_line = 1;
+int       first_column = 1;
+unsigned  stderr_index;
+
+void      display_queries(screen_descriptor *);
+
+#define FIRST_LINE first_line
+#define FIRST_COLUMN first_column
+
+
+/*****
+
+ Internal Functions
+
+*****/
+
+long file_exists(void) {
+  FILE *f = fopen(sa--,"r");
+  if (f != NULL) fclose(f);
+  return f != NULL;
+}
+
+long directory_exists(void) {
+  struct find_t ff;
+  int result;
+
+  sa << "\\*.*";
+  result = _dos_findfirst(sa--,_A_SUBDIR,&ff);
+  return result == 0;
+}
+
+long string_length(void) {
+  return size(sa--);
+}
+
+long get_file_length(void) {
+  int handle = open(sa--, O_RDONLY);
+  long length;
+  if (handle < 0) return 0;
+  length = filelength(handle);
+  close(handle);
+  return length;
+}
+
+long disk_space(void) {
+  struct diskfree_t free;
+  int drive = toupper(*(char *)sa--) - 64;
+  long avail;
+
+  _dos_getdiskfree(drive, &free);
+  avail = (long) free.avail_clusters
+        * (long) free.bytes_per_sector
+        * (long) free.sectors_per_cluster;
+  return avail;
+}
+
+long file_time(void) {
+  int handle = open(sa--, O_RDONLY);
+#ifdef __BCPLUSPLUS__
+  unsigned date, time;
+#else
+  unsigned short date, time;
+#endif
+  struct tm t;
+
+  if (handle < 0) return 0;
+  _dos_getftime(handle, &date, &time);
+  close(handle);
+  t.tm_year = ((date & 0xfe00) >> 9) + 80;
+  t.tm_mon  = ((date & 0x1e00) >> 5) - 1;
+  t.tm_mday = date & 0x001f;
+  ;
+  t.tm_hour = (time & 0xf800) >> 11;
+  t.tm_min  = (time & 0x07e0) >> 5;
+  t.tm_sec  = (time & 0x001f) << 1;
+  return mktime(&t);
+}
+
+
+// Support for reduction procecures
+
+// Compare top strings on string accumulator
+
+/*
+  pops top two strings from string accumulator using strcmp
+  and returns
+    -1 if first string is less than top string
+     0 if strings match
+    +1 if top string is greater than first string
+*/
+
+int string_comp(void) {
+  int n = size(sa);
+  array<char> right_string(sa--, n+1);
+  return strcmp(sa--,right_string);
+}
+
+/*
+  replace the top string on the stack, with a substring where the index
+  of the first character in the substring is given by "first" and the index
+  of the last character is given by "last"
+*/
+
+void extract(unsigned first, unsigned last) {
+  int n = last - first + 1;
+  assert (last >= first);
+  array <char> x((char *) sa-- + first, n+1);
+  x[n] = 0;
+  ++sa << x;
+}
+
+/*
+ Look up the top string on the accumulator stack in the string dictionary.
+ If it has a value in the symbol table, replace it with the symbol table
+ value. If the value is numeric, convert it to integer. Otherwise, leave the
+ string untouched on the stack.
+*/
+
+void lookup(void) {
+  unsigned index = sd[sa];
+  if (index == 0) return;
+  switch (st[index].type) {
+    case string_type:
+    case value_type: {
+      --sa;                                       // discard name
+      ++sa << st[index].data.text;                // stack value
+      break;
+    }
+    case integer_type: {
+      --sa;                                       // discard name
+      (++sa).printf("%ld", st[index].data.integer); // convert to ascii
+      break;
+    }
+  }
+}
+
+/*
+ Find the data type of a symbol and change the reduction accordingly.
+ Return the dictionary index for strings, and the value itself for integers.
+*/
+
+long name_type(void) {
+  unsigned index = sd << sa--;
+  switch (st[index].type) {
+    case value_type:
+    case string_type: {
+      CHANGE_REDUCTION(string_name);
+      return index;
+    }
+    case built_in_function_type: {
+      CHANGE_REDUCTION(built_in_name);
+      return index;
+    }
+    case undefined_type: {
+      CHANGE_REDUCTION(undefined_name);
+      return index;
+    }
+    case integer_type: return st[index].data.integer;
+  }
+  return 0;
+}
+
+/*
+ Store a string formula. A string formula is a sequence of string identifiers
+ the values of which are to be concatenated. The parser has accumulated the
+ identifiers on the integer_stack, is. The formula is terminated by a zero
+ entry.
+*/
+
+int *formula(void) {
+  int n = size(is << 0);
+  int *f = new int[n];
+  while (n--) is >> f[n];
+  return f;
+}
+
+/*
+ Make a copy of an action that has been identified in the text stream.
+ An action pointer was stacked at the beginning of the action text on the
+ action stack, as.
+*/
+
+action_pointer copy_action(void) {
+  action_pointer ap;
+  as >> ap;                               // pop action descriptor
+  unsigned length = (unsigned) (PCB.pointer - ap.pointer);
+  unsigned char *action = memdup(ap.pointer,length + 1);
+  action[length] = 0;
+  ap.pointer = action;
+  return ap;
+}
+
+
+// Internal Commands
+
+int echo(int, char *args[]) {
+  int i;
+  char *cs = "";
+  for (i = 1; args[i]; i++) printf("%s%s", cs, args[i]), cs = " ";
+  printf("\n");
+  fflush(stdout);
+  return 0;
+}
+
+int pause(int, char *[]) {
+  int c;
+  while (kbhit()) getch();                  // Empty buffer
+  printf("Press any key to continue . . .\n");
+  c = getch();
+  if (c == 3) exit(1);
+  return c;
+}
+
+int exit_script(int n_args, char *args[]) {
+  if (n_args > 1) sscanf(args[1], "%ld", &exitcode);
+  exit(exitcode);
+  return exitcode;
+}
+
+/*
+int return_script(int n_args, char *args[]) {
+  if (n_args > 1) sscanf(args[1], "%ld", &exitcode);
+  PCB.exit_flag = AG_SUCCESS_CODE;
+  return exitcode;
+}
+*/
+
+int subdirs(int, char *args[]) {
+  struct find_t file_block;
+  int flag;
+  int length = strlen(args[1]);
+  array <char> name(args[1],length + 5);
+
+  strcat(name, "\\*.*");
+  for(flag = _dos_findfirst(name, _A_SUBDIR, &file_block);
+       flag == 0; flag = _dos_findnext(&file_block)) {
+    if ((file_block.attrib & _A_SUBDIR) == 0) continue;
+    if (strcmp(file_block.name, ".") == 0) continue;
+    if (strcmp(file_block.name, "..") == 0) continue;
+    puts(file_block.name);
+  }
+  return 0;
+}
+
+int files(int, char *args[]) {
+  struct find_t file_block;
+  int flag;
+  int length = strlen(args[1]);
+  array<char> name(args[1],length + 5);
+
+  strcat(name, "\\*.*");
+  for(flag = _dos_findfirst(name, 0, &file_block);
+       flag == 0; flag = _dos_findnext(&file_block)) {
+    puts(file_block.name);
+  }
+  return 0;
+}
+
+
+/*****
+
+ Execute Command Line
+
+*****/
+
+
+void perform_action(action_pointer ap) {
+  dsl_pcb_type save_pcb = PCB;
+
+  PCB.pointer = ap.pointer;
+  first_line = ap.line;
+  first_column = ap.column;
+  dsl();
+  exitflag = PCB.exit_flag != AG_SUCCESS_CODE;
+  PCB = save_pcb;
+  if (exitflag) PCB.exit_flag = AG_SEMANTIC_ERROR_CODE;
+}
+
+void exec(void) {
+  int n = size(ps << (char *) NULL);
+  int n_args = n - 1;
+  unsigned index;
+  int i;
+
+  array <char *> args(n);
+  while (n--) ps >> args[n];
+
+  strupr(args[0]);
+  if (debug_switch) {
+    for (i = 0; args[i]; i++) fprintf(stderr, "%s ", args[i]);
+    fprintf(stderr,"\nPress any key to continue\n");
+    while (!kbhit());
+    getch();
+  }
+  index = sd[args[0]];
+  if (n_args == 1 && strlen(args[0]) == 2 && args[0][1] == ':') {
+    errorlevel = system(args[0]);
+  }
+  else if ( *args[0] && index) switch (st[index].type) {
+    case internal_type: {
+      errorlevel = (*st[index].data.proc)(n_args, args);
+      break;
+    }
+    case dos_type: {
+      int i;
+      for (i = 1; args[i]; i++) args[i][-1] = ' ';
+      errorlevel = system(args[0]);
+      assert(errorlevel >= 0);
+      break;
+    }
+    case action_type: {
+      action_descriptor d = *st[index].data.action;
+      stack <symbol_table_entry> old_entries(d.n_args);
+      for (i = 0; i < d.n_args && args[i+1]; i++) {
+        old_entries << st[d.args[i]];
+        st[d.args[i]].type = value_type;
+        st[d.args[i]].data.text = memdup(args[i+1], 1 + strlen(args[i+1]));
+      }
+      perform_action(d.ap);
+      for (i = d.n_args; i--;) {
+        release(st[d.args[i]]);
+        old_entries >> st[d.args[i]];
+      }
+    }
+  }
+  else {
+    errorlevel = spawnvp(P_WAIT,args[0],ARGS);
+    assert(errorlevel >= 0);
+  }
+  st[errorlevel_index].data.integer = errorlevel;
+  while (n_args--) --sa;
+  --ps;
+  if (kbhit()) {
+    int c = getch();
+    if (c == 3) exit(1);
+    ungetch(c);
+  }
+}
+
+void discard_temp_file(char *file_name) {
+  unlink(file_name);                        // Delete file
+  delete [] file_name;                      // Free storage for name
+}
+
+
+/*****
+
+ Execute Command with piped input
+
+*****/
+
+
+void exec_pipe_in(char *file_name) {
+  {
+    redirect sin(STDIN, file_name);
+    exec();
+  }
+  discard_temp_file(file_name);
+}
+
+
+/*****
+
+ Execute Command with redirected I/O
+
+*****/
+
+void exec_redirect_in(void) {
+  redirect sin(STDIN, sa--);
+  exec();
+}
+
+char *exec_pipe_out(void) {
+  fflush(stdout);
+  redirect sout(STDOUT);
+  exec();
+  fflush(stdout);
+  return save_file(sout);
+}
+
+char *exec_pipe_in_pipe_out(char *file_name) {
+  char *result;
+  {
+    redirect sin(STDIN, file_name);
+    fflush(stdout);
+    redirect sout(STDOUT);
+    exec();
+    fflush(stdout);
+    result = save_file(sout);
+  }
+  discard_temp_file(file_name);
+  return result;
+}
+
+char *exec_redirect_in_pipe_out(void) {
+  fflush(stdout);
+  redirect sout(STDOUT);
+  exec_redirect_in();
+  fflush(stdout);
+  return save_file(sout);
+}
+
+unsigned check_integer(void) {
+  unsigned index = sd << sa--;
+  if (st[index].type == integer_type) return index;
+  CHANGE_REDUCTION(undeclared_variable);
+  if (st[index].type == string_type) CHANGE_REDUCTION(string_variable);
+  return index;
+}
+
+void assign_value(unsigned index) {
+  char *text = copy(sa--);
+  release(st[index]);
+  st[index].type = value_type;
+  st[index].data.text = text;
+}
+
+void grab_output(char *temp_name) {
+  unlink(sa);                               // delete old file
+  rename(temp_name, sa--);                  // rename temp file
+  delete [] temp_name;                      // discard name string
+}
+
+void append_output(char *temp_name) {
+  fflush(stdout);
+  redirect sout(STDOUT, sa--, 1);           // append to file named on sa
+  redirect sin(STDIN, temp_name);
+  char buf[2000];
+  int n;
+  while (1) {
+    n = read(STDIN, buf, 2000);
+    if (n == 0) break;
+    write(STDOUT, buf, n);
+  }
+  fflush(stdout);
+  unlink(temp_name);
+  delete [] temp_name;
+}
+
+void action_string(void) {
+  action_pointer ap;
+  as >> ap;
+  unsigned length = (unsigned)(PCB.pointer - ap.pointer);
+  array <unsigned char> action(ap.pointer,length + 1);
+  action[length] = 0;
+  fflush(stdout);
+  redirect sout(STDOUT);
+  char *result;
+
+  ap.pointer = action;
+  perform_action(ap);
+  fflush(stdout);
+  result = content(sout);
+  ++sa << result;
+  delete [] result;
+}
+
+
+// Program Control functions
+
+// If/else statement
+
+int do_if(int pc, int cc) {
+  action_pointer ap;
+  as >> ap;
+  if (!pc && cc && exitflag == 0) {
+    unsigned length = (unsigned) (PCB.pointer - ap.pointer);
+    array<unsigned char> q(ap.pointer, length+1);
+    q[length] = 0;
+    ap.pointer = q;
+    perform_action(ap);
+  }
+  return pc || cc;
+}
+
+// While statement
+
+void do_while(int cc) {
+  unsigned length;
+  action_pointer ap;
+  as >> ap;
+  if (cc == 0) return;
+  length = (unsigned) (PCB.pointer - ap.pointer);
+  array<unsigned char> q(ap.pointer, length+1);
+  q[length] = 0;
+  ap.pointer = q;
+  perform_action(ap);
+  if (exitflag) return;
+  PCB.pointer = CONTEXT.pointer;
+  PCB.line = CONTEXT.line;
+  PCB.column = CONTEXT.column;
+}
+
+
+// For Statement
+// Note that this is the for statement in the DOS batch languange for, not C
+
+void do_for_loop(void) {
+  int n,k;
+  char *q;
+  char *seps = " \t\v\f\r\n";
+  action_pointer ap;
+  as >> ap;
+  unsigned length = (unsigned)(PCB.pointer - ap.pointer);
+  array <unsigned char> action(ap.pointer, length + 1);
+  action[length] = 0;
+
+  ap.pointer = action;
+  n = size(sa);
+  array<char> text(sa--, n + 1);
+
+
+  unsigned index = sd << sa--;
+
+  ++ps;
+  for (q = strtok(text, seps); q != NULL; q = strtok(NULL,seps)) {
+    if (*q == '(') {
+      int k = strlen(q) - 1;
+      assert(q[k] == ')');
+      q[k] = 0;
+      q++;
+    }
+    else if (*q == '"') {
+      int k = strlen(q) - 1;
+      assert(q[k] == '"');
+      q[k] = 0;
+      q++;
+    }
+    ps << q;
+  }
+  k = n = size(ps);
+  array<char *> args(n);
+  while (k--) ps >> args[k];
+  --ps;
+  symbol_table_entry save_table_entry = st[index];
+  st[index].type = value_type;
+
+  for (k = 0; k < n && exitflag == 0; k++) {
+    st[index].data.text = args[k];
+    perform_action(ap);
+  }
+  st[index] = save_table_entry;
+}
+
+void invoke_script(void) {
+  int handle = open(sa, O_TEXT | O_RDONLY);
+  long size;
+  unsigned n;
+  action_pointer ap;
+
+  if (handle < 0) {
+    fprintf(stderr,"Cannot open %s\n", (char *) sa--);
+    exit(1);
+  }
+  --sa;
+  size = filelength(handle);
+  assert(size < 65536L);
+  array <unsigned char> data((unsigned) size+1);
+  n = (unsigned) read(handle,data,(unsigned) size);
+  data[n] = 0;
+  close(handle);
+  exitflag = 0;
+  ap.pointer = data;
+  ap.line = ap.column = 1;
+  perform_action(ap);
+  st[errorlevel_index].data.integer = exitcode;
+  exitflag = exitcode = 0;
+  return;
+}
+
+internal_commands_descriptor internal_commands[] = {
+  {"ECHO", echo},
+  {"EXIT", exit_script},
+  {"FILES", files},
+  {"PAUSE", pause},
+//  {"RETURN", return_script},
+  {"SUBDIRS", subdirs},
+  {NULL, NULL}
+};
+
+struct built_ins_descriptor built_ins[] = {
+  {"file_exists", file_exists},
+  {"directory_exists", directory_exists},
+  {"string_length", string_length},
+  {"file_length", get_file_length},
+  {"disk_space", disk_space},
+  {"file_time", file_time},
+  {NULL, NULL}
+};
+
+void set_extension(char *path, char *e) {
+  char s[_MAX_PATH];
+  char drive[_MAX_DRIVE];
+  char dir[_MAX_DIR];
+  char file[_MAX_FNAME];
+  char ext[_MAX_EXT];
+
+  _splitpath(path,drive,dir,file,ext);
+  _makepath(s, drive, dir, file, e);
+  ++sa << s;
+}
+
+/*
+ Note that if this program is called without any arguments, it looks for a
+ script with the same name as the executable. Thus, to make an install
+ program that picks up the install script without any arguments, you simply
+ rename DSL.EXE to INSTALL.EXE. Then when you run it without any arguments
+ it will run the INSTALL.DSL script.
+*/
+
+void main(int argc, char *argv[]) {
+  int arg_number = 0;
+  int i = 1;
+  int j = 0;
+
+  if (argv[0][0] == '.') argv[0] = "\\agex\\dsl\\wat32\\dsl.exe";
+  init_dos_internals();
+  set_arg(j++, argv[0]);
+  if (argc > i && (argv[i][0] == '/' || argv[i][0] == '-')) {
+    if (toupper(argv[i][1]) != 'D') {
+      printf("Unrecognized switch -- /%s\n",argv[i][1]);
+      return;
+    }
+    debug_switch = 1;
+    i++;
+  }
+  if (argc > i) arg_number = i++;
+  set_extension(argv[arg_number], "DSL");
+  set_arg(j++,copy(sa));
+  while (i < argc) set_arg(j++, argv[i++]);
+  define_integer("argc", j);
+  invoke_script();                          // Takes file name from sa
+  exit(exitcode);
+}
+#line - "cc-crash.cpp"
+
+#ifndef CONVERT_CASE
+#define CONVERT_CASE(c) (c)
+#endif
+#ifndef TAB_SPACING
+#define TAB_SPACING 8
+#endif
+
+#define ag_rp_1(v) (++sa << sd[v], lookup())
+
+#define ag_rp_2() (sa << '[')
+
+#define ag_rp_3() (concat(sa) << ']', lookup())
+
+#define ag_rp_4() (concat(sa))
+
+#define ag_rp_5() (concat(sa))
+
+#define ag_rp_6(c) (++sa << c)
+
+#define ag_rp_7(c) (sa << c)
+
+#define ag_rp_8() (action_string())
+
+#define ag_rp_9() (as << CONTEXT)
+
+static void ag_rp_10(void) {
+#line - "cc-crash.syn"
+action_pointer a; as >> a;
+#line - "cc-crash.cpp"
+}
+
+#define ag_rp_11() (++sa)
+
+#define ag_rp_12(c) (sa << c)
+
+#define ag_rp_13() (sa << '(')
+
+#define ag_rp_14() (concat(sa) << ')')
+
+#define ag_rp_15() (++sa)
+
+#define ag_rp_16(c) (sa << c)
+
+#define ag_rp_17(c) (sa << c)
+
+#define ag_rp_18() ('\a')
+
+#define ag_rp_19() ('\b')
+
+#define ag_rp_20() ('\f')
+
+#define ag_rp_21() ('\n')
+
+#define ag_rp_22() ('\r')
+
+#define ag_rp_23() ('\t')
+
+#define ag_rp_24() ('\v')
+
+#define ag_rp_25() ('\\')
+
+#define ag_rp_26() ('\?')
+
+#define ag_rp_27() ('\'')
+
+#define ag_rp_28() ('"')
+
+#define ag_rp_29(d) (d-'0')
+
+#define ag_rp_30(n, d) (8*n + d-'0')
+
+#define ag_rp_31(n, d) (8*n + d-'0')
+
+#define ag_rp_32(n) ((int) n)
+
+#define ag_rp_33(n, d) (16*n + d)
+
+#define ag_rp_34() (exec())
+
+#define ag_rp_35() (exec_redirect_in())
+
+#define ag_rp_36(file) (exec_pipe_in(file))
+
+#define ag_rp_37(file) (grab_output(file))
+
+#define ag_rp_38(file) (append_output(file))
+
+#define ag_rp_39() (exec_pipe_out())
+
+#define ag_rp_40() (exec_redirect_in_pipe_out())
+
+#define ag_rp_41(file) (exec_pipe_in_pipe_out(file))
+
+#define ag_rp_42() (sa << 0, ++ps << sa)
+
+#define ag_rp_43() (ps << sa, sa << 0)
+
+#define ag_rp_44() (ps << sa, sa << 0)
+
+#define ag_rp_45(pc) (do_if(pc,1))
+
+#define ag_rp_46(cc) (cc)
+
+#define ag_rp_47(cc) (cc)
+
+#define ag_rp_48(pc, cc) (do_if(pc,cc!=0))
+
+#define ag_rp_49(cc) ((int) cc)
+
+#define ag_rp_50(cc) (do_if(0,cc != 0))
+
+#define ag_rp_51(v) (assign_value(v))
+
+#define ag_rp_52(v, x) (st[v].data.integer = (int) x)
+
+#define ag_rp_53(v) (st[v].data.text = copy(sa--))
+
+#define ag_rp_54(v, n, x) (st[v].data.text[(unsigned)n] = (char) x)
+
+#define ag_rp_55() (check_integer())
+
+#define ag_rp_56(cc) (do_while(cc != 0))
+
+#define ag_rp_57() (do_for_loop())
+
+#define ag_rp_58(n) (define_action(n))
+
+#define ag_rp_59(x) (define_integer(sa--, x))
+
+#define ag_rp_60() (define_string())
+
+#define ag_rp_61() (0)
+
+#define ag_rp_62(n) (n+1)
+
+#define ag_rp_63(c) (++sa << c)
+
+#define ag_rp_64(c) (sa << c)
+
+#define ag_rp_65(c) (sa << c)
+
+#define ag_rp_66(c, x, y) (c != 0 ? x : y)
+
+#define ag_rp_67(x, y) (x != 0 || y!=0)
+
+#define ag_rp_68(x, y) (x != 0 && y !=0)
+
+#define ag_rp_69(x, y) (x | y)
+
+#define ag_rp_70(x, y) (x ^ y)
+
+#define ag_rp_71(x, y) (x & y)
+
+#define ag_rp_72(x, y) (x == y)
+
+#define ag_rp_73(x, y) (x != y)
+
+#define ag_rp_74() (string_comp() == 0)
+
+#define ag_rp_75() (string_comp() != 0)
+
+#define ag_rp_76(x, y) (x < y)
+
+#define ag_rp_77(x, y) (x > y)
+
+#define ag_rp_78(x, y) (x <= y)
+
+#define ag_rp_79(x, y) (x >= y)
+
+#define ag_rp_80() (string_comp() < 0)
+
+#define ag_rp_81() (string_comp() > 0)
+
+#define ag_rp_82() (string_comp() <= 0)
+
+#define ag_rp_83() (string_comp() >= 0)
+
+#define ag_rp_84(x, y) (x << (int) y)
+
+#define ag_rp_85(x, y) (x >> (int) y)
+
+#define ag_rp_86(x, y) (x + y)
+
+#define ag_rp_87(x, y) (x - y)
+
+#define ag_rp_88(x, y) (x * y)
+
+#define ag_rp_89(x, y) (x / y)
+
+#define ag_rp_90(x, y) (x % y)
+
+static long ag_rp_91(long x) {
+#line - "cc-crash.syn"
+      assert(x);
+      return x;
+    
+#line - "cc-crash.cpp"
+}
+
+#define ag_rp_92(x) (x)
+
+#define ag_rp_93(x) (-x)
+
+#define ag_rp_94(x) (~x)
+
+#define ag_rp_95(x) (!x)
+
+#define ag_rp_96(n) (((unsigned char *) sa--)[(unsigned) n])
+
+static long ag_rp_97(void) {
+#line - "cc-crash.syn"
+                              long temp;
+                              sscanf(sa--, "%ld", &temp);
+                              return temp;
+                            
+#line - "cc-crash.cpp"
+}
+
+#define ag_rp_98(x) (x)
+
+#define ag_rp_99(x) ((*st[(unsigned)x].data.func)())
+
+#define ag_rp_100() (name_type())
+
+#define ag_rp_101() (concat(sa))
+
+#define ag_rp_102(first, last) (extract((unsigned)first, (unsigned) last))
+
+#define ag_rp_103() (sa << '[')
+
+#define ag_rp_104() (concat(sa) << ']', lookup())
+
+#define ag_rp_105(x) (++sa << st[(unsigned)x].data.text)
+
+#define ag_rp_106(x) (++sa << sd[(unsigned)x])
+
+#define ag_rp_107() (action_string())
+
+#define ag_rp_108(x) (++sa,sa.printf("%ld",x))
+
+#define ag_rp_109() (0)
+
+#define ag_rp_110(x, d) (16*x + d-'0')
+
+#define ag_rp_111(d) ((d&7) + 9)
+
+#define ag_rp_112() (0)
+
+#define ag_rp_113(n, d) (8*n + d-'0')
+
+#define ag_rp_114(d) (d-'0')
+
+#define ag_rp_115(n, d) (10*n + d-'0')
+
+#define ag_rp_116(c) (c)
+
+#define ag_rp_117(scd) (display_queries(scd))
+
+#define ag_rp_118() (reset(qs), new screen_descriptor)
+
+#define ag_rp_119(scd) (scd->title = formula(), scd)
+
+#define ag_rp_120(scd, c) (scd->color = (char) c, scd)
+
+#define ag_rp_121(scd, c) (scd->entry_color = (char) c, scd)
+
+#define ag_rp_122(scd, c) (scd->highlight_color = (char) c, scd)
+
+#define ag_rp_123(scd, w, h) (scd->width = (unsigned)w, scd->height = (unsigned) h, scd)
+
+#define ag_rp_124(scd, px, py) (scd->pos.x = (unsigned) px,scd->pos.y = (unsigned) py, scd)
+
+#define ag_rp_125(scd, q) (qs << *q, delete q, scd)
+
+#define ag_rp_126(scd, q) (qs << *q, delete q, scd)
+
+#define ag_rp_127(fg, bg) (COLOR((unsigned)fg,(unsigned)bg))
+
+#define ag_rp_128() (clear(new query_item))
+
+#define ag_rp_129(q) (q->id = sd << sa--, q)
+
+#define ag_rp_130(q) (q->value = formula(), q)
+
+#define ag_rp_131(q) (q->prompt = formula(), q)
+
+#define ag_rp_132(q) (q->explanation = formula(),q)
+
+#define ag_rp_133() (clear(new query_item))
+
+#define ag_rp_134(q) (q->prompt = formula(), q)
+
+#define ag_rp_135(q) (q->explanation = formula(),q)
+
+#define ag_rp_136(q) (q->action = copy_action(), q)
+
+#define ag_rp_137() (reset(is) << (sd << sa--))
+
+#define ag_rp_138() (is << (sd << sa--))
+
+#define ag_rp_139() (sa << '[')
+
+#define ag_rp_140() (concat(sa) << ']')
+
+
+#define READ_COUNTS 
+#define WRITE_COUNTS 
+#undef V
+#define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i]))
+#undef VS
+#define VS(i) (PCB).vs[(PCB).ssx + i]
+
+#ifndef GET_CONTEXT
+#define GET_CONTEXT CONTEXT = (PCB).input_context
+#endif
+
+typedef enum {
+  ag_action_1,
+  ag_action_2,
+  ag_action_3,
+  ag_action_4,
+  ag_action_5,
+  ag_action_6,
+  ag_action_7,
+  ag_action_8,
+  ag_action_9,
+  ag_action_10,
+  ag_action_11,
+  ag_action_12
+} ag_parser_action;
+
+
+#ifndef NULL_VALUE_INITIALIZER
+#define NULL_VALUE_INITIALIZER = { 0 }
+#endif
+
+static cc-crash_vs_type const ag_null_value NULL_VALUE_INITIALIZER;
+
+static const unsigned char ag_rpx[] = {
+    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  1,  2,  3,  0,  4,  0,  5,  6,  7,  0,  8,  0,  9,
+    0,  0, 10,  0,  0,  0,  0,  0,  0, 11,  0, 12, 13, 14,  0, 15,  0, 16,
+   17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,  0,  0,  0,  0,  0, 29,
+   30, 31, 32,  0, 33,  0,  0, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 45,  0, 46, 47, 48, 49, 50,
+    0,  0,  0,  0,  0,  0,  0,  0, 51,  0,  0, 52, 53, 54, 55, 56,  0,  0,
+   57, 58, 59, 60, 61,  0,  0, 62, 63, 64, 65,  0, 66,  0, 67,  0, 68,  0,
+   69,  0, 70,  0, 71,  0, 72, 73, 74, 75,  0, 76, 77, 78, 79, 80, 81, 82,
+   83,  0, 84, 85,  0, 86, 87,  0, 88, 89, 90, 91,  0, 92, 93, 94, 95,  0,
+    0, 96, 97,  0, 98, 99,  0,100,  0,101,  0,102,103,104,  0,105,106,107,
+  108,  0,  0,  0,  0,  0,  0,109,110,  0,111,112,113,114,115,116,  0,  0,
+  117,118,  0,119,120,121,122,123,124,125,126,127,128,  0,129,130,131,132,
+  133,  0,134,135,136,137,138,  0,  0,  0,139,140
+};
+
+static const unsigned char ag_key_itt[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 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, 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, 0, 0, 0, 0, 1,
+ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0
+};
+
+static const unsigned short ag_key_pt[] = {
+  0,211,  0,214,  0,218,  0,221,  0,220,  0,219,  0,223,  0,224,
+  0,225,  0,162,  0,163,  0,247,  0,248,  0,249,  0,250,  0,252,
+  0,253,  0,254,  0,255,  0,256,  0,257,  0,258,  0,259,  0,260,
+0
+};
+
+static const unsigned char ag_key_ch[] = {
+    0, 42, 47,255, 47, 97,105,115,255, 42, 47,255, 42, 47,255, 88,120,255,
+   60, 61,255, 61, 62,255,101,111,255,108,110,120,255,105,111,255,116,255,
+  102,110,255, 99,105,116,255, 33, 38, 46, 47, 48, 60, 61, 62, 97, 98, 99,
+  100,101,102,104,105,108,112,115,116,118,119,124,255, 47, 97,105,115,255,
+   47,255, 42, 47,255,110,120,255,105,111,255,102,110,255, 99,105,116,255,
+   47, 97, 98, 99,100,101,102,104,105,108,112,115,116,118,119,255, 42, 47,
+  255,108,110,120,255,105,111,255,102,110,255, 99,105,116,255, 47, 97, 98,
+   99,100,101,102,104,105,108,112,115,116,118,119,255,102,110,255, 99,116,
+  255, 47, 97,102,105,115,119,255, 42, 47,255, 60, 61,255, 61, 62,255,116,
+  255,110,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,
+  104,105,108,115,116,124,255,102,110,255, 99,116,255, 97,102,105,115,119,
+  255, 42, 47,255, 88,120,255, 47, 48,255, 88,120,255, 48,255, 47,255, 34,
+   39, 63, 92, 97, 98,102,110,114,116,118,120,255, 92,255, 42, 47,255, 60,
+   61,255, 61, 62,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,
+  100,101,102,104,105,108,115,116,124,255, 42, 47,255, 47, 62,100,255, 42,
+   47,255, 47, 62,255, 47, 62,255, 47, 98, 99,101,102,104,108,115,116,255,
+   62,255, 47,119,255, 47,101,255, 88,120,255, 47, 48,255, 60, 61,255, 61,
+   62,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,104,
+  105,108,115,116,124,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98,
+   99,101,102,104,105,108,115,116,124,255, 42, 47,255, 60, 61,255, 61, 62,
+  255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,104,105,
+  108,115,116,124,255, 42, 47,255, 60, 61,255, 61, 62,255,105,116,255, 33,
+   38, 46, 47, 60, 61, 62,104,105,108,115,116,124,255, 42, 47,255, 47,255,
+   33, 60, 61, 62,255,105,116,255, 33, 38, 46, 47, 61, 97, 98, 99,101,102,
+  104,105,108,115,116,124,255,105,116,255, 38, 46, 47, 97, 98, 99,101,102,
+  104,105,108,115,116,124,255,105,116,255, 46, 47, 97, 98, 99,101,102,104,
+  105,108,115,116,124,255, 42, 47,255, 60, 61,255, 61, 62,255,108,110,255,
+  105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,100,101,102,104,105,
+  108,115,116,119,124,255, 47,101,112,255, 47,100,101,112,118,255, 47, 99,
+  255, 99,255,105,255, 47, 62,100,255,102,110,255, 99,116,255, 47, 97,101,
+  102,105,115,119,255,101,255, 42, 47,255, 47,105,255, 47,105,255, 60, 62,
+  255,100,255,105,255, 46,255, 42, 47,255, 61, 62,255,105,116,255, 33, 38,
+   46, 47, 60, 61, 62, 97, 98, 99,100,101,102,104,105,108,115,116,124,255
+};
+
+static const unsigned char ag_key_act[] = {
+  0,0,0,4,2,7,7,7,4,3,3,4,0,0,4,5,5,4,0,0,4,0,0,4,7,5,4,7,7,7,4,7,7,4,5,
+  4,5,6,4,7,7,7,4,3,3,3,2,2,2,3,2,7,7,7,2,2,2,7,2,7,7,2,7,7,7,3,4,3,7,7,
+  7,4,3,4,0,0,4,7,7,4,7,7,4,5,7,4,7,7,7,4,2,7,7,7,7,2,2,7,2,7,7,2,7,7,7,
+  4,0,0,4,7,7,7,4,7,7,4,5,7,4,7,7,7,4,2,7,7,7,7,2,2,7,2,7,7,2,7,7,7,4,5,
+  7,4,7,7,4,3,7,7,2,2,7,4,0,0,4,0,0,4,0,0,4,5,4,6,4,7,7,4,3,3,3,2,2,3,2,
+  7,7,7,7,7,7,2,7,2,7,3,4,5,7,4,7,7,4,7,7,2,2,7,4,0,0,4,5,5,4,2,2,4,5,5,
+  4,2,4,3,4,0,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,4,0,0,4,0,0,4,7,7,4,3,3,3,
+  2,2,3,2,7,7,7,7,7,7,7,7,7,2,7,3,4,0,0,4,2,3,7,4,0,0,4,2,3,4,3,3,4,3,7,
+  7,7,7,7,7,7,7,4,3,4,3,7,4,3,7,4,5,5,4,3,2,4,0,0,4,0,0,4,7,7,4,3,3,3,3,
+  2,3,2,7,7,7,7,7,7,7,7,2,7,3,4,7,7,4,3,3,3,3,3,3,3,7,7,7,7,7,7,7,7,2,7,
+  3,4,0,0,4,0,0,4,0,0,4,7,7,4,3,3,3,2,2,3,2,7,7,7,7,7,7,7,7,2,7,3,4,0,0,
+  4,0,0,4,0,0,4,7,7,4,3,3,3,2,2,3,2,7,7,7,2,7,3,4,0,0,4,2,4,3,3,3,3,4,7,
+  7,4,3,3,3,3,3,7,7,7,7,7,7,7,7,2,7,3,4,7,7,4,3,3,3,7,7,7,7,7,7,7,7,2,7,
+  3,4,7,7,4,3,3,7,7,7,7,7,7,7,7,2,7,3,4,0,0,4,0,0,4,0,0,4,7,7,4,7,7,4,3,
+  3,3,2,2,3,2,7,7,7,7,2,7,7,7,7,2,7,7,3,4,3,7,7,4,3,7,7,7,7,4,3,7,4,7,4,
+  7,4,3,3,7,4,5,7,4,7,7,4,3,7,7,7,2,2,7,4,7,4,0,0,4,2,7,4,3,7,4,3,3,4,7,
+  4,7,4,3,4,0,0,4,0,0,4,7,7,4,3,3,3,2,3,3,2,7,7,7,7,7,7,7,7,7,2,7,3,4
+};
+
+static const unsigned short ag_key_parm[] = {
+    0, 13, 16,  0,  0, 12, 14, 16,  0, 12, 13,  0, 13, 16,  0, 20, 18,  0,
+  236,234,  0,235,210,  0, 40, 10,  0,  0, 26, 44,  0, 36,  6,  0, 14,  0,
+    2,  8,  0, 22, 30, 16,  0,233,229,246,  0,  0,  0,232,  0, 12, 46, 34,
+    0,  0,  0, 28,  0, 32, 42,  0, 24, 38,  4,228,  0, 16, 12, 14, 16,  0,
+   13,  0, 13, 16,  0, 26, 44,  0, 36,  6,  0,  2, 14,  0, 22, 30, 16,  0,
+    0, 12, 46, 34, 40,  0,  0, 28,  0, 32, 42,  0, 24, 38,  4,  0, 13, 16,
+    0,  0, 26, 44,  0, 36,  6,  0,  2, 14,  0, 22, 30, 16,  0,  0, 12, 46,
+   34, 40,  0,  0, 28,  0, 32, 42,  0, 24, 38,  4,  0,  2, 14,  0, 22, 16,
+    0, 16, 12,  6,  0,  0,  4,  0, 13, 16,  0,236,234,  0,235,210,  0, 14,
+    0,  8,  0, 30, 16,  0,233,229,246,  0,  0,232,  0, 12, 46, 34, 26, 36,
+   28,  0, 32,  0, 24,228,  0,  2, 14,  0, 22, 16,  0, 12,  6,  0,  0,  4,
+    0, 13, 16,  0, 20, 18,  0,  0,  0,  0, 20, 18,  0,  0,  0, 16,  0, 64,
+   63, 62, 61, 54, 55, 56, 57, 58, 59, 60, 72,  0,  0,  0, 13, 16,  0,236,
+  234,  0,235,210,  0, 30, 16,  0,233,229,246,  0,  0,232,  0, 12, 46, 34,
+   10, 26, 36, 28, 14, 32,  0, 24,228,  0, 13, 16,  0,  0,210, 10,  0, 13,
+   16,  0,  0,210,  0, 16,210,  0, 16, 46, 34, 26, 36, 28, 32, 30, 24,  0,
+  210,  0, 16,  4,  0, 16,  0,  0, 20, 18,  0, 13,  0,  0,236,234,  0,235,
+  210,  0, 30, 16,  0,233,229,246, 16,  0,232,  0, 12, 46, 34, 26, 36, 28,
+   14, 32,  0, 24,228,  0, 30, 16,  0,233,229,246, 16,234,232,235, 12, 46,
+   34, 26, 36, 28, 14, 32,  0, 24,228,  0, 13, 16,  0,236,234,  0,235,210,
+    0, 30, 16,  0,233,229,246,  0,  0,232,  0, 12, 46, 34, 26, 36, 28, 14,
+   32,  0, 24,228,  0, 13, 16,  0,236,234,  0,235,210,  0, 30, 16,  0,233,
+  229,246,  0,  0,232,  0, 28, 14, 32,  0, 24,228,  0, 13, 16,  0,  0,  0,
+  233,234,232,235,  0, 30, 16,  0,233,229,246, 16,232, 12, 46, 34, 26, 36,
+   28, 14, 32,  0, 24,228,  0, 30, 16,  0,229,246, 16, 12, 46, 34, 26, 36,
+   28, 14, 32,  0, 24,228,  0, 30, 16,  0,246, 16, 12, 46, 34, 26, 36, 28,
+   14, 32,  0, 24,228,  0, 13, 16,  0,236,234,  0,235,210,  0,  0, 26,  0,
+   30, 16,  0,233,229,246,  0,  0,232,  0, 12, 46, 34, 10,  0, 36, 28, 14,
+   32,  0, 24,  4,228,  0, 16, 44, 42,  0, 16, 40, 44, 42, 38,  0, 13, 34,
+    0, 34,  0,  8,  0, 16,210, 10,  0,  2, 14,  0, 22, 16,  0, 16, 12,  0,
+    6,  0,  0,  4,  0,  0,  0, 13, 16,  0,  0,  2,  0, 16,  2,  0,234,235,
+    0, 10,  0,  2,  0,246,  0, 13, 16,  0,235,210,  0, 30, 16,  0,233,229,
+  246,  0,234,232,  0, 12, 46, 34, 10, 26, 36, 28, 14, 32,  0, 24,228,  0
+};
+
+static const unsigned short ag_key_jmp[] = {
+    0,  0,  0,  0,  1,  0,  6,  9,  0, 15, 17,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  0, 44,  0,  0, 50, 53, 57,  0, 67, 71,  0,  0,  0,
+    0, 34,  0, 96,101,104,  0, 19, 21, 23, 12, 15, 18, 25, 21, 27, 33, 39,
+   24, 27, 31, 73, 36, 82, 90, 39,109,114,122,127,  0,129,131,137,140,  0,
+  146,  0,  0,  0,  0,172,176,  0,186,190,  0,  0,201,  0,217,222,225,  0,
+   74,148,154,160,165, 77, 80,192, 83,203,211, 86,230,235,243,  0,  0,  0,
+    0,272,275,279,  0,289,293,  0,  0,304,  0,320,325,328,  0,106,248,254,
+  260,265,109,113,295,116,306,314,119,333,338,346,  0,  0,362,  0,364,369,
+    0,351,353,359,139,142,374,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    0,161,  0,431,434,  0,379,381,383,152,155,385,158,387,393,399,404,409,
+  414,163,423,165,439,444,  0,  0,455,  0,457,462,  0,446,452,187,190,467,
+    0,  0,  0,  0,  0,  0,  0,199,202,  0,  0,  0,  0,208,  0,472,  0,  0,
+    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,215,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,531,534,  0,474,476,478,230,233,480,236,482,488,494,
+  499,501,506,511,520,523,239,539,544,  0,  0,  0,  0,262,546,548,  0,  0,
+    0,  0,269,550,  0,552,554,  0,556,558,564,569,574,579,588,596,600,  0,
+  605,  0,607,609,  0,614,616,  0,  0,  0,  0,620,296,  0,  0,  0,  0,  0,
+    0,  0,679,682,  0,622,624,626,628,302,630,305,632,638,644,649,654,659,
+  668,671,308,687,692,  0,755,758,  0,694,696,698,700,702,704,706,708,714,
+  720,725,730,735,744,747,330,763,768,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    0,825,828,  0,770,772,774,352,355,776,358,778,784,790,795,800,805,814,
+  817,361,833,838,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,868,871,  0,840,
+  842,844,383,386,846,389,848,857,860,392,876,881,  0,  0,  0,  0,409,  0,
+  883,885,887,889,  0,948,951,  0,891,893,895,897,899,901,907,913,918,923,
+  928,937,940,419,956,961,  0,1016,1019,  0,963,965,967,969,975,981,986,
+  991,996,1005,1008,439,1024,1029,  0,1082,1085,  0,1031,1033,1035,1041,
+  1047,1052,1057,1062,1071,1074,457,1090,1095,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,1124,1127,  0,1156,1159,  0,1097,1099,1101,474,477,1103,480,
+  1105,1111,1117,1122,483,1131,1136,1145,1148,486,1164,1169,1174,  0,1176,
+  1178,1189,  0,1195,1197,1204,1215,1221,  0,1229,1231,  0,1236,  0,1241,
+    0,1243,1245,1247,  0,  0,1264,  0,1266,1271,  0,1249,1251,1257,1261,
+  531,534,1276,  0,1281,  0,  0,  0,  0,547,1285,  0,1287,1289,  0,1291,
+  1293,  0,1295,  0,1297,  0,1299,  0,  0,  0,  0,  0,  0,  0,1360,1363,
+    0,1301,1303,1305,565,1307,1309,568,1311,1317,1323,1328,1330,1335,1340,
+  1349,1352,571,1368,1373,  0
+};
+
+static const unsigned short ag_key_index[] = {
+    4,  9, 43, 67,  0, 72, 72, 72, 90,123,  0,  0,  0,145, 67,  0,  0,  0,
+  168,168,  0,  0, 72, 72,  0,145,193,205,  0,211, 72,213,228,  0,242,265,
+   72, 72,272,275, 72,  0,  0, 72,275,  0,278,  0,  0,  0,275,288,275,  0,
+  290,293,213,  0,299,311,  0,211,333, 67,228,364,364,395,412,364,364,299,
+  299,299,299,  0,  0,211,211,211,211,211,311,311,414,311,414,333,422,442,
+  442,442,442,460, 67, 72,205,205,205,213,489,  0,  0,228,228,  0, 72,  0,
+  211,  0,211, 72,  0,510, 72,  0,514, 72,  0, 72,  0,520,523,520,523, 72,
+    0,213, 72,  0,525,299,211,  0,211,  0,299,  0,  0,  0,527,275,275,275,
+  537,545,145,  0,  0,  0,  0,  0,  4,  0,  0,414,  0,299,211,299,211,299,
+  211,211,211,211,211,299,211,299,  0,299,  0,  0,  0,299,  0,299,  0,211,
+  211,211,211,211,211,299,211,299,211,211,299,211,299,211,299,211,  0,228,
+    0,  0,  0,275,  0,213, 72,  0, 72,  0,213,  0,  0, 72,  0, 72,  0,213,
+  211,211,213,213,211,  0, 72,  0,  0,213,213,213,213,213,275,  0,275,  0,
+  550,553,364,  0,211,333,  0,311,311,211,311,311,333,333,333,333,422,422,
+  311,311,311,311,556,333,333,422,442,442,442,442,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  0,  0,213,213,559,211,275,275,561,  0,563,563,299,
+  211,574,213,213,213,213,213,213,299,211,211,211,  0,  0, 72,  0,213,  0,
+  299,211,  0,213,  0,  0
+};
+
+static const unsigned char ag_key_ends[] = {
+99,116,105,111,110,0, 110,116,0, 116,114,105,110,103,0, 47,0, 
+42,0, 61,0, 38,0, 46,0, 61,0, 99,116,105,111,110,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 102,97,117,108,116,0, 
+115,101,0, 116,114,121,0, 112,108,97,110,97,116,105,111,110,0, 
+101,108,100,0, 114,0, 105,103,104,108,105,103,104,116,0, 
+111,99,97,116,105,111,110,0, 114,111,109,112,116,0, 114,101,101,110,0, 
+122,101,0, 114,105,110,103,0, 105,116,108,101,0, 
+97,114,105,97,98,108,101,0, 104,105,108,101,0, 124,0, 47,0, 
+99,116,105,111,110,0, 110,116,0, 116,114,105,110,103,0, 42,0, 
+99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, 
+101,102,97,117,108,116,0, 116,114,121,0, 
+112,108,97,110,97,116,105,111,110,0, 101,108,100,0, 114,0, 
+105,103,104,108,105,103,104,116,0, 116,0, 111,99,97,116,105,111,110,0, 
+114,111,109,112,116,0, 114,101,101,110,0, 122,101,0, 
+114,105,110,103,0, 105,116,108,101,0, 97,114,105,97,98,108,101,0, 
+104,105,108,101,0, 99,116,105,111,110,0, 117,116,116,111,110,0, 
+111,108,111,114,0, 101,102,97,117,108,116,0, 115,101,0, 
+116,114,121,0, 112,108,97,110,97,116,105,111,110,0, 101,108,100,0, 
+114,0, 105,103,104,108,105,103,104,116,0, 116,0, 
+111,99,97,116,105,111,110,0, 114,111,109,112,116,0, 114,101,101,110,0, 
+122,101,0, 114,105,110,103,0, 105,116,108,101,0, 
+97,114,105,97,98,108,101,0, 104,105,108,101,0, 47,0, 
+99,116,105,111,110,0, 111,114,0, 116,0, 114,101,101,110,0, 
+114,105,110,103,0, 104,105,108,101,0, 61,0, 38,0, 46,0, 61,0, 
+99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, 
+110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 99,116,105,111,110,0, 111,114,0, 116,0, 
+114,101,101,110,0, 114,105,110,103,0, 104,105,108,101,0, 47,0, 
+61,0, 38,0, 46,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0, 
+111,108,111,114,0, 111,0, 110,116,114,121,0, 105,101,108,100,0, 
+105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 62,0, 111,0, 62,0, 47,0, 62,0, 47,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, 
+105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 
+111,99,97,116,105,111,110,0, 105,122,101,0, 105,116,108,101,0, 
+62,0, 47,0, 104,105,108,101,0, 47,0, 108,115,101,0, 42,0, 61,0, 
+38,0, 46,0, 47,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0, 
+111,108,111,114,0, 110,116,114,121,0, 105,101,108,100,0, 
+105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 47,0, 61,0, 61,0, 
+61,0, 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, 
+110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 
+110,116,0, 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0, 
+99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, 
+110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 
+110,116,0, 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0, 
+105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 61,0, 61,0, 61,0, 61,0, 61,0, 38,0, 
+46,0, 47,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0, 
+111,108,111,114,0, 110,116,114,121,0, 105,101,108,100,0, 
+105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 38,0, 46,0, 47,0, 99,116,105,111,110,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, 
+105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 46,0, 47,0, 99,116,105,111,110,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, 
+105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0, 
+99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, 
+111,0, 115,101,0, 116,114,121,0, 105,101,108,100,0, 
+105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 104,105,108,101,0, 124,0, 47,0, 
+120,112,108,97,110,97,116,105,111,110,0, 114,111,109,112,116,0, 
+47,0, 101,102,97,117,108,116,0, 120,112,108,97,110,97,116,105,111,110,0, 
+114,111,109,112,116,0, 97,114,105,97,98,108,101,0, 42,0, 
+111,108,111,114,0, 111,108,111,114,0, 110,0, 47,0, 62,0, 111,0, 
+47,0, 99,116,105,111,110,0, 108,115,101,0, 111,114,0, 116,0, 
+114,101,101,110,0, 114,105,110,103,0, 104,105,108,101,0, 
+108,115,101,0, 102,0, 47,0, 102,0, 61,0, 61,0, 111,0, 102,0, 
+46,0, 61,0, 38,0, 46,0, 61,0, 61,0, 99,116,105,111,110,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 111,0, 110,116,114,121,0, 
+105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 
+};
+
+#define AG_TCV(x) ag_tcv[(x)]
+
+static const unsigned short ag_tcv[] = {
+   26,193,193,193,193,193,193,193,193,  9, 15,  9,  9,  9,193,193,193,193,
+  193,193,193,193,193,193,193,193, 26,193,193,193,193,193,  9,243, 50,203,
+  193,241,231,169,213,212,239,237,251,238,193,240,167,194,194,194,194,194,
+  194,194,195,195,226,216,207,215,209,227,217,261,261,261,261,261,261,262,
+  262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,
+  262,202, 70,201,230,262,193,261,261,261,261,261,261,262,262,262,262,262,
+  262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,205,208,204,
+  242,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
+  193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
+  193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
+  193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
+  193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
+  193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
+  193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
+  193,193,193,193
+};
+
+#ifndef SYNTAX_ERROR
+#define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \
+  (PCB).error_message, (PCB).line, (PCB).column)
+#endif
+
+#ifndef FIRST_LINE
+#define FIRST_LINE 1
+#endif
+
+#ifndef FIRST_COLUMN
+#define FIRST_COLUMN 1
+#endif
+
+#ifndef PARSER_STACK_OVERFLOW
+#define PARSER_STACK_OVERFLOW {fprintf(stderr, \
+   "\nParser stack overflow, line %d, column %d\n",\
+   (PCB).line, (PCB).column);}
+#endif
+
+#ifndef REDUCTION_TOKEN_ERROR
+#define REDUCTION_TOKEN_ERROR {fprintf(stderr, \
+    "\nReduction token error, line %d, column %d\n", \
+    (PCB).line, (PCB).column);}
+#endif
+
+
+#ifndef INPUT_CODE
+#define INPUT_CODE(T) (T)
+#endif
+
+typedef enum
+  {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key,
+   ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words;
+
+static void ag_get_key_word(int ag_k) {
+  int ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
+  const  unsigned char *ag_p;
+  int ag_ch;
+  while (1) {
+    switch (ag_key_act[ag_k]) {
+    case ag_cf_end_key: {
+      const  unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k];
+      do {
+        if ((ag_ch = *sp++) == 0) {
+          int ag_k1 = ag_key_parm[ag_k];
+          int ag_k2 = ag_key_pt[ag_k1];
+          if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) goto ag_fail;
+          (PCB).token_number = (cc-crash_token_type) ag_key_pt[ag_k1 + 1];
+          return;
+        }
+      } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch);
+      goto ag_fail;
+    }
+    case ag_end_key: {
+      const  unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k];
+      do {
+        if ((ag_ch = *sp++) == 0) {
+          (PCB).token_number = (cc-crash_token_type) ag_key_parm[ag_k];
+          return;
+        }
+      } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch);
+    }
+    case ag_no_match_key:
+ag_fail:
+      (PCB).la_ptr = (PCB).pointer + ag_save;
+      return;
+    case ag_cf_set_key: {
+      int ag_k1 = ag_key_parm[ag_k];
+      int ag_k2 = ag_key_pt[ag_k1];
+      ag_k = ag_key_jmp[ag_k];
+      if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) break;
+      ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
+      (PCB).token_number = (cc-crash_token_type) ag_key_pt[ag_k1+1];
+      break;
+    }
+    case ag_set_key:
+      ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
+      (PCB).token_number = (cc-crash_token_type) ag_key_parm[ag_k];
+    case ag_jmp_key:
+      ag_k = ag_key_jmp[ag_k];
+      break;
+    case ag_accept_key:
+      (PCB).token_number = (cc-crash_token_type) ag_key_parm[ag_k];
+      return;
+    case ag_cf_accept_key: {
+      int ag_k1 = ag_key_parm[ag_k];
+      int ag_k2 = ag_key_pt[ag_k1];
+      if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)])
+        (PCB).la_ptr = (PCB).pointer + ag_save;
+      else (PCB).token_number = (cc-crash_token_type) ag_key_pt[ag_k1+1];
+      return;
+    }
+    }
+    ag_ch = CONVERT_CASE(*(PCB).la_ptr++);
+    ag_p = &ag_key_ch[ag_k];
+    if (ag_ch <= 255) while (*ag_p < ag_ch) ag_p++;
+    if (ag_ch > 255 || *ag_p != ag_ch) {
+      (PCB).la_ptr = (PCB).pointer + ag_save;
+      return;
+    }
+    ag_k = (int) (ag_p - ag_key_ch);
+  }
+}
+
+
+#ifndef AG_NEWLINE
+#define AG_NEWLINE 10
+#endif
+
+#ifndef AG_RETURN
+#define AG_RETURN 13
+#endif
+
+#ifndef AG_FORMFEED
+#define AG_FORMFEED 12
+#endif
+
+#ifndef AG_TABCHAR
+#define AG_TABCHAR 9
+#endif
+
+static void ag_track(void) {
+  int ag_k = (int) ((PCB).la_ptr - (PCB).pointer);
+  while (ag_k--) {
+    switch (*(PCB).pointer++) {
+    case AG_NEWLINE:
+      (PCB).column = 1, (PCB).line++;
+    case AG_RETURN:
+    case AG_FORMFEED:
+      break;
+    case AG_TABCHAR:
+      (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING);
+      break;
+    default:
+      (PCB).column++;
+    }
+  }
+}
+
+
+static void ag_prot(void) {
+  int ag_k;
+  ag_k = 128 - ++(PCB).btsx;
+  if (ag_k <= (PCB).ssx) {
+    (PCB).exit_flag = AG_STACK_ERROR_CODE;
+    PARSER_STACK_OVERFLOW;
+    return;
+  }
+  (PCB).bts[(PCB).btsx] = (PCB).sn;
+  (PCB).bts[ag_k] = (PCB).ssx;
+  (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx];
+  (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx];
+  (PCB).cs[ag_k] = (PCB).cs[(PCB).ssx];
+}
+
+static void ag_undo(void) {
+  if ((PCB).drt == -1) return;
+  while ((PCB).btsx) {
+    int ag_k = 128 - (PCB).btsx;
+    (PCB).sn = (PCB).bts[(PCB).btsx--];
+    (PCB).ssx = (PCB).bts[ag_k];
+    (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k];
+    (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k];
+    (PCB).cs[(PCB).ssx] = (PCB).cs[ag_k];
+  }
+  (PCB).token_number = (cc-crash_token_type) (PCB).drt;
+  (PCB).ssx = (PCB).dssx;
+  (PCB).sn = (PCB).dsn;
+  (PCB).drt = -1;
+}
+
+
+
+static const int ag_rtt[] = {
+  101,104, 28,  0,152,155,153,156,  0
+};
+
+static const unsigned short ag_tstt[] = {
+225,224,223,205,26,16,15,13,9,0,1,10,11,117,197,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
+  209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,15,13,12,9,0,
+  10,11,
+13,9,0,1,10,11,
+225,224,223,205,26,16,15,0,7,20,21,22,23,24,25,40,114,115,116,198,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
+  209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,15,9,0,18,19,
+262,261,13,9,0,1,10,11,117,197,
+262,261,13,9,0,1,10,11,117,197,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
+  167,70,13,9,0,1,10,11,117,197,
+262,261,260,259,258,257,256,255,254,253,252,251,250,249,248,247,243,242,241,
+  240,239,238,237,231,230,227,226,225,224,223,221,218,216,215,214,213,209,
+  208,207,205,204,203,195,194,193,169,167,70,50,16,15,13,9,0,1,10,11,117,
+  197,
+262,261,260,259,258,257,256,255,254,253,252,251,250,249,248,247,243,242,241,
+  240,239,238,237,231,230,227,226,225,224,223,221,218,216,215,214,213,211,
+  209,208,207,205,204,203,195,194,193,169,167,70,50,26,16,15,13,9,0,1,10,
+  11,117,197,
+262,261,0,110,166,196,
+262,261,0,110,166,196,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
+  167,70,0,8,206,222,
+262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
+  218,216,214,213,204,195,194,193,169,167,70,50,16,15,0,7,84,85,198,
+225,224,223,205,16,15,0,7,21,22,23,40,114,115,116,198,
+26,0,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
+  209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,9,0,
+15,0,
+262,261,260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,
+  234,233,232,231,230,229,228,227,226,225,224,223,220,217,216,215,213,212,
+  210,209,208,207,205,204,203,202,195,194,167,26,16,15,13,9,0,1,10,11,117,
+  197,
+262,261,260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,
+  234,233,232,231,230,229,228,227,226,225,224,223,220,217,216,215,213,212,
+  210,209,208,207,205,204,203,202,195,194,167,26,16,15,13,9,0,1,10,11,117,
+  197,
+262,261,215,195,194,167,0,100,119,166,196,
+262,261,215,195,194,167,0,100,119,166,196,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
+  167,70,0,
+205,13,9,0,1,10,11,117,197,
+205,0,37,38,40,
+16,15,0,7,198,
+262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
+  218,216,214,213,204,195,194,193,169,167,70,50,0,2,4,5,22,27,28,33,43,49,
+  75,76,80,86,87,88,89,91,92,93,95,96,97,98,99,101,104,108,109,114,115,
+  116,172,173,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
+  207,205,204,203,195,194,193,169,167,163,162,70,50,16,15,13,9,0,1,10,11,
+  117,197,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
+  196,200,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
+  167,70,13,9,0,1,10,11,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
+  207,205,204,203,195,194,193,169,167,70,50,16,15,0,2,4,5,7,34,37,38,39,
+  40,41,43,49,79,81,82,100,198,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
+  209,208,207,205,204,203,202,201,195,194,193,169,167,72,70,64,63,62,61,
+  60,59,58,57,56,55,54,50,9,0,51,53,65,66,67,68,69,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
+  209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,15,9,0,46,48,
+262,261,260,255,254,253,252,251,250,249,248,246,243,242,241,240,239,238,237,
+  236,235,234,233,232,231,230,229,228,227,226,225,224,223,219,217,216,215,
+  213,212,210,209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,
+  26,16,15,13,9,0,1,10,11,117,197,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,219,216,215,213,212,
+  210,209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,16,15,13,
+  9,0,1,10,11,117,197,
+213,13,9,0,1,10,11,117,197,
+205,13,9,0,1,10,11,117,197,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
+  210,209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,16,15,13,
+  9,0,1,10,11,117,197,
+202,0,29,
+213,13,9,0,1,10,11,117,197,
+213,0,45,
+205,0,40,
+262,261,13,9,0,1,10,11,117,197,
+203,0,34,
+213,0,45,
+260,255,254,253,252,250,249,248,204,16,15,0,7,39,174,176,177,178,179,181,
+  182,183,184,185,190,198,
+262,261,0,110,166,196,
+217,215,0,100,106,
+215,0,100,
+215,0,100,
+210,209,208,0,81,82,83,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,210,209,208,
+  207,205,204,195,194,193,169,167,70,50,16,15,0,2,4,5,27,28,31,35,37,38,
+  40,43,49,77,78,199,200,206,
+205,0,37,38,40,
+218,0,98,108,
+211,204,16,15,0,7,84,85,198,
+204,16,15,0,7,84,85,198,
+204,0,39,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,205,203,
+  195,194,193,169,167,163,162,70,50,13,9,0,1,10,11,117,197,
+262,261,195,194,167,0,119,166,196,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
+  196,200,
+262,261,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,34,37,38,40,45,
+  49,100,107,110,150,151,152,153,155,156,159,160,161,164,166,196,200,244,
+  245,
+217,202,0,29,106,
+225,224,223,216,205,204,203,26,16,15,0,34,102,103,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
+  209,208,207,205,204,203,202,201,195,194,193,167,72,70,64,63,62,61,60,59,
+  58,57,56,55,54,50,9,0,53,65,66,67,68,69,170,
+195,194,167,0,
+194,167,0,
+261,195,194,167,0,74,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
+  207,205,204,203,195,194,193,169,167,70,50,16,15,13,9,0,1,10,11,117,197,
+260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,234,233,
+  232,231,230,229,228,227,226,225,224,223,217,216,215,212,210,209,208,207,
+  205,204,203,202,26,16,15,13,9,0,1,10,11,117,197,
+260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,234,233,
+  232,231,230,229,228,227,226,225,224,223,217,216,215,212,210,209,208,207,
+  205,204,203,202,26,16,15,13,9,0,1,10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+213,0,45,154,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,110,151,155,156,166,196,200,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,141,142,143,148,149,150,151,152,153,155,
+  156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,141,142,143,148,149,150,151,152,153,155,
+  156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,141,142,143,148,149,150,151,152,153,155,
+  156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,141,142,143,148,149,150,151,152,153,155,
+  156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+241,240,239,0,144,145,147,
+238,237,0,141,142,
+217,202,0,29,106,
+236,210,0,83,139,
+235,234,233,232,209,207,203,0,34,79,82,133,134,136,137,
+235,234,209,207,0,79,82,136,137,
+233,232,0,133,134,
+231,0,131,
+230,0,129,
+208,0,81,
+229,0,126,
+228,227,0,121,124,
+225,224,223,216,205,204,26,16,15,0,102,103,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
+  167,70,0,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
+  207,205,204,203,195,194,193,169,167,163,162,70,50,16,15,13,9,0,1,10,11,
+  117,197,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
+  207,205,204,203,195,194,193,169,167,163,162,70,50,16,15,13,9,0,1,10,11,
+  117,197,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
+  207,205,204,203,195,194,193,169,167,163,162,70,50,16,15,13,9,0,1,10,11,
+  117,197,
+202,0,29,
+262,261,260,255,254,253,252,251,250,249,248,246,243,242,241,240,239,238,237,
+  236,235,234,233,232,231,230,229,228,227,226,225,224,223,219,218,217,216,
+  215,213,212,211,210,209,208,207,205,204,203,202,201,195,194,193,169,167,
+  70,50,26,16,15,13,9,0,1,10,11,117,197,
+194,167,0,
+261,195,194,167,0,73,74,
+194,167,0,
+194,167,0,
+213,0,43,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,13,9,0,1,10,11,117,197,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,30,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
+  169,167,70,50,0,2,4,5,27,28,43,49,199,200,206,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+205,13,9,0,1,10,11,117,197,
+205,0,40,
+259,258,205,204,16,15,0,7,37,38,39,40,188,189,198,
+205,13,9,0,1,10,11,117,197,
+205,0,40,
+259,258,257,256,204,16,15,0,7,39,186,187,188,189,198,
+215,13,9,0,1,10,11,117,197,
+215,0,100,
+215,13,9,0,1,10,11,117,197,
+215,0,100,
+254,13,9,0,1,10,11,117,197,
+254,0,176,184,
+254,13,9,0,1,10,11,117,197,
+254,0,176,184,
+215,13,9,0,1,10,11,117,197,
+215,0,100,
+16,15,0,7,198,
+215,13,9,0,1,10,11,117,197,
+215,0,100,
+262,261,220,195,194,167,0,111,119,166,196,
+262,261,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,10,11,117,197,
+262,261,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,34,37,38,40,45,
+  49,100,107,110,150,151,152,153,155,156,159,160,161,164,166,196,200,244,
+  245,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
+  196,200,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,205,203,
+  195,194,193,169,167,163,162,70,50,13,9,0,1,10,11,117,197,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
+  169,167,70,50,0,2,4,5,27,28,33,43,49,76,199,200,206,
+202,0,29,
+203,0,34,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+210,209,208,207,204,16,15,0,79,
+262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
+  218,216,214,213,195,194,193,169,167,70,50,16,15,0,2,4,5,7,22,27,28,33,
+  43,49,75,76,80,89,91,92,93,95,96,97,98,99,101,104,108,109,114,115,116,
+  172,173,198,199,200,206,
+211,0,90,
+262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
+  218,216,214,213,195,194,193,169,167,70,50,16,15,0,2,4,5,7,22,27,28,33,
+  43,49,75,76,80,89,91,92,93,95,96,97,98,99,101,104,108,109,114,115,116,
+  172,173,198,199,200,206,
+212,203,0,34,44,
+217,202,0,29,106,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,158,
+213,0,45,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,110,150,151,155,156,166,196,
+  200,
+225,224,223,205,204,26,16,15,13,9,0,1,10,11,117,197,
+169,0,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+235,234,233,232,212,209,207,203,0,34,44,79,82,133,134,136,137,
+212,0,44,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,141,142,143,146,148,149,150,151,152,153,
+  155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,141,142,143,146,148,149,150,151,152,153,
+  155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,141,142,143,148,149,150,151,152,153,155,
+  156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,140,141,142,143,148,149,150,151,152,153,
+  155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,140,141,142,143,148,149,150,151,152,153,
+  155,156,159,160,161,164,166,196,200,244,245,
+262,261,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,34,37,38,40,45,
+  49,100,107,110,150,151,152,153,155,156,159,160,161,164,166,196,200,244,
+  245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,138,140,141,142,143,148,149,150,151,152,
+  153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,138,140,141,142,143,148,149,150,151,152,
+  153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
+  196,200,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
+  196,200,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
+  196,200,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
+  196,200,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
+  196,200,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
+  196,200,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,135,138,140,141,142,143,148,149,150,151,
+  152,153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,135,138,140,141,142,143,148,149,150,151,
+  152,153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,135,138,140,141,142,143,148,149,150,151,
+  152,153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,107,110,135,138,140,141,142,143,148,149,150,151,
+  152,153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,105,107,110,132,135,138,140,141,142,143,148,149,
+  150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,105,107,110,132,135,138,140,141,142,143,148,149,
+  150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,105,107,110,130,132,135,138,140,141,142,143,148,
+  149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,105,107,110,128,130,132,135,138,140,141,142,143,
+  148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,105,107,110,127,128,130,132,135,138,140,141,142,
+  143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,105,107,110,125,127,128,130,132,135,138,140,141,
+  142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,
+  245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,100,105,107,110,123,125,127,128,130,132,135,138,140,
+  141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,
+  244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+261,195,194,167,0,74,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
+  209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,15,9,0,46,48,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+212,0,44,
+202,0,29,
+212,0,44,
+16,15,0,7,198,
+215,13,9,0,1,10,11,117,197,
+215,0,100,
+215,13,9,0,1,10,11,117,197,
+215,0,100,
+16,15,0,7,198,
+215,0,100,
+215,0,100,
+215,13,9,0,1,10,11,117,197,
+215,0,100,
+215,13,9,0,1,10,11,117,197,
+215,0,100,
+16,15,0,7,198,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+16,15,0,7,198,
+16,15,0,7,198,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
+  169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,13,9,0,1,10,11,117,197,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+215,0,100,
+216,204,203,16,15,0,34,102,103,
+216,204,16,15,0,102,103,
+203,0,34,
+203,0,34,
+203,0,34,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,210,209,208,
+  205,204,195,194,193,169,167,70,50,16,15,0,2,4,5,27,28,31,35,37,38,40,43,
+  49,77,78,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,35,37,38,40,43,49,199,200,206,
+203,0,34,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+214,205,16,15,13,9,0,1,10,11,117,197,
+214,205,16,15,0,7,37,38,40,84,85,198,
+260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,234,233,
+  232,231,230,229,228,227,226,225,224,223,217,216,215,212,210,209,208,207,
+  205,204,203,202,26,16,15,13,9,0,1,10,11,117,197,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+217,202,0,29,106,
+212,203,0,34,44,
+241,240,239,0,144,145,147,
+241,240,239,0,144,145,147,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+238,237,0,141,142,
+238,237,0,141,142,
+203,0,34,
+203,0,34,
+203,0,34,
+203,0,34,
+203,0,34,
+203,0,34,
+236,210,0,83,139,
+236,210,0,83,139,
+236,210,0,83,139,
+236,210,0,83,139,
+235,234,209,207,203,0,34,79,82,136,137,
+235,234,209,207,0,79,82,136,137,
+235,234,209,207,0,79,82,136,137,
+233,232,0,133,134,
+231,0,131,
+230,0,129,
+208,0,81,
+229,0,126,
+226,0,122,
+203,201,0,32,34,
+203,201,0,32,34,
+205,0,37,38,40,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
+  169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
+  169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
+  169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
+  169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
+  169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
+  167,70,0,2,206,
+251,0,180,
+251,0,180,
+251,0,180,
+202,0,29,
+203,16,15,0,7,34,198,
+219,205,203,0,34,112,113,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+210,209,208,204,16,15,0,
+210,209,208,204,203,16,15,0,34,
+214,0,92,93,
+203,201,0,32,34,
+246,0,157,
+246,212,0,44,157,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,260,255,254,253,252,251,250,249,248,246,243,242,241,240,239,238,237,
+  235,234,233,232,231,230,229,228,227,226,225,224,223,219,217,216,215,213,
+  212,210,209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,26,16,
+  15,13,9,0,1,10,11,117,197,
+203,16,15,0,7,34,198,
+203,16,15,0,7,34,198,
+203,16,15,0,7,34,198,
+203,16,15,0,7,34,198,
+203,16,15,0,7,34,198,
+16,15,0,7,198,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,192,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
+  169,167,70,50,0,2,4,5,43,49,191,199,200,206,
+205,13,9,0,1,10,11,117,197,
+205,0,37,38,40,
+216,204,16,15,0,102,103,
+205,0,37,38,40,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
+  10,11,117,197,
+262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
+  34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
+  138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
+  196,200,244,245,
+262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
+  193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
+202,0,29,
+212,0,44,
+203,201,0,32,34,
+
+};
+
+
+static unsigned const char ag_astt[6900] = {
+  8,8,8,8,8,8,8,1,1,7,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,1,3,9,7,3,1,1,9,5,3,3,1,1,1,1,1,8,1,1,7,1,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,1,8,1,7,1,1,5,5,1,1,7,1,1,1,1,3,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,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,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
+  1,7,1,1,1,1,3,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,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,7,1,2,2,
+  1,1,7,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,8,8,8,8,8,8,
+  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,5,8,8,8,8,8,8,8,1,1,7,1,1,1,1,1,1,1,1,1,
+  1,5,3,3,3,3,1,1,1,1,1,3,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,5,3,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,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,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,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,10,10,10,7,1,2,2,2,1,1,1,
+  10,10,10,7,1,2,2,2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+  10,10,10,4,5,1,1,7,1,1,1,1,3,1,7,2,1,2,1,1,5,3,1,2,2,2,1,2,2,2,2,2,2,2,2,2,
+  2,2,1,1,1,1,1,2,1,2,8,2,2,2,2,2,2,2,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,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,1,1,7,1,1,1,1,3,1,1,1,1,1,2,7,1,2,1,2,1,1,1,
+  1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,9,5,3,3,1,1,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,1,2,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,7,1,1,1,3,3,2,1,3,2,1,1,1,3,3,3,3,
+  1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,
+  1,2,2,2,2,2,2,2,2,2,2,2,3,2,7,3,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,4,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,3,1,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,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,1,1,7,1,1,1,1,3,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,5,5,5,5,1,1,7,1,1,1,1,3,5,1,1,7,1,1,1,1,3,5,1,1,7,
+  1,1,1,1,3,10,10,10,10,10,10,10,10,10,10,10,10,10,10,5,10,5,5,5,5,5,5,5,5,5,
+  5,5,5,10,10,10,10,10,10,5,5,5,1,1,7,1,1,1,1,3,1,5,1,5,1,1,7,1,1,1,1,3,1,7,
+  1,1,7,2,5,5,1,1,7,1,1,1,1,3,1,4,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,7,3,2,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,1,1,7,1,1,1,7,1,1,4,1,1,1,1,7,1,1,1,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,8,1,5,2,2,2,2,2,2,2,5,5,7,2,1,1,1,2,1,1,2,1,
+  2,1,1,1,1,1,1,1,1,7,2,1,2,1,5,3,1,8,5,1,1,7,1,1,1,1,5,1,1,7,1,1,3,1,1,7,3,
+  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,1,1,7,1,1,1,1,3,1,
+  1,10,10,10,4,2,2,2,1,1,1,1,1,2,7,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,
+  1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,1,2,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,
+  1,5,1,1,5,5,5,1,5,5,1,5,5,5,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,7,1,1,1,1,1,1,1,10,
+  10,10,5,10,10,5,2,10,10,10,5,2,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,1,1,7,1,1,1,1,3,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,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,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,5,5,5,5,5,5,5,5,
+  5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,
+  1,7,1,2,1,1,1,1,1,2,7,2,2,1,2,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,
+  1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,1,2,1,1,1,2,1,1,1,
+  1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,
+  1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,5,1,1,1,1,1,
+  5,1,1,1,1,5,1,1,1,1,5,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,
+  1,1,5,1,1,1,5,1,1,5,1,1,5,1,1,5,1,1,1,5,1,1,5,5,5,1,5,5,5,5,5,7,2,2,10,10,
+  10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,4,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,5,1,1,7,1,1,1,1,3,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,5,1,1,7,1,1,1,
+  1,3,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,5,1,
+  1,7,1,1,1,1,3,1,5,1,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,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,1,1,7,1,
+  1,1,1,3,2,2,7,2,1,1,1,7,1,1,2,2,5,2,2,5,2,7,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,7,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,1,1,1,1,1,7,3,
+  1,1,1,2,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,5,1,1,
+  7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,5,1,1,
+  7,1,1,1,1,3,1,7,1,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,5,1,1,7,1,1,1,1,3,1,
+  7,1,1,1,1,10,10,10,7,1,2,2,2,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,
+  1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,
+  1,1,1,1,1,1,1,2,7,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,
+  1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,
+  7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,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,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,
+  2,2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,
+  2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,1,1,1,1,1,1,5,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,1,2,2,2,2,2,2,2,5,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,4,4,4,1,4,4,4,7,
+  1,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,1,1,5,2,1,1,
+  3,3,1,1,1,1,1,3,1,1,3,2,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,2,2,
+  2,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,1,1,5,2,1,1,3,3,1,
+  1,1,1,1,3,1,1,3,2,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,3,1,1,7,
+  1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,1,1,1,1,1,2,
+  7,1,2,1,2,1,1,1,1,1,1,2,2,2,2,1,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,7,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,7,1,3,1,1,1,1,1,1,1,7,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,1,2,
+  1,1,1,2,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,
+  1,2,1,1,1,2,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,
+  1,1,1,2,1,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
+  1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,
+  1,1,1,2,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,
+  7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,
+  2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,
+  1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,7,1,2,1,2,
+  1,1,1,1,1,1,1,2,2,2,2,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,
+  1,1,1,1,1,2,7,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,2,7,1,2,1,2,1,1,1,
+  1,1,1,1,2,2,2,2,1,1,1,1,1,1,2,7,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,7,1,2,1,2,1,1,1,1,1,1,
+  1,2,2,2,2,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,
+  7,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,
+  1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,
+  1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
+  1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,
+  2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,
+  1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,
+  3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,
+  2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,
+  2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,
+  1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,
+  1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,
+  1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,
+  1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,
+  1,1,1,1,1,2,10,10,10,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,7,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,
+  2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,1,7,1,1,4,1,1,7,2,1,1,7,2,1,5,1,1,7,1,1,
+  1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,1,7,1,1,7,1,5,1,1,7,1,1,1,1,
+  3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,
+  2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
+  1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,7,
+  2,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,1,7,1,1,5,1,5,5,7,1,
+  2,2,1,5,5,5,7,2,2,1,4,1,1,4,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,
+  1,5,2,2,2,2,2,2,2,5,5,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,2,1,1,1,1,1,1,4,1,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,
+  5,5,5,5,1,1,7,1,1,1,1,3,8,1,1,1,7,1,2,1,2,1,1,1,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,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,
+  1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,4,1,1,1,1,
+  7,1,3,1,1,1,4,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,
+  1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,
+  2,2,1,1,1,1,1,4,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,1,4,1,
+  1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,
+  1,1,1,4,1,1,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,7,1,1,1,7,3,1,1,1,7,2,
+  1,1,7,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,
+  1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,7,1,1,7,1,1,7,1,1,4,1,1,1,1,7,2,1,1,1,8,1,
+  7,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,4,4,4,4,4,4,7,4,
+  4,4,4,1,4,4,7,1,1,7,1,1,1,1,7,2,1,1,7,1,1,1,7,2,1,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,
+  2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,
+  1,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,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,7,2,1,1,1,
+  1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,7,2,1,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,
+  7,1,1,1,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,
+  1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,7,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,
+  1,1,1,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,2,1,5,5,5,7,2,2,1,7,2,1,2,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,
+  7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,
+  1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,
+  2,1,1,2,1,2,1,1,1,1,1,1,4,1,1,7,2,1,1,7,2,1
+};
+
+
+static const unsigned short ag_pstt[] = {
+3,3,3,3,3,3,3,1,2,0,2,2,1,2,3,
+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,5,5,1,3,5,
+  1,6,1,
+1,132,454,132,132,1,
+5,6,7,8,15,4,9,3,14,0,14,14,14,14,15,13,12,11,10,9,
+16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+  16,16,16,16,16,16,16,16,16,17,16,4,16,17,
+453,453,1,2,5,2,2,1,2,482,
+453,453,1,2,6,2,2,1,2,481,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,1,2,7,2,2,1,2,480,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,8,2,2,1,2,
+  462,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,9,2,
+  2,1,2,455,
+18,19,10,20,134,134,
+18,19,11,21,134,134,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,12,24,22,23,
+26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,92,26,
+  26,26,26,26,26,26,4,9,13,25,25,26,9,
+5,6,7,8,4,9,19,17,17,17,17,13,12,11,10,9,
+20,15,
+9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,11,
+12,17,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,18,2,2,1,2,
+  519,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,19,2,2,1,2,
+  518,
+18,19,27,136,136,136,20,28,136,135,135,
+18,19,27,136,136,136,21,29,136,135,135,
+31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,130,
+453,1,30,23,30,30,1,30,479,
+8,24,127,31,35,
+4,9,93,91,9,
+30,30,30,37,30,30,30,30,30,30,30,30,30,30,30,5,6,7,43,36,30,40,45,57,30,30,
+  30,30,30,30,51,26,122,39,39,56,39,50,44,33,32,56,52,51,56,55,57,56,55,
+  53,45,56,56,56,54,54,49,48,41,47,12,11,10,46,42,35,34,38,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,27,2,2,
+  1,2,472,
+18,19,27,58,8,51,28,62,197,31,35,60,32,61,63,59,62,62,195,196,134,134,34,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,29,82,84,82,76,197,
+  31,35,81,32,94,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,77,
+  84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,1,132,454,
+  132,132,1,95,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,27,45,97,96,98,8,100,68,30,30,
+  30,30,30,30,51,4,9,31,99,99,99,37,39,38,31,34,35,99,33,32,39,39,39,39,9,
+  35,34,38,
+53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,
+  53,53,53,53,53,53,53,102,101,65,64,63,62,61,60,59,58,57,56,55,50,53,32,
+  52,54,54,54,104,103,54,
+47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,48,44,47,47,47,47,47,47,
+  47,47,47,47,47,47,47,47,47,47,47,33,46,105,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,1,2,34,2,2,1,2,457,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  1,2,35,2,2,1,2,456,
+453,1,2,36,2,2,1,2,475,
+453,1,2,37,2,2,1,2,504,
+31,31,31,31,31,31,31,31,31,31,31,31,31,31,453,31,453,453,453,453,453,453,
+  453,453,453,453,453,453,31,31,31,31,31,31,453,453,453,1,2,38,2,2,1,2,
+  463,
+106,26,107,
+453,1,2,40,2,2,1,2,471,
+58,41,108,
+8,42,217,
+453,453,1,2,43,2,2,1,2,478,
+68,87,109,
+58,45,110,
+111,114,125,117,119,121,123,128,100,4,9,46,218,216,129,127,124,122,120,118,
+  116,113,126,115,112,9,
+18,19,47,130,134,134,
+131,27,48,133,132,
+27,49,134,
+27,23,135,
+136,97,96,51,139,138,137,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,77,77,77,143,8,77,30,30,30,
+  30,30,30,51,77,77,52,122,140,140,140,23,141,141,33,31,35,33,32,142,143,
+  35,34,38,
+8,53,107,31,35,
+36,115,114,41,
+145,92,4,9,55,144,144,145,9,
+92,4,9,56,146,146,95,9,
+100,57,97,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,1,2,58,2,2,1,2,470,
+18,19,136,136,136,187,136,135,135,
+18,19,27,58,8,51,60,62,197,31,35,60,32,61,147,59,62,62,195,196,134,134,34,
+18,19,27,58,8,68,211,211,64,209,205,205,51,61,198,148,198,76,197,31,35,81,
+  32,61,198,59,148,148,198,75,195,196,67,66,65,205,134,134,34,70,69,
+131,106,188,149,150,
+117,117,117,152,117,117,68,117,117,117,63,151,129,129,
+153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,
+  153,153,153,153,153,153,153,153,153,153,153,153,102,101,65,64,63,62,61,
+  60,59,58,57,56,55,153,153,64,153,153,153,104,103,153,153,
+212,212,212,202,
+210,210,201,
+208,206,206,206,200,206,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,68,2,2,1,2,460,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,1,2,69,2,2,1,2,502,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,1,2,70,2,2,1,2,501,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,71,
+  2,2,1,2,500,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,72,
+  2,2,1,2,499,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,73,
+  2,2,1,2,495,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,74,
+  2,2,1,2,494,
+58,75,154,185,
+18,19,27,58,8,51,76,182,197,31,35,60,32,61,59,182,195,196,134,134,34,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,77,178,148,178,76,
+  197,31,35,81,32,61,178,59,80,79,178,78,77,148,148,178,75,195,196,67,66,
+  65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,78,177,148,177,76,
+  197,31,35,81,32,61,177,59,80,79,177,78,77,148,148,177,75,195,196,67,66,
+  65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,79,176,148,176,76,
+  197,31,35,81,32,61,176,59,80,79,176,78,77,148,148,176,75,195,196,67,66,
+  65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,80,175,148,175,76,
+  197,31,35,81,32,61,175,59,80,79,175,78,77,148,148,175,75,195,196,67,66,
+  65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,81,82,84,82,76,197,
+  31,35,81,32,156,61,155,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+157,159,161,166,162,160,158,
+73,74,163,164,163,
+131,106,188,149,165,
+167,136,154,166,168,
+169,171,175,177,97,98,68,86,151,174,173,178,176,172,170,
+169,171,97,98,149,182,181,180,179,
+175,177,147,184,183,
+185,145,186,
+187,143,188,
+96,141,189,
+190,139,191,
+192,194,137,195,193,
+117,117,117,152,117,117,117,117,117,94,128,128,
+31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,133,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,96,2,2,
+  1,2,465,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,97,2,2,
+  1,2,466,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,98,2,2,
+  1,2,464,
+106,36,196,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,1,2,100,2,2,1,2,461,
+71,71,101,
+208,197,197,197,102,197,197,
+73,73,69,
+72,72,68,
+45,105,198,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,1,2,106,2,2,1,2,459,
+24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,107,
+  199,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,108,82,84,82,76,197,
+  31,35,81,32,200,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,109,
+  122,201,201,201,23,33,32,35,34,38,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,110,82,84,82,76,197,
+  31,35,81,32,202,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+453,1,2,111,2,2,1,2,517,
+8,112,234,
+204,206,8,100,4,9,113,235,203,31,208,35,207,205,9,
+453,1,2,114,2,2,1,2,512,
+8,115,228,
+204,206,211,213,100,4,9,116,229,215,214,212,210,209,9,
+453,1,2,117,2,2,1,2,510,
+27,118,216,
+453,1,2,119,2,2,1,2,509,
+27,120,217,
+453,1,2,121,2,2,1,2,507,
+125,122,218,126,
+453,1,2,123,2,2,1,2,506,
+125,124,219,126,
+453,1,2,125,2,2,1,2,511,
+27,126,220,
+4,9,127,220,9,
+453,1,2,128,2,2,1,2,505,
+27,129,221,
+18,19,222,136,136,136,130,223,136,135,135,
+453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,131,2,2,1,2,474,
+18,19,27,58,8,68,211,211,64,209,205,205,51,132,224,148,224,76,197,31,35,81,
+  32,61,224,59,148,148,224,75,195,196,67,66,65,205,134,134,34,70,69,
+18,19,27,58,8,51,133,62,197,31,35,60,32,61,225,59,62,62,195,196,134,134,34,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,134,82,84,82,76,197,
+  31,35,81,32,226,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,135,
+  122,140,140,140,23,227,227,33,31,35,33,32,35,34,38,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,1,2,136,2,2,1,2,467,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,137,
+  122,140,140,140,23,228,228,33,31,35,33,32,35,34,38,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,138,
+  122,140,140,140,23,229,229,33,31,35,33,32,35,34,38,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,139,
+  122,39,39,39,23,44,33,32,230,35,34,38,
+106,32,107,
+68,88,231,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,78,
+  122,140,140,140,23,232,232,33,31,35,33,32,35,34,38,
+84,84,84,98,79,79,79,143,233,
+30,30,30,37,30,30,30,30,30,30,30,30,30,30,30,5,6,7,43,36,30,40,45,30,30,30,
+  30,30,30,51,4,9,93,122,39,39,91,100,39,50,44,33,32,100,52,51,100,103,53,
+  45,100,100,100,54,54,49,48,41,47,12,11,10,46,42,9,35,34,38,
+234,96,235,
+30,30,30,37,30,30,30,30,30,30,30,30,30,30,30,5,6,7,43,36,30,40,45,30,30,30,
+  30,30,30,51,4,9,93,122,39,39,91,99,39,50,44,33,32,99,52,51,99,104,53,45,
+  99,99,99,54,54,49,48,41,47,12,11,10,46,42,9,35,34,38,
+236,68,147,151,199,
+131,106,148,149,165,
+192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,
+  192,192,192,192,192,149,237,
+58,150,238,
+18,19,27,58,8,51,151,239,197,31,35,60,32,61,59,239,239,195,196,134,134,34,
+453,453,453,453,453,453,453,453,1,2,152,2,2,1,2,473,
+213,153,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,154,
+  122,140,140,140,23,240,240,33,31,35,33,32,35,34,38,
+169,171,175,177,236,97,98,68,155,151,199,174,173,178,176,172,170,
+236,156,184,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,157,
+  2,2,1,2,498,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,158,173,148,173,76,
+  197,31,35,81,32,61,173,59,80,79,173,172,78,77,148,148,173,75,195,196,67,
+  66,65,205,134,134,34,70,69,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,159,
+  2,2,1,2,497,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,160,173,148,173,76,
+  197,31,35,81,32,61,173,59,80,79,173,171,78,77,148,148,173,75,195,196,67,
+  66,65,205,134,134,34,70,69,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,161,
+  2,2,1,2,496,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,162,170,148,170,76,
+  197,31,35,81,32,61,170,59,80,79,170,78,77,148,148,170,75,195,196,67,66,
+  65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,163,241,148,241,76,
+  197,31,35,81,32,61,241,59,241,80,79,241,78,77,148,148,241,75,195,196,67,
+  66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,164,242,148,242,76,
+  197,31,35,81,32,61,242,59,242,80,79,242,78,77,148,148,242,75,195,196,67,
+  66,65,205,134,134,34,70,69,
+18,19,27,58,8,68,211,211,64,209,205,205,51,165,181,148,181,76,197,31,35,243,
+  32,61,181,59,148,148,181,75,195,196,67,66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,166,82,148,82,76,197,
+  31,35,81,32,61,82,59,244,82,80,79,82,78,77,148,148,82,75,195,196,67,66,
+  65,205,134,134,34,70,69,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,167,
+  2,2,1,2,493,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,168,82,148,82,76,197,
+  31,35,81,32,61,82,59,245,82,80,79,82,78,77,148,148,82,75,195,196,67,66,
+  65,205,134,134,34,70,69,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,169,
+  2,2,1,2,492,
+18,19,27,58,8,51,170,62,197,31,35,60,32,61,246,59,62,62,195,196,134,134,34,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,171,
+  2,2,1,2,491,
+18,19,27,58,8,51,172,62,197,31,35,60,32,61,247,59,62,62,195,196,134,134,34,
+18,19,27,58,8,51,173,62,197,31,35,60,32,61,248,59,62,62,195,196,134,134,34,
+18,19,27,58,8,51,174,62,197,31,35,60,32,61,249,59,62,62,195,196,134,134,34,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,175,
+  2,2,1,2,490,
+18,19,27,58,8,51,176,62,197,31,35,60,32,61,250,59,62,62,195,196,134,134,34,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,177,
+  2,2,1,2,489,
+18,19,27,58,8,51,178,62,197,31,35,60,32,61,251,59,62,62,195,196,134,134,34,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,179,82,148,82,76,197,
+  31,35,81,32,61,82,59,252,83,82,80,79,82,78,77,148,148,82,75,195,196,67,
+  66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,180,82,148,82,76,197,
+  31,35,81,32,61,82,59,253,83,82,80,79,82,78,77,148,148,82,75,195,196,67,
+  66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,181,82,148,82,76,197,
+  31,35,81,32,61,82,59,254,83,82,80,79,82,78,77,148,148,82,75,195,196,67,
+  66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,182,82,148,82,76,197,
+  31,35,81,32,61,82,59,255,83,82,80,79,82,78,77,148,148,82,75,195,196,67,
+  66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,183,82,84,82,76,197,
+  31,35,81,32,61,256,82,59,257,85,83,82,80,79,82,78,77,84,84,82,75,195,
+  196,67,66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,184,82,84,82,76,197,
+  31,35,81,32,61,256,82,59,258,85,83,82,80,79,82,78,77,84,84,82,75,195,
+  196,67,66,65,205,134,134,34,70,69,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,185,
+  2,2,1,2,488,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,186,82,84,82,76,197,
+  31,35,81,32,61,86,82,59,259,87,85,83,82,80,79,82,78,77,84,84,82,75,195,
+  196,67,66,65,205,134,134,34,70,69,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,187,
+  2,2,1,2,487,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,188,82,84,82,76,197,
+  31,35,81,32,61,86,82,59,260,88,87,85,83,82,80,79,82,78,77,84,84,82,75,
+  195,196,67,66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,189,82,84,82,76,197,
+  31,35,81,32,61,86,82,59,261,89,88,87,85,83,82,80,79,82,78,77,84,84,82,
+  75,195,196,67,66,65,205,134,134,34,70,69,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,190,
+  2,2,1,2,486,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,191,82,84,82,76,197,
+  31,35,81,32,61,86,82,59,262,90,89,88,87,85,83,82,80,79,82,78,77,84,84,
+  82,75,195,196,67,66,65,205,134,134,34,70,69,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,192,
+  2,2,1,2,485,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,193,82,84,82,76,197,
+  31,35,81,32,61,86,82,59,263,91,90,89,88,87,85,83,82,80,79,82,78,77,84,
+  84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,194,
+  2,2,1,2,484,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,195,82,84,82,76,197,
+  31,35,81,32,264,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,196,
+  122,140,140,140,23,265,265,33,31,35,33,32,35,34,38,
+208,76,76,76,74,76,
+47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,48,49,47,47,47,47,47,47,
+  47,47,47,47,47,47,47,47,47,47,47,198,46,105,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,199,
+  122,140,140,140,23,266,266,33,31,35,33,32,35,34,38,
+236,200,267,
+106,27,107,
+236,202,106,
+4,9,203,238,9,
+453,1,2,204,2,2,1,2,516,
+27,205,268,
+453,1,2,206,2,2,1,2,515,
+27,207,269,
+4,9,208,226,9,
+27,209,270,
+27,210,271,
+453,1,2,211,2,2,1,2,514,
+27,212,272,
+453,1,2,213,2,2,1,2,513,
+27,214,273,
+4,9,215,225,9,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,216,82,84,82,76,197,
+  31,35,81,32,274,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,217,82,84,82,76,197,
+  31,35,81,32,275,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+4,9,218,222,9,
+4,9,219,221,9,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,220,82,84,82,76,197,
+  31,35,81,32,276,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,221,
+  277,277,277,33,32,278,277,35,34,38,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,1,2,222,2,2,1,2,477,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,223,
+  122,140,140,140,23,279,279,33,31,35,33,32,35,34,38,
+27,224,280,
+152,117,68,117,117,225,151,120,120,
+152,117,117,117,226,119,119,
+68,116,231,
+68,83,231,
+68,82,231,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,77,77,77,8,77,30,30,30,30,
+  30,30,51,77,77,230,122,140,140,140,23,141,141,33,31,35,33,32,142,281,35,
+  34,38,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,231,
+  122,140,140,140,23,29,33,31,35,33,32,35,34,38,
+68,89,231,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,233,
+  122,140,140,140,23,282,282,33,31,35,33,32,35,34,38,
+453,453,453,453,1,2,234,2,2,1,2,468,
+283,8,4,9,235,25,101,31,35,25,283,9,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,1,2,236,2,2,1,2,469,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,237,
+  122,140,140,140,23,284,284,33,31,35,33,32,35,34,38,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,238,82,84,82,76,197,
+  31,35,81,32,285,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+131,106,189,149,150,
+236,68,240,231,186,
+157,159,161,168,162,160,158,
+157,159,161,167,162,160,158,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,243,82,84,82,76,197,
+  31,35,81,32,286,61,155,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+73,74,165,164,163,
+73,74,164,164,163,
+68,162,151,
+68,161,151,
+68,160,151,
+68,159,151,
+68,153,151,
+68,152,151,
+167,136,158,166,168,
+167,136,157,166,168,
+167,136,156,166,168,
+167,136,155,166,168,
+169,171,97,98,68,256,151,174,173,172,170,
+169,171,97,98,151,182,181,180,179,
+169,171,97,98,150,182,181,180,179,
+175,177,148,184,183,
+185,146,186,
+187,144,188,
+96,142,189,
+190,140,191,
+287,264,288,
+68,289,265,43,231,
+68,289,266,25,231,
+8,267,123,31,35,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,268,
+  277,277,277,33,32,290,277,35,34,38,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,269,
+  277,277,277,33,32,291,277,35,34,38,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,270,
+  277,277,277,33,32,292,277,35,34,38,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,271,
+  277,277,277,33,32,293,277,35,34,38,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,272,
+  277,277,277,33,32,294,277,35,34,38,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,273,295,38,
+296,274,297,
+296,275,298,
+296,276,299,
+106,239,300,
+68,4,9,278,219,301,9,
+302,303,68,279,231,303,303,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,280,82,84,82,76,197,
+  31,35,81,32,304,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+86,86,86,81,81,81,281,
+85,85,85,80,68,80,80,282,231,
+40,283,305,45,
+68,289,284,193,231,
+306,285,307,
+306,236,286,184,307,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,287,
+  2,2,1,2,483,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,288,82,84,82,76,197,
+  31,35,81,32,138,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
+  453,453,1,2,289,2,2,1,2,458,
+68,4,9,290,237,301,9,
+68,4,9,291,236,301,9,
+68,4,9,292,233,301,9,
+68,4,9,293,232,301,9,
+68,4,9,294,231,301,9,
+4,9,295,230,9,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,296,
+  2,2,1,2,508,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,297,82,84,82,76,197,
+  31,35,81,32,224,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,298,82,84,82,76,197,
+  31,35,81,32,223,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,299,82,84,82,76,197,
+  31,35,81,32,227,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
+  244,244,244,244,244,300,308,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,301,
+  309,309,309,33,32,309,35,34,38,
+453,1,2,302,2,2,1,2,476,
+8,303,126,31,35,
+152,117,117,117,304,121,121,
+8,305,105,31,35,
+453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,306,
+  2,2,1,2,503,
+18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,307,82,84,82,76,197,
+  31,35,81,32,310,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
+  77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
+30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,308,
+  122,140,140,140,23,311,311,33,31,35,33,32,35,34,38,
+106,240,300,
+236,310,191,
+68,289,311,245,231,
+
+};
+
+
+static const unsigned short ag_sbt[] = {
+     0,  15,  56,  62,  82, 121, 131, 141, 170, 229, 290, 296, 302, 327,
+   365, 381, 383, 419, 421, 480, 539, 550, 561, 583, 592, 597, 602, 670,
+   712, 735, 797, 825, 878, 933, 972,1038,1083,1092,1101,1146,1149,1158,
+  1161,1164,1174,1177,1180,1206,1212,1217,1220,1223,1230,1279,1284,1288,
+  1297,1305,1308,1344,1353,1376,1417,1422,1436,1490,1494,1497,1503,1543,
+  1595,1647,1672,1697,1722,1747,1751,1772,1822,1872,1922,1972,2034,2041,
+  2046,2051,2056,2071,2080,2085,2088,2091,2094,2097,2102,2114,2136,2178,
+  2220,2262,2265,2333,2336,2343,2346,2349,2352,2384,2410,2472,2506,2568,
+  2577,2580,2595,2604,2607,2622,2631,2634,2643,2646,2655,2659,2668,2672,
+  2681,2684,2689,2698,2701,2712,2733,2774,2797,2859,2899,2935,2975,3015,
+  3051,3054,3057,3097,3106,3174,3177,3245,3250,3255,3281,3284,3306,3322,
+  3324,3364,3381,3384,3409,3460,3485,3536,3561,3611,3662,3713,3754,3806,
+  3831,3883,3908,3931,3956,3979,4002,4025,4050,4073,4098,4121,4174,4227,
+  4280,4333,4388,4443,4468,4524,4549,4606,4664,4689,4748,4773,4833,4858,
+  4920,4960,4966,5005,5045,5048,5051,5054,5059,5068,5071,5080,5083,5088,
+  5091,5094,5103,5106,5115,5118,5123,5185,5247,5252,5257,5319,5353,5385,
+  5425,5428,5437,5444,5447,5450,5453,5501,5540,5543,5583,5595,5607,5659,
+  5699,5761,5766,5771,5778,5785,5847,5852,5857,5860,5863,5866,5869,5872,
+  5875,5880,5885,5890,5895,5906,5915,5924,5929,5932,5935,5938,5941,5944,
+  5949,5954,5959,5993,6027,6061,6095,6129,6153,6156,6159,6162,6165,6172,
+  6179,6241,6248,6257,6261,6266,6269,6274,6299,6361,6426,6433,6440,6447,
+  6454,6461,6466,6491,6553,6615,6677,6703,6736,6745,6750,6757,6762,6787,
+  6849,6889,6892,6895,6900
+};
+
+
+static const unsigned short ag_sbe[] = {
+     9,  53,  58,  69, 118, 125, 135, 164, 223, 284, 292, 298, 323, 360,
+   371, 382, 418, 420, 474, 533, 545, 556, 582, 586, 593, 599, 633, 706,
+   718, 752, 820, 857, 925, 969,1032,1077,1086,1095,1140,1147,1152,1159,
+  1162,1168,1175,1178,1191,1208,1214,1218,1221,1226,1261,1280,1285,1292,
+  1300,1306,1338,1349,1359,1389,1419,1432,1482,1493,1496,1501,1537,1589,
+  1641,1666,1691,1716,1741,1748,1757,1789,1839,1889,1939,1989,2037,2043,
+  2048,2053,2063,2075,2082,2086,2089,2092,2095,2099,2111,2135,2172,2214,
+  2256,2263,2327,2335,2340,2345,2348,2350,2378,2408,2427,2495,2523,2571,
+  2578,2586,2598,2605,2614,2625,2632,2637,2644,2649,2656,2662,2669,2675,
+  2682,2686,2692,2699,2707,2727,2746,2780,2814,2883,2929,2959,2999,3038,
+  3052,3055,3081,3104,3138,3175,3209,3247,3252,3279,3282,3290,3316,3323,
+  3348,3372,3382,3403,3426,3479,3502,3555,3578,3628,3679,3726,3771,3825,
+  3848,3902,3914,3950,3962,3985,4008,4044,4056,4092,4104,4138,4191,4244,
+  4297,4350,4405,4462,4485,4543,4566,4623,4683,4706,4767,4790,4852,4875,
+  4944,4964,5002,5029,5046,5049,5052,5056,5062,5069,5074,5081,5085,5089,
+  5092,5097,5104,5109,5116,5120,5140,5202,5249,5254,5274,5342,5379,5409,
+  5426,5433,5441,5445,5448,5451,5483,5525,5541,5567,5589,5599,5653,5683,
+  5716,5763,5768,5774,5781,5802,5849,5854,5858,5861,5864,5867,5870,5873,
+  5877,5882,5887,5892,5900,5910,5919,5926,5930,5933,5936,5939,5942,5946,
+  5951,5955,5982,6016,6050,6084,6118,6150,6154,6157,6160,6163,6168,6175,
+  6196,6247,6255,6258,6263,6267,6271,6293,6316,6420,6429,6436,6443,6450,
+  6457,6463,6485,6508,6570,6632,6701,6726,6739,6746,6754,6758,6781,6804,
+  6873,6890,6893,6897,6900
+};
+
+
+static const unsigned char ag_fl[] = {
+  2,1,1,2,1,2,2,1,1,2,0,1,3,1,1,1,1,2,0,1,2,1,1,1,0,5,1,3,1,3,1,2,1,1,2,
+  1,2,2,2,2,1,1,1,4,2,1,2,1,0,3,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,2,2,2,1,2,0,1,2,4,4,3,3,2,4,4,1,1,2,1,2,0,1,0,2,2,4,1,3,3,4,1,3,3,
+  6,4,2,1,1,1,1,1,1,2,1,3,0,1,4,4,6,1,5,0,1,6,3,5,5,1,1,2,3,1,2,2,1,5,1,
+  3,1,3,1,3,1,3,1,3,1,3,3,3,3,1,3,3,3,3,3,3,3,3,1,3,3,1,3,3,1,3,3,3,1,1,
+  2,2,2,2,1,1,3,2,1,3,2,3,1,1,3,1,7,0,5,1,1,1,1,2,3,1,1,1,1,1,1,2,1,1,1,
+  2,1,2,3,1,1,2,2,2,5,3,4,4,6,6,4,4,5,2,2,5,5,5,5,2,2,5,5,3,1,3,1,1,1,0,
+  5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,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,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+};
+
+static const unsigned short ag_ptt[] = {
+    0,  1,  1, 10, 11, 11, 11,198, 18, 18, 19, 19,198, 23, 23, 23, 24, 24,
+   25, 25, 20, 27, 27, 27, 30, 27, 33, 33, 31, 31,206,206, 35, 35, 37, 38,
+   38, 38, 38, 38, 41, 41, 41, 41,199, 43, 43, 46, 48, 46,200, 49, 49, 51,
+   51, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 65, 65, 65, 67,
+   68, 69, 66, 73, 73, 78, 78, 75, 75, 75, 75, 75, 80, 80, 80, 76, 77, 77,
+   84, 84, 85, 85, 88, 88, 88, 21, 86, 86, 86, 86, 87, 87, 87, 87, 92, 91,
+   89, 89, 89, 89, 89, 99, 99, 89, 95,103,103, 95, 95, 95,101, 98,113,113,
+   96, 22, 22, 22,222,117,117,222,110,110,110, 94, 94,120,120,123,123,125,
+  125,127,127,128,128,130,130,130,130,130,132,132,132,132,132,132,132,132,
+  132,135,135,135,138,138,138,140,140,140,140,146,143,143,143,143,143,107,
+  107,107,107,107,107,107,154,152,105,105,150,150,158,150,151,151,151,151,
+  151,151,244,244,244,164,164,159,159, 74, 74,160,160,161,161,245,170,170,
+   97,172,172,172,172,172,172,172,172,172,172,176,182,182,182,182,182,182,
+  183,183,183,183,183,175,175,191,191,191,192,191,119, 14, 14, 14, 14, 14,
+   14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+   14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 17, 17, 17, 17,
+   17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+   17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 36, 36, 36, 36, 36, 36,
+   36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 42, 42, 42,
+   42, 42, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+   47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+   52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
+   52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 71, 71,118,
+  118,165,165,165,168,168,171,171,171,171,171,171,171,171,171,171,171,171,
+  171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,
+  171,171,171,197,197,  7,  5,  4, 32, 29, 34, 39, 40,  2, 79, 81, 82, 83,
+   90, 44, 45, 93,100,102,106,108,112,111,109,  8,114,115,116,122,121,124,
+  126,129,131,133,134,136,137,139,141,142,144,145,147,148,149,  3,  6,157,
+  173,174,177,178,180,179,181,184,185,186,187,188,189,190,166,196
+};
+
+static const unsigned short  *ag_valid(int ag_k) {
+  const unsigned short  *ag_tp = &ag_tstt[ag_sbt[(PCB).sn+1]];
+  while (*--ag_tp != (unsigned short) ag_k) if (*ag_tp == 0) return NULL;
+  return ag_tp;
+}
+
+int cc-crash_change_reduction(cc-crash_token_type ag_k) {
+  if (!ag_valid(ag_k)) return 0;
+  (PCB).reduction_token = ag_k;
+  return 1;
+}
+
+static void ag_default(const  int *ag_tp) {
+  (PCB).ag_dsn = (PCB).sn;
+  (PCB).ag_dtl = ag_tp;
+  while (!ag_valid((cc-crash_token_type) *ag_tp)) ag_tp++;
+  (PCB).reduction_token = (cc-crash_token_type) *ag_tp;
+}
+
+
+
+static void ag_ra(void)
+{
+  switch(ag_rpx[(PCB).ag_ap]) {
+    case 1: ag_rp_1(V(0,(unsigned *))); break;
+    case 2: ag_rp_2(); break;
+    case 3: ag_rp_3(); break;
+    case 4: ag_rp_4(); break;
+    case 5: ag_rp_5(); break;
+    case 6: ag_rp_6(V(0,(int *))); break;
+    case 7: ag_rp_7(V(1,(int *))); break;
+    case 8: ag_rp_8(); break;
+    case 9: ag_rp_9(); break;
+    case 10: ag_rp_10(); break;
+    case 11: ag_rp_11(); break;
+    case 12: ag_rp_12(V(0,(int *))); break;
+    case 13: ag_rp_13(); break;
+    case 14: ag_rp_14(); break;
+    case 15: ag_rp_15(); break;
+    case 16: ag_rp_16(V(0,(int *))); break;
+    case 17: ag_rp_17(V(0,(int *))); break;
+    case 18: V(0,(int *)) = ag_rp_18(); break;
+    case 19: V(0,(int *)) = ag_rp_19(); break;
+    case 20: V(0,(int *)) = ag_rp_20(); break;
+    case 21: V(0,(int *)) = ag_rp_21(); break;
+    case 22: V(0,(int *)) = ag_rp_22(); break;
+    case 23: V(0,(int *)) = ag_rp_23(); break;
+    case 24: V(0,(int *)) = ag_rp_24(); break;
+    case 25: V(0,(int *)) = ag_rp_25(); break;
+    case 26: V(0,(int *)) = ag_rp_26(); break;
+    case 27: V(0,(int *)) = ag_rp_27(); break;
+    case 28: V(0,(int *)) = ag_rp_28(); break;
+    case 29: V(0,(int *)) = ag_rp_29(V(1,(int *))); break;
+    case 30: V(0,(int *)) = ag_rp_30(V(0,(int *)), V(1,(int *))); break;
+    case 31: V(0,(int *)) = ag_rp_31(V(0,(int *)), V(1,(int *))); break;
+    case 32: V(0,(int *)) = ag_rp_32(V(1,(long *))); break;
+    case 33: V(0,(long *)) = ag_rp_33(V(0,(long *)), V(1,(long *))); break;
+    case 34: ag_rp_34(); break;
+    case 35: ag_rp_35(); break;
+    case 36: ag_rp_36(V(0,(char * *))); break;
+    case 37: ag_rp_37(V(0,(char * *))); break;
+    case 38: ag_rp_38(V(0,(char * *))); break;
+    case 39: V(0,(char * *)) = ag_rp_39(); break;
+    case 40: V(0,(char * *)) = ag_rp_40(); break;
+    case 41: V(0,(char * *)) = ag_rp_41(V(0,(char * *))); break;
+    case 42: ag_rp_42(); break;
+    case 43: ag_rp_43(); break;
+    case 44: ag_rp_44(); break;
+    case 45: ag_rp_45(V(0,(int *))); break;
+    case 46: V(0,(int *)) = ag_rp_46(V(2,(int *))); break;
+    case 47: V(0,(int *)) = ag_rp_47(V(2,(int *))); break;
+    case 48: V(0,(int *)) = ag_rp_48(V(0,(int *)), V(4,(int *))); break;
+    case 49: V(0,(int *)) = ag_rp_49(V(2,(long *))); break;
+    case 50: V(0,(int *)) = ag_rp_50(V(0,(int *))); break;
+    case 51: ag_rp_51(V(0,(unsigned *))); break;
+    case 52: ag_rp_52(V(0,(unsigned *)), V(2,(long *))); break;
+    case 53: ag_rp_53(V(0,(unsigned *))); break;
+    case 54: ag_rp_54(V(0,(unsigned *)), V(2,(long *)), V(4,(long *))); break;
+    case 55: ag_default(&ag_rtt[0]); V(0,(unsigned *)) = ag_rp_55(); break;
+    case 56: ag_rp_56(V(2,(long *))); break;
+    case 57: ag_rp_57(); break;
+    case 58: ag_rp_58(V(1,(int *))); break;
+    case 59: ag_rp_59(V(3,(long *))); break;
+    case 60: ag_rp_60(); break;
+    case 61: V(0,(int *)) = ag_rp_61(); break;
+    case 62: V(0,(int *)) = ag_rp_62(V(0,(int *))); break;
+    case 63: ag_rp_63(V(0,(int *))); break;
+    case 64: ag_rp_64(V(1,(int *))); break;
+    case 65: ag_rp_65(V(1,(int *))); break;
+    case 66: V(0,(long *)) = ag_rp_66(V(0,(long *)), V(2,(long *)), V(4,(long *))); break;
+    case 67: V(0,(long *)) = ag_rp_67(V(0,(long *)), V(2,(long *))); break;
+    case 68: V(0,(long *)) = ag_rp_68(V(0,(long *)), V(2,(long *))); break;
+    case 69: V(0,(long *)) = ag_rp_69(V(0,(long *)), V(2,(long *))); break;
+    case 70: V(0,(long *)) = ag_rp_70(V(0,(long *)), V(2,(long *))); break;
+    case 71: V(0,(long *)) = ag_rp_71(V(0,(long *)), V(2,(long *))); break;
+    case 72: V(0,(long *)) = ag_rp_72(V(0,(long *)), V(2,(long *))); break;
+    case 73: V(0,(long *)) = ag_rp_73(V(0,(long *)), V(2,(long *))); break;
+    case 74: V(0,(long *)) = ag_rp_74(); break;
+    case 75: V(0,(long *)) = ag_rp_75(); break;
+    case 76: V(0,(long *)) = ag_rp_76(V(0,(long *)), V(2,(long *))); break;
+    case 77: V(0,(long *)) = ag_rp_77(V(0,(long *)), V(2,(long *))); break;
+    case 78: V(0,(long *)) = ag_rp_78(V(0,(long *)), V(2,(long *))); break;
+    case 79: V(0,(long *)) = ag_rp_79(V(0,(long *)), V(2,(long *))); break;
+    case 80: V(0,(long *)) = ag_rp_80(); break;
+    case 81: V(0,(long *)) = ag_rp_81(); break;
+    case 82: V(0,(long *)) = ag_rp_82(); break;
+    case 83: V(0,(long *)) = ag_rp_83(); break;
+    case 84: V(0,(long *)) = ag_rp_84(V(0,(long *)), V(2,(long *))); break;
+    case 85: V(0,(long *)) = ag_rp_85(V(0,(long *)), V(2,(long *))); break;
+    case 86: V(0,(long *)) = ag_rp_86(V(0,(long *)), V(2,(long *))); break;
+    case 87: V(0,(long *)) = ag_rp_87(V(0,(long *)), V(2,(long *))); break;
+    case 88: V(0,(long *)) = ag_rp_88(V(0,(long *)), V(2,(long *))); break;
+    case 89: V(0,(long *)) = ag_rp_89(V(0,(long *)), V(2,(long *))); break;
+    case 90: V(0,(long *)) = ag_rp_90(V(0,(long *)), V(2,(long *))); break;
+    case 91: V(0,(long *)) = ag_rp_91(V(0,(long *))); break;
+    case 92: V(0,(long *)) = ag_rp_92(V(1,(long *))); break;
+    case 93: V(0,(long *)) = ag_rp_93(V(1,(long *))); break;
+    case 94: V(0,(long *)) = ag_rp_94(V(1,(long *))); break;
+    case 95: V(0,(long *)) = ag_rp_95(V(1,(long *))); break;
+    case 96: V(0,(long *)) = ag_rp_96(V(2,(long *))); break;
+    case 97: V(0,(long *)) = ag_rp_97(); break;
+    case 98: V(0,(long *)) = ag_rp_98(V(1,(long *))); break;
+    case 99: V(0,(long *)) = ag_rp_99(V(0,(long *))); break;
+    case 100: ag_default(&ag_rtt[4]); V(0,(long *)) = ag_rp_100(); break;
+    case 101: ag_rp_101(); break;
+    case 102: ag_rp_102(V(3,(long *)), V(5,(long *))); break;
+    case 103: ag_rp_103(); break;
+    case 104: ag_rp_104(); break;
+    case 105: ag_rp_105(V(0,(long *))); break;
+    case 106: ag_rp_106(V(0,(long *))); break;
+    case 107: ag_rp_107(); break;
+    case 108: ag_rp_108(V(1,(long *))); break;
+    case 109: V(0,(long *)) = ag_rp_109(); break;
+    case 110: V(0,(long *)) = ag_rp_110(V(0,(long *)), V(1,(long *))); break;
+    case 111: V(0,(long *)) = ag_rp_111(V(0,(int *))); break;
+    case 112: V(0,(long *)) = ag_rp_112(); break;
+    case 113: V(0,(long *)) = ag_rp_113(V(0,(long *)), V(1,(int *))); break;
+    case 114: V(0,(long *)) = ag_rp_114(V(0,(int *))); break;
+    case 115: V(0,(long *)) = ag_rp_115(V(0,(long *)), V(1,(int *))); break;
+    case 116: V(0,(int *)) = ag_rp_116(V(1,(int *))); break;
+    case 117: ag_rp_117(V(0,(screen_descriptor * *))); break;
+    case 118: V(0,(screen_descriptor * *)) = ag_rp_118(); break;
+    case 119: V(0,(screen_descriptor * *)) = ag_rp_119(V(0,(screen_descriptor * *))); break;
+    case 120: V(0,(screen_descriptor * *)) = ag_rp_120(V(0,(screen_descriptor * *)), V(1,(int *))); break;
+    case 121: V(0,(screen_descriptor * *)) = ag_rp_121(V(0,(screen_descriptor * *)), V(2,(int *))); break;
+    case 122: V(0,(screen_descriptor * *)) = ag_rp_122(V(0,(screen_descriptor * *)), V(2,(int *))); break;
+    case 123: V(0,(screen_descriptor * *)) = ag_rp_123(V(0,(screen_descriptor * *)), V(3,(long *)), V(5,(long *))); break;
+    case 124: V(0,(screen_descriptor * *)) = ag_rp_124(V(0,(screen_descriptor * *)), V(3,(long *)), V(5,(long *))); break;
+    case 125: V(0,(screen_descriptor * *)) = ag_rp_125(V(0,(screen_descriptor * *)), V(1,(query_item * *))); break;
+    case 126: V(0,(screen_descriptor * *)) = ag_rp_126(V(0,(screen_descriptor * *)), V(1,(query_item * *))); break;
+    case 127: V(0,(int *)) = ag_rp_127(V(2,(long *)), V(4,(long *))); break;
+    case 128: V(0,(query_item * *)) = ag_rp_128(); break;
+    case 129: V(0,(query_item * *)) = ag_rp_129(V(0,(query_item * *))); break;
+    case 130: V(0,(query_item * *)) = ag_rp_130(V(0,(query_item * *))); break;
+    case 131: V(0,(query_item * *)) = ag_rp_131(V(0,(query_item * *))); break;
+    case 132: V(0,(query_item * *)) = ag_rp_132(V(0,(query_item * *))); break;
+    case 133: V(0,(query_item * *)) = ag_rp_133(); break;
+    case 134: V(0,(query_item * *)) = ag_rp_134(V(0,(query_item * *))); break;
+    case 135: V(0,(query_item * *)) = ag_rp_135(V(0,(query_item * *))); break;
+    case 136: V(0,(query_item * *)) = ag_rp_136(V(0,(query_item * *))); break;
+    case 137: ag_rp_137(); break;
+    case 138: ag_rp_138(); break;
+    case 139: ag_rp_139(); break;
+    case 140: ag_rp_140(); break;
+  }
+  (PCB).la_ptr = (PCB).pointer;
+}
+
+#define TOKEN_NAMES cc-crash_token_names
+const char *const cc-crash_token_names[263] = {
+  "script file",
+  "ws",
+  "literal",
+  "integer constant",
+  "string literal",
+  "paren string",
+  "character constant",
+  "eol",
+  "literals",
+  "white",
+  "comment",
+  "comment head",
+  "\"*/\"",
+  "\"/*\"",
+  "",
+  "'\\n'",
+  "\"//\"",
+  "not eol",
+  "",
+  "",
+  "script file",
+  "execution block",
+  "declaration",
+  "",
+  "",
+  "",
+  "eof",
+  "word",
+  "undeclared variable",
+  "'['",
+  "",
+  "parameter string",
+  "']'",
+  "string",
+  "'#'",
+  "param word",
+  "text char",
+  "action text",
+  "action text head",
+  "'}'",
+  "'{'",
+  "action word",
+  "operator",
+  "paren string chars",
+  "')'",
+  "'('",
+  "paren string char",
+  "not paren",
+  "",
+  "string chars",
+  "'\\\"'",
+  "string char",
+  "not double quote",
+  "escape sequence",
+  "\"\\\\a\"",
+  "\"\\\\b\"",
+  "\"\\\\f\"",
+  "\"\\\\n\"",
+  "\"\\\\r\"",
+  "\"\\\\t\"",
+  "\"\\\\v\"",
+  "\"\\\\\\\\\"",
+  "\"\\\\?\"",
+  "\"\\\\\\'\"",
+  "\"\\\\\\\"\"",
+  "octal escape",
+  "hex escape",
+  "one octal",
+  "two octal",
+  "three octal",
+  "'\\\\'",
+  "",
+  "\"\\\\x\"",
+  "hex number",
+  "hex digit",
+  "command",
+  "identifier",
+  "parameters",
+  "",
+  "'<'",
+  "piped command",
+  "'|'",
+  "'>'",
+  "\">>\"",
+  "",
+  "",
+  "command sequence",
+  "if sequence",
+  "",
+  "statement",
+  "\"else\"",
+  "if statement",
+  "if condition",
+  "\"if\"",
+  "conditional exp",
+  "assignment",
+  "for statement",
+  "screen description",
+  "while statement",
+  "",
+  "'='",
+  "integer variable",
+  "';'",
+  "",
+  "string variable",
+  "string exp",
+  "'@'",
+  "primary exp",
+  "\"while\"",
+  "\"for\"",
+  "name",
+  "\"in\"",
+  "\"do\"",
+  "",
+  "\"action\"",
+  "\"int\"",
+  "\"string\"",
+  "",
+  "letter",
+  "digit",
+  "logical or exp",
+  "'\\?'",
+  "':'",
+  "logical and exp",
+  "\"||\"",
+  "inclusive or exp",
+  "\"&&\"",
+  "exclusive or exp",
+  "and exp",
+  "'^'",
+  "equality exp",
+  "'&'",
+  "relational exp",
+  "\"==\"",
+  "\"!=\"",
+  "shift exp",
+  "\"<=\"",
+  "\">=\"",
+  "additive exp",
+  "\"<<\"",
+  "multiplicative exp",
+  "'+'",
+  "'-'",
+  "unary exp",
+  "'*'",
+  "'/'",
+  "nonzero",
+  "'%'",
+  "'~'",
+  "'!'",
+  "string term",
+  "string element",
+  "numeric name",
+  "built_in name",
+  "built_in argument",
+  "string name",
+  "undefined name",
+  "\"..\"",
+  "",
+  "hex constant",
+  "octal constant",
+  "decimal constant",
+  "\"0x\"",
+  "\"0X\"",
+  "",
+  "",
+  "",
+  "'0'",
+  "",
+  "'\\''",
+  "char constant element",
+  "not single quote",
+  "screen items",
+  "\"screen\"",
+  "\"title\"",
+  "formula",
+  "color spec",
+  "\"entry\"",
+  "\"highlight\"",
+  "\"size\"",
+  "','",
+  "\"location\"",
+  "query line",
+  "button line",
+  "\"color\"",
+  "\"field\"",
+  "\"variable\"",
+  "\"default\"",
+  "\"prompt\"",
+  "\"explanation\"",
+  "\"button\"",
+  "formula element",
+  "",
+  "",
+  "",
+  "",
+  "",
+  "",
+  "eol",
+  "paren string",
+  "string literal",
+  "']'",
+  "'['",
+  "'#'",
+  "'}'",
+  "'{'",
+  "literal",
+  "'<'",
+  "'|'",
+  "'>'",
+  "\">>\"",
+  "\"else\"",
+  "')'",
+  "'('",
+  "\"if\"",
+  "'='",
+  "';'",
+  "'@'",
+  "\"while\"",
+  "\"do\"",
+  "\"in\"",
+  "\"for\"",
+  "literals",
+  "\"action\"",
+  "\"int\"",
+  "\"string\"",
+  "':'",
+  "'\\?'",
+  "\"||\"",
+  "\"&&\"",
+  "'^'",
+  "'&'",
+  "\"==\"",
+  "\"!=\"",
+  "\"<=\"",
+  "\">=\"",
+  "\"<<\"",
+  "'+'",
+  "'-'",
+  "'*'",
+  "'/'",
+  "'%'",
+  "'~'",
+  "'!'",
+  "integer constant",
+  "character constant",
+  "\"..\"",
+  "\"screen\"",
+  "\"title\"",
+  "\"entry\"",
+  "\"highlight\"",
+  "','",
+  "\"size\"",
+  "\"location\"",
+  "\"color\"",
+  "\"field\"",
+  "\"variable\"",
+  "\"default\"",
+  "\"prompt\"",
+  "\"explanation\"",
+  "\"button\"",
+  "",
+  "",
+
+};
+
+#ifndef MISSING_FORMAT
+#define MISSING_FORMAT "Missing %s"
+#endif
+#ifndef UNEXPECTED_FORMAT
+#define UNEXPECTED_FORMAT "Unexpected %s"
+#endif
+#ifndef UNNAMED_TOKEN
+#define UNNAMED_TOKEN "input"
+#endif
+
+
+static void ag_diagnose(void) {
+  int ag_snd = (PCB).sn;
+  int ag_k = ag_sbt[ag_snd];
+
+  if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) {
+    sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
+  }
+  else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8
+          && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1
+          && *TOKEN_NAMES[ag_tstt[ag_k]]) {
+    sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
+  }
+  else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) {
+    sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]);
+  }
+  else if (isprint(INPUT_CODE((*(PCB).pointer))) && INPUT_CODE((*(PCB).pointer)) != '\\') {
+    char buf[20];
+    sprintf(buf, "\'%c\'", (char) INPUT_CODE((*(PCB).pointer)));
+    sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf);
+  }
+  else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN);
+  (PCB).error_message = (PCB).ag_msg;
+
+
+}
+static int ag_action_1_r_proc(void);
+static int ag_action_2_r_proc(void);
+static int ag_action_3_r_proc(void);
+static int ag_action_4_r_proc(void);
+static int ag_action_1_s_proc(void);
+static int ag_action_3_s_proc(void);
+static int ag_action_1_proc(void);
+static int ag_action_2_proc(void);
+static int ag_action_3_proc(void);
+static int ag_action_4_proc(void);
+static int ag_action_5_proc(void);
+static int ag_action_6_proc(void);
+static int ag_action_7_proc(void);
+static int ag_action_8_proc(void);
+static int ag_action_9_proc(void);
+static int ag_action_10_proc(void);
+static int ag_action_11_proc(void);
+static int ag_action_8_proc(void);
+
+
+static int (*const  ag_r_procs_scan[])(void) = {
+  ag_action_1_r_proc,
+  ag_action_2_r_proc,
+  ag_action_3_r_proc,
+  ag_action_4_r_proc
+};
+
+static int (*const  ag_s_procs_scan[])(void) = {
+  ag_action_1_s_proc,
+  ag_action_2_r_proc,
+  ag_action_3_s_proc,
+  ag_action_4_r_proc
+};
+
+static int (*const  ag_gt_procs_scan[])(void) = {
+  ag_action_1_proc,
+  ag_action_2_proc,
+  ag_action_3_proc,
+  ag_action_4_proc,
+  ag_action_5_proc,
+  ag_action_6_proc,
+  ag_action_7_proc,
+  ag_action_8_proc,
+  ag_action_9_proc,
+  ag_action_10_proc,
+  ag_action_11_proc,
+  ag_action_8_proc
+};
+
+
+static int ag_action_10_proc(void) {
+  int ag_t = (PCB).token_number;
+  (PCB).btsx = 0, (PCB).drt = -1;
+  do {
+    ag_track();
+    (PCB).token_number = (cc-crash_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
+    (PCB).la_ptr++;
+    if (ag_key_index[(PCB).sn]) {
+      unsigned ag_k = ag_key_index[(PCB).sn];
+      int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
+      if (ag_ch <= 255) {
+        while (ag_key_ch[ag_k] < ag_ch) ag_k++;
+        if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
+      }
+    }
+  } while ((PCB).token_number == (cc-crash_token_type) ag_t);
+  (PCB).la_ptr =  (PCB).pointer;
+  return 1;
+}
+
+static int ag_action_11_proc(void) {
+  int ag_t = (PCB).token_number;
+
+  (PCB).btsx = 0, (PCB).drt = -1;
+  do {
+    (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
+    (PCB).ssx--;
+    ag_track();
+    ag_ra();
+    if ((PCB).exit_flag != AG_RUNNING_CODE) return 0;
+    (PCB).ssx++;
+    (PCB).token_number = (cc-crash_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
+    (PCB).la_ptr++;
+    if (ag_key_index[(PCB).sn]) {
+      unsigned ag_k = ag_key_index[(PCB).sn];
+      int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
+      if (ag_ch <= 255) {
+        while (ag_key_ch[ag_k] < ag_ch) ag_k++;
+        if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
+      }
+    }
+  }
+  while ((PCB).token_number == (cc-crash_token_type) ag_t);
+  (PCB).la_ptr =  (PCB).pointer;
+  return 1;
+}
+
+static int ag_action_3_r_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_3_s_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_4_r_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
+  return 1;
+}
+
+static int ag_action_2_proc(void) {
+  (PCB).btsx = 0, (PCB).drt = -1;
+  if ((PCB).ssx >= 128) {
+    (PCB).exit_flag = AG_STACK_ERROR_CODE;
+    PARSER_STACK_OVERFLOW;
+  }
+  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
+  GET_CONTEXT;
+  (PCB).ss[(PCB).ssx] = (PCB).sn;
+  (PCB).ssx++;
+  (PCB).sn = (PCB).ag_ap;
+  ag_track();
+  return 0;
+}
+
+static int ag_action_9_proc(void) {
+  if ((PCB).drt == -1) {
+    (PCB).drt=(PCB).token_number;
+    (PCB).dssx=(PCB).ssx;
+    (PCB).dsn=(PCB).sn;
+  }
+  ag_prot();
+  (PCB).vs[(PCB).ssx] = ag_null_value;
+  GET_CONTEXT;
+  (PCB).ss[(PCB).ssx] = (PCB).sn;
+  (PCB).ssx++;
+  (PCB).sn = (PCB).ag_ap;
+  (PCB).la_ptr =  (PCB).pointer;
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_2_r_proc(void) {
+  (PCB).ssx++;
+  (PCB).sn = (PCB).ag_ap;
+  return 0;
+}
+
+static int ag_action_7_proc(void) {
+  --(PCB).ssx;
+  (PCB).la_ptr =  (PCB).pointer;
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_1_proc(void) {
+  ag_track();
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_1_r_proc(void) {
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_1_s_proc(void) {
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_4_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  else GET_CONTEXT;
+  (PCB).ss[(PCB).ssx] = (PCB).sn;
+  ag_track();
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
+      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
+      REDUCTION_TOKEN_ERROR; break;}
+      (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return 0;
+}
+
+static int ag_action_3_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  else GET_CONTEXT;
+  (PCB).ss[(PCB).ssx] = (PCB).sn;
+  ag_track();
+  (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
+      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
+      REDUCTION_TOKEN_ERROR; break;}
+      (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return 0;
+}
+
+static int ag_action_8_proc(void) {
+  ag_undo();
+  (PCB).la_ptr =  (PCB).pointer;
+  (PCB).exit_flag = AG_SYNTAX_ERROR_CODE;
+  ag_diagnose();
+  SYNTAX_ERROR;
+  {(PCB).la_ptr = (PCB).pointer + 1; ag_track();}
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_5_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  else {
+    GET_CONTEXT;
+    (PCB).ss[(PCB).ssx] = (PCB).sn;
+  }
+  (PCB).la_ptr =  (PCB).pointer;
+  (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
+      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
+      REDUCTION_TOKEN_ERROR; break;}
+      (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_6_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap];
+  (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
+  if ((PCB).drt == -1) {
+    (PCB).drt=(PCB).token_number;
+    (PCB).dssx=(PCB).ssx;
+    (PCB).dsn=(PCB).sn;
+  }
+  if (ag_sd) {
+    (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  }
+  else {
+    ag_prot();
+    (PCB).vs[(PCB).ssx] = ag_null_value;
+    GET_CONTEXT;
+    (PCB).ss[(PCB).ssx] = (PCB).sn;
+  }
+  (PCB).la_ptr =  (PCB).pointer;
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
+      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
+      REDUCTION_TOKEN_ERROR; break;}
+      (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+
+void init_cc-crash(void) {
+  (PCB).la_ptr = (PCB).pointer;
+  (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0;
+  (PCB).exit_flag = AG_RUNNING_CODE;
+  (PCB).line = FIRST_LINE;
+  (PCB).column = FIRST_COLUMN;
+  (PCB).btsx = 0, (PCB).drt = -1;
+}
+
+void cc-crash(void) {
+  init_cc-crash();
+  (PCB).exit_flag = AG_RUNNING_CODE;
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbt[(PCB).sn];
+    if (ag_tstt[ag_t1]) {
+      unsigned ag_t2 = ag_sbe[(PCB).sn] - 1;
+      (PCB).token_number = (cc-crash_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
+      (PCB).la_ptr++;
+      if (ag_key_index[(PCB).sn]) {
+        unsigned ag_k = ag_key_index[(PCB).sn];
+        int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
+        if (ag_ch <= 255) {
+          while (ag_key_ch[ag_k] < ag_ch) ag_k++;
+          if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
+        }
+      }
+      do {
+        unsigned ag_tx = (ag_t1 + ag_t2)/2;
+        if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number)
+          ag_t1 = ag_tx + 1;
+        else ag_t2 = ag_tx;
+      } while (ag_t1 < ag_t2);
+      if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number)
+        ag_t1 = ag_sbe[(PCB).sn];
+    }
+    (PCB).ag_ap = ag_pstt[ag_t1];
+    (ag_gt_procs_scan[ag_astt[ag_t1]])();
+  }
+}
+
+