Changes in / [d2ded3e7:698664b3]


Ignore:
Files:
3 added
9 deleted
25 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    rd2ded3e7 r698664b3  
    2727# generated by bison and lex from cfa.yy and lex.ll, respectively
    2828src/Parser/parser.output
    29 
    30 # generated by latex
    31 doc/refrat/refrat.aux
    32 doc/refrat/refrat.bbl
    33 doc/refrat/refrat.blg
    34 doc/refrat/refrat.brf
    35 doc/refrat/refrat.dvi
    36 doc/refrat/refrat.idx
    37 doc/refrat/refrat.ilg
    38 doc/refrat/refrat.ind
    39 doc/refrat/refrat.log
    40 doc/refrat/refrat.out
    41 doc/refrat/refrat.pdf
    42 doc/refrat/refrat.ps
    43 doc/refrat/refrat.toc
  • doc/refrat/refrat.tex

    rd2ded3e7 r698664b3  
    1 % requires tex packages: texlive-base texlive-latex-base tex-common texlive-humanities texlive-latex-extra texlive-fonts-recommended
    2 
    3 \documentclass[openright,twoside]{report}
    4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5 
    6 % Latex packages used in the document.
    7 
    8 \usepackage{fullpage,times}
    9 \usepackage{xspace}
    10 \usepackage{varioref}
    11 \usepackage{listings}
    12 \usepackage{comment}
    13 \usepackage{latexsym}                                   % \Box
    14 \usepackage{mathptmx}                                   % better math font with "times"
    15 \usepackage[pagewise]{lineno}
    16 \renewcommand{\linenumberfont}{\scriptsize\sffamily}
    17 \usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}
    18 \usepackage{breakurl}
    19 \urlstyle{sf}
    20 
    21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    22 
    23 % Names used in the document.
    24 
    25 \newcommand{\CFA}{Cforall\xspace}               % set language text name
    26 \newcommand{\CFAA}{C$\forall$\xspace}   % set language symbolic name
    27 \newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
    28 \def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name)
    29 
    30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    31 
    32 % Bespoke macros used in the document.
    33 
    34 \makeatletter
    35 % index macros
    36 \newcommand{\italic}[1]{\emph{\hyperpage{#1}}}
    37 \newcommand{\definition}[1]{\textbf{\hyperpage{#1}}}
    38 \newcommand{\see}[1]{\emph{see} #1}
    39 
    40 % Define some commands that produce formatted index entries suitable for cross-references.
    41 % ``\spec'' produces entries for specifications of entities.  ``\impl'' produces entries for their
    42 % implementations, and ``\use'' for their uses.
    43 
    44 %  \newcommand{\bold}[1]{{\bf #1}}
    45 %  \def\spec{\@bsphack\begingroup
    46 %             \def\protect##1{\string##1\space}\@sanitize
    47 %             \@wrxref{|bold}}
    48 \def\impl{\@bsphack\begingroup
    49           \def\protect##1{\string##1\space}\@sanitize
    50           \@wrxref{|definition}}
    51 \newcommand{\indexcode}[1]{{\lstinline$#1$}}
    52 \def\use{\@bsphack\begingroup
    53          \def\protect##1{\string##1\space}\@sanitize
    54          \@wrxref{|hyperpage}}
    55 \def\@wrxref#1#2{\let\thepage\relax
    56     \xdef\@gtempa{\write\@indexfile{\string
    57     \indexentry{#2@{\lstinline$#2$}#1}{\thepage}}}\endgroup\@gtempa
    58     \if@nobreak \ifvmode\nobreak\fi\fi\@esphack}
    59 %\newcommand{\use}[1]{\index{#1@{\lstinline$#1$}}}
    60 %\newcommand{\impl}[1]{\index{\protect#1@{\lstinline$\protect#1$}|definition}}
    61 
    62 % text inline and lowercase index: \Index{Inline and index text}
    63 % text inline and as-in index: \Index{Inline and Index text}
    64 % text inline but index with different as-is text: \Index[index text]{inline text}
    65 \newcommand{\Index}{\@ifstar\@sIndex\@Index}
    66 \newcommand{\@Index}[2][\@empty]{\lowercase{\def\temp{#2}}#2\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi}
    67 \newcommand{\@sIndex}[2][\@empty]{#2\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}
    68 \makeatother
    69 
    70 % blocks and titles
    71 \newcommand{\define}[1]{\emph{#1\/}\index{#1}}
    72 \newenvironment{rationale}{%
    73   \begin{quotation}\noindent$\Box$\enspace
    74 }{%
    75   \hfill\enspace$\Box$\end{quotation}
    76 }%
    77 \newcommand{\rewrite}{\(\Rightarrow\)}
    78 \newcommand{\rewriterules}{\paragraph{Rewrite Rules}~\par\noindent}
    79 \newcommand{\examples}{\paragraph{Examples}~\par\noindent}
    80 \newcommand{\semantics}{\paragraph{Semantics}~\par\noindent}
    81 \newcommand{\constraints}{\paragraph{Constraints}~\par\noindent}
    82 \newcommand{\predefined}{\paragraph{Predefined Identifiers}~\par\noindent}
    83 
    84 % BNF macros
    85 \def\syntax{\paragraph{Syntax}\trivlist\parindent=.5in\item[\hskip.5in]}
    86 \let\endsyntax=\endtrivlist
    87 \newcommand{\lhs}[1]{\par{\emph{#1:}}\index{#1@{\emph{#1}}|italic}}
    88 \newcommand{\rhs}{\hfil\break\hbox{\hskip1in}}
    89 \newcommand{\oldlhs}[1]{\emph{#1: \ldots}\index{#1@{\emph{#1}}|italic}}
    90 \newcommand{\nonterm}[1]{\emph{#1\/}\index{#1@{\emph{#1}}|italic}}
    91 \newcommand{\opt}{$_{opt}$\ }
    92 
    93 % adjust varioref package with default "section" and "page" titles, and optional title with faraway page numbers
    94 % \VRef{label} => Section 2.7, \VPageref{label} => page 17
    95 % \VRef[Figure]{label} => Figure 3.4, \VPageref{label} => page 17
    96 \renewcommand{\reftextfaceafter}{\unskip}
    97 \renewcommand{\reftextfacebefore}{\unskip}
    98 \renewcommand{\reftextafter}{\unskip}
    99 \renewcommand{\reftextbefore}{\unskip}
    100 \renewcommand{\reftextfaraway}[1]{\unskip, p.~\pageref{#1}}
    101 \renewcommand{\reftextpagerange}[2]{\unskip, pp.~\pageref{#1}--\pageref{#2}}
    102 \newcommand{\VRef}[2][Section]{\ifx#1\@empty\else{#1}\nobreakspace\fi\vref{#2}}
    103 \newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}}
    104 
    105 % adjust listings macros
    106 \lstdefinelanguage{CFA}[ANSI]{C}%
    107 {morekeywords={asm,_Alignas,_Alignof,_At,_Atomic,_Bool,catch,catchResume,choose,_Complex,context,disable,dtype,enable,
    108         fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,lvalue,_Noreturn,restrict,_Static_assert,
    109         _Thread_local,throw,throwResume,try,type,},
    110 }%
    111 
    112 \lstset{
    113 language=CFA,
    114 columns=fullflexible,
    115 basicstyle=\sf\small,
    116 tabsize=4,
    117 xleftmargin=\parindent,
    118 escapechar=@,
    119 %fancyvrb=true,
    120 %showtabs=true,
    121 keepspaces=true,
    122 showtabs=true,
    123 tab=,
    124 }%
    125 
    126 \makeatletter
    127 % replace/adjust listings characters that look bad in sanserif
    128 \lst@CCPutMacro
    129 \lst@ProcessOther{"2D}{\lst@ttfamily{-{}}{{\ttfamily\upshape -}}} % replace minus
    130 \lst@ProcessOther{"3C}{\lst@ttfamily{<}{\texttt{<}}} % replace less than
    131 \lst@ProcessOther{"3E}{\lst@ttfamily{<}{\texttt{>}}} % replace greater than
    132 \lst@ProcessOther{"5E}{\raisebox{0.4ex}{$\scriptstyle\land\,$}} % replace circumflex
    133 \lst@ProcessLetter{"5F}{\lst@ttfamily{\char95}{{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}}} % replace underscore
    134 \lst@ProcessOther{"7E}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}} % replace tilde
    135 %\lst@ProcessOther{"7E}{\raisebox{-.4ex}[1ex][0pt]{\textasciitilde}} % lower tilde
    136 \@empty\z@\@empty
    137 \makeatother
    138 
    139 \setcounter{secnumdepth}{3}     % number subsubsections
    140 \setcounter{tocdepth}{3}                % subsubsections in table of contents
    141 \makeindex
    142 
    143 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    144 
    145 \begin{document}
    146 \pagestyle{headings}
    147 \linenumbers                                    % comment out to turn off line numbering
    148 
    149 \title{\CFA (\CFAA) Reference Manual and Rationale}
    150 \author{Glen Ditchfield \and Peter A. Buhr}
    151 \date{DRAFT\\\today}
    152 
    153 \pagenumbering{roman}
    154 \pagestyle{plain}
    155 
    156 \maketitle
    157 
    158 \vspace*{\fill}
    159 \thispagestyle{empty}
    160 \noindent
    161 \copyright\,2015 Glen Ditchfield \\ \\
    162 \noindent
    163 This work is licensed under the Creative Commons Attribution 4.0 International License. To view a
    164 copy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}.
    165 \vspace*{1in}
    166 
    167 \clearpage
    168 \pdfbookmark[1]{Contents}{section}
    169 \tableofcontents
    170 
    171 \clearpage
    172 \pagenumbering{arabic}
    173 
    174 
    175 \chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction}
    176 
    177 This document is a reference manual and rationale for \CFA, a polymorphic extension of the C
    178 programming language. It makes frequent reference to the {\c11} standard \cite{ANS:C11}, and
    179 occasionally compares \CFA to {\CC} \cite{c++}.
    180 
    181 The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering
    182 differs). Unfortunately, this means the manual contains more ``forward references'' than usual,
    183 making it harder to follow if the reader does not have a copy of the {\c11} standard. For a simple
    184 introduction to \CFA, see the companion document ``An Overview of \CFA''
    185 \cite{Ditchfield96:Overview}.
    186 
    187 \begin{rationale}
    188 Commentary (like this) is quoted with quads. Commentary usually deals with subtle points, the
    189 rationale behind a rule, and design decisions.
    190 \end{rationale}
    191 
    192 % No ``Scope'' or ``Normative references'' chapters yet.
    193 
    194 
    195 \setcounter{chapter}{2}
    196 \chapter{Terms, definitions, and symbols}
    197 
    198 Terms from the {\c11} standard used in this document have the same meaning as in the {\c11}
    199 standard.
    200 
    201 % No ``Conformance'' or ``Environment'' chapters yet.
    202 
    203 
    204 \setcounter{chapter}{5}
    205 \chapter{Language}
    206 
    207 
    208 \section{Notation}
    209 The syntax notation used in this document is the same as in the {\c11} standard, with one exception:
    210 ellipsis in the definition of a nonterminal, as in ``\emph{declaration:} \ldots'', indicates that
    211 these rules extend a previous definition, which occurs in this document or in the {\c11} standard.
    212 
    213 
    214 \section{Concepts}
    215 
    216 
    217 \subsection{Scopes of identifiers}\index{scopes}
    218 
    219 \CFA's scope rules differ from C's in one major respect: a declaration of an identifier may
    220 overload\index{overloading} outer declarations of lexically identical identifiers in the same
    221 \Index{name space}, instead of hiding them. The outer declaration is hidden if the two declarations
    222 have \Index{compatible type}, or if one declares an array type and the other declares a pointer type
    223 and the element type and pointed-at type are compatible, or if one has function type and the other
    224 is a pointer to a compatible function type, or if one declaration is a \lstinline$type$\use{type} or
    225 \lstinline$typedef$\use{typedef} declaration and the other is not.  The outer declaration becomes
    226 \Index{visible} when the scope of the inner declaration terminates.
    227 \begin{rationale}
    228 Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same
    229 scope; a {\CC} program can not.
    230 \end{rationale}
    231 
    232 
    233 \subsection{Linkage of identifiers}
    234 \index{linkage}
    235 
    236 \CFA's linkage rules differ from C's in only one respect: instances of a particular identifier with
    237 external or internal linkage do not necessarily denote the same object or function. Instead, in the
    238 set of translation units and libraries that constitutes an entire program, any two instances of a
    239 particular identifier with \Index{external linkage} denote the same object or function if they have
    240 \Index{compatible type}s, or if one declares an array type and the other declares a pointer type and
    241 the element type and pointed-at type are compatible, or if one has function type and the other is a
    242 pointer to a compatible function type. Within one translation unit, each instance of an identifier
    243 with \Index{internal linkage} denotes the same object or function in the same circumstances.
    244 Identifiers with \Index{no linkage} always denote unique entities.
    245 \begin{rationale}
    246 A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$; a C
    247 program cannot.
    248 \end{rationale}
    249 
    250 
    251 \setcounter{subsection}{8}
    252 \subsection{Generic Types}
    253 
    254 
    255 \subsubsection{Semantics}
    256 
    257 \CFA provides a capability for generic types; using this capability a single "generic type
    258 generator" can be written that can represent multiple concrete type instantiations by substitution
    259 of the "type parameters" of the generic type for concrete types. Syntactically a generic type
    260 generator is represented by putting a forall specifier on a struct or union declaration, as defined
    261 in \VRef{forall}. An instantiation of the generic type is written by specifying the type parameters
    262 in parentheses after the name of the generic type generator:
    263 \begin{lstlisting}
    264 forall( type T | sumable( T ) ) struct pair {
    265         T x;
    266         T y;
    267 };
    268 pair( int ) p = { 3, 14 };
    269 \end{lstlisting}
    270 
    271 The type parameters in an instantiation of a generic type must satisfy any constraints in the forall
    272 specifier on the type generator declaration, e.g., \lstinline$sumable$. The instantiation then has
    273 the semantics that would result if the type parameters were substituted into the type generator
    274 declaration by macro substitution.
    275 
    276 Polymorphic functions may have generic types as parameters, and those generic types may use type
    277 parameters of the polymorphic function as type parameters of the generic type:
    278 \begin{lstlisting}
    279 forall( type T ) void swap( pair(T) *p ) {
    280         T z = p->x;
    281         p->x = p->y;
    282         p->y = z;
    283 }
    284 \end{lstlisting}
    285 
    286 
    287 \subsubsection{Constraints}
    288 
    289 To avoid unduly constraining implementors, the generic type generator definition must be visible at
    290 any point where it is instantiated.  Forward declarations of generic type generators are not
    291 forbidden, but the definition must be visible to instantiate the generic type.  Equivalently,
    292 instantiations of generic types are not allowed to be incomplete types.
    293 
    294 \examples
    295 \begin{lstlisting}
    296 forall( type T ) struct A;
    297 
    298 forall( type T ) struct B {
    299         A(T) *a;  // legal, but cannot instantiate B(T)
    300 };
    301 
    302 B(T) x; // illegal, *x.a is of an incomplete generic type
    303 
    304 forall( type T ) struct A {
    305         B( T ) *b;
    306 };
    307 
    308 B( T ) y; // legal, *x.a is now of a complete generic type
    309 
    310 
    311 // box.h:
    312         forall( type T ) struct box;
    313         forall( type T ) box( T ) *make_box( T );
    314         forall( type T ) void use_box( box( T ) *b );
    315        
    316 // main.c:
    317         box( int ) *b = make_box( 42 ); // illegal, def'n of box not visible
    318         use_box( b ); // illegal
    319 \end{lstlisting}
    320 
    321 
    322 \section{Conversions}
    323 \CFA defines situations where values of one type are automatically converted to another type.
    324 These conversions are called \define{implicit conversion}s. The programmer can request
    325 \define{explicit conversion}s using cast expressions.
    326 
    327 
    328 \subsection{Arithmetic operands}
    329 
    330 
    331 \setcounter{subsubsection}{8}
    332 \subsubsection{Safe arithmetic conversions}
    333 
    334 In C, a pattern of conversions known as the \define{usual arithmetic conversion}s is used with most
    335 binary arithmetic operators to convert the operands to a common type and determine the type of the
    336 operator's result. In \CFA, these conversions play a role in overload resolution, and
    337 collectively are called the \define{safe arithmetic conversion}s.
    338 
    339 Let \(int_r\) and \(unsigned_r\) be the signed and unsigned integer types with integer conversion
    340 rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$. Let
    341 \(unsigned_{mr}\) be the unsigned integer type with maximal rank.
    342 
    343 The following conversions are \emph{direct} safe arithmetic conversions.
    344 \begin{itemize}
    345 \item
    346 The \Index{integer promotion}s.
    347 
    348 \item
    349 For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\)
    350 to \(unsigned_r\).
    351 
    352 \item
    353 For every rank $r$ greater than or equal to the rank of \lstinline$int$, where \(int_{r+1}\) exists
    354 and can represent all values of \(unsigned_r\), conversion from \(unsigned_r\) to \(int_{r+1}\).
    355 
    356 \item
    357 Conversion from \(unsigned_{mr}\) to \lstinline$float$.
    358 
    359 \item
    360 Conversion from an enumerated type to its compatible integer type.
    361 
    362 \item
    363 Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to
    364 \lstinline$long double$.
    365 
    366 \item
    367 Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$,
    368 and from \lstinline$double _Complex$ to \lstinline$long double _Complex$.
    369 
    370 \begin{sloppypar}
    371 \item
    372 Conversion from \lstinline$float _Imaginary$ to \lstinline$double _Imaginary$, and from
    373 \lstinline$double _Imaginary$ to \lstinline$long double$ \lstinline$_Imaginary$, if the
    374 implementation supports imaginary types.
    375 \end{sloppypar}
    376 \end{itemize}
    377 
    378 If type \lstinline$T$ can be converted to type \lstinline$U$ by a safe direct arithmetic conversion
    379 and type \lstinline$U$ can be converted to type \lstinline$V$ by a safe arithmetic conversion, then
    380 the conversion from \lstinline$T$ to type \lstinline$V$ is an \emph{indirect} safe arithmetic
    381 conversion.
    382 
    383 \begin{rationale}
    384 Note that {\c11} does not include conversion from \Index{real type}s to \Index{complex type}s in the
    385 usual arithmetic conversions, and \CFA does not include them as safe conversions.
    386 \end{rationale}
    387 
    388 
    389 \subsection{Other operands}
    390 
    391 
    392 \setcounter{subsubsection}{3}
    393 \subsubsection{Anonymous structures and unions}
    394 \label{anon-conv}
    395 
    396 If an expression's type is a pointer to a structure or union type that has a member that is an
    397 \Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly
    398 converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's
    399 type. The result of the conversion is a pointer to the member.
    400 
    401 \examples
    402 \begin{lstlisting}
    403 struct point {
    404         int x, y;
    405 };
    406 void move_by(struct point * p1, struct point * p2) {@\impl{move_by}@
    407         p1->x += p2.x;
    408         p1->y += p2.y;
    409 }
    410 
    411 struct color_point {
    412         enum { RED, BLUE, GREEN } color;
    413         struct point;
    414 } cp1, cp2;
    415 move_to(&cp1, &cp2);
    416 \end{lstlisting}
    417 Thanks to implicit conversion, the two arguments that \lstinline$move_by()$ receives are pointers to
    418 \lstinline$cp1$'s second member and \lstinline$cp2$'s second member.
    419 
    420 
    421 \subsubsection{Specialization}
    422 A function or value whose type is polymorphic may be implicitly converted to one whose type is
    423 \Index{less polymorphic} by binding values to one or more of its \Index{inferred parameter}. Any
    424 value that is legal for the inferred parameter may be used, including other inferred parameters.
    425 
    426 If, after the inferred parameter binding, an \Index{assertion parameter} has no inferred parameters
    427 in its type, then an object or function must be visible at the point of the specialization that has
    428 the same identifier as the assertion parameter and has a type that is compatible\index{compatible
    429   type} with or can be specialized to the type of the assertion parameter.  The assertion parameter
    430 is bound to that object or function.
    431 
    432 The type of the specialization is the type of the original with the bound inferred parameters and
    433 the bound assertion parameters replaced by their bound values.
    434 
    435 \examples
    436 The type
    437 \begin{lstlisting}
    438 forall( type T, type U ) void (*)( T, U );
    439 \end{lstlisting}
    440 can be specialized to (among other things)
    441 \begin{lstlisting}
    442 forall( type T ) void (*)( T, T );              // U bound to T
    443 forall( type T ) void (*)( T, real );   // U bound to real
    444 forall( type U ) void (*)( real, U );   // T bound to real
    445 void f( real, real );                                   // both bound to real
    446 \end{lstlisting}
    447 
    448 The type
    449 \begin{lstlisting}
    450 forall( type T | T ?+?( T, T )) T (*)( T );
    451 \end{lstlisting}
    452 can be specialized to (among other things)
    453 \begin{lstlisting}
    454 int (*)( int );                                         // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int )
    455 \end{lstlisting}
    456 
    457 
    458 \subsubsection{Safe conversions}
    459 
    460 A \define{direct safe conversion} is one of the following conversions:
    461 \begin{itemize}
    462 \item
    463 a direct safe arithmetic conversion;
    464 \item
    465 from any object type or incomplete type to \lstinline$void$;
    466 \item
    467 from a pointer to any non-\lstinline$void$ type to a pointer to \lstinline$void$;
    468 \item
    469 from a pointer to any type to a pointer to a more qualified version of the type\index{qualified
    470 type};
    471 \item
    472 from a pointer to a structure or union type to a pointer to the type of a member of the structure or
    473 union that is an \Index{anonymous structure} or an \Index{anonymous union};
    474 \item
    475 within the scope of an initialized \Index{type declaration}, conversions between a type and its
    476 implementation or between a pointer to a type and a pointer to its implementation.
    477 \end{itemize}
    478 
    479 Conversions that are not safe conversions are \define{unsafe conversion}s.
    480 \begin{rationale}
    481 As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type. This is
    482 clearly dangerous, and {\CC} does not have this implicit conversion.
    483 \CFA\index{deficiencies!void * conversion} keeps it, in the interest of remaining as pure a
    484 superset of C as possible, but discourages it by making it unsafe.
    485 \end{rationale}
    486 
    487 
    488 \subsection{Conversion cost}
    489 
    490 The \define{conversion cost} of a safe\index{safe conversion}
    491 conversion\footnote{Unsafe\index{unsafe conversion} conversions do not have defined conversion
    492 costs.} is a measure of how desirable or undesirable it is. It is defined as follows.
    493 \begin{itemize}
    494 \item
    495 The cost of a conversion from any type to itself is 0.
    496 
    497 \item
    498 The cost of a direct safe conversion is 1.
    499 
    500 \item
    501 The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions
    502 needed to make up the conversion.
    503 \end{itemize}
    504 
    505 \examples
    506 In the following, assume an implementation that does not provide any extended integer types.
    507 
    508 \begin{itemize}
    509 \item
    510 The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1. The cost of an
    511 implicit conversion from \lstinline$long$ to \lstinline$double$ is 3, because it is defined in terms
    512 of conversions from \lstinline$long$ to \lstinline$unsigned long$, then to \lstinline$float$, and
    513 then to \lstinline$double$.
    514 
    515 \item
    516 If \lstinline$int$ can represent all the values of \lstinline$unsigned short$, then the cost of an
    517 implicit conversion from \lstinline$unsigned short$ to \lstinline$unsigned$ is 2:
    518 \lstinline$unsigned short$ to \lstinline$int$ to \lstinline$unsigned$. Otherwise,
    519 \lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1.
    520 
    521 \item
    522 If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost
    523 of \lstinline$unsigned$ to \lstinline$long$ is 1. Otherwise, the conversion is an unsafe
    524 conversion, and its conversion cost is undefined.
    525 \end{itemize}
    526 
    527 \section{Lexical elements}
    528 \subsection{Keywords}
    529 \begin{syntax}
    530 \oldlhs{keyword}
    531         \rhs \lstinline$forall$
    532         \rhs \lstinline$lvalue$
    533         \rhs \lstinline$context$
    534         \rhs \lstinline$dtype$
    535         \rhs \lstinline$ftype$
    536         \rhs \lstinline$type$
    537 \end{syntax}
    538 
    539 
    540 \subsection{Identifiers}
    541 
    542 \CFA allows operator \Index{overloading} by associating operators with special function
    543 identifiers. Furthermore, the constants ``\lstinline$0$'' and ``\lstinline$1$'' have special status
    544 for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them
    545 as overloadable identifiers. Programmers can use these identifiers to declare functions and objects
    546 that implement operators and constants for their own types.
    547 
    548 
    549 \setcounter{subsubsection}{2}
    550 \subsubsection{Constant identifiers}
    551 
    552 \begin{syntax}
    553 \oldlhs{identifier}
    554 \rhs \lstinline$0$
    555 \rhs \lstinline$1$
    556 \end{syntax}
    557 
    558 \index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0}
    559 and ``\lstinline$1$''\impl{1} are identifiers. No other tokens defined by the rules for integer
    560 constants are considered to be identifiers.
    561 \begin{rationale}
    562 Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C. All scalar
    563 types can be incremented and decremented, which is defined in terms of adding or subtracting 1. The
    564 operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any
    565 scalar arguments, and are defined in terms of comparison against 0. A \nonterm{constant-expression}
    566 that evaluates to 0 is effectively compatible with every pointer type.
    567 
    568 In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to
    569 any arithmetic type, and the rules for pointer expressions treat constant expressions evaluating to
    570 0 as a special case. However, user-defined arithmetic types often need the equivalent of a 1 or 0
    571 for their functions or operators, polymorphic functions often need 0 and 1 constants of a type
    572 matching their polymorphic parameters, and user-defined pointer-like types may need a null value.
    573 Defining special constants for a user-defined type is more efficient than defining a conversion to
    574 the type from \lstinline$_Bool$.
    575 
    576 Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers
    577 have special status in C. A facility that let programmers declare specific
    578 constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement.
    579 Some facility for defining the creation of values of programmer-defined types from arbitrary integer
    580 tokens would be needed. The complexity of such a feature doesn't seem worth the gain.
    581 \end{rationale}
    582 
    583 
    584 \subsubsection{Operator identifiers}
    585 
    586 \index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the
    587 programmer-definable operator identifiers and the operations they are associated with. Functions
    588 that are declared with (or pointed at by function pointers that are declared with) these identifiers
    589 can be called by expressions that use the operator tokens and syntax, or the operator identifiers
    590 and ``function call'' syntax. The relationships between operators and function calls are discussed
    591 in descriptions of the operators.
    592 
    593 \begin{table}[hbt]
    594 \hfil
    595 \begin{tabular}[t]{ll}
    596 %identifier & operation \\ \hline
    597 \lstinline$?[?]$ & subscripting \impl{?[?]}\\
    598 \lstinline$?()$ & function call \impl{?()}\\
    599 \lstinline$?++$ & postfix increment \impl{?++}\\
    600 \lstinline$?--$ & postfix decrement \impl{?--}\\
    601 \lstinline$++?$ & prefix increment \impl{++?}\\
    602 \lstinline$--?$ & prefix decrement \impl{--?}\\
    603 \lstinline$*?$ & dereference \impl{*?}\\
    604 \lstinline$+?$ & unary plus \impl{+?}\\
    605 \lstinline$-?$ & arithmetic negation \impl{-?}\\
    606 \lstinline$~?$ & bitwise negation \impl{~?}\\
    607 \lstinline$!?$ & logical complement \impl{"!?}\\
    608 \lstinline$?*?$ & multiplication \impl{?*?}\\
    609 \lstinline$?/?$ & division \impl{?/?}\\
    610 \end{tabular}\hfil
    611 \begin{tabular}[t]{ll}
    612 %identifier & operation \\ \hline
    613 \lstinline$?%?$ & remainder \impl{?%?}\\
    614 \lstinline$?+?$ & addition \impl{?+?}\\
    615 \lstinline$?-?$ & subtraction \impl{?-?}\\
    616 \lstinline$?<<?$ & left shift \impl{?<<?}\\
    617 \lstinline$?>>?$ & right shift \impl{?>>?}\\
    618 \lstinline$?<?$ & less than \impl{?<?}\\
    619 \lstinline$?<=?$ & less than or equal \impl{?<=?}\\
    620 \lstinline$?>=?$ & greater than or equal \impl{?>=?}\\
    621 \lstinline$?>?$ & greater than \impl{?>?}\\
    622 \lstinline$?==?$ & equality \impl{?==?}\\
    623 \lstinline$?!=?$ & inequality \impl{?"!=?}\\
    624 \lstinline$?&?$ & bitwise AND \impl{?&?}\\
    625 \end{tabular}\hfil
    626 \begin{tabular}[t]{ll}
    627 %identifier & operation \\ \hline
    628 \lstinline$?^?$ & exclusive OR \impl{?^?}\\
    629 \lstinline$?|?$ & inclusive OR \impl{?"|?}\\
    630 \lstinline$?=?$ & simple assignment \impl{?=?}\\
    631 \lstinline$?*=?$ & multiplication assignment \impl{?*=?}\\
    632 \lstinline$?/=?$ & division assignment \impl{?/=?}\\
    633 \lstinline$?%=?$ & remainder assignment \impl{?%=?}\\
    634 \lstinline$?+=?$ & addition assignment \impl{?+=?}\\
    635 \lstinline$?-=?$ & subtraction assignment \impl{?-=?}\\
    636 \lstinline$?<<=?$ & left-shift assignment \impl{?<<=?}\\
    637 \lstinline$?>>=?$ & right-shift assignment \impl{?>>=?}\\
    638 \lstinline$?&=?$ & bitwise AND assignment \impl{?&=?}\\
    639 \lstinline$?^=?$ & exclusive OR assignment \impl{?^=?}\\
    640 \lstinline$?|=?$ & inclusive OR assignment \impl{?"|=?}\\
    641 \end{tabular}
    642 \hfil
    643 \caption{Operator Identifiers}
    644 \label{opids}
    645 \end{table}
    646 
    647 \begin{rationale}
    648 Operator identifiers are made up of the characters of the operator token, with question marks added
    649 to mark the positions of the arguments of operators. The question marks serve as mnemonic devices;
    650 programmers can not create new operators by arbitrarily mixing question marks and other
    651 non-alphabetic characters. Note that prefix and postfix versions of the increment and decrement
    652 operators are distinguished by the position of the question mark.
    653 \end{rationale}
    654 
    655 \begin{rationale}
    656 The use of ``\lstinline$?$'' in identifiers means that some C programs are not \CFA programs.  For
    657 instance, the sequence of characters ``\lstinline$(i < 0)?--i:i$'' is legal in a C program, but a
    658 \CFA compiler detects a syntax error because it treats ``\lstinline$?--$'' as an identifier, not
    659 as the two tokens ``\lstinline$?$'' and ``\lstinline$--$''.
    660 \end{rationale}
    661 
    662 \begin{rationale}
    663 Certain operators \emph{cannot} be defined by the programmer:
    664 \begin{itemize}
    665 \item
    666 The logical operators ``\lstinline$&&$'' and ``\lstinline$||$'', and the conditional operator
    667 ``\lstinline$?:$''. These operators do not always evaluate their operands, and hence can not be
    668 properly defined by functions unless some mechanism like call-by-name is added to the language.
    669 Note that the definitions of ``\lstinline$&&$'' and ``\lstinline$||$'' say that they work by
    670 checking that their arguments are unequal to 0, so defining ``\lstinline$!=$'' and ``\lstinline$0$''
    671 for user-defined types is enough to allow them to be used in logical expressions.
    672 
    673 \item
    674 The comma operator\index{comma expression}. It is a control-flow operator like those above.
    675 Changing its meaning seems pointless and confusing.
    676 
    677 \item
    678 The ``address of'' operator. It would seem useful to define a unary ``\lstinline$&$'' operator that
    679 returns values of some programmer-defined pointer-like type. The problem lies with the type of the
    680 operator. Consider the expression ``\lstinline$p = &x$'', where \lstinline$x$ is of type
    681 \lstinline$T$ and \lstinline$p$ has the programmer-defined type \lstinline$T_ptr$. The expression
    682 might be treated as a call to the unary function ``\lstinline$&?$''. Now what is the type of the
    683 function's parameter? It can not be \lstinline$T$, because then \lstinline$x$ would be passed by
    684 value, and there is no way to create a useful pointer-like result from a value. Hence the parameter
    685 must have type \lstinline$T *$. But then the expression must be rewritten as ``\lstinline$p = &?( &x )$''
    686 ---which doesn't seem like progress!
    687 
    688 The rule for address-of expressions would have to be something like ``keep applying address-of
    689 functions until you get one that takes a pointer argument, then use the built-in operator and
    690 stop''. It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$.
    691 
    692 \item
    693 The \lstinline$sizeof$ operator. It is already defined for every object type, and intimately tied
    694 into the language's storage allocation model. Redefining it seems pointless.
    695 
    696 \item
    697 The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''. These are not really infix
    698 operators, since their right ``operand'' is not a value or object.
    699 
    700 \item
    701 Cast operators\index{cast expression}. Anything that can be done with an explicit cast can be done
    702 with a function call. The difference in syntax is small.
    703 \end{itemize}
    704 \end{rationale}
    705 
    706 
    707 \section{Expressions}
    708 
    709 \CFA allows operators and identifiers to be overloaded. Hence, each expression can have a number
    710 of \define{interpretation}s, each of which has a different type. The interpretations that are
    711 potentially executable are called \define{valid interpretation}s. The set of interpretations
    712 depends on the kind of expression and on the interpretations of the subexpressions that it contains.
    713 The rules for determining the valid interpretations of an expression are discussed below for each
    714 kind of expression. Eventually the context of the outermost expression chooses one interpretation
    715 of that expression.
    716 
    717 An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or
    718 function denoted by every identifier in the expression. An expression can have some interpretations
    719 that are ambiguous and others that are unambiguous. An expression that is chosen to be executed
    720 shall not be ambiguous.
    721 
    722 The \define{best valid interpretations} are the valid interpretations that use the fewest
    723 unsafe\index{unsafe conversion} conversions. Of these, the best are those where the functions and
    724 objects involved are the least polymorphic\index{less polymorphic}. Of these, the best have the
    725 lowest total \Index{conversion cost}, including all implicit conversions in the argument
    726 expressions. Of these, the best have the highest total conversion cost for the implicit conversions
    727 (if any) applied to the argument expressions. If there is no single best valid interpretation, or if
    728 the best valid interpretation is ambiguous, then the resulting interpretation is
    729 ambiguous\index{ambiguous interpretation}.
    730 
    731 \begin{rationale}
    732 \CFA's rules for selecting the best interpretation are designed to allow overload resolution to
    733 mimic C's operator semantics. In C, the ``usual arithmetic conversions'' are applied to the
    734 operands of binary operators if necessary to convert the operands to types with a common real type.
    735 In \CFA, those conversions are ``safe''. The ``fewest unsafe conversions'' rule ensures that the
    736 usual conversions are done, if possible. The ``lowest total expression cost'' rule chooses the
    737 proper common type. The odd-looking ``highest argument conversion cost'' rule ensures that, when
    738 unary expressions must be converted, conversions of function results are preferred to conversion of
    739 function arguments: \lstinline$(double)-i$ will be preferred to \lstinline$-(double)i$.
    740 
    741 The ``least polymorphic'' rule reduces the number of polymorphic function calls, since such
    742 functions are presumably more expensive than monomorphic functions and since the more specific
    743 function is presumably more appropriate. It also gives preference to monomorphic values (such as the
    744 \lstinline$int$ \lstinline$0$) over polymorphic values (such as the \Index{null pointer}
    745 \lstinline$0$\use{0}). However, interpretations that call polymorphic functions are preferred to
    746 interpretations that perform unsafe conversions, because those conversions potentially lose accuracy
    747 or violate strong typing.
    748 
    749 There are two notable differences between \CFA's overload resolution rules and the rules for
    750 {\CC} defined in \cite{c++}. First, the result type of a function plays a role. In {\CC}, a
    751 function call must be completely resolved based on the arguments to the call in most circumstances.
    752 In \CFA, a function call may have several interpretations, each with a different result type, and
    753 the interpretations of the containing context choose among them. Second, safe conversions are used
    754 to choose among interpretations of all sorts of functions; in {\CC}, the ``usual arithmetic
    755 conversions'' are a separate set of rules that apply only to the built-in operators.
    756 \end{rationale}
    757 
    758 Expressions involving certain operators\index{operator identifiers} are considered to be equivalent
    759 to function calls. A transformation from ``operator'' syntax to ``function call'' syntax is defined
    760 by \define{rewrite rules}. Each operator has a set of predefined functions that overload its
    761 identifier. Overload resolution determines which member of the set is executed in a given
    762 expression. The functions have \Index{internal linkage} and are implicitly declared with \Index{file
    763 scope}. The predefined functions and rewrite rules are discussed below for each of these
    764 operators.
    765 \begin{rationale}
    766 Predefined functions and constants have internal linkage because that simplifies optimization in
    767 traditional compile-and-link environments. For instance, ``\lstinline$an_int + an_int$'' is
    768 equivalent to ``\lstinline$?+?(an_int, an_int)$''. If integer addition has not been redefined in
    769 the current scope, a compiler can generate code to perform the addition directly. If predefined
    770 functions had external linkage, this optimization would be difficult.
    771 \end{rationale}
    772 
    773 \begin{rationale}
    774 Since each subsection describes the interpretations of an expression in terms of the interpretations
    775 of its subexpressions, this chapter can be taken as describing an overload resolution algorithm that
    776 uses one bottom-up pass over an expression tree. Such an algorithm was first described (for Ada) by
    777 Baker~\cite{Bak:overload}. It is extended here to handle polymorphic functions and arithmetic
    778 conversions. The overload resolution rules and the predefined functions have been chosen so that, in
    779 programs that do not introduce overloaded declarations, expressions will have the same meaning in C
    780 and in \CFA.
    781 \end{rationale}
    782 
    783 \begin{rationale}
    784 Expression syntax is quoted from the {\c11} standard. The syntax itself defines the precedence and
    785 associativity of operators. The sections are arranged in decreasing order of precedence, with all
    786 operators in a section having the same precedence.
    787 \end{rationale}
    788 
    789 
    790 \subsection{Primary expressions}
    791 
    792 \begin{syntax}
    793 \lhs{primary-expression}
    794 \rhs \nonterm{identifier}
    795 \rhs \nonterm{constant}
    796 \rhs \nonterm{string-literal}
    797 \rhs \lstinline$($ \nonterm{expression} \lstinline$)$
    798 \rhs \nonterm{generic-selection}
    799 \end{syntax}
    800 
    801 \predefined
    802 \begin{lstlisting}
    803 const int 1;@\use{1}@
    804 const int 0;@\use{0}@
    805 forall( dtype DT ) DT *const 0;
    806 forall( ftype FT ) FT *const 0;
    807 \end{lstlisting}
    808 
    809 \semantics
    810 The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible}
    811 declarations of the identifier.
    812 
    813 A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type
    814 and value defined by {\c11}. The predefined integer identifiers ``\lstinline$1$'' and
    815 ``\lstinline$0$'' have the integer values 1 and 0, respectively. The other two predefined
    816 ``\lstinline$0$'' identifiers are bound to polymorphic pointer values that, when
    817 specialized\index{specialization} with a data type or function type respectively, produce a null
    818 pointer of that type.
    819 
    820 A parenthesised expression has the same interpretations as the contained \nonterm{expression}.
    821 
    822 \examples
    823 The expression \lstinline$(void *)0$\use{0} specializes the (polymorphic) null pointer to a null
    824 pointer to \lstinline$void$. \lstinline$(const void *)0$ does the same, and also uses a safe
    825 conversion from \lstinline$void *$ to \lstinline$const void *$. In each case, the null pointer
    826 conversion is better\index{best valid interpretations} than the unsafe conversion of the integer
    827 \lstinline$0$ to a pointer.
    828 
    829 \begin{rationale}
    830 Note that the predefined identifiers have addresses.
    831 
    832 \CFA does not have C's concept of ``null pointer constants'', which are not typed values but
    833 special strings of tokens. The C token ``\lstinline$0$'' is an expression of type \lstinline$int$
    834 with the value ``zero'', and it \emph{also} is a null pointer constant. Similarly,
    835 ``\lstinline$(void *)0$ is an expression of type \lstinline$(void *)$ whose value is a null pointer,
    836 and it also is a null pointer constant. However, in C, ``\lstinline$(void *)(void *)0$'' is
    837 \emph{not} a null pointer constant, even though it is null-valued, a pointer, and constant! The
    838 semantics of C expressions contain many special cases to deal with subexpressions that are null
    839 pointer constants.
    840 
    841 \CFA handles these cases through overload resolution. The declaration
    842 \begin{lstlisting}
    843 forall( dtype DT ) DT *const 0;
    844 \end{lstlisting}
    845 means that \lstinline$0$ is a polymorphic object, and contains a value that can have \emph{any}
    846 pointer-to-object type or pointer-to-incomplete type. The only such value is the null pointer.
    847 Therefore the type \emph{alone} is enough to identify a null pointer. Where C defines an operator
    848 with a special case for the null pointer constant, \CFA defines predefined functions with a
    849 polymorphic object parameter.
    850 \end{rationale}
    851 
    852 
    853 \subsubsection{Generic selection}
    854 
    855 \constraints The best interpretation of the controlling expression shall be
    856 unambiguous\index{ambiguous interpretation}, and shall have type compatible with at most one of the
    857 types named in its generic association list. If a generic selection has no \lstinline$default$
    858 generic association, the best interpretation of its controlling expression shall have type
    859 compatible with exactly one of the types named in its generic association list.
    860 
    861 \semantics
    862 A generic selection has the same interpretations as its result expression.
    863 
    864 
    865 \subsection{Postfix operators}
    866 
    867 \begin{syntax}
    868 \lhs{postfix-expression}
    869 \rhs \nonterm{primary-expression}
    870 \rhs \nonterm{postfix-expression} \lstinline$[$ \nonterm{expression} \lstinline$]$
    871 \rhs \nonterm{postfix-expression} \lstinline$($
    872          \nonterm{argument-expression-list}\opt \lstinline$)$
    873 \rhs \nonterm{postfix-expression} \lstinline$.$ \nonterm{identifier}
    874 \rhs \nonterm{postfix-expression} \lstinline$->$ \nonterm{identifier}
    875 \rhs \nonterm{postfix-expression} \lstinline$++$
    876 \rhs \nonterm{postfix-expression} \lstinline$--$
    877 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$}$
    878 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$,$ \lstinline$}$
    879 \lhs{argument-expression-list}
    880 \rhs \nonterm{assignment-expression}
    881 \rhs \nonterm{argument-expression-list} \lstinline$,$
    882          \nonterm{assignment-expression}
    883 \end{syntax}
    884 
    885 \rewriterules
    886 \begin{lstlisting}
    887 a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type */@\use{?[?]}@
    888 a[b] @\rewrite@ ?[?]( a, b ) // otherwise
    889 a( ${\em arguments }$ ) @\rewrite@ ?()( a, ${\em arguments} )$@\use{?()}@
    890 a++ @\rewrite@ ?++(&( a ))@\use{?++}@
    891 a-- @\rewrite@ ?--(&( a ))@\use{?--}@
    892 \end{lstlisting}
    893 
    894 
    895 \subsubsection{Array subscripting}
    896 
    897 \predefined
    898 \begin{lstlisting}
    899 forall( type T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@
    900 forall( type T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t );
    901 forall( type T ) lvalue const T ?[?]( const T *, ptrdiff_t );
    902 forall( type T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t );
    903 forall( type T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t );
    904 forall( type T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t );
    905 forall( type T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t );
    906 forall( type T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t );
    907 forall( type T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t );
    908 forall( type T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t );
    909 forall( type T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t );
    910 forall( type T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t );
    911 forall( type T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t );
    912 forall( type T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t );
    913 forall( type T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t );
    914 forall( type T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t );
    915 \end{lstlisting}
    916 \semantics
    917 The interpretations of subscript expressions are the interpretations of the corresponding function
    918 call expressions.
    919 \begin{rationale}
    920 C defines subscripting as pointer arithmetic in a way that makes \lstinline$a[i]$ and
    921 \lstinline$i[a]$ equivalent. \CFA provides the equivalence through a rewrite rule to reduce the
    922 number of overloadings of \lstinline$?[?]$.
    923 
    924 Subscript expressions are rewritten as function calls that pass the first parameter by value. This
    925 is somewhat unfortunate, since array-like types tend to be large. The alternative is to use the
    926 rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''. However, C semantics forbid
    927 this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which
    928 does not have an address.
    929 
    930 The repetitive form of the predefined identifiers shows up a deficiency\index{deficiencies!pointers
    931  to qualified types} of \CFA's type system. Type qualifiers are not included in type values, so
    932 polymorphic functions that take pointers to arbitrary types often come in one flavor for each
    933 possible qualification of the pointed-at type.
    934 \end{rationale}
    935 
    936 
    937 \subsubsection{Function calls}
    938 
    939 \semantics
    940 A \define{function designator} is an interpretation of an expression that has function type. The
    941 \nonterm{postfix-expression} in a function call may have some interpretations that are function
    942 designators and some that are not.
    943 
    944 For those interpretations of the \nonterm{postfix-expression} that are not function designators, the
    945 expression is rewritten and becomes a call of a function named ``\lstinline$?()$''. The valid
    946 interpretations of the rewritten expression are determined in the manner described below.
    947 
    948 Each combination of function designators and argument interpretations is considered. For those
    949 interpretations of the \nonterm{postfix-expression} that are \Index{monomorphic function}
    950 designators, the combination has a \Index{valid interpretation} if the function designator accepts
    951 the number of arguments given, and each argument interpretation matches the corresponding explicit
    952 parameter:
    953 \begin{itemize}
    954 \item
    955 if the argument corresponds to a parameter in the function designator's prototype, the argument
    956 interpretation must have the same type as the corresponding parameter, or be implicitly convertible
    957 to the parameter's type
    958 \item
    959 if the function designator's type does not include a prototype or if the argument corresponds to
    960 ``\lstinline$...$'' in a prototype, a \Index{default argument promotion} is applied to it.
    961 \end{itemize}
    962 The type of the valid interpretation is the return type of the function designator.
    963 
    964 For those combinations where the interpretation of the \nonterm{postfix-expression} is a
    965 \Index{polymorphic function} designator and the function designator accepts the number of arguments
    966 given, there shall be at least one set of \define{implicit argument}s for the implicit parameters
    967 such that
    968 \begin{itemize}
    969 \item
    970 If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the
    971 implicit argument must be an object type; if it uses \lstinline$dtype$, the implicit argument must
    972 be an object type or an incomplete type; and if it uses \lstinline$ftype$, the implicit argument
    973 must be a function type.
    974 
    975 \item
    976 if an explicit parameter's type uses any implicit parameters, then the corresponding explicit
    977 argument must have a type that is (or can be safely converted\index{safe conversion} to) the type
    978 produced by substituting the implicit arguments for the implicit parameters in the explicit
    979 parameter type.
    980 
    981 \item
    982 the remaining explicit arguments must match the remaining explicit parameters, as described for
    983 monomorphic function designators.
    984 
    985 \item
    986 for each \Index{assertion parameter} in the function designator's type, there must be an object or
    987 function with the same identifier that is visible at the call site and whose type is compatible with
    988 or can be specialized to the type of the assertion declaration.
    989 \end{itemize}
    990 There is a valid interpretation for each such set of implicit parameters. The type of each valid
    991 interpretation is the return type of the function designator with implicit parameter values
    992 substituted for the implicit arguments.
    993 
    994 A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or
    995 any of the argument interpretations is ambiguous.
    996 
    997 Every valid interpretation whose return type is not compatible with any other valid interpretation's
    998 return type is an interpretation of the function call expression.
    999 
    1000 Every set of valid interpretations that have mutually compatible\index{compatible type} result types
    1001 also produces an interpretation of the function call expression. The type of the interpretation is
    1002 the \Index{composite type} of the types of the valid interpretations, and the value of the
    1003 interpretation is that of the \Index{best valid interpretation}.
    1004 \begin{rationale}
    1005 One desirable property of a polymorphic programming language is \define{generalizability}: the
    1006 ability to replace an abstraction with a more general but equivalent abstraction without requiring
    1007 changes in any of the uses of the original\cite{Cormack90}. For instance, it should be possible to
    1008 replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( type T ) T f( T );$''
    1009 without affecting any calls of \lstinline$f$.
    1010 
    1011 \CFA\index{deficiencies!generalizability} does not fully possess this property, because
    1012 \Index{unsafe conversion} are not done when arguments are passed to polymorphic parameters.
    1013 Consider
    1014 \begin{lstlisting}
    1015 float g( float, float );
    1016 int i;
    1017 float f;
    1018 double d;
    1019 f = g( f, f );  // (1)
    1020 f = g( i, f );  // (2) (safe conversion to float)
    1021 f = g( d, f );  // (3) (unsafe conversion to float)
    1022 \end{lstlisting}
    1023 If \lstinline$g$ was replaced by ``\lstinline$forall( type T ) T g( T, T );$'', the first and second
    1024 calls would be unaffected, but the third would change: \lstinline$f$ would be converted to
    1025 \lstinline$double$, and the result would be a \lstinline$double$.
    1026 
    1027 Another example is the function ``\lstinline$void h( int *);$''. This function can be passed a
    1028 \lstinline$void *$ argument, but the generalization ``\lstinline$forall( type T ) void h( T *);$''
    1029 can not. In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an
    1030 object type. If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any}
    1031 object type, which is undesirable.
    1032 \end{rationale}
    1033 
    1034 \examples
    1035 A function called ``\lstinline$?()$'' might be part of a numerical differentiation package.
    1036 \begin{lstlisting}
    1037 extern type Derivative;
    1038 extern double ?()( Derivative, double );
    1039 extern Derivative derivative_of( double (*f)( double ) );
    1040 extern double sin( double );
    1041 
    1042 Derivative sin_dx = derivative_of( sin );
    1043 double d;
    1044 d = sin_dx( 12.9 );
    1045 \end{lstlisting}
    1046 Here, the only interpretation of \lstinline$sin_dx$ is as an object of type \lstinline$Derivative$.
    1047 For that interpretation, the function call is treated as ``\lstinline$?()( sin_dx, 12.9 )$''.
    1048 \begin{lstlisting}
    1049 int f( long );          // (1)
    1050 int f( int, int );      // (2)
    1051 int f( int *);          // (3)
    1052 
    1053 int i = f( 5 );         // calls (1)
    1054 \end{lstlisting}
    1055 Function (1) provides a valid interpretation of ``\lstinline$f( 5 )$'', using an implicit
    1056 \lstinline$int$ to \lstinline$long$ conversion. The other functions do not, since the second
    1057 requires two arguments, and since there is no implicit conversion from \lstinline$int$ to
    1058 \lstinline$int *$ that could be used with the third function.
    1059 
    1060 \begin{lstlisting}
    1061 forall( type T ) T h( T );
    1062 double d = h( 1.5 );
    1063 \end{lstlisting}
    1064 ``\lstinline$1.5$'' is a \lstinline$double$ constant, so \lstinline$T$ is inferred to be
    1065 \lstinline$double$, and the result of the function call is a \lstinline$double$.
    1066 
    1067 \begin{lstlisting}
    1068 forall( type T, type U ) void g( T, U );        // (4)
    1069 forall( type T ) void g( T, T );                        // (5)
    1070 forall( type T ) void g( T, long );                     // (6)
    1071 void g( long, long );                                           // (7)
    1072 double d;
    1073 int i;
    1074 int *p;
    1075 
    1076 g( d, d );                      // calls (5)
    1077 g( d, i );                      // calls (6)
    1078 g( i, i );                      // calls (7)
    1079 g( i, p );                      // calls (4)
    1080 \end{lstlisting}
    1081 The first call has valid interpretations for all four versions of \lstinline$g$. (6) and (7) are
    1082 discarded because they involve unsafe \lstinline$double$-to-\lstinline$long$ conversions. (5) is
    1083 chosen because it is less polymorphic than (4).
    1084 
    1085 For the second call, (7) is again discarded. Of the remaining interpretations for (4), (5), and (6)
    1086 (with \lstinline$i$ converted to \lstinline$long$), (6) is chosen because it is the least
    1087 polymorphic.
    1088 
    1089 The third call has valid interpretations for all of the functions; (7) is chosen since it is not
    1090 polymorphic at all.
    1091 
    1092 The fourth call has no interpretation for (5), because its arguments must have compatible type. (4)
    1093 is chosen because it does not involve unsafe conversions.
    1094 \begin{lstlisting}
    1095 forall( type T ) T min( T, T );
    1096 double max( double, double );
    1097 context min_max( T ) {@\impl{min_max}@
    1098         T min( T, T );
    1099         T max( T, T );
    1100 }
    1101 forall( type U | min_max( U ) ) void shuffle( U, U );
    1102 shuffle(9, 10);
    1103 \end{lstlisting}
    1104 The only possibility for \lstinline$U$ is \lstinline$double$, because that is the type used in the
    1105 only visible \lstinline$max$ function. 9 and 10 must be converted to \lstinline$double$, and
    1106 \lstinline$min$ must be specialized with \lstinline$T$ bound to \lstinline$double$.
    1107 \begin{lstlisting}
    1108 extern void q( int );           // (8)
    1109 extern void q( void * );        // (9)
    1110 extern void r();
    1111 q( 0 );
    1112 r( 0 );
    1113 \end{lstlisting}
    1114 The \lstinline$int 0$ could be passed to (8), or the \lstinline$(void *)$ \Index{specialization} of
    1115 the null pointer\index{null pointer} \lstinline$0$\use{0} could be passed to (9). The former is
    1116 chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}. For
    1117 the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has
    1118 \emph{no} declared parameter types.
    1119 
    1120 
    1121 \subsubsection{Structure and union members}
    1122 
    1123 \semantics In the member selection expression ``\lstinline$s$.\lstinline$m$'', there shall be at
    1124 least one interpretation of \lstinline$s$ whose type is a structure type or union type containing a
    1125 member named \lstinline$m$. If two or more interpretations of \lstinline$s$ have members named
    1126 \lstinline$m$ with mutually compatible types, then the expression has an \Index{ambiguous
    1127 interpretation} whose type is the composite type of the types of the members. If an interpretation
    1128 of \lstinline$s$ has a member \lstinline$m$ whose type is not compatible with any other
    1129 \lstinline$s$'s \lstinline$m$, then the expression has an interpretation with the member's type. The
    1130 expression has no other interpretations.
    1131 
    1132 The expression ``\lstinline$p->m$'' has the same interpretations as the expression
    1133 ``\lstinline$(*p).m$''.
    1134 
    1135 
    1136 \subsubsection{Postfix increment and decrement operators}
    1137 
    1138 \predefined
    1139 \begin{lstlisting}
    1140 _Bool ?++( volatile _Bool * ),
    1141         ?++( _Atomic volatile _Bool * );
    1142 char ?++( volatile char * ),
    1143         ?++( _Atomic volatile char * );
    1144 signed char ?++( volatile signed char * ),
    1145         ?++( _Atomic volatile signed char * );
    1146 unsigned char ?++( volatile signed char * ),
    1147         ?++( _Atomic volatile signed char * );
    1148 short int ?++( volatile short int * ),
    1149         ?++( _Atomic volatile short int * );
    1150 unsigned short int ?++( volatile unsigned short int * ),
    1151         ?++( _Atomic volatile unsigned short int * );
    1152 int ?++( volatile int * ),
    1153         ?++( _Atomic volatile int * );
    1154 unsigned int ?++( volatile unsigned int * ),
    1155         ?++( _Atomic volatile unsigned int * );
    1156 long int ?++( volatile long int * ),
    1157         ?++( _Atomic volatile long int * );
    1158 long unsigned int ?++( volatile long unsigned int * ),
    1159         ?++( _Atomic volatile long unsigned int * );
    1160 long long int ?++( volatile long long int * ),
    1161         ?++( _Atomic volatile long long int * );
    1162 long long unsigned ?++( volatile long long unsigned int * ),
    1163         ?++( _Atomic volatile long long unsigned int * );
    1164 float ?++( volatile float * ),
    1165         ?++( _Atomic volatile float * );
    1166 double ?++( volatile double * ),
    1167         ?++( _Atomic volatile double * );
    1168 long double ?++( volatile long double * ),
    1169         ?++( _Atomic volatile long double * );
    1170 
    1171 forall( type T ) T * ?++( T * restrict volatile * ),
    1172         * ?++( T * _Atomic restrict volatile * );
    1173 
    1174 forall( type T ) _Atomic T * ?++( _Atomic T * restrict volatile * ),
    1175         * ?++( _Atomic T * _Atomic restrict volatile * );
    1176 
    1177 forall( type T ) const T * ?++( const T * restrict volatile * ),
    1178         * ?++( const T * _Atomic restrict volatile * );
    1179 
    1180 forall( type T ) volatile T * ?++( volatile T * restrict volatile * ),
    1181         * ?++( volatile T * _Atomic restrict volatile * );
    1182 
    1183 forall( type T ) restrict T * ?++( restrict T * restrict volatile * ),
    1184         * ?++( restrict T * _Atomic restrict volatile * );
    1185 
    1186 forall( type T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ),
    1187         * ?++( _Atomic const T * _Atomic restrict volatile * );
    1188 
    1189 forall( type T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ),
    1190         * ?++( _Atomic restrict T * _Atomic restrict volatile * );
    1191 
    1192 forall( type T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ),
    1193         * ?++( _Atomic volatile T * _Atomic restrict volatile * );
    1194 
    1195 forall( type T ) const restrict T * ?++( const restrict T * restrict volatile * ),
    1196         * ?++( const restrict T * _Atomic restrict volatile * );
    1197 
    1198 forall( type T ) const volatile T * ?++( const volatile T * restrict volatile * ),
    1199         * ?++( const volatile T * _Atomic restrict volatile * );
    1200 
    1201 forall( type T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ),
    1202         * ?++( restrict volatile T * _Atomic restrict volatile * );
    1203 
    1204 forall( type T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ),
    1205         * ?++( _Atomic const restrict T * _Atomic restrict volatile * );
    1206 
    1207 forall( type T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ),
    1208         * ?++( _Atomic const volatile T * _Atomic restrict volatile * );
    1209 
    1210 forall( type T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ),
    1211         * ?++( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1212 
    1213 forall( type T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ),
    1214         * ?++( const restrict volatile T * _Atomic restrict volatile * );
    1215 
    1216 forall( type T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ),
    1217         * ?++( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    1218 
    1219 _Bool ?--( volatile _Bool * ),
    1220         ?--( _Atomic volatile _Bool * );
    1221 char ?--( volatile char * ),
    1222         ?--( _Atomic volatile char * );
    1223 signed char ?--( volatile signed char * ),
    1224         ?--( _Atomic volatile signed char * );
    1225 unsigned char ?--( volatile signed char * ),
    1226         ?--( _Atomic volatile signed char * );
    1227 short int ?--( volatile short int * ),
    1228         ?--( _Atomic volatile short int * );
    1229 unsigned short int ?--( volatile unsigned short int * ),
    1230         ?--( _Atomic volatile unsigned short int * );
    1231 int ?--( volatile int * ),
    1232         ?--( _Atomic volatile int * );
    1233 unsigned int ?--( volatile unsigned int * ),
    1234         ?--( _Atomic volatile unsigned int * );
    1235 long int ?--( volatile long int * ),
    1236         ?--( _Atomic volatile long int * );
    1237 long unsigned int ?--( volatile long unsigned int * ),
    1238         ?--( _Atomic volatile long unsigned int * );
    1239 long long int ?--( volatile long long int * ),
    1240         ?--( _Atomic volatile long long int * );
    1241 long long unsigned ?--( volatile long long unsigned int * ),
    1242         ?--( _Atomic volatile long long unsigned int * );
    1243 float ?--( volatile float * ),
    1244         ?--( _Atomic volatile float * );
    1245 double ?--( volatile double * ),
    1246         ?--( _Atomic volatile double * );
    1247 long double ?--( volatile long double * ),
    1248         ?--( _Atomic volatile long double * );
    1249 
    1250 forall( type T ) T * ?--( T * restrict volatile * ),
    1251         * ?--( T * _Atomic restrict volatile * );
    1252 
    1253 forall( type T ) _Atomic T * ?--( _Atomic T * restrict volatile * ),
    1254         * ?--( _Atomic T * _Atomic restrict volatile * );
    1255 
    1256 forall( type T ) const T * ?--( const T * restrict volatile * ),
    1257         * ?--( const T * _Atomic restrict volatile * );
    1258 
    1259 forall( type T ) volatile T * ?--( volatile T * restrict volatile * ),
    1260         * ?--( volatile T * _Atomic restrict volatile * );
    1261 
    1262 forall( type T ) restrict T * ?--( restrict T * restrict volatile * ),
    1263         * ?--( restrict T * _Atomic restrict volatile * );
    1264 
    1265 forall( type T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ),
    1266         * ?--( _Atomic const T * _Atomic restrict volatile * );
    1267 
    1268 forall( type T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ),
    1269         * ?--( _Atomic restrict T * _Atomic restrict volatile * );
    1270 
    1271 forall( type T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ),
    1272         * ?--( _Atomic volatile T * _Atomic restrict volatile * );
    1273 
    1274 forall( type T ) const restrict T * ?--( const restrict T * restrict volatile * ),
    1275         * ?--( const restrict T * _Atomic restrict volatile * );
    1276 
    1277 forall( type T ) const volatile T * ?--( const volatile T * restrict volatile * ),
    1278         * ?--( const volatile T * _Atomic restrict volatile * );
    1279 
    1280 forall( type T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ),
    1281         * ?--( restrict volatile T * _Atomic restrict volatile * );
    1282 
    1283 forall( type T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ),
    1284         * ?--( _Atomic const restrict T * _Atomic restrict volatile * );
    1285 
    1286 forall( type T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ),
    1287         * ?--( _Atomic const volatile T * _Atomic restrict volatile * );
    1288 
    1289 forall( type T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ),
    1290         * ?--( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1291 
    1292 forall( type T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ),
    1293         * ?--( const restrict volatile T * _Atomic restrict volatile * );
    1294 
    1295 forall( type T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ),
    1296         * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    1297 \end{lstlisting}
    1298 For every extended integer type \lstinline$X$ there exist
    1299 % Don't use predefined: keep this out of prelude.cf.
    1300 \begin{lstlisting}
    1301 X ?++( volatile X * ), ?++( _Atomic volatile X * ),
    1302   ?--( volatile X * ), ?--( _Atomic volatile X * );
    1303 \end{lstlisting}
    1304 For every complete enumerated type \lstinline$E$ there exist
    1305 % Don't use predefined: keep this out of prelude.cf.
    1306 \begin{lstlisting}
    1307 E ?++( volatile E * ), ?++( _Atomic volatile E * ),
    1308   ?--( volatile E * ), ?--( _Atomic volatile E * );
    1309 \end{lstlisting}
    1310 
    1311 \begin{rationale}
    1312 Note that ``\lstinline$++$'' and ``\lstinline$--$'' are rewritten as function calls that are given a
    1313 pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald
    1314 has pointed out, this forces the modified operand of such expressions to be an lvalue. This
    1315 partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues.
    1316 \end{rationale}
    1317 
    1318 \begin{rationale}
    1319 In C, a semantic rule requires that pointer operands of increment and decrement be pointers to
    1320 object types. Hence, \lstinline$void *$ objects cannot be incremented. In \CFA, the restriction
    1321 follows from the use of a \lstinline$type$ parameter in the predefined function definitions, as
    1322 opposed to \lstinline$dtype$, since only object types can be inferred arguments corresponding to the
    1323 type parameter \lstinline$T$.
    1324 \end{rationale}
    1325 
    1326 \semantics
    1327 First, each interpretation of the operand of an increment or decrement expression is considered
    1328 separately. For each interpretation that is a bit-field or is declared with the
    1329 \lstinline$register$\index{register@{\lstinline$register$}} \index{Itorage-class specifier}, the
    1330 expression has one valid interpretation, with the type of the operand, and the expression is
    1331 ambiguous if the operand is.
    1332 
    1333 For the remaining interpretations, the expression is rewritten, and the interpretations of the
    1334 expression are the interpretations of the corresponding function call. Finally, all interpretations
    1335 of the expression produced for the different interpretations of the operand are combined to produce
    1336 the interpretations of the expression as a whole; where interpretations have compatible result
    1337 types, the best interpretations are selected in the manner described for function call expressions.
    1338 
    1339 \examples
    1340 \begin{lstlisting}
    1341 volatile short int vs;  vs++; // rewritten as ?++( &(vs) )
    1342 short int s;                    s++;
    1343 const short int cs;             cs++;
    1344 _Atomic short int as;   as++;
    1345 \end{lstlisting}
    1346 \begin{sloppypar}
    1347 Since \lstinline$&(vs)$ has type \lstinline$volatile short int *$, the best valid interpretation of
    1348 \lstinline$vs++$ calls the \lstinline$?++$ function with the \lstinline$volatile short *$ parameter.
    1349 \lstinline$s++$ does the same, applying the safe conversion from \lstinline$short int *$ to
    1350 \lstinline$volatile short int *$. Note that there is no conversion that adds an \lstinline$_Atomic$
    1351 qualifier, so the \lstinline$_Atomic volatile short int$ overloading does not provide a valid
    1352 interpretation.
    1353 \end{sloppypar}
    1354 
    1355 There is no safe conversion from \lstinline$const short int *$ to \lstinline$volatile short int *$,
    1356 and no \lstinline$?++$ function that accepts a \lstinline$const *$ parameter, so \lstinline$cs++$
    1357 has no valid interpretations.
    1358 
    1359 The best valid interpretation of \lstinline$as++$ calls the \lstinline$short ?++$ function with the
    1360 \lstinline$_Atomic volatile short int *$ parameter, applying a safe conversion to add the
    1361 \lstinline$volatile$ qualifier.
    1362 
    1363 \begin{lstlisting}
    1364 char * const restrict volatile * restrict volatile pqpc; pqpc++
    1365 char * * restrict volatile ppc; ppc++;
    1366 \end{lstlisting}
    1367 Since \lstinline$&(pqpc)$ has type \lstinline$char * const restrict volatile * restrict volatile *$,
    1368 the best valid interpretation of \lstinline$pqpc++$ calls the polymorphic \lstinline$?++$ function
    1369 with the \lstinline$const restrict volatile T * restrict volatile *$ parameter, inferring
    1370 \lstinline$T$ to be \lstinline$char *$.
    1371 
    1372 \begin{sloppypar}
    1373 \lstinline$ppc++$ calls the same function, again inferring \lstinline$T$ to be \lstinline$char *$,
    1374 and using the safe conversions from \lstinline$T$ to \lstinline$T const restrict volatile$.
    1375 \end{sloppypar}
    1376 
    1377 \begin{rationale}
    1378 Increment and decrement expressions show up a deficiency of \CFA's type system. There is no such
    1379 thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}.
    1380 Therefore, there is no way to define a function that alters them, and hence no way to define
    1381 increment and decrement functions for them. As a result, the semantics of increment and decrement
    1382 expressions must treat them specially. This holds true for all of the operators that may modify
    1383 such objects.
    1384 \end{rationale}
    1385 
    1386 \begin{rationale}
    1387 The polymorphic overloadings for pointer increment and decrement can be understood by considering
    1388 increasingly complex types.
    1389 \begin{enumerate}
    1390 \item
    1391 ``\lstinline$char * p; p++;$''. The argument to \lstinline$?++$ has type \lstinline$char * *$, and
    1392 the result has type \lstinline$char *$. The expression would be valid if \lstinline$?++$ were
    1393 declared by
    1394 \begin{lstlisting}
    1395 forall( type T ) T * ?++( T * * );
    1396 \end{lstlisting}
    1397 with \lstinline$T$ inferred to be \lstinline$char$.
    1398 
    1399 \item
    1400 ``\lstinline$char *restrict volatile qp; qp++$''. The result again has type \lstinline$char *$, but
    1401 the argument now has type \lstinline$char *restrict volatile *$, so it cannot be passed to the
    1402 hypothetical function declared in point 1. Hence the actual predefined function is
    1403 \begin{lstlisting}
    1404 forall( type T ) T * ?++( T * restrict volatile * );
    1405 \end{lstlisting}
    1406 which also accepts a \lstinline$char * *$ argument, because of the safe conversions that add
    1407 \lstinline$volatile$ and \lstinline$restrict$ qualifiers. (The parameter is not const-qualified, so
    1408 constant pointers cannot be incremented.)
    1409 
    1410 \item
    1411 ``\lstinline$char *_Atomic ap; ap++$''. The result again has type \lstinline$char *$, but no safe
    1412 conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable. A
    1413 separate overloading of \lstinline$?++$ is required.
    1414 
    1415 \item
    1416 ``\lstinline$char const volatile * pq; pq++$''. Here the result has type
    1417 \lstinline$char const volatile *$, so a new overloading is needed:
    1418 \begin{lstlisting}
    1419 forall( type T ) T const volatile * ?++( T const volatile *restrict volatile * );
    1420 \end{lstlisting}
    1421 One overloading is needed for each combination of qualifiers in the pointed-at
    1422 type\index{deficiencies!pointers to qualified types}.
    1423  
    1424 \item
    1425 ``\lstinline$float *restrict * prp; prp++$''. The \lstinline$restrict$ qualifier is handled just
    1426 like \lstinline$const$ and \lstinline$volatile$ in the previous case:
    1427 \begin{lstlisting}
    1428 forall( type T ) T restrict * ?++( T restrict *restrict volatile * );
    1429 \end{lstlisting}
    1430 with \lstinline$T$ inferred to be \lstinline$float *$. This looks odd, because {\c11} contains a
    1431 constraint that requires restrict-qualified types to be pointer-to-object types, and \lstinline$T$
    1432 is not syntactically a pointer type. \CFA loosens the constraint.
    1433 \end{enumerate}
    1434 \end{rationale}
    1435 
    1436 
    1437 \subsubsection{Compound literals}
    1438 
    1439 \semantics
    1440 A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the
    1441 compound literal.
    1442 
    1443 
    1444 \subsection{Unary operators}
    1445 
    1446 \begin{syntax}
    1447 \lhs{unary-expression}
    1448 \rhs \nonterm{postfix-expression}
    1449 \rhs \lstinline$++$ \nonterm{unary-expression}
    1450 \rhs \lstinline$--$ \nonterm{unary-expression}
    1451 \rhs \nonterm{unary-operator} \nonterm{cast-expression}
    1452 \rhs \lstinline$sizeof$ \nonterm{unary-expression}
    1453 \rhs \lstinline$sizeof$ \lstinline$($ \nonterm{type-name} \lstinline$)$
    1454 \lhs{unary-operator} one of \rhs \lstinline$&$ \lstinline$*$ \lstinline$+$ \lstinline$-$ \lstinline$~$ \lstinline$!$
    1455 \end{syntax}
    1456 
    1457 \rewriterules
    1458 \begin{lstlisting}
    1459 *a      @\rewrite@ *?(a) @\use{*?}@
    1460 +a      @\rewrite@ +?(a) @\use{+?}@
    1461 -a      @\rewrite@ -?(a) @\use{-?}@
    1462 ~a      @\rewrite@ ~?(a) @\use{~?}@
    1463 !a      @\rewrite@ !?(a) @\use{"!?}@
    1464 ++a     @\rewrite@ ++?(&(a)) @\use{++?}@
    1465 --a     @\rewrite@ --?(&(a)) @\use{--?}@
    1466 \end{lstlisting}
    1467 
    1468 
    1469 \subsubsection{Prefix increment and decrement operators}
    1470 
    1471 \predefined
    1472 \begin{lstlisting}
    1473 _Bool ++?( volatile _Bool * ),
    1474         ++?( _Atomic volatile _Bool * );
    1475 char ++?( volatile char * ),
    1476         ++?( _Atomic volatile char * );
    1477 signed char ++?( volatile signed char * ),
    1478         ++?( _Atomic volatile signed char * );
    1479 unsigned char ++?( volatile signed char * ),
    1480         ++?( _Atomic volatile signed char * );
    1481 short int ++?( volatile short int * ),
    1482         ++?( _Atomic volatile short int * );
    1483 unsigned short int ++?( volatile unsigned short int * ),
    1484         ++?( _Atomic volatile unsigned short int * );
    1485 int ++?( volatile int * ),
    1486         ++?( _Atomic volatile int * );
    1487 unsigned int ++?( volatile unsigned int * ),
    1488         ++?( _Atomic volatile unsigned int * );
    1489 long int ++?( volatile long int * ),
    1490         ++?( _Atomic volatile long int * );
    1491 long unsigned int ++?( volatile long unsigned int * ),
    1492         ++?( _Atomic volatile long unsigned int * );
    1493 long long int ++?( volatile long long int * ),
    1494         ++?( _Atomic volatile long long int * );
    1495 long long unsigned ++?( volatile long long unsigned int * ),
    1496         ++?( _Atomic volatile long long unsigned int * );
    1497 float ++?( volatile float * ),
    1498         ++?( _Atomic volatile float * );
    1499 double ++?( volatile double * ),
    1500         ++?( _Atomic volatile double * );
    1501 long double ++?( volatile long double * ),
    1502         ++?( _Atomic volatile long double * );
    1503 
    1504 forall( type T ) T * ++?( T * restrict volatile * ),
    1505         * ++?( T * _Atomic restrict volatile * );
    1506 
    1507 forall( type T ) _Atomic T * ++?( _Atomic T * restrict volatile * ),
    1508         * ++?( _Atomic T * _Atomic restrict volatile * );
    1509 
    1510 forall( type T ) const T * ++?( const T * restrict volatile * ),
    1511         * ++?( const T * _Atomic restrict volatile * );
    1512 
    1513 forall( type T ) volatile T * ++?( volatile T * restrict volatile * ),
    1514         * ++?( volatile T * _Atomic restrict volatile * );
    1515 
    1516 forall( type T ) restrict T * ++?( restrict T * restrict volatile * ),
    1517         * ++?( restrict T * _Atomic restrict volatile * );
    1518 
    1519 forall( type T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ),
    1520         * ++?( _Atomic const T * _Atomic restrict volatile * );
    1521 
    1522 forall( type T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ),
    1523         * ++?( _Atomic volatile T * _Atomic restrict volatile * );
    1524 
    1525 forall( type T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ),
    1526         * ++?( _Atomic restrict T * _Atomic restrict volatile * );
    1527 
    1528 forall( type T ) const volatile T * ++?( const volatile T * restrict volatile * ),
    1529         * ++?( const volatile T * _Atomic restrict volatile * );
    1530 
    1531 forall( type T ) const restrict T * ++?( const restrict T * restrict volatile * ),
    1532         * ++?( const restrict T * _Atomic restrict volatile * );
    1533 
    1534 forall( type T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ),
    1535         * ++?( restrict volatile T * _Atomic restrict volatile * );
    1536 
    1537 forall( type T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ),
    1538         * ++?( _Atomic const volatile T * _Atomic restrict volatile * );
    1539 
    1540 forall( type T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ),
    1541         * ++?( _Atomic const restrict T * _Atomic restrict volatile * );
    1542 
    1543 forall( type T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ),
    1544         * ++?( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1545 
    1546 forall( type T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ),
    1547         * ++?( const restrict volatile T * _Atomic restrict volatile * );
    1548 
    1549 forall( type T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ),
    1550         * ++?( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    1551 
    1552 _Bool --?( volatile _Bool * ),
    1553         --?( _Atomic volatile _Bool * );
    1554 char --?( volatile char * ),
    1555         --?( _Atomic volatile char * );
    1556 signed char --?( volatile signed char * ),
    1557         --?( _Atomic volatile signed char * );
    1558 unsigned char --?( volatile signed char * ),
    1559         --?( _Atomic volatile signed char * );
    1560 short int --?( volatile short int * ),
    1561         --?( _Atomic volatile short int * );
    1562 unsigned short int --?( volatile unsigned short int * ),
    1563         --?( _Atomic volatile unsigned short int * );
    1564 int --?( volatile int * ),
    1565         --?( _Atomic volatile int * );
    1566 unsigned int --?( volatile unsigned int * ),
    1567         --?( _Atomic volatile unsigned int * );
    1568 long int --?( volatile long int * ),
    1569         --?( _Atomic volatile long int * );
    1570 long unsigned int --?( volatile long unsigned int * ),
    1571         --?( _Atomic volatile long unsigned int * );
    1572 long long int --?( volatile long long int * ),
    1573         --?( _Atomic volatile long long int * );
    1574 long long unsigned --?( volatile long long unsigned int * ),
    1575         --?( _Atomic volatile long long unsigned int * );
    1576 float --?( volatile float * ),
    1577         --?( _Atomic volatile float * );
    1578 double --?( volatile double * ),
    1579         --?( _Atomic volatile double * );
    1580 long double --?( volatile long double * ),
    1581         --?( _Atomic volatile long double * );
    1582 
    1583 forall( type T ) T * --?( T * restrict volatile * ),
    1584         * --?( T * _Atomic restrict volatile * );
    1585 
    1586 forall( type T ) _Atomic T * --?( _Atomic T * restrict volatile * ),
    1587         * --?( _Atomic T * _Atomic restrict volatile * );
    1588 
    1589 forall( type T ) const T * --?( const T * restrict volatile * ),
    1590         * --?( const T * _Atomic restrict volatile * );
    1591 
    1592 forall( type T ) volatile T * --?( volatile T * restrict volatile * ),
    1593         * --?( volatile T * _Atomic restrict volatile * );
    1594 
    1595 forall( type T ) restrict T * --?( restrict T * restrict volatile * ),
    1596         * --?( restrict T * _Atomic restrict volatile * );
    1597 
    1598 forall( type T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ),
    1599         * --?( _Atomic const T * _Atomic restrict volatile * );
    1600 
    1601 forall( type T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ),
    1602         * --?( _Atomic volatile T * _Atomic restrict volatile * );
    1603 
    1604 forall( type T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ),
    1605         * --?( _Atomic restrict T * _Atomic restrict volatile * );
    1606 
    1607 forall( type T ) const volatile T * --?( const volatile T * restrict volatile * ),
    1608         * --?( const volatile T * _Atomic restrict volatile * );
    1609 
    1610 forall( type T ) const restrict T * --?( const restrict T * restrict volatile * ),
    1611         * --?( const restrict T * _Atomic restrict volatile * );
    1612 
    1613 forall( type T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ),
    1614         * --?( restrict volatile T * _Atomic restrict volatile * );
    1615 
    1616 forall( type T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ),
    1617         * --?( _Atomic const volatile T * _Atomic restrict volatile * );
    1618 
    1619 forall( type T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ),
    1620         * --?( _Atomic const restrict T * _Atomic restrict volatile * );
    1621 
    1622 forall( type T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ),
    1623         * --?( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1624 
    1625 forall( type T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ),
    1626         * --?( const restrict volatile T * _Atomic restrict volatile * );
    1627 
    1628 forall( type T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ),
    1629         * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    1630 \end{lstlisting}
    1631 For every extended integer type \lstinline$X$ there exist
    1632 % Don't use predefined: keep this out of prelude.cf.
    1633 \begin{lstlisting}
    1634 X       ++?( volatile X * ),
    1635         ++?( _Atomic volatile X * ),
    1636         --?( volatile X * ),
    1637         --?( _Atomic volatile X * );
    1638 \end{lstlisting}
    1639 For every complete enumerated type \lstinline$E$ there exist
    1640 % Don't use predefined: keep this out of prelude.cf.
    1641 \begin{lstlisting}
    1642 E ++?( volatile E * ),
    1643         ++?( _Atomic volatile E * ),
    1644         ?--( volatile E * ),
    1645         ?--( _Atomic volatile E * );
    1646 \end{lstlisting}
    1647 
    1648 \semantics
    1649 The interpretations of prefix increment and decrement expressions are
    1650 determined in the same way as the interpretations of postfix increment and
    1651 decrement expressions.
    1652 
    1653 
    1654 \subsubsection{Address and indirection operators}
    1655 
    1656 \predefined
    1657 \begin{lstlisting}
    1658 forall( type T ) lvalue T *?( T * );
    1659 forall( type T ) _Atomic lvalue T *?( _Atomic T * );
    1660 forall( type T ) const lvalue T *?( const T * );
    1661 forall( type T ) volatile lvalue T *?( volatile T * );
    1662 forall( type T ) restrict lvalue T *?( restrict T * );
    1663 forall( type T ) _Atomic const lvalue T *?( _Atomic const T * );
    1664 forall( type T ) _Atomic volatile lvalue T *?( _Atomic volatile T * );
    1665 forall( type T ) _Atomic restrict lvalue T *?( _Atomic restrict T * );
    1666 forall( type T ) const volatile lvalue T *?( const volatile T * );
    1667 forall( type T ) const restrict lvalue T *?( const restrict T * );
    1668 forall( type T ) restrict volatile lvalue T *?( restrict volatile T * );
    1669 forall( type T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * );
    1670 forall( type T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * );
    1671 forall( type T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * );
    1672 forall( type T ) const restrict volatile lvalue T *?( const restrict volatile T * );
    1673 forall( type T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * );
    1674 
    1675 forall( ftype FT ) FT *?( FT * );
    1676 \end{lstlisting}
    1677 
    1678 \constraints
    1679 The operand of the unary ``\lstinline$&$'' operator shall have exactly one
    1680 \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.
    1681 
    1682 \semantics
    1683 The ``\lstinline$&$'' expression has one interpretation which is of type \lstinline$T *$, where
    1684 \lstinline$T$ is the type of the operand.
    1685 
    1686 The interpretations of an indirection expression are the interpretations of the corresponding
    1687 function call.
    1688 
    1689 
    1690 \subsubsection{Unary arithmetic operators}
    1691 
    1692 \predefined
    1693 \begin{lstlisting}
    1694 int
    1695         +?( int ),
    1696         -?( int ),
    1697         ~?( int );
    1698 unsigned int
    1699         +?( unsigned int ),
    1700         -?( unsigned int ),
    1701          ~?( unsigned int );
    1702 long int
    1703         +?( long int ),
    1704         -?( long int ),
    1705         ~?( long int );
    1706 long unsigned int
    1707         +?( long unsigned int ),
    1708         -?( long unsigned int ),
    1709         ~?( long unsigned int );
    1710 long long int
    1711         +?( long long int ),
    1712         -?( long long int ),
    1713         ~?( long long int );
    1714 long long unsigned int
    1715         +?( long long unsigned int ),
    1716         -?( long long unsigned int ),
    1717         ~?( long long unsigned int );
    1718 float
    1719         +?( float ),
    1720         -?( float );
    1721 double
    1722         +?( double ),
    1723         -?( double );
    1724 long double
    1725         +?( long double ),
    1726         -?( long double );
    1727 _Complex float
    1728         +?( _Complex float ),
    1729         -?( _Complex float );
    1730 _Complex double
    1731         +?( _Complex double ),
    1732         -?( _Complex double );
    1733 _Complex long double
    1734         +?( _Complex long double ),
    1735         -?( _Complex long double );
    1736 
    1737 int !?( int ),
    1738         !?( unsigned int ),
    1739         !?( long ),
    1740         !?( long unsigned int ),
    1741         !?( long long int ),
    1742         !?( long long unsigned int ),
    1743         !?( float ),
    1744         !?( double ),
    1745         !?( long double ),
    1746         !?( _Complex float ),
    1747         !?( _Complex double ),
    1748         !?( _Complex long double );
    1749 
    1750 forall( dtype DT ) int !?( const restrict volatile DT * );
    1751 forall( dtype DT ) int !?( _Atomic const restrict volatile DT * );
    1752 forall( ftype FT ) int !?( FT * );
    1753 \end{lstlisting}
    1754 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    1755 rank of \lstinline$int$ there exist
    1756 % Don't use predefined: keep this out of prelude.cf.
    1757 \begin{lstlisting}
    1758 X +?( X ), -?( X ), ~?( X );
    1759 int !?( X );
    1760 \end{lstlisting}
    1761 
    1762 \semantics
    1763 The interpretations of a unary arithmetic expression are the interpretations of the corresponding
    1764 function call.
    1765 
    1766 \examples
    1767 \begin{lstlisting}
    1768 long int li;
    1769 void eat_double( double );@\use{eat_double}@
    1770 
    1771 eat_double(-li ); // @\rewrite@ eat_double( -?( li ) );
    1772 \end{lstlisting}
    1773 The valid interpretations of ``\lstinline$-li$'' (assuming no extended integer types exist) are
    1774 \begin{center}
    1775 \begin{tabular}{llc}
    1776 interpretation & result type & expression conversion cost \\
    1777 \hline
    1778 \lstinline$-?( (int)li )$                                       & \lstinline$int$                                       & (unsafe) \\
    1779 \lstinline$-?( (unsigned)li)$                           & \lstinline$unsigned int$                      & (unsafe) \\
    1780 \lstinline$-?( (long)li)$                                       & \lstinline$long$                                      & 0 \\
    1781 \lstinline$-?( (long unsigned int)li)$          & \lstinline$long unsigned int$         & 1 \\
    1782 \lstinline$-?( (long long int)li)$                      & \lstinline$long long int$                     & 2 \\
    1783 \lstinline$-?( (long long unsigned int)li)$     & \lstinline$long long unsigned int$& 3 \\
    1784 \lstinline$-?( (float)li)$                                      & \lstinline$float$                                     & 4 \\
    1785 \lstinline$-?( (double)li)$                                     & \lstinline$double$                            & 5 \\
    1786 \lstinline$-?( (long double)li)$                        & \lstinline$long double$                       & 6 \\
    1787 \lstinline$-?( (_Complex float)li)$                     & \lstinline$float$                                     & (unsafe) \\
    1788 \lstinline$-?( (_Complex double)li)$            & \lstinline$double$                            & (unsafe) \\
    1789 \lstinline$-?( (_Complex long double)li)$       & \lstinline$long double$                       & (unsafe) \\
    1790 \end{tabular}
    1791 \end{center}
    1792 The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument
    1793 conversion and the cost of the entire expression, are
    1794 \begin{center}
    1795 \begin{tabular}{lcc}
    1796 interpretation & argument cost & expression cost \\
    1797 \hline
    1798 \lstinline$eat_double( (double)-?( (int)li) )$                                  & 7                     & (unsafe) \\
    1799 \lstinline$eat_double( (double)-?( (unsigned)li) )$                             & 6                     & (unsafe) \\
    1800 \lstinline$eat_double( (double)-?(li) )$                                                & 5                     & \(0+5=5\) \\
    1801 \lstinline$eat_double( (double)-?( (long unsigned int)li) )$    & 4                     & \(1+4=5\) \\
    1802 \lstinline$eat_double( (double)-?( (long long int)li) )$                & 3                     & \(2+3=5\) \\
    1803 \lstinline$eat_double( (double)-?( (long long unsigned int)li) )$& 2            & \(3+2=5\) \\
    1804 \lstinline$eat_double( (double)-?( (float)li) )$                                & 1                     & \(4+1=5\) \\
    1805 \lstinline$eat_double( (double)-?( (double)li) )$                               & 0                     & \(5+0=5\) \\
    1806 \lstinline$eat_double( (double)-?( (long double)li) )$                  & (unsafe)      & (unsafe) \\
    1807 \lstinline$eat_double( (double)-?( (_Complex float)li) )$               & (unsafe)      & (unsafe) \\
    1808 \lstinline$eat_double( (double)-?( (_Complex double)li) )$              & (unsafe)      & (unsafe) \\
    1809 \lstinline$eat_double( (double)-?( (_Complex long double)li) )$ & (unsafe)      & (unsafe) \\
    1810 \end{tabular}
    1811 \end{center}
    1812 Each has result type \lstinline$void$, so the best must be selected. The interpretations involving
    1813 unsafe conversions are discarded. The remainder have equal expression conversion costs, so the
    1814 ``highest argument conversion cost'' rule is invoked, and the chosen interpretation is
    1815 \lstinline$eat_double( (double)-?(li) )$.
    1816 
    1817 
    1818 \subsubsection{The \lstinline$sizeof$ and \lstinline$_Alignof$ operators}
    1819 
    1820 \constraints
    1821 The operand of \lstinline$sizeof$ or \lstinline$_Alignof$ shall not be \lstinline$type$,
    1822 \lstinline$dtype$, or \lstinline$ftype$.
    1823 
    1824 When the \lstinline$sizeof$\use{sizeof} operator is applied to an expression, the expression shall
    1825 have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall
    1826 be unambiguous. \semantics A \lstinline$sizeof$ or \lstinline$_Alignof$ expression has one
    1827 interpretation, of type \lstinline$size_t$.
    1828 
    1829 When \lstinline$sizeof$ is applied to an identifier declared by a \nonterm{type-declaration} or a
    1830 \nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand. When
    1831 the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the
    1832 expression is not a constant expression.
    1833 
    1834 When \lstinline$_Alignof$ is applied to an identifier declared by a \nonterm{type-declaration} or a
    1835 \nonterm{type-parameter}, it yields the alignment requirement of the type that implements the
    1836 operand. When the operand is an opaque type or an inferred type parameter\index{inferred
    1837 parameter}, the expression is not a constant expression.
    1838 \begin{rationale}
    1839 \begin{lstlisting}
    1840 type Pair = struct { int first, second; };
    1841 size_t p_size = sizeof(Pair);           // constant expression
    1842 
    1843 extern type Rational;@\use{Rational}@
    1844 size_t c_size = sizeof(Rational);       // non-constant expression
    1845 
    1846 forall(type T) T f(T p1, T p2) {
    1847         size_t t_size = sizeof(T);              // non-constant expression
    1848         ...
    1849 }
    1850 \end{lstlisting}
    1851 ``\lstinline$sizeof Rational$'', although not statically known, is fixed. Within \lstinline$f()$,
    1852 ``\lstinline$sizeof(T)$'' is fixed for each call of \lstinline$f()$, but may vary from call to call.
    1853 \end{rationale}
    1854 
    1855 
    1856 \subsection{Cast operators}
    1857 
    1858 \begin{syntax}
    1859 \lhs{cast-expression}
    1860 \rhs \nonterm{unary-expression}
    1861 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \nonterm{cast-expression}
    1862 \end{syntax}
    1863 
    1864 \constraints
    1865 The \nonterm{type-name} in a \nonterm{cast-expression} shall not be \lstinline$type$,
    1866 \lstinline$dtype$, or \lstinline$ftype$.
    1867 
    1868 \semantics
    1869 
    1870 In a \Index{cast expression} ``\lstinline$($\nonterm{type-name}\lstinline$)e$'', if
    1871 \nonterm{type-name} is the type of an interpretation of \lstinline$e$, then that interpretation is
    1872 the only interpretation of the cast expression; otherwise, \lstinline$e$ shall have some
    1873 interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast
    1874 expression is the cast of the interpretation that can be converted at the lowest cost. The cast
    1875 expression's interpretation is ambiguous\index{ambiguous interpretation} if more than one
    1876 interpretation can be converted at the lowest cost or if the selected interpretation is ambiguous.
    1877 
    1878 \begin{rationale}
    1879 Casts can be used to eliminate ambiguity in expressions by selecting interpretations of
    1880 subexpressions, and to specialize polymorphic functions and values.
    1881 \end{rationale}
    1882 
    1883 
    1884 \subsection{Multiplicative operators}
    1885 
    1886 \begin{syntax}
    1887 \lhs{multiplicative-expression}
    1888 \rhs \nonterm{cast-expression}
    1889 \rhs \nonterm{multiplicative-expression} \lstinline$*$ \nonterm{cast-expression}
    1890 \rhs \nonterm{multiplicative-expression} \lstinline$/$ \nonterm{cast-expression}
    1891 \rhs \nonterm{multiplicative-expression} \lstinline$%$ \nonterm{cast-expression}
    1892 \end{syntax}
    1893 
    1894 \rewriterules
    1895 \begin{lstlisting}
    1896 a * b @\rewrite@ ?*?( a, b )@\use{?*?}@
    1897 a / b @\rewrite@ ?/?( a, b )@\use{?/?}@
    1898 a % b @\rewrite@ ?%?( a, b )@\use{?%?}@
    1899 \end{lstlisting}
    1900 
    1901 \predefined
    1902 \begin{lstlisting}
    1903 int?*?( int, int ),
    1904         ?/?( int, int ),
    1905         ?%?( int, int );
    1906 unsigned int?*?( unsigned int, unsigned int ),
    1907         ?/?( unsigned int, unsigned int ),
    1908         ?%?( unsigned int, unsigned int );
    1909 long int?*?( long int, long int ),
    1910         ?/?( long, long ),
    1911         ?%?( long, long );
    1912 long unsigned int?*?( long unsigned int, long unsigned int ),
    1913         ?/?( long unsigned int, long unsigned int ),
    1914         ?%?( long unsigned int, long unsigned int );
    1915 long long int?*?( long long int, long long int ),
    1916         ?/?( long long int, long long int ),
    1917         ?%?( long long int, long long int );
    1918 long long unsigned int ?*?( long long unsigned int, long long unsigned int ),
    1919         ?/?( long long unsigned int, long long unsigned int ),
    1920         ?%?( long long unsigned int, long long unsigned int );
    1921 float?*?( float, float ),
    1922         ?/?( float, float );
    1923 double?*?( double, double ),
    1924         ?/?( double, double );
    1925 long double?*?( long double, long double ),
    1926         ?/?( long double, long double );
    1927 _Complex float?*?( float, _Complex float ),
    1928         ?/?( float, _Complex float ),
    1929         ?*?( _Complex float, float ),
    1930         ?/?( _Complex float, float ),
    1931         ?*?( _Complex float, _Complex float ),
    1932         ?/?( _Complex float, _Complex float );
    1933 _Complex double?*?( double, _Complex double ),
    1934         ?/?( double, _Complex double ),
    1935         ?*?( _Complex double, double ),
    1936         ?/?( _Complex double, double ),
    1937         ?*?( _Complex double, _Complex double ),
    1938         ?/?( _Complex double, _Complex double );
    1939 _Complex long double?*?( long double, _Complex long double ),
    1940         ?/?( long double, _Complex long double ),
    1941         ?*?( _Complex long double, long double ),
    1942         ?/?( _Complex long double, long double ),
    1943         ?*?( _Complex long double, _Complex long double ),
    1944         ?/?( _Complex long double, _Complex long double );
    1945 \end{lstlisting}
    1946 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    1947 rank of \lstinline$int$ there exist
    1948 % Don't use predefined: keep this out of prelude.cf.
    1949 \begin{lstlisting}
    1950 X ?*?( X ), ?/?( X ), ?%?( X );
    1951 \end{lstlisting}
    1952 
    1953 \begin{rationale}
    1954 {\c11} does not include conversions from the \Index{real type}s to \Index{complex type}s in the
    1955 \Index{usual arithmetic conversion}s.  Instead it specifies conversion of the result of binary
    1956 operations on arguments from mixed type domains. \CFA's predefined operators match that pattern.
    1957 \end{rationale}
    1958 
    1959 \semantics
    1960 The interpretations of multiplicative expressions are the interpretations of the corresponding
    1961 function call.
    1962 
    1963 \examples
    1964 \begin{lstlisting}
    1965 int i;
    1966 long li;
    1967 void eat_double( double );@\use{eat_double}@
    1968 eat_double( li % i );
    1969 \end{lstlisting}
    1970 ``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''. The valid interpretations
    1971 of \lstinline$?%?(li, i )$, the cost\index{conversion cost} of converting their arguments, and
    1972 the cost of converting the result to \lstinline$double$ (assuming no extended integer types are
    1973 present ) are
    1974 \begin{center}
    1975 \begin{tabular}{lcc}
    1976 interpretation & argument cost & result cost \\
    1977 \hline
    1978 \lstinline$ ?%?( (int)li, i )$                                                                          & (unsafe)      & 6     \\
    1979 \lstinline$ ?%?( (unsigned)li,(unsigned)i )$                                            & (unsafe)      & 5     \\
    1980 \lstinline$ ?%?(li,(long)i )$                                                                           & 1                     & 4     \\
    1981 \lstinline$ ?%?( (long unsigned)li,(long unsigned)i )$                          & 3                     & 3     \\
    1982 \lstinline$ ?%?( (long long)li,(long long)i )$                                          & 5                     & 2     \\
    1983 \lstinline$ ?%?( (long long unsigned)li, (long long unsigned)i )$       & 7                     & 1     \\
    1984 \end{tabular}
    1985 \end{center}
    1986 The best interpretation of \lstinline$eat_double( li, i )$ is
    1987 \lstinline$eat_double( (double)?%?(li, (long)i ))$, which has no unsafe conversions and the
    1988 lowest total cost.
    1989 
    1990 \begin{rationale}
    1991 {\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that
    1992 belongs to a type that has an \Index{integer conversion rank} less than that of \lstinline$int$.If
    1993 \lstinline$s$ is a \lstinline$short int$, ``\lstinline$s *s$'' does not have type \lstinline$short int$;
    1994 it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches
    1995 that pattern; it does not predefine ``\lstinline$short ?*?( short, short )$''.
    1996 
    1997 These ``missing'' operators limit polymorphism. Consider
    1998 \begin{lstlisting}
    1999 forall( type T | T ?*?( T, T ) ) T square( T );
    2000 short s;
    2001 square( s );
    2002 \end{lstlisting}
    2003 Since \CFA does not define a multiplication operator for \lstinline$short int$,
    2004 \lstinline$square( s )$ is treated as \lstinline$square( (int)s )$, and the result has type
    2005 \lstinline$int$. This is mildly surprising, but it follows the {\c11} operator pattern.
    2006 
    2007 A more troubling example is
    2008 \begin{lstlisting}
    2009 forall( type T | ?*?( T, T ) ) T product( T[], int n );
    2010 short sa[5];
    2011 product( sa, 5);
    2012 \end{lstlisting}
    2013 This has no valid interpretations, because \CFA has no conversion from ``array of
    2014 \lstinline$short int$'' to ``array of \lstinline$int$''. The alternatives in such situations
    2015 include
    2016 \begin{itemize}
    2017 \item
    2018 Defining monomorphic overloadings of \lstinline$product$ for \lstinline$short$ and the other
    2019 ``small'' types.
    2020 \item
    2021 Defining ``\lstinline$short ?*?( short, short )$'' within the scope containing the call to
    2022 \lstinline$product$.
    2023 \item
    2024 Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to
    2025 the operator's argument type.
    2026 \end{itemize}
    2027 \end{rationale}
    2028 
    2029 
    2030 \subsection{Additive operators}
    2031 
    2032 \begin{syntax}
    2033 \lhs{additive-expression}
    2034 \rhs \nonterm{multiplicative-expression}
    2035 \rhs \nonterm{additive-expression} \lstinline$+$ \nonterm{multiplicative-expression}
    2036 \rhs \nonterm{additive-expression} \lstinline$-$ \nonterm{multiplicative-expression}
    2037 \end{syntax}
    2038 
    2039 \rewriterules
    2040 \begin{lstlisting}
    2041 a + b @\rewrite@ ?+?( a, b )@\use{?+?}@
    2042 a - b @\rewrite@ ?-?( a, b )@\use{?-?}@
    2043 \end{lstlisting}
    2044 
    2045 \predefined
    2046 \begin{lstlisting}
    2047 int?+?( int, int ),
    2048         ?-?( int, int );
    2049 unsigned int?+?( unsigned int, unsigned int ),
    2050         ?-?( unsigned int, unsigned int );
    2051 long int?+?( long int, long int ),
    2052         ?-?( long int, long int );
    2053 long unsigned int?+?( long unsigned int, long unsigned int ),
    2054         ?-?( long unsigned int, long unsigned int );
    2055 long long int?+?( long long int, long long int ),
    2056         ?-?( long long int, long long int );
    2057 long long unsigned int ?+?( long long unsigned int, long long unsigned int ),
    2058         ?-?( long long unsigned int, long long unsigned int );
    2059 float?+?( float, float ),
    2060         ?-?( float, float );
    2061 double?+?( double, double ),
    2062         ?-?( double, double );
    2063 long double?+?( long double, long double ),
    2064         ?-?( long double, long double );
    2065 _Complex float?+?( _Complex float, float ),
    2066         ?-?( _Complex float, float ),
    2067         ?+?( float, _Complex float ),
    2068         ?-?( float, _Complex float ),
    2069         ?+?( _Complex float, _Complex float ),
    2070         ?-?( _Complex float, _Complex float );
    2071 _Complex double?+?( _Complex double, double ),
    2072         ?-?( _Complex double, double ),
    2073         ?+?( double, _Complex double ),
    2074         ?-?( double, _Complex double ),
    2075         ?+?( _Complex double, _Complex double ),
    2076         ?-?( _Complex double, _Complex double );
    2077 _Complex long double?+?( _Complex long double, long double ),
    2078         ?-?( _Complex long double, long double ),
    2079         ?+?( long double, _Complex long double ),
    2080         ?-?( long double, _Complex long double ),
    2081         ?+?( _Complex long double, _Complex long double ),
    2082         ?-?( _Complex long double, _Complex long double );
    2083 
    2084 forall( type T ) T
    2085         * ?+?( T *, ptrdiff_t ),
    2086         * ?+?( ptrdiff_t, T * ),
    2087         * ?-?( T *, ptrdiff_t );
    2088 
    2089 forall( type T ) _Atomic T
    2090         * ?+?( _Atomic T *, ptrdiff_t ),
    2091         * ?+?( ptrdiff_t, _Atomic T * ),
    2092         * ?-?( _Atomic T *, ptrdiff_t );
    2093 
    2094 forall( type T ) const T
    2095         * ?+?( const T *, ptrdiff_t ),
    2096         * ?+?( ptrdiff_t, const T * ),
    2097         * ?-?( const T *, ptrdiff_t );
    2098 
    2099 forall( type T ) restrict T
    2100         * ?+?( restrict T *, ptrdiff_t ),
    2101         * ?+?( ptrdiff_t, restrict T * ),
    2102         * ?-?( restrict T *, ptrdiff_t );
    2103 
    2104 forall( type T ) volatile T
    2105         * ?+?( volatile T *, ptrdiff_t ),
    2106         * ?+?( ptrdiff_t, volatile T * ),
    2107         * ?-?( volatile T *, ptrdiff_t );
    2108 
    2109 forall( type T ) _Atomic const T
    2110         * ?+?( _Atomic const T *, ptrdiff_t ),
    2111         * ?+?( ptrdiff_t, _Atomic const T * ),
    2112         * ?-?( _Atomic const T *, ptrdiff_t );
    2113 
    2114 forall( type T ) _Atomic restrict T
    2115         * ?+?( _Atomic restrict T *, ptrdiff_t ),
    2116         * ?+?( ptrdiff_t, _Atomic restrict T * ),
    2117         * ?-?( _Atomic restrict T *, ptrdiff_t );
    2118 
    2119 forall( type T ) _Atomic volatile T
    2120         * ?+?( _Atomic volatile T *, ptrdiff_t ),
    2121         * ?+?( ptrdiff_t, _Atomic volatile T * ),
    2122         * ?-?( _Atomic volatile T *, ptrdiff_t );
    2123 
    2124 forall( type T ) const restrict T
    2125         * ?+?( const restrict T *, ptrdiff_t ),
    2126         * ?+?( ptrdiff_t, const restrict T * ),
    2127         * ?-?( const restrict T *, ptrdiff_t );
    2128 
    2129 forall( type T ) const volatile T
    2130         * ?+?( const volatile T *, ptrdiff_t ),
    2131         * ?+?( ptrdiff_t, const volatile T * ),
    2132         * ?-?( const volatile T *, ptrdiff_t );
    2133 
    2134 forall( type T ) restrict volatile T
    2135         * ?+?( restrict volatile T *, ptrdiff_t ),
    2136         * ?+?( ptrdiff_t, restrict volatile T * ),
    2137         * ?-?( restrict volatile T *, ptrdiff_t );
    2138 
    2139 forall( type T ) _Atomic const restrict T
    2140         * ?+?( _Atomic const restrict T *, ptrdiff_t ),
    2141         * ?+?( ptrdiff_t, _Atomic const restrict T * ),
    2142         * ?-?( _Atomic const restrict T *, ptrdiff_t );
    2143 
    2144 forall( type T ) ptrdiff_t
    2145         * ?-?( const restrict volatile T *, const restrict volatile T * ),
    2146         * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * );
    2147 \end{lstlisting}
    2148 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2149 rank of \lstinline$int$ there exist
    2150 % Don't use predefined: keep this out of prelude.cf.
    2151 \begin{lstlisting}
    2152 X ?+?( X ), ?-?( X );
    2153 \end{lstlisting}
    2154 
    2155 \semantics
    2156 The interpretations of additive expressions are the interpretations of the corresponding function
    2157 calls.
    2158 
    2159 \begin{rationale}
    2160 \lstinline$ptrdiff_t$ is an implementation-defined identifier defined in \lstinline$<stddef.h>$ that
    2161 is synonymous with a signed integral type that is large enough to hold the difference between two
    2162 pointers. It seems reasonable to use it for pointer addition as well. (This is technically a
    2163 difference between \CFA and C, which only specifies that pointer addition uses an \emph{integral}
    2164 argument.) Hence it is also used for subscripting, which is defined in terms of pointer addition.
    2165 The {\c11} standard uses \lstinline$size_t$ in several cases where a library function takes an
    2166 argument that is used as a subscript, but \lstinline$size_t$ is unsuitable here because it is an
    2167 unsigned type.
    2168 \end{rationale}
    2169 
    2170 
    2171 \subsection{Bitwise shift operators}
    2172 
    2173 \begin{syntax}
    2174 \lhs{shift-expression}
    2175 \rhs \nonterm{additive-expression}
    2176 \rhs \nonterm{shift-expression} \lstinline$<<$ \nonterm{additive-expression}
    2177 \rhs \nonterm{shift-expression} \lstinline$>>$ \nonterm{additive-expression}
    2178 \end{syntax}
    2179 
    2180 \rewriterules \use{?>>?}%use{?<<?}
    2181 \begin{lstlisting}
    2182 a << b @\rewrite@ ?<<?( a, b )
    2183 a >> b @\rewrite@ ?>>?( a, b )
    2184 \end{lstlisting}
    2185 
    2186 \predefined
    2187 \begin{lstlisting}
    2188 int ?<<?( int, int ),
    2189          ?>>?( int, int );
    2190 unsigned int ?<<?( unsigned int, int ),
    2191          ?>>?( unsigned int, int );
    2192 long int ?<<?( long int, int ),
    2193          ?>>?( long int, int );
    2194 long unsigned int ?<<?( long unsigned int, int ),
    2195          ?>>?( long unsigned int, int );
    2196 long long int ?<<?( long long int, int ),
    2197          ?>>?( long long int, int );
    2198 long long unsigned int ?<<?( long long unsigned int, int ),
    2199          ?>>?( long long unsigned int, int);
    2200 \end{lstlisting}
    2201 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2202 rank of \lstinline$int$ there exist
    2203 % Don't use predefined: keep this out of prelude.cf.
    2204 \begin{lstlisting}
    2205 X ?<<?( X, int ), ?>>?( X, int );
    2206 \end{lstlisting}
    2207 
    2208 \begin{rationale}
    2209 The bitwise shift operators break the usual pattern: they do not convert both operands to a common
    2210 type. The right operand only undergoes \Index{integer promotion}.
    2211 \end{rationale}
    2212 
    2213 \semantics
    2214 The interpretations of a bitwise shift expression are the interpretations of the corresponding
    2215 function calls.
    2216 
    2217 
    2218 \subsection{Relational operators}
    2219 
    2220 \begin{syntax}
    2221 \lhs{relational-expression}
    2222 \rhs \nonterm{shift-expression}
    2223 \rhs \nonterm{relational-expression} \lstinline$< $ \nonterm{shift-expression}
    2224 \rhs \nonterm{relational-expression} \lstinline$> $ \nonterm{shift-expression}
    2225 \rhs \nonterm{relational-expression} \lstinline$<=$ \nonterm{shift-expression}
    2226 \rhs \nonterm{relational-expression} \lstinline$>=$ \nonterm{shift-expression}
    2227 \end{syntax}
    2228 
    2229 \rewriterules\use{?>?}\use{?>=?}%use{?<?}%use{?<=?}
    2230 \begin{lstlisting}
    2231 a < b @\rewrite@ ?<?( a, b )
    2232 a > b @\rewrite@ ?>?( a, b )
    2233 a <= b @\rewrite@ ?<=?( a, b )
    2234 a >= b @\rewrite@ ?>=?( a, b )
    2235 \end{lstlisting}
    2236 
    2237 \predefined
    2238 \begin{lstlisting}
    2239 int ?<?( int, int ),
    2240         ?<=?( int, int ),
    2241         ?>?( int, int ),
    2242         ?>=?( int, int );
    2243 int ?<?( unsigned int, unsigned int ),
    2244         ?<=?( unsigned int, unsigned int ),
    2245         ?>?( unsigned int, unsigned int ),
    2246         ?>=?( unsigned int, unsigned int );
    2247 int ?<?( long int, long int ),
    2248         ?<=?( long int, long int ),
    2249         ?>?( long int, long int ),
    2250         ?>=?( long int, long int );
    2251 int ?<?( long unsigned int, long unsigned ),
    2252         ?<=?( long unsigned int, long unsigned ),
    2253         ?>?( long unsigned int, long unsigned ),
    2254         ?>=?( long unsigned int, long unsigned );
    2255 int ?<?( long long int, long long int ),
    2256         ?<=?( long long int, long long int ),
    2257         ?>?( long long int, long long int ),
    2258         ?>=?( long long int, long long int );
    2259 int ?<?( long long unsigned int, long long unsigned ),
    2260         ?<=?( long long unsigned int, long long unsigned ),
    2261         ?>?( long long unsigned int, long long unsigned ),
    2262         ?>=?( long long unsigned int, long long unsigned );
    2263 int ?<?( float, float ),
    2264         ?<=?( float, float ),
    2265         ?>?( float, float ),
    2266         ?>=?( float, float );
    2267 int ?<?( double, double ),
    2268         ?<=?( double, double ),
    2269         ?>?( double, double ),
    2270         ?>=?( double, double );
    2271 int ?<?( long double, long double ),
    2272         ?<=?( long double, long double ),
    2273         ?>?( long double, long double ),
    2274         ?>=?( long double, long double );
    2275 
    2276 forall( dtype DT ) int
    2277         ?<?( const restrict volatile DT *, const restrict volatile DT * ),
    2278         ?<?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
    2279         ?<=?( const restrict volatile DT *, const restrict volatile DT * ),
    2280         ?<=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
    2281         ?>?( const restrict volatile DT *, const restrict volatile DT * ),
    2282         ?>?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
    2283         ?>=?( const restrict volatile DT *, const restrict volatile DT * ),
    2284         ?>=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * );
    2285 \end{lstlisting}
    2286 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2287 rank of \lstinline$int$ there exist
    2288 % Don't use predefined: keep this out of prelude.cf.
    2289 \begin{lstlisting}
    2290 int ?<?( X, X ),
    2291         ?<=?( X, X ),
    2292         ?<?( X, X ),
    2293         ?>=?( X, X );
    2294 \end{lstlisting}
    2295 
    2296 \semantics
    2297 The interpretations of a relational expression are the interpretations of the corresponding function
    2298 call.
    2299 
    2300 
    2301 \subsection{Equality operators}
    2302 
    2303 \begin{syntax}
    2304 \lhs{equality-expression}
    2305 \rhs \nonterm{relational-expression}
    2306 \rhs \nonterm{equality-expression} \lstinline$==$ \nonterm{relational-expression}
    2307 \rhs \nonterm{equality-expression} \lstinline$!=$ \nonterm{relational-expression}
    2308 \end{syntax}
    2309 
    2310 \rewriterules
    2311 \begin{lstlisting}
    2312 a == b @\rewrite@ ?==?( a, b )@\use{?==?}@
    2313 a != b @\rewrite@ ?!=?( a, b )@\use{?"!=?}@
    2314 \end{lstlisting}
    2315 
    2316 \predefined
    2317 \begin{lstlisting}
    2318 int ?==?( int, int ),
    2319         ?!=?( int, int ),
    2320         ?==?( unsigned int, unsigned int ),
    2321         ?!=?( unsigned int, unsigned int ),
    2322         ?==?( long int, long int ),
    2323         ?!=?( long int, long int ),
    2324         ?==?( long unsigned int, long unsigned int ),
    2325         ?!=?( long unsigned int, long unsigned int ),
    2326         ?==?( long long int, long long int ),
    2327         ?!=?( long long int, long long int ),
    2328         ?==?( long long unsigned int, long long unsigned int ),
    2329         ?!=?( long long unsigned int, long long unsigned int ),
    2330         ?==?( float, float ),
    2331         ?!=?( float, float ),
    2332         ?==?( _Complex float, float ),
    2333         ?!=?( _Complex float, float ),
    2334         ?==?( float, _Complex float ),
    2335         ?!=?( float, _Complex float ),
    2336         ?==?( _Complex float, _Complex float ),
    2337         ?!=?( _Complex float, _Complex float ),
    2338         ?==?( double, double ),
    2339         ?!=?( double, double ),
    2340         ?==?( _Complex double, double ),
    2341         ?!=?( _Complex double, double ),
    2342         ?==?( double, _Complex double ),
    2343         ?!=?( double, _Complex double ),
    2344         ?==?( _Complex double, _Complex double ),
    2345         ?!=?( _Complex double, _Complex double ),
    2346         ?==?( long double, long double ),
    2347         ?!=?( long double, long double ),
    2348         ?==?( _Complex long double, long double ),
    2349         ?!=?( _Complex long double, long double ),
    2350         ?==?( long double, _Complex long double ),
    2351         ?!=?( long double, _Complex long double ),
    2352         ?==?( _Complex long double, _Complex long double ),
    2353         ?!=?( _Complex long double, _Complex long double );
    2354 
    2355 forall( dtype DT ) int
    2356         ?==?( const restrict volatile DT *, const restrict volatile DT * ),
    2357         ?!=?( const restrict volatile DT *, const restrict volatile DT * ),
    2358         ?==?( const restrict volatile DT *, const restrict volatile void * ),
    2359         ?!=?( const restrict volatile DT *, const restrict volatile void * ),
    2360         ?==?( const restrict volatile void *, const restrict volatile DT * ),
    2361         ?!=?( const restrict volatile void *, const restrict volatile DT * ),
    2362         ?==?( const restrict volatile DT *, forall( dtype DT2) const DT2 * ),
    2363         ?!=?( const restrict volatile DT *, forall( dtype DT2) const DT2 * ),
    2364         ?==?( forall( dtype DT2) const DT2*, const restrict volatile DT * ),
    2365         ?!=?( forall( dtype DT2) const DT2*, const restrict volatile DT * ),
    2366         ?==?( forall( dtype DT2) const DT2*, forall( dtype DT3) const DT3 * ),
    2367         ?!=?( forall( dtype DT2) const DT2*, forall( dtype DT3) const DT3 * ),
    2368 
    2369         ?==?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
    2370         ?!=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
    2371         ?==?( _Atomic const restrict volatile DT *, const restrict volatile void * ),
    2372         ?!=?( _Atomic const restrict volatile DT *, const restrict volatile void * ),
    2373         ?==?( const restrict volatile void *, _Atomic const restrict volatile DT * ),
    2374         ?!=?( const restrict volatile void *, _Atomic const restrict volatile DT * ),
    2375         ?==?( _Atomic const restrict volatile DT *, forall( dtype DT2) const DT2 * ),
    2376         ?!=?( _Atomic const restrict volatile DT *, forall( dtype DT2) const DT2 * ),
    2377         ?==?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ),
    2378         ?!=?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * );
    2379 
    2380 forall( ftype FT ) int
    2381         ?==?( FT *, FT * ),
    2382         ?!=?( FT *, FT * ),
    2383         ?==?( FT *, forall( ftype FT2) FT2 * ),
    2384         ?!=?( FT *, forall( ftype FT2) FT2 * ),
    2385         ?==?( forall( ftype FT2) FT2*, FT * ),
    2386         ?!=?( forall( ftype FT2) FT2*, FT * ),
    2387         ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ),
    2388         ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * );
    2389 \end{lstlisting}
    2390 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2391 rank of \lstinline$int$ there exist
    2392 % Don't use predefined: keep this out of prelude.cf.
    2393 \begin{lstlisting}
    2394 int ?==?( X, X ),
    2395         ?!=?( X, X );
    2396 \end{lstlisting}
    2397 
    2398 \begin{rationale}
    2399 The polymorphic equality operations come in three styles: comparisons between pointers of compatible
    2400 types, between pointers to \lstinline$void$ and pointers to object types or incomplete types, and
    2401 between the \Index{null pointer} constant and pointers to any type. In the last case, a special
    2402 constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA
    2403 type system.
    2404 \end{rationale}
    2405 
    2406 \semantics
    2407 The interpretations of an equality expression are the interpretations of the corresponding function
    2408 call.
    2409 
    2410 \begin{sloppypar}
    2411 The result of an equality comparison between two pointers to predefined functions or predefined
    2412 values is implementation-defined.
    2413 \end{sloppypar}
    2414 \begin{rationale}
    2415 The implementation-defined status of equality comparisons allows implementations to use one library
    2416 routine to implement many predefined functions. These optimization are particularly important when
    2417 the predefined functions are polymorphic, as is the case for most pointer operations
    2418 \end{rationale}
    2419 
    2420 
    2421 \subsection{Bitwise AND operator}
    2422 
    2423 \begin{syntax}
    2424 \lhs{AND-expression}
    2425 \rhs \nonterm{equality-expression}
    2426 \rhs \nonterm{AND-expression} \lstinline$&$ \nonterm{equality-expression}
    2427 \end{syntax}
    2428 
    2429 \rewriterules
    2430 \begin{lstlisting}
    2431 a & b @\rewrite@ ?&?( a, b )@\use{?&?}@
    2432 \end{lstlisting}
    2433 
    2434 \predefined
    2435 \begin{lstlisting}
    2436 int ?&?( int, int );
    2437 unsigned int ?&?( unsigned int, unsigned int );
    2438 long int ?&?( long int, long int );
    2439 long unsigned int ?&?( long unsigned int, long unsigned int );
    2440 long long int ?&?( long long int, long long int );
    2441 long long unsigned int ?&?( long long unsigned int, long long unsigned int );
    2442 \end{lstlisting}
    2443 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2444 rank of \lstinline$int$ there exist
    2445 % Don't use predefined: keep this out of prelude.cf.
    2446 \begin{lstlisting}
    2447 int ?&?( X, X );
    2448 \end{lstlisting}
    2449 
    2450 \semantics
    2451 The interpretations of a bitwise AND expression are the interpretations of the corresponding
    2452 function call.
    2453 
    2454 
    2455 \subsection{Bitwise exclusive OR operator}
    2456 
    2457 \begin{syntax}
    2458 \lhs{exclusive-OR-expression}
    2459 \rhs \nonterm{AND-expression}
    2460 \rhs \nonterm{exclusive-OR-expression} \lstinline$^$ \nonterm{AND-expression}
    2461 \end{syntax}
    2462 
    2463 \rewriterules
    2464 \begin{lstlisting}
    2465 a ^ b @\rewrite@ ?^?( a, b )@\use{?^?}@
    2466 \end{lstlisting}
    2467 
    2468 \predefined
    2469 \begin{lstlisting}
    2470 int ?^?( int, int );
    2471 unsigned int ?^?( unsigned int, unsigned int );
    2472 long int ?^?( long int, long int );
    2473 long unsigned int ?^?( long unsigned int, long unsigned int );
    2474 long long int ?^?( long long int, long long int );
    2475 long long unsigned int ?^?( long long unsigned int, long long unsigned int );
    2476 \end{lstlisting}
    2477 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2478 rank of \lstinline$int$ there exist
    2479 % Don't use predefined: keep this out of prelude.cf.
    2480 \begin{lstlisting}
    2481 int ?^?( X, X );
    2482 \end{lstlisting}
    2483 
    2484 \semantics
    2485 The interpretations of a bitwise exclusive OR expression are the interpretations of the
    2486 corresponding function call.
    2487 
    2488 
    2489 \subsection{Bitwise inclusive OR operator}
    2490 
    2491 \begin{syntax}
    2492 \lhs{inclusive-OR-expression}
    2493 \rhs \nonterm{exclusive-OR-expression}
    2494 \rhs \nonterm{inclusive-OR-expression} \lstinline$|$ \nonterm{exclusive-OR-expression}
    2495 \end{syntax}
    2496 
    2497 \rewriterules\use{?"|?}
    2498 \begin{lstlisting}
    2499 a | b @\rewrite@ ?|?( a, b )
    2500 \end{lstlisting}
    2501 
    2502 \predefined
    2503 \begin{lstlisting}
    2504 int ?|?( int, int );
    2505 unsigned int ?|?( unsigned int, unsigned int );
    2506 long int ?|?( long int, long int );
    2507 long unsigned int ?|?( long unsigned int, long unsigned int );
    2508 long long int ?|?( long long int, long long int );
    2509 long long unsigned int ?|?( long long unsigned int, long long unsigned int );
    2510 \end{lstlisting}
    2511 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2512 rank of \lstinline$int$ there exist
    2513 % Don't use predefined: keep this out of prelude.cf.
    2514 \begin{lstlisting}
    2515 int ?|?( X, X );
    2516 \end{lstlisting}
    2517 
    2518 \semantics
    2519 The interpretations of a bitwise inclusive OR expression are the interpretations of the
    2520 corresponding function call.
    2521 
    2522 
    2523 \subsection{Logical AND operator}
    2524 
    2525 \begin{syntax}
    2526 \lhs{logical-AND-expression}
    2527 \rhs \nonterm{inclusive-OR-expression}
    2528 \rhs \nonterm{logical-AND-expression} \lstinline$&&$ \nonterm{inclusive-OR-expression}
    2529 \end{syntax}
    2530 
    2531 \semantics The operands of the expression ``\lstinline$a && b$'' are treated as
    2532 ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b)!=0)$'', which shall both be
    2533 unambiguous. The expression has only one interpretation, which is of type \lstinline$int$.
    2534 \begin{rationale}
    2535 When the operands of a logical expression are values of built-in types, and ``\lstinline$!=$'' has
    2536 not been redefined for those types, the compiler can optimize away the function calls.
    2537 
    2538 A common C idiom omits comparisons to \lstinline$0$ in the controlling expressions of loops and
    2539 \lstinline$if$ statements. For instance, the loop below iterates as long as \lstinline$rp$ points
    2540 at a \lstinline$Rational$ value that is non-zero.
    2541 
    2542 \begin{lstlisting}
    2543 extern type Rational;@\use{Rational}@
    2544 extern const Rational 0;@\use{0}@
    2545 extern int ?!=?( Rational, Rational );
    2546 Rational *rp;
    2547 
    2548 while ( rp && *rp ) { ... }
    2549 \end{lstlisting}
    2550 The logical expression calls the \lstinline$Rational$ inequality operator, passing
    2551 it \lstinline$*rp$ and the \lstinline$Rational 0$, and getting a 1 or 0 as a result. In
    2552 contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$
    2553 conversion to \lstinline$*rp$ in the equivalent situation. The conversion to \lstinline$int$ would
    2554 produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was
    2555 not written with this situation in mind.
    2556 \end{rationale}
    2557 
    2558 
    2559 \subsection{Logical OR operator}
    2560 
    2561 \begin{syntax}
    2562 \lhs{logical-OR-expression}
    2563 \rhs \nonterm{logical-AND-expression}
    2564 \rhs \nonterm{logical-OR-expression} \lstinline$||$ \nonterm{logical-AND-expression}
    2565 \end{syntax}
    2566 
    2567 \semantics
    2568 
    2569 The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$''
    2570 and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous. The expression has only one
    2571 interpretation, which is of type \lstinline$int$.
    2572 
    2573 
    2574 \subsection{Conditional operator}
    2575 
    2576 \begin{syntax}
    2577 \lhs{conditional-expression}
    2578 \rhs \nonterm{logical-OR-expression}
    2579 \rhs \nonterm{logical-OR-expression} \lstinline$?$ \nonterm{expression}
    2580          \lstinline$:$ \nonterm{conditional-expression}
    2581 \end{syntax}
    2582 
    2583 \semantics
    2584 In the conditional expression\use{?:} ``\lstinline$a?b:c$'', if the second and
    2585 third operands both have an interpretation with \lstinline$void$ type, then the expression has an
    2586 interpretation with type \lstinline$void$, equivalent to
    2587 \begin{lstlisting}
    2588 ( int)(( a)!=0) ? ( void)( b) : ( void)( c)
    2589 \end{lstlisting}
    2590 
    2591 If the second and third operands both have interpretations with non-\lstinline$void$ types, the
    2592 expression is treated as if it were the call ``\lstinline$cond((a)!=0, b, c)$'',
    2593 with \lstinline$cond$ declared as
    2594 \begin{lstlisting}
    2595 forall( type T ) T cond( int, T, T );
    2596  
    2597 forall( dtype D ) void
    2598         * cond( int, D *, void * ),
    2599         * cond( int, void *, D * );
    2600        
    2601 forall( dtype D ) _atomic void
    2602         * cond( int, _Atomic D *, _Atomic void * ),
    2603         * cond( int, _Atomic void *, _Atomic D * );
    2604 
    2605 forall( dtype D ) const void
    2606         * cond( int, const D *, const void * ),
    2607         * cond( int, const void *, const D * );
    2608 
    2609 forall( dtype D ) restrict void
    2610         * cond( int, restrict D *, restrict void * ),
    2611         * cond( int, restrict void *, restrict D * );
    2612 
    2613 forall( dtype D ) volatile void
    2614         * cond( int, volatile D *, volatile void * ),
    2615         * cond( int, volatile void *, volatile D * );
    2616 
    2617 forall( dtype D ) _Atomic const void
    2618         * cond( int, _Atomic const D *, _Atomic const void * ),
    2619         * cond( int, _Atomic const void *, _Atomic const D * );
    2620 
    2621 forall( dtype D ) _Atomic restrict void
    2622         * cond( int, _Atomic restrict D *, _Atomic restrict void * ),
    2623         * cond( int, _Atomic restrict void *, _Atomic restrict D * );
    2624 
    2625 forall( dtype D ) _Atomic volatile void
    2626         * cond( int, _Atomic volatile D *, _Atomic volatile void * ),
    2627         * cond( int, _Atomic volatile void *, _Atomic volatile D * );
    2628 
    2629 forall( dtype D ) const restrict void
    2630         * cond( int, const restrict D *, const restrict void * ),
    2631         * cond( int, const restrict void *, const restrict D * );
    2632 
    2633 forall( dtype D ) const volatile void
    2634         * cond( int, const volatile D *, const volatile void * ),
    2635         * cond( int, const volatile void *, const volatile D * );
    2636 
    2637 forall( dtype D ) restrict volatile void
    2638         * cond( int, restrict volatile D *, restrict volatile void * ),
    2639         * cond( int, restrict volatile void *, restrict volatile D * );
    2640 
    2641 forall( dtype D ) _Atomic const restrict void
    2642         * cond( int, _Atomic const restrict D *, _Atomic const restrict void * ),
    2643         * cond( int, _Atomic const restrict void *, _Atomic const restrict D * );
    2644 
    2645 forall( dtype D ) _Atomic const volatile void
    2646         * cond( int, _Atomic const volatile D *, _Atomic const volatile void * ),
    2647         * cond( int, _Atomic const volatile void *, _Atomic const volatile D * );
    2648 
    2649 forall( dtype D ) _Atomic restrict volatile void
    2650         * cond( int, _Atomic restrict volatile D *,
    2651          _Atomic restrict volatile void * ),
    2652         * cond( int, _Atomic restrict volatile void *,
    2653          _Atomic restrict volatile D * );
    2654 
    2655 forall( dtype D ) const restrict volatile void
    2656         * cond( int, const restrict volatile D *,
    2657          const restrict volatile void * ),
    2658         * cond( int, const restrict volatile void *,
    2659          const restrict volatile D * );
    2660 
    2661 forall( dtype D ) _Atomic const restrict volatile void
    2662         * cond( int, _Atomic const restrict volatile D *,
    2663          _Atomic const restrict volatile void * ),
    2664         * cond( int, _Atomic const restrict volatile void *,
    2665          _Atomic const restrict volatile D * );
    2666 \end{lstlisting}
    2667 
    2668 \begin{rationale}
    2669 The object of the above is to apply the \Index{usual arithmetic conversion}s when the second and
    2670 third operands have arithmetic type, and to combine the qualifiers of the second and third operands
    2671 if they are pointers.
    2672 \end{rationale}
    2673 
    2674 \examples
    2675 \begin{lstlisting}
    2676 #include <stdlib.h>
    2677 int i;
    2678 long l;
    2679 rand() ? i : l;
    2680 \end{lstlisting}
    2681 The best interpretation infers the expression's type to be \lstinline$long$ and applies the safe
    2682 \lstinline$int$-to-\lstinline$long$ conversion to \lstinline$i$.
    2683 
    2684 \begin{lstlisting}
    2685 const int *cip;
    2686 volatile int *vip;
    2687 rand() ? cip : vip;
    2688 \end{lstlisting}
    2689 The expression has type \lstinline$const volatile int *$, with safe conversions applied to the second
    2690 and third operands to add \lstinline$volatile$ and \lstinline$const$ qualifiers, respectively.
    2691 
    2692 \begin{lstlisting}
    2693 rand() ? cip : 0;
    2694 \end{lstlisting}
    2695 The expression has type \lstinline$const int *$, with a specialization conversion applied to
    2696 \lstinline$0$.
    2697 
    2698 
    2699 \subsection{Assignment operators}
    2700 
    2701 \begin{syntax}
    2702 \lhs{assignment-expression}
    2703 \rhs \nonterm{conditional-expression}
    2704 \rhs \nonterm{unary-expression} \nonterm{assignment-operator}
    2705          \nonterm{assignment-expression}
    2706 \lhs{assignment-operator} one of
    2707 \rhs \lstinline$=$\ \ \lstinline$*=$\ \ \lstinline$/=$\ \ \lstinline$%=$\ \ \lstinline$+=$\ \ \lstinline$-=$\ \ 
    2708          \lstinline$<<=$\ \ \lstinline$>>=$\ \ \lstinline$&=$\ \ \lstinline$^=$\ \ \lstinline$|=$
    2709 \end{syntax}
    2710 
    2711 \rewriterules
    2712 Let ``\(\leftarrow\)'' be any of the assignment operators. Then
    2713 \use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}
    2714 \use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}
    2715 \begin{lstlisting}
    2716 a @$\leftarrow$@ b @\rewrite@ ?@$\leftarrow$@?( &( a ), b )
    2717 \end{lstlisting}
    2718 
    2719 \semantics
    2720 Each interpretation of the left operand of an assignment expression is considered separately. For
    2721 each interpretation that is a bit-field or is declared with the \lstinline$register$ storage class
    2722 specifier, the expression has one valid interpretation, with the type of the left operand. The
    2723 right operand is cast to that type, and the assignment expression is ambiguous if either operand is.
    2724 For the remaining interpretations, the expression is rewritten, and the interpretations of the
    2725 assignment expression are the interpretations of the corresponding function call. Finally, all
    2726 interpretations of the expression produced for the different interpretations of the left operand are
    2727 combined to produce the interpretations of the expression as a whole; where interpretations have
    2728 compatible result types, the best interpretations are selected in the manner described for function
    2729 call expressions.
    2730 
    2731 
    2732 \subsubsection{Simple assignment}
    2733 
    2734 \predefined
    2735 \begin{lstlisting}
    2736 _Bool
    2737         ?=?( volatile _Bool *, _Bool ),
    2738         ?=?( volatile _Bool *, forall( dtype D ) D * ),
    2739         ?=?( volatile _Bool *, forall( ftype F ) F * ),
    2740         ?=?( _Atomic volatile _Bool *, _Bool ),
    2741         ?=?( _Atomic volatile _Bool *, forall( dtype D ) D * ),
    2742         ?=?( _Atomic volatile _Bool *, forall( ftype F ) F * );
    2743 char
    2744         ?=?( volatile char *, char ),
    2745         ?=?( _Atomic volatile char *, char );
    2746 unsigned char
    2747         ?=?( volatile unsigned char *, unsigned char ),
    2748         ?=?( _Atomic volatile unsigned char *, unsigned char );
    2749 signed char
    2750         ?=?( volatile signed char *, signed char ),
    2751         ?=?( _Atomic volatile signed char *, signed char );
    2752 short int
    2753         ?=?( volatile short int *, short int ),
    2754         ?=?( _Atomic volatile short int *, short int );
    2755 unsigned short
    2756         ?=?( volatile unsigned int *, unsigned int ),
    2757         ?=?( _Atomic volatile unsigned int *, unsigned int );
    2758 int
    2759         ?=?( volatile int *, int ),
    2760         ?=?( _Atomic volatile int *, int );
    2761 unsigned int
    2762         ?=?( volatile unsigned int *, unsigned int ),
    2763         ?=?( _Atomic volatile unsigned int *, unsigned int );
    2764 long int
    2765         ?=?( volatile long int *, long int ),
    2766         ?=?( _Atomic volatile long int *, long int );
    2767 unsigned long int
    2768         ?=?( volatile unsigned long int *, unsigned long int ),
    2769         ?=?( _Atomic volatile unsigned long int *, unsigned long int );
    2770 long long int
    2771         ?=?( volatile long long int *, long long int ),
    2772         ?=?( _Atomic volatile long long int *, long long int );
    2773 unsigned long long int
    2774         ?=?( volatile unsigned long long int *, unsigned long long int ),
    2775         ?=?( _Atomic volatile unsigned long long int *, unsigned long long int );
    2776 float
    2777         ?=?( volatile float *, float ),
    2778         ?=?( _Atomic volatile float *, float );
    2779 double
    2780         ?=?( volatile double *, double ),
    2781         ?=?( _Atomic volatile double *, double );
    2782 long double
    2783         ?=?( volatile long double *, long double ),
    2784         ?=?( _Atomic volatile long double *, long double );
    2785 _Complex float
    2786         ?=?( volatile float *, float ),
    2787         ?=?( _Atomic volatile float *, float );
    2788 _Complex double
    2789         ?=?( volatile double *, double ),
    2790         ?=?( _Atomic volatile double *, double );
    2791 _Complex long double
    2792         ?=?( volatile _Complex long double *, _Complex long double ),
    2793         ?=?( _Atomic volatile _Complex long double *, _Atomic _Complex long double );
    2794 
    2795 forall( ftype FT ) FT
    2796         * ?=?( FT * volatile *, FT * ),
    2797         * ?=?( FT * volatile *, forall( ftype F ) F * );
    2798 
    2799 forall( ftype FT ) FT const
    2800         * ?=?( FT const * volatile *, FT const * ),
    2801         * ?=?( FT const * volatile *, forall( ftype F ) F * );
    2802 
    2803 forall( ftype FT ) FT volatile
    2804         * ?=?( FT volatile * volatile *, FT * ),
    2805         * ?=?( FT volatile * volatile *, forall( ftype F ) F * );
    2806 
    2807 forall( ftype FT ) FT const
    2808         * ?=?( FT const volatile * volatile *, FT const * ),
    2809         * ?=?( FT const volatile * volatile *, forall( ftype F ) F * );
    2810 
    2811 forall( dtype DT ) DT
    2812         * ?=?( DT * restrict volatile *, DT * ),
    2813         * ?=?( DT * restrict volatile *, void * ),
    2814         * ?=?( DT * restrict volatile *, forall( dtype D ) D * ),
    2815         * ?=?( DT * _Atomic restrict volatile *, DT * ),
    2816         * ?=?( DT * _Atomic restrict volatile *, void * ),
    2817         * ?=?( DT * _Atomic restrict volatile *, forall( dtype D ) D * );
    2818 
    2819 forall( dtype DT ) DT _Atomic
    2820         * ?=?( _Atomic DT * restrict volatile *, DT _Atomic * ),
    2821         * ?=?( _Atomic DT * restrict volatile *, void * ),
    2822         * ?=?( _Atomic DT * restrict volatile *, forall( dtype D ) D * ),
    2823         * ?=?( _Atomic DT * _Atomic restrict volatile *, DT _Atomic * ),
    2824         * ?=?( _Atomic DT * _Atomic restrict volatile *, void * ),
    2825         * ?=?( _Atomic DT * _Atomic restrict volatile *, forall( dtype D ) D * );
    2826 
    2827 forall( dtype DT ) DT const
    2828         * ?=?( DT const * restrict volatile *, DT const * ),
    2829         * ?=?( DT const * restrict volatile *, void const * ),
    2830         * ?=?( DT const * restrict volatile *, forall( dtype D ) D * ),
    2831         * ?=?( DT const * _Atomic restrict volatile *, DT const * ),
    2832         * ?=?( DT const * _Atomic restrict volatile *, void const * ),
    2833         * ?=?( DT const * _Atomic restrict volatile *, forall( dtype D ) D * );
    2834 
    2835 forall( dtype DT ) DT restrict
    2836         * ?=?( restrict DT * restrict volatile *, DT restrict * ),
    2837         * ?=?( restrict DT * restrict volatile *, void * ),
    2838         * ?=?( restrict DT * restrict volatile *, forall( dtype D ) D * ),
    2839         * ?=?( restrict DT * _Atomic restrict volatile *, DT restrict * ),
    2840         * ?=?( restrict DT * _Atomic restrict volatile *, void * ),
    2841         * ?=?( restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * );
    2842 
    2843 forall( dtype DT ) DT volatile
    2844         * ?=?( DT volatile * restrict volatile *, DT volatile * ),
    2845         * ?=?( DT volatile * restrict volatile *, void volatile * ),
    2846         * ?=?( DT volatile * restrict volatile *, forall( dtype D ) D * ),
    2847         * ?=?( DT volatile * _Atomic restrict volatile *, DT volatile * ),
    2848         * ?=?( DT volatile * _Atomic restrict volatile *, void volatile * ),
    2849         * ?=?( DT volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
    2850 
    2851 forall( dtype DT ) DT _Atomic const
    2852         * ?=?( DT _Atomic const * restrict volatile *, DT _Atomic const * ),
    2853         * ?=?( DT _Atomic const * restrict volatile *, void const * ),
    2854         * ?=?( DT _Atomic const * restrict volatile *, forall( dtype D ) D * ),
    2855         * ?=?( DT _Atomic const * _Atomic restrict volatile *, DT _Atomic const * ),
    2856         * ?=?( DT _Atomic const * _Atomic restrict volatile *, void const * ),
    2857         * ?=?( DT _Atomic const * _Atomic restrict volatile *, forall( dtype D ) D * );
    2858 
    2859 forall( dtype DT ) DT _Atomic restrict
    2860         * ?=?( _Atomic restrict DT * restrict volatile *, DT _Atomic restrict * ),
    2861         * ?=?( _Atomic restrict DT * restrict volatile *, void * ),
    2862         * ?=?( _Atomic restrict DT * restrict volatile *, forall( dtype D ) D * ),
    2863         * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, DT _Atomic restrict * ),
    2864         * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, void * ),
    2865         * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * );
    2866 
    2867 forall( dtype DT ) DT _Atomic volatile
    2868         * ?=?( DT _Atomic volatile * restrict volatile *, DT _Atomic volatile * ),
    2869         * ?=?( DT _Atomic volatile * restrict volatile *, void volatile * ),
    2870         * ?=?( DT _Atomic volatile * restrict volatile *, forall( dtype D ) D * ),
    2871         * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, DT _Atomic volatile * ),
    2872         * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, void volatile * ),
    2873         * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
    2874 
    2875 forall( dtype DT ) DT const restrict
    2876         * ?=?( DT const restrict * restrict volatile *, DT const restrict * ),
    2877         * ?=?( DT const restrict * restrict volatile *, void const * ),
    2878         * ?=?( DT const restrict * restrict volatile *, forall( dtype D ) D * ),
    2879         * ?=?( DT const restrict * _Atomic restrict volatile *, DT const restrict * ),
    2880         * ?=?( DT const restrict * _Atomic restrict volatile *, void const * ),
    2881         * ?=?( DT const restrict * _Atomic restrict volatile *, forall( dtype D ) D * );
    2882 
    2883 forall( dtype DT ) DT const volatile
    2884         * ?=?( DT const volatile * restrict volatile *, DT const volatile * ),
    2885         * ?=?( DT const volatile * restrict volatile *, void const volatile * ),
    2886         * ?=?( DT const volatile * restrict volatile *, forall( dtype D ) D * ),
    2887         * ?=?( DT const volatile * _Atomic restrict volatile *, DT const volatile * ),
    2888         * ?=?( DT const volatile * _Atomic restrict volatile *, void const volatile * ),
    2889         * ?=?( DT const volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
    2890 
    2891 forall( dtype DT ) DT restrict volatile
    2892         * ?=?( DT restrict volatile * restrict volatile *, DT restrict volatile * ),
    2893         * ?=?( DT restrict volatile * restrict volatile *, void volatile * ),
    2894         * ?=?( DT restrict volatile * restrict volatile *, forall( dtype D ) D * ),
    2895         * ?=?( DT restrict volatile * _Atomic restrict volatile *, DT restrict volatile * ),
    2896         * ?=?( DT restrict volatile * _Atomic restrict volatile *, void volatile * ),
    2897         * ?=?( DT restrict volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
    2898 
    2899 forall( dtype DT ) DT _Atomic const restrict
    2900         * ?=?( DT _Atomic const restrict * restrict volatile *,
    2901          DT _Atomic const restrict * ),
    2902         * ?=?( DT _Atomic const restrict * restrict volatile *,
    2903          void const * ),
    2904         * ?=?( DT _Atomic const restrict * restrict volatile *,
    2905          forall( dtype D ) D * ),
    2906         * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,
    2907          DT _Atomic const restrict * ),
    2908         * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,
    2909          void const * ),
    2910         * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,
    2911          forall( dtype D ) D * );
    2912 
    2913 forall( dtype DT ) DT _Atomic const volatile
    2914         * ?=?( DT _Atomic const volatile * restrict volatile *,
    2915          DT _Atomic const volatile * ),
    2916         * ?=?( DT _Atomic const volatile * restrict volatile *,
    2917          void const volatile * ),
    2918         * ?=?( DT _Atomic const volatile * restrict volatile *,
    2919          forall( dtype D ) D * ),
    2920         * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,
    2921          DT _Atomic const volatile * ),
    2922         * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,
    2923          void const volatile * ),
    2924         * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,
    2925          forall( dtype D ) D * );
    2926 
    2927 forall( dtype DT ) DT _Atomic restrict volatile
    2928         * ?=?( DT _Atomic restrict volatile * restrict volatile *,
    2929          DT _Atomic restrict volatile * ),
    2930         * ?=?( DT _Atomic restrict volatile * restrict volatile *,
    2931          void volatile * ),
    2932         * ?=?( DT _Atomic restrict volatile * restrict volatile *,
    2933          forall( dtype D ) D * ),
    2934         * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,
    2935          DT _Atomic restrict volatile * ),
    2936         * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,
    2937          void volatile * ),
    2938         * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,
    2939          forall( dtype D ) D * );
    2940 
    2941 forall( dtype DT ) DT const restrict volatile
    2942         * ?=?( DT const restrict volatile * restrict volatile *,
    2943          DT const restrict volatile * ),
    2944         * ?=?( DT const restrict volatile * restrict volatile *,
    2945          void const volatile * ),
    2946         * ?=?( DT const restrict volatile * restrict volatile *,
    2947          forall( dtype D ) D * ),
    2948         * ?=?( DT const restrict volatile * _Atomic restrict volatile *,
    2949          DT const restrict volatile * ),
    2950         * ?=?( DT const restrict volatile * _Atomic restrict volatile *,
    2951          void const volatile * ),
    2952         * ?=?( DT const restrict volatile * _Atomic restrict volatile *,
    2953          forall( dtype D ) D * );
    2954 
    2955 forall( dtype DT ) DT _Atomic const restrict volatile
    2956         * ?=?( DT _Atomic const restrict volatile * restrict volatile *,
    2957          DT _Atomic const restrict volatile * ),
    2958         * ?=?( DT _Atomic const restrict volatile * restrict volatile *,
    2959          void const volatile * ),
    2960         * ?=?( DT _Atomic const restrict volatile * restrict volatile *,
    2961          forall( dtype D ) D * ),
    2962         * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,
    2963          DT _Atomic const restrict volatile * ),
    2964         * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,
    2965          void const volatile * ),
    2966         * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,
    2967          forall( dtype D ) D * );
    2968 
    2969 forall( dtype DT ) void
    2970         * ?=?( void * restrict volatile *, DT * );
    2971 
    2972 forall( dtype DT ) void const
    2973         * ?=?( void const * restrict volatile *, DT const * );
    2974 
    2975 forall( dtype DT ) void volatile
    2976         * ?=?( void volatile * restrict volatile *, DT volatile * );
    2977 
    2978 forall( dtype DT ) void const volatile
    2979         * ?=?( void const volatile * restrict volatile *, DT const volatile * );
    2980 \end{lstlisting}
    2981 \begin{rationale}
    2982 The pattern of overloadings for simple assignment resembles that of pointer increment and decrement,
    2983 except that the polymorphic pointer assignment functions declare a \lstinline$dtype$ parameter,
    2984 instead of a \lstinline$type$ parameter, because the left operand may be a pointer to an incomplete
    2985 type.
    2986 \end{rationale}
    2987 
    2988 For every complete structure or union type \lstinline$S$ there exist
    2989 % Don't use predefined: keep this out of prelude.cf.
    2990 \begin{lstlisting}
    2991 S ?=?( S volatile *, S ), ?=?( S _Atomic volatile *, S );
    2992 \end{lstlisting}
    2993 
    2994 For every extended integer type \lstinline$X$ there exist
    2995 % Don't use predefined: keep this out of prelude.cf.
    2996 \begin{lstlisting}
    2997 X ?=?( X volatile *, X ), ?=?( X _Atomic volatile *, X );
    2998 \end{lstlisting}
    2999 
    3000 For every complete enumerated type \lstinline$E$ there exist
    3001 % Don't use predefined: keep this out of prelude.cf.
    3002 \begin{lstlisting}
    3003 E ?=?( E volatile *, int ), ?=?( E _Atomic volatile *, int );
    3004 \end{lstlisting}
    3005 \begin{rationale}
    3006 The right-hand argument is \lstinline$int$ because enumeration constants have type \lstinline$int$.
    3007 \end{rationale}
    3008 
    3009 \semantics
    3010 The structure assignment functions provide member-wise assignment; each non-array member and each
    3011 element of each array member of the right argument is assigned to the corresponding member or
    3012 element of the left argument using the assignment function defined for its type. All other
    3013 assignment functions have the same effect as the corresponding C assignment expression.
    3014 \begin{rationale}
    3015 Note that, by default, union assignment\index{deficiencies!union assignment} uses C semantics---that
    3016 is, bitwise copy---even if some of the union members have programmer-defined assignment functions.
    3017 \end{rationale}
    3018 
    3019 
    3020 \subsubsection{Compound assignment}
    3021 
    3022 \predefined
    3023 \begin{lstlisting}
    3024 forall( type T ) T
    3025         * ?+=?( T * restrict volatile *, ptrdiff_t ),
    3026         * ?-=?( T * restrict volatile *, ptrdiff_t ),
    3027         * ?+=?( T * _Atomic restrict volatile *, ptrdiff_t ),
    3028         * ?-=?( T * _Atomic restrict volatile *, ptrdiff_t );
    3029 
    3030 forall( type T ) T _Atomic
    3031         * ?+=?( T _Atomic * restrict volatile *, ptrdiff_t ),
    3032         * ?-=?( T _Atomic * restrict volatile *, ptrdiff_t ),
    3033         * ?+=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ),
    3034         * ?-=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t );
    3035 
    3036 forall( type T ) T const
    3037         * ?+=?( T const * restrict volatile *, ptrdiff_t ),
    3038         * ?-=?( T const * restrict volatile *, ptrdiff_t ),
    3039         * ?+=?( T const * _Atomic restrict volatile *, ptrdiff_t ),
    3040         * ?-=?( T const * _Atomic restrict volatile *, ptrdiff_t );
    3041 
    3042 forall( type T ) T restrict
    3043         * ?+=?( T restrict * restrict volatile *, ptrdiff_t ),
    3044         * ?-=?( T restrict * restrict volatile *, ptrdiff_t ),
    3045         * ?+=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ),
    3046         * ?-=?( T restrict * _Atomic restrict volatile *, ptrdiff_t );
    3047 
    3048 forall( type T ) T volatile
    3049         * ?+=?( T volatile * restrict volatile *, ptrdiff_t ),
    3050         * ?-=?( T volatile * restrict volatile *, ptrdiff_t ),
    3051         * ?+=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ),
    3052         * ?-=?( T volatile * _Atomic restrict volatile *, ptrdiff_t );
    3053 
    3054 forall( type T ) T _Atomic const
    3055         * ?+=?( T _Atomic const restrict volatile *, ptrdiff_t ),
    3056         * ?-=?( T _Atomic const restrict volatile *, ptrdiff_t ),
    3057         * ?+=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ),
    3058         * ?-=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t );
    3059 
    3060 forall( type T ) T _Atomic restrict
    3061         * ?+=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ),
    3062         * ?-=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ),
    3063         * ?+=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ),
    3064         * ?-=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t );
    3065 
    3066 forall( type T ) T _Atomic volatile
    3067         * ?+=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ),
    3068         * ?-=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ),
    3069         * ?+=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ),
    3070         * ?-=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t );
    3071 
    3072 forall( type T ) T const restrict
    3073         * ?+=?( T const restrict * restrict volatile *, ptrdiff_t ),
    3074         * ?-=?( T const restrict * restrict volatile *, ptrdiff_t ),
    3075         * ?+=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ),
    3076         * ?-=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t );
    3077 
    3078 forall( type T ) T const volatile
    3079         * ?+=?( T const volatile * restrict volatile *, ptrdiff_t ),
    3080         * ?-=?( T const volatile * restrict volatile *, ptrdiff_t ),
    3081         * ?+=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ),
    3082         * ?-=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t );
    3083 
    3084 forall( type T ) T restrict volatile
    3085         * ?+=?( T restrict volatile * restrict volatile *, ptrdiff_t ),
    3086         * ?-=?( T restrict volatile * restrict volatile *, ptrdiff_t ),
    3087         * ?+=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
    3088         * ?-=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
    3089 
    3090 forall( type T ) T _Atomic const restrict
    3091         * ?+=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ),
    3092         * ?-=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ),
    3093         * ?+=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ),
    3094         * ?-=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t );
    3095 
    3096 forall( type T ) T _Atomic const volatile
    3097         * ?+=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ),
    3098         * ?-=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ),
    3099         * ?+=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ),
    3100         * ?-=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t );
    3101 
    3102 forall( type T ) T _Atomic restrict volatile
    3103         * ?+=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ),
    3104         * ?-=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ),
    3105         * ?+=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
    3106         * ?-=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
    3107 
    3108 forall( type T ) T const restrict volatile
    3109         * ?+=?( T const restrict volatile * restrict volatile *, ptrdiff_t ),
    3110         * ?-=?( T const restrict volatile * restrict volatile *, ptrdiff_t ),
    3111         * ?+=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
    3112         * ?-=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
    3113 
    3114 forall( type T ) T _Atomic const restrict volatile
    3115         * ?+=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ),
    3116         * ?-=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ),
    3117         * ?+=?( T _Atomic const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
    3118         * ?-=?( T _Atomic const restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
    3119 
    3120 _Bool
    3121         ?*=?( _Bool volatile *, _Bool ),
    3122         ?/=?( _Bool volatile *, _Bool ),
    3123         ?+=?( _Bool volatile *, _Bool ),
    3124         ?-=?( _Bool volatile *, _Bool ),
    3125         ?%=?( _Bool volatile *, _Bool ),
    3126         ?<<=?( _Bool volatile *, int ),
    3127         ?>>=?( _Bool volatile *, int ),
    3128         ?&=?( _Bool volatile *, _Bool ),
    3129         ?^=?( _Bool volatile *, _Bool ),
    3130         ?|=?( _Bool volatile *, _Bool );
    3131 char
    3132         ?*=?( char volatile *, char ),
    3133         ?/=?( char volatile *, char ),
    3134         ?+=?( char volatile *, char ),
    3135         ?-=?( char volatile *, char ),
    3136         ?%=?( char volatile *, char ),
    3137         ?<<=?( char volatile *, int ),
    3138         ?>>=?( char volatile *, int ),
    3139         ?&=?( char volatile *, char ),
    3140         ?^=?( char volatile *, char ),
    3141         ?|=?( char volatile *, char );
    3142 unsigned char
    3143         ?*=?( unsigned char volatile *, unsigned char ),
    3144         ?/=?( unsigned char volatile *, unsigned char ),
    3145         ?+=?( unsigned char volatile *, unsigned char ),
    3146         ?-=?( unsigned char volatile *, unsigned char ),
    3147         ?%=?( unsigned char volatile *, unsigned char ),
    3148         ?<<=?( unsigned char volatile *, int ),
    3149         ?>>=?( unsigned char volatile *, int ),
    3150         ?&=?( unsigned char volatile *, unsigned char ),
    3151         ?^=?( unsigned char volatile *, unsigned char ),
    3152         ?|=?( unsigned char volatile *, unsigned char );
    3153 signed char
    3154         ?*=?( signed char volatile *, signed char ),
    3155         ?/=?( signed char volatile *, signed char ),
    3156         ?+=?( signed char volatile *, signed char ),
    3157         ?-=?( signed char volatile *, signed char ),
    3158         ?%=?( signed char volatile *, signed char ),
    3159         ?<<=?( signed char volatile *, int ),
    3160         ?>>=?( signed char volatile *, int ),
    3161         ?&=?( signed char volatile *, signed char ),
    3162         ?^=?( signed char volatile *, signed char ),
    3163         ?|=?( signed char volatile *, signed char );
    3164 short int
    3165         ?*=?( short int volatile *, short int ),
    3166         ?/=?( short int volatile *, short int ),
    3167         ?+=?( short int volatile *, short int ),
    3168         ?-=?( short int volatile *, short int ),
    3169         ?%=?( short int volatile *, short int ),
    3170         ?<<=?( short int volatile *, int ),
    3171         ?>>=?( short int volatile *, int ),
    3172         ?&=?( short int volatile *, short int ),
    3173         ?^=?( short int volatile *, short int ),
    3174         ?|=?( short int volatile *, short int );
    3175 unsigned short int
    3176         ?*=?( unsigned short int volatile *, unsigned short int ),
    3177         ?/=?( unsigned short int volatile *, unsigned short int ),
    3178         ?+=?( unsigned short int volatile *, unsigned short int ),
    3179         ?-=?( unsigned short int volatile *, unsigned short int ),
    3180         ?%=?( unsigned short int volatile *, unsigned short int ),
    3181         ?<<=?( unsigned short int volatile *, int ),
    3182         ?>>=?( unsigned short int volatile *, int ),
    3183         ?&=?( unsigned short int volatile *, unsigned short int ),
    3184         ?^=?( unsigned short int volatile *, unsigned short int ),
    3185         ?|=?( unsigned short int volatile *, unsigned short int );
    3186 int
    3187         ?*=?( int volatile *, int ),
    3188         ?/=?( int volatile *, int ),
    3189         ?+=?( int volatile *, int ),
    3190         ?-=?( int volatile *, int ),
    3191         ?%=?( int volatile *, int ),
    3192         ?<<=?( int volatile *, int ),
    3193         ?>>=?( int volatile *, int ),
    3194         ?&=?( int volatile *, int ),
    3195         ?^=?( int volatile *, int ),
    3196         ?|=?( int volatile *, int );
    3197 unsigned int
    3198         ?*=?( unsigned int volatile *, unsigned int ),
    3199         ?/=?( unsigned int volatile *, unsigned int ),
    3200         ?+=?( unsigned int volatile *, unsigned int ),
    3201         ?-=?( unsigned int volatile *, unsigned int ),
    3202         ?%=?( unsigned int volatile *, unsigned int ),
    3203         ?<<=?( unsigned int volatile *, int ),
    3204         ?>>=?( unsigned int volatile *, int ),
    3205         ?&=?( unsigned int volatile *, unsigned int ),
    3206         ?^=?( unsigned int volatile *, unsigned int ),
    3207         ?|=?( unsigned int volatile *, unsigned int );
    3208 long int
    3209         ?*=?( long int volatile *, long int ),
    3210         ?/=?( long int volatile *, long int ),
    3211         ?+=?( long int volatile *, long int ),
    3212         ?-=?( long int volatile *, long int ),
    3213         ?%=?( long int volatile *, long int ),
    3214         ?<<=?( long int volatile *, int ),
    3215         ?>>=?( long int volatile *, int ),
    3216         ?&=?( long int volatile *, long int ),
    3217         ?^=?( long int volatile *, long int ),
    3218         ?|=?( long int volatile *, long int );
    3219 unsigned long int
    3220         ?*=?( unsigned long int volatile *, unsigned long int ),
    3221         ?/=?( unsigned long int volatile *, unsigned long int ),
    3222         ?+=?( unsigned long int volatile *, unsigned long int ),
    3223         ?-=?( unsigned long int volatile *, unsigned long int ),
    3224         ?%=?( unsigned long int volatile *, unsigned long int ),
    3225         ?<<=?( unsigned long int volatile *, int ),
    3226         ?>>=?( unsigned long int volatile *, int ),
    3227         ?&=?( unsigned long int volatile *, unsigned long int ),
    3228         ?^=?( unsigned long int volatile *, unsigned long int ),
    3229         ?|=?( unsigned long int volatile *, unsigned long int );
    3230 long long int
    3231         ?*=?( long long int volatile *, long long int ),
    3232         ?/=?( long long int volatile *, long long int ),
    3233         ?+=?( long long int volatile *, long long int ),
    3234         ?-=?( long long int volatile *, long long int ),
    3235         ?%=?( long long int volatile *, long long int ),
    3236         ?<<=?( long long int volatile *, int ),
    3237         ?>>=?( long long int volatile *, int ),
    3238         ?&=?( long long int volatile *, long long int ),
    3239         ?^=?( long long int volatile *, long long int ),
    3240         ?|=?( long long int volatile *, long long int );
    3241 unsigned long long int
    3242         ?*=?( unsigned long long int volatile *, unsigned long long int ),
    3243         ?/=?( unsigned long long int volatile *, unsigned long long int ),
    3244         ?+=?( unsigned long long int volatile *, unsigned long long int ),
    3245         ?-=?( unsigned long long int volatile *, unsigned long long int ),
    3246         ?%=?( unsigned long long int volatile *, unsigned long long int ),
    3247         ?<<=?( unsigned long long int volatile *, int ),
    3248         ?>>=?( unsigned long long int volatile *, int ),
    3249         ?&=?( unsigned long long int volatile *, unsigned long long int ),
    3250         ?^=?( unsigned long long int volatile *, unsigned long long int ),
    3251         ?|=?( unsigned long long int volatile *, unsigned long long int );
    3252 float
    3253         ?*=?( float volatile *, float ),
    3254         ?/=?( float volatile *, float ),
    3255         ?+=?( float volatile *, float ),
    3256         ?-=?( float volatile *, float );
    3257 double
    3258         ?*=?( double volatile *, double ),
    3259         ?/=?( double volatile *, double ),
    3260         ?+=?( double volatile *, double ),
    3261         ?-=?( double volatile *, double );
    3262 long double
    3263         ?*=?( long double volatile *, long double ),
    3264         ?/=?( long double volatile *, long double ),
    3265         ?+=?( long double volatile *, long double ),
    3266         ?-=?( long double volatile *, long double );
    3267 _Complex float
    3268         ?*=?( _Complex float volatile *, _Complex float ),
    3269         ?/=?( _Complex float volatile *, _Complex float ),
    3270         ?+=?( _Complex float volatile *, _Complex float ),
    3271         ?-=?( _Complex float volatile *, _Complex float );
    3272 _Complex double
    3273         ?*=?( _Complex double volatile *, _Complex double ),
    3274         ?/=?( _Complex double volatile *, _Complex double ),
    3275         ?+=?( _Complex double volatile *, _Complex double ),
    3276         ?-=?( _Complex double volatile *, _Complex double );
    3277 _Complex long double
    3278         ?*=?( _Complex long double volatile *, _Complex long double ),
    3279         ?/=?( _Complex long double volatile *, _Complex long double ),
    3280         ?+=?( _Complex long double volatile *, _Complex long double ),
    3281         ?-=?( _Complex long double volatile *, _Complex long double );
    3282 \end{lstlisting}
    3283 
    3284 For every extended integer type \lstinline$X$ there exist
    3285 % Don't use predefined: keep this out of prelude.cf.
    3286 \begin{lstlisting}
    3287 ?*=?( X volatile *, X ),
    3288 ?/=?( X volatile *, X ),
    3289 ?+=?( X volatile *, X ),
    3290 ?-=?( X volatile *, X ),
    3291 ?%=?( X volatile *, X ),
    3292 ?<<=?( X volatile *, int ),
    3293 ?>>=?( X volatile *, int ),
    3294 ?&=?( X volatile *, X ),
    3295 ?^=?( X volatile *, X ),
    3296 ?|=?( X volatile *, X );
    3297 \end{lstlisting}
    3298 
    3299 For every complete enumerated type \lstinline$E$ there exist
    3300 % Don't use predefined: keep this out of prelude.cf.
    3301 \begin{lstlisting}
    3302 ?*=?( E volatile *, E ),
    3303 ?/=?( E volatile *, E ),
    3304 ?+=?( E volatile *, E ),
    3305 ?-=?( E volatile *, E ),
    3306 ?%=?( E volatile *, E ),
    3307 ?<<=?( E volatile *, int ),
    3308 ?>>=?( E volatile *, int ),
    3309 ?&=?( E volatile *, E ),
    3310 ?^=?( E volatile *, E ),
    3311 ?|=?( E volatile *, E );
    3312 \end{lstlisting}
    3313 
    3314 
    3315 \subsection{Comma operator}
    3316 
    3317 \begin{syntax}
    3318 \lhs{expression}
    3319 \rhs \nonterm{assignment-expression}
    3320 \rhs \nonterm{expression} \lstinline$,$ \nonterm{assignment-expression}
    3321 \end{syntax}
    3322 
    3323 \semantics
    3324 In the comma expression ``\lstinline$a, b$'', the first operand is interpreted as
    3325 ``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}. The
    3326 interpretations of the expression are the interpretations of the second operand.
    3327 
    3328 
    3329 \section{Constant expressions}
    3330 
    3331 
    3332 \section{Declarations}
    3333 
    3334 \begin{syntax}
    3335 \oldlhs{declaration}
    3336 \rhs \nonterm{type-declaration}
    3337 \rhs \nonterm{spec-definition}
    3338 \end{syntax}
    3339 
    3340 \constraints
    3341 If an identifier has \Index{no linkage}, there shall be no more than one declaration of the
    3342 identifier ( in a declarator or type specifier ) with compatible types in the same scope and in the
    3343 same name space, except that:
    3344 \begin{itemize}
    3345 \item
    3346 a typedef name may be redefined to denote the same type as it currently does, provided that type is
    3347 not a variably modified type;
    3348 \item
    3349 tags may be redeclared as specified in section 6.7.2.3 of the {\c11} standard.
    3350 \end{itemize}
    3351 \begin{rationale}
    3352 This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow
    3353 overloading.
    3354 \end{rationale}
    3355 
    3356 An identifier declared by a type declaration shall not be redeclared as a parameter in a function
    3357 definition whose declarator includes an identifier list.
    3358 \begin{rationale}
    3359 This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters. This
    3360 avoids an ambiguity between old-style function declarations and new-style function prototypes:
    3361 \begin{lstlisting}
    3362 void f( Complex,        // ... 3000 characters ...
    3363 void g( Complex,        // ... 3000 characters ...
    3364 int Complex; { ... }
    3365 \end{lstlisting}
    3366 Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in the
    3367 second.
    3368 \end{rationale}
    3369 
    3370 
    3371 \setcounter{subsection}{1}
    3372 \subsection{Type specifiers}
    3373 
    3374 \begin{syntax}
    3375 \oldlhs{type-specifier}
    3376 \rhs \nonterm{forall-specifier}
    3377 \end{syntax}
    3378 
    3379 \semantics
    3380 Forall specifiers are discussed in \VRef{forall}.
    3381 
    3382 
    3383 \subsubsection{Structure and union specifiers}
    3384 
    3385 \semantics
    3386 \CFA extends the {\c11} definition of \define{anonymous structure} to include structure
    3387 specifiers with tags, and extends the {\c11} definition of \define{anonymous union} to include union
    3388 specifiers with tags.
    3389 \begin{rationale}
    3390 This extension imitates an extension in the Plan 9 C compiler \cite{Thompson90new}.
    3391 \end{rationale}
    3392 
    3393 \examples
    3394 \begin{lstlisting}
    3395 struct point {@\impl{point}@
    3396         int x, y;
    3397 };
    3398 struct color_point {@\impl{color_point}@
    3399         enum { RED, BLUE, GREEN } color;
    3400         struct point;
    3401 };
    3402 struct color_point cp;
    3403 cp.x = 0;
    3404 cp.color = RED;
    3405 
    3406 struct literal {@\impl{literal}@
    3407         enum { NUMBER, STRING } tag;
    3408         union {
    3409          double n;
    3410          char *s;
    3411         };
    3412 };
    3413 struct literal *next;
    3414 int length;
    3415 extern int strlen( const char * );
    3416 ...
    3417 if ( next->tag == STRING ) length = strlen( next->s );
    3418 \end{lstlisting}
    3419 
    3420 
    3421 \setcounter{subsubsection}{4}
    3422 \subsubsection{Forall specifiers}
    3423 \label{forall}
    3424 
    3425 \begin{syntax}
    3426 \lhs{forall-specifier}
    3427 \rhs \lstinline$forall$ \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
    3428 \end{syntax}
    3429 
    3430 \begin{comment}
    3431 \constraints
    3432 If the \nonterm{declaration-specifiers} of a declaration that contains a \nonterm{forall-specifier}
    3433 declares a structure or union tag, the types of the members of the structure or union shall not use
    3434 any of the type identifiers declared by the \nonterm{type-parameter-list}.
    3435 \begin{rationale}
    3436 This sort of declaration is illegal because the scope of the type identifiers ends at the end of the
    3437 declaration, but the scope of the structure tag does not.
    3438 \begin{lstlisting}
    3439 forall( type T ) struct Pair { T a, b; } mkPair( T, T ); // illegal
    3440 \end{lstlisting}
    3441 If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the
    3442 members' type be?
    3443 \end{rationale}
    3444 \end{comment}
    3445 
    3446 \semantics
    3447 The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type
    3448 identifiers, function and object identifiers with \Index{no linkage}.
    3449 
    3450 If, in the declaration ``\lstinline$T D$'', \lstinline$T$ contains \nonterm{forall-specifier}s and
    3451 \lstinline$D$ has the form
    3452 \begin{lstlisting}
    3453 D( @\normalsize\nonterm{parameter-type-list}@ )
    3454 \end{lstlisting}
    3455 then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred
    3456 parameter} of the function declarator if and only if it is not an inferred parameter of a function
    3457 declarator in \lstinline$D$, and it is used in the type of a parameter in the following
    3458 \nonterm{type-parameter-list} or it and an inferred parameter are used as arguments of a
    3459 \Index{specification} in one of the \nonterm{forall-specifier}s. The identifiers declared by
    3460 assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s
    3461 of that function declarator.
    3462 
    3463 \begin{comment}
    3464 \begin{rationale}
    3465 Since every inferred parameter is used by some parameter, inference can be understood as a single
    3466 bottom-up pass over the expression tree, that only needs to apply local reasoning at each node.
    3467 
    3468 If this restriction were lifted, it would be possible to write
    3469 \begin{lstlisting}
    3470 forall( type T ) T * alloc( void );@\use{alloc}@
    3471 int *p = alloc();
    3472 \end{lstlisting}
    3473 Here \lstinline$alloc()$ would receive \lstinline$int$ as an inferred argument, and return an
    3474 \lstinline$int *$. In general, if a call to \lstinline$alloc()$ is a subexpression of an expression
    3475 involving polymorphic functions and overloaded identifiers, there could be considerable distance
    3476 between the call and the subexpression that causes \lstinline$T$ to be bound.
    3477 
    3478 With the current restriction, \lstinline$alloc()$ must be given an argument that determines
    3479 \lstinline$T$:
    3480 \begin{lstlisting}
    3481 forall( type T ) T * alloc( T initial_value );@\use{alloc}@
    3482 \end{lstlisting}
    3483 \end{rationale}
    3484 \end{comment}
    3485 
    3486 If a function declarator is part of a function definition, its inferred parameters and assertion
    3487 parameters have \Index{block scope}; otherwise, identifiers declared by assertions have a
    3488 \define{declaration scope}, which terminates at the end of the \nonterm{declaration}.
    3489 
    3490 A function type that has at least one inferred parameter is a \define{polymorphic function} type.
    3491 Function types with no inferred parameters are \define{monomorphic function} types. One function
    3492 type is \define{less polymorphic} than another if it has fewer inferred parameters, or if it has the
    3493 same number of inferred parameters and fewer of its explicit parameters have types that depend on an
    3494 inferred parameter.
    3495 
    3496 The names of inferred parameters and the order of identifiers in forall specifiers are not relevant
    3497 to polymorphic function type compatibility. Let $f$ and $g$ be two polymorphic function types with
    3498 the same number of inferred parameters, and let $f_i$ and $g_i$ be the inferred parameters of $f$
    3499 and $g$ in their order of occurance in the function types' \nonterm{parameter-type-list}s. Let $f'$
    3500 be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$. Then $f$ and $g$ are
    3501 \Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if
    3502 for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same
    3503 identifier and compatible type, and vice versa.
    3504 
    3505 \examples
    3506 Consider these analogous monomorphic and polymorphic declarations.
    3507 \begin{lstlisting}
    3508 int fi( int );
    3509 forall( type T ) T fT( T );
    3510 \end{lstlisting}
    3511 \lstinline$fi()$ takes an \lstinline$int$ and returns an \lstinline$int$. \lstinline$fT()$ takes a
    3512 \lstinline$T$ and returns a \lstinline$T$, for any type \lstinline$T$.
    3513 \begin{lstlisting}
    3514 int (*pfi )( int ) = fi;
    3515 forall( type T ) T (*pfT )( T ) = fT;
    3516 \end{lstlisting}
    3517 \lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not
    3518 polymorphic, but the function it points at is.
    3519 \begin{lstlisting}
    3520 int (*fvpfi( void ))( int ) {
    3521         return pfi;
    3522 }
    3523 forall( type T ) T (*fvpfT( void ))( T ) {
    3524         return pfT;
    3525 }
    3526 \end{lstlisting}
    3527 \lstinline$fvpfi()$ and \lstinline$fvpfT()$ are functions taking no arguments and returning pointers
    3528 to functions. \lstinline$fvpfT()$ is monomorphic, but the function that its return value points
    3529 at is polymorphic.
    3530 \begin{lstlisting}
    3531 forall( type T ) int ( *fTpfi( T ) )( int );
    3532 forall( type T ) T ( *fTpfT( T ) )( T );
    3533 forall( type T, type U ) U ( *fTpfU( T ) )( U );
    3534 \end{lstlisting}
    3535 \lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function
    3536 taking an integer and returning an integer. It could return \lstinline$pfi$. \lstinline$fTpfT()$
    3537 is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning
    3538 \lstinline$T$, where \lstinline$T$ is an inferred parameter of \lstinline$fTpfT()$. For instance,
    3539 in the expression ``\lstinline$fTpfT(17)$'', \lstinline$T$ is inferred to be \lstinline$int$, and
    3540 the returned value would have type \lstinline$int ( * )( int )$. ``\lstinline$fTpfT(17)(13)$'' and
    3541 ``\lstinline$fTpfT("yes")("no")$'' are legal, but ``\lstinline$fTpfT(17)("no")$'' is illegal.
    3542 \lstinline$fTpfU()$ is polymorphic ( in type \lstinline$T$), and returns a pointer to a function that
    3543 is polymorphic ( in type \lstinline$U$). ``\lstinline$f5(17)("no")$'' is a legal expression of type
    3544 \lstinline$char *$.
    3545 \begin{lstlisting}
    3546 forall( type T, type U, type V ) U * f( T *, U, V * const );
    3547 forall( type U, type V, type W ) U * g( V *, U, W * const );
    3548 \end{lstlisting}
    3549 The functions \lstinline$f()$ and \lstinline$g()$ have compatible types. Let \(f\) and \(g\) be
    3550 their types; then \(f_1\) = \lstinline$T$, \(f_2\) = \lstinline$U$, \(f_3\) = \lstinline$V$, \(g_1\)
    3551 = \lstinline$V$, \(g_2\) = \lstinline$U$, and \(g_3\) = \lstinline$W$. Replacing every \(f_i\)
    3552 by \(g_i\) in \(f\) gives
    3553 \begin{lstlisting}
    3554 forall( type V, type U, type W ) U * f( V *, U, W * const );
    3555 \end{lstlisting}
    3556 which has a return type and parameter list that is compatible with \(g\).
    3557 \begin{rationale}
    3558 The word ``\lstinline$type$'' in a forall specifier is redundant at the moment, but I want to leave
    3559 room for inferred parameters of ordinary types in case parameterized types get added one day.
    3560 
    3561 Even without parameterized types, I might try to allow
    3562 \begin{lstlisting}
    3563 forall( int n ) int sum( int vector[n] );
    3564 \end{lstlisting}
    3565 but C currently rewrites array parameters as pointer parameters, so the effects of such a change
    3566 require more thought.
    3567 \end{rationale}
    3568 
    3569 \begin{rationale}
    3570 A polymorphic declaration must do two things: it must introduce type parameters, and it must apply
    3571 assertions to those types. Adding this to existing C declaration syntax and semantics was delicate,
    3572 and not entirely successful.
    3573 
    3574 C depends on declaration-before-use, so a forall specifier must introduce type names before they can
    3575 be used in the declaration specifiers. This could be done by making the forall specifier part of
    3576 the declaration specifiers, or by making it a new introductory clause of declarations.
    3577 
    3578 Assertions are also part of polymorphic function types, because it must be clear which functions
    3579 have access to the assertion parameters declared by the assertions. All attempts to put assertions
    3580 inside an introductory clause produced complex semantics and confusing code. Building them into the
    3581 declaration specifiers could be done by placing them in the function's parameter list, or in a
    3582 forall specifier that is a declaration specifier. Assertions are also used with type parameters of
    3583 specifications, and by type declarations. For consistency's sake it seems best to attach assertions
    3584 to the type declarations in forall specifiers, which means that forall specifiers must be
    3585 declaration specifiers.
    3586 \end{rationale}
    3587 %HERE
    3588 
    3589 
    3590 \subsection{Type qualifiers}
    3591 
    3592 \CFA defines a new type qualifier \lstinline$lvalue$\impl{lvalue}\index{lvalue}.
    3593 \begin{syntax}
    3594 \oldlhs{type-qualifier}
    3595 \rhs \lstinline$lvalue$
    3596 \end{syntax}
    3597 
    3598 \constraints
    3599 \lstinline$restrict$\index{register@{\lstinline$restrict$}} Types other than type parameters and
    3600 pointer types whose referenced type is an object type shall not be restrict-qualified.
    3601 
    3602 \semantics
    3603 An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not
    3604 establish any special semantics in that case.
    3605 
    3606 \begin{rationale}
    3607 \CFA loosens the constraint on the restrict qualifier so that restrict-qualified pointers may be
    3608 passed to polymorphic functions.
    3609 \end{rationale}
    3610 
    3611 \lstinline$lvalue$ may be used to qualify the return type of a function type. Let \lstinline$T$ be
    3612 an unqualified version of a type; then the result of calling a function with return type
    3613 \lstinline$lvalue T$ is a \Index{modifiable lvalue} of type \lstinline$T$.
    3614 \lstinline$const$\use{const} and \lstinline$volatile$\use{volatile} qualifiers may also be added to
    3615 indicate that the function result is a constant or volatile lvalue.
    3616 \begin{rationale}
    3617 The \lstinline$const$ and \lstinline$volatile$ qualifiers can only be sensibly used to qualify the
    3618 return type of a function if the \lstinline$lvalue$ qualifier is also used.
    3619 \end{rationale}
    3620 
    3621 An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue; the
    3622 result of the expression is an lvalue.
    3623 
    3624 \begin{rationale}
    3625 \lstinline$lvalue$ provides some of the functionality of {\CC}'s ``\lstinline$T&$'' ( reference to
    3626 object of type \lstinline$T$) type. Reference types have four uses in {\CC}.
    3627 \begin{itemize}
    3628 \item
    3629 They are necessary for user-defined operators that return lvalues, such as ``subscript'' and
    3630 ``dereference''.
    3631 
    3632 \item
    3633 A reference can be used to define an alias for a complicated lvalue expression, as a way of getting
    3634 some of the functionality of the Pascal \lstinline$with$ statement. The following {\CC} code gives
    3635 an example.
    3636 \begin{lstlisting}
    3637 {
    3638         char &code = long_name.some_field[i].data->code;
    3639         code = toupper( code );
    3640 }
    3641 \end{lstlisting}
    3642 This is not very useful.
    3643 
    3644 \item
    3645 A reference parameter can be used to allow a function to modify an argument without forcing the
    3646 caller to pass the address of the argument. This is most useful for user-defined assignment
    3647 operators. In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and
    3648 the two expressions
    3649 \begin{lstlisting}
    3650 a = b;
    3651 operator=( a, b );
    3652 \end{lstlisting}
    3653 are equivalent. If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first
    3654 parameter of \lstinline$operator=$ must have type ``\lstinline$T&$''. It cannot have type
    3655 \lstinline$T$, because then assignment couldn't alter the variable, and it can't have type
    3656 ``\lstinline$T *$'', because the assignment would have to be written ``\lstinline$&a = b;$''.
    3657 
    3658 In the case of user-defined operators, this could just as well be handled by using pointer types and
    3659 by changing the rewrite rules so that ``\lstinline$a = b;$'' is equivalent to
    3660 ``\lstinline$operator=(&( a), b )$''. Reference parameters of ``normal'' functions are Bad Things,
    3661 because they remove a useful property of C function calls: an argument can only be modified by a
    3662 function if it is preceded by ``\lstinline$&$''.
    3663 
    3664 \item
    3665 References to \Index{const-qualified} types can be used instead of value parameters.  Given the
    3666 {\CC} function call ``\lstinline$fiddle( a_thing )$'', where the type of \lstinline$a_thing$ is
    3667 \lstinline$Thing$, the type of \lstinline$fiddle$ could be either of
    3668 \begin{lstlisting}
    3669 void fiddle( Thing );
    3670 void fiddle( const Thing & );
    3671 \end{lstlisting}
    3672 If the second form is used, then constructors and destructors are not invoked to create a temporary
    3673 variable at the call site ( and it is bad style for the caller to make any assumptions about such
    3674 things), and within \lstinline$fiddle$ the parameter is subject to the usual problems caused by
    3675 aliases. The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too
    3676 large or their constructors or destructors are too expensive. An implementation may switch between
    3677 them without causing trouble for well-behaved clients. This leaves the implementor to define ``too
    3678 large'' and ``too expensive''.
    3679 
    3680 I propose to push this job onto the compiler by allowing it to implement
    3681 \begin{lstlisting}
    3682 void fiddle( const volatile Thing );
    3683 \end{lstlisting}
    3684 with call-by-reference. Since it knows all about the size of \lstinline$Thing$s and the parameter
    3685 passing mechanism, it should be able to come up with a better definition of ``too large'', and may
    3686 be able to make a good guess at ``too expensive''.
    3687 \end{itemize}
    3688 
    3689 In summary, since references are only really necessary for returning lvalues, I'll only provide
    3690 lvalue functions.
    3691 \end{rationale}
    3692 
    3693 
    3694 \setcounter{subsection}{8}
    3695 \subsection{Initialization}
    3696 
    3697 An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the
    3698 object being initialized. An expression used in an \nonterm{initializer-list} is treated as being
    3699 cast to the type of the aggregate member that it initializes. In either case the cast must have a
    3700 single unambiguous \Index{interpretation}.
    3701 
    3702 
    3703 \setcounter{subsection}{10}
    3704 \subsection{Specification definitions}
    3705 
    3706 \begin{syntax}
    3707 \lhs{spec-definition}
    3708 \rhs \lstinline$spec$ \nonterm{identifier}
    3709         \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
    3710         \lstinline${$ \nonterm{spec-declaration-list}\opt \lstinline$}$
    3711 \lhs{spec-declaration-list}
    3712 \rhs \nonterm{spec-declaration} \lstinline$;$
    3713 \rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} \lstinline$;$
    3714 \lhs{spec-declaration}
    3715 \rhs \nonterm{specifier-qualifier-list} \nonterm{declarator-list}
    3716 \lhs{declarator-list}
    3717 \rhs \nonterm{declarator}
    3718 \rhs \nonterm{declarator-list} \lstinline$,$ \nonterm{declarator}
    3719 \end{syntax}
    3720 \begin{rationale}
    3721 The declarations allowed in a specification are much the same as those allowed in a structure,
    3722 except that bit fields are not allowed, and \Index{incomplete type}s and function types are allowed.
    3723 \end{rationale}
    3724 
    3725 \semantics
    3726 A \define{specification definition} defines a name for a \define{specification}: a parameterized
    3727 collection of object and function declarations.
    3728 
    3729 The declarations in a specification consist of the declarations in the
    3730 \nonterm{spec-declaration-list} and declarations produced by any assertions in the
    3731 \nonterm{spec-parameter-list}. If the collection contains two declarations that declare the same
    3732 identifier and have compatible types, they are combined into one declaration with the composite type
    3733 constructed from the two types.
    3734 
    3735 
    3736 \subsubsection{Assertions}
    3737 
    3738 \begin{syntax}
    3739 \lhs{assertion-list}
    3740 \rhs \nonterm{assertion}
    3741 \rhs \nonterm{assertion-list} \nonterm{assertion}
    3742 \lhs{assertion}
    3743 \rhs \lstinline$|$ \nonterm{identifier} \lstinline$($ \nonterm{type-name-list} \lstinline$)$
    3744 \rhs \lstinline$|$ \nonterm{spec-declaration}
    3745 \lhs{type-name-list}
    3746 \rhs \nonterm{type-name}
    3747 \rhs \nonterm{type-name-list} \lstinline$,$ \nonterm{type-name}
    3748 \end{syntax}
    3749 
    3750 \constraints
    3751 The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name
    3752 of a specification. The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for
    3753 each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}. If the
    3754 \nonterm{type-parameter} uses type-class \lstinline$type$\use{type}, the argument shall be the type
    3755 name of an \Index{object type}; if it uses \lstinline$dtype$, the argument shall be the type name of
    3756 an object type or an \Index{incomplete type}; and if it uses \lstinline$ftype$, the argument shall
    3757 be the type name of a \Index{function type}.
    3758 
    3759 \semantics
    3760 An \define{assertion} is a declaration of a collection of objects and functions, called
    3761 \define{assertion parameters}.
    3762 
    3763 The assertion parameters produced by an assertion that applies the name of a specification to type
    3764 arguments are found by taking the declarations specified in the specification and treating each of
    3765 the specification's parameters as a synonym for the corresponding \nonterm{type-name} argument.
    3766 
    3767 The collection of assertion parameters produced by the \nonterm{assertion-list} are found by
    3768 combining the declarations produced by each assertion. If the collection contains two declarations
    3769 that declare the same identifier and have compatible types, they are combined into one declaration
    3770 with the \Index{composite type} constructed from the two types.
    3771 
    3772 \examples
    3773 \begin{lstlisting}
    3774 forall( type T | T ?*?( T, T ))@\use{?*?}@
    3775 T square( T val ) {@\impl{square}@
    3776         return val + val;
    3777 }
    3778 
    3779 context summable( type T ) {@\impl{summable}@
    3780         T ?+=?( T *, T );@\use{?+=?}@
    3781         const T 0;@\use{0}@
    3782 };
    3783 context list_of( type List, type Element ) {@\impl{list_of}@
    3784         Element car( List );
    3785         List cdr( List );
    3786         List cons( Element, List );
    3787         List nil;
    3788         int is_nil( List );
    3789 };
    3790 context sum_list( type List, type Element | summable( Element ) | list_of( List, Element ) ) {};
    3791 \end{lstlisting}
    3792 \lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added
    3793 up. The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion
    3794 parameters
    3795 \begin{lstlisting}
    3796 int ?+=?( int *, int );
    3797 const int 0;
    3798 int car( i_list );
    3799 i_list cdr( i_list );
    3800 i_list cons( int, i_list );
    3801 i_list nil;
    3802 int is_nil;
    3803 \end{lstlisting}
    3804 
    3805 
    3806 \subsection{Type declarations}
    3807 
    3808 \begin{syntax}
    3809 \lhs{type-parameter-list}
    3810 \rhs \nonterm{type-parameter}
    3811 \rhs \nonterm{type-parameter-list} \lstinline$,$ \nonterm{type-parameter}
    3812 \lhs{type-parameter}
    3813 \rhs \nonterm{type-class} \nonterm{identifier} \nonterm{assertion-list}\opt
    3814 \lhs{type-class}
    3815 \rhs \lstinline$type$
    3816 \rhs \lstinline$dtype$
    3817 \rhs \lstinline$ftype$
    3818 \lhs{type-declaration}
    3819 \rhs \nonterm{storage-class-specifier}\opt \lstinline$type$ \nonterm{type-declarator-list} \verb|;|
    3820 \lhs{type-declarator-list}
    3821 \rhs \nonterm{type-declarator}
    3822 \rhs \nonterm{type-declarator-list} \lstinline$,$ \nonterm{type-declarator}
    3823 \lhs{type-declarator}
    3824 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt \lstinline$=$ \nonterm{type-name}
    3825 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt
    3826 \end{syntax}
    3827 
    3828 \constraints
    3829 If a type declaration has block scope, and the declared identifier has external or internal linkage,
    3830 the declaration shall have no initializer for the identifier.
    3831 
    3832 \semantics
    3833 A \nonterm{type-parameter} or a \nonterm{type-declarator} declares an identifier to be a \Index{type
    3834 name} for a type incompatible with all other types.
    3835 
    3836 An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}. Identifiers declared
    3837 with type-class \lstinline$type$\use{type} are \Index{object type}s; those declared with type-class
    3838 \lstinline$dtype$\use{dtype} are \Index{incomplete type}s; and those declared with type-class
    3839 \lstinline$ftype$\use{ftype} are \Index{function type}s. The identifier has \Index{block scope} that
    3840 terminates at the end of the \nonterm{spec-declaration-list} or polymorphic function that contains
    3841 the \nonterm{type-parameter}.
    3842 
    3843 A \nonterm{type-declarator} with an \Index{initializer} is a \define{type definition}.  The declared
    3844 identifier is an \Index{incomplete type} within the initializer, and an \Index{object type} after
    3845 the end of the initializer. The type in the initializer is called the \define{implementation
    3846   type}. Within the scope of the declaration, \Index{implicit conversion}s can be performed between
    3847 the defined type and the implementation type, and between pointers to the defined type and pointers
    3848 to the implementation type.
    3849 
    3850 A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or
    3851 with storage-class specifier \lstinline$static$\use{static} defines an \Index{incomplete type}. If a
    3852 \Index{translation unit} or \Index{block} contains one or more such declarations for an identifier,
    3853 it must contain exactly one definition of the identifier ( but not in an enclosed block, which would
    3854 define a new type known only within that block).
    3855 \begin{rationale}
    3856 Incomplete type declarations allow compact mutually-recursive types.
    3857 \begin{lstlisting}
    3858 type t1; // Incomplete type declaration.
    3859 type t2 = struct { t1 * p; ... };
    3860 type t1 = struct { t2 * p; ... };
    3861 \end{lstlisting}
    3862 Without them, mutual recursion could be handled by declaring mutually recursive structures, then
    3863 initializing the types to those structures.
    3864 \begin{lstlisting}
    3865 struct s1;
    3866 type t2 = struct s2 { struct s1 * p; ... };
    3867 type t1 = struct s1 { struct s2 * p; ... };
    3868 \end{lstlisting}
    3869 This introduces extra names, and may force the programmer to cast between the types and their
    3870 implementations.
    3871 \end{rationale}
    3872 
    3873 A type declaration without an initializer and with \Index{storage-class specifier}
    3874 \lstinline$extern$\use{extern} is an \define{opaque type declaration}. Opaque types are
    3875 \Index{object type}s. An opaque type is not a \nonterm{constant-expression}; neither is a structure
    3876 or union that has a member whose type is not a \nonterm{constant-expression}.  Every other
    3877 \Index{object type} is a \nonterm{constant-expression}. Objects with static storage duration shall
    3878 be declared with a type that is a \nonterm{constant-expression}.
    3879 \begin{rationale}
    3880 Type declarations can declare identifiers with external linkage, whereas typedef declarations
    3881 declare identifiers that only exist within a translation unit. These opaque types can be used in
    3882 declarations, but the implementation of the type is not visible.
    3883 
    3884 Static objects can not have opaque types because space for them would have to be allocated at
    3885 program start-up. This is a deficiency\index{deficiencies!static opaque objects}, but I don't want
    3886 to deal with ``module initialization'' code just now.
    3887 \end{rationale}
    3888 
    3889 An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a
    3890 value of \Index{type-class} \lstinline$dtype$. An object type\index{object types} which is not a
    3891 qualified version of a type is a value of type-classes \lstinline$type$ and \lstinline$dtype$. A
    3892 \Index{function type} is a value of type-class \lstinline$ftype$.
    3893 \begin{rationale}
    3894 Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which
    3895 omits the identifier being declared.
    3896 
    3897 Object types are precisely the types that can be instantiated. Type qualifiers are not included in
    3898 type values because the compiler needs the information they provide at compile time to detect
    3899 illegal statements or to produce efficient machine instructions. For instance, the code that a
    3900 compiler must generate to manipulate an object that has volatile-qualified type may be different
    3901 from the code to manipulate an ordinary object.
    3902 
    3903 Type qualifiers are a weak point of C's type system. Consider the standard library function
    3904 \lstinline$strchr()$ which, given a string and a character, returns a pointer to the first
    3905 occurrence of the character in the string.
    3906 \begin{lstlisting}
    3907 char *strchr( const char *s, int c ) {@\impl{strchr}@
    3908         char real_c = c; // done because c was declared as int.
    3909         for ( ; *s != real_c; s++ )
    3910          if ( *s == '\0' ) return NULL;
    3911         return ( char * )s;
    3912 }
    3913 \end{lstlisting}
    3914 The parameter \lstinline$s$ must be \lstinline$const char *$, because \lstinline$strchr()$ might be
    3915 used to search a constant string, but the return type must be \lstinline$char *$, because the result
    3916 might be used to modify a non-constant string. Hence the body must perform a cast, and ( even worse)
    3917 \lstinline$strchr()$ provides a type-safe way to attempt to modify constant strings. What is needed
    3918 is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has
    3919 exactly the same qualifiers. Polymorphic functions do not provide a fix for this
    3920 deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of
    3921 type values. Instead, overloading can be used to define \lstinline$strchr()$ for each combination
    3922 of qualifiers.
    3923 \end{rationale}
    3924 
    3925 \begin{rationale}
    3926 Since \Index{incomplete type}s are not type values, they can not be used as the initializer in a
    3927 type declaration, or as the type of a structure or union member. This prevents the declaration of
    3928 types that contain each other.
    3929 \begin{lstlisting}
    3930 type t1;
    3931 type t2 = t1; // illegal: incomplete type t1.
    3932 type t1 = t2;
    3933 \end{lstlisting}
    3934 
    3935 The initializer in a file-scope declaration must be a constant expression. This means type
    3936 declarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque
    3937  types}.
    3938 \begin{lstlisting}
    3939 extern type Huge; // extended-precision integer type.
    3940 type Rational = struct {
    3941         Huge numerator, denominator;    // illegal
    3942 };
    3943 struct Pair {
    3944         Huge first, second;                             // legal
    3945 };
    3946 \end{lstlisting}
    3947 Without this restriction, \CFA might require ``module initialization'' code ( since
    3948 \lstinline$Rational$ has external linkage, it must be created before any other translation unit
    3949 instantiates it), and would force an ordering on the initialization of the translation unit that
    3950 defines \lstinline$Huge$ and the translation that declares \lstinline$Rational$.
    3951 
    3952 A benefit of the restriction is that it prevents the declaration in separate translation units of
    3953 types that contain each other, which would be hard to prevent otherwise.
    3954 \begin{lstlisting}
    3955 //  File a.c:
    3956         extern type t1;
    3957         type t2 = struct { t1 f1; ... } // illegal
    3958 //  File b.c:
    3959         extern type t2;
    3960         type t1 = struct { t2 f2; ... } // illegal
    3961 \end{lstlisting}
    3962 \end{rationale}
    3963 
    3964 \begin{rationale}
    3965 Since a \nonterm{type-declaration} is a \nonterm{declaration} and not a
    3966 \nonterm{struct-declaration}, type declarations can not be structure members. The form of
    3967 \nonterm{type-declaration} forbids arrays of, pointers to, and functions returning \lstinline$type$.
    3968 Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued
    3969 expressions. It also side-steps the problem of type-valued expressions producing different values
    3970 in different declarations.
    3971 
    3972 Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit
    3973 type parameters. This may be too restrictive, but it attempts to make compilation simpler. Recall
    3974 that when traditional C scanners read in an identifier, they look it up in the symbol table to
    3975 determine whether or not it is a typedef name, and return a ``type'' or ``identifier'' token
    3976 depending on what they find. A type parameter would add a type name to the current scope. The
    3977 scope manipulations involved in parsing the declaration of a function that takes function pointer
    3978 parameters and returns a function pointer may just be too complicated.
    3979 
    3980 Explicit type parameters don't seem to be very useful, anyway, because their scope would not include
    3981 the return type of the function. Consider the following attempt to define a type-safe memory
    3982 allocation function.
    3983 \begin{lstlisting}
    3984 #include <stdlib.h>
    3985 T * new( type T ) { return ( T * )malloc( sizeof( T) ); };
    3986 @\ldots@
    3987 int * ip = new( int );
    3988 \end{lstlisting}
    3989 This looks sensible, but \CFA's declaration-before-use rules mean that ``\lstinline$T$'' in the
    3990 function body refers to the parameter, but the ``\lstinline$T$'' in the return type refers to the
    3991 meaning of \lstinline$T$ in the scope that contains \lstinline$new$; it could be undefined, or a
    3992 type name, or a function or variable name. Nothing good can result from such a situation.
    3993 \end{rationale}
    3994 
    3995 \examples
    3996 Since type declarations create new types, instances of types are always passed by value.
    3997 \begin{lstlisting}
    3998 type A1 = int[2];
    3999 void f1( A1 a ) { a[0] = 0; };
    4000 typedef int A2[2];
    4001 void f2( A2 a ) { a[0] = 0; };
    4002 A1 v1;
    4003 A2 v2;
    4004 f1( v1 );
    4005 f2( v2 );
    4006 \end{lstlisting}
    4007 \lstinline$V1$ is passed by value, so \lstinline$f1()$'s assignment to \lstinline$a[0]$ does not
    4008 modify v1.  \lstinline$V2$ is converted to a pointer, so \lstinline$f2()$ modifies
    4009 \lstinline$v2[0]$.
    4010 
    4011 A translation unit containing the declarations
    4012 \begin{lstlisting}
    4013 extern type Complex;@\use{Complex}@ // opaque type declaration.
    4014 extern float abs( Complex );@\use{abs}@
    4015 \end{lstlisting}
    4016 can contain declarations of complex numbers, which can be passed to \lstinline$abs$. Some other
    4017 translation unit must implement \lstinline$Complex$ and \lstinline$abs$. That unit might contain
    4018 the declarations
    4019 \begin{lstlisting}
    4020 type Complex = struct { float re, im; };@\impl{Complex}@
    4021 Complex cplx_i = { 0.0, 1.0 };@\impl{cplx_i}@
    4022 float abs( Complex c ) {@\impl{abs( Complex )}@
    4023         return sqrt( c.re * c.re + c.im * c.im );
    4024 }
    4025 \end{lstlisting}
    4026 Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can
    4027 be retrieved.
    4028 
    4029 \begin{lstlisting}
    4030 type Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight.
    4031 Time_of_day ?+?( Time_of_day t1, int seconds ) {@\impl{?+?}@
    4032         return (( int)t1 + seconds ) % 86400;
    4033 }
    4034 \end{lstlisting}
    4035 \lstinline$t1$ must be cast to its implementation type to prevent infinite recursion.
    4036 
    4037 \begin{rationale}
    4038 Within the scope of a type definition, an instance of the type can be viewed as having that type or
    4039 as having the implementation type. In the \lstinline$Time_of_day$ example, the difference is
    4040 important. Different languages have treated the distinction between the abstraction and the
    4041 implementation in different ways.
    4042 \begin{itemize}
    4043 \item
    4044 Inside a Clu cluster \cite{clu}, the declaration of an instance states which view applies. Two
    4045 primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views.
    4046 \item
    4047 The Simula class \cite{Simula87} is essentially a record type. Since the only operations on a
    4048 record are member selection and assignment, which can not be overloaded, there is never any
    4049 ambiguity as to whether the abstraction or the implementation view is being used. In {\CC}
    4050 \cite{c++}, operations on class instances include assignment and ``\lstinline$&$'', which can be
    4051 overloaded. A ``scope resolution'' operator can be used inside the class to specify whether the
    4052 abstract or implementation version of the operation should be used.
    4053 \item
    4054 An Ada derived type definition \cite{ada} creates a new type from an old type, and also implicitly
    4055 declares derived subprograms that correspond to the existing subprograms that use the old type as a
    4056 parameter type or result type. The derived subprograms are clones of the existing subprograms with
    4057 the old type replaced by the derived type. Literals and aggregates of the old type are also cloned.
    4058 In other words, the abstract view provides exactly the same operations as the implementation view.
    4059 This allows the abstract view to be used in all cases.
    4060 
    4061 The derived subprograms can be replaced by programmer-specified subprograms. This is an exception
    4062 to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope. In this
    4063 case, explicit conversions between the derived type and the old type can be used.
    4064 \end{itemize}
    4065 \CFA's rules are like Clu's, except that implicit conversions and
    4066 conversion costs allow it to do away with most uses of \lstinline$up$ and \lstinline$down$.
    4067 \end{rationale}
    4068 
    4069 
    4070 \subsubsection{Default functions and objects}
    4071 
    4072 A declaration\index{type declaration} of a type identifier \lstinline$T$ with type-class
    4073 \lstinline$type$ implicitly declares a \define{default assignment} function
    4074 \lstinline$T ?=?( T *, T )$\use{?=?}, with the same \Index{scope} and \Index{linkage} as the
    4075 identifier \lstinline$T$.
    4076 \begin{rationale}
    4077 Assignment is central to C's imperative programming style, and every existing C object type has
    4078 assignment defined for it ( except for array types, which are treated as pointer types for purposes
    4079 of assignment). Without this rule, nearly every inferred type parameter would need an accompanying
    4080 assignment assertion parameter. If a type parameter should not have an assignment operation,
    4081 \lstinline$dtype$ should be used. If a type should not have assignment defined, the user can define
    4082 an assignment function that causes a run-time error, or provide an external declaration but no
    4083 definition and thus cause a link-time error.
    4084 \end{rationale}
    4085 
    4086 A definition\index{type definition} of a type identifier \lstinline$T$ with \Index{implementation
    4087 type} \lstinline$I$ and type-class \lstinline$type$ implicitly defines a default assignment
    4088 function. A definition\index{type definition} of a type identifier \lstinline$T$ with implementation
    4089 type \lstinline$I$ and an assertion list implicitly defines \define{default function}s and
    4090 \define{default object}s as declared by the assertion declarations. The default objects and
    4091 functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$. Their
    4092 values are determined as follows:
    4093 \begin{itemize}
    4094 \item
    4095 If at the definition of \lstinline$T$ there is visible a declaration of an object with the same name
    4096 as the default object, and if the type of that object with all occurrence of \lstinline$I$ replaced
    4097 by \lstinline$T$ is compatible with the type of the default object, then the default object is
    4098 initialized with that object. Otherwise the scope of the declaration of \lstinline$T$ must contain
    4099 a definition of the default object.
    4100 
    4101 \item
    4102 If at the definition of \lstinline$T$ there is visible a declaration of a function with the same
    4103 name as the default function, and if the type of that function with all occurrence of \lstinline$I$
    4104 replaced by \lstinline$T$ is compatible with the type of the default function, then the default
    4105 function calls that function after converting its arguments and returns the converted result.
    4106 
    4107 Otherwise, if \lstinline$I$ contains exactly one anonymous member\index{anonymous member} such that
    4108 at the definition of \lstinline$T$ there is visible a declaration of a function with the same name
    4109 as the default function, and the type of that function with all occurrences of the anonymous
    4110 member's type in its parameter list replaced by \lstinline$T$ is compatible with the type of the
    4111 default function, then the default function calls that function after converting its arguments and
    4112 returns the result.
    4113 
    4114 Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default
    4115 function.
    4116 \end{itemize}
    4117 \begin{rationale}
    4118 Note that a pointer to a default function will not compare as equal to a pointer to the inherited
    4119 function.
    4120 \end{rationale}
    4121 
    4122 A function or object with the same type and name as a default function or object that is declared
    4123 within the scope of the definition of \lstinline$T$ replaces the default function or object.
    4124 
    4125 \examples
    4126 \begin{lstlisting}
    4127 context s( type T ) {
    4128         T a, b;
    4129 }
    4130 struct impl { int left, right; } a = { 0, 0 };
    4131 type Pair | s( Pair ) = struct impl;
    4132 Pair b = { 1, 1 };
    4133 \end{lstlisting}
    4134 The definition of \lstinline$Pair$ implicitly defines two objects \lstinline$a$ and \lstinline$b$.
    4135 \lstinline$Pair a$ inherits its value from the \lstinline$struct impl a$. The definition of
    4136 \lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a value
    4137 from.
    4138 \begin{lstlisting}
    4139 context ss( type T ) {
    4140         T clone( T );
    4141         void munge( T * );
    4142 }
    4143 type Whatsit | ss( Whatsit );@\use{Whatsit}@
    4144 type Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@
    4145         Whatsit; // anonymous member
    4146         int extra;
    4147 };
    4148 Doodad clone( Doodad ) { ... }
    4149 \end{lstlisting}
    4150 The definition of \lstinline$Doodad$ implicitly defines three functions:
    4151 \begin{lstlisting}
    4152 Doodad ?=?( Doodad *, Doodad );
    4153 Doodad clone( Doodad );
    4154 void munge( Doodad * );
    4155 \end{lstlisting}
    4156 The assignment function inherits \lstinline$struct doodad$'s assignment function because the types
    4157 match when \lstinline$struct doodad$ is replaced by \lstinline$Doodad$ throughout.
    4158 \lstinline$munge()$ inherits \lstinline$Whatsit$'s \lstinline$munge()$ because the types match when
    4159 \lstinline$Whatsit$ is replaced by \lstinline$Doodad$ in the parameter list. \lstinline$clone()$
    4160 does \emph{not} inherit \lstinline$Whatsit$'s \lstinline$clone()$: replacement in the parameter
    4161 list yields ``\lstinline$Whatsit clone( Doodad )$'', which is not compatible with
    4162 \lstinline$Doodad$'s \lstinline$clone()$'s type. Hence the definition of
    4163 ``\lstinline$Doodad clone( Doodad )$'' is necessary.
    4164 
    4165 Default functions and objects are subject to the normal scope rules.
    4166 \begin{lstlisting}
    4167 type T = @\ldots@;
    4168 T a_T = @\ldots@;               // Default assignment used.
    4169 T ?=?( T *, T );
    4170 T a_T = @\ldots@;               // Programmer-defined assignment called.
    4171 \end{lstlisting}
    4172 \begin{rationale}
    4173 A compiler warning would be helpful in this situation.
    4174 \end{rationale}
    4175 
    4176 \begin{rationale}
    4177 The \emph{class} construct of object-oriented programming languages performs three independent
    4178 functions. It \emph{encapsulates} a data structure; it defines a \emph{subtype} relationship, whereby
    4179 instances of one class may be used in contexts that require instances of another; and it allows one
    4180 class to \emph{inherit} the implementation of another.
    4181 
    4182 In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided
    4183 by specifications and assertions. Inheritance is provided by default functions and objects.
    4184 \end{rationale}
    4185 
    4186 
    4187 \section{Statements and blocks}
    4188 
    4189 \begin{syntax}
    4190 \oldlhs{statement}
    4191 \rhs \nonterm{exception-statement}
    4192 \end{syntax}
    4193 
    4194 Many statements contain expressions, which may have more than one interpretation. The following
    4195 sections describe how the \CFA translator selects an interpretation. In all cases the result of the
    4196 selection shall be a single unambiguous \Index{interpretation}.
    4197 
    4198 
    4199 \subsection{Labeled statements}
    4200 
    4201 \begin{syntax}
    4202 \oldlhs{labeled-statement}
    4203 \rhs \lstinline$case$ \nonterm{case-value-list} : \nonterm{statement}
    4204 \lhs{case-value-list}
    4205 \rhs \nonterm{case-value}
    4206 \rhs \nonterm{case-value-list} \lstinline$,$ \nonterm{case-value}
    4207 \lhs{case-value}
    4208 \rhs \nonterm{constant-expression}
    4209 \rhs \nonterm{subrange}
    4210 \lhs{subrange}
    4211 \rhs \nonterm{constant-expression} \lstinline$~$ \nonterm{constant-expression}
    4212 \end{syntax}
    4213 
    4214 The following have identical meaning:
    4215 \begin{lstlisting}
    4216 case 1:  case 2:  case 3:  case 4:  case 5:
    4217 case 1, 2, 3, 4, 5:
    4218 case 1~5:
    4219 \end{lstlisting}
    4220 Multiple subranges are allowed:
    4221 \begin{lstlisting}
    4222 case 1~4, 9~14, 27~32:
    4223 \end{lstlisting}
    4224 The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$ and \lstinline$choose$ statements, precluding Duff's device.
    4225 
    4226 
    4227 \subsection{Expression and null statements}
    4228 
    4229 The expression in an expression statement is treated as being cast to \lstinline$void$.
    4230 
    4231 
    4232 \subsection{Selection statements}
    4233 
    4234 \begin{syntax}
    4235 \oldlhs{selection-statement}
    4236 \rhs \lstinline$choose$ \lstinline$($ \nonterm{expression} \lstinline$)$ \nonterm{statement}
    4237 \end{syntax}
    4238 
    4239 The controlling expression \lstinline$E$ in the \lstinline$switch$ and \lstinline$choose$ statement:
    4240 \begin{lstlisting}
    4241 switch ( E ) ...
    4242 choose ( E ) ...
    4243 \end{lstlisting}
    4244 may have more than one interpretation, but it shall have only one interpretation with an integral type.
    4245 An \Index{integer promotion} is performed on the expression if necessary.
    4246 The constant expressions in \lstinline$case$ statements with the switch are converted to the promoted type.
    4247 
    4248 
    4249 \setcounter{subsubsection}{3}
    4250 \subsubsection{The \lstinline$choose$ statement}
    4251 
    4252 The \lstinline$choose$ statement is the same as the \lstinline$switch$ statement except control transfers to the end of the \lstinline$choose$ statement at a \lstinline$case$ or \lstinline$default$ labeled statement.
    4253 The \lstinline$fallthru$ statement is used to fall through to the next \lstinline$case$ or \lstinline$default$ labeled statement.
    4254 The following have identical meaning:
    4255 \begin{flushleft}
    4256 \begin{tabular}{@{\hspace{2em}}l@{\hspace{2em}}l@{}}
    4257 \begin{lstlisting}
    4258 switch (...) {
    4259   case 1: ... ; break;
    4260   case 2: ... ; break;
    4261   case 3: ... ; // fall through
    4262   case 4: ... ; // fall through
    4263   default: ... break;
    4264 }
    4265 \end{lstlisting}
    4266 &
    4267 \begin{lstlisting}
    4268 choose (...) {
    4269   case 1: ... ; // exit
    4270   case 2: ... ; // exit
    4271   case 3: ... ; fallthru;
    4272   case 4: ... ; fallthru;
    4273   default: ... ; // exit
    4274 }
    4275 \end{lstlisting}
    4276 \end{tabular}
    4277 \end{flushleft}
    4278 The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with the \lstinline$switch$ statement.
    4279 
    4280 
    4281 \subsection{Iteration statements}
    4282 
    4283 The controlling expression \lstinline$E$ in the loops
    4284 \begin{lstlisting}
    4285 if ( E ) ...
    4286 while ( E ) ...
    4287 do ... while ( E );
    4288 \end{lstlisting}
    4289 is treated as ``\lstinline$( int )((E)!=0)$''.
    4290 
    4291 The statement
    4292 \begin{lstlisting}
    4293 for ( a; b; c ) @\ldots@
    4294 \end{lstlisting}
    4295 is treated as
    4296 \begin{lstlisting}
    4297 for ( ( void )( a ); ( int )(( b )!=0); ( void )( c ) ) ...
    4298 \end{lstlisting}
    4299 
    4300 
    4301 \subsection{Jump statements}
    4302 
    4303 \begin{syntax}
    4304 \oldlhs{jump-statement}
    4305 \rhs \lstinline$continue$ \nonterm{identifier}\opt
    4306 \rhs \lstinline$break$ \nonterm{identifier}\opt
    4307 \rhs \ldots
    4308 \rhs \lstinline$throw$ \nonterm{assignment-expression}\opt
    4309 \rhs \lstinline$throwResume$ \nonterm{assignment-expression}\opt \nonterm{at-expression}\opt
    4310 \lhs{at-expression} \lstinline$_At$ \nonterm{assignment-expression}
    4311 \end{syntax}
    4312 
    4313 Labeled \lstinline$continue$ and \lstinline$break$ allow useful but restricted control-flow that reduces the need for the \lstinline$goto$ statement for exiting multiple nested control-structures.
    4314 \begin{lstlisting}
    4315 L1: {                                                   // compound
    4316   L2: switch ( ... ) {                  // switch
    4317           case ...:
    4318           L3: for ( ;; ) {                      // outer for
    4319                 L4: for ( ;; ) {                // inner for
    4320                                 continue L1;    // error: not enclosing iteration
    4321                                 continue L2;    // error: not enclosing iteration
    4322                                 continue L3;    // next iteration of outer for
    4323                                 continue L4;    // next iteration of inner for
    4324                                 break L1;               // exit compound
    4325                                 break L2;               // exit switch
    4326                                 break L3;               // exit outer for
    4327                                 break L4;               // exit inner for
    4328                         } // for
    4329                 } // for
    4330                 break;                                  // exit switch
    4331           default:
    4332                 break L1;                               // exit compound
    4333         } // switch
    4334         ...
    4335 } // compound
    4336 \end{lstlisting}
    4337 
    4338 
    4339 \setcounter{subsubsection}{1}
    4340 \subsubsection{The \lstinline$continue$ statement}
    4341 
    4342 The identifier in a \lstinline$continue$ statement shall name a label located on an enclosing iteration statement.
    4343 
    4344 
    4345 \subsubsection{The \lstinline$break$ statement}
    4346 
    4347 The identifier in a \lstinline$break$ statement shall name a label located on an enclosing compound, selection or iteration statement.
    4348 
    4349 
    4350 \subsubsection{The \lstinline$return$ statement}
    4351 
    4352 An expression in a \lstinline$return$ statement is treated as being cast to the result type of the function.
    4353 
    4354 
    4355 \subsubsection{The \lstinline$throw$ statement}
    4356 
    4357 When an exception is raised, \Index{propagation} directs control from a raise in the source execution to a handler in the faulting execution.
    4358 
    4359 
    4360 \subsubsection{The \lstinline$throwResume$ statement}
    4361 
    4362 
    4363 \subsection{Exception statements}
    4364 
    4365 \begin{syntax}
    4366 \lhs{exception-statement}
    4367 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list}
    4368 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{finally-clause}
    4369 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list} \nonterm{finally-clause}
    4370 \lhs{handler-list}
    4371 \rhs \nonterm{handler-clause}
    4372 \rhs \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
    4373 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
    4374 \rhs \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
    4375 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
    4376 \lhs{handler-clause}
    4377 \rhs \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
    4378 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
    4379 \rhs \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
    4380 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
    4381 \lhs{finally-clause}
    4382 \rhs \lstinline$finally$ \nonterm{compound-statement}
    4383 \lhs{exception-declaration}
    4384 \rhs \nonterm{type-specifier}
    4385 \rhs \nonterm{type-specifier} \nonterm{declarator}
    4386 \rhs \nonterm{type-specifier} \nonterm{abstract-declarator}
    4387 \rhs \nonterm{new-abstract-declarator-tuple} \nonterm{identifier}
    4388 \rhs \nonterm{new-abstract-declarator-tuple}
    4389 \lhs{asynchronous-statement}
    4390 \rhs \lstinline$enable$ \nonterm{identifier-list} \nonterm{compound-statement}
    4391 \rhs \lstinline$disable$ \nonterm{identifier-list} \nonterm{compound-statement}
    4392 \end{syntax}
    4393 
    4394 \Index{Exception statement}s allow a dynamic call to a handler for \Index{recovery} (\Index{termination}) or \Index{correction} (\Index{resumption}) of an \Index{abnormal event}.
    4395 
    4396 
    4397 \subsubsection{The \lstinline$try$ statement}
    4398 
    4399 The \lstinline$try$ statement is a block with associated handlers, called a \Index{guarded block};
    4400 all other blocks are \Index{unguarded block}s.
    4401 A \lstinline$goto$, \lstinline$break$, \lstinline$return$, or \lstinline$continue$ statement can be used to transfer control out of a try block or handler, but not into one.
    4402 
    4403 
    4404 \subsubsection{The \lstinline$enable$/\lstinline$disable$ statements}
    4405 
    4406 The \lstinline$enable$/\lstinline$disable$ statements toggle delivery of \Index{asynchronous exception}s.
    4407 
    4408 
    4409 \setcounter{section}{9}
    4410 \section{Preprocessing directives}
    4411 
    4412 
    4413 \setcounter{subsection}{7}
    4414 \subsection{Predefined macro names}
    4415 
    4416 The implementation shall define the macro names \lstinline$__LINE__$, \lstinline$__FILE__$,
    4417 \lstinline$__DATE__$, and \lstinline$__TIME__$, as in the {\c11} standard. It shall not define the
    4418 macro name \lstinline$__STDC__$.
    4419 
    4420 In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the
    4421 decimal constant 1.
    4422 
    4423 
    4424 \appendix
    4425 
    4426 
    4427 \chapter{Examples}
    4428 
    4429 
    4430 \section{C types}
    4431 This section gives example specifications for some groups of types that are important in the C
    4432 language, in terms of the predefined operations that can be applied to those types.
    4433 
    4434 
    4435 \subsection{Scalar, arithmetic, and integral types}
    4436 
    4437 The pointer, integral, and floating-point types are all \define{scalar types}. All of these types
    4438 can be logically negated and compared. The assertion ``\lstinline$scalar( Complex )$'' should be read
    4439 as ``type \lstinline$Complex$ is scalar''.
    4440 \begin{lstlisting}
    4441 context scalar( type T ) {@\impl{scalar}@
    4442         int !?( T );
    4443         int ?<?( T, T ), ?<=?( T, T ), ?==?( T, T ), ?>=?( T, T ), ?>?( T, T ), ?!=?( T, T );
    4444 };
    4445 \end{lstlisting}
    4446 
    4447 The integral and floating-point types are \define{arithmetic types}, which support the basic
    4448 arithmetic operators. The use of an assertion in the \nonterm{spec-parameter-list} declares that,
    4449 in order to be arithmetic, a type must also be scalar ( and hence that scalar operations are
    4450 available ). This is equivalent to inheritance of specifications.
    4451 \begin{lstlisting}
    4452 context arithmetic( type T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@
    4453         T +?( T ), -?( T );
    4454         T ?*?( T, T ), ?/?( T, T ), ?+?( T, T ), ?-?( T, T );
    4455 };
    4456 \end{lstlisting}
    4457 
    4458 The various flavors of \lstinline$char$ and \lstinline$int$ and the enumerated types make up the
    4459 \define{integral types}.
    4460 \begin{lstlisting}
    4461 context integral( type T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@
    4462         T ~?( T );
    4463         T ?&?( T, T ), ?|?( T, T ), ?^?( T, T );
    4464         T ?%?( T, T );
    4465         T ?<<?( T, T ), ?>>?( T, T );
    4466 };
    4467 \end{lstlisting}
    4468 
    4469 
    4470 \subsection{Modifiable types}
    4471 \index{modifiable lvalue}
    4472 
    4473 The only operation that can be applied to all modifiable lvalues is simple assignment.
    4474 \begin{lstlisting}
    4475 context m_lvalue( type T ) {@\impl{m_lvalue}@
    4476         T ?=?( T *, T );
    4477 };
    4478 \end{lstlisting}
    4479 
    4480 Modifiable scalar lvalues are scalars and are modifiable lvalues, and assertions in the
    4481 \nonterm{spec-parameter-list} reflect those relationships. This is equivalent to multiple
    4482 inheritance of specifications. Scalars can also be incremented and decremented.
    4483 \begin{lstlisting}
    4484 context m_l_scalar( type T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@
    4485         T ?++( T * ), ?--( T * );@\use{scalar}@@\use{m_lvalue}@
    4486         T ++?( T * ), --?( T * );
    4487 };
    4488 \end{lstlisting}
    4489 
    4490 Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic. Note that this
    4491 results in the ``inheritance'' of \lstinline$scalar$ along both paths.
    4492 \begin{lstlisting}
    4493 context m_l_arithmetic( type T | m_l_scalar( T ) | arithmetic( T ) ) {@\impl{m_l_arithmetic}@
    4494         T ?/=?( T *, T ), ?*=?( T *, T );@\use{m_l_scalar}@@\use{arithmetic}@
    4495         T ?+=?( T *, T ), ?-=?( T *, T );
    4496 };
    4497 
    4498 context m_l_integral( type T | m_l_arithmetic( T ) | integral( T ) ) {@\impl{m_l_integral}@
    4499         T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );@\use{m_l_arithmetic}@
    4500         T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );@\use{integral}@
    4501 };
    4502 \end{lstlisting}
    4503 
    4504 
    4505 \subsection{Pointer and array types}
    4506 
    4507 Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a
    4508 constant pointer to the first element of the array, and the subscript expression
    4509 ``\lstinline$a[i]$'' is equivalent to the dereferencing expression ``\lstinline$(*( a+( i )))$''.
    4510 Technically, pointer arithmetic and pointer comparisons other than ``\lstinline$==$'' and
    4511 ``\lstinline$!=$'' are only defined for pointers to array elements, but the type system does not
    4512 enforce those restrictions. Consequently, there is no need for a separate ``array type''
    4513 specification.
    4514 
    4515 Pointer types are scalar types. Like other scalar types, they have ``\lstinline$+$'' and
    4516 ``\lstinline$-$'' operators, but the types do not match the types of the operations in
    4517 \lstinline$arithmetic$, so these operators cannot be consolidated in \lstinline$scalar$.
    4518 \begin{lstlisting}
    4519 context pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@
    4520         P ?+?( P, long int ), ?+?( long int, P ), ?-?( P, long int );
    4521         ptrdiff_t ?-?( P, P );
    4522 };
    4523 
    4524 context m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@
    4525         P ?+=?( P *, long int ), ?-=?( P *, long int );
    4526         P ?=?( P *, void * );
    4527         void * ?=?( void **, P );
    4528 };
    4529 \end{lstlisting}
    4530 
    4531 Specifications that define the dereference operator ( or subscript operator ) require two
    4532 parameters, one for the pointer type and one for the pointed-at ( or element ) type. Different
    4533 specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not
    4534 included in types. The assertion ``\lstinline$|ptr_to( Safe_pointer, int )$'' should be read as
    4535 ``\lstinline$Safe_pointer$ acts like a pointer to \lstinline$int$''.
    4536 \begin{lstlisting}
    4537 context ptr_to( type P | pointer( P ), type T ) {@\impl{ptr_to}@@\use{pointer}@
    4538         lvalue T *?( P ); lvalue T ?[?]( P, long int );
    4539 };
    4540 
    4541 context ptr_to_const( type P | pointer( P ), type T ) {@\impl{ptr_to_const}@
    4542         const lvalue T *?( P ); const lvalue T ?[?]( P, long int );@\use{pointer}@
    4543 };
    4544 
    4545 context ptr_to_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_volatile}@
    4546         volatile lvalue T *?( P ); volatile lvalue T ?[?]( P, long int );@\use{pointer}@
    4547 };
    4548 \end{lstlisting}
    4549 \begin{lstlisting}
    4550 context ptr_to_const_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_const_volatile}@
    4551         const volatile lvalue T *?( P );@\use{pointer}@
    4552         const volatile lvalue T ?[?]( P, long int );
    4553 };
    4554 \end{lstlisting}
    4555 
    4556 Assignment to pointers is more complicated than is the case with other types, because the target's
    4557 type can have extra type qualifiers in the pointed-at type: a ``\lstinline$T *$'' can be assigned to
    4558 a ``\lstinline$const T *$'', a ``\lstinline$volatile T *$'', and a ``\lstinline$const volatile T *$''.
    4559 Again, the pointed-at type is passed in, so that assertions can connect these specifications to the
    4560 ``\lstinline$ptr_to$'' specifications.
    4561 \begin{lstlisting}
    4562 context m_l_ptr_to( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to}@ type T | ptr_to( P, T )@\use{ptr_to}@ {
    4563         P ?=?( P *, T * );
    4564         T * ?=?( T **, P );
    4565 };
    4566 
    4567 context m_l_ptr_to_const( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_const}@ type T | ptr_to_const( P, T )@\use{ptr_to_const}@) {
    4568         P ?=?( P *, const T * );
    4569         const T * ?=?( const T **, P );
    4570 };
    4571 
    4572 context m_l_ptr_to_volatile( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_volatile}@ type T | ptr_to_volatile( P, T )) {@\use{ptr_to_volatile}@
    4573         P ?=?( P *, volatile T * );
    4574         volatile T * ?=?( volatile T **, P );
    4575 };
    4576 
    4577 context m_l_ptr_to_const_volatile( type P | ptr_to_const_volatile( P ),@\use{ptr_to_const_volatile}@@\impl{m_l_ptr_to_const_volatile}@
    4578                 type T | m_l_ptr_to_volatile( P, T ) | m_l_ptr_to_const( P )) {@\use{m_l_ptr_to_const}@@\use{m_l_ptr_to_volatile}@
    4579         P ?=?( P *, const volatile T * );
    4580         const volatile T * ?=?( const volatile T **, P );
    4581 };
    4582 \end{lstlisting}
    4583 
    4584 Note the regular manner in which type qualifiers appear in those specifications. An alternative
    4585 specification can make use of the fact that qualification of the pointed-at type is part of a
    4586 pointer type to capture that regularity.
    4587 \begin{lstlisting}
    4588 context m_l_ptr_like( type MyP | m_l_pointer( MyP ),@\use{m_l_pointer}@@\impl{m_l_ptr_like}@ type CP | m_l_pointer( CP ) ) {
    4589         MyP ?=?( MyP *, CP );
    4590         CP ?=?( CP *, MyP );
    4591 };
    4592 \end{lstlisting}
    4593 The assertion ``\lstinline$| m_l_ptr_like( Safe_ptr, const int * )$'' should be read as
    4594 ``\lstinline$Safe_ptr$ is a pointer type like \lstinline$const int *$''. This specification has two
    4595 defects, compared to the original four: there is no automatic assertion that dereferencing a
    4596 \lstinline$MyP$ produces an lvalue of the type that \lstinline$CP$ points at, and the
    4597 ``\lstinline$|m_l_pointer( CP )$'' assertion provides only a weak assurance that the argument passed
    4598 to \lstinline$CP$ really is a pointer type.
    4599 
    4600 
    4601 \section{Relationships between operations}
    4602 
    4603 Different operators often have related meanings; for instance, in C, ``\lstinline$+$'',
    4604 ``\lstinline$+=$'', and the two versions of ``\lstinline$++$'' perform variations of addition.
    4605 Languages like {\CC} and Ada allow programmers to define operators for new types, but do not
    4606 require that these relationships be preserved, or even that all of the operators be implemented.
    4607 Completeness and consistency is left to the good taste and discretion of the programmer. It is
    4608 possible to encourage these attributes by providing generic operator functions, or member functions
    4609 of abstract classes, that are defined in terms of other, related operators.
    4610 
    4611 In \CFA, polymorphic functions provide the equivalent of these generic operators, and
    4612 specifications explicitly define the minimal implementation that a programmer should provide. This
    4613 section shows a few examples.
    4614 
    4615 
    4616 \subsection{Relational and equality operators}
    4617 
    4618 The different comparison operators have obvious relationships, but there is no obvious subset of the
    4619 operations to use in the implementation of the others. However, it is usually convenient to
    4620 implement a single comparison function that returns a negative integer, 0, or a positive integer if
    4621 its first argument is respectively less than, equal to, or greater than its second argument; the
    4622 library function \lstinline$strcmp$ is an example.
    4623 
    4624 C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation,
    4625 returns 1 if its operand compares equal to 0, and 0 otherwise.
    4626 \begin{lstlisting}
    4627 context comparable( type T ) {
    4628         const T 0;
    4629         int compare( T, T );
    4630 }
    4631 
    4632 forall( type T | comparable( T ) ) int ?<?( T l, T r ) {
    4633         return compare( l, r ) < 0;
    4634 }
    4635 // ... similarly for <=, ==, >=, >, and !=.
    4636 
    4637 forall( type T | comparable( T ) ) int !?( T operand ) {
    4638         return !compare( operand, 0 );
    4639 }
    4640 \end{lstlisting}
    4641 
    4642 
    4643 \subsection{Arithmetic and integer operations}
    4644 
    4645 A complete arithmetic type would provide the arithmetic operators and the corresponding assignment
    4646 operators. Of these, the assignment operators are more likely to be implemented directly, because
    4647 it is usually more efficient to alter the contents of an existing object than to create and return a
    4648 new one. Similarly, a complete integral type would provide integral operations based on integral
    4649 assignment operations.
    4650 \begin{lstlisting}
    4651 context arith_base( type T ) {
    4652         const T 1;
    4653         T ?+=?( T *, T ), ?-=?( T *, T ), ?*=?( T *, T ), ?/=?( T *, T );
    4654 }
    4655 
    4656 forall( type T | arith_base( T ) ) T ?+?( T l, T r ) {
    4657         return l += r;
    4658 }
    4659 
    4660 forall( type T | arith_base( T ) ) T ?++( T * operand ) {
    4661         T temporary = *operand;
    4662         *operand += 1;
    4663         return temporary;
    4664 }
    4665 
    4666 forall( type T | arith_base( T ) ) T ++?( T * operand ) {
    4667         return *operand += 1;
    4668 }
    4669 // ... similarly for -, --, *, and /.
    4670 
    4671 context int_base( type T ) {
    4672         T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );
    4673         T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );
    4674 }
    4675 
    4676 forall( type T | int_base( T ) ) T ?&?( T l, T r ) {
    4677         return l &= r;
    4678 }
    4679 // ... similarly for |, ^, %, <<, and >>.
    4680 \end{lstlisting}
    4681 
    4682 Note that, although an arithmetic type would certainly provide comparison functions, and an integral
    4683 type would provide arithmetic operations, there does not have to be any relationship among
    4684 \lstinline$int_base$, \lstinline$arith_base$ and \lstinline$comparable$. Note also that these
    4685 declarations provide guidance and assistance, but they do not define an absolutely minimal set of
    4686 requirements. A truly minimal implementation of an arithmetic type might only provide
    4687 \lstinline$0$, \lstinline$1$, and \lstinline$?-=?$, which would be used by polymorphic
    4688 \lstinline$?+=?$, \lstinline$?*=?$, and \lstinline$?/=?$ functions.
    4689 
    4690 Note also that \lstinline$short$ is an integer type in C11 terms, but has no operations!
    4691 
    4692 
    4693 \chapter{TODO}
    4694 Review index entries.
    4695 
    4696 Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers. This gets
    4697 into \lstinline$noalias$ territory. Qualifying anything (``\lstinline$short restrict rs$'') means
    4698 pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers.
    4699 
    4700 Enumerated types. Constants are not ints. Overloading. Definition should be ``representable as an
    4701 integer type'', not ``as an int''. C11 usual conversions freely convert to and from ordinary
    4702 integer types via assignment, which works between any integer types. Does enum Color ?*?( enum
    4703 Color, enum Color ) really make sense? ?++ does, but it adds (int)1.
    4704 
    4705 Operators on {,signed,unsigned} char and other small types. ?<? harmless; ?*? questionable for
    4706 chars. Generic selections make these choices visible. Safe conversion operators? Predefined
    4707 ``promotion'' function?
    4708 
    4709 \lstinline$register$ assignment might be handled as assignment to a temporary with copying back and
    4710 forth, but copying must not be done by assignment.
    4711 
    4712 Don't use ptrdiff\_t by name in the predefineds.
    4713 
    4714 Polymorphic objects. Polymorphic typedefs and type declarations.
    4715 
    4716 
    4717 \bibliographystyle{plain}
    4718 \bibliography{refrat}
    4719 
    4720 
    4721 \addcontentsline{toc}{chapter}{\indexname} % add index name to table of contents
    4722 \begin{theindex}
    4723 Italic page numbers give the location of the main entry for the referenced term. Plain page numbers
    4724 denote uses of the indexed term. Entries for grammar non-terminals are italicized. A typewriter
    4725 font is used for grammar terminals and program identifiers.
    4726 \indexspace
    4727 \input{refrat.ind}
    4728 \end{theindex}
    4729 
    4730 \end{document}
    4731 
    4732 % Local Variables: %
    4733 % tab-width: 4 %
    4734 % fill-column: 100 %
    4735 % compile-command: "make" %
    4736 % End: %
  • src/CodeGen/CodeGenerator.cc

    rd2ded3e7 r698664b3  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Sep 17 15:24:08 2015
    13 // Update Count     : 231
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jul 27 14:40:06 2015
     13// Update Count     : 218
    1414//
    1515
     
    186186        }
    187187
    188         void CodeGenerator::printDesignators( std::list< Expression * > & designators ) {
    189                 typedef std::list< Expression * > DesignatorList;
    190                 if ( designators.size() == 0 ) return;
    191                 for ( DesignatorList::iterator iter = designators.begin(); iter != designators.end(); ++iter ) {
    192                         if ( dynamic_cast< NameExpr * >( *iter ) ) {
    193                                 // if expression is a name, then initializing aggregate member
    194                                 output << ".";
    195                                 (*iter)->accept( *this );
    196                         } else {
    197                                 // if not a simple name, it has to be a constant expression, i.e. an array designator
    198                                 output << "[";
    199                                 (*iter)->accept( *this );
    200                                 output << "]";
    201                         }
    202                 }
    203                 output << " = ";
    204         }
    205 
    206188        void CodeGenerator::visit( SingleInit *init ) {
    207                 printDesignators( init->get_designators() );
    208189                init->get_value()->accept( *this );
    209190        }
    210191
    211192        void CodeGenerator::visit( ListInit *init ) {
    212                 printDesignators( init->get_designators() );
    213193                output << "{ ";
    214194                genCommaList( init->begin_initializers(), init->end_initializers() );
     
    392372
    393373        void CodeGenerator::visit( CastExpr *castExpr ) {
    394                 // if the cast is to an lvalue type, then the cast
    395                 // should be dropped, since the result of a cast is
    396                 // never an lvalue in C
    397                 if ( castExpr->get_results().front()->get_isLvalue() ) {
    398                         castExpr->get_arg()->accept( *this );
    399                 } else {
    400                         output << "((";
    401                         if ( castExpr->get_results().empty() ) {
    402                                 output << "void" ;
    403                         } else {
    404                                 output << genType( castExpr->get_results().front(), "" );
    405                         } // if
    406                         output << ")";
    407                         castExpr->get_arg()->accept( *this );
    408                         output << ")";                 
    409                 }
     374                output << "((";
     375                if ( castExpr->get_results().empty() ) {
     376                        output << "void" ;
     377                } else {
     378                        output << genType( castExpr->get_results().front(), "" );
     379                } // if
     380                output << ")";
     381                castExpr->get_arg()->accept( *this );
     382                output << ")";
    410383        }
    411384 
  • src/CodeGen/CodeGenerator.h

    rd2ded3e7 r698664b3  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 14:27:14 2015
    13 // Update Count     : 27
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Jul 24 13:34:47 2015
     13// Update Count     : 25
    1414//
    1515
     
    9595                std::ostream &output;
    9696
    97                 void printDesignators( std::list< Expression * > & );
    9897                static std::string printLabels ( std::list < Label > & );
    9998                void handleStorageClass( Declaration *decl );
  • src/GenPoly/PolyMutator.cc

    rd2ded3e7 r698664b3  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri Aug 14 15:28:50 2015
    13 // Update Count     : 11
     12// Last Modified On : Wed Jul 15 14:50:58 2015
     13// Update Count     : 3
    1414//
    1515
     
    2020#include "SynTree/Statement.h"
    2121#include "SynTree/Mutator.h"
    22 #include "SynTree/Initializer.h"
     22
    2323
    2424namespace GenPoly {
     
    146146        }
    147147 
    148  
    149         Initializer *PolyMutator::mutate( SingleInit *singleInit ) {
    150                 singleInit->set_value( mutateExpression( singleInit->get_value() ) );
    151                 return singleInit;
    152         }
    153 
    154 
    155148        /* static class method */
    156149        void PolyMutator::makeTyVarMap( Type *type, TyVarMap &tyVarMap ) {
  • src/GenPoly/PolyMutator.h

    rd2ded3e7 r698664b3  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri Aug 14 15:27:38 2015
    13 // Update Count     : 4
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue May 19 07:46:45 2015
     13// Update Count     : 1
    1414//
    1515
     
    4545 
    4646                virtual Expression* mutate(UntypedExpr *untypedExpr);
    47 
    48                 virtual Initializer* mutate(SingleInit *SingleInit);
    49 
     47 
    5048                // template method
    5149                virtual void doBeginScope() {}
  • src/GenPoly/Specialize.cc

    rd2ded3e7 r698664b3  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Sep 22 14:04:13 2015
    13 // Update Count     : 15
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jun 13 15:54:07 2015
     13// Update Count     : 6
    1414//
    1515
     
    200200        Expression * Specialize::mutate( AddressExpr *addrExpr ) {
    201201                addrExpr->get_arg()->acceptMutator( *this );
    202                 assert( ! addrExpr->get_results().empty() );
    203202                addrExpr->set_arg( doSpecialization( addrExpr->get_results().front(), addrExpr->get_arg() ) );
    204203                return addrExpr;
  • src/Parser/ExpressionNode.cc

    rd2ded3e7 r698664b3  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  5 16:37:24 2015
    13 // Update Count     : 255
     12// Last Modified On : Tue Aug 11 15:13:48 2015
     13// Update Count     : 200
    1414//
    1515
     
    3232ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
    3333
    34 ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ), argName( 0 ) {}
     34ExpressionNode::ExpressionNode( const string *name_ ) : ParseNode( name_ ), argName( 0 ) {}
    3535
    3636ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
     
    290290DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex ) : isArrayIndex( isArrayIndex ) {
    291291        set_argName( expr );
    292         assert( get_argName() );
    293 
    294         if ( ! isArrayIndex ) {
    295                 if ( VarRefNode * var = dynamic_cast< VarRefNode * >( expr ) ) {
    296 
    297                         stringstream ss( var->get_name() );
    298                         double value;
    299                         if ( ss >> value ) {
    300                                 // this is a floating point constant. It MUST be
    301                                 // ".0" or ".1", otherwise the program is invalid
    302                                 if ( ! (var->get_name() == ".0" || var->get_name() == ".1") ) {
    303                                         throw SemanticError( "invalid designator name: " + var->get_name() );
    304                                 } // if
    305                                 var->set_name( var->get_name().substr(1) );
    306                         } // if
    307                 } // if
    308         } // if
    309292}
    310293
     
    312295}
    313296
    314 class DesignatorFixer : public Mutator {
    315 public:
    316         virtual Expression* mutate( NameExpr *nameExpr ) {
    317                 if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) {
    318                         Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() );
    319                         delete nameExpr;
    320                         return new ConstantExpr( val );
    321                 }
    322                 return nameExpr;
    323         }
    324 };
    325 
    326297Expression *DesignatorNode::build() const {
    327         Expression * ret = get_argName()->build();
    328 
    329298        if ( isArrayIndex ) {
    330                 // need to traverse entire structure and change any instances of 0 or 1 to
    331                 // ConstantExpr
    332                 DesignatorFixer fixer;
    333                 ret = ret->acceptMutator( fixer );
    334         } // if
    335 
    336         return ret;
     299                return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) );
     300        } else {
     301                return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) );
     302        } // if
    337303}
    338304
     
    418384
    419385CompositeExprNode::CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2):
    420         function( f ), arguments( arg1 ) {
    421         arguments->set_link( arg2 );
     386        function( f ), arguments( arg1) {
     387        arguments->set_link( arg2);
    422388}
    423389
  • src/Parser/InitializerNode.cc

    rd2ded3e7 r698664b3  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Oct  8 17:18:55 2015
    13 // Update Count     : 4
     12// Last Modified On : Sat Jun  6 15:49:42 2015
     13// Update Count     : 3
    1414//
    1515
     
    8080
    8181        if ( aggregate ) {
    82                 //assert( next_init() != 0 );
     82                assert( next_init() != 0 );
    8383
    8484                std::list< Initializer *> initlist;
  • src/Parser/ParseNode.cc

    rd2ded3e7 r698664b3  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:26:29 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 13:26:00 2015
    13 // Update Count     : 36
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul 30 14:55:54 2015
     13// Update Count     : 26
    1414//
    1515
     
    2020int ParseNode::indent_by = 4;
    2121
    22 ParseNode::ParseNode() : next( 0 ) {};
    23 ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; }
    24 ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { }
     22ParseNode::ParseNode() : name( 0 ), next( 0 ) {};
     23ParseNode::ParseNode( const string *name_ ) : name( name_ ), next( 0 ) {}
    2524
    2625ParseNode::~ParseNode() {
    27         delete next;
     26        delete next; delete name;
    2827};
    2928
  • src/Parser/ParseNode.h

    rd2ded3e7 r698664b3  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:28:16 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 13:27:11 2015
    13 // Update Count     : 172
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Aug 11 15:11:29 2015
     13// Update Count     : 145
    1414//
    1515
     
    4040        ParseNode();
    4141        ParseNode( const std::string * );
    42         ParseNode( const std::string & );  // for copy constructing subclasses
    4342        virtual ~ParseNode();
    4443
     
    5049        virtual ParseNode *clone() const { return 0; };
    5150
    52         const std::string &get_name() const { return name; }
    53         void set_name( const std::string &newValue ) { name = newValue; }
    54 
     51        const std::string &get_name() const { return *name; }
    5552        virtual void print( std::ostream &, int indent = 0 ) const;
    5653        virtual void printList( std::ostream &, int indent = 0 ) const;
     
    5855        ParseNode &operator,( ParseNode &);
    5956  protected:
    60         std::string name;
     57        const std::string *name;
    6158        ParseNode *next;
    6259        static int indent_by;
  • src/Parser/lex.cc

    rd2ded3e7 r698664b3  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 178
    385 #define YY_END_OF_BUFFER 179
     384#define YY_NUM_RULES 171
     385#define YY_END_OF_BUFFER 172
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[852] =
     393static yyconst flex_int16_t yy_accept[826] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  113,  113,  116,  116,
    396       179,  177,    7,    9,    8,  136,  115,  100,  141,  144,
    397       112,  123,  124,  139,  137,  127,  138,  130,  140,  105,
    398       106,  107,  128,  129,  146,  148,  147,  149,  177,  100,
    399       121,  177,  122,  142,  100,  102,  100,  100,  100,  100,
    400       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
    401       100,  125,  145,  126,  143,    7,  177,    4,    4,  178,
    402       103,  178,  104,  113,  114,  120,  116,  117,    7,    9,
    403         0,    8,  153,  172,  100,    0,  165,  135,  158,  166,
    404       163,  150,  161,  151,  162,  160,    0,  110,    3,    0,
    405 
    406       164,  110,  108,    0,    0,  108,  108,    0,    0,  108,
    407       107,  107,  107,    0,  107,  133,  134,  132,  154,  156,
    408       152,  157,  155,    0,    0,    0,    0,    0,    0,    0,
    409         0,    0,    0,    0,    0,    0,    0,    0,  101,  171,
    410         0,  115,  112,  100,    0,    0,  168,    0,  100,  100,
    411       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
    412       100,  100,  100,  100,  100,   39,  100,  100,  100,  100,
    413       100,  100,  100,  100,  100,  100,   57,  100,  100,  100,
    414       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
    415       100,  100,  167,  159,    7,    0,    0,    0,    2,    0,
    416 
    417         5,  103,    0,    0,    0,  113,    0,  119,  118,  118,
    418         0,    0,    0,  116,    0,    0,    0,    0,    0,    0,
    419         0,    0,    0,    0,    0,    0,    0,    0,    0,  131,
    420       110,    0,  110,    0,    0,    6,    0,  108,    0,    0,
    421         0,  110,    0,  108,  108,  108,  108,    0,  109,    0,
    422         0,  107,  107,  107,  107,    0,  169,  170,    0,  175,
    423       173,    0,    0,    0,  101,    0,    0,    0,    0,    0,
    424         0,    0,    0,  100,   17,  100,  100,  100,  100,  100,
    425       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
    426       100,  100,   14,  100,  100,  100,  100,  100,  100,  100,
    427 
    428       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
    429       100,   51,  100,  100,  100,   64,  100,  100,  100,  100,
    430       100,  100,  100,  100,  100,  100,  100,  100,   87,  100,
    431       100,  100,  100,  100,  100,  100,    0,    0,    0,    0,
    432         0,    0,    0,    0,  118,    0,    0,    0,    0,    0,
    433       118,    0,    0,  176,    0,    0,    0,    0,    0,    0,
    434         0,    0,  110,    0,    0,    0,  110,    0,  108,  108,
    435         0,    0,  109,  109,    0,  109,    0,  109,  107,  107,
     395        0,    0,    0,    0,    0,    0,  108,  108,  111,  111,
     396      172,  170,    7,    9,    8,  131,  110,   95,  136,  139,
     397      107,  118,  119,  134,  132,  122,  133,  125,  135,  100,
     398      101,  102,  123,  124,  141,  143,  142,  144,  170,   95,
     399      116,  170,  117,  137,   95,   97,   95,   95,   95,   95,
     400       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     401       95,  120,  140,  121,  138,    7,  170,    4,    4,  171,
     402       98,  171,   99,  108,  109,  115,  111,  112,    7,    9,
     403        0,    8,  148,  166,   95,    0,  160,  130,  153,  161,
     404      158,  145,  156,  146,  157,  155,    0,  105,    3,    0,
     405
     406      159,  105,  103,    0,    0,  103,  103,    0,    0,  103,
     407      102,  102,  102,    0,  102,  128,  129,  127,  149,  151,
     408      147,  152,  150,    0,    0,    0,    0,    0,    0,    0,
     409        0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
     410      110,  107,   95,    0,    0,  163,   95,   95,   95,   95,
     411       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     412       95,   95,   36,   95,   95,   95,   95,   95,   95,   95,
     413       95,   95,   95,   53,   95,   95,   95,   95,   95,   95,
     414       95,   95,   95,   95,   95,   95,   95,   95,   95,  162,
     415      154,    7,    0,    0,    0,    2,    0,    5,   98,    0,
     416
     417        0,    0,  108,    0,  114,  113,  113,    0,    0,    0,
     418      111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     419        0,    0,    0,    0,    0,    0,  126,  105,    0,  105,
     420        0,    0,    6,    0,  103,    0,    0,    0,  105,    0,
     421      103,  103,  103,  103,    0,  104,    0,    0,  102,  102,
     422      102,  102,    0,  164,  165,    0,  168,  167,    0,    0,
     423        0,   96,    0,    0,    0,    0,    0,    0,    0,   95,
     424       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     425       95,   95,   95,   95,   95,   95,   95,   95,   14,   95,
     426       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     427
     428       95,   95,   95,   95,   95,   47,   95,   95,   95,   60,
     429       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     430       95,   95,   82,   95,   95,   95,   95,   95,   95,   95,
     431        0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
     432        0,    0,    0,    0,  113,    0,    0,  169,    0,    0,
     433        0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
     434      105,    0,  103,  103,    0,    0,  104,  104,    0,  104,
     435        0,  104,  102,  102,    0,    0,    0,    0,    0,    0,
     436        0,    0,    0,    0,   95,   95,   95,   95,   95,   95,
     437       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     438
     439       95,   95,   95,   95,   95,   95,   20,   95,   23,   95,
     440       25,   95,   95,   95,   95,   95,   95,   39,   40,   95,
     441       95,   95,   95,   95,   95,   95,   52,   95,   63,   95,
     442       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     443       83,   95,   95,   90,   95,   95,    0,    0,    0,    0,
    436444        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    437       174,  100,  100,  100,  100,  100,  100,  100,  100,  100,
    438 
    439       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
    440       100,  100,  100,   21,  100,   24,  100,   27,  100,  100,
    441       100,  100,  100,  100,  100,   42,  100,   44,  100,  100,
    442       100,  100,  100,  100,  100,   56,  100,   67,  100,  100,
    443       100,  100,  100,  100,  100,  100,  100,  100,  100,   88,
    444       100,  100,   95,  100,  100,    0,    0,    0,    0,    0,
    445         0,    0,    0,    0,    0,    0,    0,    0,    0,  118,
    446         0,    0,    0,    0,    0,  110,    0,    0,    0,    0,
    447         0,    0,  109,  109,    0,  111,    0,  109,  109,    0,
     445      113,    0,    0,    0,    0,    0,  105,    0,    0,    0,
     446        0,    0,    0,  104,  104,    0,  106,    0,  104,  104,
    448447        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    449 
    450         0,    0,  100,  100,   22,  100,  100,  100,  100,  100,
    451       100,  100,   15,  100,  100,  100,  100,  100,  100,  100,
    452       100,  100,  100,  100,  100,  100,   23,   25,  100,   32,
    453       100,  100,  100,  100,  100,   41,  100,  100,  100,  100,
    454        49,  100,  100,   54,  100,  100,  100,  100,  100,   75,
    455       100,  100,  100,  100,  100,   85,  100,  100,   93,  100,
    456       100,   99,    0,    0,    0,    0,    0,    0,    0,    0,
     448        0,    0,    0,   95,   95,   21,   95,   95,   95,   95,
     449
     450       95,   95,   95,   15,   95,   95,   95,   95,   95,   95,
     451       95,   95,   95,   95,   95,   95,   95,   22,   24,   95,
     452       30,   95,   95,   95,   95,   38,   95,   95,   95,   45,
     453       95,   95,   50,   95,   95,   95,   95,   95,   71,   95,
     454       95,   95,   95,   95,   81,   95,   95,   88,   95,   95,
     455       94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    457456        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    458         0,  111,    0,    0,  109,  111,  111,    0,  109,    0,
    459         0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
    460 
    461         0,  100,  100,  100,  100,  100,  100,  100,  100,  100,
    462       100,  100,  100,  100,  100,  100,   59,  100,  100,  100,
    463       100,  100,  100,  100,  100,   28,  100,  100,  100,  100,
    464        40,   43,   46,  100,  100,   52,  100,   61,   68,  100,
    465       100,   74,   76,   79,   80,   82,   83,  100,  100,   90,
    466       100,  100,    0,    1,    0,    0,    0,    0,    0,    0,
    467       103,    0,    0,    0,  118,    0,    0,    0,    0,  111,
     457      106,    0,    0,  104,  106,  106,    0,  104,    0,    0,
     458        0,    0,    0,    0,    0,    0,    0,    0,   95,    0,
     459       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     460
     461       95,   95,   95,   95,   95,   55,   95,   95,   95,   95,
     462       95,   95,   95,   26,   95,   95,   95,   37,   42,   95,
     463       95,   48,   95,   57,   64,   95,   95,   70,   72,   75,
     464       76,   78,   79,   95,   85,   95,   95,    0,    1,    0,
     465        0,    0,    0,    0,    0,   98,    0,    0,    0,  113,
     466        0,    0,    0,    0,  106,    0,    0,    0,    0,    0,
     467        0,    0,    0,    0,    0,   95,   95,   17,   95,   95,
     468       95,   95,   95,   95,   95,   16,   95,   95,   31,   95,
     469       95,   95,   95,   95,   95,   95,   95,   95,   95,   33,
     470       95,   35,   95,   44,   49,   95,   95,   84,   95,   95,
     471
    468472        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    469       100,  100,   18,  100,  100,  100,  100,  100,  100,  100,
    470        16,  100,  100,   33,  100,  100,  100,  100,  100,  100,
    471 
    472       100,  100,  100,  100,  100,   35,  100,   37,   38,  100,
    473        48,   53,  100,  100,  100,   89,  100,  100,    0,    0,
     473        0,    0,    0,   10,   11,   27,   51,   95,   95,   95,
     474       95,   95,   95,   95,   95,   95,   95,   56,   58,   61,
     475       95,   95,   73,   86,   95,   34,   43,   66,   67,   89,
     476       91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     477        0,    0,    0,   95,   65,   95,   95,   12,   95,   28,
     478       32,   95,   95,   95,   62,   95,   95,   95,   95,    0,
    474479        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    475         0,   10,   11,   29,   55,  100,  100,  100,  100,  100,
    476       100,  100,  100,  100,  100,   60,   62,   65,  100,  100,
    477        77,   91,  100,  100,   36,   47,   70,   71,  100,   94,
    478        96,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    479         0,    0,    0,  100,   69,  100,  100,   12,  100,   30,
    480        34,  100,  100,  100,   66,  100,  100,  100,  100,  100,
    481       100,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    482 
    483         0,    0,    0,    0,   58,  100,  100,  100,  100,  100,
    484       100,   50,   63,   72,   78,   92,   97,  100,  100,    0,
    485         0,    0,    0,    0,    0,    0,    0,  100,  100,   13,
    486        19,   31,  100,  100,  100,   26,   86,    0,    0,  100,
    487       100,  100,  100,   73,   98,  100,   84,   20,   45,   81,
    488         0
     480        0,    0,   54,   95,   95,   95,   95,   95,   95,   46,
     481       59,   68,   74,   87,   92,    0,    0,    0,    0,    0,
     482
     483        0,    0,    0,   95,   95,   13,   18,   29,   95,   95,
     484       95,    0,    0,   95,   95,   95,   95,   69,   93,   95,
     485       80,   19,   41,   77,    0
    489486    } ;
    490487
     
    499496       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
    500497       42,   11,   43,   11,   11,   44,   11,   45,   11,   46,
    501        11,   47,   48,   49,   50,   11,   11,   51,   11,   11,
    502        52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
    503 
    504        62,   63,   64,   65,   66,   11,   67,   68,   69,   70,
    505        71,   72,   11,   73,   74,   75,   76,   77,   78,   79,
    506        80,   81,   82,   83,   84,   85,    1,    1,    1,    1,
     498       11,   11,   47,   48,   49,   11,   11,   50,   11,   11,
     499       51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
     500
     501       61,   62,   63,   64,   65,   11,   66,   67,   68,   69,
     502       70,   71,   11,   72,   73,   74,   75,   76,   77,   78,
     503       79,   80,   81,   82,   83,   84,    1,    1,    1,    1,
    507504        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    508505        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    521518    } ;
    522519
    523 static yyconst flex_int32_t yy_meta[86] =
     520static yyconst flex_int32_t yy_meta[85] =
    524521    {   0,
    525522        1,    1,    2,    1,    1,    1,    1,    1,    3,    1,
    526523        4,    1,    1,    5,    1,    1,    1,    1,    1,    1,
    527524        6,    1,    7,    7,    7,    7,    7,    7,    1,    1,
    528         1,    8,    1,    1,    1,    9,    9,    9,    9,    9,
    529         9,    4,    4,   10,    4,   11,    4,    4,    4,   10,
    530         4,    1,   12,    1,    1,   13,    1,    9,    9,    9,
    531         9,    9,    9,    4,    4,    4,    4,   10,    4,    4,
    532         4,   11,    4,    4,    4,   10,    4,    4,    4,    4,
    533         4,    1,    1,    1,    1
     525        1,    1,    1,    1,    1,    8,    8,    8,    8,    8,
     526        8,    4,    4,    9,    4,   10,    4,    4,    9,    4,
     527        1,   11,    1,    1,   12,    1,    8,    8,    8,    8,
     528        8,    8,    4,    4,    4,    4,    9,    4,    4,    4,
     529       10,    4,    4,    4,    9,    4,    4,    4,    4,    4,
     530        1,    1,    1,    1
    534531    } ;
    535532
    536 static yyconst flex_int16_t yy_base[1025] =
     533static yyconst flex_int16_t yy_base[999] =
    537534    {   0,
    538         0,   84, 2247, 2245,   94,    0,  177,  178,  179,  180,
    539      2259, 2762,  191, 2762,  197,   55, 2762, 2203,   60,  173,
    540      2762, 2762, 2762,   56,  188, 2762,  191,  189,  204,  216,
    541       275,    0, 2222, 2762,  216, 2222,  152,  344,  155,  220,
    542      2762,  159, 2762,  217,  226, 2762,  185,  154,  212,  251,
    543       237,  270,  235,  257,  241,  193,  305,  314,  333,  238,
    544       228, 2762,  225, 2762, 2218,  402,  390, 2762, 2227, 2762,
    545      2193,  204, 2762,    0, 2762,  426,    0, 2762,  417, 2762,
    546       439,  451, 2762,  498, 2192,  235, 2762, 2762, 2762, 2762,
    547      2762, 2210, 2762, 2208, 2762, 2762, 2218,  559, 2762, 2235,
    548 
    549      2762,  605,  413,  498,  516,  289,  253,  197,  293,  305,
    550         0,  319,  280,  231,  334, 2762, 2762, 2762, 2205, 2762,
    551      2762, 2762, 2203, 2200,  298,  356, 2213,  366,  429,  439,
    552       398,  434,  438,  448, 2194,  443, 2143,  459, 2172, 2762,
    553       335, 2762, 2762,  495, 2166, 2163, 2762, 2136,  460,  282,
    554       297,  329,  409,  437,  442,  281,  503,  414,  474,  372,
    555       484,  493,  378,  434,  433,  325,  494,  459,  499,  492,
    556       502,  509,  461,  301,  515,  535, 2164,  536,  520,  538,
    557       544,  541,  545,  567,  539,  421,  554,  563,  597,  570,
    558       571,  548, 2762, 2762,  652,  662, 2212,  668, 2762,  674,
    559 
    560      2762, 2159,  567, 2153, 2152,    0,  645, 2762, 2762,  680,
    561      2151, 2149, 2146,    0, 2167,  466,  640,  646,  689,  688,
    562       650,  678,  679,  682, 2164,  685,  692, 2141, 2139, 2762,
    563       714,  707, 2762, 2136, 2186, 2762,  703,    0,  697,  760,
    564       766,  779,  801,  696, 2762, 2144, 2119,    0,  787, 2164,
    565       825,  698, 2762, 2138, 2111,  841, 2762, 2762, 2144, 2762,
    566      2762,  717,  718, 2123, 2122,  719, 2099, 2097, 2096,    0,
    567      2093,    0, 2062,  585,  589,  704,  610,  675,  703,  540,
    568       706,  707,  743,  726,  720,  745,  787,  709,  748,  715,
    569       756,  759, 2092,  761,  781,  792,  817,  785,  791,  808,
    570 
    571       788,  818,  819,  807,  822,  821,  820,  832,  833,  834,
    572       835,  837,  838,  843,  845, 2091,  276,  847,  850,  846,
    573       849,  851,  852,  855,  853,  854,  856,  865, 2089,  867,
    574       904,  866,  873,  197,  874,  870,  938,  939, 2083, 2080,
    575      2079,    0, 2078,    0,  926,  930, 2076,    0, 2073,    0,
    576      2070,    0, 2091, 2762,  901,  912, 2070, 2066,    0, 2063,
    577         0,  935,  942,  953,  964,  976,  989,  998, 2762, 2762,
    578       939,  962, 1014,  987, 1023,  928, 1041, 1005, 2762, 2762,
    579      2060, 2059, 2058,    0, 2056,    0, 2053,    0, 2052,    0,
    580      2762,  911,  940,  976,  966,  881, 1003,  944, 1000,  974,
    581 
    582       941, 1015, 1018, 1019, 1021, 1006, 1025, 1027, 1039, 1041,
    583      1012, 1046, 1048, 2054, 1047, 2052,  975, 2049, 1050, 1051,
    584      1057, 1052, 1053, 1054, 1058, 2048, 1068, 2047, 1072, 1055,
    585      1074, 1076, 1078, 1079, 1081, 2045, 1080, 2042, 1082, 1085,
    586      1084, 1087, 1086, 1091, 1094, 1088, 1095, 1096,  588, 1109,
    587      1111, 1110, 2038, 1113, 1114, 1166, 2031,    0, 2029,    0,
    588      2027,    0, 2024,    0, 1159, 2022,    0, 2020,    0, 2017,
    589      2014, 2013,    0, 2012,    0, 1166, 1172, 1218, 1131, 1229,
    590      1155, 1132, 1129, 2762, 1235, 1242, 1253, 2022, 1995, 2004,
    591      2003,    0, 2002,    0, 2000,    0, 1997,    0, 1994,    0,
    592 
    593      1993,    0, 1149, 1120, 1995, 1153, 1159, 1164, 1156, 1167,
    594      1165, 1161,  233, 1211, 1219, 1162, 1186, 1229, 1173, 1185,
    595       166, 1235, 1236, 1222, 1237, 1242, 1993, 1249, 1241, 1990,
    596      1171, 1248, 1240, 1251, 1253, 1987, 1254, 1256, 1259, 1260,
    597      1986, 1261, 1264, 1985, 1268, 1270, 1267, 1272, 1274, 1983,
    598      1278,  921, 1280, 1281, 1282, 1290, 1283, 1288, 1980, 1293,
    599      1295, 1977, 2026, 1972,    0, 1970,    0, 1967,    0, 1964,
    600         0, 1963,    0, 1962,    0, 1960,    0, 1957,    0, 1341,
    601      1347, 1354, 1365, 1954, 2762, 1377, 2762, 1388, 2762, 1953,
    602         0, 1952,    0, 1950,    0, 1947,    0,    0,    0, 1949,
    603 
    604         0, 1366, 1297, 1296, 1333, 1306, 1331, 1300, 1301, 1353,
    605      1115, 1343, 1367, 1355, 1372, 1373, 1299, 1383, 1402, 1375,
    606      1381, 1385, 1378, 1386, 1388, 1948, 1393, 1399, 1404, 1405,
    607      1946, 1943, 1942, 1407, 1406, 1941, 1411, 1939, 1906, 1409,
    608      1334, 1904, 1903, 1900, 1897, 1896, 1895, 1410, 1413, 1893,
    609      1412, 1416, 1940, 2762, 1884,    0, 1883,    0,    0,    0,
    610      1885,    0,    0,    0, 2762,    0,    0,    0,    0, 1464,
    611      1470, 1516, 1880,    0, 1877,    0,    0,    0,    0, 1876,
    612      1425, 1420, 1878, 1424, 1447, 1448, 1429, 1456, 1457, 1451,
    613      1876, 1462, 1463, 1475, 1471, 1493, 1481, 1494, 1496, 1495,
    614 
    615      1497, 1499, 1466, 1500, 1483, 1873, 1502, 1872, 1871, 1482,
    616      1869, 1866, 1501, 1506, 1508, 1862, 1509, 1514,    0,    0,
    617      1855, 1851, 1835, 1834, 1560,    0, 1833, 1831, 1828, 1827,
    618      1826, 1827, 1824, 1823, 1822, 1516, 1520, 1522, 1417, 1515,
    619      1518, 1512, 1539, 1540, 1552, 1820, 1543, 1817, 1544, 1548,
    620      1551, 1556, 1545, 1526, 1816, 1815, 1813, 1810, 1550, 1809,
    621      1808, 1803, 1800, 1799, 1798, 1796, 1793, 1792, 1791, 1789,
    622      1786, 1785, 1784, 1557, 1785, 1558, 1562, 1561, 1565, 1566,
    623      1782, 1567, 1594, 1571, 1781, 1570, 1572, 1578, 1577, 1582,
    624      1583, 1777, 1775, 1768, 1766, 1765, 1762, 1761, 1760, 1758,
    625 
    626      1741, 1732, 1731, 1728, 1724, 1576, 1588, 1590, 1591, 1601,
    627      1589, 1721, 1714, 1602, 1712, 1711, 1607, 1603, 1608, 1687,
    628      1686, 1685, 1678, 1676, 1675, 1633, 1632, 1609, 1611, 1632,
    629      1619, 1626, 1620, 1621, 1625, 1596, 1477, 1462, 1152, 1613,
    630      1614, 1627, 1631, 1119, 1016, 1615,  762,  725,  676,  549,
    631      2762, 1690, 1703, 1716, 1726, 1736, 1749, 1759, 1772, 1785,
    632      1798, 1806, 1816, 1823, 1830, 1837, 1844, 1851, 1858, 1865,
    633      1872, 1879, 1892, 1899, 1903, 1911, 1914, 1921, 1928, 1935,
    634      1938, 1945, 1951, 1964, 1977, 1984, 1991, 1998, 2005, 2008,
    635      2015, 2018, 2025, 2028, 2035, 2038, 2045, 2048, 2055, 2058,
    636 
    637      2065, 2068, 2075, 2083, 2090, 2097, 2104, 2111, 2114, 2121,
    638      2124, 2131, 2134, 2141, 2147, 2160, 2167, 2174, 2177, 2184,
    639      2187, 2194, 2197, 2204, 2207, 2214, 2217, 2224, 2227, 2234,
    640      2241, 2244, 2251, 2254, 2261, 2268, 2275, 2278, 2285, 2288,
    641      2295, 2298, 2305, 2308, 2315, 2318, 2325, 2331, 2344, 2351,
    642      2358, 2361, 2368, 2371, 2378, 2381, 2388, 2391, 2398, 2401,
    643      2408, 2411, 2418, 2421, 2428, 2431, 2438, 2445, 2448, 2455,
    644      2458, 2465, 2468, 2475, 2478, 2481, 2487, 2494, 2503, 2510,
    645      2517, 2520, 2527, 2530, 2533, 2539, 2546, 2549, 2552, 2555,
    646      2558, 2561, 2564, 2567, 2574, 2577, 2584, 2587, 2590, 2593,
    647 
    648      2596, 2606, 2613, 2616, 2619, 2626, 2633, 2640, 2643, 2650,
    649      2657, 2664, 2671, 2678, 2685, 2692, 2699, 2706, 2713, 2720,
    650      2727, 2734, 2741, 2748
     535        0,   83, 2266, 2265,   93,    0,  175,  176,  177,  178,
     536     2281, 2568,  189, 2568,  195,   54, 2568, 2223,   59,  171,
     537     2568, 2568, 2568,   55,  186, 2568,  189,  187,  202,  214,
     538      272,    0, 2241, 2568,  214, 2241,  150,  340, 2215,  222,
     539     2568,  157, 2568, 2234,  277, 2568,  192,  133,  196,  198,
     540      204,  271,  155,  218,  181,  200,  266,  238,  337,  224,
     541      227, 2568,  223, 2568, 2231,  372,  400, 2568, 2237, 2568,
     542     2206,  213, 2568,    0, 2568,  427,    0, 2568,  363, 2568,
     543      381,  393, 2568,  498, 2205,  229, 2568, 2568, 2568, 2568,
     544     2568, 2217, 2568, 2216, 2568, 2568, 2228,  558, 2568, 2240,
     545
     546     2568,  603,  385,  443,  419,  259,  239,  280,  399,  406,
     547        0,  305,  240,  335,  411, 2568, 2568, 2568, 2210, 2568,
     548     2568, 2568, 2209, 2188,  215,  277, 2203,  310,  383,  384,
     549      327,  425,  380,  399, 2180,  448, 2130,  458, 2160,  288,
     550     2568, 2568,  486, 2151, 2150, 2568,  420,  423,  439,  456,
     551      445,  455,  460,  329,  483,  469,  462,  467,  480,  494,
     552      396,  471,  472,  487,  470,  513,  489,  506,  508,  509,
     553      386,  510,  516, 2152,  520,  522,  518,  541,  526,  543,
     554      540,  551,  549,  553,  565,  598,  572,  581,  557, 2568,
     555     2568,  669,  659, 2195,  686, 2568,  692, 2568, 2145,  559,
     556
     557     2141, 2135,    0,  649, 2568, 2568,  679, 2134, 2133, 2127,
     558        0, 2149,  535,  606,  607,  674,  635,  625,  646,  664,
     559      689, 2146,  692,  693, 2119, 2118, 2568,  712,  723, 2568,
     560     2117, 2165, 2568,  714,    0,  555,  705,  759,  765,  776,
     561      593, 2568, 2123, 2099,    0,  784, 2141,  787,  632, 2568,
     562     2116, 2087,  798, 2568, 2568, 2119, 2568, 2568,  710,  725,
     563     2099, 2094,  720, 2090, 2089, 2085,    0, 2084,    0,  712,
     564      548,  710,  766,  767,  597,  745,  711,  777,  764,  788,
     565      720,  783,  792,  713,  639,  789,  611,  793, 2086,  794,
     566      791,  795,  810,  800,  805,  813,  814,  361,  818,  815,
     567
     568      816,  821,  825,  822,  826,  828,  829,  836,  838, 2080,
     569      841,  842,  843,  839,  844,  845,  846,  849,  847,  853,
     570      855,  860, 2079,  859,  905,  864,  866,  872,  870,  871,
     571      933,  930, 2075, 2069, 2068,    0, 2067,    0,  920,  924,
     572     2061,    0, 2060,    0, 2059,    0, 2074, 2568,  919,  920,
     573     2054, 2051,    0, 2045,    0,  935,  941,  953,  963,  974,
     574      986,  996, 2568, 2568,  960,  961, 1013,  989, 1047,  926,
     575     1045,  968, 2568, 2568, 2044, 2043, 2037,    0, 2036,    0,
     576     2035,    0, 2014,    0,  874,  873,  987,  903,  931,  932,
     577      984,  920,  994,  995,  974,  976, 1009, 1024, 1017,  992,
     578
     579     1029, 1027,  952, 1030, 1034, 1040, 2016, 1031, 2011, 1047,
     580     2010, 1049, 1043, 1054, 1038, 1056, 1057, 2009, 2003, 1052,
     581     1058, 1062, 1069, 1073, 1074, 1075, 2002, 1076, 2001, 1078,
     582     1079, 1082, 1083, 1085, 1081, 1086, 1092, 1089, 1099,  583,
     583     1108, 1095, 1087, 1995, 1097, 1109, 1160, 1991,    0, 1990,
     584        0, 1984,    0, 1983,    0, 1149, 1982,    0, 1978,    0,
     585     1977, 1976, 1972,    0, 1971,    0, 1156, 1162, 1207, 1121,
     586     1218, 1149, 1120, 1144, 2568, 1224, 1230, 1241, 1981, 1954,
     587     1959, 1957,    0, 1953,    0, 1951,    0, 1945,    0, 1944,
     588        0, 1943,    0, 1125, 1144, 1940, 1146, 1149, 1147, 1153,
     589
     590     1150, 1218, 1162, 1110, 1156, 1155, 1164, 1211, 1224, 1225,
     591     1226,  164, 1228, 1208, 1170, 1232, 1238, 1939, 1938, 1235,
     592     1932, 1227, 1231, 1234, 1242, 1931, 1246, 1247, 1250, 1930,
     593     1252, 1255, 1924, 1257, 1261, 1254, 1256, 1258, 1923, 1264,
     594      709, 1271, 1262, 1268, 1922, 1273, 1277, 1916, 1274, 1279,
     595     1915, 1963, 1905,    0, 1904,    0, 1903,    0, 1897,    0,
     596     1896,    0, 1895,    0, 1891,    0, 1890,    0, 1322, 1328,
     597     1334, 1345, 1889, 2568, 1356, 2568, 1380, 2568, 1885,    0,
     598     1884,    0, 1883,    0, 1850,    0,    0,    0, 1852,    0,
     599     1342, 1281, 1315, 1322, 1333, 1289, 1283, 1338, 1340, 1336,
     600
     601     1361, 1343, 1341, 1362, 1364, 1365, 1367, 1397, 1373, 1314,
     602     1376, 1375, 1377, 1847, 1378, 1380, 1382, 1846, 1845, 1381,
     603     1387, 1839, 1389, 1838, 1837, 1396, 1391, 1833, 1832, 1831,
     604     1827, 1826, 1825, 1392, 1818, 1407, 1394, 1846, 2568, 1793,
     605        0, 1792,    0,    0,    0, 1791,    0,    0,    0, 2568,
     606        0,    0,    0,    0, 1446, 1452, 1497, 1787,    0, 1786,
     607        0,    0,    0,    0, 1782, 1408, 1430, 1784, 1410, 1432,
     608     1437, 1411, 1412, 1443, 1433, 1783, 1447, 1445, 1457, 1413,
     609     1476, 1463, 1450, 1477, 1475, 1474, 1480, 1479, 1481, 1779,
     610     1482, 1778, 1483, 1777, 1773, 1464, 1485, 1772, 1490, 1486,
     611
     612        0,    0, 1768, 1764, 1763, 1762, 1537,    0, 1758, 1757,
     613     1756, 1752, 1751, 1753, 1749, 1748, 1747, 1496, 1497, 1499,
     614     1502, 1493, 1492, 1501, 1518, 1519, 1547, 1738, 1522, 1737,
     615     1523, 1458, 1528, 1530, 1524, 1734, 1733, 1732, 1715, 1707,
     616     1706, 1700, 1694, 1691, 1683, 1682, 1663, 1662, 1661, 1653,
     617     1652, 1613, 1612, 1529, 1614, 1534, 1535, 1538, 1536, 1542,
     618     1613, 1543, 1562, 1546, 1612, 1544, 1548, 1554, 1550, 1608,
     619     1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1598, 1597,
     620     1567, 1566, 1505, 1552, 1560, 1565, 1563, 1571, 1564, 1286,
     621     1285, 1575, 1188, 1158, 1576, 1001,  997,  950,  901,  753,
     622
     623      752,  642,  556, 1577, 1580,  519, 1584,  475, 1588, 1589,
     624     1590,  471,  407, 1582, 1583, 1594, 1596,  353,  298, 1595,
     625      274,  234,  233,  165, 2568, 1669, 1681, 1693, 1702, 1711,
     626     1723, 1732, 1744, 1756, 1768, 1775, 1784, 1790, 1796, 1802,
     627     1808, 1814, 1820, 1826, 1832, 1838, 1850, 1856, 1859, 1866,
     628     1868, 1874, 1880, 1886, 1888, 1894, 1899, 1911, 1923, 1929,
     629     1935, 1941, 1947, 1949, 1955, 1957, 1963, 1965, 1971, 1973,
     630     1979, 1981, 1987, 1989, 1995, 1997, 2003, 2010, 2016, 2022,
     631     2028, 2034, 2036, 2042, 2044, 2050, 2052, 2058, 2063, 2075,
     632     2081, 2087, 2089, 2095, 2097, 2103, 2105, 2111, 2113, 2119,
     633
     634     2121, 2127, 2129, 2135, 2141, 2143, 2149, 2151, 2157, 2163,
     635     2169, 2171, 2177, 2179, 2185, 2187, 2193, 2195, 2201, 2203,
     636     2209, 2214, 2226, 2232, 2238, 2240, 2246, 2248, 2254, 2256,
     637     2262, 2264, 2270, 2272, 2278, 2280, 2286, 2288, 2294, 2296,
     638     2302, 2308, 2310, 2316, 2318, 2324, 2326, 2332, 2334, 2336,
     639     2341, 2347, 2355, 2361, 2367, 2369, 2375, 2377, 2379, 2384,
     640     2390, 2392, 2394, 2396, 2398, 2400, 2402, 2404, 2410, 2412,
     641     2418, 2420, 2422, 2424, 2426, 2435, 2441, 2443, 2445, 2451,
     642     2457, 2463, 2465, 2471, 2477, 2483, 2489, 2495, 2501, 2507,
     643     2513, 2519, 2525, 2531, 2537, 2543, 2549, 2555
     644
    651645    } ;
    652646
    653 static yyconst flex_int16_t yy_def[1025] =
     647static yyconst flex_int16_t yy_def[999] =
    654648    {   0,
    655       851,    1,  852,  852,  851,    5,  853,  853,  854,  854,
    656       851,  851,  851,  851,  851,  851,  851,  855,  851,  851,
    657       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    658       851,   31,  851,  851,  851,  851,  851,  851,  856,  855,
    659       851,  851,  851,  851,  855,  851,  855,  855,  855,  855,
    660       855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
    661       855,  851,  851,  851,  851,  851,  857,  851,  851,  851,
    662       858,  851,  851,  859,  851,  851,  860,  851,  851,  851,
    663       851,  851,  851,  851,  855,  851,  851,  851,  851,  851,
    664       851,  851,  851,  851,  851,  851,  851,  851,  851,  861,
    665 
    666       851,  851,   30,  851,  851,  851,  851,  862,   30,  851,
    667        31,  851,  851,   31,  851,  851,  851,  851,  851,  851,
    668       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    669       851,  851,  851,  851,  851,  851,  851,  851,  863,  851,
    670       851,  851,  851,  855,  864,  865,  851,  851,  855,  855,
    671       855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
    672       855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
    673       855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
    674       855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
    675       855,  855,  851,  851,  851,  857,  857,  857,  851,  857,
    676 
    677       851,  858,  851,  866,  867,  859,  851,  851,  851,  851,
    678       868,  869,  870,  860,  851,  851,  851,  851,  851,  851,
    679       851,  851,  851,  851,  851,  851,  851,  871,  872,  851,
    680       851,  851,  851,  231,  873,  851,  851,  103,  103,  851,
    681       851,  851,  851,  851,  851,  851,  851,  874,  875,  876,
    682       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    683       851,  851,  851,  851,  863,  851,  877,  878,  879,  880,
    684       881,  882,  851,  883,  883,  883,  883,  883,  883,  883,
    685       883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
    686       883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
    687 
    688       883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
    689       883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
    690       883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
    691       883,  883,  883,  883,  883,  883,  884,  885,  886,  887,
    692       888,  889,  890,  891,  851,  851,  892,  893,  894,  895,
    693       896,  897,  851,  851,  851,  851,  851,  898,  899,  900,
    694       901,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    695       902,  903,  904,  851,  851,  851,  904,  851,  851,  851,
    696       905,  906,  907,  908,  909,  910,  911,  912,  913,  914,
    697       851,  915,  915,  915,  915,  915,  915,  915,  915,  915,
    698 
    699       915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
    700       915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
    701       915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
    702       915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
    703       915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
    704       915,  915,  915,  915,  915,  916,  917,  918,  919,  920,
    705       921,  922,  923,  924,  851,  925,  926,  927,  928,  929,
    706       929,  930,  931,  932,  933,  851,  851,  851,  934,  851,
    707       934,  851,  851,  851,  851,  851,  851,  851,  851,  935,
    708       936,  937,  938,  939,  940,  941,  942,  943,  944,  945,
    709 
    710       946,  947,  948,  948,  948,  948,  948,  948,  948,  948,
    711       948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
    712       948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
    713       948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
    714       948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
    715       948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
    716       948,  948,  949,  950,  951,  952,  953,  954,  955,  956,
    717       957,  958,  959,  960,  961,  962,  963,  964,  965,  851,
    718       851,  851,  851,  966,  851,  851,  851,  851,  851,  967,
    719       968,  969,  970,  971,  972,  973,  974,  975,  976,  977,
    720 
    721       978,  977,  977,  977,  977,  977,  977,  977,  977,  977,
    722       977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
    723       977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
    724       977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
    725       977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
    726       977,  977,  979,  851,  980,  981,  982,  983,  984,  985,
    727       986,  987,  988,  989,  851,  990,  991,  992,  993,  851,
    728       851,  851,  994,  995,  996,  997,  998,  999, 1000, 1001,
    729      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
    730      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
    731 
    732      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
    733      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1004,
    734       982, 1005, 1006, 1007,  851, 1008,  994,  996, 1009, 1010,
    735      1001, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
    736      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
    737      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
    738      1002, 1011, 1012, 1005, 1013, 1006, 1014, 1007, 1015, 1016,
    739      1009, 1017, 1010, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
    740      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
    741      1002, 1018, 1011, 1019, 1012, 1020, 1013, 1021, 1014, 1022,
    742 
    743      1015, 1023, 1016, 1017, 1002, 1002, 1002, 1002, 1002, 1002,
    744      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1024,
    745      1018, 1019, 1020, 1021,  996, 1022, 1023, 1002, 1002, 1002,
    746      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1024,  996, 1002,
    747      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
    748         0,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    749       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    750       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    751       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    752       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    753 
    754       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    755       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    756       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    757       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    758       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    759       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    760       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    761       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    762       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    763       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    764 
    765       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    766       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    767       851,  851,  851,  851
     649      825,    1,  826,  826,  825,    5,  827,  827,  828,  828,
     650      825,  825,  825,  825,  825,  825,  825,  829,  825,  825,
     651      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     652      825,   31,  825,  825,  825,  825,  825,  825,  830,  829,
     653      825,  825,  825,  825,  829,  825,  829,  829,  829,  829,
     654      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
     655      829,  825,  825,  825,  825,  825,  831,  825,  825,  825,
     656      832,  825,  825,  833,  825,  825,  834,  825,  825,  825,
     657      825,  825,  825,  825,  829,  825,  825,  825,  825,  825,
     658      825,  825,  825,  825,  825,  825,  825,  825,  825,  835,
     659
     660      825,  825,   30,  825,  825,  825,  825,  836,   30,  825,
     661       31,  825,  825,   31,  825,  825,  825,  825,  825,  825,
     662      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     663      825,  825,  825,  825,  825,  825,  825,  825,  837,  825,
     664      825,  825,  829,  838,  839,  825,  829,  829,  829,  829,
     665      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
     666      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
     667      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
     668      829,  829,  829,  829,  829,  829,  829,  829,  829,  825,
     669      825,  825,  831,  831,  831,  825,  831,  825,  832,  825,
     670
     671      840,  841,  833,  825,  825,  825,  825,  842,  843,  844,
     672      834,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     673      825,  825,  825,  825,  845,  846,  825,  825,  825,  825,
     674      228,  847,  825,  825,  103,  103,  825,  825,  825,  825,
     675      825,  825,  825,  825,  848,  849,  850,  825,  825,  825,
     676      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     677      825,  837,  825,  851,  852,  853,  854,  855,  856,  857,
     678      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     679      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     680      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     681
     682      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     683      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     684      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     685      858,  859,  860,  861,  862,  863,  864,  865,  825,  825,
     686      866,  867,  868,  869,  870,  871,  825,  825,  825,  825,
     687      825,  872,  873,  874,  875,  825,  825,  825,  825,  825,
     688      825,  825,  825,  825,  876,  877,  878,  825,  825,  825,
     689      878,  825,  825,  825,  879,  880,  881,  882,  883,  884,
     690      885,  886,  887,  888,  889,  889,  889,  889,  889,  889,
     691      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     692
     693      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     694      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     695      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     696      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     697      889,  889,  889,  889,  889,  889,  890,  891,  892,  893,
     698      894,  895,  896,  897,  898,  825,  899,  900,  901,  902,
     699      903,  903,  904,  905,  906,  907,  825,  825,  825,  908,
     700      825,  908,  825,  825,  825,  825,  825,  825,  825,  825,
     701      909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
     702      919,  920,  921,  922,  922,  922,  922,  922,  922,  922,
     703
     704      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     705      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     706      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     707      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     708      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     709      922,  923,  924,  925,  926,  927,  928,  929,  930,  931,
     710      932,  933,  934,  935,  936,  937,  938,  939,  825,  825,
     711      825,  825,  940,  825,  825,  825,  825,  825,  941,  942,
     712      943,  944,  945,  946,  947,  948,  949,  950,  951,  952,
     713      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     714
     715      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     716      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     717      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     718      951,  951,  951,  951,  951,  951,  951,  953,  825,  954,
     719      955,  956,  957,  958,  959,  960,  961,  962,  963,  825,
     720      964,  965,  966,  967,  825,  825,  825,  968,  969,  970,
     721      971,  972,  973,  974,  975,  976,  976,  976,  976,  976,
     722      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
     723      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
     724      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
     725
     726      977,  978,  956,  979,  980,  981,  825,  982,  968,  970,
     727      983,  984,  975,  976,  976,  976,  976,  976,  976,  976,
     728      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
     729      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
     730      976,  985,  986,  979,  987,  980,  988,  981,  989,  990,
     731      983,  991,  984,  976,  976,  976,  976,  976,  976,  976,
     732      976,  976,  976,  976,  976,  976,  976,  976,  976,  992,
     733      985,  993,  986,  994,  987,  995,  988,  996,  989,  997,
     734      990,  991,  976,  976,  976,  976,  976,  976,  976,  976,
     735      976,  976,  976,  976,  976,  998,  992,  993,  994,  995,
     736
     737      970,  996,  997,  976,  976,  976,  976,  976,  976,  976,
     738      976,  998,  970,  976,  976,  976,  976,  976,  976,  976,
     739      976,  976,  976,  976,    0,  825,  825,  825,  825,  825,
     740      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     741      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     742      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     743      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     744      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     745      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     746      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     747
     748      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     749      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     750      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     751      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     752      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     753      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     754      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     755      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     756      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     757      825,  825,  825,  825,  825,  825,  825,  825
     758
    768759    } ;
    769760
    770 static yyconst flex_int16_t yy_nxt[2848] =
     761static yyconst flex_int16_t yy_nxt[2653] =
    771762    {   0,
    772763       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    774765       28,   29,   30,   31,   32,   32,   32,   32,   33,   34,
    775766       35,   36,   37,   38,   39,   18,   18,   18,   18,   18,
    776        18,   18,   18,   40,   18,   18,   18,   18,   18,   40,
    777        18,   41,   42,   43,   44,   45,   46,   47,   48,   49,
    778        50,   51,   52,   53,   18,   54,   18,   55,   18,   18,
    779        18,   18,   56,   57,   58,   59,   60,   61,   18,   18,
    780        18,   62,   63,   64,   65,   66,   83,   91,   84,   84,
    781        66,   87,   88,   67,   70,   70,   70,   70,   70,   70,
    782 
    783        70,   70,   70,   70,   71,   70,   70,   70,   70,   70,
     767       18,   18,   18,   40,   18,   18,   18,   18,   40,   18,
     768       41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
     769       51,   52,   53,   18,   54,   18,   55,   18,   18,   18,
     770       18,   56,   57,   58,   59,   60,   61,   18,   18,   18,
     771       62,   63,   64,   65,   66,   83,   91,   84,   84,   66,
     772       87,   88,   67,   70,   70,   70,   70,   70,   70,   70,
     773
     774       70,   70,   70,   71,   70,   70,   70,   70,   70,   70,
    784775       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
    785        70,   70,   70,   70,   70,   70,   70,   70,   70,   71,
     776       70,   70,   70,   70,   70,   70,   70,   70,   71,   71,
    786777       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    787        71,   71,   71,   71,   71,   70,   72,   70,   70,   71,
    788        73,   71,   71,   71,   71,   71,   71,   71,   71,   71,
     778       71,   71,   71,   70,   72,   70,   70,   71,   73,   71,
    789779       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    790        71,   71,   71,   71,   71,   70,   70,   70,   70,   75,
    791        75,   78,   78,  122,  123,   89,  140,   78,   78,  619,
    792        75,   75,   79,   80,   81,   81,   81,   79,   81,   80,
    793 
    794        82,   82,   82,   81,   90,   92,   86,  141,  145,   97,
    795        94,   98,   98,   98,   98,   98,   98,  248,   86,   93,
    796        99,   84,   95,   96,   84,  100,  160,  117,  142,   76,
    797        76,   76,   76,  143,  146,  101,  102,   86,  103,  103,
    798       103,  103,  104,  104,  118,   86,  119,  120,  147,   86,
    799       148,  851,  250,  204,  181,  105,  193,  453,  158,  106,
    800       159,  149,  150,  151,   86,  107,  108,  152,  153,  161,
    801       154,  109,   86,  155,  156,  144,  162,  105,   86,  205,
    802        86,  157,  163,  110,  228,   86,  256,   86,  611,   86,
    803        86,  107,  192,   86,  108,  102,  246,  111,  111,  111,
    804 
    805       111,  111,  111,   86,  168,  176,  169,  194,  191,   86,
    806       229,  179,  164,  851,  105,  170,  165,  180,  112,  177,
    807       247,  166,   86,  254,  113,  167,  178,  171,   86,  259,
    808       114,  260,  244,   86,   86,  172,  105,  173,  245,  438,
    809       174,  142,  115,  851,  175,  282,  143,  255,  251,   86,
    810       113,  124,  276,   86,  245,  125,  126,   86,  127,  189,
    811       128,  129,  252,  130,  245,  131,   86,  277,  253,  182,
    812       183,  851,  244,  312,  132,  133,  134,   86,  186,  184,
    813       245,   86,  185,  253,  267,   86,  187,  259,  144,  260,
    814       278,  198,  199,  188,  253,  135,  198,  259,  136,  260,
    815 
    816       303,  252,  190,  195,   80,   81,   81,   81,  195,  253,
    817       268,  196,  200,  200,  200,  200,  200,  200,   79,   80,
    818        81,   81,   81,   79,   86,  137,  138,  207,  208,  259,
    819        86,  260,  207,  295,  209,  238,  238,  238,  238,  209,
    820        81,   80,   81,   81,   81,   81,  261,  300,  210,  210,
    821       210,  210,   81,   80,   82,   82,   82,   81,  261,  209,
    822       259,   86,  260,  851,  262,  259,   86,  260,  239,  259,
    823       259,  260,  260,   86,  259,  211,  260,  279,  209,  259,
    824       263,  260,  293,  209,  209,   86,   86,  209,  209,   86,
    825       259,  851,  260,  328,   86,  209,  301,  353,  209,  354,
    826 
    827       209,  212,  209,  142,  213,  215,  302,  280,  143,  216,
    828       217,   86,   86,   86,  218,  219,  281,  220,  102,  221,
    829       104,  104,  104,  104,  104,  104,   86,  274,  222,  223,
    830       224,  311,  305,  241,  275,  241,   86,  105,  242,  242,
    831       242,  242,  242,  242,   86,   86,   86,   86,  294,  225,
    832       298,   86,  226,  240,   86,   86,  306,  296,  297,  105,
    833       283,   86,  284,  299,  285,  286,  308,   86,  287,  309,
    834       288,  243,   86,  304,  307,  289,  290,  291,  310,  292,
    835       227,  231,  231,  231,  231,  231,  231,   86,   86,  317,
    836        86,   86,   86,   86,  313,  318,   86,   86,  232,  233,
    837 
    838        86,   86,  233,  315,  327,  142,   86,  319,  323,  314,
    839       316,  322,  398,  336,  234,   86,  339,  320,  321,   86,
    840       232,  233,   86,   86,  325,  324,  233,   98,   98,   98,
    841        98,   98,   98,  329,  330,  332,  334,   86,  335,  326,
    842        86,   86,  340,  333,  232,  233,  207,  208,  233,   86,
    843       392,  207,  331,  195,   80,   81,   81,   81,  195,  393,
    844       237,  196,   86,  198,  199,  556,  232,  233,  198,  198,
    845       199,  353,  233,  354,  198,  337,  199,  353,  395,  354,
    846       337,  353,  338,  354,  200,  200,  200,  200,  200,  200,
    847       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
    848 
    849       200,  200,  345,  345,  345,  345,  354,  354,  355,  353,
    850       353,  354,  354,  353,  356,  354,  353,  851,  354,  353,
    851       353,  354,  354,  353,  362,  354,  362,   86,   86,  363,
    852       363,  363,  363,  363,  363,  346,  231,  231,  231,  231,
    853       231,  231,  232,  233,  396,  369,  233,  379,  259,  259,
    854       260,  260,  366,  232,  233,   86,   86,  233,   86,   86,
    855       397,   86,  364,  399,  232,  233,  409,   86,  381,  234,
    856       233,  369,   86,  379,  394,  232,  233,   86,   86,  400,
    857       411,  233,  104,  104,  104,  104,  104,  104,  242,  242,
    858       242,  242,  242,  242,  382,   86,  404,   86,  405,  105,
    859 
    860        86,  367,  367,  367,  367,  367,  367,  372,   86,  410,
    861       401,   86,  406,   86,   86,  251,  402,  403,  241,  233,
    862       241,  105,  233,  242,  242,  242,  242,  242,  242,  413,
    863       374,  414,  375,   86,  368,  412,  376,   86,  415,   86,
    864        86,  233,  377,   86,   86,  422,  233,  104,  104,  104,
    865       104,  104,  104,  416,  378,  407,  408,  418,  375,   86,
    866        86,  419,  376,  111,  111,  111,  111,  111,  111,   86,
    867        86,   86,   86,   86,   86,  423,  417,  424,  425,  427,
    868       251,  420,  421,  426,   86,   86,   86,   86,  428,   86,
    869        86,  431,  432,  429,  433,   86,  256,   86,   86,   86,
    870 
    871       430,   86,   86,   86,   86,   86,   86,   86,   86,  435,
    872       437,  434,  142,  436,  439,  440,  445,   86,   86,   86,
    873       441,  444,   86,  443,  442,   86,   86,  446,  450,  447,
    874       448,  454,  353,   86,  354,  449,  451,  455,  452,  337,
    875       199,  199,  507,  353,  337,  354,  338,  197,  209,  209,
    876       209,  209,  345,  345,  345,  345,   86,  363,  363,  363,
    877       363,  363,  363,   86,  476,  476,  476,  476,  476,  476,
    878       362,  488,  362,   86,  503,  363,  363,  363,  363,  363,
    879       363,  465,  233,  644,  480,  233,  231,  231,  231,  231,
    880       231,  231,   86,   86,  481,  489,   86,  477,  238,  238,
    881 
    882       238,  238,  104,  104,  233,  509,  512,  480,  504,  233,
    883       480,  367,  367,  367,  367,  367,  367,  482,   86,  365,
    884       367,  367,  367,  367,  367,  367,   86,   86,   86,  233,
    885       483,  366,  233,  480,  372,  511,  484,  506,  233,  528,
    886       485,  233,  485,  505,  368,  486,  486,  486,  486,  486,
    887       486,  233,   86,  478,  484,   86,  233,  374,   86,  375,
    888       233,  851,  484,  376,   86,  233,  508,   86,   86,  377,
    889        86,   86,  483,   86,  510,  524,  518,   86,  487,   86,
    890       484,  378,  519,  513,  374,  375,  375,  515,  516,  376,
    891       376,   86,  514,   86,  520,  517,  490,  522,   86,   86,
    892 
    893        86,  521,   86,   86,   86,   86,   86,   86,  378,   86,
    894        86,  534,  375,  527,  523,  526,  376,  525,  531,  536,
    895        86,  535,  532,  529,   86,  530,   86,  533,   86,  539,
    896        86,   86,   86,   86,   86,  537,   86,   86,   86,   86,
    897        86,  540,  544,   86,  538,  542,   86,   86,   86,  545,
    898       541,  543,  551,  553,  554,  555,  548,  546,  547,  549,
    899       550,   86,   86,   86,  552,   86,   86,   86,  199,  557,
    900       691,   86,   86,  560,  563,  562,  480,  480,  585,  558,
    901       559,  209,  209,  209,  209,  603,  481,  561,  476,  476,
    902       476,  476,  476,  476,  476,  476,  476,  476,  476,  476,
    903 
    904       480,   86,  480,  480,  585,   86,  233,  851,   86,  233,
    905       584,   86,  233,   86,   86,  233,   86,   86,  602,   86,
    906       604,  477,  609,   86,  610,   86,  480,  580,  233,  606,
    907       607,  605,  608,  233,  233,  614,  617,   86,   86,  233,
    908       367,  367,  367,  367,  367,  367,  581,  615,  581,  627,
    909       618,  582,  582,  582,  582,  582,  582,  486,  486,  486,
    910       486,  486,  486,   86,  586,  586,  586,  586,  586,  586,
    911       485,   86,  485,  478,   86,  486,  486,  486,  486,  486,
    912       486,   86,  587,  612,  583,  587,  616,   86,   86,   86,
    913       613,  622,   86,   86,   86,  625,  620,  588,  623,  624,
    914 
    915        86,   86,  626,   86,  587,   86,   86,  629,   86,  587,
    916       621,   86,   86,   86,  631,  632,   86,  628,  630,   86,
    917        86,  637,   86,  634,   86,  633,   86,  635,  636,  638,
    918        86,  639,   86,   86,   86,   86,  648,  641,  643,  645,
    919        86,  640,   86,  642,  649,   86,  647,   86,   86,   86,
    920       650,   86,   86,   86,  697,  646,  683,  684,   86,  688,
    921       652,  689,  651,  476,  476,  476,  476,  476,  476,  582,
    922       582,  582,  582,  582,  582,  686,  670,  670,  670,  670,
    923       670,  670,  581,   86,  581,   86,   86,  582,  582,  582,
    924       582,  582,  582,  714,  587,   86,  580,  587,  685,  586,
    925 
    926       586,  586,  586,  586,  586,   86,  687,   86,  692,  671,
    927       586,  586,  586,  586,  586,  586,  587,  587,   86,   86,
    928       587,  587,  690,  681,   86,   86,  699,   86,  587,  694,
    929        86,  587,  588,   86,  693,   86,  682,   86,   86,  587,
    930        86,  695,  700,  672,  587,   86,  702,  696,  703,  705,
    931       587,   86,  698,  701,   86,  587,   86,   86,   86,   86,
    932       704,   86,   86,   86,   86,   86,  709,  706,   86,   86,
    933       713,  715,   86,  717,  707,  716,   86,   86,  708,  710,
    934       712,   86,  733,  718,  777,  711,  670,  670,  670,  670,
    935       670,  670,  670,  670,  670,  670,  670,  670,  732,   86,
    936 
    937        86,  737,  734,   86,  587,  736,  735,  587,   86,   86,
    938       587,  738,  739,  587,   86,   86,  745,  851,   86,  671,
    939       741,  740,  748,   86,  742,  725,  587,   86,  752,   86,
    940       743,  587,  587,   86,   86,   86,  746,  587,  586,  586,
    941       586,  586,  586,  586,  744,   86,   86,   86,   86,   86,
    942       749,   86,   86,   86,   86,  747,  754,  756,   86,  751,
    943        86,   86,  750,  755,   86,  753,   86,   86,   86,  760,
    944        86,  672,   86,  757,   86,  761,  783,  778,   86,  776,
    945       758,  759,  670,  670,  670,  670,  670,  670,  774,  775,
    946       780,   86,   86,  779,  781,   86,   86,   86,  784,  785,
    947 
    948        86,  790,   86,   86,   86,  782,  787,  786,   86,   86,
    949        86,  788,  789,   86,   86,  725,  808,   86,   86,   86,
    950       812,  810,   86,   86,   86,  791,  813,  815,   86,   86,
    951        86,  806,  807,  816,   86,   86,  805,  811,  817,  809,
    952        86,   86,   86,   86,  814,  830,   86,  829,   86,  828,
    953       818,  819,  831,   86,   86,   86,  832,  834,  833,   86,
    954        86,   86,  835,   86,  836,   86,   86,   86,  841,  837,
    955       840,   86,   86,   86,  842,  843,  844,   86,   86,   86,
    956       845,  847,  848,   86,   86,  846,  849,  851,  851,  850,
     780       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
     781       71,   71,   71,   70,   70,   70,   70,   75,   75,   78,
     782       78,  122,  123,   89,   86,   78,   78,  608,   75,   75,
     783       79,   80,   81,   81,   81,   79,   81,   80,   82,   82,
     784
     785       82,   81,   90,   92,  158,  144,   86,   97,   94,   98,
     786       98,   98,   98,   98,   98,   86,   86,   93,   99,   84,
     787       95,   96,   84,  100,  173,  117,   76,   76,   76,   76,
     788      141,  145,   86,  101,  102,  142,  103,  103,  103,  103,
     789      104,  104,  118,   86,  119,  120,  256,   86,  257,   86,
     790      176,   86,  159,  105,  190,   86,  177,  106,  162,  160,
     791      178,  201,  107,  108,  156,  161,  157,  163,  109,   86,
     792      165,  164,  166,   86,  105,   86,  143,  225,   86,  174,
     793      110,  167,  243,  251,   86,   86,  175,  202,  107,   86,
     794      189,  108,  102,  188,  111,  111,  111,  111,  111,  111,
     795
     796      245,  183,  241,  226,  191,  244,  252,  242,  256,  184,
     797      257,  105,  147,  148,  149,  112,  185,   86,  150,  151,
     798      113,  152,   86,  153,  154,   86,  114,  168,   86,  179,
     799      180,  155,  105,  242,  247,  169,  264,  170,  115,  181,
     800      171,  256,  182,  257,  172,  141,  113,  124,  249,   86,
     801      142,  125,  126,  250,  127,  825,  128,  129,  256,  130,
     802      257,  131,  265,  186,   79,   80,   81,   81,   81,   79,
     803      132,  133,  134,  192,   80,   81,   81,   81,  192,  250,
     804       86,  193,   81,   80,   81,   81,   81,   81,   86,  253,
     805      135,  143,  278,  136,   81,   80,   82,   82,   82,   81,
     806
     807      258,  195,  196,  258,   86,  187,  195,  235,  235,  235,
     808      235,  256,   86,  257,  256,  256,  257,  257,  416,  825,
     809      137,  138,  197,  197,  197,  197,  197,  197,  204,  205,
     810      256,  260,  257,  204,  825,  206,  238,   86,  238,  236,
     811      206,  239,  239,  239,  239,  239,  239,   86,  825,  207,
     812      207,  207,  207,  248,  242,  259,  256,  306,  257,  250,
     813      206,  825,  825,  102,  296,  104,  104,  104,  104,  104,
     814      104,   86,  241,  240,   86,  208,  825,  249,  206,  256,
     815      242,  257,  105,  206,  206,  250,  270,  206,  206,  256,
     816       86,  257,  272,  271,  141,  206,   86,  237,  206,  142,
     817
     818      206,  209,  206,  105,  210,  212,   86,   86,  273,  213,
     819      214,   86,  275,   86,  215,  216,  274,  217,   86,  218,
     820       86,   86,   86,   86,  276,  825,   86,  291,  219,  220,
     821      221,   86,  297,  277,   86,  290,  289,   86,   86,  279,
     822       86,  280,  300,  281,  282,   86,  298,  283,  222,  284,
     823      294,  223,  292,  293,  285,  286,  287,   86,  288,   86,
     824       86,   86,  302,  295,   86,  299,  347,   86,  348,   86,
     825       86,   86,  303,   86,  312,  825,  304,   86,  305,  224,
     826      228,  228,  228,  228,  228,  228,  309,  301,  307,  308,
     827      311,   86,   86,  310,   86,  316,  319,  229,  230,   86,
     828
     829       86,  230,   86,  313,   86,  317,  141,  333,   86,  360,
     830      825,  320,  231,  314,  315,  321,   86,  386,  229,  230,
     831      322,  330,  318,   86,  230,   98,   98,   98,   98,   98,
     832       98,  323,   86,  334,   86,  324,  326,  347,  347,  348,
     833      348,  363,  229,  230,  327,  328,  230,  329,   86,   86,
     834      204,  205,  325,  390,  348,  204,  347,  234,  348,  545,
     835      195,  196,   86,  229,  230,  195,  347,  363,  348,  230,
     836      192,   80,   81,   81,   81,  192,  349,  347,  193,  348,
     837      373,  197,  197,  197,  197,  197,  197,  195,  196,  405,
     838       86,  348,  195,  331,  196,  347,  825,  348,  331,  403,
     839
     840      332,  339,  339,  339,  339,  347,  373,  348,  197,  197,
     841      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
     842      347,  350,  348,  347,  347,  348,  348,  104,  104,  104,
     843      104,  104,  104,  340,  228,  228,  228,  228,  228,  228,
     844      356,  256,  356,  257,  105,  357,  357,  357,  357,  357,
     845      357,  229,  230,  229,  230,  230,  256,  230,  257,  248,
     846       86,   86,   86,   86,   86,  105,  231,  392,  375,  402,
     847      630,   86,  229,  230,  229,  230,  385,  358,  230,  387,
     848      230,  239,  239,  239,  239,  239,  239,  361,  361,  361,
     849      361,  361,  361,  238,  376,  238,   86,  398,  239,  239,
     850
     851      239,  239,  239,  239,  366,  230,  813,  825,  230,  104,
     852      104,  104,  104,  104,  104,   86,  391,   86,   86,  362,
     853      111,  111,  111,  111,  111,  111,  230,  368,   86,  369,
     854      394,  230,  370,  388,   86,  389,  395,  396,  371,   86,
     855       86,  248,   86,   86,   86,   86,   86,  408,  393,  399,
     856      372,   86,  253,  404,  369,  409,   86,  397,  370,  400,
     857      401,   86,  406,  407,   86,   86,   86,   86,  410,   86,
     858      415,  411,   86,   86,  412,  418,   86,   86,  422,   86,
     859       86,  420,  423,  419,  424,  413,  414,   86,  417,   86,
     860       86,  421,   86,   86,   86,   86,   86,   86,   86,  426,
     861
     862       86,  425,  428,  429,   86,  427,   86,  431,  430,  436,
     863       86,   86,  432,  141,  435,   86,  434,   86,  433,  441,
     864      437,   86,   86,   86,   86,   86,  445,  438,  439,  440,
     865      443,  444,  196,  442,  331,  196,  494,  446,  194,  331,
     866      495,  332,  206,  206,  206,  206,  339,  339,  339,  339,
     867      347,  347,  348,  348,   86,  825,   86,  357,  357,  357,
     868      357,  357,  357,  467,  467,  467,  467,  467,  467,  479,
     869      356,   86,  356,  497,  456,  357,  357,  357,  357,  357,
     870      357,  230,   86,   86,  230,  228,  228,  228,  228,  228,
     871      228,  498,  480,  501,  499,  468,  235,  235,  235,  235,
     872
     873      104,  104,  230,   86,  825,  471,  471,  230,  361,  361,
     874      361,  361,  361,  361,  472,  473,  475,  359,  361,  361,
     875      361,  361,  361,  361,  514,   86,  230,   86,  360,  230,
     876      471,  471,  474,  366,  474,   86,  230,  475,   86,  230,
     877      362,  504,  475,   86,  500,   86,   86,  230,  510,  505,
     878      469,  825,  230,  496,  502,  812,  368,  230,  369,  503,
     879       86,  370,  230,  475,  476,  825,  476,  371,   86,  477,
     880      477,  477,  477,  477,  477,   86,  506,  507,   86,  372,
     881       86,   86,   86,  369,  513,   86,  509,  370,  368,   86,
     882      369,   86,  515,  370,   86,  511,  518,  508,   86,  481,
     883
     884       86,  478,  512,   86,  516,   86,  517,   86,   86,   86,
     885      519,  372,  524,   86,  522,  369,  521,  526,  523,  370,
     886       86,  520,  525,  527,   86,   86,   86,   86,  529,   86,
     887       86,  528,   86,   86,   86,  533,   86,   86,   86,  531,
     888       86,  540,  530,   86,  534,  532,   86,  543,   86,  549,
     889       86,  536,  535,  537,  538,  541,  542,  544,  539,   86,
     890       86,   86,  196,  548,  600,  471,  471,  546,  552,  551,
     891      550,  206,  206,  206,  206,  472,   86,  547,  467,  467,
     892      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
     893      471,  471,  574,  591,  471,   86,  230,   86,   86,  230,
     894
     895       86,   86,  230,  573,   86,  230,   86,   86,  592,   86,
     896      468,  595,  593,   86,  597,   86,  569,  230,  574,  471,
     897      594,   86,  230,  230,  599,  602,  596,  601,  230,  361,
     898      361,  361,  361,  361,  361,  570,  603,  570,  611,   86,
     899      571,  571,  571,  571,  571,  571,  477,  477,  477,  477,
     900      477,  477,  575,  575,  575,  575,  575,  575,  476,   86,
     901      476,  469,   86,  477,  477,  477,  477,  477,  477,   86,
     902      576,  604,  572,  576,  598,   86,   86,   86,   86,   86,
     903      605,  610,   86,   86,  577,   86,   86,  606,  609,   86,
     904      607,  576,  612,   86,  613,  614,  576,   86,   86,  616,
     905
     906      617,   86,  618,   86,  615,   86,   86,   86,   86,   86,
     907      620,  623,   86,   86,  619,   86,  621,  624,  622,   86,
     908      627,  625,   86,  629,   86,   86,  628,  626,   86,  631,
     909       86,  633,   86,  634,   86,  632,   86,   86,  635,  668,
     910       86,  673,  636,  637,  467,  467,  467,  467,  467,  467,
     911      571,  571,  571,  571,  571,  571,  655,  655,  655,  655,
     912      655,  655,  570,  672,  570,   86,   86,  571,  571,  571,
     913      571,  571,  571,   86,  576,  669,  569,  576,  575,  575,
     914      575,  575,  575,  575,   86,  686,  670,   86,  656,   86,
     915      676,   86,   86,   86,   86,  576,  576,  674,  666,  576,
     916
     917      576,  671,  575,  575,  575,  575,  575,  575,  675,  678,
     918      577,  667,   86,   86,  679,   86,   86,  576,   86,  682,
     919      576,  684,  576,  576,   86,  677,   86,   86,   86,   86,
     920      680,   86,   86,   86,  657,  683,  687,  681,   86,  685,
     921       86,  576,   86,   86,  688,   86,  576,   86,   86,  697,
     922      689,  690,  693,  698,  691,  692,  696,  695,   86,   86,
     923      700,   86,   86,   86,   86,  694,  720,  699,  655,  655,
     924      655,  655,  655,  655,  655,  655,  655,  655,  655,  655,
     925      714,   86,  719,   86,   86,  726,  576,  716,   86,  576,
     926      717,  715,  576,  718,   86,  576,   86,  721,   86,  727,
     927
     928      656,   86,  722,  730,  723,  724,  707,  576,   86,   86,
     929      729,  725,  576,  576,   86,   86,  766,  728,  576,  575,
     930      575,  575,  575,  575,  575,   86,   86,   86,   86,  731,
     931       86,   86,   86,   86,   86,  738,   86,   86,  732,  733,
     932      734,   86,  736,   86,   86,  735,  741,   86,   86,  740,
     933       86,  657,   86,   86,  758,  756,   86,  737,  739,  655,
     934      655,  655,  655,  655,  655,  755,  759,  754,  757,   86,
     935       86,  763,  761,   86,   86,   86,  764,  765,  760,   86,
     936       86,   86,  767,  762,  768,   86,   86,   86,  790,   86,
     937      769,  707,  786,   86,   86,   86,  788,   86,   86,   86,
     938
     939      791,   86,  793,   86,  785,   86,  784,  783,  794,  787,
     940      795,   86,  789,   86,   86,   86,   86,  792,  805,  806,
     941      825,  825,   86,  807,  804,  808,   86,   86,   86,  810,
     942      811,   86,  809,   86,   86,   86,  815,  814,  816,   86,
     943       86,   86,  817,  818,  819,   86,   86,   86,  822,  821,
     944      823,  803,  825,  820,  802,  825,  800,  825,  799,  825,
     945      798,  825,  797,   86,   86,   86,  825,  782,  824,   68,
    957946       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
    958 
    959        68,   68,   68,   74,   74,   74,   74,   74,   74,   74,
    960        74,   74,   74,   74,   74,   74,   77,   77,   77,   77,
    961        77,   77,   77,   77,   77,   77,   77,   77,   77,   85,
    962       839,  851,   85,  851,   85,   85,   85,   85,   85,  139,
    963       851,  851,  838,  139,  139,  139,  139,  139,  139,  197,
    964       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
    965       197,  197,  202,   86,   86,  202,   86,  202,  202,  202,
    966       202,  202,  206,   86,  206,  206,   86,  206,  206,  206,
    967       206,  206,  206,  851,  206,  214,  851,  827,  214,  214,
    968       214,  214,  214,  214,  214,  214,  851,  214,  235,  235,
    969 
    970       235,  235,  235,  235,  235,  235,  235,  235,  235,  235,
    971       235,  249,  249,  826,  249,  851,  824,  851,  249,  265,
    972       823,  851,  265,  822,  265,  265,  265,  265,  265,  269,
    973       851,  269,  821,   86,   86,  269,  271,   86,  271,  851,
    974       804,  851,  271,  341,  803,  341,  801,  851,  799,  341,
    975       343,  851,  343,  797,  851,  795,  343,  347,  793,  347,
    976        86,   86,   86,  347,  349,   86,  349,   86,   86,   86,
    977       349,  351,   86,  351,   86,   86,   86,  351,  358,   86,
    978       358,  851,  773,  771,  358,  360,  851,  360,  851,  768,
    979       766,  360,  235,  235,  235,  235,  235,  235,  235,  235,
    980 
    981       235,  235,  235,  235,  235,  371,  764,  371,  373,  373,
    982       851,  373,  373,  373,   86,  373,  249,  249,   86,  249,
    983       383,   86,  383,   86,   86,   86,  383,  385,   86,  385,
    984        86,  731,  728,  385,  387,  727,  387,  203,  721,  720,
    985       387,  269,  654,  269,  389,   86,  389,   86,   86,   86,
    986       389,  271,   86,  271,   85,   86,   86,   85,   86,   85,
    987        85,   85,   85,   85,  197,  197,  197,  197,  197,  197,
    988       197,  197,  197,  197,  197,  197,  197,  456,  456,  456,
    989       456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
    990       457,   86,  457,   86,   86,   86,  457,  459,   86,  459,
    991 
    992        86,   86,  679,  459,  461,  678,  461,  676,  674,  584,
    993       461,  341,  669,  341,  463,  668,  463,  666,  664,  662,
    994       463,  343,  660,  343,  466,  658,  466,  656,  654,   86,
    995       466,  347,   86,  347,  468,   86,  468,   86,   86,   86,
    996       468,  349,   86,  349,  470,   86,  470,   86,  601,  599,
    997       470,  351,  597,  351,  472,  595,  472,  593,  591,  490,
    998       472,  358,  589,  358,  474,  589,  474,  579,  577,  471,
    999       474,  360,  471,  360,  479,  575,  479,  573,  479,  571,
    1000       479,  371,  569,  371,  567,  371,  565,  371,  373,  373,
    1001        86,  373,  373,  373,   86,  373,  491,   86,  491,   86,
    1002 
    1003        86,   86,  491,  493,   86,  493,   86,  502,  500,  493,
    1004       495,  498,  495,  496,  494,  492,  495,  383,  475,  383,
    1005       497,  473,  497,  354,  354,  471,  497,  385,  469,  385,
    1006       499,  467,  499,  464,  462,  460,  499,  387,  458,  387,
    1007       501,   86,  501,   86,   86,  391,  501,  389,  390,  389,
    1008        85,  388,  386,   85,  384,   85,   85,   85,   85,   85,
    1009       456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
    1010       456,  456,  456,  564,  266,  564,  261,  260,  380,  564,
    1011       457,  380,  457,  566,  248,  566,  370,  370,  236,  566,
    1012       459,  365,  459,  568,  361,  568,  359,  357,  353,  568,
    1013 
    1014       461,  352,  461,  570,  350,  570,  348,  344,  342,  570,
    1015       463,  203,  463,  572,  199,  572,   86,  273,  272,  572,
    1016       466,  270,  466,  574,  266,  574,  261,  264,  261,  574,
    1017       468,  259,  468,  470,  258,  470,  257,  236,  230,  470,
    1018       576,   84,  576,   84,   86,  203,  576,  472,  201,  472,
    1019       578,   84,  578,  121,  116,   86,  578,  474,  851,  474,
    1020       479,   69,  479,   69,  479,  851,  479,  373,  851,  373,
    1021       851,  851,  851,  373,  590,  851,  590,  851,  851,  851,
    1022       590,  491,  851,  491,  592,  851,  592,  851,  851,  851,
    1023       592,  493,  851,  493,  594,  851,  594,  851,  851,  851,
    1024 
    1025       594,  495,  851,  495,  596,  851,  596,  851,  851,  851,
    1026       596,  497,  851,  497,  598,  851,  598,  851,  851,  851,
    1027       598,  499,  851,  499,  600,  851,  600,  851,  851,  851,
    1028       600,  501,  851,  501,   85,  851,  851,   85,  851,   85,
    1029        85,   85,   85,   85,  653,  653,  653,  653,  653,  653,
    1030       653,  653,  653,  653,  653,  653,  653,  655,  851,  655,
    1031       851,  851,  851,  655,  564,  851,  564,  657,  851,  657,
    1032       851,  851,  851,  657,  566,  851,  566,  659,  851,  659,
    1033       851,  851,  851,  659,  568,  851,  568,  661,  851,  661,
    1034       851,  851,  851,  661,  570,  851,  570,  663,  851,  663,
    1035 
    1036       851,  851,  851,  663,  572,  851,  572,  665,  851,  665,
    1037       851,  851,  851,  665,  574,  851,  574,  667,  851,  667,
    1038       851,  851,  851,  667,  576,  851,  576,   85,  851,   85,
    1039       851,  851,  851,   85,  578,  851,  578,  479,  851,  479,
    1040       851,  851,  851,  479,  673,  851,  673,  851,  851,  851,
    1041       673,  590,  851,  590,  675,  851,  675,  851,  851,  851,
    1042       675,  592,  851,  592,  677,  851,  677,  851,  851,  851,
    1043       677,  594,  851,  594,  139,  851,  139,  851,  851,  851,
    1044       139,  596,  851,  596,  680,  851,  680,  598,  851,  598,
    1045        85,  851,  851,   85,  851,   85,   85,   85,   85,   85,
    1046 
    1047       600,  851,  600,  653,  653,  653,  653,  653,  653,  653,
    1048       653,  653,  653,  653,  653,  653,  719,  851,  719,  851,
    1049       851,  851,  719,  655,  851,  655,  202,  851,  202,  851,
    1050       851,  851,  202,  657,  851,  657,  722,  851,  722,  659,
    1051       851,  659,  202,  851,  851,  202,  851,  202,  202,  202,
    1052       202,  202,  661,  851,  661,  723,  851,  723,  663,  851,
    1053       663,  665,  851,  665,  724,  851,  724,  667,  851,  667,
    1054        85,  851,   85,  726,  851,  726,  851,  851,  851,  726,
    1055       673,  851,  673,  265,  851,  265,  851,  851,  851,  265,
    1056       675,  851,  675,  729,  851,  729,  677,  851,  677,  139,
    1057 
    1058       851,  139,  730,  851,  730,  851,  851,  851,  730,   85,
    1059       851,  851,   85,  851,   85,   85,   85,   85,   85,  762,
    1060       851,  762,  719,  851,  719,  763,  851,  763,  851,  851,
    1061       851,  763,  765,  851,  765,  851,  851,  851,  765,  767,
    1062       851,  767,  851,  851,  851,  767,  769,  851,  769,  770,
    1063       851,  770,  851,  851,  851,  770,  772,  851,  772,  851,
    1064       851,  851,  772,  792,  851,  792,  851,  851,  851,  792,
    1065       794,  851,  794,  851,  851,  851,  794,  796,  851,  796,
    1066       851,  851,  851,  796,  798,  851,  798,  851,  851,  851,
    1067       798,  800,  851,  800,  851,  851,  851,  800,  802,  851,
    1068 
    1069       802,  851,  851,  851,  802,  600,  851,  600,  851,  851,
    1070       851,  600,  820,  851,  820,  851,  851,  851,  820,  661,
    1071       851,  661,  851,  851,  851,  661,  665,  851,  665,  851,
    1072       851,  851,  665,   85,  851,   85,  851,  851,  851,   85,
    1073       825,  851,  825,  851,  851,  851,  825,  139,  851,  139,
    1074       851,  851,  851,  139,  202,  851,  202,  851,  851,  851,
    1075       202,   11,  851,  851,  851,  851,  851,  851,  851,  851,
    1076       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1077       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1078       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1079 
    1080       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1081       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1082       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1083       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1084       851,  851,  851,  851,  851,  851,  851
     947       68,   74,   74,   74,   74,   74,   74,   74,   74,   74,
     948       74,   74,   74,   77,   77,   77,   77,   77,   77,   77,
     949
     950       77,   77,   77,   77,   77,   85,  825,  781,   85,   85,
     951       85,   85,   85,   85,  139,  779,  825,  777,  139,  139,
     952      139,  139,  139,  194,  194,  194,  194,  194,  194,  194,
     953      194,  194,  194,  194,  194,  199,  825,  775,  199,  199,
     954      199,  199,  199,  199,  203,  825,  203,  203,  773,  203,
     955      203,  203,  203,  203,  771,  203,  211,   86,   86,  211,
     956      211,  211,  211,  211,  211,  211,   86,  211,  232,  232,
     957      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
     958      246,  246,  246,   86,   86,   86,  246,  262,   86,   86,
     959      262,  262,  262,  262,  262,  262,  266,  266,   86,   86,
     960
     961       86,  266,  268,  268,   86,  825,  753,  268,  335,  335,
     962      751,  825,  825,  335,  337,  337,  748,  746,  744,  337,
     963      341,  341,  825,   86,   86,  341,  343,  343,   86,   86,
     964       86,  343,  345,  345,   86,   86,  713,  345,  352,  352,
     965      710,  709,  200,  352,  354,  354,  703,  702,  639,  354,
     966      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
     967      232,  232,  365,  365,  367,  367,  367,  367,  367,   86,
     968      367,  246,  246,  246,  377,  377,   86,   86,   86,  377,
     969      379,  379,   86,   86,   86,  379,  381,  381,   86,   86,
     970       86,  381,  266,  266,  383,  383,   86,   86,   86,  383,
     971
     972      268,  268,   85,   86,  664,   85,   85,   85,   85,   85,
     973       85,  194,  194,  194,  194,  194,  194,  194,  194,  194,
     974      194,  194,  194,  447,  447,  447,  447,  447,  447,  447,
     975      447,  447,  447,  447,  447,  448,  448,  663,  661,  659,
     976      448,  450,  450,  573,  654,  653,  450,  452,  452,  651,
     977      649,  647,  452,  335,  335,  454,  454,  645,  643,  641,
     978      454,  337,  337,  457,  457,  639,   86,   86,  457,  341,
     979      341,  459,  459,   86,   86,   86,  459,  343,  343,  461,
     980      461,   86,   86,   86,  461,  345,  345,  463,  463,   86,
     981       86,   86,  463,  352,  352,  465,  465,  590,  588,  586,
     982
     983      465,  354,  354,  470,  470,  584,  470,  582,  470,  365,
     984      365,  580,  365,  481,  365,  367,  367,  367,  367,  367,
     985      578,  367,  482,  482,  578,  568,  566,  482,  484,  484,
     986      462,  462,  564,  484,  486,  486,  562,  560,  558,  486,
     987      377,  377,  488,  488,  556,  554,   86,  488,  379,  379,
     988      490,  490,   86,   86,   86,  490,  381,  381,  492,  492,
     989       86,   86,   86,  492,  383,  383,   85,   86,  493,   85,
     990       85,   85,   85,   85,   85,  447,  447,  447,  447,  447,
     991      447,  447,  447,  447,  447,  447,  447,  553,  553,  491,
     992      489,  487,  553,  448,  448,  555,  555,  485,  483,  466,
     993
     994      555,  450,  450,  557,  557,  464,  348,  348,  557,  452,
     995      452,  559,  559,  462,  460,  458,  559,  454,  454,  561,
     996      561,  455,  453,  451,  561,  457,  457,  563,  563,  449,
     997       86,   86,  563,  459,  459,  461,  461,   86,  384,  382,
     998      461,  565,  565,  380,  378,  263,  565,  463,  463,  567,
     999      567,  258,  257,  374,  567,  465,  465,  470,  470,  374,
     1000      470,  245,  470,  367,  367,  364,  364,  233,  367,  579,
     1001      579,  359,  355,  353,  579,  482,  482,  581,  581,  351,
     1002      347,  346,  581,  484,  484,  583,  583,  344,  342,  338,
     1003      583,  486,  486,  585,  585,  336,  200,  196,  585,  488,
     1004
     1005      488,  587,  587,   86,  269,  267,  587,  490,  490,  589,
     1006      589,  263,  258,  261,  589,  492,  492,   85,  258,  256,
     1007       85,   85,   85,   85,   85,   85,  638,  638,  638,  638,
     1008      638,  638,  638,  638,  638,  638,  638,  638,  640,  640,
     1009      255,  254,  233,  640,  553,  553,  642,  642,  227,   84,
     1010       84,  642,  555,  555,  644,  644,   86,  200,  198,  644,
     1011      557,  557,  646,  646,   84,  146,  140,  646,  559,  559,
     1012      648,  648,  121,  116,   86,  648,  561,  561,  650,  650,
     1013      825,   69,   69,  650,  563,  563,  652,  652,  825,  825,
     1014      825,  652,  565,  565,   85,   85,  825,  825,  825,   85,
     1015
     1016      567,  567,  470,  470,  825,  825,  825,  470,  658,  658,
     1017      825,  825,  825,  658,  579,  579,  660,  660,  825,  825,
     1018      825,  660,  581,  581,  662,  662,  825,  825,  825,  662,
     1019      583,  583,  139,  139,  825,  825,  825,  139,  585,  585,
     1020      665,  665,  587,  587,   85,  825,  825,   85,   85,   85,
     1021       85,   85,   85,  589,  589,  638,  638,  638,  638,  638,
     1022      638,  638,  638,  638,  638,  638,  638,  701,  701,  825,
     1023      825,  825,  701,  640,  640,  199,  199,  825,  825,  825,
     1024      199,  642,  642,  704,  704,  644,  644,  199,  825,  825,
     1025      199,  199,  199,  199,  199,  199,  646,  646,  705,  705,
     1026
     1027      648,  648,  650,  650,  706,  706,  652,  652,   85,   85,
     1028      708,  708,  825,  825,  825,  708,  658,  658,  262,  262,
     1029      825,  825,  825,  262,  660,  660,  711,  711,  662,  662,
     1030      139,  139,  712,  712,  825,  825,  825,  712,   85,  825,
     1031      825,   85,   85,   85,   85,   85,   85,  742,  742,  701,
     1032      701,  743,  743,  825,  825,  825,  743,  745,  745,  825,
     1033      825,  825,  745,  747,  747,  825,  825,  825,  747,  749,
     1034      749,  750,  750,  825,  825,  825,  750,  752,  752,  825,
     1035      825,  825,  752,  770,  770,  825,  825,  825,  770,  772,
     1036      772,  825,  825,  825,  772,  774,  774,  825,  825,  825,
     1037
     1038      774,  776,  776,  825,  825,  825,  776,  778,  778,  825,
     1039      825,  825,  778,  780,  780,  825,  825,  825,  780,  589,
     1040      589,  825,  825,  825,  589,  796,  796,  825,  825,  825,
     1041      796,  646,  646,  825,  825,  825,  646,  650,  650,  825,
     1042      825,  825,  650,   85,   85,  825,  825,  825,   85,  801,
     1043      801,  825,  825,  825,  801,  139,  139,  825,  825,  825,
     1044      139,  199,  199,  825,  825,  825,  199,   11,  825,  825,
     1045      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1046      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1047      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1048
     1049      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1050      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1051      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1052      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1053      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1054      825,  825
    10851055    } ;
    10861056
    1087 static yyconst flex_int16_t yy_chk[2848] =
     1057static yyconst flex_int16_t yy_chk[2653] =
    10881058    {   0,
    10891059        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    10951065        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    10961066        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1097         1,    1,    1,    1,    1,    2,   16,   24,   16,   24,
    1098         2,   19,   19,    2,    5,    5,    5,    5,    5,    5,
     1067        1,    1,    1,    1,    2,   16,   24,   16,   24,    2,
     1068       19,   19,    2,    5,    5,    5,    5,    5,    5,    5,
    10991069
    11001070        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
     
    11051075        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11061076        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    1107         5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
    1108         8,    9,   10,   37,   37,   20,   39,    9,   10,  521,
    1109         7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
    1110 
    1111        15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
    1112        27,   28,   28,   28,   28,   28,   28,  108,  521,   25,
    1113        29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
    1114         8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
    1115        30,   30,   30,   30,   35,   56,   35,   35,   44,  334,
    1116        44,  114,  108,   72,   56,   30,   63,  334,   47,   30,
    1117        47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
    1118        45,   30,   40,   45,   45,   40,   49,   30,   45,   72,
    1119        61,   45,   49,   30,   86,  513,  114,   53,  513,   51,
    1120        60,   30,   61,   55,   30,   31,  107,   31,   31,   31,
    1121 
    1122        31,   31,   31,   50,   51,   53,   51,   63,   60,   54,
    1123        86,   55,   50,  109,   31,   51,   50,   55,   31,   54,
    1124       107,   50,   52,  113,   31,   50,   54,   52,  317,  125,
    1125        31,  125,  106,  156,  150,   52,   31,   52,  106,  317,
    1126        52,   59,   31,  109,   52,  156,   59,  113,  109,  151,
    1127        31,   38,  150,  174,  110,   38,   38,   57,   38,   59,
    1128        38,   38,  112,   38,  106,   38,   58,  151,  112,   57,
    1129        57,  109,  110,  174,   38,   38,   38,  166,   58,   57,
    1130       110,  152,   57,  115,  141,   59,   58,  126,   59,  126,
    1131       152,   67,   67,   58,  112,   38,   67,  128,   38,  128,
    1132 
    1133       166,  115,   59,   66,   66,   66,   66,   66,   66,  115,
    1134       141,   66,   67,   67,   67,   67,   67,   67,   79,   79,
    1135        79,   79,   79,   79,  160,   38,   38,   76,   76,  131,
    1136       163,  131,   76,  160,   76,  103,  103,  103,  103,   76,
    1137        81,   81,   81,   81,   81,   81,  129,  163,   76,   76,
    1138        76,   76,   82,   82,   82,   82,   82,   82,  130,   76,
    1139       129,  153,  129,  103,  132,  132,  158,  132,  103,  133,
    1140       130,  133,  130,  186,  136,   76,  136,  153,   76,  134,
    1141       134,  134,  158,   76,   76,  165,  164,   76,   76,  154,
    1142       138,  103,  138,  186,  155,   76,  164,  216,   76,  216,
    1143 
    1144        76,   76,   76,  144,   76,   84,  165,  154,  144,   84,
    1145        84,  168,  149,  173,   84,   84,  155,   84,  104,   84,
    1146       104,  104,  104,  104,  104,  104,  159,  149,   84,   84,
    1147        84,  173,  168,  105,  149,  105,  161,  104,  105,  105,
    1148       105,  105,  105,  105,  170,  162,  167,  144,  159,   84,
    1149       162,  169,   84,  104,  171,  157,  169,  161,  161,  104,
    1150       157,  172,  157,  162,  157,  157,  170,  175,  157,  171,
    1151       157,  105,  179,  167,  169,  157,  157,  157,  172,  157,
    1152        84,   98,   98,   98,   98,   98,   98,  176,  178,  179,
    1153       180,  185,  280,  182,  175,  180,  181,  183,   98,   98,
    1154 
    1155       192,  850,   98,  178,  185,  189,  187,  181,  183,  176,
    1156       178,  182,  280,  192,   98,  188,  203,  181,  181,  184,
    1157        98,   98,  190,  191,  184,  183,   98,  102,  102,  102,
    1158       102,  102,  102,  187,  188,  190,  191,  274,  191,  184,
    1159       449,  275,  203,  190,  102,  102,  207,  207,  102,  189,
    1160       274,  207,  189,  195,  195,  195,  195,  195,  195,  275,
    1161       102,  195,  277,  196,  196,  449,  102,  102,  196,  198,
    1162       198,  217,  102,  217,  198,  200,  200,  218,  277,  218,
    1163       200,  221,  200,  221,  196,  196,  196,  196,  196,  196,
    1164       198,  198,  198,  198,  198,  198,  200,  200,  200,  200,
    1165 
    1166       200,  200,  210,  210,  210,  210,  219,  220,  222,  222,
    1167       223,  222,  223,  224,  224,  224,  226,  239,  226,  220,
    1168       219,  220,  219,  227,  232,  227,  232,  278,  849,  232,
    1169       232,  232,  232,  232,  232,  210,  231,  231,  231,  231,
    1170       231,  231,  237,  237,  278,  244,  237,  252,  262,  263,
    1171       262,  263,  239,  231,  231,  279,  276,  231,  281,  282,
    1172       279,  288,  232,  281,  237,  237,  288,  290,  266,  231,
    1173       237,  244,  285,  252,  276,  231,  231,  848,  284,  282,
    1174       290,  231,  240,  240,  240,  240,  240,  240,  241,  241,
    1175       241,  241,  241,  241,  266,  283,  284,  286,  285,  240,
    1176 
    1177       289,  242,  242,  242,  242,  242,  242,  249,  291,  289,
    1178       283,  292,  286,  294,  847,  240,  283,  283,  243,  242,
    1179       243,  240,  242,  243,  243,  243,  243,  243,  243,  292,
    1180       249,  294,  249,  295,  242,  291,  249,  298,  295,  287,
    1181       301,  242,  249,  299,  296,  301,  242,  251,  251,  251,
    1182       251,  251,  251,  296,  249,  287,  287,  298,  249,  304,
    1183       300,  299,  249,  256,  256,  256,  256,  256,  256,  297,
    1184       302,  303,  307,  306,  305,  302,  297,  303,  304,  306,
    1185       251,  300,  300,  305,  308,  309,  310,  311,  307,  312,
    1186       313,  310,  311,  308,  312,  314,  256,  315,  320,  318,
    1187 
    1188       309,  321,  319,  322,  323,  325,  326,  324,  327,  313,
    1189       315,  312,  331,  314,  318,  319,  324,  328,  332,  330,
    1190       320,  323,  336,  322,  321,  333,  335,  325,  330,  326,
    1191       327,  335,  355,  396,  355,  328,  332,  336,  333,  337,
    1192       337,  338,  396,  356,  337,  356,  337,  338,  345,  345,
    1193       345,  345,  346,  346,  346,  346,  331,  362,  362,  362,
    1194       362,  362,  362,  392,  363,  363,  363,  363,  363,  363,
    1195       364,  376,  364,  552,  392,  364,  364,  364,  364,  364,
    1196       364,  345,  363,  552,  371,  363,  365,  365,  365,  365,
    1197       365,  365,  393,  401,  371,  376,  398,  363,  366,  366,
    1198 
    1199       366,  366,  366,  366,  363,  398,  401,  372,  393,  363,
    1200       371,  367,  367,  367,  367,  367,  367,  372,  395,  365,
    1201       368,  368,  368,  368,  368,  368,  400,  417,  394,  367,
    1202       374,  366,  367,  372,  373,  400,  374,  395,  368,  417,
    1203       375,  368,  375,  394,  367,  375,  375,  375,  375,  375,
    1204       375,  367,  399,  368,  378,  397,  367,  373,  406,  373,
    1205       368,  377,  374,  373,  411,  368,  397,  402,  845,  373,
    1206       403,  404,  378,  405,  399,  411,  406,  407,  375,  408,
    1207       378,  373,  407,  402,  377,  373,  377,  404,  404,  373,
    1208       377,  409,  403,  410,  408,  405,  377,  409,  412,  415,
    1209 
    1210       413,  408,  419,  420,  422,  423,  424,  430,  377,  421,
    1211       425,  423,  377,  415,  410,  413,  377,  412,  421,  425,
    1212       427,  424,  421,  419,  429,  420,  431,  422,  432,  430,
    1213       433,  434,  437,  435,  439,  427,  441,  440,  443,  442,
    1214       446,  431,  435,  444,  429,  433,  445,  447,  448,  437,
    1215       432,  434,  444,  446,  447,  448,  441,  439,  440,  442,
    1216       443,  450,  452,  451,  445,  454,  455,  611,  456,  450,
    1217       611,  844,  504,  452,  456,  455,  479,  482,  483,  450,
    1218       451,  465,  465,  465,  465,  504,  479,  454,  476,  476,
    1219       476,  476,  476,  476,  477,  477,  477,  477,  477,  477,
    1220 
    1221       481,  503,  479,  482,  483,  506,  476,  839,  509,  476,
    1222       481,  507,  477,  512,  516,  477,  508,  511,  503,  510,
    1223       506,  476,  511,  531,  512,  519,  481,  477,  476,  508,
    1224       509,  507,  510,  476,  477,  516,  519,  520,  517,  477,
    1225       478,  478,  478,  478,  478,  478,  480,  517,  480,  531,
    1226       520,  480,  480,  480,  480,  480,  480,  485,  485,  485,
    1227       485,  485,  485,  514,  486,  486,  486,  486,  486,  486,
    1228       487,  515,  487,  478,  524,  487,  487,  487,  487,  487,
    1229       487,  518,  486,  514,  480,  486,  518,  522,  523,  525,
    1230       515,  524,  533,  529,  526,  528,  522,  486,  525,  526,
    1231 
    1232       532,  528,  529,  534,  486,  535,  537,  533,  538,  486,
    1233       523,  539,  540,  542,  535,  537,  543,  532,  534,  547,
    1234       545,  543,  546,  539,  548,  538,  549,  540,  542,  545,
    1235       551,  546,  553,  554,  555,  557,  556,  548,  551,  553,
    1236       558,  547,  556,  549,  557,  560,  555,  561,  604,  603,
    1237       558,  617,  608,  609,  617,  554,  603,  604,  606,  608,
    1238       561,  609,  560,  580,  580,  580,  580,  580,  580,  581,
    1239       581,  581,  581,  581,  581,  606,  582,  582,  582,  582,
    1240       582,  582,  583,  607,  583,  605,  641,  583,  583,  583,
    1241       583,  583,  583,  641,  582,  612,  580,  582,  605,  586,
    1242 
    1243       586,  586,  586,  586,  586,  610,  607,  614,  612,  582,
    1244       588,  588,  588,  588,  588,  588,  582,  586,  602,  613,
    1245       586,  582,  610,  602,  615,  616,  619,  620,  588,  614,
    1246       623,  588,  586,  621,  613,  618,  602,  622,  624,  586,
    1247       625,  615,  620,  588,  586,  627,  622,  616,  623,  625,
    1248       588,  628,  618,  621,  619,  588,  629,  630,  635,  634,
    1249       624,  640,  648,  637,  651,  649,  630,  627,  652,  739,
    1250       640,  648,  682,  651,  628,  649,  684,  681,  629,  634,
    1251       637,  687,  682,  652,  739,  635,  670,  670,  670,  670,
    1252       670,  670,  671,  671,  671,  671,  671,  671,  681,  685,
    1253 
    1254       686,  687,  684,  690,  670,  686,  685,  670,  688,  689,
    1255       671,  688,  689,  671,  692,  693,  696,  838,  703,  670,
    1256       692,  690,  699,  695,  693,  671,  670,  694,  703,  837,
    1257       694,  670,  671,  697,  710,  705,  697,  671,  672,  672,
    1258       672,  672,  672,  672,  695,  696,  698,  700,  699,  701,
    1259       700,  702,  704,  713,  707,  698,  705,  710,  714,  702,
    1260       715,  717,  701,  707,  742,  704,  718,  740,  736,  717,
    1261       741,  672,  737,  713,  738,  718,  745,  740,  754,  738,
    1262       714,  715,  725,  725,  725,  725,  725,  725,  736,  737,
    1263       742,  743,  744,  741,  743,  747,  749,  753,  747,  749,
    1264 
    1265       750,  754,  759,  751,  745,  744,  751,  750,  752,  774,
    1266       776,  752,  753,  778,  777,  725,  778,  779,  780,  782,
    1267       783,  780,  786,  784,  787,  759,  784,  787,  806,  789,
    1268       788,  776,  777,  788,  790,  791,  774,  782,  789,  779,
    1269       807,  811,  808,  809,  786,  808,  783,  807,  836,  806,
    1270       790,  791,  809,  810,  814,  818,  810,  814,  811,  817,
    1271       819,  828,  817,  829,  818,  840,  841,  846,  829,  819,
    1272       828,  831,  833,  834,  831,  833,  834,  835,  832,  842,
    1273       835,  841,  842,  843,  830,  840,  843,  827,  826,  846,
    1274       852,  852,  852,  852,  852,  852,  852,  852,  852,  852,
    1275 
    1276       852,  852,  852,  853,  853,  853,  853,  853,  853,  853,
    1277       853,  853,  853,  853,  853,  853,  854,  854,  854,  854,
    1278       854,  854,  854,  854,  854,  854,  854,  854,  854,  855,
    1279       825,  824,  855,  823,  855,  855,  855,  855,  855,  856,
    1280       822,  821,  820,  856,  856,  856,  856,  856,  856,  857,
    1281       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    1282       857,  857,  858,  816,  815,  858,  813,  858,  858,  858,
    1283       858,  858,  859,  812,  859,  859,  805,  859,  859,  859,
    1284       859,  859,  859,  804,  859,  860,  803,  802,  860,  860,
    1285       860,  860,  860,  860,  860,  860,  801,  860,  861,  861,
    1286 
    1287       861,  861,  861,  861,  861,  861,  861,  861,  861,  861,
    1288       861,  862,  862,  800,  862,  799,  798,  797,  862,  863,
    1289       796,  795,  863,  794,  863,  863,  863,  863,  863,  864,
    1290       793,  864,  792,  785,  781,  864,  865,  775,  865,  773,
    1291       772,  771,  865,  866,  770,  866,  769,  768,  767,  866,
    1292       867,  766,  867,  765,  764,  763,  867,  868,  762,  868,
    1293       761,  760,  758,  868,  869,  757,  869,  756,  755,  748,
    1294       869,  870,  746,  870,  735,  734,  733,  870,  871,  732,
    1295       871,  731,  730,  729,  871,  872,  728,  872,  727,  724,
    1296       723,  872,  873,  873,  873,  873,  873,  873,  873,  873,
    1297 
    1298       873,  873,  873,  873,  873,  874,  722,  874,  875,  875,
    1299       721,  875,  875,  875,  716,  875,  876,  876,  712,  876,
    1300       877,  711,  877,  709,  708,  706,  877,  878,  691,  878,
    1301       683,  680,  675,  878,  879,  673,  879,  661,  657,  655,
    1302       879,  880,  653,  880,  881,  650,  881,  647,  646,  645,
    1303       881,  882,  644,  882,  883,  643,  642,  883,  639,  883,
    1304       883,  883,  883,  883,  884,  884,  884,  884,  884,  884,
    1305       884,  884,  884,  884,  884,  884,  884,  885,  885,  885,
    1306       885,  885,  885,  885,  885,  885,  885,  885,  885,  885,
    1307       886,  638,  886,  636,  633,  632,  886,  887,  631,  887,
    1308 
    1309       626,  600,  596,  887,  888,  594,  888,  592,  590,  584,
    1310       888,  889,  578,  889,  890,  576,  890,  574,  572,  570,
    1311       890,  891,  568,  891,  892,  566,  892,  564,  563,  562,
    1312       892,  893,  559,  893,  894,  550,  894,  544,  541,  536,
    1313       894,  895,  530,  895,  896,  527,  896,  505,  501,  499,
    1314       896,  897,  497,  897,  898,  495,  898,  493,  491,  490,
    1315       898,  899,  489,  899,  900,  488,  900,  474,  472,  471,
    1316       900,  901,  470,  901,  902,  468,  902,  466,  902,  463,
    1317       902,  903,  461,  903,  459,  903,  457,  903,  904,  904,
    1318       453,  904,  904,  904,  438,  904,  905,  436,  905,  428,
    1319 
    1320       426,  418,  905,  906,  416,  906,  414,  389,  387,  906,
    1321       907,  385,  907,  383,  382,  381,  907,  908,  360,  908,
    1322       909,  358,  909,  357,  353,  351,  909,  910,  349,  910,
    1323       911,  347,  911,  343,  341,  340,  911,  912,  339,  912,
    1324       913,  329,  913,  316,  293,  273,  913,  914,  271,  914,
    1325       915,  269,  268,  915,  267,  915,  915,  915,  915,  915,
    1326       916,  916,  916,  916,  916,  916,  916,  916,  916,  916,
    1327       916,  916,  916,  917,  265,  917,  264,  259,  255,  917,
    1328       918,  254,  918,  919,  250,  919,  247,  246,  235,  919,
    1329       920,  234,  920,  921,  229,  921,  228,  225,  215,  921,
    1330 
    1331       922,  213,  922,  923,  212,  923,  211,  205,  204,  923,
    1332       924,  202,  924,  925,  197,  925,  177,  148,  146,  925,
    1333       926,  145,  926,  927,  139,  927,  137,  135,  127,  927,
    1334       928,  124,  928,  929,  123,  929,  119,  100,   97,  929,
    1335       930,   94,  930,   92,   85,   71,  930,  931,   69,  931,
    1336       932,   65,  932,   36,   33,   18,  932,  933,   11,  933,
    1337       934,    4,  934,    3,  934,    0,  934,  935,    0,  935,
    1338         0,    0,    0,  935,  936,    0,  936,    0,    0,    0,
    1339       936,  937,    0,  937,  938,    0,  938,    0,    0,    0,
    1340       938,  939,    0,  939,  940,    0,  940,    0,    0,    0,
    1341 
    1342       940,  941,    0,  941,  942,    0,  942,    0,    0,    0,
    1343       942,  943,    0,  943,  944,    0,  944,    0,    0,    0,
    1344       944,  945,    0,  945,  946,    0,  946,    0,    0,    0,
    1345       946,  947,    0,  947,  948,    0,    0,  948,    0,  948,
    1346       948,  948,  948,  948,  949,  949,  949,  949,  949,  949,
    1347       949,  949,  949,  949,  949,  949,  949,  950,    0,  950,
    1348         0,    0,    0,  950,  951,    0,  951,  952,    0,  952,
    1349         0,    0,    0,  952,  953,    0,  953,  954,    0,  954,
    1350         0,    0,    0,  954,  955,    0,  955,  956,    0,  956,
    1351         0,    0,    0,  956,  957,    0,  957,  958,    0,  958,
    1352 
    1353         0,    0,    0,  958,  959,    0,  959,  960,    0,  960,
    1354         0,    0,    0,  960,  961,    0,  961,  962,    0,  962,
    1355         0,    0,    0,  962,  963,    0,  963,  964,    0,  964,
    1356         0,    0,    0,  964,  965,    0,  965,  966,    0,  966,
    1357         0,    0,    0,  966,  967,    0,  967,    0,    0,    0,
    1358       967,  968,    0,  968,  969,    0,  969,    0,    0,    0,
    1359       969,  970,    0,  970,  971,    0,  971,    0,    0,    0,
    1360       971,  972,    0,  972,  973,    0,  973,    0,    0,    0,
    1361       973,  974,    0,  974,  975,    0,  975,  976,    0,  976,
    1362       977,    0,    0,  977,    0,  977,  977,  977,  977,  977,
    1363 
    1364       978,    0,  978,  979,  979,  979,  979,  979,  979,  979,
    1365       979,  979,  979,  979,  979,  979,  980,    0,  980,    0,
    1366         0,    0,  980,  981,    0,  981,  982,    0,  982,    0,
    1367         0,    0,  982,  983,    0,  983,  984,    0,  984,  985,
    1368         0,  985,  986,    0,    0,  986,    0,  986,  986,  986,
    1369       986,  986,  987,    0,  987,  988,    0,  988,  989,    0,
    1370       989,  990,    0,  990,  991,    0,  991,  992,    0,  992,
    1371       993,    0,  993,  994,    0,  994,    0,    0,    0,  994,
    1372       995,    0,  995,  996,    0,  996,    0,    0,    0,  996,
    1373       997,    0,  997,  998,    0,  998,  999,    0,  999, 1000,
    1374 
    1375         0, 1000, 1001,    0, 1001,    0,    0,    0, 1001, 1002,
    1376         0,    0, 1002,    0, 1002, 1002, 1002, 1002, 1002, 1003,
    1377         0, 1003, 1004,    0, 1004, 1005,    0, 1005,    0,    0,
    1378         0, 1005, 1006,    0, 1006,    0,    0,    0, 1006, 1007,
    1379         0, 1007,    0,    0,    0, 1007, 1008,    0, 1008, 1009,
    1380         0, 1009,    0,    0,    0, 1009, 1010,    0, 1010,    0,
    1381         0,    0, 1010, 1011,    0, 1011,    0,    0,    0, 1011,
    1382      1012,    0, 1012,    0,    0,    0, 1012, 1013,    0, 1013,
    1383         0,    0,    0, 1013, 1014,    0, 1014,    0,    0,    0,
    1384      1014, 1015,    0, 1015,    0,    0,    0, 1015, 1016,    0,
    1385 
    1386      1016,    0,    0,    0, 1016, 1017,    0, 1017,    0,    0,
    1387         0, 1017, 1018,    0, 1018,    0,    0,    0, 1018, 1019,
    1388         0, 1019,    0,    0,    0, 1019, 1020,    0, 1020,    0,
    1389         0,    0, 1020, 1021,    0, 1021,    0,    0,    0, 1021,
    1390      1022,    0, 1022,    0,    0,    0, 1022, 1023,    0, 1023,
    1391         0,    0,    0, 1023, 1024,    0, 1024,    0,    0,    0,
    1392      1024,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1393       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1394       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1395       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1396 
    1397       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1398       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1399       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1400       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
    1401       851,  851,  851,  851,  851,  851,  851
     1077        5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
     1078       10,   37,   37,   20,   48,    9,   10,  512,    7,    8,
     1079       13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
     1080
     1081       15,   15,   20,   25,   48,   42,   53,   28,   27,   28,
     1082       28,   28,   28,   28,   28,  512,  824,   25,   29,   25,
     1083       27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
     1084       40,   42,   55,   29,   30,   40,   30,   30,   30,   30,
     1085       30,   30,   35,   47,   35,   35,  125,   49,  125,   50,
     1086       55,   56,   49,   30,   63,   51,   55,   30,   50,   49,
     1087       56,   72,   30,   30,   47,   49,   47,   50,   30,   54,
     1088       51,   50,   51,   40,   30,   60,   40,   86,   61,   54,
     1089       30,   51,  107,  113,  823,  822,   54,   72,   30,   58,
     1090       61,   30,   31,   60,   31,   31,   31,   31,   31,   31,
     1091
     1092      108,   58,  106,   86,   63,  107,  113,  106,  126,   58,
     1093      126,   31,   45,   45,   45,   31,   58,   57,   45,   45,
     1094       31,   45,   52,   45,   45,  821,   31,   52,   45,   57,
     1095       57,   45,   31,  106,  108,   52,  140,   52,   31,   57,
     1096       52,  128,   57,  128,   52,   59,   31,   38,  112,  819,
     1097       59,   38,   38,  112,   38,  114,   38,   38,  131,   38,
     1098      131,   38,  140,   59,   79,   79,   79,   79,   79,   79,
     1099       38,   38,   38,   66,   66,   66,   66,   66,   66,  112,
     1100      154,   66,   81,   81,   81,   81,   81,   81,   59,  114,
     1101       38,   59,  154,   38,   82,   82,   82,   82,   82,   82,
     1102
     1103      129,   67,   67,  130,  818,   59,   67,  103,  103,  103,
     1104      103,  133,  298,  133,  129,  130,  129,  130,  298,  109,
     1105       38,   38,   67,   67,   67,   67,   67,   67,   76,   76,
     1106      134,  134,  134,   76,  103,   76,  105,  171,  105,  103,
     1107       76,  105,  105,  105,  105,  105,  105,  161,  109,   76,
     1108       76,   76,   76,  109,  110,  132,  132,  171,  132,  115,
     1109       76,  813,  103,  104,  161,  104,  104,  104,  104,  104,
     1110      104,  147,  110,  105,  148,   76,  109,  115,   76,  136,
     1111      110,  136,  104,   76,   76,  115,  147,   76,   76,  138,
     1112      149,  138,  148,  147,  143,   76,  151,  104,   76,  143,
     1113
     1114       76,   76,   76,  104,   76,   84,  152,  150,  149,   84,
     1115       84,  153,  151,  157,   84,   84,  150,   84,  158,   84,
     1116      156,  165,  162,  163,  152,  812,  808,  158,   84,   84,
     1117       84,  159,  162,  153,  155,  157,  156,  143,  164,  155,
     1118      167,  155,  165,  155,  155,  160,  163,  155,   84,  155,
     1119      160,   84,  159,  159,  155,  155,  155,  168,  155,  169,
     1120      170,  172,  167,  160,  166,  164,  213,  173,  213,  177,
     1121      806,  175,  168,  176,  177,  236,  169,  179,  170,   84,
     1122       98,   98,   98,   98,   98,   98,  175,  166,  172,  173,
     1123      176,  181,  178,  175,  180,  179,  181,   98,   98,  271,
     1124
     1125      183,   98,  182,  178,  184,  180,  186,  200,  189,  236,
     1126      803,  181,   98,  178,  178,  182,  185,  271,   98,   98,
     1127      183,  189,  180,  187,   98,  102,  102,  102,  102,  102,
     1128      102,  184,  188,  200,  440,  185,  187,  214,  215,  214,
     1129      215,  241,  102,  102,  187,  188,  102,  188,  275,  186,
     1130      204,  204,  186,  275,  217,  204,  218,  102,  218,  440,
     1131      193,  193,  287,  102,  102,  193,  217,  241,  217,  102,
     1132      192,  192,  192,  192,  192,  192,  219,  219,  192,  219,
     1133      249,  193,  193,  193,  193,  193,  193,  195,  195,  287,
     1134      285,  216,  195,  197,  197,  220,  802,  220,  197,  285,
     1135
     1136      197,  207,  207,  207,  207,  216,  249,  216,  195,  195,
     1137      195,  195,  195,  195,  197,  197,  197,  197,  197,  197,
     1138      221,  221,  221,  223,  224,  223,  224,  237,  237,  237,
     1139      237,  237,  237,  207,  228,  228,  228,  228,  228,  228,
     1140      229,  259,  229,  259,  237,  229,  229,  229,  229,  229,
     1141      229,  228,  228,  234,  234,  228,  260,  234,  260,  237,
     1142      541,  272,  277,  270,  284,  237,  228,  277,  263,  284,
     1143      541,  281,  228,  228,  234,  234,  270,  229,  228,  272,
     1144      234,  238,  238,  238,  238,  238,  238,  239,  239,  239,
     1145      239,  239,  239,  240,  263,  240,  276,  281,  240,  240,
     1146
     1147      240,  240,  240,  240,  246,  239,  801,  800,  239,  248,
     1148      248,  248,  248,  248,  248,  279,  276,  273,  274,  239,
     1149      253,  253,  253,  253,  253,  253,  239,  246,  278,  246,
     1150      279,  239,  246,  273,  282,  274,  279,  279,  246,  280,
     1151      286,  248,  291,  283,  288,  290,  292,  291,  278,  282,
     1152      246,  294,  253,  286,  246,  292,  295,  280,  246,  283,
     1153      283,  293,  288,  290,  296,  297,  300,  301,  293,  299,
     1154      297,  294,  302,  304,  295,  300,  303,  305,  304,  306,
     1155      307,  302,  305,  301,  306,  296,  296,  308,  299,  309,
     1156      314,  303,  311,  312,  313,  315,  316,  317,  319,  307,
     1157
     1158      318,  306,  309,  311,  320,  308,  321,  313,  312,  318,
     1159      324,  322,  314,  325,  317,  326,  316,  327,  315,  324,
     1160      319,  329,  330,  328,  386,  385,  329,  320,  321,  322,
     1161      327,  328,  332,  326,  331,  331,  385,  330,  332,  331,
     1162      386,  331,  339,  339,  339,  339,  340,  340,  340,  340,
     1163      349,  350,  349,  350,  388,  799,  325,  356,  356,  356,
     1164      356,  356,  356,  357,  357,  357,  357,  357,  357,  370,
     1165      358,  392,  358,  388,  339,  358,  358,  358,  358,  358,
     1166      358,  357,  389,  390,  357,  359,  359,  359,  359,  359,
     1167      359,  389,  370,  392,  390,  357,  360,  360,  360,  360,
     1168
     1169      360,  360,  357,  403,  798,  365,  366,  357,  361,  361,
     1170      361,  361,  361,  361,  365,  366,  372,  359,  362,  362,
     1171      362,  362,  362,  362,  403,  395,  361,  396,  360,  361,
     1172      365,  366,  368,  367,  372,  391,  362,  368,  387,  362,
     1173      361,  395,  372,  400,  391,  393,  394,  361,  400,  396,
     1174      362,  797,  361,  387,  393,  796,  367,  362,  367,  394,
     1175      397,  367,  362,  368,  369,  371,  369,  367,  399,  369,
     1176      369,  369,  369,  369,  369,  398,  397,  397,  402,  367,
     1177      401,  404,  408,  367,  402,  405,  399,  367,  371,  415,
     1178      371,  406,  404,  371,  413,  401,  408,  398,  410,  371,
     1179
     1180      412,  369,  401,  420,  405,  414,  406,  416,  417,  421,
     1181      410,  371,  415,  422,  414,  371,  413,  417,  414,  371,
     1182      423,  412,  416,  420,  424,  425,  426,  428,  422,  430,
     1183      431,  421,  435,  432,  433,  426,  434,  436,  443,  424,
     1184      438,  435,  423,  437,  428,  425,  442,  438,  445,  443,
     1185      439,  431,  430,  432,  433,  436,  437,  439,  434,  441,
     1186      446,  504,  447,  442,  504,  473,  470,  441,  447,  446,
     1187      445,  456,  456,  456,  456,  470,  494,  441,  467,  467,
     1188      467,  467,  467,  467,  468,  468,  468,  468,  468,  468,
     1189      473,  470,  474,  494,  472,  495,  467,  497,  499,  467,
     1190
     1191      498,  501,  468,  472,  500,  468,  506,  505,  495,  794,
     1192      467,  499,  497,  503,  501,  507,  468,  467,  474,  472,
     1193      498,  515,  467,  468,  503,  506,  500,  505,  468,  469,
     1194      469,  469,  469,  469,  469,  471,  507,  471,  515,  793,
     1195      471,  471,  471,  471,  471,  471,  476,  476,  476,  476,
     1196      476,  476,  477,  477,  477,  477,  477,  477,  478,  514,
     1197      478,  469,  508,  478,  478,  478,  478,  478,  478,  502,
     1198      477,  508,  471,  477,  502,  509,  510,  511,  522,  513,
     1199      509,  514,  523,  516,  477,  524,  520,  510,  513,  517,
     1200      511,  477,  516,  525,  517,  520,  477,  527,  528,  523,
     1201
     1202      524,  529,  525,  531,  522,  536,  532,  537,  534,  538,
     1203      528,  532,  535,  543,  527,  540,  529,  534,  531,  544,
     1204      537,  535,  542,  540,  546,  549,  538,  536,  547,  542,
     1205      550,  544,  592,  546,  597,  543,  791,  790,  547,  592,
     1206      596,  597,  549,  550,  569,  569,  569,  569,  569,  569,
     1207      570,  570,  570,  570,  570,  570,  571,  571,  571,  571,
     1208      571,  571,  572,  596,  572,  610,  593,  572,  572,  572,
     1209      572,  572,  572,  594,  571,  593,  569,  571,  575,  575,
     1210      575,  575,  575,  575,  595,  610,  594,  600,  571,  598,
     1211      600,  599,  603,  591,  602,  571,  575,  598,  591,  575,
     1212
     1213      571,  595,  577,  577,  577,  577,  577,  577,  599,  602,
     1214      575,  591,  601,  604,  603,  605,  606,  575,  607,  606,
     1215      577,  608,  575,  577,  609,  601,  612,  611,  613,  615,
     1216      604,  616,  620,  617,  577,  607,  611,  605,  621,  609,
     1217      623,  577,  627,  634,  612,  637,  577,  626,  608,  627,
     1218      613,  615,  620,  634,  616,  617,  626,  623,  636,  666,
     1219      637,  669,  672,  673,  680,  621,  673,  636,  655,  655,
     1220      655,  655,  655,  655,  656,  656,  656,  656,  656,  656,
     1221      666,  667,  672,  670,  675,  680,  655,  669,  671,  655,
     1222      670,  667,  656,  671,  674,  656,  678,  674,  677,  681,
     1223
     1224      655,  683,  675,  684,  677,  678,  656,  655,  679,  732,
     1225      683,  679,  655,  656,  682,  696,  732,  682,  656,  657,
     1226      657,  657,  657,  657,  657,  686,  685,  681,  684,  685,
     1227      688,  687,  689,  691,  693,  696,  697,  700,  686,  687,
     1228      688,  699,  691,  723,  722,  689,  700,  718,  719,  699,
     1229      720,  657,  724,  721,  722,  720,  783,  693,  697,  707,
     1230      707,  707,  707,  707,  707,  719,  723,  718,  721,  725,
     1231      726,  727,  725,  729,  731,  735,  729,  731,  724,  733,
     1232      754,  734,  733,  726,  734,  756,  757,  759,  763,  758,
     1233      735,  707,  758,  760,  762,  766,  760,  764,  727,  767,
     1234
     1235      764,  769,  767,  784,  757,  768,  756,  754,  768,  759,
     1236      769,  785,  762,  763,  787,  789,  786,  766,  785,  786,
     1237      782,  781,  788,  787,  784,  788,  792,  795,  804,  792,
     1238      795,  805,  789,  814,  815,  807,  805,  804,  807,  809,
     1239      810,  811,  809,  810,  811,  816,  820,  817,  816,  815,
     1240      817,  780,  779,  814,  778,  777,  776,  775,  774,  773,
     1241      772,  771,  770,  765,  761,  755,  753,  752,  820,  826,
     1242      826,  826,  826,  826,  826,  826,  826,  826,  826,  826,
     1243      826,  827,  827,  827,  827,  827,  827,  827,  827,  827,
     1244      827,  827,  827,  828,  828,  828,  828,  828,  828,  828,
     1245
     1246      828,  828,  828,  828,  828,  829,  751,  750,  829,  829,
     1247      829,  829,  829,  829,  830,  749,  748,  747,  830,  830,
     1248      830,  830,  830,  831,  831,  831,  831,  831,  831,  831,
     1249      831,  831,  831,  831,  831,  832,  746,  745,  832,  832,
     1250      832,  832,  832,  832,  833,  744,  833,  833,  743,  833,
     1251      833,  833,  833,  833,  742,  833,  834,  741,  740,  834,
     1252      834,  834,  834,  834,  834,  834,  739,  834,  835,  835,
     1253      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
     1254      836,  836,  836,  738,  737,  736,  836,  837,  730,  728,
     1255      837,  837,  837,  837,  837,  837,  838,  838,  717,  716,
     1256
     1257      715,  838,  839,  839,  714,  713,  712,  839,  840,  840,
     1258      711,  710,  709,  840,  841,  841,  706,  705,  704,  841,
     1259      842,  842,  703,  698,  695,  842,  843,  843,  694,  692,
     1260      690,  843,  844,  844,  676,  668,  665,  844,  845,  845,
     1261      660,  658,  646,  845,  846,  846,  642,  640,  638,  846,
     1262      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
     1263      847,  847,  848,  848,  849,  849,  849,  849,  849,  635,
     1264      849,  850,  850,  850,  851,  851,  633,  632,  631,  851,
     1265      852,  852,  630,  629,  628,  852,  853,  853,  625,  624,
     1266      622,  853,  854,  854,  855,  855,  619,  618,  614,  855,
     1267
     1268      856,  856,  857,  589,  585,  857,  857,  857,  857,  857,
     1269      857,  858,  858,  858,  858,  858,  858,  858,  858,  858,
     1270      858,  858,  858,  859,  859,  859,  859,  859,  859,  859,
     1271      859,  859,  859,  859,  859,  860,  860,  583,  581,  579,
     1272      860,  861,  861,  573,  567,  565,  861,  862,  862,  563,
     1273      561,  559,  862,  863,  863,  864,  864,  557,  555,  553,
     1274      864,  865,  865,  866,  866,  552,  551,  548,  866,  867,
     1275      867,  868,  868,  545,  539,  533,  868,  869,  869,  870,
     1276      870,  530,  526,  521,  870,  871,  871,  872,  872,  519,
     1277      518,  496,  872,  873,  873,  874,  874,  492,  490,  488,
     1278
     1279      874,  875,  875,  876,  876,  486,  876,  484,  876,  877,
     1280      877,  482,  877,  481,  877,  878,  878,  878,  878,  878,
     1281      480,  878,  879,  879,  479,  465,  463,  879,  880,  880,
     1282      462,  461,  459,  880,  881,  881,  457,  454,  452,  881,
     1283      882,  882,  883,  883,  450,  448,  444,  883,  884,  884,
     1284      885,  885,  429,  427,  419,  885,  886,  886,  887,  887,
     1285      418,  411,  409,  887,  888,  888,  889,  407,  383,  889,
     1286      889,  889,  889,  889,  889,  890,  890,  890,  890,  890,
     1287      890,  890,  890,  890,  890,  890,  890,  891,  891,  381,
     1288      379,  377,  891,  892,  892,  893,  893,  376,  375,  354,
     1289
     1290      893,  894,  894,  895,  895,  352,  351,  347,  895,  896,
     1291      896,  897,  897,  345,  343,  341,  897,  898,  898,  899,
     1292      899,  337,  335,  334,  899,  900,  900,  901,  901,  333,
     1293      323,  310,  901,  902,  902,  903,  903,  289,  268,  266,
     1294      903,  904,  904,  265,  264,  262,  904,  905,  905,  906,
     1295      906,  261,  256,  252,  906,  907,  907,  908,  908,  251,
     1296      908,  247,  908,  909,  909,  244,  243,  232,  909,  910,
     1297      910,  231,  226,  225,  910,  911,  911,  912,  912,  222,
     1298      212,  210,  912,  913,  913,  914,  914,  209,  208,  202,
     1299      914,  915,  915,  916,  916,  201,  199,  194,  916,  917,
     1300
     1301      917,  918,  918,  174,  145,  144,  918,  919,  919,  920,
     1302      920,  139,  137,  135,  920,  921,  921,  922,  127,  124,
     1303      922,  922,  922,  922,  922,  922,  923,  923,  923,  923,
     1304      923,  923,  923,  923,  923,  923,  923,  923,  924,  924,
     1305      123,  119,  100,  924,  925,  925,  926,  926,   97,   94,
     1306       92,  926,  927,  927,  928,  928,   85,   71,   69,  928,
     1307      929,  929,  930,  930,   65,   44,   39,  930,  931,  931,
     1308      932,  932,   36,   33,   18,  932,  933,  933,  934,  934,
     1309       11,    4,    3,  934,  935,  935,  936,  936,    0,    0,
     1310        0,  936,  937,  937,  938,  938,    0,    0,    0,  938,
     1311
     1312      939,  939,  940,  940,    0,    0,    0,  940,  941,  941,
     1313        0,    0,    0,  941,  942,  942,  943,  943,    0,    0,
     1314        0,  943,  944,  944,  945,  945,    0,    0,    0,  945,
     1315      946,  946,  947,  947,    0,    0,    0,  947,  948,  948,
     1316      949,  949,  950,  950,  951,    0,    0,  951,  951,  951,
     1317      951,  951,  951,  952,  952,  953,  953,  953,  953,  953,
     1318      953,  953,  953,  953,  953,  953,  953,  954,  954,    0,
     1319        0,    0,  954,  955,  955,  956,  956,    0,    0,    0,
     1320      956,  957,  957,  958,  958,  959,  959,  960,    0,    0,
     1321      960,  960,  960,  960,  960,  960,  961,  961,  962,  962,
     1322
     1323      963,  963,  964,  964,  965,  965,  966,  966,  967,  967,
     1324      968,  968,    0,    0,    0,  968,  969,  969,  970,  970,
     1325        0,    0,    0,  970,  971,  971,  972,  972,  973,  973,
     1326      974,  974,  975,  975,    0,    0,    0,  975,  976,    0,
     1327        0,  976,  976,  976,  976,  976,  976,  977,  977,  978,
     1328      978,  979,  979,    0,    0,    0,  979,  980,  980,    0,
     1329        0,    0,  980,  981,  981,    0,    0,    0,  981,  982,
     1330      982,  983,  983,    0,    0,    0,  983,  984,  984,    0,
     1331        0,    0,  984,  985,  985,    0,    0,    0,  985,  986,
     1332      986,    0,    0,    0,  986,  987,  987,    0,    0,    0,
     1333
     1334      987,  988,  988,    0,    0,    0,  988,  989,  989,    0,
     1335        0,    0,  989,  990,  990,    0,    0,    0,  990,  991,
     1336      991,    0,    0,    0,  991,  992,  992,    0,    0,    0,
     1337      992,  993,  993,    0,    0,    0,  993,  994,  994,    0,
     1338        0,    0,  994,  995,  995,    0,    0,    0,  995,  996,
     1339      996,    0,    0,    0,  996,  997,  997,    0,    0,    0,
     1340      997,  998,  998,    0,    0,    0,  998,  825,  825,  825,
     1341      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1342      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1343      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1344
     1345      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1346      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1347      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1348      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1349      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1350      825,  825
    14021351    } ;
    14031352
    14041353/* Table of booleans, true if rule could match eol. */
    1405 static yyconst flex_int32_t yy_rule_can_match_eol[179] =
     1354static yyconst flex_int32_t yy_rule_can_match_eol[172] =
    14061355    {   0,
    140713561, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14101359    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14111360    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1412     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1,
     1361    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
    14131362    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14141363    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1415     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
     1364    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
    14161365
    14171366static yy_state_type yy_last_accepting_state;
     
    14411390 * Created On       : Sat Sep 22 08:58:10 2001
    14421391 * Last Modified By : Peter A. Buhr
    1443  * Last Modified On : Thu Oct  8 16:13:07 2015
    1444  * Update Count     : 404
     1392 * Last Modified On : Fri Jun 19 11:10:14 2015
     1393 * Update Count     : 392
    14451394 */
    14461395#line 20 "lex.ll"
     
    14991448
    15001449
    1501 #line 1502 "Parser/lex.cc"
     1450#line 1451 "Parser/lex.cc"
    15021451
    15031452#define INITIAL 0
     
    16941643
    16951644                                   /* line directives */
    1696 #line 1697 "Parser/lex.cc"
     1645#line 1646 "Parser/lex.cc"
    16971646
    16981647        if ( !(yy_init) )
     
    17481697                                {
    17491698                                yy_current_state = (int) yy_def[yy_current_state];
    1750                                 if ( yy_current_state >= 852 )
     1699                                if ( yy_current_state >= 826 )
    17511700                                        yy_c = yy_meta[(unsigned int) yy_c];
    17521701                                }
     
    17541703                        ++yy_cp;
    17551704                        }
    1756                 while ( yy_base[yy_current_state] != 2762 );
     1705                while ( yy_base[yy_current_state] != 2568 );
    17571706
    17581707yy_find_action:
     
    19011850YY_RULE_SETUP
    19021851#line 184 "lex.ll"
    1903 { KEYWORD_RETURN(AT); }                                 // CFA
     1852{ KEYWORD_RETURN(ATOMIC); }                             // C11
    19041853        YY_BREAK
    19051854case 18:
    19061855YY_RULE_SETUP
    19071856#line 185 "lex.ll"
    1908 { KEYWORD_RETURN(ATOMIC); }                             // C11
     1857{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    19091858        YY_BREAK
    19101859case 19:
     
    19161865YY_RULE_SETUP
    19171866#line 187 "lex.ll"
    1918 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1867{ KEYWORD_RETURN(AUTO); }
    19191868        YY_BREAK
    19201869case 21:
    19211870YY_RULE_SETUP
    19221871#line 188 "lex.ll"
    1923 { KEYWORD_RETURN(AUTO); }
     1872{ KEYWORD_RETURN(BOOL); }                               // C99
    19241873        YY_BREAK
    19251874case 22:
    19261875YY_RULE_SETUP
    19271876#line 189 "lex.ll"
    1928 { KEYWORD_RETURN(BOOL); }                               // C99
     1877{ KEYWORD_RETURN(BREAK); }
    19291878        YY_BREAK
    19301879case 23:
    19311880YY_RULE_SETUP
    19321881#line 190 "lex.ll"
    1933 { KEYWORD_RETURN(BREAK); }
     1882{ KEYWORD_RETURN(CASE); }
    19341883        YY_BREAK
    19351884case 24:
    19361885YY_RULE_SETUP
    19371886#line 191 "lex.ll"
    1938 { KEYWORD_RETURN(CASE); }
     1887{ KEYWORD_RETURN(CATCH); }                              // CFA
    19391888        YY_BREAK
    19401889case 25:
    19411890YY_RULE_SETUP
    19421891#line 192 "lex.ll"
    1943 { KEYWORD_RETURN(CATCH); }                              // CFA
     1892{ KEYWORD_RETURN(CHAR); }
    19441893        YY_BREAK
    19451894case 26:
    19461895YY_RULE_SETUP
    19471896#line 193 "lex.ll"
    1948 { KEYWORD_RETURN(CATCHRESUME); }                // CFA
     1897{ KEYWORD_RETURN(CHOOSE); }                             // CFA
    19491898        YY_BREAK
    19501899case 27:
    19511900YY_RULE_SETUP
    19521901#line 194 "lex.ll"
    1953 { KEYWORD_RETURN(CHAR); }
     1902{ KEYWORD_RETURN(COMPLEX); }                    // C99
    19541903        YY_BREAK
    19551904case 28:
    19561905YY_RULE_SETUP
    19571906#line 195 "lex.ll"
    1958 { KEYWORD_RETURN(CHOOSE); }                             // CFA
     1907{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    19591908        YY_BREAK
    19601909case 29:
    19611910YY_RULE_SETUP
    19621911#line 196 "lex.ll"
    1963 { KEYWORD_RETURN(COMPLEX); }                    // C99
     1912{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    19641913        YY_BREAK
    19651914case 30:
    19661915YY_RULE_SETUP
    19671916#line 197 "lex.ll"
    1968 { KEYWORD_RETURN(COMPLEX); }                    // GCC
     1917{ KEYWORD_RETURN(CONST); }
    19691918        YY_BREAK
    19701919case 31:
    19711920YY_RULE_SETUP
    19721921#line 198 "lex.ll"
    1973 { KEYWORD_RETURN(COMPLEX); }                    // GCC
     1922{ KEYWORD_RETURN(CONST); }                              // GCC
    19741923        YY_BREAK
    19751924case 32:
    19761925YY_RULE_SETUP
    19771926#line 199 "lex.ll"
    1978 { KEYWORD_RETURN(CONST); }
     1927{ KEYWORD_RETURN(CONST); }                              // GCC
    19791928        YY_BREAK
    19801929case 33:
    19811930YY_RULE_SETUP
    19821931#line 200 "lex.ll"
    1983 { KEYWORD_RETURN(CONST); }                              // GCC
     1932{ KEYWORD_RETURN(CONTEXT); }                    // CFA
    19841933        YY_BREAK
    19851934case 34:
    19861935YY_RULE_SETUP
    19871936#line 201 "lex.ll"
    1988 { KEYWORD_RETURN(CONST); }                              // GCC
     1937{ KEYWORD_RETURN(CONTINUE); }
    19891938        YY_BREAK
    19901939case 35:
    19911940YY_RULE_SETUP
    19921941#line 202 "lex.ll"
    1993 { KEYWORD_RETURN(CONTEXT); }                    // CFA
     1942{ KEYWORD_RETURN(DEFAULT); }
    19941943        YY_BREAK
    19951944case 36:
    19961945YY_RULE_SETUP
    19971946#line 203 "lex.ll"
    1998 { KEYWORD_RETURN(CONTINUE); }
     1947{ KEYWORD_RETURN(DO); }
    19991948        YY_BREAK
    20001949case 37:
    20011950YY_RULE_SETUP
    20021951#line 204 "lex.ll"
    2003 { KEYWORD_RETURN(DEFAULT); }
     1952{ KEYWORD_RETURN(DOUBLE); }
    20041953        YY_BREAK
    20051954case 38:
    20061955YY_RULE_SETUP
    20071956#line 205 "lex.ll"
    2008 { KEYWORD_RETURN(DISABLE); }                    // CFA
     1957{ KEYWORD_RETURN(DTYPE); }                              // CFA
    20091958        YY_BREAK
    20101959case 39:
    20111960YY_RULE_SETUP
    20121961#line 206 "lex.ll"
    2013 { KEYWORD_RETURN(DO); }
     1962{ KEYWORD_RETURN(ELSE); }
    20141963        YY_BREAK
    20151964case 40:
    20161965YY_RULE_SETUP
    20171966#line 207 "lex.ll"
    2018 { KEYWORD_RETURN(DOUBLE); }
     1967{ KEYWORD_RETURN(ENUM); }
    20191968        YY_BREAK
    20201969case 41:
    20211970YY_RULE_SETUP
    20221971#line 208 "lex.ll"
    2023 { KEYWORD_RETURN(DTYPE); }                              // CFA
     1972{ KEYWORD_RETURN(EXTENSION); }                  // GCC
    20241973        YY_BREAK
    20251974case 42:
    20261975YY_RULE_SETUP
    20271976#line 209 "lex.ll"
    2028 { KEYWORD_RETURN(ELSE); }
     1977{ KEYWORD_RETURN(EXTERN); }
    20291978        YY_BREAK
    20301979case 43:
    20311980YY_RULE_SETUP
    20321981#line 210 "lex.ll"
    2033 { KEYWORD_RETURN(ENABLE); }                             // CFA
     1982{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
    20341983        YY_BREAK
    20351984case 44:
    20361985YY_RULE_SETUP
    20371986#line 211 "lex.ll"
    2038 { KEYWORD_RETURN(ENUM); }
     1987{ KEYWORD_RETURN(FINALLY); }                    // CFA
    20391988        YY_BREAK
    20401989case 45:
    20411990YY_RULE_SETUP
    20421991#line 212 "lex.ll"
    2043 { KEYWORD_RETURN(EXTENSION); }                  // GCC
     1992{ KEYWORD_RETURN(FLOAT); }
    20441993        YY_BREAK
    20451994case 46:
    20461995YY_RULE_SETUP
    20471996#line 213 "lex.ll"
    2048 { KEYWORD_RETURN(EXTERN); }
     1997{ KEYWORD_RETURN(FLOAT); }                              // GCC
    20491998        YY_BREAK
    20501999case 47:
    20512000YY_RULE_SETUP
    20522001#line 214 "lex.ll"
    2053 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
     2002{ KEYWORD_RETURN(FOR); }
    20542003        YY_BREAK
    20552004case 48:
    20562005YY_RULE_SETUP
    20572006#line 215 "lex.ll"
    2058 { KEYWORD_RETURN(FINALLY); }                    // CFA
     2007{ KEYWORD_RETURN(FORALL); }                             // CFA
    20592008        YY_BREAK
    20602009case 49:
    20612010YY_RULE_SETUP
    20622011#line 216 "lex.ll"
    2063 { KEYWORD_RETURN(FLOAT); }
     2012{ KEYWORD_RETURN(FORTRAN); }
    20642013        YY_BREAK
    20652014case 50:
    20662015YY_RULE_SETUP
    20672016#line 217 "lex.ll"
    2068 { KEYWORD_RETURN(FLOAT); }                              // GCC
     2017{ KEYWORD_RETURN(FTYPE); }                              // CFA
    20692018        YY_BREAK
    20702019case 51:
    20712020YY_RULE_SETUP
    20722021#line 218 "lex.ll"
    2073 { KEYWORD_RETURN(FOR); }
     2022{ KEYWORD_RETURN(GENERIC); }                    // C11
    20742023        YY_BREAK
    20752024case 52:
    20762025YY_RULE_SETUP
    20772026#line 219 "lex.ll"
    2078 { KEYWORD_RETURN(FORALL); }                             // CFA
     2027{ KEYWORD_RETURN(GOTO); }
    20792028        YY_BREAK
    20802029case 53:
    20812030YY_RULE_SETUP
    20822031#line 220 "lex.ll"
    2083 { KEYWORD_RETURN(FORTRAN); }
     2032{ KEYWORD_RETURN(IF); }
    20842033        YY_BREAK
    20852034case 54:
    20862035YY_RULE_SETUP
    20872036#line 221 "lex.ll"
    2088 { KEYWORD_RETURN(FTYPE); }                              // CFA
     2037{ KEYWORD_RETURN(IMAGINARY); }                  // C99
    20892038        YY_BREAK
    20902039case 55:
    20912040YY_RULE_SETUP
    20922041#line 222 "lex.ll"
    2093 { KEYWORD_RETURN(GENERIC); }                    // C11
     2042{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    20942043        YY_BREAK
    20952044case 56:
    20962045YY_RULE_SETUP
    20972046#line 223 "lex.ll"
    2098 { KEYWORD_RETURN(GOTO); }
     2047{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    20992048        YY_BREAK
    21002049case 57:
    21012050YY_RULE_SETUP
    21022051#line 224 "lex.ll"
    2103 { KEYWORD_RETURN(IF); }
     2052{ KEYWORD_RETURN(INLINE); }                             // C99
    21042053        YY_BREAK
    21052054case 58:
    21062055YY_RULE_SETUP
    21072056#line 225 "lex.ll"
    2108 { KEYWORD_RETURN(IMAGINARY); }                  // C99
     2057{ KEYWORD_RETURN(INLINE); }                             // GCC
    21092058        YY_BREAK
    21102059case 59:
    21112060YY_RULE_SETUP
    21122061#line 226 "lex.ll"
    2113 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2062{ KEYWORD_RETURN(INLINE); }                             // GCC
    21142063        YY_BREAK
    21152064case 60:
    21162065YY_RULE_SETUP
    21172066#line 227 "lex.ll"
    2118 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2067{ KEYWORD_RETURN(INT); }
    21192068        YY_BREAK
    21202069case 61:
    21212070YY_RULE_SETUP
    21222071#line 228 "lex.ll"
    2123 { KEYWORD_RETURN(INLINE); }                             // C99
     2072{ KEYWORD_RETURN(INT); }                                // GCC
    21242073        YY_BREAK
    21252074case 62:
    21262075YY_RULE_SETUP
    21272076#line 229 "lex.ll"
    2128 { KEYWORD_RETURN(INLINE); }                             // GCC
     2077{ KEYWORD_RETURN(LABEL); }                              // GCC
    21292078        YY_BREAK
    21302079case 63:
    21312080YY_RULE_SETUP
    21322081#line 230 "lex.ll"
    2133 { KEYWORD_RETURN(INLINE); }                             // GCC
     2082{ KEYWORD_RETURN(LONG); }
    21342083        YY_BREAK
    21352084case 64:
    21362085YY_RULE_SETUP
    21372086#line 231 "lex.ll"
    2138 { KEYWORD_RETURN(INT); }
     2087{ KEYWORD_RETURN(LVALUE); }                             // CFA
    21392088        YY_BREAK
    21402089case 65:
    21412090YY_RULE_SETUP
    21422091#line 232 "lex.ll"
    2143 { KEYWORD_RETURN(INT); }                                // GCC
     2092{ KEYWORD_RETURN(NORETURN); }                   // C11
    21442093        YY_BREAK
    21452094case 66:
    21462095YY_RULE_SETUP
    21472096#line 233 "lex.ll"
    2148 { KEYWORD_RETURN(LABEL); }                              // GCC
     2097{ KEYWORD_RETURN(REGISTER); }
    21492098        YY_BREAK
    21502099case 67:
    21512100YY_RULE_SETUP
    21522101#line 234 "lex.ll"
    2153 { KEYWORD_RETURN(LONG); }
     2102{ KEYWORD_RETURN(RESTRICT); }                   // C99
    21542103        YY_BREAK
    21552104case 68:
    21562105YY_RULE_SETUP
    21572106#line 235 "lex.ll"
    2158 { KEYWORD_RETURN(LVALUE); }                             // CFA
     2107{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    21592108        YY_BREAK
    21602109case 69:
    21612110YY_RULE_SETUP
    21622111#line 236 "lex.ll"
    2163 { KEYWORD_RETURN(NORETURN); }                   // C11
     2112{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    21642113        YY_BREAK
    21652114case 70:
    21662115YY_RULE_SETUP
    21672116#line 237 "lex.ll"
    2168 { KEYWORD_RETURN(REGISTER); }
     2117{ KEYWORD_RETURN(RETURN); }
    21692118        YY_BREAK
    21702119case 71:
    21712120YY_RULE_SETUP
    21722121#line 238 "lex.ll"
    2173 { KEYWORD_RETURN(RESTRICT); }                   // C99
     2122{ KEYWORD_RETURN(SHORT); }
    21742123        YY_BREAK
    21752124case 72:
    21762125YY_RULE_SETUP
    21772126#line 239 "lex.ll"
    2178 { KEYWORD_RETURN(RESTRICT); }                   // GCC
     2127{ KEYWORD_RETURN(SIGNED); }
    21792128        YY_BREAK
    21802129case 73:
    21812130YY_RULE_SETUP
    21822131#line 240 "lex.ll"
    2183 { KEYWORD_RETURN(RESTRICT); }                   // GCC
     2132{ KEYWORD_RETURN(SIGNED); }                             // GCC
    21842133        YY_BREAK
    21852134case 74:
    21862135YY_RULE_SETUP
    21872136#line 241 "lex.ll"
    2188 { KEYWORD_RETURN(RETURN); }
     2137{ KEYWORD_RETURN(SIGNED); }                             // GCC
    21892138        YY_BREAK
    21902139case 75:
    21912140YY_RULE_SETUP
    21922141#line 242 "lex.ll"
    2193 { KEYWORD_RETURN(SHORT); }
     2142{ KEYWORD_RETURN(SIZEOF); }
    21942143        YY_BREAK
    21952144case 76:
    21962145YY_RULE_SETUP
    21972146#line 243 "lex.ll"
    2198 { KEYWORD_RETURN(SIGNED); }
     2147{ KEYWORD_RETURN(STATIC); }
    21992148        YY_BREAK
    22002149case 77:
    22012150YY_RULE_SETUP
    22022151#line 244 "lex.ll"
    2203 { KEYWORD_RETURN(SIGNED); }                             // GCC
     2152{ KEYWORD_RETURN(STATICASSERT); }               // C11
    22042153        YY_BREAK
    22052154case 78:
    22062155YY_RULE_SETUP
    22072156#line 245 "lex.ll"
    2208 { KEYWORD_RETURN(SIGNED); }                             // GCC
     2157{ KEYWORD_RETURN(STRUCT); }
    22092158        YY_BREAK
    22102159case 79:
    22112160YY_RULE_SETUP
    22122161#line 246 "lex.ll"
    2213 { KEYWORD_RETURN(SIZEOF); }
     2162{ KEYWORD_RETURN(SWITCH); }
    22142163        YY_BREAK
    22152164case 80:
    22162165YY_RULE_SETUP
    22172166#line 247 "lex.ll"
    2218 { KEYWORD_RETURN(STATIC); }
     2167{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    22192168        YY_BREAK
    22202169case 81:
    22212170YY_RULE_SETUP
    22222171#line 248 "lex.ll"
    2223 { KEYWORD_RETURN(STATICASSERT); }               // C11
     2172{ KEYWORD_RETURN(THROW); }                              // CFA
    22242173        YY_BREAK
    22252174case 82:
    22262175YY_RULE_SETUP
    22272176#line 249 "lex.ll"
    2228 { KEYWORD_RETURN(STRUCT); }
     2177{ KEYWORD_RETURN(TRY); }                                // CFA
    22292178        YY_BREAK
    22302179case 83:
    22312180YY_RULE_SETUP
    22322181#line 250 "lex.ll"
    2233 { KEYWORD_RETURN(SWITCH); }
     2182{ KEYWORD_RETURN(TYPE); }                               // CFA
    22342183        YY_BREAK
    22352184case 84:
    22362185YY_RULE_SETUP
    22372186#line 251 "lex.ll"
    2238 { KEYWORD_RETURN(THREADLOCAL); }                // C11
     2187{ KEYWORD_RETURN(TYPEDEF); }
    22392188        YY_BREAK
    22402189case 85:
    22412190YY_RULE_SETUP
    22422191#line 252 "lex.ll"
    2243 { KEYWORD_RETURN(THROW); }                              // CFA
     2192{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    22442193        YY_BREAK
    22452194case 86:
    22462195YY_RULE_SETUP
    22472196#line 253 "lex.ll"
    2248 { KEYWORD_RETURN(THROWRESUME); }                // CFA
     2197{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    22492198        YY_BREAK
    22502199case 87:
    22512200YY_RULE_SETUP
    22522201#line 254 "lex.ll"
    2253 { KEYWORD_RETURN(TRY); }                                // CFA
     2202{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    22542203        YY_BREAK
    22552204case 88:
    22562205YY_RULE_SETUP
    22572206#line 255 "lex.ll"
    2258 { KEYWORD_RETURN(TYPE); }                               // CFA
     2207{ KEYWORD_RETURN(UNION); }
    22592208        YY_BREAK
    22602209case 89:
    22612210YY_RULE_SETUP
    22622211#line 256 "lex.ll"
    2263 { KEYWORD_RETURN(TYPEDEF); }
     2212{ KEYWORD_RETURN(UNSIGNED); }
    22642213        YY_BREAK
    22652214case 90:
    22662215YY_RULE_SETUP
    22672216#line 257 "lex.ll"
    2268 { KEYWORD_RETURN(TYPEOF); }                             // GCC
     2217{ KEYWORD_RETURN(VOID); }
    22692218        YY_BREAK
    22702219case 91:
    22712220YY_RULE_SETUP
    22722221#line 258 "lex.ll"
    2273 { KEYWORD_RETURN(TYPEOF); }                             // GCC
     2222{ KEYWORD_RETURN(VOLATILE); }
    22742223        YY_BREAK
    22752224case 92:
    22762225YY_RULE_SETUP
    22772226#line 259 "lex.ll"
    2278 { KEYWORD_RETURN(TYPEOF); }                             // GCC
     2227{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    22792228        YY_BREAK
    22802229case 93:
    22812230YY_RULE_SETUP
    22822231#line 260 "lex.ll"
    2283 { KEYWORD_RETURN(UNION); }
     2232{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    22842233        YY_BREAK
    22852234case 94:
    22862235YY_RULE_SETUP
    22872236#line 261 "lex.ll"
    2288 { KEYWORD_RETURN(UNSIGNED); }
    2289         YY_BREAK
     2237{ KEYWORD_RETURN(WHILE); }
     2238        YY_BREAK
     2239/* identifier */
    22902240case 95:
    22912241YY_RULE_SETUP
    2292 #line 262 "lex.ll"
    2293 { KEYWORD_RETURN(VOID); }
     2242#line 264 "lex.ll"
     2243{ IDENTIFIER_RETURN(); }
    22942244        YY_BREAK
    22952245case 96:
    22962246YY_RULE_SETUP
    2297 #line 263 "lex.ll"
    2298 { KEYWORD_RETURN(VOLATILE); }
     2247#line 265 "lex.ll"
     2248{ ATTRIBUTE_RETURN(); }
    22992249        YY_BREAK
    23002250case 97:
    23012251YY_RULE_SETUP
    2302 #line 264 "lex.ll"
    2303 { KEYWORD_RETURN(VOLATILE); }                   // GCC
     2252#line 266 "lex.ll"
     2253{ BEGIN BKQUOTE; }
    23042254        YY_BREAK
    23052255case 98:
    23062256YY_RULE_SETUP
    2307 #line 265 "lex.ll"
    2308 { KEYWORD_RETURN(VOLATILE); }                   // GCC
     2257#line 267 "lex.ll"
     2258{ IDENTIFIER_RETURN(); }
    23092259        YY_BREAK
    23102260case 99:
    23112261YY_RULE_SETUP
    2312 #line 266 "lex.ll"
    2313 { KEYWORD_RETURN(WHILE); }
    2314         YY_BREAK
    2315 /* identifier */
     2262#line 268 "lex.ll"
     2263{ BEGIN 0; }
     2264        YY_BREAK
     2265/* numeric constants */
    23162266case 100:
    23172267YY_RULE_SETUP
    2318 #line 269 "lex.ll"
    2319 { IDENTIFIER_RETURN(); }
     2268#line 271 "lex.ll"
     2269{ NUMERIC_RETURN(ZERO); }                               // CFA
    23202270        YY_BREAK
    23212271case 101:
    23222272YY_RULE_SETUP
    2323 #line 270 "lex.ll"
    2324 { ATTRIBUTE_RETURN(); }
     2273#line 272 "lex.ll"
     2274{ NUMERIC_RETURN(ONE); }                                // CFA
    23252275        YY_BREAK
    23262276case 102:
    23272277YY_RULE_SETUP
    2328 #line 271 "lex.ll"
    2329 { BEGIN BKQUOTE; }
     2278#line 273 "lex.ll"
     2279{ NUMERIC_RETURN(INTEGERconstant); }
    23302280        YY_BREAK
    23312281case 103:
    23322282YY_RULE_SETUP
    2333 #line 272 "lex.ll"
    2334 { IDENTIFIER_RETURN(); }
     2283#line 274 "lex.ll"
     2284{ NUMERIC_RETURN(INTEGERconstant); }
    23352285        YY_BREAK
    23362286case 104:
    23372287YY_RULE_SETUP
    2338 #line 273 "lex.ll"
    2339 { BEGIN 0; }
    2340         YY_BREAK
    2341 /* numeric constants */
     2288#line 275 "lex.ll"
     2289{ NUMERIC_RETURN(INTEGERconstant); }
     2290        YY_BREAK
    23422291case 105:
    23432292YY_RULE_SETUP
    23442293#line 276 "lex.ll"
    2345 { NUMERIC_RETURN(ZERO); }                               // CFA
     2294{ NUMERIC_RETURN(FLOATINGconstant); }
    23462295        YY_BREAK
    23472296case 106:
    23482297YY_RULE_SETUP
    23492298#line 277 "lex.ll"
    2350 { NUMERIC_RETURN(ONE); }                                // CFA
    2351         YY_BREAK
     2299{ NUMERIC_RETURN(FLOATINGconstant); }
     2300        YY_BREAK
     2301/* character constant, allows empty value */
    23522302case 107:
    23532303YY_RULE_SETUP
    2354 #line 278 "lex.ll"
    2355 { NUMERIC_RETURN(INTEGERconstant); }
     2304#line 280 "lex.ll"
     2305{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    23562306        YY_BREAK
    23572307case 108:
    23582308YY_RULE_SETUP
    2359 #line 279 "lex.ll"
    2360 { NUMERIC_RETURN(INTEGERconstant); }
     2309#line 281 "lex.ll"
     2310{ *strtext += std::string( yytext ); }
    23612311        YY_BREAK
    23622312case 109:
    2363 YY_RULE_SETUP
    2364 #line 280 "lex.ll"
    2365 { NUMERIC_RETURN(INTEGERconstant); }
    2366         YY_BREAK
     2313/* rule 109 can match eol */
     2314YY_RULE_SETUP
     2315#line 282 "lex.ll"
     2316{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
     2317        YY_BREAK
     2318/* ' stop highlighting */
     2319/* string constant */
    23672320case 110:
    23682321YY_RULE_SETUP
    2369 #line 281 "lex.ll"
    2370 { NUMERIC_RETURN(FLOATINGconstant); }
     2322#line 286 "lex.ll"
     2323{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    23712324        YY_BREAK
    23722325case 111:
    23732326YY_RULE_SETUP
    2374 #line 282 "lex.ll"
    2375 { NUMERIC_RETURN(FLOATINGconstant); }
    2376         YY_BREAK
    2377 /* character constant, allows empty value */
     2327#line 287 "lex.ll"
     2328{ *strtext += std::string( yytext ); }
     2329        YY_BREAK
    23782330case 112:
    2379 YY_RULE_SETUP
    2380 #line 285 "lex.ll"
    2381 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    2382         YY_BREAK
     2331/* rule 112 can match eol */
     2332YY_RULE_SETUP
     2333#line 288 "lex.ll"
     2334{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
     2335        YY_BREAK
     2336/* " stop highlighting */
     2337/* common character/string constant */
    23832338case 113:
    23842339YY_RULE_SETUP
    2385 #line 286 "lex.ll"
    2386 { *strtext += std::string( yytext ); }
     2340#line 292 "lex.ll"
     2341{ rm_underscore(); *strtext += std::string( yytext ); }
    23872342        YY_BREAK
    23882343case 114:
    23892344/* rule 114 can match eol */
    23902345YY_RULE_SETUP
    2391 #line 287 "lex.ll"
    2392 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    2393         YY_BREAK
    2394 /* ' stop highlighting */
    2395 /* string constant */
     2346#line 293 "lex.ll"
     2347{}                                              // continuation (ALSO HANDLED BY CPP)
     2348        YY_BREAK
    23962349case 115:
    23972350YY_RULE_SETUP
    2398 #line 291 "lex.ll"
    2399 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    2400         YY_BREAK
     2351#line 294 "lex.ll"
     2352{ *strtext += std::string( yytext ); } // unknown escape character
     2353        YY_BREAK
     2354/* punctuation */
    24012355case 116:
    24022356YY_RULE_SETUP
    2403 #line 292 "lex.ll"
    2404 { *strtext += std::string( yytext ); }
     2357#line 297 "lex.ll"
     2358{ ASCIIOP_RETURN(); }
    24052359        YY_BREAK
    24062360case 117:
    2407 /* rule 117 can match eol */
    2408 YY_RULE_SETUP
    2409 #line 293 "lex.ll"
    2410 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    2411         YY_BREAK
    2412 /* " stop highlighting */
    2413 /* common character/string constant */
     2361YY_RULE_SETUP
     2362#line 298 "lex.ll"
     2363{ ASCIIOP_RETURN(); }
     2364        YY_BREAK
    24142365case 118:
    24152366YY_RULE_SETUP
    2416 #line 297 "lex.ll"
    2417 { rm_underscore(); *strtext += std::string( yytext ); }
     2367#line 299 "lex.ll"
     2368{ ASCIIOP_RETURN(); }
    24182369        YY_BREAK
    24192370case 119:
    2420 /* rule 119 can match eol */
    2421 YY_RULE_SETUP
    2422 #line 298 "lex.ll"
    2423 {}                                              // continuation (ALSO HANDLED BY CPP)
     2371YY_RULE_SETUP
     2372#line 300 "lex.ll"
     2373{ ASCIIOP_RETURN(); }
    24242374        YY_BREAK
    24252375case 120:
    24262376YY_RULE_SETUP
    2427 #line 299 "lex.ll"
    2428 { *strtext += std::string( yytext ); } // unknown escape character
    2429         YY_BREAK
    2430 /* punctuation */
     2377#line 301 "lex.ll"
     2378{ ASCIIOP_RETURN(); }
     2379        YY_BREAK
    24312380case 121:
    24322381YY_RULE_SETUP
     
    24372386YY_RULE_SETUP
    24382387#line 303 "lex.ll"
    2439 { ASCIIOP_RETURN(); }
     2388{ ASCIIOP_RETURN(); }                                   // also operator
    24402389        YY_BREAK
    24412390case 123:
     
    24522401YY_RULE_SETUP
    24532402#line 306 "lex.ll"
     2403{ ASCIIOP_RETURN(); }                                   // also operator
     2404        YY_BREAK
     2405case 126:
     2406YY_RULE_SETUP
     2407#line 307 "lex.ll"
     2408{ NAMEDOP_RETURN(ELLIPSIS); }
     2409        YY_BREAK
     2410/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
     2411case 127:
     2412YY_RULE_SETUP
     2413#line 310 "lex.ll"
     2414{ RETURN_VAL('['); }
     2415        YY_BREAK
     2416case 128:
     2417YY_RULE_SETUP
     2418#line 311 "lex.ll"
     2419{ RETURN_VAL(']'); }
     2420        YY_BREAK
     2421case 129:
     2422YY_RULE_SETUP
     2423#line 312 "lex.ll"
     2424{ RETURN_VAL('{'); }
     2425        YY_BREAK
     2426case 130:
     2427YY_RULE_SETUP
     2428#line 313 "lex.ll"
     2429{ RETURN_VAL('}'); }
     2430        YY_BREAK
     2431/* operators */
     2432case 131:
     2433YY_RULE_SETUP
     2434#line 316 "lex.ll"
    24542435{ ASCIIOP_RETURN(); }
    24552436        YY_BREAK
    2456 case 126:
    2457 YY_RULE_SETUP
    2458 #line 307 "lex.ll"
     2437case 132:
     2438YY_RULE_SETUP
     2439#line 317 "lex.ll"
    24592440{ ASCIIOP_RETURN(); }
    24602441        YY_BREAK
    2461 case 127:
    2462 YY_RULE_SETUP
    2463 #line 308 "lex.ll"
    2464 { ASCIIOP_RETURN(); }                                   // also operator
    2465         YY_BREAK
    2466 case 128:
    2467 YY_RULE_SETUP
    2468 #line 309 "lex.ll"
     2442case 133:
     2443YY_RULE_SETUP
     2444#line 318 "lex.ll"
    24692445{ ASCIIOP_RETURN(); }
    24702446        YY_BREAK
    2471 case 129:
    2472 YY_RULE_SETUP
    2473 #line 310 "lex.ll"
     2447case 134:
     2448YY_RULE_SETUP
     2449#line 319 "lex.ll"
    24742450{ ASCIIOP_RETURN(); }
    24752451        YY_BREAK
    2476 case 130:
    2477 YY_RULE_SETUP
    2478 #line 311 "lex.ll"
    2479 { ASCIIOP_RETURN(); }                                   // also operator
    2480         YY_BREAK
    2481 case 131:
    2482 YY_RULE_SETUP
    2483 #line 312 "lex.ll"
    2484 { NAMEDOP_RETURN(ELLIPSIS); }
    2485         YY_BREAK
    2486 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2487 case 132:
    2488 YY_RULE_SETUP
    2489 #line 315 "lex.ll"
    2490 { RETURN_VAL('['); }
    2491         YY_BREAK
    2492 case 133:
    2493 YY_RULE_SETUP
    2494 #line 316 "lex.ll"
    2495 { RETURN_VAL(']'); }
    2496         YY_BREAK
    2497 case 134:
    2498 YY_RULE_SETUP
    2499 #line 317 "lex.ll"
    2500 { RETURN_VAL('{'); }
    2501         YY_BREAK
    25022452case 135:
    25032453YY_RULE_SETUP
    2504 #line 318 "lex.ll"
    2505 { RETURN_VAL('}'); }
    2506         YY_BREAK
    2507 /* operators */
     2454#line 320 "lex.ll"
     2455{ ASCIIOP_RETURN(); }
     2456        YY_BREAK
    25082457case 136:
    25092458YY_RULE_SETUP
     
    25532502case 145:
    25542503YY_RULE_SETUP
    2555 #line 330 "lex.ll"
    2556 { ASCIIOP_RETURN(); }
     2504#line 331 "lex.ll"
     2505{ NAMEDOP_RETURN(ICR); }
    25572506        YY_BREAK
    25582507case 146:
    25592508YY_RULE_SETUP
    2560 #line 331 "lex.ll"
    2561 { ASCIIOP_RETURN(); }
     2509#line 332 "lex.ll"
     2510{ NAMEDOP_RETURN(DECR); }
    25622511        YY_BREAK
    25632512case 147:
    25642513YY_RULE_SETUP
    2565 #line 332 "lex.ll"
    2566 { ASCIIOP_RETURN(); }
     2514#line 333 "lex.ll"
     2515{ NAMEDOP_RETURN(EQ); }
    25672516        YY_BREAK
    25682517case 148:
    25692518YY_RULE_SETUP
    2570 #line 333 "lex.ll"
    2571 { ASCIIOP_RETURN(); }
     2519#line 334 "lex.ll"
     2520{ NAMEDOP_RETURN(NE); }
    25722521        YY_BREAK
    25732522case 149:
    25742523YY_RULE_SETUP
    2575 #line 334 "lex.ll"
    2576 { ASCIIOP_RETURN(); }
     2524#line 335 "lex.ll"
     2525{ NAMEDOP_RETURN(LS); }
    25772526        YY_BREAK
    25782527case 150:
    25792528YY_RULE_SETUP
    25802529#line 336 "lex.ll"
    2581 { NAMEDOP_RETURN(ICR); }
     2530{ NAMEDOP_RETURN(RS); }
    25822531        YY_BREAK
    25832532case 151:
    25842533YY_RULE_SETUP
    25852534#line 337 "lex.ll"
    2586 { NAMEDOP_RETURN(DECR); }
     2535{ NAMEDOP_RETURN(LE); }
    25872536        YY_BREAK
    25882537case 152:
    25892538YY_RULE_SETUP
    25902539#line 338 "lex.ll"
    2591 { NAMEDOP_RETURN(EQ); }
     2540{ NAMEDOP_RETURN(GE); }
    25922541        YY_BREAK
    25932542case 153:
    25942543YY_RULE_SETUP
    25952544#line 339 "lex.ll"
    2596 { NAMEDOP_RETURN(NE); }
     2545{ NAMEDOP_RETURN(ANDAND); }
    25972546        YY_BREAK
    25982547case 154:
    25992548YY_RULE_SETUP
    26002549#line 340 "lex.ll"
    2601 { NAMEDOP_RETURN(LS); }
     2550{ NAMEDOP_RETURN(OROR); }
    26022551        YY_BREAK
    26032552case 155:
    26042553YY_RULE_SETUP
    26052554#line 341 "lex.ll"
    2606 { NAMEDOP_RETURN(RS); }
     2555{ NAMEDOP_RETURN(ARROW); }
    26072556        YY_BREAK
    26082557case 156:
    26092558YY_RULE_SETUP
    26102559#line 342 "lex.ll"
    2611 { NAMEDOP_RETURN(LE); }
     2560{ NAMEDOP_RETURN(PLUSassign); }
    26122561        YY_BREAK
    26132562case 157:
    26142563YY_RULE_SETUP
    26152564#line 343 "lex.ll"
    2616 { NAMEDOP_RETURN(GE); }
     2565{ NAMEDOP_RETURN(MINUSassign); }
    26172566        YY_BREAK
    26182567case 158:
    26192568YY_RULE_SETUP
    26202569#line 344 "lex.ll"
    2621 { NAMEDOP_RETURN(ANDAND); }
     2570{ NAMEDOP_RETURN(MULTassign); }
    26222571        YY_BREAK
    26232572case 159:
    26242573YY_RULE_SETUP
    26252574#line 345 "lex.ll"
    2626 { NAMEDOP_RETURN(OROR); }
     2575{ NAMEDOP_RETURN(DIVassign); }
    26272576        YY_BREAK
    26282577case 160:
    26292578YY_RULE_SETUP
    26302579#line 346 "lex.ll"
    2631 { NAMEDOP_RETURN(ARROW); }
     2580{ NAMEDOP_RETURN(MODassign); }
    26322581        YY_BREAK
    26332582case 161:
    26342583YY_RULE_SETUP
    26352584#line 347 "lex.ll"
    2636 { NAMEDOP_RETURN(PLUSassign); }
     2585{ NAMEDOP_RETURN(ANDassign); }
    26372586        YY_BREAK
    26382587case 162:
    26392588YY_RULE_SETUP
    26402589#line 348 "lex.ll"
    2641 { NAMEDOP_RETURN(MINUSassign); }
     2590{ NAMEDOP_RETURN(ORassign); }
    26422591        YY_BREAK
    26432592case 163:
    26442593YY_RULE_SETUP
    26452594#line 349 "lex.ll"
    2646 { NAMEDOP_RETURN(MULTassign); }
     2595{ NAMEDOP_RETURN(ERassign); }
    26472596        YY_BREAK
    26482597case 164:
    26492598YY_RULE_SETUP
    26502599#line 350 "lex.ll"
    2651 { NAMEDOP_RETURN(DIVassign); }
     2600{ NAMEDOP_RETURN(LSassign); }
    26522601        YY_BREAK
    26532602case 165:
    26542603YY_RULE_SETUP
    26552604#line 351 "lex.ll"
    2656 { NAMEDOP_RETURN(MODassign); }
    2657         YY_BREAK
     2605{ NAMEDOP_RETURN(RSassign); }
     2606        YY_BREAK
     2607/* CFA, operator identifier */
    26582608case 166:
    26592609YY_RULE_SETUP
    2660 #line 352 "lex.ll"
    2661 { NAMEDOP_RETURN(ANDassign); }
     2610#line 354 "lex.ll"
     2611{ IDENTIFIER_RETURN(); }                                // unary
    26622612        YY_BREAK
    26632613case 167:
    26642614YY_RULE_SETUP
    2665 #line 353 "lex.ll"
    2666 { NAMEDOP_RETURN(ORassign); }
     2615#line 355 "lex.ll"
     2616{ IDENTIFIER_RETURN(); }
    26672617        YY_BREAK
    26682618case 168:
    26692619YY_RULE_SETUP
    2670 #line 354 "lex.ll"
    2671 { NAMEDOP_RETURN(ERassign); }
    2672         YY_BREAK
    2673 case 169:
    2674 YY_RULE_SETUP
    2675 #line 355 "lex.ll"
    2676 { NAMEDOP_RETURN(LSassign); }
    2677         YY_BREAK
    2678 case 170:
    2679 YY_RULE_SETUP
    26802620#line 356 "lex.ll"
    2681 { NAMEDOP_RETURN(RSassign); }
    2682         YY_BREAK
    2683 case 171:
    2684 YY_RULE_SETUP
    2685 #line 358 "lex.ll"
    2686 { NAMEDOP_RETURN(ATassign); }
    2687         YY_BREAK
    2688 /* CFA, operator identifier */
    2689 case 172:
    2690 YY_RULE_SETUP
    2691 #line 361 "lex.ll"
    2692 { IDENTIFIER_RETURN(); }                                // unary
    2693         YY_BREAK
    2694 case 173:
    2695 YY_RULE_SETUP
    2696 #line 362 "lex.ll"
    2697 { IDENTIFIER_RETURN(); }
    2698         YY_BREAK
    2699 case 174:
    2700 YY_RULE_SETUP
    2701 #line 363 "lex.ll"
    2702 { IDENTIFIER_RETURN(); }
    2703         YY_BREAK
    2704 case 175:
    2705 YY_RULE_SETUP
    2706 #line 364 "lex.ll"
    27072621{ IDENTIFIER_RETURN(); }                // binary
    27082622        YY_BREAK
     
    27332647          an argument list.
    27342648        */
    2735 case 176:
    2736 YY_RULE_SETUP
    2737 #line 391 "lex.ll"
     2649case 169:
     2650YY_RULE_SETUP
     2651#line 383 "lex.ll"
    27382652{
    27392653        // 1 or 2 character unary operator ?
     
    27482662        YY_BREAK
    27492663/* unknown characters */
    2750 case 177:
    2751 YY_RULE_SETUP
    2752 #line 403 "lex.ll"
     2664case 170:
     2665YY_RULE_SETUP
     2666#line 395 "lex.ll"
    27532667{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    27542668        YY_BREAK
    2755 case 178:
    2756 YY_RULE_SETUP
    2757 #line 405 "lex.ll"
     2669case 171:
     2670YY_RULE_SETUP
     2671#line 397 "lex.ll"
    27582672ECHO;
    27592673        YY_BREAK
    2760 #line 2761 "Parser/lex.cc"
     2674#line 2675 "Parser/lex.cc"
    27612675case YY_STATE_EOF(INITIAL):
    27622676case YY_STATE_EOF(COMMENT):
     
    30552969                        {
    30562970                        yy_current_state = (int) yy_def[yy_current_state];
    3057                         if ( yy_current_state >= 852 )
     2971                        if ( yy_current_state >= 826 )
    30582972                                yy_c = yy_meta[(unsigned int) yy_c];
    30592973                        }
     
    30832997                {
    30842998                yy_current_state = (int) yy_def[yy_current_state];
    3085                 if ( yy_current_state >= 852 )
     2999                if ( yy_current_state >= 826 )
    30863000                        yy_c = yy_meta[(unsigned int) yy_c];
    30873001                }
    30883002        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3089         yy_is_jam = (yy_current_state == 851);
     3003        yy_is_jam = (yy_current_state == 825);
    30903004
    30913005        return yy_is_jam ? 0 : yy_current_state;
     
    37333647#define YYTABLES_NAME "yytables"
    37343648
    3735 #line 405 "lex.ll"
     3649#line 397 "lex.ll"
    37363650
    37373651
  • src/Parser/lex.ll

    rd2ded3e7 r698664b3  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Thu Oct  8 16:13:07 2015
    13  * Update Count     : 404
     12 * Last Modified On : Fri Jun 19 11:10:14 2015
     13 * Update Count     : 392
    1414 */
    1515
     
    182182__asm                   { KEYWORD_RETURN(ASM); }                                // GCC
    183183__asm__                 { KEYWORD_RETURN(ASM); }                                // GCC
    184 _At                             { KEYWORD_RETURN(AT); }                                 // CFA
    185184_Atomic                 { KEYWORD_RETURN(ATOMIC); }                             // C11
    186185__attribute             { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     
    191190case                    { KEYWORD_RETURN(CASE); }
    192191catch                   { KEYWORD_RETURN(CATCH); }                              // CFA
    193 catchResume             { KEYWORD_RETURN(CATCHRESUME); }                // CFA
    194192char                    { KEYWORD_RETURN(CHAR); }
    195193choose                  { KEYWORD_RETURN(CHOOSE); }                             // CFA
     
    203201continue                { KEYWORD_RETURN(CONTINUE); }
    204202default                 { KEYWORD_RETURN(DEFAULT); }
    205 disable                 { KEYWORD_RETURN(DISABLE); }                    // CFA
    206203do                              { KEYWORD_RETURN(DO); }
    207204double                  { KEYWORD_RETURN(DOUBLE); }
    208205dtype                   { KEYWORD_RETURN(DTYPE); }                              // CFA
    209206else                    { KEYWORD_RETURN(ELSE); }
    210 enable                  { KEYWORD_RETURN(ENABLE); }                             // CFA
    211207enum                    { KEYWORD_RETURN(ENUM); }
    212208__extension__   { KEYWORD_RETURN(EXTENSION); }                  // GCC
     
    251247_Thread_local   { KEYWORD_RETURN(THREADLOCAL); }                // C11
    252248throw                   { KEYWORD_RETURN(THROW); }                              // CFA
    253 throwResume             { KEYWORD_RETURN(THROWRESUME); }                // CFA
    254249try                             { KEYWORD_RETURN(TRY); }                                // CFA
    255250type                    { KEYWORD_RETURN(TYPE); }                               // CFA
     
    356351">>="                   { NAMEDOP_RETURN(RSassign); }
    357352
    358 "@="                    { NAMEDOP_RETURN(ATassign); }
    359 
    360353                                /* CFA, operator identifier */
    361354{op_unary}"?"   { IDENTIFIER_RETURN(); }                                // unary
    362355"?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); }
    363 "^?{}" { IDENTIFIER_RETURN(); }
    364356"?"{op_binary_over}"?"  { IDENTIFIER_RETURN(); }                // binary
    365357        /*
     
    389381          an argument list.
    390382        */
    391 {op_unary}"?"({op_unary_pre_post}|"[?]"|{op_binary_over}"?") {
     383{op_unary}"?"(({op_unary_pre_post}|"[?]")|({op_binary_over}"?")) {
    392384        // 1 or 2 character unary operator ?
    393385        int i = yytext[1] == '?' ? 1 : 2;
  • src/Parser/parser.cc

    rd2ded3e7 r698664b3  
    166166     RETURN = 305,
    167167     CHOOSE = 306,
    168      DISABLE = 307,
    169      ENABLE = 308,
    170      FALLTHRU = 309,
    171      TRY = 310,
    172      CATCH = 311,
    173      CATCHRESUME = 312,
    174      FINALLY = 313,
    175      THROW = 314,
    176      THROWRESUME = 315,
    177      AT = 316,
    178      ASM = 317,
    179      ALIGNAS = 318,
    180      ALIGNOF = 319,
    181      ATOMIC = 320,
    182      GENERIC = 321,
    183      NORETURN = 322,
    184      STATICASSERT = 323,
    185      THREADLOCAL = 324,
    186      IDENTIFIER = 325,
    187      QUOTED_IDENTIFIER = 326,
    188      TYPEDEFname = 327,
    189      TYPEGENname = 328,
    190      ATTR_IDENTIFIER = 329,
    191      ATTR_TYPEDEFname = 330,
    192      ATTR_TYPEGENname = 331,
    193      INTEGERconstant = 332,
    194      FLOATINGconstant = 333,
    195      CHARACTERconstant = 334,
    196      STRINGliteral = 335,
    197      ZERO = 336,
    198      ONE = 337,
    199      ARROW = 338,
    200      ICR = 339,
    201      DECR = 340,
    202      LS = 341,
    203      RS = 342,
    204      LE = 343,
    205      GE = 344,
    206      EQ = 345,
    207      NE = 346,
    208      ANDAND = 347,
    209      OROR = 348,
    210      ELLIPSIS = 349,
    211      MULTassign = 350,
    212      DIVassign = 351,
    213      MODassign = 352,
    214      PLUSassign = 353,
    215      MINUSassign = 354,
    216      LSassign = 355,
    217      RSassign = 356,
    218      ANDassign = 357,
    219      ERassign = 358,
    220      ORassign = 359,
    221      ATassign = 360,
    222      THEN = 361
     168     FALLTHRU = 307,
     169     TRY = 308,
     170     CATCH = 309,
     171     FINALLY = 310,
     172     THROW = 311,
     173     ASM = 312,
     174     ALIGNAS = 313,
     175     ALIGNOF = 314,
     176     ATOMIC = 315,
     177     GENERIC = 316,
     178     NORETURN = 317,
     179     STATICASSERT = 318,
     180     THREADLOCAL = 319,
     181     IDENTIFIER = 320,
     182     QUOTED_IDENTIFIER = 321,
     183     TYPEDEFname = 322,
     184     TYPEGENname = 323,
     185     ATTR_IDENTIFIER = 324,
     186     ATTR_TYPEDEFname = 325,
     187     ATTR_TYPEGENname = 326,
     188     INTEGERconstant = 327,
     189     FLOATINGconstant = 328,
     190     CHARACTERconstant = 329,
     191     STRINGliteral = 330,
     192     ZERO = 331,
     193     ONE = 332,
     194     ARROW = 333,
     195     ICR = 334,
     196     DECR = 335,
     197     LS = 336,
     198     RS = 337,
     199     LE = 338,
     200     GE = 339,
     201     EQ = 340,
     202     NE = 341,
     203     ANDAND = 342,
     204     OROR = 343,
     205     ELLIPSIS = 344,
     206     MULTassign = 345,
     207     DIVassign = 346,
     208     MODassign = 347,
     209     PLUSassign = 348,
     210     MINUSassign = 349,
     211     LSassign = 350,
     212     RSassign = 351,
     213     ANDassign = 352,
     214     ERassign = 353,
     215     ORassign = 354,
     216     THEN = 355
    223217   };
    224218#endif
     
    273267#define RETURN 305
    274268#define CHOOSE 306
    275 #define DISABLE 307
    276 #define ENABLE 308
    277 #define FALLTHRU 309
    278 #define TRY 310
    279 #define CATCH 311
    280 #define CATCHRESUME 312
    281 #define FINALLY 313
    282 #define THROW 314
    283 #define THROWRESUME 315
    284 #define AT 316
    285 #define ASM 317
    286 #define ALIGNAS 318
    287 #define ALIGNOF 319
    288 #define ATOMIC 320
    289 #define GENERIC 321
    290 #define NORETURN 322
    291 #define STATICASSERT 323
    292 #define THREADLOCAL 324
    293 #define IDENTIFIER 325
    294 #define QUOTED_IDENTIFIER 326
    295 #define TYPEDEFname 327
    296 #define TYPEGENname 328
    297 #define ATTR_IDENTIFIER 329
    298 #define ATTR_TYPEDEFname 330
    299 #define ATTR_TYPEGENname 331
    300 #define INTEGERconstant 332
    301 #define FLOATINGconstant 333
    302 #define CHARACTERconstant 334
    303 #define STRINGliteral 335
    304 #define ZERO 336
    305 #define ONE 337
    306 #define ARROW 338
    307 #define ICR 339
    308 #define DECR 340
    309 #define LS 341
    310 #define RS 342
    311 #define LE 343
    312 #define GE 344
    313 #define EQ 345
    314 #define NE 346
    315 #define ANDAND 347
    316 #define OROR 348
    317 #define ELLIPSIS 349
    318 #define MULTassign 350
    319 #define DIVassign 351
    320 #define MODassign 352
    321 #define PLUSassign 353
    322 #define MINUSassign 354
    323 #define LSassign 355
    324 #define RSassign 356
    325 #define ANDassign 357
    326 #define ERassign 358
    327 #define ORassign 359
    328 #define ATassign 360
    329 #define THEN 361
     269#define FALLTHRU 307
     270#define TRY 308
     271#define CATCH 309
     272#define FINALLY 310
     273#define THROW 311
     274#define ASM 312
     275#define ALIGNAS 313
     276#define ALIGNOF 314
     277#define ATOMIC 315
     278#define GENERIC 316
     279#define NORETURN 317
     280#define STATICASSERT 318
     281#define THREADLOCAL 319
     282#define IDENTIFIER 320
     283#define QUOTED_IDENTIFIER 321
     284#define TYPEDEFname 322
     285#define TYPEGENname 323
     286#define ATTR_IDENTIFIER 324
     287#define ATTR_TYPEDEFname 325
     288#define ATTR_TYPEGENname 326
     289#define INTEGERconstant 327
     290#define FLOATINGconstant 328
     291#define CHARACTERconstant 329
     292#define STRINGliteral 330
     293#define ZERO 331
     294#define ONE 332
     295#define ARROW 333
     296#define ICR 334
     297#define DECR 335
     298#define LS 336
     299#define RS 337
     300#define LE 338
     301#define GE 339
     302#define EQ 340
     303#define NE 341
     304#define ANDAND 342
     305#define OROR 343
     306#define ELLIPSIS 344
     307#define MULTassign 345
     308#define DIVassign 346
     309#define MODassign 347
     310#define PLUSassign 348
     311#define MINUSassign 349
     312#define LSassign 350
     313#define RSassign 351
     314#define ANDassign 352
     315#define ERassign 353
     316#define ORassign 354
     317#define THEN 355
    330318
    331319
     
    337325
    338326/* Line 293 of yacc.c  */
    339 #line 110 "parser.yy"
     327#line 108 "parser.yy"
    340328
    341329        Token tok;
     
    354342
    355343/* Line 293 of yacc.c  */
    356 #line 357 "Parser/parser.cc"
     344#line 345 "Parser/parser.cc"
    357345} YYSTYPE;
    358346# define YYSTYPE_IS_TRIVIAL 1
     
    366354
    367355/* Line 343 of yacc.c  */
    368 #line 369 "Parser/parser.cc"
     356#line 357 "Parser/parser.cc"
    369357
    370358#ifdef short
     
    583571
    584572/* YYFINAL -- State number of the termination state.  */
    585 #define YYFINAL  247
     573#define YYFINAL  246
    586574/* YYLAST -- Last index in YYTABLE.  */
    587 #define YYLAST   10817
     575#define YYLAST   11329
    588576
    589577/* YYNTOKENS -- Number of terminals.  */
    590 #define YYNTOKENS  131
     578#define YYNTOKENS  125
    591579/* YYNNTS -- Number of nonterminals.  */
    592580#define YYNNTS  238
    593581/* YYNRULES -- Number of rules.  */
    594 #define YYNRULES  749
     582#define YYNRULES  740
    595583/* YYNRULES -- Number of states.  */
    596 #define YYNSTATES  1570
     584#define YYNSTATES  1530
    597585
    598586/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    599587#define YYUNDEFTOK  2
    600 #define YYMAXUTOK   361
     588#define YYMAXUTOK   355
    601589
    602590#define YYTRANSLATE(YYX)                                                \
     
    609597       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    610598       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    611        2,     2,     2,   116,     2,     2,     2,   123,   118,     2,
    612      107,   108,   117,   119,   114,   120,   111,   122,     2,     2,
    613        2,     2,     2,     2,     2,     2,     2,     2,   115,   130,
    614      124,   129,   125,   128,     2,     2,     2,     2,     2,     2,
     599       2,     2,     2,   110,     2,     2,     2,   117,   112,     2,
     600     101,   102,   111,   113,   108,   114,   105,   116,     2,     2,
     601       2,     2,     2,     2,     2,     2,     2,     2,   109,   124,
     602     118,   123,   119,   122,     2,     2,     2,     2,     2,     2,
    615603       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    616604       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    617        2,   109,     2,   110,   126,     2,     2,     2,     2,     2,
     605       2,   103,     2,   104,   120,     2,     2,     2,     2,     2,
    618606       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    619607       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    620        2,     2,     2,   112,   127,   113,   121,     2,     2,     2,
     608       2,     2,     2,   106,   121,   107,   115,     2,     2,     2,
    621609       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    622610       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    641629      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
    642630      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    643       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    644      105,   106
     631      95,    96,    97,    98,    99,   100
    645632};
    646633
     
    653640      17,    19,    21,    23,    25,    27,    29,    32,    34,    36,
    654641      40,    44,    46,    53,    58,    62,    70,    74,    82,    85,
    655       88,    96,   101,   103,   107,   108,   110,   114,   122,   132,
    656      134,   138,   140,   144,   152,   156,   164,   166,   168,   170,
    657      173,   176,   179,   182,   185,   188,   191,   196,   198,   203,
    658      208,   211,   216,   219,   221,   223,   225,   227,   229,   234,
    659      239,   241,   245,   249,   253,   255,   259,   263,   265,   269,
    660      273,   275,   279,   283,   287,   291,   293,   297,   301,   303,
    661      307,   309,   313,   315,   319,   321,   325,   327,   331,   333,
    662      339,   344,   350,   352,   354,   358,   362,   365,   366,   368,
    663      371,   377,   384,   392,   394,   398,   400,   402,   404,   406,
    664      408,   410,   412,   414,   416,   418,   420,   424,   425,   427,
    665      429,   431,   433,   435,   437,   439,   441,   443,   450,   455,
    666      458,   466,   468,   472,   474,   477,   479,   482,   484,   487,
    667      490,   496,   504,   510,   520,   526,   536,   538,   542,   544,
    668      546,   550,   554,   557,   559,   562,   565,   566,   568,   571,
    669      575,   576,   578,   581,   585,   589,   594,   595,   597,   599,
    670      602,   608,   616,   623,   630,   635,   639,   644,   647,   651,
    671      654,   658,   662,   666,   670,   676,   680,   684,   689,   691,
    672      697,   704,   710,   717,   727,   738,   748,   759,   762,   764,
    673      767,   770,   773,   775,   782,   791,   802,   815,   830,   831,
    674      833,   834,   836,   838,   842,   847,   855,   856,   858,   862,
    675      864,   868,   870,   872,   874,   878,   880,   882,   884,   888,
    676      889,   891,   895,   900,   902,   906,   908,   910,   914,   918,
    677      922,   926,   930,   933,   937,   944,   948,   952,   957,   959,
    678      962,   965,   969,   975,   984,   992,  1000,  1006,  1016,  1019,
    679     1022,  1028,  1032,  1038,  1043,  1047,  1052,  1057,  1065,  1069,
    680     1073,  1077,  1081,  1086,  1093,  1095,  1097,  1099,  1101,  1103,
    681     1105,  1107,  1109,  1110,  1112,  1114,  1117,  1119,  1121,  1123,
    682     1125,  1127,  1129,  1131,  1132,  1138,  1140,  1143,  1147,  1149,
    683     1152,  1154,  1156,  1158,  1160,  1162,  1164,  1166,  1168,  1170,
    684     1172,  1174,  1176,  1178,  1180,  1182,  1184,  1186,  1188,  1190,
    685     1192,  1194,  1196,  1199,  1202,  1206,  1210,  1212,  1216,  1218,
    686     1221,  1224,  1227,  1232,  1237,  1242,  1247,  1249,  1252,  1255,
    687     1259,  1261,  1264,  1267,  1269,  1272,  1275,  1279,  1281,  1284,
    688     1287,  1289,  1291,  1296,  1299,  1305,  1313,  1316,  1319,  1322,
    689     1324,  1327,  1330,  1334,  1337,  1341,  1343,  1346,  1350,  1353,
    690     1356,  1361,  1362,  1364,  1367,  1370,  1372,  1373,  1375,  1378,
    691     1381,  1387,  1394,  1397,  1400,  1405,  1406,  1409,  1410,  1412,
    692     1414,  1416,  1422,  1428,  1434,  1436,  1442,  1448,  1458,  1460,
    693     1466,  1467,  1469,  1471,  1477,  1479,  1481,  1487,  1493,  1495,
    694     1499,  1503,  1508,  1510,  1512,  1514,  1516,  1519,  1521,  1525,
    695     1529,  1531,  1534,  1536,  1540,  1542,  1544,  1546,  1548,  1550,
    696     1552,  1554,  1556,  1558,  1560,  1562,  1565,  1567,  1569,  1571,
    697     1574,  1575,  1578,  1581,  1583,  1588,  1589,  1591,  1594,  1598,
    698     1603,  1606,  1609,  1611,  1614,  1616,  1619,  1625,  1631,  1639,
    699     1646,  1648,  1651,  1654,  1658,  1660,  1663,  1666,  1671,  1674,
    700     1679,  1680,  1685,  1688,  1690,  1692,  1694,  1695,  1698,  1704,
    701     1710,  1724,  1726,  1728,  1732,  1736,  1739,  1743,  1747,  1750,
    702     1755,  1757,  1764,  1774,  1775,  1787,  1789,  1793,  1797,  1801,
    703     1803,  1805,  1811,  1814,  1820,  1821,  1823,  1825,  1829,  1830,
    704     1832,  1834,  1836,  1838,  1839,  1846,  1849,  1851,  1854,  1859,
    705     1862,  1866,  1870,  1874,  1879,  1885,  1891,  1897,  1904,  1906,
    706     1908,  1910,  1914,  1915,  1921,  1922,  1924,  1926,  1929,  1936,
    707     1938,  1942,  1943,  1945,  1950,  1952,  1954,  1956,  1958,  1961,
    708     1963,  1966,  1969,  1971,  1975,  1978,  1982,  1986,  1989,  1994,
    709     1999,  2003,  2012,  2016,  2019,  2021,  2024,  2031,  2040,  2044,
    710     2047,  2051,  2055,  2060,  2065,  2069,  2071,  2073,  2075,  2080,
    711     2087,  2091,  2094,  2098,  2102,  2107,  2112,  2116,  2119,  2121,
    712     2124,  2127,  2129,  2133,  2136,  2140,  2144,  2147,  2152,  2157,
    713     2161,  2168,  2177,  2181,  2184,  2186,  2189,  2192,  2195,  2199,
    714     2203,  2206,  2211,  2216,  2220,  2227,  2236,  2240,  2243,  2245,
    715     2248,  2251,  2253,  2255,  2258,  2262,  2266,  2269,  2274,  2281,
    716     2290,  2292,  2295,  2298,  2300,  2303,  2306,  2310,  2314,  2316,
    717     2321,  2326,  2330,  2336,  2345,  2349,  2352,  2356,  2358,  2364,
    718     2370,  2377,  2384,  2386,  2389,  2392,  2394,  2397,  2400,  2404,
    719     2408,  2410,  2415,  2420,  2424,  2430,  2439,  2443,  2445,  2448,
    720     2450,  2453,  2460,  2466,  2473,  2481,  2489,  2491,  2494,  2497,
    721     2499,  2502,  2505,  2509,  2513,  2515,  2520,  2525,  2529,  2538,
    722     2542,  2544,  2546,  2549,  2551,  2553,  2556,  2560,  2563,  2567,
    723     2570,  2574,  2578,  2581,  2586,  2590,  2593,  2597,  2600,  2605,
    724     2609,  2612,  2619,  2626,  2633,  2641,  2643,  2646,  2648,  2650,
    725     2652,  2655,  2659,  2662,  2666,  2669,  2673,  2677,  2682,  2685,
    726     2689,  2694,  2697,  2703,  2709,  2716,  2723,  2724,  2726,  2727
     642      88,    96,    98,   102,   103,   105,   109,   117,   127,   129,
     643     133,   135,   139,   147,   151,   159,   161,   163,   165,   168,
     644     171,   174,   177,   180,   183,   186,   191,   193,   198,   203,
     645     206,   211,   214,   216,   218,   220,   222,   224,   229,   234,
     646     236,   240,   244,   248,   250,   254,   258,   260,   264,   268,
     647     270,   274,   278,   282,   286,   288,   292,   296,   298,   302,
     648     304,   308,   310,   314,   316,   320,   322,   326,   328,   334,
     649     339,   345,   347,   349,   353,   357,   360,   361,   363,   366,
     650     372,   379,   387,   389,   393,   395,   397,   399,   401,   403,
     651     405,   407,   409,   411,   413,   415,   419,   420,   422,   424,
     652     426,   428,   430,   432,   434,   436,   438,   443,   446,   454,
     653     456,   460,   462,   465,   467,   470,   472,   475,   478,   484,
     654     492,   498,   508,   514,   524,   526,   530,   532,   534,   538,
     655     542,   545,   547,   550,   553,   554,   556,   559,   563,   564,
     656     566,   569,   573,   577,   582,   583,   585,   587,   590,   596,
     657     604,   611,   618,   623,   627,   632,   635,   639,   642,   646,
     658     650,   654,   657,   661,   665,   670,   672,   678,   685,   695,
     659     706,   709,   711,   714,   717,   720,   722,   729,   738,   749,
     660     762,   777,   778,   780,   781,   783,   785,   789,   794,   802,
     661     803,   805,   809,   811,   815,   817,   819,   821,   825,   827,
     662     829,   831,   835,   836,   838,   842,   847,   849,   853,   855,
     663     857,   861,   865,   869,   873,   877,   880,   884,   891,   895,
     664     899,   904,   906,   909,   912,   916,   922,   931,   939,   947,
     665     953,   963,   966,   969,   975,   979,   985,   990,   994,   999,
     666    1004,  1012,  1016,  1020,  1024,  1028,  1033,  1040,  1042,  1044,
     667    1046,  1048,  1050,  1052,  1054,  1056,  1057,  1059,  1061,  1064,
     668    1066,  1068,  1070,  1072,  1074,  1076,  1078,  1079,  1085,  1087,
     669    1090,  1094,  1096,  1099,  1101,  1103,  1105,  1107,  1109,  1111,
     670    1113,  1115,  1117,  1119,  1121,  1123,  1125,  1127,  1129,  1131,
     671    1133,  1135,  1137,  1139,  1141,  1143,  1146,  1149,  1153,  1157,
     672    1159,  1163,  1165,  1168,  1171,  1174,  1179,  1184,  1189,  1194,
     673    1196,  1199,  1202,  1206,  1208,  1211,  1214,  1216,  1219,  1222,
     674    1226,  1228,  1231,  1234,  1236,  1238,  1243,  1246,  1252,  1260,
     675    1263,  1266,  1269,  1271,  1274,  1277,  1281,  1284,  1288,  1290,
     676    1293,  1297,  1300,  1303,  1308,  1309,  1311,  1314,  1317,  1319,
     677    1320,  1322,  1325,  1328,  1334,  1341,  1344,  1347,  1352,  1353,
     678    1356,  1357,  1359,  1361,  1363,  1369,  1375,  1381,  1383,  1389,
     679    1395,  1405,  1407,  1413,  1414,  1416,  1418,  1424,  1426,  1428,
     680    1434,  1440,  1442,  1446,  1450,  1455,  1457,  1459,  1461,  1463,
     681    1466,  1468,  1472,  1476,  1478,  1481,  1483,  1487,  1489,  1491,
     682    1493,  1495,  1497,  1499,  1501,  1503,  1505,  1507,  1509,  1512,
     683    1514,  1516,  1518,  1521,  1522,  1525,  1527,  1532,  1534,  1537,
     684    1541,  1546,  1549,  1552,  1554,  1557,  1559,  1562,  1568,  1574,
     685    1582,  1589,  1591,  1594,  1597,  1601,  1603,  1606,  1609,  1614,
     686    1617,  1622,  1623,  1628,  1631,  1633,  1635,  1637,  1638,  1641,
     687    1647,  1653,  1667,  1669,  1671,  1675,  1679,  1682,  1686,  1690,
     688    1693,  1698,  1700,  1707,  1717,  1718,  1730,  1732,  1736,  1740,
     689    1744,  1746,  1748,  1754,  1757,  1763,  1764,  1766,  1768,  1772,
     690    1773,  1775,  1777,  1779,  1781,  1782,  1789,  1792,  1794,  1797,
     691    1802,  1805,  1809,  1813,  1817,  1822,  1828,  1834,  1840,  1847,
     692    1849,  1851,  1853,  1857,  1858,  1864,  1865,  1867,  1869,  1872,
     693    1879,  1881,  1885,  1886,  1888,  1893,  1895,  1897,  1899,  1901,
     694    1904,  1906,  1909,  1912,  1914,  1918,  1921,  1925,  1929,  1932,
     695    1937,  1942,  1946,  1955,  1959,  1962,  1964,  1967,  1974,  1983,
     696    1987,  1990,  1994,  1998,  2003,  2008,  2012,  2014,  2016,  2018,
     697    2023,  2030,  2034,  2037,  2041,  2045,  2050,  2055,  2059,  2062,
     698    2064,  2067,  2070,  2072,  2076,  2079,  2083,  2087,  2090,  2095,
     699    2100,  2104,  2111,  2120,  2124,  2127,  2129,  2132,  2135,  2138,
     700    2142,  2146,  2149,  2154,  2159,  2163,  2170,  2179,  2183,  2186,
     701    2188,  2191,  2194,  2196,  2198,  2201,  2205,  2209,  2212,  2217,
     702    2224,  2233,  2235,  2238,  2241,  2243,  2246,  2249,  2253,  2257,
     703    2259,  2264,  2269,  2273,  2279,  2288,  2292,  2295,  2299,  2301,
     704    2307,  2313,  2320,  2327,  2329,  2332,  2335,  2337,  2340,  2343,
     705    2347,  2351,  2353,  2358,  2363,  2367,  2373,  2382,  2386,  2388,
     706    2391,  2393,  2396,  2403,  2409,  2416,  2424,  2432,  2434,  2437,
     707    2440,  2442,  2445,  2448,  2452,  2456,  2458,  2463,  2468,  2472,
     708    2481,  2485,  2487,  2489,  2492,  2494,  2496,  2499,  2503,  2506,
     709    2510,  2513,  2517,  2521,  2524,  2529,  2533,  2536,  2540,  2543,
     710    2548,  2552,  2555,  2562,  2569,  2576,  2584,  2586,  2589,  2591,
     711    2593,  2595,  2598,  2602,  2605,  2609,  2612,  2616,  2620,  2625,
     712    2628,  2632,  2637,  2640,  2646,  2652,  2659,  2666,  2667,  2669,
     713    2670
    727714};
    728715
     
    730717static const yytype_int16 yyrhs[] =
    731718{
    732      297,     0,    -1,    -1,    -1,    77,    -1,    78,    -1,    79,
    733       -1,    70,    -1,    74,    -1,   138,    -1,    70,    -1,    74,
    734       -1,    70,    -1,    81,    -1,    82,    -1,    80,    -1,   139,
    735       80,    -1,    70,    -1,   138,    -1,   107,   166,   108,    -1,
    736      107,   170,   108,    -1,   140,    -1,   141,   109,   132,   161,
    737      133,   110,    -1,   141,   107,   142,   108,    -1,   141,   111,
    738      137,    -1,   141,   111,   109,   132,   144,   133,   110,    -1,
    739      141,    83,   137,    -1,   141,    83,   109,   132,   144,   133,
    740      110,    -1,   141,    84,    -1,   141,    85,    -1,   107,   270,
    741      108,   112,   274,   367,   113,    -1,   141,   112,   142,   113,
    742       -1,   143,    -1,   142,   114,   143,    -1,    -1,   161,    -1,
    743      137,   115,   161,    -1,   109,   132,   161,   133,   110,   115,
    744      161,    -1,   109,   132,   161,   114,   164,   133,   110,   115,
    745      161,    -1,   145,    -1,   144,   114,   145,    -1,   137,    -1,
    746      137,   111,   145,    -1,   137,   111,   109,   132,   144,   133,
    747      110,    -1,   137,    83,   145,    -1,   137,    83,   109,   132,
    748      144,   133,   110,    -1,   141,    -1,   134,    -1,   139,    -1,
    749       84,   146,    -1,    85,   146,    -1,    38,   148,    -1,   147,
    750      148,    -1,   116,   148,    -1,   117,   148,    -1,    36,   146,
    751       -1,    36,   107,   270,   108,    -1,    74,    -1,    74,   107,
    752      271,   108,    -1,    74,   107,   143,   108,    -1,    64,   146,
    753       -1,    64,   107,   270,   108,    -1,    92,   137,    -1,   118,
    754       -1,   119,    -1,   120,    -1,   121,    -1,   146,    -1,   107,
    755      270,   108,   148,    -1,   107,   270,   108,   163,    -1,   148,
    756       -1,   149,   117,   148,    -1,   149,   122,   148,    -1,   149,
    757      123,   148,    -1,   149,    -1,   150,   119,   149,    -1,   150,
    758      120,   149,    -1,   150,    -1,   151,    86,   150,    -1,   151,
    759       87,   150,    -1,   151,    -1,   152,   124,   151,    -1,   152,
    760      125,   151,    -1,   152,    88,   151,    -1,   152,    89,   151,
    761       -1,   152,    -1,   153,    90,   152,    -1,   153,    91,   152,
    762       -1,   153,    -1,   154,   118,   153,    -1,   154,    -1,   155,
    763      126,   154,    -1,   155,    -1,   156,   127,   155,    -1,   156,
    764       -1,   157,    92,   156,    -1,   157,    -1,   158,    93,   157,
    765       -1,   158,    -1,   158,   128,   166,   115,   159,    -1,   158,
    766      128,   115,   159,    -1,   158,   128,   166,   115,   163,    -1,
    767      159,    -1,   159,    -1,   146,   129,   161,    -1,   146,   165,
    768      161,    -1,   163,   368,    -1,    -1,   161,    -1,   109,   110,
    769       -1,   109,   132,   161,   133,   110,    -1,   109,   132,   114,
    770      164,   133,   110,    -1,   109,   132,   161,   114,   164,   133,
    771      110,    -1,   162,    -1,   164,   114,   162,    -1,    95,    -1,
    772       96,    -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,
    773      101,    -1,   102,    -1,   103,    -1,   104,    -1,   161,    -1,
    774      166,   114,   161,    -1,    -1,   166,    -1,   169,    -1,   170,
    775       -1,   174,    -1,   175,    -1,   187,    -1,   189,    -1,   190,
    776       -1,   195,    -1,   126,   141,   112,   142,   113,   130,    -1,
    777      137,   115,   307,   168,    -1,   112,   113,    -1,   112,   132,
    778      132,   206,   171,   133,   113,    -1,   172,    -1,   171,   132,
    779      172,    -1,   209,    -1,    38,   209,    -1,   303,    -1,   168,
    780      133,    -1,   168,    -1,   173,   168,    -1,   167,   130,    -1,
    781       39,   107,   166,   108,   168,    -1,    39,   107,   166,   108,
    782      168,    40,   168,    -1,    41,   107,   166,   108,   180,    -1,
    783       41,   107,   166,   108,   112,   132,   202,   181,   113,    -1,
    784       51,   107,   166,   108,   180,    -1,    51,   107,   166,   108,
    785      112,   132,   202,   183,   113,    -1,   160,    -1,   160,    94,
    786      160,    -1,   305,    -1,   176,    -1,   177,   114,   176,    -1,
    787       42,   177,   115,    -1,    43,   115,    -1,   178,    -1,   179,
    788      178,    -1,   179,   168,    -1,    -1,   182,    -1,   179,   173,
    789       -1,   182,   179,   173,    -1,    -1,   184,    -1,   179,   186,
    790       -1,   179,   173,   185,    -1,   184,   179,   186,    -1,   184,
    791      179,   173,   185,    -1,    -1,   186,    -1,    54,    -1,    54,
    792      130,    -1,    45,   107,   166,   108,   168,    -1,    44,   168,
    793       45,   107,   166,   108,   130,    -1,    46,   107,   132,   188,
    794      108,   168,    -1,   167,   133,   130,   167,   130,   167,    -1,
    795      209,   167,   130,   167,    -1,    49,   137,   130,    -1,    49,
    796      117,   166,   130,    -1,    48,   130,    -1,    48,   137,   130,
    797       -1,    47,   130,    -1,    47,   137,   130,    -1,    50,   167,
    798      130,    -1,    59,   162,   130,    -1,    60,   162,   130,    -1,
    799       60,   162,    61,   161,   130,    -1,    55,   170,   191,    -1,
    800       55,   170,   193,    -1,    55,   170,   191,   193,    -1,   192,
    801       -1,    56,   107,    94,   108,   170,    -1,   192,    56,   107,
    802       94,   108,   170,    -1,    57,   107,    94,   108,   170,    -1,
    803      192,    57,   107,    94,   108,   170,    -1,    56,   107,   132,
    804      132,   194,   133,   108,   170,   133,    -1,   192,    56,   107,
    805      132,   132,   194,   133,   108,   170,   133,    -1,    57,   107,
    806      132,   132,   194,   133,   108,   170,   133,    -1,   192,    57,
    807      107,   132,   132,   194,   133,   108,   170,   133,    -1,    58,
    808      170,    -1,   222,    -1,   222,   304,    -1,   222,   352,    -1,
    809      361,   137,    -1,   361,    -1,    62,   196,   107,   139,   108,
    810      130,    -1,    62,   196,   107,   139,   115,   197,   108,   130,
    811       -1,    62,   196,   107,   139,   115,   197,   115,   197,   108,
    812      130,    -1,    62,   196,   107,   139,   115,   197,   115,   197,
    813      115,   200,   108,   130,    -1,    62,   196,    49,   107,   139,
    814      115,   115,   197,   115,   200,   115,   201,   108,   130,    -1,
    815       -1,    11,    -1,    -1,   198,    -1,   199,    -1,   198,   114,
    816      199,    -1,   139,   107,   160,   108,    -1,   109,   160,   110,
    817      139,   107,   160,   108,    -1,    -1,   139,    -1,   200,   114,
    818      139,    -1,   137,    -1,   201,   114,   137,    -1,   133,    -1,
    819      203,    -1,   209,    -1,   203,   132,   209,    -1,   133,    -1,
    820      205,    -1,   219,    -1,   205,   132,   219,    -1,    -1,   207,
    821       -1,    28,   208,   130,    -1,   207,    28,   208,   130,    -1,
    822      269,    -1,   208,   114,   269,    -1,   210,    -1,   219,    -1,
    823      211,   133,   130,    -1,   216,   133,   130,    -1,   213,   133,
    824      130,    -1,   288,   133,   130,    -1,   291,   133,   130,    -1,
    825      212,   272,    -1,   228,   212,   272,    -1,   211,   133,   114,
    826      132,   267,   272,    -1,   362,   267,   306,    -1,   365,   267,
    827      306,    -1,   224,   365,   267,   306,    -1,   214,    -1,   224,
    828      214,    -1,   228,   214,    -1,   228,   224,   214,    -1,   213,
    829      133,   114,   132,   267,    -1,   109,   110,   267,   107,   132,
    830      255,   133,   108,    -1,   365,   267,   107,   132,   255,   133,
    831      108,    -1,   215,   267,   107,   132,   255,   133,   108,    -1,
    832      109,   132,   257,   133,   110,    -1,   109,   132,   257,   133,
    833      114,   132,   258,   133,   110,    -1,     3,   212,    -1,     3,
    834      214,    -1,   216,   133,   114,   132,   137,    -1,     3,   222,
    835      304,    -1,   217,   133,   114,   132,   304,    -1,   224,     3,
    836      222,   304,    -1,   222,     3,   304,    -1,   222,     3,   224,
    837      304,    -1,     3,   137,   129,   161,    -1,   218,   133,   114,
    838      132,   137,   129,   161,    -1,   220,   133,   130,    -1,   217,
    839      133,   130,    -1,   218,   133,   130,    -1,   237,   133,   130,
    840       -1,   221,   304,   306,   272,    -1,   220,   114,   307,   304,
    841      306,   272,    -1,   233,    -1,   237,    -1,   239,    -1,   278,
    842       -1,   234,    -1,   238,    -1,   240,    -1,   279,    -1,    -1,
    843      224,    -1,   225,    -1,   224,   225,    -1,   226,    -1,   309,
    844       -1,    10,    -1,    12,    -1,    11,    -1,    14,    -1,    65,
    845       -1,    -1,    13,   107,   227,   281,   108,    -1,   229,    -1,
    846      224,   229,    -1,   228,   224,   229,    -1,   230,    -1,   229,
    847      230,    -1,   231,    -1,     5,    -1,     7,    -1,     4,    -1,
    848        6,    -1,     8,    -1,     9,    -1,    67,    -1,    69,    -1,
    849       16,    -1,    21,    -1,    20,    -1,    18,    -1,    19,    -1,
    850       17,    -1,    22,    -1,    23,    -1,    15,    -1,    24,    -1,
    851       25,    -1,    26,    -1,   234,    -1,   228,   234,    -1,   233,
    852      230,    -1,   233,   230,   224,    -1,   233,   230,   234,    -1,
    853      235,    -1,   223,   236,   223,    -1,   232,    -1,   224,   232,
    854       -1,   235,   225,    -1,   235,   232,    -1,    27,   107,   271,
    855      108,    -1,    27,   107,   166,   108,    -1,    76,   107,   271,
    856      108,    -1,    76,   107,   166,   108,    -1,   238,    -1,   228,
    857      238,    -1,   237,   230,    -1,   237,   230,   224,    -1,   241,
    858       -1,   224,   241,    -1,   238,   225,    -1,   240,    -1,   228,
    859      240,    -1,   239,   230,    -1,   239,   230,   224,    -1,    72,
    860       -1,   224,    72,    -1,   240,   225,    -1,   242,    -1,   252,
    861       -1,   243,   112,   244,   113,    -1,   243,   269,    -1,   243,
    862      269,   112,   244,   113,    -1,   243,   107,   287,   108,   112,
    863      244,   113,    -1,   243,   280,    -1,    30,   307,    -1,    31,
    864      307,    -1,   245,    -1,   244,   245,    -1,   246,   130,    -1,
    865       38,   246,   130,    -1,   247,   130,    -1,    38,   247,   130,
    866       -1,   361,    -1,   361,   269,    -1,   246,   114,   269,    -1,
    867      246,   114,    -1,   222,   248,    -1,   247,   114,   307,   248,
    868       -1,    -1,   250,    -1,   313,   249,    -1,   326,   249,    -1,
    869      352,    -1,    -1,   250,    -1,   115,   160,    -1,    29,   307,
    870       -1,   251,   112,   253,   367,   113,    -1,   251,   269,   112,
    871      253,   367,   113,    -1,   251,   269,    -1,   269,   254,    -1,
    872      253,   114,   269,   254,    -1,    -1,   129,   160,    -1,    -1,
    873      256,    -1,   258,    -1,   257,    -1,   257,   133,   114,   132,
    874      258,    -1,   258,   133,   114,   132,    94,    -1,   257,   133,
    875      114,   132,    94,    -1,   262,    -1,   258,   133,   114,   132,
    876      262,    -1,   257,   133,   114,   132,   262,    -1,   257,   133,
    877      114,   132,   258,   133,   114,   132,   262,    -1,   263,    -1,
    878      258,   133,   114,   132,   263,    -1,    -1,   260,    -1,   261,
    879       -1,   261,   133,   114,   132,    94,    -1,   265,    -1,   264,
    880       -1,   261,   133,   114,   132,   265,    -1,   261,   133,   114,
    881      132,   264,    -1,   264,    -1,   357,   267,   368,    -1,   365,
    882      267,   368,    -1,   224,   365,   267,   368,    -1,   214,    -1,
    883      265,    -1,   357,    -1,   365,    -1,   224,   365,    -1,   366,
    884       -1,   221,   331,   368,    -1,   221,   335,   368,    -1,   221,
    885       -1,   221,   346,    -1,   137,    -1,   266,   114,   137,    -1,
    886      135,    -1,    72,    -1,    73,    -1,   136,    -1,    72,    -1,
    887       73,    -1,   137,    -1,    72,    -1,    73,    -1,   361,    -1,
    888      222,    -1,   222,   352,    -1,   361,    -1,   366,    -1,   222,
    889       -1,   222,   340,    -1,    -1,   129,   273,    -1,   105,   273,
    890       -1,   161,    -1,   112,   274,   367,   113,    -1,    -1,   273,
    891       -1,   275,   273,    -1,   274,   114,   273,    -1,   274,   114,
    892      275,   273,    -1,   276,   115,    -1,   269,   115,    -1,   277,
    893       -1,   276,   277,    -1,    78,    -1,   111,   269,    -1,   109,
    894      132,   161,   133,   110,    -1,   109,   132,   305,   133,   110,
    895       -1,   109,   132,   160,    94,   160,   133,   110,    -1,   111,
    896      109,   132,   144,   133,   110,    -1,   279,    -1,   228,   279,
    897       -1,   278,   230,    -1,   278,   230,   224,    -1,   280,    -1,
    898      224,   280,    -1,   279,   225,    -1,    73,   107,   287,   108,
    899       -1,   282,   368,    -1,   281,   114,   282,   368,    -1,    -1,
    900      284,   269,   283,   285,    -1,   222,   331,    -1,    32,    -1,
    901       34,    -1,    33,    -1,    -1,   285,   286,    -1,   127,   269,
    902      107,   287,   108,    -1,   127,   112,   132,   293,   113,    -1,
    903      127,   107,   132,   281,   133,   108,   112,   132,   293,   113,
    904      107,   287,   108,    -1,   271,    -1,   161,    -1,   287,   114,
    905      271,    -1,   287,   114,   161,    -1,    32,   289,    -1,   229,
    906       32,   289,    -1,   288,   114,   289,    -1,   290,   285,    -1,
    907      290,   285,   129,   271,    -1,   269,    -1,   268,   107,   132,
    908      281,   133,   108,    -1,    35,   269,   107,   132,   281,   133,
    909      108,   112,   113,    -1,    -1,    35,   269,   107,   132,   281,
    910      133,   108,   112,   292,   293,   113,    -1,   294,    -1,   293,
    911      132,   294,    -1,   295,   133,   130,    -1,   296,   133,   130,
    912       -1,   212,    -1,   214,    -1,   295,   133,   114,   132,   267,
    913       -1,   222,   304,    -1,   296,   133,   114,   132,   304,    -1,
    914       -1,   298,    -1,   300,    -1,   298,   132,   300,    -1,    -1,
    915      298,    -1,   209,    -1,   302,    -1,   195,    -1,    -1,     5,
    916       80,   301,   112,   299,   113,    -1,    38,   300,    -1,   303,
    917       -1,   318,   170,    -1,   322,   132,   204,   170,    -1,   213,
    918      170,    -1,   221,   318,   170,    -1,   224,   318,   170,    -1,
    919      228,   318,   170,    -1,   228,   224,   318,   170,    -1,   221,
    920      322,   132,   204,   170,    -1,   224,   322,   132,   204,   170,
    921       -1,   228,   322,   132,   204,   170,    -1,   228,   224,   322,
    922      132,   204,   170,    -1,   313,    -1,   318,    -1,   326,    -1,
    923      160,   121,   160,    -1,    -1,    62,   107,   139,   108,   307,
    924       -1,    -1,   308,    -1,   309,    -1,   308,   309,    -1,    37,
    925      107,   107,   310,   108,   108,    -1,   311,    -1,   310,   114,
    926      311,    -1,    -1,   312,    -1,   312,   107,   167,   108,    -1,
    927      267,    -1,   231,    -1,   232,    -1,   225,    -1,   314,   307,
    928       -1,   315,    -1,   316,   307,    -1,   317,   307,    -1,   135,
    929       -1,   107,   314,   108,    -1,   117,   313,    -1,   117,   224,
    930      313,    -1,   107,   315,   108,    -1,   314,   344,    -1,   107,
    931      315,   108,   344,    -1,   107,   316,   108,   345,    -1,   107,
    932      316,   108,    -1,   107,   315,   108,   107,   132,   259,   133,
    933      108,    -1,   107,   317,   108,    -1,   319,   307,    -1,   320,
    934       -1,   321,   307,    -1,   314,   107,   132,   259,   133,   108,
    935       -1,   107,   320,   108,   107,   132,   259,   133,   108,    -1,
    936      107,   319,   108,    -1,   117,   318,    -1,   117,   224,   318,
    937       -1,   107,   320,   108,    -1,   107,   320,   108,   344,    -1,
    938      107,   321,   108,   345,    -1,   107,   321,   108,    -1,   323,
    939       -1,   324,    -1,   325,    -1,   314,   107,   266,   108,    -1,
    940      107,   324,   108,   107,   266,   108,    -1,   107,   323,   108,
    941       -1,   117,   322,    -1,   117,   224,   322,    -1,   107,   324,
    942      108,    -1,   107,   324,   108,   344,    -1,   107,   325,   108,
    943      345,    -1,   107,   325,   108,    -1,   327,   307,    -1,   328,
    944       -1,   329,   307,    -1,   330,   307,    -1,   336,    -1,   107,
    945      327,   108,    -1,   117,   326,    -1,   117,   224,   326,    -1,
    946      107,   328,   108,    -1,   327,   344,    -1,   107,   328,   108,
    947      344,    -1,   107,   329,   108,   345,    -1,   107,   329,   108,
    948       -1,   327,   107,   132,   259,   133,   108,    -1,   107,   328,
    949      108,   107,   132,   259,   133,   108,    -1,   107,   330,   108,
    950       -1,   314,   307,    -1,   332,    -1,   333,   307,    -1,   334,
    951      307,    -1,   117,   331,    -1,   117,   224,   331,    -1,   107,
    952      332,   108,    -1,   314,   350,    -1,   107,   332,   108,   344,
    953       -1,   107,   333,   108,   345,    -1,   107,   333,   108,    -1,
    954      314,   107,   132,   259,   133,   108,    -1,   107,   332,   108,
    955      107,   132,   259,   133,   108,    -1,   107,   334,   108,    -1,
    956      336,   307,    -1,   337,    -1,   338,   307,    -1,   339,   307,
    957       -1,    72,    -1,    73,    -1,   117,   335,    -1,   117,   224,
    958      335,    -1,   107,   337,   108,    -1,   336,   350,    -1,   107,
    959      337,   108,   350,    -1,   336,   107,   132,   259,   133,   108,
    960       -1,   107,   337,   108,   107,   132,   259,   133,   108,    -1,
    961      341,    -1,   342,   307,    -1,   343,   307,    -1,   117,    -1,
    962      117,   224,    -1,   117,   340,    -1,   117,   224,   340,    -1,
    963      107,   341,   108,    -1,   344,    -1,   107,   341,   108,   344,
    964       -1,   107,   342,   108,   345,    -1,   107,   342,   108,    -1,
    965      107,   132,   259,   133,   108,    -1,   107,   341,   108,   107,
    966      132,   259,   133,   108,    -1,   107,   343,   108,    -1,   109,
    967      110,    -1,   109,   110,   345,    -1,   345,    -1,   109,   132,
    968      161,   133,   110,    -1,   109,   132,   117,   133,   110,    -1,
    969      345,   109,   132,   161,   133,   110,    -1,   345,   109,   132,
    970      117,   133,   110,    -1,   347,    -1,   348,   307,    -1,   349,
    971      307,    -1,   117,    -1,   117,   224,    -1,   117,   346,    -1,
    972      117,   224,   346,    -1,   107,   347,   108,    -1,   350,    -1,
    973      107,   347,   108,   350,    -1,   107,   348,   108,   345,    -1,
    974      107,   348,   108,    -1,   107,   132,   259,   133,   108,    -1,
    975      107,   347,   108,   107,   132,   259,   133,   108,    -1,   107,
    976      349,   108,    -1,   351,    -1,   351,   345,    -1,   345,    -1,
    977      109,   110,    -1,   109,   132,   224,   117,   133,   110,    -1,
    978      109,   132,   224,   133,   110,    -1,   109,   132,   224,   161,
    979      133,   110,    -1,   109,   132,     7,   223,   161,   133,   110,
    980       -1,   109,   132,   224,     7,   161,   133,   110,    -1,   353,
    981       -1,   354,   307,    -1,   355,   307,    -1,   117,    -1,   117,
    982      224,    -1,   117,   352,    -1,   117,   224,   352,    -1,   107,
    983      353,   108,    -1,   344,    -1,   107,   353,   108,   344,    -1,
    984      107,   354,   108,   345,    -1,   107,   354,   108,    -1,   107,
    985      353,   108,   107,   132,   259,   133,   108,    -1,   107,   355,
    986      108,    -1,   357,    -1,   365,    -1,   224,   365,    -1,   358,
    987       -1,   359,    -1,   117,   222,    -1,   224,   117,   222,    -1,
    988      117,   366,    -1,   224,   117,   366,    -1,   117,   356,    -1,
    989      224,   117,   356,    -1,   109,   110,   222,    -1,   360,   222,
    990       -1,   109,   110,   345,   222,    -1,   360,   345,   222,    -1,
    991      345,   222,    -1,   109,   110,   358,    -1,   360,   358,    -1,
    992      109,   110,   345,   358,    -1,   360,   345,   358,    -1,   345,
    993      358,    -1,   109,   132,   224,   117,   133,   110,    -1,   109,
    994      132,   224,   161,   133,   110,    -1,   109,   132,   228,   161,
    995      133,   110,    -1,   109,   132,   228,   224,   161,   133,   110,
    996       -1,   365,    -1,   224,   365,    -1,   362,    -1,   363,    -1,
    997      364,    -1,   117,   222,    -1,   224,   117,   222,    -1,   117,
    998      366,    -1,   224,   117,   366,    -1,   117,   361,    -1,   224,
    999      117,   361,    -1,   109,   110,   222,    -1,   109,   110,   345,
    1000      222,    -1,   345,   222,    -1,   109,   110,   363,    -1,   109,
    1001      110,   345,   363,    -1,   345,   363,    -1,   109,   132,   258,
    1002      133,   110,    -1,   109,   110,   107,   255,   108,    -1,   365,
    1003      107,   132,   255,   133,   108,    -1,   215,   107,   132,   255,
    1004      133,   108,    -1,    -1,   114,    -1,    -1,   129,   161,    -1
     719     291,     0,    -1,    -1,    -1,    72,    -1,    73,    -1,    74,
     720      -1,    65,    -1,    69,    -1,   132,    -1,    65,    -1,    69,
     721      -1,    65,    -1,    76,    -1,    77,    -1,    75,    -1,   133,
     722      75,    -1,    65,    -1,   132,    -1,   101,   160,   102,    -1,
     723     101,   164,   102,    -1,   134,    -1,   135,   103,   126,   155,
     724     127,   104,    -1,   135,   101,   136,   102,    -1,   135,   105,
     725     131,    -1,   135,   105,   103,   126,   138,   127,   104,    -1,
     726     135,    78,   131,    -1,   135,    78,   103,   126,   138,   127,
     727     104,    -1,   135,    79,    -1,   135,    80,    -1,   101,   264,
     728     102,   106,   268,   361,   107,    -1,   137,    -1,   136,   108,
     729     137,    -1,    -1,   155,    -1,   131,   109,   155,    -1,   103,
     730     126,   155,   127,   104,   109,   155,    -1,   103,   126,   155,
     731     108,   158,   127,   104,   109,   155,    -1,   139,    -1,   138,
     732     108,   139,    -1,   131,    -1,   131,   105,   139,    -1,   131,
     733     105,   103,   126,   138,   127,   104,    -1,   131,    78,   139,
     734      -1,   131,    78,   103,   126,   138,   127,   104,    -1,   135,
     735      -1,   128,    -1,   133,    -1,    79,   140,    -1,    80,   140,
     736      -1,    38,   142,    -1,   141,   142,    -1,   110,   142,    -1,
     737     111,   142,    -1,    36,   140,    -1,    36,   101,   264,   102,
     738      -1,    69,    -1,    69,   101,   265,   102,    -1,    69,   101,
     739     137,   102,    -1,    59,   140,    -1,    59,   101,   264,   102,
     740      -1,    87,   131,    -1,   112,    -1,   113,    -1,   114,    -1,
     741     115,    -1,   140,    -1,   101,   264,   102,   142,    -1,   101,
     742     264,   102,   157,    -1,   142,    -1,   143,   111,   142,    -1,
     743     143,   116,   142,    -1,   143,   117,   142,    -1,   143,    -1,
     744     144,   113,   143,    -1,   144,   114,   143,    -1,   144,    -1,
     745     145,    81,   144,    -1,   145,    82,   144,    -1,   145,    -1,
     746     146,   118,   145,    -1,   146,   119,   145,    -1,   146,    83,
     747     145,    -1,   146,    84,   145,    -1,   146,    -1,   147,    85,
     748     146,    -1,   147,    86,   146,    -1,   147,    -1,   148,   112,
     749     147,    -1,   148,    -1,   149,   120,   148,    -1,   149,    -1,
     750     150,   121,   149,    -1,   150,    -1,   151,    87,   150,    -1,
     751     151,    -1,   152,    88,   151,    -1,   152,    -1,   152,   122,
     752     160,   109,   153,    -1,   152,   122,   109,   153,    -1,   152,
     753     122,   160,   109,   157,    -1,   153,    -1,   153,    -1,   140,
     754     123,   155,    -1,   140,   159,   155,    -1,   157,   362,    -1,
     755      -1,   155,    -1,   103,   104,    -1,   103,   126,   155,   127,
     756     104,    -1,   103,   126,   108,   158,   127,   104,    -1,   103,
     757     126,   155,   108,   158,   127,   104,    -1,   156,    -1,   158,
     758     108,   156,    -1,    90,    -1,    91,    -1,    92,    -1,    93,
     759      -1,    94,    -1,    95,    -1,    96,    -1,    97,    -1,    98,
     760      -1,    99,    -1,   155,    -1,   160,   108,   155,    -1,    -1,
     761     160,    -1,   163,    -1,   164,    -1,   168,    -1,   169,    -1,
     762     181,    -1,   183,    -1,   184,    -1,   189,    -1,   131,   109,
     763     301,   162,    -1,   106,   107,    -1,   106,   126,   126,   200,
     764     165,   127,   107,    -1,   166,    -1,   165,   126,   166,    -1,
     765     203,    -1,    38,   203,    -1,   297,    -1,   162,   127,    -1,
     766     162,    -1,   167,   162,    -1,   161,   124,    -1,    39,   101,
     767     160,   102,   162,    -1,    39,   101,   160,   102,   162,    40,
     768     162,    -1,    41,   101,   160,   102,   174,    -1,    41,   101,
     769     160,   102,   106,   126,   196,   175,   107,    -1,    51,   101,
     770     160,   102,   174,    -1,    51,   101,   160,   102,   106,   126,
     771     196,   177,   107,    -1,   154,    -1,   154,    89,   154,    -1,
     772     299,    -1,   170,    -1,   171,   108,   170,    -1,    42,   171,
     773     109,    -1,    43,   109,    -1,   172,    -1,   173,   172,    -1,
     774     173,   162,    -1,    -1,   176,    -1,   173,   167,    -1,   176,
     775     173,   167,    -1,    -1,   178,    -1,   173,   180,    -1,   173,
     776     167,   179,    -1,   178,   173,   180,    -1,   178,   173,   167,
     777     179,    -1,    -1,   180,    -1,    52,    -1,    52,   124,    -1,
     778      45,   101,   160,   102,   162,    -1,    44,   162,    45,   101,
     779     160,   102,   124,    -1,    46,   101,   126,   182,   102,   162,
     780      -1,   161,   127,   124,   161,   124,   161,    -1,   203,   161,
     781     124,   161,    -1,    49,   131,   124,    -1,    49,   111,   160,
     782     124,    -1,    48,   124,    -1,    48,   131,   124,    -1,    47,
     783     124,    -1,    47,   131,   124,    -1,    50,   161,   124,    -1,
     784      56,   155,   124,    -1,    56,   124,    -1,    53,   164,   185,
     785      -1,    53,   164,   187,    -1,    53,   164,   185,   187,    -1,
     786     186,    -1,    54,   101,    89,   102,   164,    -1,   186,    54,
     787     101,    89,   102,   164,    -1,    54,   101,   126,   126,   188,
     788     127,   102,   164,   127,    -1,   186,    54,   101,   126,   126,
     789     188,   127,   102,   164,   127,    -1,    55,   164,    -1,   216,
     790      -1,   216,   298,    -1,   216,   346,    -1,   355,   131,    -1,
     791     355,    -1,    57,   190,   101,   133,   102,   124,    -1,    57,
     792     190,   101,   133,   109,   191,   102,   124,    -1,    57,   190,
     793     101,   133,   109,   191,   109,   191,   102,   124,    -1,    57,
     794     190,   101,   133,   109,   191,   109,   191,   109,   194,   102,
     795     124,    -1,    57,   190,    49,   101,   133,   109,   109,   191,
     796     109,   194,   109,   195,   102,   124,    -1,    -1,    11,    -1,
     797      -1,   192,    -1,   193,    -1,   192,   108,   193,    -1,   133,
     798     101,   154,   102,    -1,   103,   154,   104,   133,   101,   154,
     799     102,    -1,    -1,   133,    -1,   194,   108,   133,    -1,   131,
     800      -1,   195,   108,   131,    -1,   127,    -1,   197,    -1,   203,
     801      -1,   197,   126,   203,    -1,   127,    -1,   199,    -1,   213,
     802      -1,   199,   126,   213,    -1,    -1,   201,    -1,    28,   202,
     803     124,    -1,   201,    28,   202,   124,    -1,   263,    -1,   202,
     804     108,   263,    -1,   204,    -1,   213,    -1,   205,   127,   124,
     805      -1,   210,   127,   124,    -1,   207,   127,   124,    -1,   282,
     806     127,   124,    -1,   285,   127,   124,    -1,   206,   266,    -1,
     807     222,   206,   266,    -1,   205,   127,   108,   126,   261,   266,
     808      -1,   356,   261,   300,    -1,   359,   261,   300,    -1,   218,
     809     359,   261,   300,    -1,   208,    -1,   218,   208,    -1,   222,
     810     208,    -1,   222,   218,   208,    -1,   207,   127,   108,   126,
     811     261,    -1,   103,   104,   261,   101,   126,   249,   127,   102,
     812      -1,   359,   261,   101,   126,   249,   127,   102,    -1,   209,
     813     261,   101,   126,   249,   127,   102,    -1,   103,   126,   251,
     814     127,   104,    -1,   103,   126,   251,   127,   108,   126,   252,
     815     127,   104,    -1,     3,   206,    -1,     3,   208,    -1,   210,
     816     127,   108,   126,   131,    -1,     3,   216,   298,    -1,   211,
     817     127,   108,   126,   298,    -1,   218,     3,   216,   298,    -1,
     818     216,     3,   298,    -1,   216,     3,   218,   298,    -1,     3,
     819     131,   123,   155,    -1,   212,   127,   108,   126,   131,   123,
     820     155,    -1,   214,   127,   124,    -1,   211,   127,   124,    -1,
     821     212,   127,   124,    -1,   231,   127,   124,    -1,   215,   298,
     822     300,   266,    -1,   214,   108,   301,   298,   300,   266,    -1,
     823     227,    -1,   231,    -1,   233,    -1,   272,    -1,   228,    -1,
     824     232,    -1,   234,    -1,   273,    -1,    -1,   218,    -1,   219,
     825      -1,   218,   219,    -1,   220,    -1,   303,    -1,    10,    -1,
     826      12,    -1,    11,    -1,    14,    -1,    60,    -1,    -1,    13,
     827     101,   221,   275,   102,    -1,   223,    -1,   218,   223,    -1,
     828     222,   218,   223,    -1,   224,    -1,   223,   224,    -1,   225,
     829      -1,     5,    -1,     7,    -1,     4,    -1,     6,    -1,     8,
     830      -1,     9,    -1,    62,    -1,    64,    -1,    16,    -1,    21,
     831      -1,    20,    -1,    18,    -1,    19,    -1,    17,    -1,    22,
     832      -1,    23,    -1,    15,    -1,    24,    -1,    25,    -1,    26,
     833      -1,   228,    -1,   222,   228,    -1,   227,   224,    -1,   227,
     834     224,   218,    -1,   227,   224,   228,    -1,   229,    -1,   217,
     835     230,   217,    -1,   226,    -1,   218,   226,    -1,   229,   219,
     836      -1,   229,   226,    -1,    27,   101,   265,   102,    -1,    27,
     837     101,   160,   102,    -1,    71,   101,   265,   102,    -1,    71,
     838     101,   160,   102,    -1,   232,    -1,   222,   232,    -1,   231,
     839     224,    -1,   231,   224,   218,    -1,   235,    -1,   218,   235,
     840      -1,   232,   219,    -1,   234,    -1,   222,   234,    -1,   233,
     841     224,    -1,   233,   224,   218,    -1,    67,    -1,   218,    67,
     842      -1,   234,   219,    -1,   236,    -1,   246,    -1,   237,   106,
     843     238,   107,    -1,   237,   263,    -1,   237,   263,   106,   238,
     844     107,    -1,   237,   101,   281,   102,   106,   238,   107,    -1,
     845     237,   274,    -1,    30,   301,    -1,    31,   301,    -1,   239,
     846      -1,   238,   239,    -1,   240,   124,    -1,    38,   240,   124,
     847      -1,   241,   124,    -1,    38,   241,   124,    -1,   355,    -1,
     848     355,   263,    -1,   240,   108,   263,    -1,   240,   108,    -1,
     849     216,   242,    -1,   241,   108,   301,   242,    -1,    -1,   244,
     850      -1,   307,   243,    -1,   320,   243,    -1,   346,    -1,    -1,
     851     244,    -1,   109,   154,    -1,    29,   301,    -1,   245,   106,
     852     247,   361,   107,    -1,   245,   263,   106,   247,   361,   107,
     853      -1,   245,   263,    -1,   263,   248,    -1,   247,   108,   263,
     854     248,    -1,    -1,   123,   154,    -1,    -1,   250,    -1,   252,
     855      -1,   251,    -1,   251,   127,   108,   126,   252,    -1,   252,
     856     127,   108,   126,    89,    -1,   251,   127,   108,   126,    89,
     857      -1,   256,    -1,   252,   127,   108,   126,   256,    -1,   251,
     858     127,   108,   126,   256,    -1,   251,   127,   108,   126,   252,
     859     127,   108,   126,   256,    -1,   257,    -1,   252,   127,   108,
     860     126,   257,    -1,    -1,   254,    -1,   255,    -1,   255,   127,
     861     108,   126,    89,    -1,   259,    -1,   258,    -1,   255,   127,
     862     108,   126,   259,    -1,   255,   127,   108,   126,   258,    -1,
     863     258,    -1,   351,   261,   362,    -1,   359,   261,   362,    -1,
     864     218,   359,   261,   362,    -1,   208,    -1,   259,    -1,   351,
     865      -1,   359,    -1,   218,   359,    -1,   360,    -1,   215,   325,
     866     362,    -1,   215,   329,   362,    -1,   215,    -1,   215,   340,
     867      -1,   131,    -1,   260,   108,   131,    -1,   129,    -1,    67,
     868      -1,    68,    -1,   130,    -1,    67,    -1,    68,    -1,   131,
     869      -1,    67,    -1,    68,    -1,   355,    -1,   216,    -1,   216,
     870     346,    -1,   355,    -1,   360,    -1,   216,    -1,   216,   334,
     871      -1,    -1,   123,   267,    -1,   155,    -1,   106,   268,   361,
     872     107,    -1,   267,    -1,   269,   267,    -1,   268,   108,   267,
     873      -1,   268,   108,   269,   267,    -1,   270,   109,    -1,   263,
     874     109,    -1,   271,    -1,   270,   271,    -1,    73,    -1,   105,
     875     263,    -1,   103,   126,   155,   127,   104,    -1,   103,   126,
     876     299,   127,   104,    -1,   103,   126,   154,    89,   154,   127,
     877     104,    -1,   105,   103,   126,   138,   127,   104,    -1,   273,
     878      -1,   222,   273,    -1,   272,   224,    -1,   272,   224,   218,
     879      -1,   274,    -1,   218,   274,    -1,   273,   219,    -1,    68,
     880     101,   281,   102,    -1,   276,   362,    -1,   275,   108,   276,
     881     362,    -1,    -1,   278,   263,   277,   279,    -1,   216,   325,
     882      -1,    32,    -1,    34,    -1,    33,    -1,    -1,   279,   280,
     883      -1,   121,   263,   101,   281,   102,    -1,   121,   106,   126,
     884     287,   107,    -1,   121,   101,   126,   275,   127,   102,   106,
     885     126,   287,   107,   101,   281,   102,    -1,   265,    -1,   155,
     886      -1,   281,   108,   265,    -1,   281,   108,   155,    -1,    32,
     887     283,    -1,   223,    32,   283,    -1,   282,   108,   283,    -1,
     888     284,   279,    -1,   284,   279,   123,   265,    -1,   263,    -1,
     889     262,   101,   126,   275,   127,   102,    -1,    35,   263,   101,
     890     126,   275,   127,   102,   106,   107,    -1,    -1,    35,   263,
     891     101,   126,   275,   127,   102,   106,   286,   287,   107,    -1,
     892     288,    -1,   287,   126,   288,    -1,   289,   127,   124,    -1,
     893     290,   127,   124,    -1,   206,    -1,   208,    -1,   289,   127,
     894     108,   126,   261,    -1,   216,   298,    -1,   290,   127,   108,
     895     126,   298,    -1,    -1,   292,    -1,   294,    -1,   292,   126,
     896     294,    -1,    -1,   292,    -1,   203,    -1,   296,    -1,   189,
     897      -1,    -1,     5,    75,   295,   106,   293,   107,    -1,    38,
     898     294,    -1,   297,    -1,   312,   164,    -1,   316,   126,   198,
     899     164,    -1,   207,   164,    -1,   215,   312,   164,    -1,   218,
     900     312,   164,    -1,   222,   312,   164,    -1,   222,   218,   312,
     901     164,    -1,   215,   316,   126,   198,   164,    -1,   218,   316,
     902     126,   198,   164,    -1,   222,   316,   126,   198,   164,    -1,
     903     222,   218,   316,   126,   198,   164,    -1,   307,    -1,   312,
     904      -1,   320,    -1,   154,   115,   154,    -1,    -1,    57,   101,
     905     133,   102,   301,    -1,    -1,   302,    -1,   303,    -1,   302,
     906     303,    -1,    37,   101,   101,   304,   102,   102,    -1,   305,
     907      -1,   304,   108,   305,    -1,    -1,   306,    -1,   306,   101,
     908     161,   102,    -1,   261,    -1,   225,    -1,   226,    -1,   219,
     909      -1,   308,   301,    -1,   309,    -1,   310,   301,    -1,   311,
     910     301,    -1,   129,    -1,   101,   308,   102,    -1,   111,   307,
     911      -1,   111,   218,   307,    -1,   101,   309,   102,    -1,   308,
     912     338,    -1,   101,   309,   102,   338,    -1,   101,   310,   102,
     913     339,    -1,   101,   310,   102,    -1,   101,   309,   102,   101,
     914     126,   253,   127,   102,    -1,   101,   311,   102,    -1,   313,
     915     301,    -1,   314,    -1,   315,   301,    -1,   308,   101,   126,
     916     253,   127,   102,    -1,   101,   314,   102,   101,   126,   253,
     917     127,   102,    -1,   101,   313,   102,    -1,   111,   312,    -1,
     918     111,   218,   312,    -1,   101,   314,   102,    -1,   101,   314,
     919     102,   338,    -1,   101,   315,   102,   339,    -1,   101,   315,
     920     102,    -1,   317,    -1,   318,    -1,   319,    -1,   308,   101,
     921     260,   102,    -1,   101,   318,   102,   101,   260,   102,    -1,
     922     101,   317,   102,    -1,   111,   316,    -1,   111,   218,   316,
     923      -1,   101,   318,   102,    -1,   101,   318,   102,   338,    -1,
     924     101,   319,   102,   339,    -1,   101,   319,   102,    -1,   321,
     925     301,    -1,   322,    -1,   323,   301,    -1,   324,   301,    -1,
     926     330,    -1,   101,   321,   102,    -1,   111,   320,    -1,   111,
     927     218,   320,    -1,   101,   322,   102,    -1,   321,   338,    -1,
     928     101,   322,   102,   338,    -1,   101,   323,   102,   339,    -1,
     929     101,   323,   102,    -1,   321,   101,   126,   253,   127,   102,
     930      -1,   101,   322,   102,   101,   126,   253,   127,   102,    -1,
     931     101,   324,   102,    -1,   308,   301,    -1,   326,    -1,   327,
     932     301,    -1,   328,   301,    -1,   111,   325,    -1,   111,   218,
     933     325,    -1,   101,   326,   102,    -1,   308,   344,    -1,   101,
     934     326,   102,   338,    -1,   101,   327,   102,   339,    -1,   101,
     935     327,   102,    -1,   308,   101,   126,   253,   127,   102,    -1,
     936     101,   326,   102,   101,   126,   253,   127,   102,    -1,   101,
     937     328,   102,    -1,   330,   301,    -1,   331,    -1,   332,   301,
     938      -1,   333,   301,    -1,    67,    -1,    68,    -1,   111,   329,
     939      -1,   111,   218,   329,    -1,   101,   331,   102,    -1,   330,
     940     344,    -1,   101,   331,   102,   344,    -1,   330,   101,   126,
     941     253,   127,   102,    -1,   101,   331,   102,   101,   126,   253,
     942     127,   102,    -1,   335,    -1,   336,   301,    -1,   337,   301,
     943      -1,   111,    -1,   111,   218,    -1,   111,   334,    -1,   111,
     944     218,   334,    -1,   101,   335,   102,    -1,   338,    -1,   101,
     945     335,   102,   338,    -1,   101,   336,   102,   339,    -1,   101,
     946     336,   102,    -1,   101,   126,   253,   127,   102,    -1,   101,
     947     335,   102,   101,   126,   253,   127,   102,    -1,   101,   337,
     948     102,    -1,   103,   104,    -1,   103,   104,   339,    -1,   339,
     949      -1,   103,   126,   155,   127,   104,    -1,   103,   126,   111,
     950     127,   104,    -1,   339,   103,   126,   155,   127,   104,    -1,
     951     339,   103,   126,   111,   127,   104,    -1,   341,    -1,   342,
     952     301,    -1,   343,   301,    -1,   111,    -1,   111,   218,    -1,
     953     111,   340,    -1,   111,   218,   340,    -1,   101,   341,   102,
     954      -1,   344,    -1,   101,   341,   102,   344,    -1,   101,   342,
     955     102,   339,    -1,   101,   342,   102,    -1,   101,   126,   253,
     956     127,   102,    -1,   101,   341,   102,   101,   126,   253,   127,
     957     102,    -1,   101,   343,   102,    -1,   345,    -1,   345,   339,
     958      -1,   339,    -1,   103,   104,    -1,   103,   126,   218,   111,
     959     127,   104,    -1,   103,   126,   218,   127,   104,    -1,   103,
     960     126,   218,   155,   127,   104,    -1,   103,   126,     7,   217,
     961     155,   127,   104,    -1,   103,   126,   218,     7,   155,   127,
     962     104,    -1,   347,    -1,   348,   301,    -1,   349,   301,    -1,
     963     111,    -1,   111,   218,    -1,   111,   346,    -1,   111,   218,
     964     346,    -1,   101,   347,   102,    -1,   338,    -1,   101,   347,
     965     102,   338,    -1,   101,   348,   102,   339,    -1,   101,   348,
     966     102,    -1,   101,   347,   102,   101,   126,   253,   127,   102,
     967      -1,   101,   349,   102,    -1,   351,    -1,   359,    -1,   218,
     968     359,    -1,   352,    -1,   353,    -1,   111,   216,    -1,   218,
     969     111,   216,    -1,   111,   360,    -1,   218,   111,   360,    -1,
     970     111,   350,    -1,   218,   111,   350,    -1,   103,   104,   216,
     971      -1,   354,   216,    -1,   103,   104,   339,   216,    -1,   354,
     972     339,   216,    -1,   339,   216,    -1,   103,   104,   352,    -1,
     973     354,   352,    -1,   103,   104,   339,   352,    -1,   354,   339,
     974     352,    -1,   339,   352,    -1,   103,   126,   218,   111,   127,
     975     104,    -1,   103,   126,   218,   155,   127,   104,    -1,   103,
     976     126,   222,   155,   127,   104,    -1,   103,   126,   222,   218,
     977     155,   127,   104,    -1,   359,    -1,   218,   359,    -1,   356,
     978      -1,   357,    -1,   358,    -1,   111,   216,    -1,   218,   111,
     979     216,    -1,   111,   360,    -1,   218,   111,   360,    -1,   111,
     980     355,    -1,   218,   111,   355,    -1,   103,   104,   216,    -1,
     981     103,   104,   339,   216,    -1,   339,   216,    -1,   103,   104,
     982     357,    -1,   103,   104,   339,   357,    -1,   339,   357,    -1,
     983     103,   126,   252,   127,   104,    -1,   103,   104,   101,   249,
     984     102,    -1,   359,   101,   126,   249,   127,   102,    -1,   209,
     985     101,   126,   249,   127,   102,    -1,    -1,   108,    -1,    -1,
     986     123,   155,    -1
    1005987};
    1006988
     
    1008990static const yytype_uint16 yyrline[] =
    1009991{
    1010        0,   290,   290,   296,   305,   306,   307,   311,   312,   313,
    1011      317,   318,   323,   327,   328,   332,   333,   339,   341,   343,
    1012      345,   350,   351,   357,   359,   361,   362,   364,   365,   367,
    1013      369,   371,   379,   380,   386,   387,   388,   393,   395,   400,
    1014      401,   405,   407,   409,   411,   413,   418,   421,   423,   425,
    1015      427,   429,   431,   433,   435,   441,   443,   445,   447,   449,
    1016      451,   453,   455,   460,   461,   462,   463,   467,   468,   470,
    1017      475,   476,   478,   480,   485,   486,   488,   493,   494,   496,
    1018      501,   502,   504,   506,   508,   513,   514,   516,   521,   522,
    1019      527,   528,   533,   534,   539,   540,   545,   546,   551,   552,
    1020      554,   556,   561,   566,   567,   569,   571,   577,   578,   584,
    1021      586,   588,   590,   595,   596,   601,   602,   603,   604,   605,
    1022      606,   607,   608,   609,   610,   614,   615,   621,   622,   628,
    1023      629,   630,   631,   632,   633,   634,   635,   636,   645,   652,
    1024      654,   664,   665,   670,   672,   674,   676,   680,   681,   686,
    1025      691,   694,   696,   698,   703,   705,   713,   714,   716,   720,
    1026      721,   726,   727,   732,   733,   737,   742,   743,   747,   749,
    1027      755,   756,   760,   762,   764,   766,   772,   773,   777,   778,
    1028      782,   784,   786,   791,   793,   798,   800,   804,   807,   811,
    1029      814,   818,   820,   824,   826,   833,   835,   837,   846,   848,
    1030      850,   852,   854,   859,   861,   863,   865,   870,   883,   884,
    1031      889,   891,   896,   900,   902,   904,   906,   908,   914,   915,
    1032      921,   922,   926,   927,   932,   934,   940,   941,   943,   948,
    1033      950,   957,   959,   963,   964,   969,   971,   975,   976,   980,
    1034      982,   986,   987,   991,   992,   996,   997,  1012,  1013,  1014,
    1035     1015,  1016,  1020,  1025,  1032,  1042,  1047,  1052,  1060,  1065,
    1036     1070,  1075,  1080,  1088,  1110,  1115,  1122,  1124,  1131,  1136,
    1037     1141,  1152,  1157,  1162,  1167,  1172,  1181,  1186,  1194,  1195,
    1038     1196,  1197,  1203,  1208,  1216,  1217,  1218,  1219,  1223,  1224,
    1039     1225,  1226,  1231,  1232,  1241,  1242,  1247,  1248,  1253,  1255,
    1040     1257,  1259,  1261,  1264,  1263,  1275,  1276,  1278,  1288,  1289,
    1041     1294,  1298,  1300,  1302,  1304,  1306,  1308,  1310,  1312,  1317,
    1042     1319,  1321,  1323,  1325,  1327,  1329,  1331,  1333,  1335,  1337,
    1043     1339,  1345,  1346,  1348,  1350,  1352,  1357,  1358,  1364,  1365,
    1044     1367,  1369,  1374,  1376,  1378,  1380,  1385,  1386,  1388,  1390,
    1045     1395,  1396,  1398,  1403,  1404,  1406,  1408,  1413,  1415,  1417,
    1046     1422,  1423,  1427,  1429,  1431,  1433,  1435,  1440,  1442,  1447,
    1047     1449,  1454,  1455,  1457,  1458,  1463,  1464,  1466,  1468,  1473,
    1048     1475,  1481,  1482,  1484,  1487,  1490,  1495,  1496,  1501,  1506,
    1049     1510,  1512,  1514,  1519,  1521,  1527,  1528,  1536,  1537,  1541,
    1050     1542,  1543,  1545,  1547,  1554,  1555,  1557,  1559,  1564,  1565,
    1051     1571,  1572,  1576,  1577,  1582,  1583,  1584,  1586,  1594,  1595,
    1052     1597,  1600,  1602,  1606,  1607,  1608,  1610,  1612,  1616,  1621,
    1053     1629,  1630,  1639,  1641,  1646,  1647,  1648,  1652,  1653,  1654,
    1054     1658,  1659,  1660,  1664,  1665,  1666,  1671,  1672,  1673,  1674,
    1055     1680,  1681,  1683,  1688,  1689,  1694,  1695,  1696,  1697,  1698,
    1056     1713,  1714,  1719,  1720,  1728,  1730,  1732,  1735,  1737,  1739,
    1057     1762,  1763,  1765,  1767,  1772,  1773,  1775,  1780,  1785,  1786,
    1058     1792,  1791,  1795,  1799,  1801,  1803,  1809,  1810,  1815,  1820,
    1059     1822,  1827,  1829,  1830,  1832,  1837,  1839,  1841,  1846,  1848,
    1060     1853,  1858,  1866,  1872,  1871,  1885,  1886,  1891,  1892,  1896,
    1061     1901,  1906,  1914,  1919,  1930,  1931,  1942,  1943,  1949,  1950,
    1062     1954,  1955,  1956,  1959,  1958,  1969,  1974,  1979,  1985,  1994,
    1063     2000,  2006,  2012,  2018,  2026,  2032,  2040,  2046,  2055,  2056,
    1064     2057,  2061,  2065,  2067,  2072,  2073,  2077,  2078,  2083,  2089,
    1065     2090,  2093,  2095,  2096,  2100,  2101,  2102,  2103,  2137,  2139,
    1066     2140,  2142,  2147,  2152,  2157,  2159,  2161,  2166,  2168,  2170,
    1067     2172,  2177,  2179,  2189,  2191,  2192,  2197,  2199,  2201,  2206,
    1068     2208,  2210,  2215,  2217,  2219,  2228,  2229,  2230,  2234,  2236,
    1069     2238,  2243,  2245,  2247,  2252,  2254,  2256,  2271,  2273,  2274,
    1070     2276,  2281,  2282,  2287,  2289,  2291,  2296,  2298,  2300,  2302,
    1071     2307,  2309,  2311,  2321,  2323,  2324,  2326,  2331,  2333,  2335,
    1072     2340,  2342,  2344,  2346,  2351,  2353,  2355,  2386,  2388,  2389,
    1073     2391,  2396,  2401,  2409,  2411,  2413,  2418,  2420,  2425,  2427,
    1074     2441,  2442,  2444,  2449,  2451,  2453,  2455,  2457,  2462,  2463,
    1075     2465,  2467,  2472,  2474,  2476,  2482,  2484,  2486,  2490,  2492,
    1076     2494,  2496,  2510,  2511,  2513,  2518,  2520,  2522,  2524,  2526,
    1077     2531,  2532,  2534,  2536,  2541,  2543,  2545,  2551,  2552,  2554,
    1078     2563,  2566,  2568,  2571,  2573,  2575,  2588,  2589,  2591,  2596,
    1079     2598,  2600,  2602,  2604,  2609,  2610,  2612,  2614,  2619,  2621,
    1080     2629,  2630,  2631,  2636,  2637,  2641,  2643,  2645,  2647,  2649,
    1081     2651,  2658,  2660,  2662,  2664,  2666,  2668,  2670,  2672,  2674,
    1082     2676,  2681,  2683,  2685,  2690,  2716,  2717,  2719,  2723,  2724,
    1083     2728,  2730,  2732,  2734,  2736,  2738,  2745,  2747,  2749,  2751,
    1084     2753,  2755,  2760,  2765,  2767,  2769,  2787,  2789,  2794,  2795
     992       0,   288,   288,   294,   303,   304,   305,   309,   310,   311,
     993     315,   316,   320,   324,   325,   329,   330,   336,   338,   340,
     994     342,   347,   348,   354,   356,   358,   359,   361,   362,   364,
     995     367,   372,   373,   379,   380,   381,   386,   388,   393,   394,
     996     398,   400,   402,   404,   406,   411,   414,   416,   418,   420,
     997     422,   424,   426,   428,   434,   436,   438,   440,   442,   444,
     998     446,   448,   453,   454,   455,   456,   460,   461,   463,   468,
     999     469,   471,   473,   478,   479,   481,   486,   487,   489,   494,
     1000     495,   497,   499,   501,   506,   507,   509,   514,   515,   520,
     1001     521,   526,   527,   532,   533,   538,   539,   544,   545,   547,
     1002     549,   554,   559,   560,   562,   564,   570,   571,   577,   579,
     1003     581,   583,   588,   589,   594,   595,   596,   597,   598,   599,
     1004     600,   601,   602,   603,   607,   608,   614,   615,   621,   622,
     1005     623,   624,   625,   626,   627,   628,   632,   639,   641,   651,
     1006     652,   657,   659,   661,   663,   667,   668,   673,   678,   681,
     1007     683,   685,   690,   692,   700,   701,   703,   707,   708,   713,
     1008     714,   719,   720,   724,   729,   730,   734,   736,   742,   743,
     1009     747,   749,   751,   753,   759,   760,   764,   765,   769,   771,
     1010     773,   778,   780,   785,   787,   791,   794,   798,   801,   805,
     1011     807,   809,   814,   816,   818,   827,   829,   831,   836,   838,
     1012     843,   856,   857,   862,   864,   869,   873,   875,   877,   879,
     1013     881,   887,   888,   894,   895,   899,   900,   905,   907,   913,
     1014     914,   916,   921,   923,   930,   932,   936,   937,   942,   944,
     1015     948,   949,   953,   955,   959,   960,   964,   965,   969,   970,
     1016     985,   986,   987,   988,   989,   993,   998,  1005,  1015,  1020,
     1017    1025,  1033,  1038,  1043,  1048,  1053,  1061,  1083,  1088,  1095,
     1018    1097,  1104,  1109,  1114,  1125,  1130,  1135,  1140,  1145,  1154,
     1019    1159,  1167,  1168,  1169,  1170,  1176,  1181,  1189,  1190,  1191,
     1020    1192,  1196,  1197,  1198,  1199,  1204,  1205,  1214,  1215,  1220,
     1021    1221,  1226,  1228,  1230,  1232,  1234,  1237,  1236,  1248,  1249,
     1022    1251,  1261,  1262,  1267,  1271,  1273,  1275,  1277,  1279,  1281,
     1023    1283,  1285,  1290,  1292,  1294,  1296,  1298,  1300,  1302,  1304,
     1024    1306,  1308,  1310,  1312,  1318,  1319,  1321,  1323,  1325,  1330,
     1025    1331,  1337,  1338,  1340,  1342,  1347,  1349,  1351,  1353,  1358,
     1026    1359,  1361,  1363,  1368,  1369,  1371,  1376,  1377,  1379,  1381,
     1027    1386,  1388,  1390,  1395,  1396,  1400,  1402,  1404,  1406,  1408,
     1028    1413,  1415,  1420,  1422,  1427,  1428,  1430,  1431,  1436,  1437,
     1029    1439,  1441,  1446,  1448,  1454,  1455,  1457,  1460,  1463,  1468,
     1030    1469,  1474,  1479,  1483,  1485,  1487,  1492,  1494,  1500,  1501,
     1031    1509,  1510,  1514,  1515,  1516,  1518,  1520,  1527,  1528,  1530,
     1032    1532,  1537,  1538,  1544,  1545,  1549,  1550,  1555,  1556,  1557,
     1033    1559,  1567,  1568,  1570,  1573,  1575,  1579,  1580,  1581,  1583,
     1034    1585,  1589,  1594,  1602,  1603,  1612,  1614,  1619,  1620,  1621,
     1035    1625,  1626,  1627,  1631,  1632,  1633,  1637,  1638,  1639,  1644,
     1036    1645,  1646,  1647,  1653,  1654,  1659,  1660,  1664,  1665,  1666,
     1037    1667,  1682,  1683,  1688,  1689,  1696,  1698,  1700,  1703,  1705,
     1038    1707,  1730,  1731,  1733,  1735,  1740,  1741,  1743,  1748,  1753,
     1039    1754,  1760,  1759,  1763,  1767,  1769,  1771,  1777,  1778,  1783,
     1040    1788,  1790,  1795,  1797,  1798,  1800,  1805,  1807,  1809,  1814,
     1041    1816,  1821,  1826,  1834,  1840,  1839,  1853,  1854,  1859,  1860,
     1042    1864,  1869,  1874,  1882,  1887,  1898,  1899,  1910,  1911,  1917,
     1043    1918,  1922,  1923,  1924,  1927,  1926,  1937,  1942,  1947,  1953,
     1044    1962,  1968,  1974,  1980,  1986,  1994,  2000,  2008,  2014,  2023,
     1045    2024,  2025,  2029,  2033,  2035,  2040,  2041,  2045,  2046,  2051,
     1046    2057,  2058,  2061,  2063,  2064,  2068,  2069,  2070,  2071,  2105,
     1047    2107,  2108,  2110,  2115,  2120,  2125,  2127,  2129,  2134,  2136,
     1048    2138,  2140,  2145,  2147,  2157,  2159,  2160,  2165,  2167,  2169,
     1049    2174,  2176,  2178,  2183,  2185,  2187,  2196,  2197,  2198,  2202,
     1050    2204,  2206,  2211,  2213,  2215,  2220,  2222,  2224,  2239,  2241,
     1051    2242,  2244,  2249,  2250,  2255,  2257,  2259,  2264,  2266,  2268,
     1052    2270,  2275,  2277,  2279,  2289,  2291,  2292,  2294,  2299,  2301,
     1053    2303,  2308,  2310,  2312,  2314,  2319,  2321,  2323,  2354,  2356,
     1054    2357,  2359,  2364,  2369,  2377,  2379,  2381,  2386,  2388,  2393,
     1055    2395,  2409,  2410,  2412,  2417,  2419,  2421,  2423,  2425,  2430,
     1056    2431,  2433,  2435,  2440,  2442,  2444,  2450,  2452,  2454,  2458,
     1057    2460,  2462,  2464,  2478,  2479,  2481,  2486,  2488,  2490,  2492,
     1058    2494,  2499,  2500,  2502,  2504,  2509,  2511,  2513,  2519,  2520,
     1059    2522,  2531,  2534,  2536,  2539,  2541,  2543,  2556,  2557,  2559,
     1060    2564,  2566,  2568,  2570,  2572,  2577,  2578,  2580,  2582,  2587,
     1061    2589,  2597,  2598,  2599,  2604,  2605,  2609,  2611,  2613,  2615,
     1062    2617,  2619,  2626,  2628,  2630,  2632,  2634,  2636,  2638,  2640,
     1063    2642,  2644,  2649,  2651,  2653,  2658,  2684,  2685,  2687,  2691,
     1064    2692,  2696,  2698,  2700,  2702,  2704,  2706,  2713,  2715,  2717,
     1065    2719,  2721,  2723,  2728,  2733,  2735,  2737,  2755,  2757,  2762,
     1066    2763
    10851067};
    10861068#endif
     
    10981080  "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT",
    10991081  "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE",
    1100   "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME",
    1101   "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF",
    1102   "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT", "THREADLOCAL",
    1103   "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname",
    1104   "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
     1082  "FALLTHRU", "TRY", "CATCH", "FINALLY", "THROW", "ASM", "ALIGNAS",
     1083  "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
     1084  "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
     1085  "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
    11051086  "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant",
    11061087  "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE",
    11071088  "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign",
    11081089  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
    1109   "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
    1110   "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'",
    1111   "'*'", "'&'", "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",
    1112   "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",
    1113   "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
     1090  "RSassign", "ANDassign", "ERassign", "ORassign", "THEN", "'('", "')'",
     1091  "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'", "'*'", "'&'",
     1092  "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'",
     1093  "'='", "';'", "$accept", "push", "pop", "constant", "identifier",
     1094  "no_01_identifier", "no_attr_identifier", "zero_one",
    11141095  "string_literal_list", "primary_expression", "postfix_expression",
    11151096  "argument_expression_list", "argument_expression", "field_list", "field",
     
    12141195     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
    12151196     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    1216      355,   356,   357,   358,   359,   360,   361,    40,    41,    91,
    1217       93,    46,   123,   125,    44,    58,    33,    42,    38,    43,
    1218       45,   126,    47,    37,    60,    62,    94,   124,    63,    61,
    1219       59
     1197     355,    40,    41,    91,    93,    46,   123,   125,    44,    58,
     1198      33,    42,    38,    43,    45,   126,    47,    37,    60,    62,
     1199      94,   124,    63,    61,    59
    12201200};
    12211201# endif
     
    12241204static const yytype_uint16 yyr1[] =
    12251205{
    1226        0,   131,   132,   133,   134,   134,   134,   135,   135,   135,
    1227      136,   136,   137,   138,   138,   139,   139,   140,   140,   140,
    1228      140,   141,   141,   141,   141,   141,   141,   141,   141,   141,
    1229      141,   141,   142,   142,   143,   143,   143,   143,   143,   144,
    1230      144,   145,   145,   145,   145,   145,   146,   146,   146,   146,
    1231      146,   146,   146,   146,   146,   146,   146,   146,   146,   146,
    1232      146,   146,   146,   147,   147,   147,   147,   148,   148,   148,
    1233      149,   149,   149,   149,   150,   150,   150,   151,   151,   151,
    1234      152,   152,   152,   152,   152,   153,   153,   153,   154,   154,
    1235      155,   155,   156,   156,   157,   157,   158,   158,   159,   159,
    1236      159,   159,   160,   161,   161,   161,   161,   162,   162,   163,
    1237      163,   163,   163,   164,   164,   165,   165,   165,   165,   165,
    1238      165,   165,   165,   165,   165,   166,   166,   167,   167,   168,
    1239      168,   168,   168,   168,   168,   168,   168,   168,   169,   170,
    1240      170,   171,   171,   172,   172,   172,   172,   173,   173,   174,
    1241      175,   175,   175,   175,   175,   175,   176,   176,   176,   177,
    1242      177,   178,   178,   179,   179,   180,   181,   181,   182,   182,
    1243      183,   183,   184,   184,   184,   184,   185,   185,   186,   186,
    1244      187,   187,   187,   188,   188,   189,   189,   189,   189,   189,
    1245      189,   189,   189,   189,   189,   190,   190,   190,   191,   191,
    1246      191,   191,   191,   192,   192,   192,   192,   193,   194,   194,
    1247      194,   194,   194,   195,   195,   195,   195,   195,   196,   196,
    1248      197,   197,   198,   198,   199,   199,   200,   200,   200,   201,
    1249      201,   202,   202,   203,   203,   204,   204,   205,   205,   206,
    1250      206,   207,   207,   208,   208,   209,   209,   210,   210,   210,
    1251      210,   210,   211,   211,   211,   212,   212,   212,   213,   213,
    1252      213,   213,   213,   214,   214,   214,   215,   215,   216,   216,
    1253      216,   217,   217,   217,   217,   217,   218,   218,   219,   219,
    1254      219,   219,   220,   220,   221,   221,   221,   221,   222,   222,
    1255      222,   222,   223,   223,   224,   224,   225,   225,   226,   226,
    1256      226,   226,   226,   227,   226,   228,   228,   228,   229,   229,
    1257      230,   231,   231,   231,   231,   231,   231,   231,   231,   232,
    1258      232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
    1259      232,   233,   233,   233,   233,   233,   234,   234,   235,   235,
    1260      235,   235,   236,   236,   236,   236,   237,   237,   237,   237,
    1261      238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
    1262      241,   241,   242,   242,   242,   242,   242,   243,   243,   244,
    1263      244,   245,   245,   245,   245,   246,   246,   246,   246,   247,
    1264      247,   248,   248,   248,   248,   248,   249,   249,   250,   251,
    1265      252,   252,   252,   253,   253,   254,   254,   255,   255,   256,
    1266      256,   256,   256,   256,   257,   257,   257,   257,   258,   258,
    1267      259,   259,   260,   260,   261,   261,   261,   261,   262,   262,
    1268      262,   262,   262,   263,   263,   263,   263,   263,   264,   264,
    1269      265,   265,   266,   266,   267,   267,   267,   268,   268,   268,
    1270      269,   269,   269,   270,   270,   270,   271,   271,   271,   271,
    1271      272,   272,   272,   273,   273,   274,   274,   274,   274,   274,
    1272      275,   275,   276,   276,   277,   277,   277,   277,   277,   277,
    1273      278,   278,   278,   278,   279,   279,   279,   280,   281,   281,
    1274      283,   282,   282,   284,   284,   284,   285,   285,   286,   286,
    1275      286,   287,   287,   287,   287,   288,   288,   288,   289,   289,
    1276      290,   290,   291,   292,   291,   293,   293,   294,   294,   295,
    1277      295,   295,   296,   296,   297,   297,   298,   298,   299,   299,
    1278      300,   300,   300,   301,   300,   300,   302,   302,   302,   303,
    1279      303,   303,   303,   303,   303,   303,   303,   303,   304,   304,
    1280      304,   305,   306,   306,   307,   307,   308,   308,   309,   310,
    1281      310,   311,   311,   311,   312,   312,   312,   312,   313,   313,
    1282      313,   313,   314,   314,   315,   315,   315,   316,   316,   316,
    1283      316,   317,   317,   318,   318,   318,   319,   319,   319,   320,
    1284      320,   320,   321,   321,   321,   322,   322,   322,   323,   323,
    1285      323,   324,   324,   324,   325,   325,   325,   326,   326,   326,
    1286      326,   327,   327,   328,   328,   328,   329,   329,   329,   329,
    1287      330,   330,   330,   331,   331,   331,   331,   332,   332,   332,
    1288      333,   333,   333,   333,   334,   334,   334,   335,   335,   335,
    1289      335,   336,   336,   337,   337,   337,   338,   338,   339,   339,
    1290      340,   340,   340,   341,   341,   341,   341,   341,   342,   342,
    1291      342,   342,   343,   343,   343,   344,   344,   344,   345,   345,
    1292      345,   345,   346,   346,   346,   347,   347,   347,   347,   347,
    1293      348,   348,   348,   348,   349,   349,   349,   350,   350,   350,
    1294      351,   351,   351,   351,   351,   351,   352,   352,   352,   353,
    1295      353,   353,   353,   353,   354,   354,   354,   354,   355,   355,
    1296      356,   356,   356,   357,   357,   358,   358,   358,   358,   358,
    1297      358,   359,   359,   359,   359,   359,   359,   359,   359,   359,
    1298      359,   360,   360,   360,   360,   361,   361,   361,   362,   362,
    1299      363,   363,   363,   363,   363,   363,   364,   364,   364,   364,
    1300      364,   364,   365,   366,   366,   366,   367,   367,   368,   368
     1206       0,   125,   126,   127,   128,   128,   128,   129,   129,   129,
     1207     130,   130,   131,   132,   132,   133,   133,   134,   134,   134,
     1208     134,   135,   135,   135,   135,   135,   135,   135,   135,   135,
     1209     135,   136,   136,   137,   137,   137,   137,   137,   138,   138,
     1210     139,   139,   139,   139,   139,   140,   140,   140,   140,   140,
     1211     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
     1212     140,   140,   141,   141,   141,   141,   142,   142,   142,   143,
     1213     143,   143,   143,   144,   144,   144,   145,   145,   145,   146,
     1214     146,   146,   146,   146,   147,   147,   147,   148,   148,   149,
     1215     149,   150,   150,   151,   151,   152,   152,   153,   153,   153,
     1216     153,   154,   155,   155,   155,   155,   156,   156,   157,   157,
     1217     157,   157,   158,   158,   159,   159,   159,   159,   159,   159,
     1218     159,   159,   159,   159,   160,   160,   161,   161,   162,   162,
     1219     162,   162,   162,   162,   162,   162,   163,   164,   164,   165,
     1220     165,   166,   166,   166,   166,   167,   167,   168,   169,   169,
     1221     169,   169,   169,   169,   170,   170,   170,   171,   171,   172,
     1222     172,   173,   173,   174,   175,   175,   176,   176,   177,   177,
     1223     178,   178,   178,   178,   179,   179,   180,   180,   181,   181,
     1224     181,   182,   182,   183,   183,   183,   183,   183,   183,   183,
     1225     183,   183,   184,   184,   184,   185,   185,   185,   186,   186,
     1226     187,   188,   188,   188,   188,   188,   189,   189,   189,   189,
     1227     189,   190,   190,   191,   191,   192,   192,   193,   193,   194,
     1228     194,   194,   195,   195,   196,   196,   197,   197,   198,   198,
     1229     199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
     1230     204,   204,   204,   204,   204,   205,   205,   205,   206,   206,
     1231     206,   207,   207,   207,   207,   207,   208,   208,   208,   209,
     1232     209,   210,   210,   210,   211,   211,   211,   211,   211,   212,
     1233     212,   213,   213,   213,   213,   214,   214,   215,   215,   215,
     1234     215,   216,   216,   216,   216,   217,   217,   218,   218,   219,
     1235     219,   220,   220,   220,   220,   220,   221,   220,   222,   222,
     1236     222,   223,   223,   224,   225,   225,   225,   225,   225,   225,
     1237     225,   225,   226,   226,   226,   226,   226,   226,   226,   226,
     1238     226,   226,   226,   226,   227,   227,   227,   227,   227,   228,
     1239     228,   229,   229,   229,   229,   230,   230,   230,   230,   231,
     1240     231,   231,   231,   232,   232,   232,   233,   233,   233,   233,
     1241     234,   234,   234,   235,   235,   236,   236,   236,   236,   236,
     1242     237,   237,   238,   238,   239,   239,   239,   239,   240,   240,
     1243     240,   240,   241,   241,   242,   242,   242,   242,   242,   243,
     1244     243,   244,   245,   246,   246,   246,   247,   247,   248,   248,
     1245     249,   249,   250,   250,   250,   250,   250,   251,   251,   251,
     1246     251,   252,   252,   253,   253,   254,   254,   255,   255,   255,
     1247     255,   256,   256,   256,   256,   256,   257,   257,   257,   257,
     1248     257,   258,   258,   259,   259,   260,   260,   261,   261,   261,
     1249     262,   262,   262,   263,   263,   263,   264,   264,   264,   265,
     1250     265,   265,   265,   266,   266,   267,   267,   268,   268,   268,
     1251     268,   269,   269,   270,   270,   271,   271,   271,   271,   271,
     1252     271,   272,   272,   272,   272,   273,   273,   273,   274,   275,
     1253     275,   277,   276,   276,   278,   278,   278,   279,   279,   280,
     1254     280,   280,   281,   281,   281,   281,   282,   282,   282,   283,
     1255     283,   284,   284,   285,   286,   285,   287,   287,   288,   288,
     1256     289,   289,   289,   290,   290,   291,   291,   292,   292,   293,
     1257     293,   294,   294,   294,   295,   294,   294,   296,   296,   296,
     1258     297,   297,   297,   297,   297,   297,   297,   297,   297,   298,
     1259     298,   298,   299,   300,   300,   301,   301,   302,   302,   303,
     1260     304,   304,   305,   305,   305,   306,   306,   306,   306,   307,
     1261     307,   307,   307,   308,   308,   309,   309,   309,   310,   310,
     1262     310,   310,   311,   311,   312,   312,   312,   313,   313,   313,
     1263     314,   314,   314,   315,   315,   315,   316,   316,   316,   317,
     1264     317,   317,   318,   318,   318,   319,   319,   319,   320,   320,
     1265     320,   320,   321,   321,   322,   322,   322,   323,   323,   323,
     1266     323,   324,   324,   324,   325,   325,   325,   325,   326,   326,
     1267     326,   327,   327,   327,   327,   328,   328,   328,   329,   329,
     1268     329,   329,   330,   330,   331,   331,   331,   332,   332,   333,
     1269     333,   334,   334,   334,   335,   335,   335,   335,   335,   336,
     1270     336,   336,   336,   337,   337,   337,   338,   338,   338,   339,
     1271     339,   339,   339,   340,   340,   340,   341,   341,   341,   341,
     1272     341,   342,   342,   342,   342,   343,   343,   343,   344,   344,
     1273     344,   345,   345,   345,   345,   345,   345,   346,   346,   346,
     1274     347,   347,   347,   347,   347,   348,   348,   348,   348,   349,
     1275     349,   350,   350,   350,   351,   351,   352,   352,   352,   352,
     1276     352,   352,   353,   353,   353,   353,   353,   353,   353,   353,
     1277     353,   353,   354,   354,   354,   354,   355,   355,   355,   356,
     1278     356,   357,   357,   357,   357,   357,   357,   358,   358,   358,
     1279     358,   358,   358,   359,   360,   360,   360,   361,   361,   362,
     1280     362
    13011281};
    13021282
     
    13071287       1,     1,     1,     1,     1,     1,     2,     1,     1,     3,
    13081288       3,     1,     6,     4,     3,     7,     3,     7,     2,     2,
    1309        7,     4,     1,     3,     0,     1,     3,     7,     9,     1,
    1310        3,     1,     3,     7,     3,     7,     1,     1,     1,     2,
    1311        2,     2,     2,     2,     2,     2,     4,     1,     4,     4,
    1312        2,     4,     2,     1,     1,     1,     1,     1,     4,     4,
    1313        1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
    1314        1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
    1315        1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
    1316        4,     5,     1,     1,     3,     3,     2,     0,     1,     2,
    1317        5,     6,     7,     1,     3,     1,     1,     1,     1,     1,
    1318        1,     1,     1,     1,     1,     1,     3,     0,     1,     1,
    1319        1,     1,     1,     1,     1,     1,     1,     6,     4,     2,
    1320        7,     1,     3,     1,     2,     1,     2,     1,     2,     2,
    1321        5,     7,     5,     9,     5,     9,     1,     3,     1,     1,
    1322        3,     3,     2,     1,     2,     2,     0,     1,     2,     3,
    1323        0,     1,     2,     3,     3,     4,     0,     1,     1,     2,
    1324        5,     7,     6,     6,     4,     3,     4,     2,     3,     2,
    1325        3,     3,     3,     3,     5,     3,     3,     4,     1,     5,
    1326        6,     5,     6,     9,    10,     9,    10,     2,     1,     2,
    1327        2,     2,     1,     6,     8,    10,    12,    14,     0,     1,
    1328        0,     1,     1,     3,     4,     7,     0,     1,     3,     1,
    1329        3,     1,     1,     1,     3,     1,     1,     1,     3,     0,
    1330        1,     3,     4,     1,     3,     1,     1,     3,     3,     3,
    1331        3,     3,     2,     3,     6,     3,     3,     4,     1,     2,
    1332        2,     3,     5,     8,     7,     7,     5,     9,     2,     2,
    1333        5,     3,     5,     4,     3,     4,     4,     7,     3,     3,
    1334        3,     3,     4,     6,     1,     1,     1,     1,     1,     1,
    1335        1,     1,     0,     1,     1,     2,     1,     1,     1,     1,
    1336        1,     1,     1,     0,     5,     1,     2,     3,     1,     2,
     1289       7,     1,     3,     0,     1,     3,     7,     9,     1,     3,
     1290       1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
     1291       2,     2,     2,     2,     2,     4,     1,     4,     4,     2,
     1292       4,     2,     1,     1,     1,     1,     1,     4,     4,     1,
     1293       3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
     1294       3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
     1295       3,     1,     3,     1,     3,     1,     3,     1,     5,     4,
     1296       5,     1,     1,     3,     3,     2,     0,     1,     2,     5,
     1297       6,     7,     1,     3,     1,     1,     1,     1,     1,     1,
     1298       1,     1,     1,     1,     1,     3,     0,     1,     1,     1,
     1299       1,     1,     1,     1,     1,     1,     4,     2,     7,     1,
     1300       3,     1,     2,     1,     2,     1,     2,     2,     5,     7,
     1301       5,     9,     5,     9,     1,     3,     1,     1,     3,     3,
     1302       2,     1,     2,     2,     0,     1,     2,     3,     0,     1,
     1303       2,     3,     3,     4,     0,     1,     1,     2,     5,     7,
     1304       6,     6,     4,     3,     4,     2,     3,     2,     3,     3,
     1305       3,     2,     3,     3,     4,     1,     5,     6,     9,    10,
     1306       2,     1,     2,     2,     2,     1,     6,     8,    10,    12,
     1307      14,     0,     1,     0,     1,     1,     3,     4,     7,     0,
     1308       1,     3,     1,     3,     1,     1,     1,     3,     1,     1,
     1309       1,     3,     0,     1,     3,     4,     1,     3,     1,     1,
     1310       3,     3,     3,     3,     3,     2,     3,     6,     3,     3,
     1311       4,     1,     2,     2,     3,     5,     8,     7,     7,     5,
     1312       9,     2,     2,     5,     3,     5,     4,     3,     4,     4,
     1313       7,     3,     3,     3,     3,     4,     6,     1,     1,     1,
     1314       1,     1,     1,     1,     1,     0,     1,     1,     2,     1,
     1315       1,     1,     1,     1,     1,     1,     0,     5,     1,     2,
     1316       3,     1,     2,     1,     1,     1,     1,     1,     1,     1,
    13371317       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1338        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1339        1,     1,     2,     2,     3,     3,     1,     3,     1,     2,
    1340        2,     2,     4,     4,     4,     4,     1,     2,     2,     3,
    1341        1,     2,     2,     1,     2,     2,     3,     1,     2,     2,
    1342        1,     1,     4,     2,     5,     7,     2,     2,     2,     1,
    1343        2,     2,     3,     2,     3,     1,     2,     3,     2,     2,
    1344        4,     0,     1,     2,     2,     1,     0,     1,     2,     2,
    1345        5,     6,     2,     2,     4,     0,     2,     0,     1,     1,
    1346        1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
    1347        0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
    1348        3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
    1349        1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
    1350        1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
    1351        0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
    1352        2,     2,     1,     2,     1,     2,     5,     5,     7,     6,
    1353        1,     2,     2,     3,     1,     2,     2,     4,     2,     4,
    1354        0,     4,     2,     1,     1,     1,     0,     2,     5,     5,
    1355       13,     1,     1,     3,     3,     2,     3,     3,     2,     4,
    1356        1,     6,     9,     0,    11,     1,     3,     3,     3,     1,
    1357        1,     5,     2,     5,     0,     1,     1,     3,     0,     1,
    1358        1,     1,     1,     0,     6,     2,     1,     2,     4,     2,
    1359        3,     3,     3,     4,     5,     5,     5,     6,     1,     1,
    1360        1,     3,     0,     5,     0,     1,     1,     2,     6,     1,
    1361        3,     0,     1,     4,     1,     1,     1,     1,     2,     1,
     1318       1,     1,     1,     1,     1,     2,     2,     3,     3,     1,
     1319       3,     1,     2,     2,     2,     4,     4,     4,     4,     1,
     1320       2,     2,     3,     1,     2,     2,     1,     2,     2,     3,
     1321       1,     2,     2,     1,     1,     4,     2,     5,     7,     2,
     1322       2,     2,     1,     2,     2,     3,     2,     3,     1,     2,
     1323       3,     2,     2,     4,     0,     1,     2,     2,     1,     0,
     1324       1,     2,     2,     5,     6,     2,     2,     4,     0,     2,
     1325       0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
     1326       9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
     1327       5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
     1328       1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
     1329       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
     1330       1,     1,     2,     0,     2,     1,     4,     1,     2,     3,
     1331       4,     2,     2,     1,     2,     1,     2,     5,     5,     7,
     1332       6,     1,     2,     2,     3,     1,     2,     2,     4,     2,
     1333       4,     0,     4,     2,     1,     1,     1,     0,     2,     5,
     1334       5,    13,     1,     1,     3,     3,     2,     3,     3,     2,
     1335       4,     1,     6,     9,     0,    11,     1,     3,     3,     3,
     1336       1,     1,     5,     2,     5,     0,     1,     1,     3,     0,
     1337       1,     1,     1,     1,     0,     6,     2,     1,     2,     4,
     1338       2,     3,     3,     3,     4,     5,     5,     5,     6,     1,
     1339       1,     1,     3,     0,     5,     0,     1,     1,     2,     6,
     1340       1,     3,     0,     1,     4,     1,     1,     1,     1,     2,
     1341       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
     1342       4,     3,     8,     3,     2,     1,     2,     6,     8,     3,
     1343       2,     3,     3,     4,     4,     3,     1,     1,     1,     4,
     1344       6,     3,     2,     3,     3,     4,     4,     3,     2,     1,
    13621345       2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
    1363        3,     8,     3,     2,     1,     2,     6,     8,     3,     2,
    1364        3,     3,     4,     4,     3,     1,     1,     1,     4,     6,
    1365        3,     2,     3,     3,     4,     4,     3,     2,     1,     2,
    1366        2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
    1367        6,     8,     3,     2,     1,     2,     2,     2,     3,     3,
    1368        2,     4,     4,     3,     6,     8,     3,     2,     1,     2,
    1369        2,     1,     1,     2,     3,     3,     2,     4,     6,     8,
    1370        1,     2,     2,     1,     2,     2,     3,     3,     1,     4,
    1371        4,     3,     5,     8,     3,     2,     3,     1,     5,     5,
    1372        6,     6,     1,     2,     2,     1,     2,     2,     3,     3,
    1373        1,     4,     4,     3,     5,     8,     3,     1,     2,     1,
    1374        2,     6,     5,     6,     7,     7,     1,     2,     2,     1,
    1375        2,     2,     3,     3,     1,     4,     4,     3,     8,     3,
    1376        1,     1,     2,     1,     1,     2,     3,     2,     3,     2,
    1377        3,     3,     2,     4,     3,     2,     3,     2,     4,     3,
    1378        2,     6,     6,     6,     7,     1,     2,     1,     1,     1,
    1379        2,     3,     2,     3,     2,     3,     3,     4,     2,     3,
    1380        4,     2,     5,     5,     6,     6,     0,     1,     0,     2
     1346       3,     6,     8,     3,     2,     1,     2,     2,     2,     3,
     1347       3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
     1348       2,     2,     1,     1,     2,     3,     3,     2,     4,     6,
     1349       8,     1,     2,     2,     1,     2,     2,     3,     3,     1,
     1350       4,     4,     3,     5,     8,     3,     2,     3,     1,     5,
     1351       5,     6,     6,     1,     2,     2,     1,     2,     2,     3,
     1352       3,     1,     4,     4,     3,     5,     8,     3,     1,     2,
     1353       1,     2,     6,     5,     6,     7,     7,     1,     2,     2,
     1354       1,     2,     2,     3,     3,     1,     4,     4,     3,     8,
     1355       3,     1,     1,     2,     1,     1,     2,     3,     2,     3,
     1356       2,     3,     3,     2,     4,     3,     2,     3,     2,     4,
     1357       3,     2,     6,     6,     6,     7,     1,     2,     1,     1,
     1358       1,     2,     3,     2,     3,     2,     3,     3,     4,     2,
     1359       3,     4,     2,     5,     5,     6,     6,     0,     1,     0,
     1360       2
    13811361};
    13821362
     
    13861366static const yytype_uint16 yydefact[] =
    13871367{
    1388      292,   292,   313,   311,   314,   312,   315,   316,   298,   300,
    1389      299,     0,   301,   327,   319,   324,   322,   323,   321,   320,
    1390      325,   326,   328,   329,   330,   544,   544,   544,     0,     0,
    1391        0,   292,   218,   302,   317,   318,     7,   357,     0,     8,
    1392       13,    14,     0,     2,   292,   562,     9,   522,   520,   245,
    1393        3,   450,     3,   258,     0,     3,     3,     3,   246,     3,
    1394        0,     0,     0,   293,   294,   296,   292,   305,   308,   310,
    1395      338,   284,   331,   336,   285,   346,   286,   353,   350,   360,
    1396        0,     0,   361,   287,   470,   474,     3,     3,     0,     2,
    1397      516,   521,   526,   297,     0,     0,   544,   574,   544,     2,
    1398      585,   586,   587,   292,     0,   728,   729,     0,    12,   292,
    1399        0,   268,   269,     0,   293,   288,   289,   290,   291,   523,
    1400      303,   389,   545,   546,   367,   368,    12,   441,   442,    11,
    1401      437,   440,     0,   500,   495,   486,   441,   442,     0,     0,
    1402      525,   219,     0,   292,     0,     0,     0,     0,     0,     0,
    1403        0,     0,   292,   292,     2,     0,   730,   293,   579,   591,
    1404      734,   727,   725,   732,     0,     0,     0,   252,     2,     0,
    1405      529,   435,   436,   434,     0,     0,     0,     0,   544,     0,
    1406      631,   632,     0,     0,   542,   538,   544,   559,   544,   544,
    1407      539,     2,   540,   544,   598,   544,   544,   601,     0,     0,
    1408        0,   292,   292,   311,   358,     2,   292,   259,   295,   306,
    1409      339,   351,   475,     0,     2,     0,   450,   260,   293,   332,
    1410      347,   354,   471,     0,     2,     0,   309,   333,   340,   341,
    1411        0,   348,   352,   355,   359,   442,   292,   292,   363,   366,
    1412        0,   392,   472,   476,     0,     0,     0,     1,   292,     2,
    1413      527,   573,   575,   292,     2,   738,   293,   741,   542,   542,
    1414      293,     0,     0,     0,   271,   544,   539,     2,   292,     0,
    1415        0,   292,   547,     2,   498,     2,   551,     0,     0,     0,
    1416        0,     0,    17,    57,     4,     5,     6,    15,     0,     0,
    1417        0,   292,     2,     0,   292,    63,    64,    65,    66,    47,
    1418       18,    48,    21,    46,    67,     0,    70,    74,    77,    80,
    1419       85,    88,    90,    92,    94,    96,    98,   103,   492,   748,
    1420      448,   491,     0,   446,   447,     0,   563,   578,   581,   584,
    1421      590,   593,   596,   357,     0,     2,   736,     0,   292,   739,
    1422        2,   292,     3,   422,     0,   430,   293,   292,   305,   331,
    1423      285,   346,   353,     3,     3,   404,   408,   418,   423,   470,
    1424      292,   424,   703,   704,   292,   425,   427,   292,     2,   580,
    1425      592,   726,     2,     2,   247,     2,   455,     0,   453,   452,
    1426      451,   139,     2,     2,   249,     2,     2,   248,     2,   279,
    1427        2,   280,     0,   278,     0,     0,     0,     0,     0,     0,
    1428        0,     0,     0,   564,   603,     0,   450,     2,   558,   567,
    1429      657,   560,   561,   530,   292,     2,   597,   606,   599,   600,
    1430        0,   274,   292,   292,   337,   293,     0,   293,     0,   292,
    1431      731,   735,   733,   531,   292,   542,   253,   261,   307,     0,
    1432        2,   532,   292,   496,   334,   335,   281,   349,   356,     0,
    1433      292,     2,   381,   292,   369,     0,     0,   375,   725,   292,
    1434      746,   395,     0,   473,   497,   250,   251,   517,   292,   432,
    1435        0,   292,   235,     0,     2,   237,     0,   293,     0,   255,
    1436        2,   256,   276,     0,     0,     2,   292,   542,   292,   483,
    1437      485,   484,     0,     0,   748,     0,   292,     0,   292,   487,
    1438      292,   557,   555,   556,   554,     0,   549,   552,     0,     0,
    1439      292,    55,    67,    51,   292,    60,   292,   292,    49,    50,
    1440       62,     2,   125,     0,     0,   444,     0,   443,   109,   292,
    1441       53,    54,    16,     0,    28,    29,    34,     2,     0,    34,
    1442      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
    1443        0,     0,    52,     0,     0,     0,     0,     0,     0,     0,
     1368     285,   285,   306,   304,   307,   305,   308,   309,   291,   293,
     1369     292,     0,   294,   320,   312,   317,   315,   316,   314,   313,
     1370     318,   319,   321,   322,   323,   535,   535,   535,     0,     0,
     1371       0,   285,   211,   295,   310,   311,     7,   350,     0,     8,
     1372      13,    14,     0,     2,   285,   553,     9,   513,   511,   238,
     1373       3,   443,     3,   251,     0,     3,     3,     3,   239,     3,
     1374       0,     0,     0,   286,   287,   289,   285,   298,   301,   303,
     1375     331,   277,   324,   329,   278,   339,   279,   346,   343,   353,
     1376       0,     0,   354,   280,   461,   465,     3,     3,     0,     2,
     1377     507,   512,   517,   290,     0,     0,   535,   565,   535,     2,
     1378     576,   577,   578,   285,     0,   719,   720,     0,    12,   285,
     1379       0,   261,   262,     0,   286,   281,   282,   283,   284,   514,
     1380     296,   382,   536,   537,   360,   361,    12,   434,   435,    11,
     1381     430,   433,     0,   491,   486,   477,   434,   435,     0,     0,
     1382     516,   212,     0,   285,     0,     0,     0,     0,     0,     0,
     1383       0,     0,   285,   285,     2,     0,   721,   286,   570,   582,
     1384     725,   718,   716,   723,     0,     0,   245,     2,     0,   520,
     1385     428,   429,   427,     0,     0,     0,     0,   535,     0,   622,
     1386     623,     0,     0,   533,   529,   535,   550,   535,   535,   530,
     1387       2,   531,   535,   589,   535,   535,   592,     0,     0,     0,
     1388     285,   285,   304,   351,     2,   285,   252,   288,   299,   332,
     1389     344,   466,     0,     2,     0,   443,   253,   286,   325,   340,
     1390     347,   462,     0,     2,     0,   302,   326,   333,   334,     0,
     1391     341,   345,   348,   352,   435,   285,   285,   356,   359,     0,
     1392     385,   463,   467,     0,     0,     0,     1,   285,     2,   518,
     1393     564,   566,   285,     2,   729,   286,   732,   533,   533,   286,
     1394       0,     0,     0,   264,   535,   530,     2,   285,     0,     0,
     1395     285,   538,     2,   489,     2,   542,     0,     0,     0,     0,
     1396       0,    17,    56,     4,     5,     6,    15,     0,     0,     0,
     1397     285,     2,     0,   285,    62,    63,    64,    65,    46,    18,
     1398      47,    21,    45,    66,     0,    69,    73,    76,    79,    84,
     1399      87,    89,    91,    93,    95,    97,   102,   483,   739,   441,
     1400     482,     0,   439,   440,     0,   554,   569,   572,   575,   581,
     1401     584,   587,   350,     0,     2,   727,     0,   285,   730,     2,
     1402     285,     3,   415,     0,   423,   286,   285,   298,   324,   278,
     1403     339,   346,     3,     3,   397,   401,   411,   416,   461,   285,
     1404     417,   694,   695,   285,   418,   420,   285,     2,   571,   583,
     1405     717,     2,     2,   240,     2,     0,     0,   445,   444,   137,
     1406       2,     2,   242,     2,     2,   241,     2,   272,     2,   273,
     1407       0,   271,     0,     0,     0,     0,     0,     0,     0,     0,
     1408       0,   555,   594,     0,   443,     2,   549,   558,   648,   551,
     1409     552,   521,   285,     2,   588,   597,   590,   591,     0,   267,
     1410     285,   285,   330,   286,     0,   286,     0,   285,   722,   726,
     1411     724,   522,   285,   533,   246,   254,   300,     0,     2,   523,
     1412     285,   487,   327,   328,   274,   342,   349,     0,   285,     2,
     1413     374,   285,   362,     0,     0,   368,   716,   285,   737,   388,
     1414       0,   464,   488,   243,   244,   508,   285,   425,     0,   285,
     1415     228,     0,     2,   230,     0,   286,     0,   248,     2,   249,
     1416     269,     0,     0,     2,   285,   533,   285,   474,   476,   475,
     1417       0,     0,   739,     0,   285,     0,   285,   478,   285,   548,
     1418     546,   547,   545,     0,   540,   543,     0,     0,   285,    54,
     1419      66,    50,   285,    59,   285,   285,    48,    49,    61,     2,
     1420     124,     0,     0,   437,     0,   436,   108,   285,    52,    53,
     1421      16,     0,    28,    29,    33,     2,     0,   114,   115,   116,
     1422     117,   118,   119,   120,   121,   122,   123,     0,     0,    51,
    14441423       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1445        0,     0,     0,   106,     2,   643,   449,   640,   544,   544,
    1446      648,   477,   292,     2,   582,   583,     0,   594,   595,     0,
    1447        2,   737,   740,   109,   292,     2,   292,     0,   705,   293,
    1448      709,   700,   701,   707,     0,     2,     2,   665,   544,   748,
    1449      614,   544,   544,   748,   544,   628,   544,   544,   679,   431,
    1450      662,   544,   544,   670,   677,   292,   426,   293,     0,     0,
    1451      292,   715,   293,   720,   748,   712,   292,   717,   748,   292,
    1452      292,   292,     0,   109,     0,    17,     5,     2,     0,     0,
    1453      456,   746,     0,     0,   462,   239,     0,   292,     0,     0,
    1454        0,   542,   566,   570,   572,   602,   605,   609,   612,   565,
    1455      604,     0,   282,   655,     0,   292,   275,     0,     0,     0,
    1456        0,   273,     2,     0,   257,   533,   292,     0,     0,     0,
    1457        0,   292,   292,     0,     0,   689,   379,   382,   386,   544,
    1458      386,   694,   385,   686,   544,   544,   362,   370,   378,   371,
    1459      544,   373,   376,   292,   747,     0,     0,   393,   746,   293,
    1460        3,   411,     3,   415,   414,   588,     0,   528,   292,     3,
    1461        3,   292,   430,   293,     3,   424,   425,     2,     0,     0,
    1462        0,   482,   304,   292,   478,   480,     3,     2,     2,     0,
    1463      499,     3,     0,   551,   127,     0,     0,   220,     0,     0,
    1464        2,     0,     0,    35,     0,     0,   109,   292,    19,     0,
    1465       20,     0,   689,   445,     0,   107,     3,     2,    26,     2,
    1466        0,    32,     0,     2,    24,     0,   104,   105,    71,    72,
    1467       73,    75,    76,    78,    79,    83,    84,    81,    82,    86,
    1468       87,    89,    91,    93,    95,    97,     0,     0,   749,   292,
    1469        0,     0,     0,   644,   645,   641,   642,   494,   493,   292,
    1470        0,     3,   292,   711,   292,   716,   293,   292,   292,   292,
    1471      659,   702,   658,     2,   292,     0,     0,     0,     0,     0,
    1472        0,     0,     0,   680,     0,   666,   617,   633,   667,     2,
    1473      613,   620,   428,   615,   616,   429,     2,   627,   636,   629,
    1474      630,   663,   664,   678,   706,   710,   708,   748,   266,     2,
    1475      742,     2,   419,   714,   719,   420,     0,   398,     3,     3,
    1476        3,     3,   450,     3,     0,     2,   465,   461,   747,     0,
    1477      457,   464,     2,   460,   463,     0,   292,   240,   262,     3,
    1478      270,   272,     0,   450,     2,   568,   569,     2,   607,   608,
    1479        0,   656,   534,     3,   343,   342,   345,   344,   292,   535,
    1480        0,   536,   292,   372,   374,     2,     0,     0,     0,     0,
    1481      102,   388,   690,   691,   383,   387,   384,   687,   688,   377,
    1482      381,   364,   395,   390,   396,     0,     0,     0,   433,   238,
    1483        0,     0,     3,     2,   665,   426,     0,   524,     0,   748,
    1484      486,     0,   292,   292,   292,     0,   548,   550,   128,     0,
    1485        0,   213,     0,     0,     0,   221,   222,    56,    61,   292,
    1486        0,    59,    58,     0,   126,   690,   455,    68,    69,   108,
    1487      113,     3,   107,     0,     0,     0,    23,    34,     3,     0,
    1488       31,   100,     0,     3,   647,   651,   654,   646,     3,   589,
    1489        3,   713,   718,     2,   292,     3,     3,   293,     0,     3,
    1490      619,   623,   626,   635,   669,   673,   676,   292,     3,   618,
    1491      634,   668,   292,   292,   421,   292,   292,   743,     0,     0,
    1492        0,     0,   254,     0,   102,     0,     3,     3,     0,   458,
    1493        0,   454,     0,     0,   243,   292,     0,     0,   127,     0,
    1494        0,     0,     0,     0,   127,     0,     0,   107,   107,     2,
    1495        0,     0,     0,     3,   129,   130,     2,   141,   131,   132,
    1496      133,   134,   135,   136,   143,   145,     0,     0,     0,   283,
    1497      292,   292,   544,     0,   537,   292,   109,   693,   697,   699,
    1498      692,   380,   394,   391,   576,     2,   661,   660,     0,   666,
    1499        2,   479,   481,   501,     3,   509,   510,     0,     2,   505,
    1500        3,     3,     0,     0,   553,   220,     0,     0,     0,   220,
    1501        0,     3,    36,   746,   107,     0,     3,   658,    41,     3,
    1502       39,     3,    33,     0,     3,    99,   101,     0,     2,   649,
    1503      650,     0,     0,   292,     0,     0,     0,     3,   635,     0,
    1504        2,   621,   622,     2,   637,     2,   671,   672,     0,     0,
    1505        3,     0,     3,     3,     3,     3,   406,   405,   409,     2,
    1506        2,   745,   744,   110,     0,     0,     0,     0,     3,   459,
    1507        3,     0,   241,   144,     3,   293,   292,     0,     0,     0,
    1508        0,     2,   189,     0,   187,     0,     0,     0,     0,     0,
    1509        0,     0,     0,   109,     0,   544,   149,   146,   292,     0,
    1510        0,   265,   277,     3,     3,   543,   610,   365,     2,   695,
    1511      696,   292,   264,   292,     0,   512,   489,   292,     0,     0,
    1512      488,   503,     0,     0,     0,   214,     0,   223,   107,     0,
    1513        0,   114,   111,     0,     0,     0,     0,     0,     0,    22,
    1514        0,   652,   292,   577,   263,   721,   722,   723,     0,   674,
    1515      292,   292,   292,     3,     3,     0,   682,     0,     0,     0,
    1516        0,   292,   292,     3,   541,   466,   467,     0,     0,   244,
    1517      293,     0,     0,     0,     0,   292,   190,   188,     0,   185,
    1518      191,     0,     0,     0,     0,   195,   198,   196,   192,     0,
    1519      193,    34,   127,   142,   140,   242,     0,     0,   292,   413,
    1520      417,   416,     0,   506,     2,   507,     2,   508,   502,   292,
    1521      226,     0,   224,     0,   226,     3,   658,    30,   112,     2,
    1522       44,     2,    42,    40,    27,   110,    25,     3,   724,     3,
    1523        3,     3,     0,     0,   681,   683,   624,   638,   267,     2,
    1524      403,     3,   402,     0,   469,   466,   127,     0,     0,   127,
    1525        3,     0,   127,   186,     0,     2,     2,   207,   197,     0,
    1526        0,     0,     0,   138,   571,   611,     3,     2,     0,     0,
    1527        2,   227,     0,     0,   215,     0,     0,     0,     0,     0,
    1528        0,     0,     0,     0,   684,   685,   292,     0,   468,   150,
    1529        0,     0,     2,   163,   127,   152,     0,   180,     0,   127,
    1530        0,     2,   154,     0,     2,     0,     2,     2,     2,   194,
    1531       31,     0,   292,   511,   513,   504,     0,     0,     0,     0,
    1532      112,    37,     3,     3,   653,   625,   639,   675,   407,   127,
    1533      156,   159,     0,   158,   162,     3,   165,   164,     0,   127,
    1534      182,   127,     3,     0,   292,     0,   292,     0,     2,     0,
    1535        2,   137,   698,     2,   228,   229,     0,   225,   216,     0,
    1536        0,     0,   151,     0,     0,   161,   231,   166,     2,   233,
    1537      181,     0,   184,   170,   199,     3,   208,   212,   201,     3,
    1538        0,   292,     0,   292,     0,     0,     0,    38,    45,    43,
    1539      157,   160,   127,     0,   167,   292,   127,   127,     0,   171,
    1540        0,     0,   689,   209,   210,   211,     0,   200,     3,   202,
    1541        3,   292,   217,   230,   147,   168,   153,   127,   234,   183,
    1542      178,   176,   172,   155,   127,     0,   690,     0,     0,     0,
    1543        0,   148,   169,   179,   173,   177,   176,   174,     3,     3,
    1544        0,     0,   490,   175,   203,   205,     3,     3,   204,   206
     1424       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1425     105,     2,   634,   442,   631,   535,   535,   639,   468,   285,
     1426       2,   573,   574,     0,   585,   586,     0,     2,   728,   731,
     1427     108,   285,     2,   285,     0,   696,   286,   700,   691,   692,
     1428     698,     0,     2,     2,   656,   535,   739,   605,   535,   535,
     1429     739,   535,   619,   535,   535,   670,   424,   653,   535,   535,
     1430     661,   668,   285,   419,   286,     0,     0,   285,   706,   286,
     1431     711,   739,   703,   285,   708,   739,   285,   285,   285,     0,
     1432     108,     0,    17,     5,     2,     0,     0,   447,   737,     0,
     1433       0,   453,   232,     0,   285,     0,     0,     0,   533,   557,
     1434     561,   563,   593,   596,   600,   603,   556,   595,     0,   275,
     1435     646,     0,   285,   268,     0,     0,     0,     0,   266,     2,
     1436       0,   250,   524,   285,     0,     0,     0,     0,   285,   285,
     1437       0,     0,   680,   372,   375,   379,   535,   379,   685,   378,
     1438     677,   535,   535,   355,   363,   371,   364,   535,   366,   369,
     1439     285,   738,     0,     0,   386,   737,   286,     3,   404,     3,
     1440     408,   407,   579,     0,   519,   285,     3,     3,   285,   423,
     1441     286,     3,   417,   418,     2,     0,     0,     0,   473,   297,
     1442     285,   469,   471,     3,     2,     2,     0,   490,     3,     0,
     1443     542,   126,     0,     0,   213,     0,     0,     2,     0,     0,
     1444      34,     0,     0,   108,   285,    19,     0,    20,     0,   680,
     1445     438,     0,   106,     3,     2,    26,     2,     0,    31,     0,
     1446       2,    24,   103,   104,    70,    71,    72,    74,    75,    77,
     1447      78,    82,    83,    80,    81,    85,    86,    88,    90,    92,
     1448      94,    96,     0,     0,   740,   285,     0,     0,     0,   635,
     1449     636,   632,   633,   485,   484,   285,     0,     3,   285,   702,
     1450     285,   707,   286,   285,   285,   285,   650,   693,   649,     2,
     1451     285,     0,     0,     0,     0,     0,     0,     0,     0,   671,
     1452       0,   657,   608,   624,   658,     2,   604,   611,   421,   606,
     1453     607,   422,     2,   618,   627,   620,   621,   654,   655,   669,
     1454     697,   701,   699,   739,   259,     2,   733,     2,   412,   705,
     1455     710,   413,     0,   391,     3,     3,     3,     3,   443,     3,
     1456       0,     2,   456,   452,   738,     0,   448,   455,     2,   451,
     1457     454,     0,   285,   233,   255,     3,   263,   265,     0,   443,
     1458       2,   559,   560,     2,   598,   599,     0,   647,   525,     3,
     1459     336,   335,   338,   337,   285,   526,     0,   527,   285,   365,
     1460     367,     2,     0,     0,     0,     0,   101,   381,   681,   682,
     1461     376,   380,   377,   678,   679,   370,   374,   357,   388,   383,
     1462     389,     0,     0,     0,   426,   231,     0,     0,     3,     2,
     1463     656,   419,     0,   515,     0,   739,   477,     0,   285,   285,
     1464     285,     0,   539,   541,   127,     0,     0,   206,     0,     0,
     1465       0,   214,   215,    55,    60,   285,     0,    58,    57,     0,
     1466     125,   681,     0,    67,    68,   107,   112,     3,   106,     0,
     1467       0,     0,    23,    33,     3,     0,    99,     0,     3,   638,
     1468     642,   645,   637,     3,   580,     3,   704,   709,     2,   285,
     1469       3,     3,   286,     0,     3,   610,   614,   617,   626,   660,
     1470     664,   667,   285,     3,   609,   625,   659,   285,   285,   414,
     1471     285,   285,   734,     0,     0,     0,     0,   247,     0,   101,
     1472       0,     3,     3,     0,   449,     0,   446,     0,     0,   236,
     1473     285,     0,     0,   126,     0,     0,     0,     0,     0,   126,
     1474       0,     0,     0,     2,     0,     0,     3,   128,   129,     2,
     1475     139,   130,   131,   132,   133,   134,   135,   141,   143,     0,
     1476       0,     0,   276,   285,   285,   535,     0,   528,   285,   108,
     1477     684,   688,   690,   683,   373,   387,   384,   567,     2,   652,
     1478     651,     0,   657,     2,   470,   472,   492,     3,   500,   501,
     1479       0,     2,   496,     3,     3,     0,     0,   544,   213,     0,
     1480       0,     0,   213,     0,     3,    35,   737,   106,     0,     3,
     1481     649,    40,     3,    38,     3,    32,     0,     3,    98,   100,
     1482       0,     2,   640,   641,     0,     0,   285,     0,     0,     0,
     1483       3,   626,     0,     2,   612,   613,     2,   628,     2,   662,
     1484     663,     0,     0,     3,     0,     3,     3,     3,     3,   399,
     1485     398,   402,     2,     2,   736,   735,   109,     0,     0,     0,
     1486       0,     3,   450,     3,     0,   234,   142,     3,   286,   285,
     1487       0,     0,     0,     0,     2,   187,     0,   185,     0,     0,
     1488       0,     0,     0,     0,   191,     0,   108,   535,   147,   144,
     1489     285,     0,     0,   258,   270,     3,     3,   534,   601,   358,
     1490       2,   686,   687,   285,   257,   285,     0,   503,   480,   285,
     1491       0,     0,   479,   494,     0,     0,     0,   207,     0,   216,
     1492     106,     0,     0,   113,   110,     0,     0,     0,     0,     0,
     1493       0,    22,     0,   643,   285,   568,   256,   712,   713,   714,
     1494       0,   665,   285,   285,   285,     3,     3,     0,   673,     0,
     1495       0,     0,     0,   285,   285,     3,   532,   457,   458,     0,
     1496       0,   237,   286,     0,     0,     0,     0,   285,   188,   186,
     1497       0,   183,   189,     0,     0,     0,   192,   195,   193,   190,
     1498     126,   140,   138,   235,     0,     0,   285,   406,   410,   409,
     1499       0,   497,     2,   498,     2,   499,   493,   285,   219,     0,
     1500     217,     0,   219,     3,   649,    30,   111,     2,    43,     2,
     1501      41,    39,    27,   109,    25,     3,   715,     3,     3,     3,
     1502       0,     0,   672,   674,   615,   629,   260,     2,   396,     3,
     1503     395,     0,   460,   457,   126,     0,     0,   126,     3,     0,
     1504     126,   184,     0,     2,   200,   194,     0,   136,   562,   602,
     1505       3,     2,     0,     0,     2,   220,     0,     0,   208,     0,
     1506       0,     0,     0,     0,     0,     0,     0,     0,   675,   676,
     1507     285,     0,   459,   148,     0,     0,     2,   161,   126,   150,
     1508       0,   178,     0,   126,     0,     2,   152,     0,     2,     2,
     1509       0,   285,   502,   504,   495,     0,     0,     0,     0,   111,
     1510      36,     3,     3,   644,   616,   630,   666,   400,   126,   154,
     1511     157,     0,   156,   160,     3,   163,   162,     0,   126,   180,
     1512     126,     3,     0,   285,     0,     2,   689,     2,   221,   222,
     1513       0,   218,   209,     0,     0,     0,   149,     0,     0,   159,
     1514     224,   164,     2,   226,   179,     0,   182,   168,   196,     3,
     1515     201,   205,     0,   285,     0,     0,     0,    37,    44,    42,
     1516     155,   158,   126,     0,   165,   285,   126,   126,     0,   169,
     1517       0,     0,   680,   202,   203,   204,   197,     3,   285,   210,
     1518     223,   145,   166,   151,   126,   227,   181,   176,   174,   170,
     1519     153,   126,     0,   681,     0,     0,   146,   167,   177,   171,
     1520     175,   174,   172,     3,     0,   481,   173,   198,     3,   199
    15451521};
    15461522
     
    15481524static const yytype_int16 yydefgoto[] =
    15491525{
    1550       -1,   834,   472,   299,    45,   130,   131,   300,   301,   302,
    1551      303,   780,   781,  1139,  1140,   304,   305,   306,   307,   308,
    1552      309,   310,   311,   312,   313,   314,   315,   316,   317,  1045,
    1553      522,   990,   319,   991,   551,   968,  1072,  1534,  1074,  1075,
    1554     1076,  1077,  1535,  1078,  1079,  1451,  1452,  1413,  1414,  1415,
    1555     1513,  1514,  1518,  1519,  1554,  1555,  1080,  1371,  1081,  1082,
    1556     1305,  1306,  1307,  1495,  1083,   142,   974,   975,   976,  1392,
    1557     1476,  1487,  1488,   473,   474,   896,   897,  1053,    48,    49,
    1558       50,    51,    52,   343,   155,    55,    56,    57,    58,    59,
    1559      345,    61,    62,   260,    64,    65,   271,   347,   348,    68,
    1560       69,    70,    71,   115,    73,   201,   350,   116,    76,   117,
    1561       78,    79,    80,   453,   454,   455,   456,   696,   934,   697,
    1562       81,    82,   460,   717,   876,   877,   353,   354,   720,   721,
    1563      722,   355,   356,   357,   358,   470,   337,   132,   133,   526,
    1564      321,   167,   650,   651,   652,   653,   654,    83,   118,    85,
    1565      493,   494,   960,   495,   274,   499,   322,    86,   134,   135,
    1566       87,  1329,  1118,  1119,  1120,  1121,    88,    89,   738,    90,
    1567      270,    91,    92,   184,  1047,   684,   408,   122,    93,   505,
    1568      506,   507,   185,   265,   187,   188,   189,   266,    96,    97,
    1569       98,    99,   100,   101,   102,   192,   193,   194,   195,   196,
    1570      846,   610,   611,   612,   613,   197,   615,   616,   617,   576,
    1571      577,   578,   579,   701,   103,   619,   620,   621,   622,   623,
    1572      624,   933,   703,   704,   705,   600,   361,   362,   363,   364,
    1573      323,   161,   105,   106,   107,   366,   715,   573
     1526      -1,   830,   470,   298,    45,   130,   131,   299,   300,   301,
     1527     302,   777,   759,  1132,  1133,   303,   304,   305,   306,   307,
     1528     308,   309,   310,   311,   312,   313,   314,   315,   316,  1040,
     1529     520,   986,   318,   987,   548,   964,  1065,  1501,  1067,  1068,
     1530    1069,  1070,  1502,  1071,  1072,  1430,  1431,  1397,  1398,  1399,
     1531    1483,  1484,  1488,  1489,  1519,  1520,  1073,  1359,  1074,  1075,
     1532    1296,  1297,  1298,  1469,  1076,   142,   970,   971,   972,  1376,
     1533    1450,  1461,  1462,   471,   472,   892,   893,  1048,    48,    49,
     1534      50,    51,    52,   342,   155,    55,    56,    57,    58,    59,
     1535     344,    61,    62,   259,    64,    65,   270,   346,   347,    68,
     1536      69,    70,    71,   115,    73,   200,   349,   116,    76,   117,
     1537      78,    79,    80,   451,   452,   453,   454,   693,   930,   694,
     1538      81,    82,   458,   714,   872,   873,   352,   353,   717,   718,
     1539     719,   354,   355,   356,   357,   468,   336,   132,   133,   524,
     1540     320,   166,   647,   648,   649,   650,   651,    83,   118,    85,
     1541     491,   492,   956,   493,   273,   497,   321,    86,   134,   135,
     1542      87,  1317,  1111,  1112,  1113,  1114,    88,    89,   735,    90,
     1543     269,    91,    92,   183,  1042,   681,   406,   122,    93,   503,
     1544     504,   505,   184,   264,   186,   187,   188,   265,    96,    97,
     1545      98,    99,   100,   101,   102,   191,   192,   193,   194,   195,
     1546     842,   607,   608,   609,   610,   196,   612,   613,   614,   573,
     1547     574,   575,   576,   698,   103,   616,   617,   618,   619,   620,
     1548     621,   929,   700,   701,   702,   597,   360,   361,   362,   363,
     1549     322,   161,   105,   106,   107,   365,   712,   570
    15741550};
    15751551
    15761552/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15771553   STATE-NUM.  */
    1578 #define YYPACT_NINF -1362
     1554#define YYPACT_NINF -1318
    15791555static const yytype_int16 yypact[] =
    15801556{
    1581     5182,  8315, -1362,    65, -1362, -1362, -1362, -1362, -1362, -1362,
    1582    -1362,    58, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
    1583    -1362, -1362, -1362, -1362, -1362,    82,    82,    82,   907,   818,
    1584      118,  6817,   261, -1362, -1362, -1362, -1362, -1362,   194, -1362,
    1585    -1362, -1362,   762,   245,  3620, -1362, -1362, -1362, -1362, -1362,
    1586    -1362,   110,   286, -1362,   690, -1362, -1362, -1362, -1362,   307,
    1587     1768,   457,   101,  6932, -1362, -1362,  4184,   407, -1362, -1362,
    1588    -1362,  1616,   474,  5211,   816,  1213,  1616,  2188, -1362, -1362,
    1589      386,   368, -1362,  1616,  2312, -1362,   370, -1362,   505,   519,
    1590    -1362, -1362, -1362, -1362,   390,   286,    82, -1362,    82, -1362,
    1591    -1362, -1362, -1362,  8539,   690, -1362, -1362,   690, -1362,  9099,
    1592      393, -1362, -1362,  2123,  9180, -1362,   951,   951,   951, -1362,
    1593    -1362, -1362,    82, -1362, -1362, -1362,   455,   470,   487, -1362,
    1594    -1362, -1362,   492, -1362, -1362, -1362, -1362, -1362,   517,   553,
    1595    -1362, -1362,    76,  8285,  1659,   753,   483,   539,   586,   596,
    1596      599,   606,  7594,  6229,   641,   646, -1362,  8650, -1362, -1362,
    1597    -1362, -1362,   673, -1362,   126,  3695,  3695, -1362,   682,   235,
    1598    -1362, -1362, -1362, -1362,   693,   419,   442,   449,    82,   685,
    1599    -1362, -1362,  1768,  2932,   768, -1362,    90, -1362,    82,    82,
    1600      286, -1362, -1362,   121, -1362,    82,    82, -1362,  3090,   696,
    1601      779,   951,  6612, -1362, -1362,   728,  3620, -1362, -1362,  1616,
    1602    -1362, -1362, -1362,   286, -1362,   690,   110, -1362,  7263, -1362,
    1603      951,   951,   951,   286, -1362,   907, -1362,  5761, -1362, -1362,
    1604      745,   951, -1362,   951, -1362,   194,  8285,  8427,   777, -1362,
    1605      818,   866,   951, -1362,   907,   775,   789, -1362,  6817,   874,
    1606    -1362, -1362, -1362,  5519, -1362, -1362,  6022, -1362,   768,   173,
    1607     9180, 10174,  2123,  3090, -1362,   265, -1362, -1362,  9099,   690,
    1608      879,  6376, -1362, -1362,   507, -1362, 10523,   887,   920,  3349,
    1609    10328, 10347, -1362,   895, -1362, -1362, -1362, -1362, 10405, 10405,
    1610      874,  7949,   897, 10328,  8397, -1362, -1362, -1362, -1362, -1362,
    1611    -1362,   930, -1362,   797,  2723, 10328, -1362,   688,   806,   843,
    1612      301,   862,   899,   893,   906,   932,    20, -1362, -1362,   934,
    1613      593, -1362,   402, -1362, -1362,  1659, -1362, -1362,   610,   919,
    1614    -1362,   621,   919,   946,   194, -1362, -1362,   962,  8539, -1362,
    1615      961,  8061, -1362, -1362,  1747,  1347,  7675,  6612,  1616, -1362,
    1616     1616,   951,   951, -1362, -1362, -1362, -1362, -1362, -1362,   951,
    1617     9209,   690, -1362, -1362,  9247,  1940, -1362,  9032, -1362, -1362,
    1618    -1362, -1362, -1362, -1362, -1362,   966,  4295, 10328, -1362, -1362,
    1619    -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
    1620    -1362, -1362,  2123, -1362,   446,   964,   972,   978,   719,   979,
    1621      987,   990,  2932, -1362, -1362,   994,   110,   992, -1362, -1362,
    1622      995, -1362, -1362, -1362,  5519, -1362, -1362, -1362, -1362, -1362,
    1623     3090, -1362,  8285,  8285, -1362,   951,  2123,  6731,   690,  7745,
    1624    -1362, -1362, -1362, -1362,  5519,   173, -1362, -1362,  1616,   286,
    1625    -1362, -1362,  5519, -1362,  6258, -1362, -1362,   951,   951,   484,
    1626     9317,   998,  1130,  4716, -1362,   459,   467,   818, -1362,  8427,
    1627      991,   980,   818,   951, -1362, -1362, -1362, -1362,  9608, -1362,
    1628      567,  6494, -1362,   286,   999, -1362,  2123, 10603, 10193, -1362,
    1629    -1362, -1362, -1362,   793,  3090, -1362,  7815,   768,  6702, -1362,
    1630    -1362, -1362,   842,   625,   934,   818,  6376,   494,  9099, -1362,
    1631     6376, -1362, -1362, -1362, -1362,   636, -1362,  1005,   920,   328,
    1632     7949, -1362, -1362, -1362,  7949, -1362,  8173,  7949, -1362, -1362,
    1633    -1362,  1004, -1362,   644,  1013,   617,  1014, -1362,  8787,  5845,
    1634    -1362, -1362, -1362,    93, -1362, -1362, 10251, -1362,   164, 10251,
    1635    -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
    1636    10174, 10174, -1362, 10328, 10328, 10328, 10328, 10328, 10328, 10328,
    1637    10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328,
    1638    10328,  4995, 10174, -1362,   593,  1220, -1362, -1362,    82,    82,
    1639    -1362, -1362,  8285, -1362, -1362,   995,   874, -1362,   995, 10270,
    1640    -1362, -1362, -1362,  5874,  5845,  1015,  8509,  1017, -1362,  9355,
    1641    -1362, -1362,   673, -1362,  1019,   506,  1020,  2624,   288,   934,
    1642    -1362,    82,    82,   934,   294, -1362,    82,    82,   995, -1362,
    1643    -1362,    82,    82, -1362,   919,  9384,   690, 10744,   254,   525,
    1644     9384, -1362,  6140, -1362,   934, -1362,  9209, -1362,   255,  7377,
    1645     7377,  7377,   690, -1362, 10097,  1009,   565,   966,   409,  1022,
    1646    -1362,  1018,  3695,   612, -1362,  1103,   690,  7377,   874,  2123,
    1647      874,   768,   628,   919, -1362, -1362,   744,   919, -1362, -1362,
    1648    -1362,   920, -1362,   919,   286,  9608, -1362,   659,  1026,   668,
    1649     1031, -1362,  1032,   286, -1362, -1362,  5519,   286,  1029,   497,
    1650      511,  9465,  6347,  1465, 10328,  2769, -1362, -1362,  1039,    94,
    1651     1039, -1362, -1362, -1362,    82,    82, -1362, -1362,   818, -1362,
    1652       82, -1362, -1362,  8924,   818,  1033, 10328, -1362,   991, 10744,
    1653    -1362, -1362,  1048, -1362, -1362, -1362,   874, -1362, 10674, 10328,
    1654    -1362,  7377,   639,  7675, -1362, -1362,   673,  1034,  1044,   842,
    1655     1987, -1362, -1362,  6376, -1362, -1362,  1045, -1362, -1362,  1051,
    1656    -1362,  1045,  1054, 10523, 10174,   142,  1040,    53,  1055,  1056,
    1657      897,  1057,  1061, -1362,  1063,  1066,  8203,  5993, -1362, 10174,
    1658    -1362,   617,  1650, -1362, 10116, 10174,  1062, -1362, -1362,   966,
    1659      676, -1362, 10174, -1362, -1362,   901, -1362, -1362, -1362, -1362,
    1660    -1362,   688,   688,   806,   806,   843,   843,   843,   843,   301,
    1661      301,   862,   899,   893,   906,   932, 10328,   912, -1362,  9608,
    1662     1069,  1070,  1075,  1220, -1362, -1362, -1362, -1362, -1362,  9608,
    1663      680, 10328,  7377, -1362,  9209, -1362,  6465,  8621,  9070,  6229,
    1664    -1362, -1362, -1362,   506,  9608,   832,  1076,  1078,  1079,  1080,
    1665     1082,  1083,  1088, -1362,  3884,  2624, -1362, -1362, -1362, -1362,
    1666    -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
    1667    -1362, -1362, -1362,   995, -1362, -1362, -1362,   934, -1362, -1362,
    1668    -1362, -1362, -1362, -1362, -1362, -1362,  1089, -1362,  1099,  1101,
    1669    -1362, -1362,   110,  1062, 10097, -1362, -1362, -1362,  4295,  1100,
    1670    -1362, -1362, -1362, -1362, -1362,   818,  5597,  1173, -1362, -1362,
    1671    -1362, -1362,  1085,   110, -1362, -1362,   995, -1362, -1362,   995,
    1672       28,   995, -1362, -1362, -1362, -1362, -1362, -1362,  8758, -1362,
    1673      286, -1362,  8427, -1362, -1362,  1108,   913,  1111,  1112,  1120,
    1674    -1362, -1362,  2769, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
    1675     1130, -1362,   980, -1362, -1362,  1116,  1128,  1124, -1362, -1362,
    1676     1132,  1133, -1362,   639,  1695, -1362,   589, -1362,  1987,   934,
    1677    -1362,  1138,  6376,  9494,  8285,  1140, -1362, -1362,  1137,  1144,
    1678     1147, -1362, 10328,   146,   128,  1150, -1362,  1153,  1153,  5845,
    1679    10174, -1362, -1362,  1153, -1362,  1650,  4295, -1362, -1362, -1362,
    1680    -1362,  1152, 10174,  1158,   874, 10097, -1362, 10251, -1362,   874,
    1681    -1362, -1362, 10174, -1362,   826,   919, -1362, -1362, -1362, -1362,
    1682    -1362, -1362, -1362,   966,  8061, -1362, -1362,  6583,  1161, -1362,
    1683      841,   919, -1362,   865,   883,   919, -1362,   951,  4042, -1362,
    1684    -1362, -1362,  9608,  9608, -1362,  7745,  7745, -1362,  1156,  1157,
    1685     1168,  1169, -1362,  1174,   677,   212,  1062, -1362,   874, -1362,
    1686     3695, -1362, 10174,   515, -1362,  5727,  1176,  1179,  9970,  1180,
    1687     1184,    11,    62,    64, 10174,  1185,   286, 10174, 10174,  1183,
    1688      535,  1182,  1164, -1362, -1362, -1362,  1187, -1362, -1362, -1362,
    1689    -1362, -1362, -1362, -1362, -1362, -1362,   818,  1190, 10174, -1362,
    1690     9608,  9608,    82,  1194, -1362,  8962,  8895,   888,   919, -1362,
    1691    -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,  1195,  1695,
    1692    -1362, -1362,  1186, -1362,  1045, -1362, -1362,  2123,  1196, -1362,
    1693    -1362, -1362,   684,  1203, -1362,    53,  1197, 10328,  1188,    53,
    1694       53,  1205, -1362,  1018, 10174,  1207,  1152,   337,   130,  1206,
    1695    -1362,  1205, -1362,  1214,  1206, -1362, -1362,  1217, -1362, -1362,
    1696      995,  1218,  1222,  6111,  1221,  1223,  1225, -1362, -1362,  1224,
    1697    -1362, -1362,   995, -1362, -1362, -1362, -1362,   995, 10174, 10174,
    1698    10328,  1226, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
    1699    -1362, -1362, -1362, -1362, 10328, 10328,  1232,  1234,  1206, -1362,
    1700    -1362,   818, -1362, -1362, -1362,  7193,  9494, 10174, 10174,  1283,
    1701    10174, -1362, -1362,  1215, -1362,  1219, 10174,  1233,  1242, 10174,
    1702      900,  1243,    37,  8091,  1006,    82, -1362, -1362,  5597,  1239,
    1703      523, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
    1704      995, 10093, -1362,  7815,  1256, -1362, -1362,  9494,   540,   555,
    1705    -1362,  1263,  1262,   920,  1270, -1362,   354, -1362, 10174,  1271,
    1706     1269, -1362, -1362,  1273,   206,   262,   874,  1274,  1275, -1362,
    1707     1276, -1362,  9608, -1362, -1362, -1362, -1362, -1362,  1277, -1362,
    1708     9608,  9608,  9608, -1362, -1362,  1279, -1362,  1282,  1286,  1287,
    1709      702,  7447,  7561, -1362, -1362,   388, -1362,  1291,  1292, -1362,
    1710     7885,   700,   705,  1296,   731,  5363, -1362, -1362,   575, -1362,
    1711    -1362,   741,  1297,  1299,   286,  1349,   974, -1362, -1362, 10174,
    1712    -1362, 10251,  9970, -1362, -1362, -1362,  1303,  1304,  9608, -1362,
    1713    -1362, -1362,  1312, -1362, -1362, -1362, -1362, -1362, -1362,  9494,
    1714      920,   263, -1362,  1293,   920,  1152,   273, -1362, -1362, -1362,
    1715    -1362, -1362, -1362, -1362, -1362,  1301, -1362, -1362, -1362, -1362,
    1716    -1362, -1362,  1316,  1317, -1362, -1362, -1362, -1362, -1362, -1362,
    1717    -1362,  1322, -1362,  1329, -1362, -1362,  9970,   107, 10174,  9970,
    1718    -1362,  1332, 10174, -1362,   151,  1351,  1355, -1362, -1362,  1334,
    1719     1335,  1320,   924, -1362, -1362, -1362, -1362, -1362,   690,  2123,
    1720     1338,   930,   937, 10328, -1362,   742,  1343, 10174,   874,   874,
    1721     1352,  1353,  1354,  1357, -1362, -1362,  7745,  1341, -1362,  1417,
    1722    10328,  1344, -1362, -1362,  9884, -1362,   785, -1362,  1333,  9970,
    1723     1340, -1362, -1362,  1363, -1362,  1364, -1362,  1379,  1382, -1362,
    1724     1350,  1371,  9494, -1362, -1362, -1362,   920,   874,  1374,  1365,
    1725     1370, -1362,  1206,  1206, -1362, -1362, -1362, -1362, -1362,  9970,
    1726      258, -1362,   941, -1362, -1362,  7047, -1362, -1362,  1367, 10174,
    1727    -1362, 10174,  7047,   286,  9317,   286,  9317,  1392, -1362,  1396,
    1728    -1362, -1362, -1362,  1393,   930, -1362,   803, -1362, -1362, 10174,
    1729     1397,  1398, -1362, 10328, 10328, -1362, -1362,  1016,    97, -1362,
    1730    -1362,  1383, -1362,  1016, -1362, -1362,  2377,   874, -1362, -1362,
    1731      286,  9317,   286,  9317,  1405,  1384,   874, -1362, -1362, -1362,
    1732    -1362, -1362,  9884,  1402,  1016,  7122, 10174,  9798,  1406,  1016,
    1733     1412,  2377,  2919, -1362, -1362, -1362,  1413, -1362, -1362, -1362,
    1734    -1362,  8285, -1362, -1362, -1362,  9705, -1362,  9884, -1362, -1362,
    1735     1400,  9612, -1362, -1362,  9798,   286,  2919,   286,  1414,  1419,
    1736      807, -1362,  9705, -1362, -1362, -1362,  9612, -1362, -1362, -1362,
    1737      286,   286, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362
     1557    4413,  9104, -1318,    42, -1318, -1318, -1318, -1318, -1318, -1318,
     1558   -1318,   -27, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1559   -1318, -1318, -1318, -1318, -1318,    95,    95,    95,   954,   850,
     1560      71,  5300,   201, -1318, -1318, -1318, -1318, -1318,   123, -1318,
     1561   -1318, -1318,   776,   164,  8401, -1318, -1318, -1318, -1318, -1318,
     1562   -1318,   226,   169, -1318,  1184, -1318, -1318, -1318, -1318,   272,
     1563    1531,   387,    89,  3759, -1318, -1318,  8469,  1998, -1318, -1318,
     1564   -1318,   935,   392,  5420,   741,  1183,   935,  1282, -1318, -1318,
     1565     356,   326, -1318,   935,  1429, -1318,   340, -1318,   453,   463,
     1566   -1318, -1318, -1318, -1318,   370,   169,    95, -1318,    95, -1318,
     1567   -1318, -1318, -1318,  9340,  1184, -1318, -1318,  1184, -1318,  9399,
     1568     389, -1318, -1318,  1617,  9458, -1318,  1087,  1087,  1087, -1318,
     1569   -1318, -1318,    95, -1318, -1318, -1318,   386,   435,   438, -1318,
     1570   -1318, -1318,   498, -1318, -1318, -1318, -1318, -1318,   510,   531,
     1571   -1318, -1318,    34,  7909,  1795,    48,   452,   575,   578,   583,
     1572     588,   593,  8673,  6319,   543,   605, -1318,  8537, -1318, -1318,
     1573   -1318, -1318,   652, -1318,   172,  5550, -1318,   473,   232, -1318,
     1574   -1318, -1318, -1318,   661,   301,   325,   403,    95,   646, -1318,
     1575   -1318,  1531,  2279,   739, -1318,    21, -1318,    95,    95,   169,
     1576   -1318, -1318,    35, -1318,    95,    95, -1318,  2781,   700,   710,
     1577    1087, 10200, -1318, -1318,   717,  8401, -1318, -1318,   935, -1318,
     1578   -1318, -1318,   169, -1318,  1184,   226, -1318,  7011, -1318,  1087,
     1579    1087,  1087,   169, -1318,   954, -1318,  3330, -1318, -1318,   704,
     1580    1087, -1318,  1087, -1318,   123,  7909,  9163,   736, -1318,   850,
     1581     769,  1087, -1318,   954,   737,   747, -1318,  5300,   814, -1318,
     1582   -1318, -1318,  2451, -1318, -1318,  3603, -1318,   739,    61,  9458,
     1583   10457,  1617,  2781, -1318,    68, -1318, -1318,  9399,  1184,   778,
     1584   11233, -1318, -1318,   428, -1318, 10968,   787,   870, 10685, 10742,
     1585   10799, -1318,   824, -1318, -1318, -1318, -1318, 10856, 10856,   814,
     1586    7591,   827, 10742,  8015, -1318, -1318, -1318, -1318, -1318, -1318,
     1587     874, -1318,   901,  2137, 10742, -1318,   237,   407,   632,   476,
     1588     638,   859,   855,   869,   890,   101, -1318, -1318,   877,   616,
     1589   -1318,   336, -1318, -1318,  1795, -1318, -1318,   518,   907, -1318,
     1590     633,   907,   892,   123, -1318, -1318,   914,  9340, -1318,   916,
     1591    7697, -1318, -1318,  1197,   771,  5233, 10200,   935, -1318,   935,
     1592    1087,  1087, -1318, -1318, -1318, -1318, -1318, -1318,  1087,  9517,
     1593    1184, -1318, -1318,  9576,  1658, -1318,  9222, -1318, -1318, -1318,
     1594   -1318, -1318, -1318, -1318,   924,  4543, 10742, -1318, -1318, -1318,
     1595   -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1596    1617, -1318,   676,   942,   945,   946,   690,   947,   948,   958,
     1597    2279, -1318, -1318,   952,   226,   957, -1318, -1318,   959, -1318,
     1598   -1318, -1318,  2451, -1318, -1318, -1318, -1318, -1318,  2781, -1318,
     1599    7909,  7909, -1318,  1087,  1617, 11261,  1184,  7402, -1318, -1318,
     1600   -1318, -1318,  2451,    61, -1318, -1318,   935,   169, -1318, -1318,
     1601    2451, -1318,  5128, -1318, -1318,  1087,  1087,   364,  9635,   960,
     1602    2086,  8865, -1318,   432,   454,   850, -1318,  9163,   955,   944,
     1603     850,  1087, -1318, -1318, -1318, -1318,  9936, -1318,   383,  7322,
     1604   -1318,   169,   962, -1318,  1617, 11043, 10514, -1318, -1318, -1318,
     1605   -1318,   755,  2781, -1318,  7467,   739,  6768, -1318, -1318, -1318,
     1606     885,   414,   877,   850, 11233,   619,  9399, -1318, 11233, -1318,
     1607   -1318, -1318, -1318,   479, -1318,   964,   870,   125,  7591, -1318,
     1608   -1318, -1318,  7591, -1318,  7803,  7591, -1318, -1318, -1318,   969,
     1609   -1318,   544,   972,   640,   974, -1318,  8741,  5983, -1318, -1318,
     1610   -1318,   103, -1318, -1318, 10571, -1318,   112, -1318, -1318, -1318,
     1611   -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10457, 10457, -1318,
     1612   10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742,
     1613   10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10343, 10457,
     1614   -1318,   616,   900, -1318, -1318,    95,    95, -1318, -1318,  7909,
     1615   -1318, -1318,   959,   814, -1318,   959, 10628, -1318, -1318, -1318,
     1616    8333,  5983,   973,  8121,   976, -1318,  9694, -1318, -1318,   652,
     1617   -1318,   978,   378,   980,  1782,   139,   877, -1318,    95,    95,
     1618     877,   166, -1318,    95,    95,   959, -1318, -1318,    95,    95,
     1619   -1318,   907,  9753,  1184, 11174,   137,   273,  9753, -1318,  4101,
     1620   -1318,   877, -1318,  9517, -1318,   278,  7119,  7119,  7119,  1184,
     1621   -1318,  3868,   982,   220,   924,   302,   984, -1318,   977,  5550,
     1622     238, -1318,  1061,  1184,  7119,   814,  1617,   814,   739,   705,
     1623     907, -1318, -1318,   765,   907, -1318, -1318, -1318,   870, -1318,
     1624     907,   169,  9936, -1318,   570,  1000,   655,  1005, -1318,  1004,
     1625     169, -1318, -1318,  2451,   169,  1003,   464,   465,  9812,  6431,
     1626    1947, 10742,  2536, -1318, -1318,  1001,    20,  1001, -1318, -1318,
     1627   -1318,    95,    95, -1318, -1318,   850, -1318,    95, -1318, -1318,
     1628    8924,   850,  1006, 10742, -1318,   955, 11174, -1318, -1318,  1017,
     1629   -1318, -1318, -1318,   814, -1318, 11109, 10742, -1318,  7119,   671,
     1630    5233, -1318, -1318,   652,  1013,  1014,   885,  2927, -1318, -1318,
     1631   11233, -1318, -1318,  1015, -1318, -1318,  1021, -1318,  1015,  1023,
     1632   10968, 10457,   243,  1002,    53,  1025,  1026,   827,  1027,  1028,
     1633   -1318,  1030,  1032,  8983,  6095, -1318, 10457, -1318,   640,  1104,
     1634   -1318, 10400, 10457,  1034, -1318, -1318,   924,   678, -1318, 10457,
     1635   -1318, -1318, -1318, -1318, -1318, -1318, -1318,   237,   237,   407,
     1636     407,   632,   632,   632,   632,   476,   476,   638,   859,   855,
     1637     869,   890, 10742,   716, -1318,  9936,  1038,  1041,  1042,   900,
     1638   -1318, -1318, -1318, -1318, -1318,  9936,   679, 10742,  7119, -1318,
     1639    9517, -1318,  6543,  8227,  9281,  6319, -1318, -1318, -1318,   378,
     1640    9936,   820,  1047,  1051,  1052,  1057,  1058,  1059,  1060, -1318,
     1641    3170,  1782, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1642   -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   959,
     1643   -1318, -1318, -1318,   877, -1318, -1318, -1318, -1318, -1318, -1318,
     1644   -1318, -1318,  1063, -1318,  1064,  1065, -1318, -1318,   226,  1034,
     1645    3868, -1318, -1318, -1318,  4543,  1066, -1318, -1318, -1318, -1318,
     1646   -1318,   850,  5481,  1140, -1318, -1318, -1318, -1318,  1049,   226,
     1647   -1318, -1318,   959, -1318, -1318,   959,   127,   959, -1318, -1318,
     1648   -1318, -1318, -1318, -1318,  8605, -1318,   169, -1318,  9163, -1318,
     1649   -1318,  1070,   856,  1073,  1076,  1077, -1318, -1318,  2536, -1318,
     1650   -1318, -1318, -1318, -1318, -1318, -1318,  2086, -1318,   944, -1318,
     1651   -1318,  1075,  1078,  1082, -1318, -1318,  1080,  1096, -1318,   671,
     1652    1985, -1318,   514, -1318,  2927,   877, -1318,  1100, 11233,  9871,
     1653    7909,  1102, -1318, -1318,  1098,  1110,  1107, -1318, 10742,    12,
     1654     400,  1114, -1318,  1112,  1112,  5983, 10457, -1318, -1318,  1112,
     1655   -1318,  1104,  4543, -1318, -1318, -1318, -1318,  1115, 10457,  1120,
     1656     814,  3868, -1318, 10571, -1318,   814, -1318, 10457, -1318,   825,
     1657     907, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   924,  7697,
     1658   -1318, -1318,  6655,  1125, -1318,   833,   907, -1318,   845,   852,
     1659     907, -1318,  1087,  4145, -1318, -1318, -1318,  9936,  9936, -1318,
     1660    7402,  7402, -1318,  1123,  1124,  1126,  1133, -1318,  1134,   553,
     1661      38,  1034, -1318,   814, -1318,  5550, -1318, 10457,   466, -1318,
     1662    5871,  1136,  1141,  5631,  1149,  1155,    13,    17,    14, 10457,
     1663    1156,   169,  3019,  1137,  1150,  1143, -1318, -1318, -1318,  1161,
     1664   -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   850,
     1665    1167, 10457, -1318,  9936,  9936,    95,  1169, -1318,  9045,  8803,
     1666     867,   907, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1667   -1318,  1174,  1985, -1318, -1318,  1158, -1318,  1015, -1318, -1318,
     1668    1617,  1173, -1318, -1318, -1318,   686,  1175, -1318,    53,  1178,
     1669   10742,  1159,    53,    53,  1176, -1318,   977, 10457,  1185,  1115,
     1670     607,   130,  1192, -1318,  1176, -1318,  1198,  1192, -1318, -1318,
     1671    1199, -1318, -1318,   959,  1201,  1203,  6207,  1202,  1205,  1207,
     1672   -1318, -1318,  1210, -1318, -1318,   959, -1318, -1318, -1318, -1318,
     1673     959, 10457, 10457, 10742,  1209, -1318, -1318, -1318, -1318, -1318,
     1674   -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10742, 10742,  1212,
     1675    1219,  1192, -1318, -1318,   850, -1318, -1318, -1318,  4876,  9871,
     1676   10457, 10457,  1262, 10457, -1318, -1318,  1213, -1318,  1214, 10457,
     1677    1216,  1220, 10457,   929, -1318,  1223,  5017,    95, -1318, -1318,
     1678    5481,  1224,   469, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1679   -1318, -1318,   959, 10172, -1318,  7467,  1232, -1318, -1318,  9871,
     1680     478,   509, -1318,  1236,  1239,   870,  1248, -1318,   541, -1318,
     1681   10457,  1250,  1245, -1318, -1318,  1251,   128,   133,   814,  1253,
     1682    1254, -1318,  1256, -1318,  9936, -1318, -1318, -1318, -1318, -1318,
     1683    1258, -1318,  9936,  9936,  9936, -1318, -1318,  1260, -1318,  1263,
     1684    1269,  1270,   589,  7186,  7294, -1318, -1318,   351, -1318,  1273,
     1685    1275, -1318,  7532,   721,   742,  1272,   752,  5749, -1318, -1318,
     1686     545, -1318, -1318,   768,  1279,   169,  1330,  1332, -1318, -1318,
     1687    5631, -1318, -1318, -1318,  1285,  1286,  9936, -1318, -1318, -1318,
     1688    1283, -1318, -1318, -1318, -1318, -1318, -1318,  9871,   870,   206,
     1689   -1318,  1268,   870,  1115,   327, -1318, -1318, -1318, -1318, -1318,
     1690   -1318, -1318, -1318,  1284, -1318, -1318, -1318, -1318, -1318, -1318,
     1691    1291,  1294, -1318, -1318, -1318, -1318, -1318, -1318, -1318,  1297,
     1692   -1318,  1296, -1318, -1318,  5631,   124, 10457,  5631, -1318,  1299,
     1693   10457, -1318,   270,  1314, -1318, -1318,  1306, -1318, -1318, -1318,
     1694   -1318, -1318,  1184,  1617,  1301,   874,   879, 10742, -1318,   790,
     1695    1307, 10457,   814,   814,  1308,  1310,  1316,  1317, -1318, -1318,
     1696    7402,  1320, -1318,  1376, 10742,  1313, -1318, -1318, 10286, -1318,
     1697     791, -1318,  1300,  5631,  1305, -1318, -1318,  1323, -1318,  1341,
     1698    1329,  9871, -1318, -1318, -1318,   870,   814,  1334,  1327,  1325,
     1699   -1318,  1192,  1192, -1318, -1318, -1318, -1318, -1318,  5631,   246,
     1700   -1318,   917, -1318, -1318,  6877, -1318, -1318,  1335, 10457, -1318,
     1701   10457,  6877,   169,  9635,  1342, -1318, -1318,  1351,   874, -1318,
     1702     793, -1318, -1318, 10457,  1357,  1359, -1318, 10742, 10742, -1318,
     1703   -1318,   989,    88, -1318, -1318,  1340, -1318,   989, -1318, -1318,
     1704    2035,   814,   169,  9635,  1364,  1345,   814, -1318, -1318, -1318,
     1705   -1318, -1318, 10286,  1369,   989,  6946, 10457, 10206,  1373,   989,
     1706    1380,  2035,  2697, -1318, -1318, -1318, -1318, -1318,  7909, -1318,
     1707   -1318, -1318, 10051, -1318, 10286, -1318, -1318,  1347,  9970, -1318,
     1708   -1318, 10206,   169,  2697,  1383,   794, -1318, 10051, -1318, -1318,
     1709   -1318,  9970, -1318, -1318,   169, -1318, -1318, -1318, -1318, -1318
    17381710};
    17391711
     
    17411713static const yytype_int16 yypgoto[] =
    17421714{
    1743    -1362,  3493,  1093, -1362,  1502, -1362,    -1,     2,   435, -1362,
    1744      458,  -522,  -509,  -926,  -270,  4585, -1362,  1298,   508,   516,
    1745      480,   518,   965,   977,   985,   963,   975, -1362,   450,  -552,
    1746     3932,  -889,  -691,  -949, -1362,   269,  -657,  -346, -1362,  1391,
    1747    -1362,   339, -1080, -1362, -1362,    75, -1362, -1321,  -831,   188,
    1748    -1362, -1362, -1362, -1362,     7, -1083, -1362, -1362, -1362, -1362,
    1749    -1362, -1362,   268, -1220,    39, -1362,  -255, -1362,   439,   242,
    1750    -1362,   117, -1362,  -360, -1362, -1362, -1362,   498,  -843, -1362,
    1751    -1362,    12, -1020,    26,  1825, -1362, -1362, -1362,  -118, -1362,
    1752      513,    86,  -185,   665,  2995, -1362, -1362,    55,   143,   302,
    1753     -254,  1799, -1362,  1348, -1362, -1362,   259,  1704, -1362,  2086,
    1754     1311, -1362, -1362,  -430,  -428,  1135,  1143,   640,   890,   313,
    1755    -1362, -1362,  1126,   652,  -484, -1362,  -469,  -299,   976, -1362,
    1756    -1362,  -931,  -975,  -226,  1098,  1011,    22, -1362,   189,   264,
    1757      -13,  -195,  -156,   609,   711, -1362,   947, -1362,  2242,   541,
    1758     -458,   859, -1362, -1362,   647, -1362,  -235, -1362,    24, -1362,
    1759    -1362, -1362, -1279,   371, -1362, -1362, -1362,  1122, -1362,    46,
    1760    -1362, -1362,  -859,  -108, -1361,   -83,  2954, -1362,  2772, -1362,
    1761      858, -1362,  -175,   138,  -168,  -167,  -163,     3,   -38,   -31,
    1762      -30,   910,    25,    70,    79,  -147,  -162,  -159,  -152,  -151,
    1763     -287,  -573,  -525,  -485,  -559,  -293,  -488, -1362, -1362,  -496,
    1764     1038,  1041,  1042,  2149,  4025,  -548,  -554,  -520,  -498,  -453,
    1765    -1362,  -411,  -687,  -675,  -653,  -597,  -296,  -300, -1362, -1362,
    1766      829,    71,   -28, -1362,  3030,   124,  -627,  -190
     1715   -1318,  3762,  2543, -1318,  1454, -1318,    -1,     2,   -89, -1318,
     1716   -1318, -1318,  -483,  -942,  -282,  4006, -1318,  1670,   483,   485,
     1717     347,   484,   927,   931,   926,   932,   937, -1318,   792,  -594,
     1718    4587,   375,  -691,  -946, -1318,  -112,  -722,  -695, -1318,   412,
     1719   -1318,   304, -1184, -1318, -1318,    54, -1318, -1317,  -763,   149,
     1720   -1318, -1318, -1318, -1318,    -3, -1151, -1318, -1318, -1318, -1318,
     1721   -1318, -1318,   223,    51,    55, -1318,  -364, -1318,   402,   204,
     1722   -1318,    86, -1318,  -320, -1318, -1318, -1318,   450,  -745, -1318,
     1723   -1318,    10,  -865,   258,   180, -1318, -1318, -1318,  -222, -1318,
     1724     126,    49,  -187,   951,  3574, -1318, -1318,   213,   151,   363,
     1725    -251,  2053, -1318,  1304, -1318, -1318,   344,  1615, -1318,  1898,
     1726    1496, -1318, -1318,  -417,  -439,  1083,  1084,   597,   837,   279,
     1727   -1318, -1318,  1086,   598,   -23, -1318,    37,  -463,   807, -1318,
     1728   -1318,  -923,  -977,   142,   669,   965,   280, -1318,   175,   -35,
     1729    -257,  -199,  -156,   555,   651, -1318,   888, -1318,  1925,  1031,
     1730    -460,   803, -1318, -1318,   594, -1318,  -228, -1318,   140, -1318,
     1731   -1318, -1318, -1268,   320, -1318, -1318, -1318,  1067, -1318,     6,
     1732   -1318, -1318,  -851,   -86, -1303,  -124,  2887, -1318,  2837, -1318,
     1733     812, -1318,  -168,   585,  -176,  -173,  -171,     4,   -41,   -39,
     1734     -36,   834,    47,    56,    79,  -167,  -162,  -161,  -159,  -158,
     1735    -273,  -557,  -498,  -458,  -543,  -318,  -539, -1318, -1318,  -499,
     1736     986,   992,   993,  1485,  4182,  -565,  -577,  -550,  -542,  -536,
     1737   -1318,  -384,  -672,  -658,  -654,  -591,  -211,  -316, -1318, -1318,
     1738     152,   299,   -75, -1318,  2880,   592,  -631,  -200
    17671739};
    17681740
     
    17701742   positive, shift that token.  If negative, reduce the rule which
    17711743   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1772 #define YYTABLE_NINF -520
     1744#define YYTABLE_NINF -511
    17731745static const yytype_int16 yytable[] =
    17741746{
    1775      110,   449,    46,    95,   146,   264,   927,   762,   403,   379,
    1776      380,   147,   148,   111,   395,   396,   424,   785,   928,   397,
    1777      398,   436,   502,   399,   889,   707,    53,   112,   865,   713,
    1778      400,   401,   836,    46,    95,  1194,   404,  1085,   746,    47,
    1779      929,   702,   751,  1136,    46,   601,    46,   158,   847,  1453,
    1780     1390,   840,   614,  1084,   674,    66,    46,    53,   609,   848,
    1781      633,  1178,    46,   190,   637,    46,   213,   149,    46,   223,
    1782       47,   104,   104,  1144,   683,   257,   174,   140,   216,   814,
    1783      837,   108,   687,   988,   927,   841,    66,   113,   403,   207,
    1784      421,   945,   217,  1457,   395,   396,   928,   969,  1309,   397,
    1785      398,   406,   104,   399,  1176,  1177,    46,   842,   532,    46,
    1786      400,   401,   150,   570,   773,    46,   404,   839,   929,    30,
    1787      838,   151,  1188,  1453,   339,   277,   258,    30,   199,   259,
    1788      156,    30,   108,   287,   108,   475,  1092,   104,    94,  -232,
    1789     -232,  1202,   931,    67,   146,   119,    46,   158,   571,  1410,
    1790     1411,   147,   148,  1473,    46,   851,   880,   881,    30,    46,
    1791      369,   858,   972,   108,   944,   120,   836,  1310,   163,    94,
    1792      878,   878,   878,   899,    67,   479,   481,   200,  1211,  1212,
    1793      145,  1206,    94,   278,    46,    46,   158,   734,   878,   255,
    1794      735,  1457,  1204,  1410,  1411,   156,  1457,   249,   186,   407,
    1795       46,    94,   777,   407,    94,   741,   209,   149,    46,   158,
    1796     -232,   672,  1193,  1254,   837,   165,  1457,    46,   138,  1412,
    1797       46,   439,   532,  1457,   146,   139,   532,   669,   415,   320,
    1798      407,   147,   148,   163,   108,   405,  1128,   435,   336,   166,
    1799      373,  1255,   723,  1129,   437,  1251,  1499,   952,   469,   443,
    1800       46,    95,   150,  1127,   838,   670,   374,   970,  1178,    74,
    1801      836,   151,   878,  1421,    46,    46,   158,   324,   464,   238,
    1802      241,    46,   141,   783,    53,  1194,   108,   698,    46,   840,
    1803      480,  1528,    94,  1530,   661,   707,  1030,    47,   426,   520,
    1804       74,   487,   430,   825,   467,    94,   475,  1031,   504,  1335,
    1805      601,   143,    30,    66,   744,   700,  1184,  1178,   837,   669,
    1806      592,  1146,   676,   841,   614,  1339,   475,  1007,   681,   104,
    1807      394,   186,   320,   452,   475,    30,   920,    46,   369,   601,
    1808      432,    30,   108,  1185,   601,   842,   874,   670,  1010,   339,
    1809      879,   879,   879,   532,    94,  1018,    46,    46,   838,   383,
    1810     1176,  1177,  1483,   878,   430,   152,    94,   492,   879,  1085,
    1811      324,   438,   480,    46,   868,   384,   174,    46,   869,   226,
    1812     1393,  1341,   485,   227,   407,  1084,   231,   525,   233,  1185,
    1813      156,  -110,   851,   634,   572,   242,    94,   638,  1397,   560,
    1814      561,    67,   432,   734,    46,   849,   735,   606,   168,   840,
    1815      483,   856,  -110,   606,    46,   369,   848,  1208,   532,   678,
    1816      680,     2,   203,     4,     5,     6,     7,   865,   163,   852,
    1817     1126,   178,    46,   855,   591,   562,   563,   598,    46,   461,
    1818       46,  1178,   879,   841,  1542,  1194,   756,  1541,   108,   225,
    1819      136,   137,  1194,   757,   872,  -110,   631,  -110,   875,   723,
    1820      635,  -110,  1372,   336,    46,   842,   108,  1552,   136,   235,
    1821      198,  1557,  1333,    94,  1556,   603,  -110,  -110,   734,  1334,
    1822      110,   735,  1442,  1443,    34,  1448,    35,  -288,    46,   108,
    1823      240,   136,   137,   608,   244,   750,    46,   369,  1142,   209,
    1824       46,    95,  1095,   236,    46,  1194,   890,   249,   237,   502,
    1825      339,  -110,  -110,   764,  1114,   247,  1250,    74,   320,   320,
    1826      581,   226,    74,    60,    53,   761,   582,  -110,   885,  -515,
    1827      403,  1100,   261,   879,  1012,   395,   396,    47,   825,   702,
    1828      397,   398,   778,   386,   399,   761,   452,   784,   761,   452,
    1829      186,   400,   401,    66,    60,   452,   324,   324,   404,   387,
    1830     1073,   901,   614,   249,   326,   407,   388,   113,  1029,   104,
    1831      523,  1031,   -10,   390,   108,   649,   136,   137,   475,   818,
    1832     1164,  1166,   389,   708,  1100,  1244,    36,  -438,   903,   391,
    1833       39,   710,   492,   723,   320,   469,   492,    40,    41,   709,
    1834      699,   327,   688,   723,  -439,    46,   525,   711,   582,   273,
    1835      525,   747,   320,   525,   212,   282,   748,    46,   723,    46,
    1836      949,   708,  1489,   833,   336,   606,    40,    41,   825,  1489,
    1837      209,   239,   324,   607,   275,   710,    94,   923,    46,  1191,
    1838      608,    67,  1283,  1284,   497,   870,   498,  1191,  1370,   871,
    1839      324,   924,   517,  -464,    46,  1192,   712,   328,   867,   827,
    1840      226,   461,   231,  1315,  1324,   212,  1512,   900,    46,   902,
    1841      276,    46,  1517,   339,   882,    63,   114,   707,   320,  1326,
    1842     1325,  1029,  1538,    74,  -464,   725,  -464,  1034,   898,   823,
    1843     -464,   726,   598,  1537,   745,  1327,   749,  1042,  1544,   769,
    1844      891,   677,   679,    74,   329,    46,    63,    46,   212,   870,
    1845      574,    74,   407,  1110,   330,  1373,   324,   331,  1089,   157,
    1846      575,   864,  1199,   509,   332,  1420,   598,   583,   601,   407,
    1847      603,   892,   873,   648,   771,   948,   407,   893,   586,  1122,
    1848      407,   218,  1049,   742,   772,   904,  1175,   407,   339,   743,
    1849      226,    46,    46,   835,   752,   608,   953,    74,   606,   866,
    1850      753,   367,   768,   368,   603,    46,   954,   669,   769,   212,
    1851       36,    60,   171,   172,    39,   698,   476,   914,   256,  1111,
    1852      438,    40,    41,   769,   758,   504,   916,   336,   759,   523,
    1853      372,   765,   769,   523,   996,   670,   523,  -103,  1009,  1382,
    1854      997,  -103,  1240,   700,   726,   381,   825,   212,   582,   452,
    1855      385,   212,  1491,   422,  1492,   553,   723,   723,  1366,   325,
    1856      554,   555,  1358,  1367,   769,   393,  1359,   256,   346,   769,
    1857        2,   203,     4,     5,     6,     7,   415,   665,   407,   492,
    1858      405,   926,    36,   699,   927,    46,    39,   886,   428,  1369,
    1859      807,  1438,  1168,    40,    41,   769,   928,    46,   402,  1374,
    1860     1439,   907,   336,   407,   734,   769,  1436,   735,  1450,  1539,
    1861      249,   326,   209,   420,   723,   723,   425,   427,   929,    42,
    1862     1242,   157,  1073,   160,  1246,   446,   209,   835,   608,   144,
    1863      533,   534,   535,    34,   827,    35,   423,   212,   108,   459,
    1864      136,   137,   444,  1458,  1189,  1071,   447,   939,   448,   769,
    1865      485,   326,   407,   942,   536,   465,   537,   463,   538,   539,
    1866     1011,  1505,    36,    63,   823,  1562,    39,  1506,   477,   466,
    1867       46,   582,    53,    40,    41,   556,   557,   476,   484,   558,
    1868      559,  1510,  1450,  1148,    46,   407,   427,   735,   160,   849,
    1869      326,   606,    46,   755,   108,    74,    -3,   476,  1160,   739,
    1870      407,    66,   564,   565,   159,   476,  1302,  1303,  1304,   740,
    1871       46,     8,     9,    10,    11,    12,  1383,   104,   212,   209,
    1872      191,   835,  1163,   214,   606,  1115,   224,   126,   462,   127,
    1873      128,   129,  1361,   608,  1340,  1342,  1343,    74,    30,  1116,
    1874     1165,   488,   606,  1138,   508,  1228,   761,   407,  1138,   732,
    1875      287,    60,   516,   256,   823,  1320,   599,   528,   452,  1235,
    1876      532,   935,   627,   935,  1000,   997,    33,   566,   212,   567,
    1877     1409,   326,   407,  1417,   569,   632,   769,  1002,   335,   632,
    1878     1379,  1380,   256,   568,   104,   431,   723,  1430,   997,    67,
    1879      795,   796,   797,   798,   723,   723,   723,  1138,   492,  1117,
    1880      320,  1436,  1437,  -435,   159,  1484,  1485,  1071,  1410,  1411,
    1881     1203,  1205,  1207,   572,   791,   792,   457,   370,  1456,   590,
    1882      699,   593,   662,  1460,   793,   794,   643,   649,   699,   477,
    1883      663,    53,   799,   800,  1054,  1524,   664,   666,   324,   533,
    1884      534,   535,   723,   159,   346,   667,   608,   431,   668,   477,
    1885      864,   671,   673,  1482,   254,   714,   910,   477,   691,   716,
    1886     1196,  -236,   754,   536,   766,   537,   159,   538,  1311,    46,
    1887      527,   770,   774,   160,   -12,   828,   104,   830,   440,   832,
    1888      843,   895,   888,   719,   915,  1100,   427,   887,   866,   917,
    1889      212,   922,   918,   164,   930,   169,   943,  -519,   175,   176,
    1890      177,   733,   179,    63,   694,    74,  -412,   957,   964,   743,
    1891      438,   427,   966,   977,   978,   427,   930,   230,   212,   981,
    1892      971,   982,   980,   212,   983,   649,   992,  1004,  1005,   245,
    1893      246,   452,   823,  1006,  1020,   339,  1021,  1022,  1023,  1551,
    1894     1024,  1025,   973,   256,   346,  1551,  1026,  1037,    67,   476,
    1895       36,  1086,   180,   181,    39,   732,  1551,  -400,   216,  -399,
    1896     1551,    40,    41,  1051,  1088,    46,  -289,  1071,  1096,  1097,
    1897     1098,   207,   217,     8,     9,    10,    11,    12,  1099,  1103,
    1898        8,     9,    10,    11,    12,   370,  1104,   693,  1105,   407,
    1899      813,   476,  1106,  1107,    53,   694,  1113,   695,  1123,  1115,
    1900       30,   769,  1124,  1138,  1138,  1138,  1001,    30,   632,   826,
    1901      212,   599,  1125,  1116,  1130,   986,  1134,   104,  1137,  1158,
    1902     1179,  1180,   845,    66,   212,  1054,  1181,  1182,    33,   457,
    1903      732,  1434,   457,  1197,  1183,    33,  1198,  1200,   457,   104,
    1904      599,  1201,  1209,  1213,  1216,   599,  1550,  1215,  1221,   336,
    1905       -3,   632,  1226,  1232,   346,   346,   346,  1243,   104,  1236,
    1906      761,  1071,   370,   497,    74,  1241,   437,  1252,  1245,  1248,
    1907     1256,    53,   346,  1117,  1259,  1261,  1263,   574,  1293,   407,
    1908     1264,  1265,  1269,  1266,  1044,  1267,  1276,   575,   209,   527,
    1909      719,  1115,  1285,   527,  1286,  1296,   527,   403,    72,  1297,
    1910     1196,   477,  1314,   395,   396,  1116,   256,   733,   397,   398,
    1911      932,    67,   399,  1299,  1322,  1071,   104,   212,  1071,   400,
    1912      401,   669,  1300,  1308,   211,   404,  1328,  1330,  1332,    72,
    1913     1289,  1336,  1337,  1338,  1344,  1345,  1346,  1348,  1523,  1354,
    1914       46,    46,  1355,   477,  1356,  1357,   346,  1138,  1138,   670,
    1915      104,  1364,  1365,  1368,  1375,   958,  1376,  1304,   427,    60,
    1916     1433,  1384,  1385,  1071,   219,  1117,  1397,    36,  1071,   180,
    1917      181,    39,   930,  1394,  1387,   211,  1404,  1405,    40,    41,
    1918     -401,   256,   733,   438,   597,   604,  1475,   985,    67,  1408,
    1919     1419,  1427,  1428,   170,  1115,  1423,   628,   629,  1071,  1425,
    1920     1429,  1435,  1145,  1440,   605,  1359,   606,  1449,  1116,  1454,
    1921     1444,  1445,  1446,  1459,   607,  1447,  1291,  1292,   211,  1294,
    1922     1461,  1463,  1465,  1467,   719,  1298,  1469,    74,  1301,  1472,
    1923     1471,    53,  1477,   146,   719,  1479,   250,   346,    53,   632,
    1924      147,   148,  1017,   632,   826,  1478,  1525,  1490,    46,   719,
    1925     1500,   349,  1044,   104,  1502,  1533,  1504,  1508,  1509,  1028,
    1926     1196,  1071,  1531,  1516,  1532,  1536,  1071,  1196,  1117,  1543,
    1927     1545,  1547,  1560,    46,    46,   158,   104,  1561,  1214,   211,
    1928     1553,   801,   804,   104,  1071,    36,  1071,   180,   181,    39,
    1929     1071,    53,   457,  1071,   802,   805,    40,    41,    46,   369,
    1930     1496,  1071,  1496,   803,    74,  1071,   173,  1313,   212,  1511,
    1931      973,    63,  1422,  1563,   973,   973,   724,   211,   476,  1247,
    1932     1196,   211,   693,  1378,   407,   445,  1395,   930,   513,  1493,
    1933     1101,   413,   695,   632,  1220,   689,   104,  1496,   718,  1496,
    1934      936,   530,   531,   690,  1102,  1133,    72,   820,    67,  1050,
    1935      894,    72,   959,   552,   433,    67,   173,  1112,  1323,   173,
    1936      737,   967,   810,     0,   441,   811,   812,   320,     0,  1109,
    1937        2,   203,     4,     5,     6,     7,     0,   427,   114,     0,
    1938        0,     0,     0,     0,   930,   930,     0,  1416,     0,   531,
    1939        0,     0,     0,     0,   346,     0,     0,     0,     0,     0,
    1940        0,   913,     0,     0,   173,   324,     0,   211,    67,   483,
    1941        8,     9,    10,    11,    12,     0,   732,     0,     0,     8,
    1942        9,    10,    11,    12,     0,   531,     0,     0,  1331,   599,
    1943        0,     0,   524,    34,     0,    35,     0,    30,     0,     0,
    1944        0,     0,   425,     0,     0,   219,    30,   719,   719,     0,
    1945      346,   346,     0,     0,    75,     8,     9,    10,    11,    12,
    1946        0,     0,     0,     0,    74,    33,     0,   173,     0,     0,
    1947     1195,    74,     0,     0,    33,     0,     0,     0,     0,    36,
    1948        0,    60,    30,    39,     0,    75,   212,     0,   211,     0,
    1949       40,    41,     0,     0,     0,     0,   732,     0,     0,     0,
    1950        0,   457,     0,     0,     0,   719,   719,   771,     0,   407,
    1951       33,   632,    72,     0,     0,  1391,    42,   772,     0,  1391,
    1952      220,   173,     0,   724,    74,     0,   144,   349,   173,     0,
    1953        0,     0,    72,     0,     0,  1003,     0,     0,   211,     0,
    1954       72,     0,     0,     0,     0,  1008,     0,     0,     0,     0,
    1955        0,     0,   953,     0,   606,     0,     0,     0,   476,     0,
    1956     1019,     0,   954,   946,     0,   947,   349,    36,   733,   171,
    1957      172,    39,   950,   951,     0,    54,    54,   956,    40,    41,
    1958      685,   212,     0,     0,   349,     0,    72,     0,    36,   961,
    1959      180,   181,    39,   930,   965,     0,   173,     0,     0,    40,
    1960       41,   788,   789,   790,   368,     0,    54,   351,     0,     0,
    1961      930,  1290,   210,   173,   727,     0,     0,   173,     0,   993,
    1962        0,  1474,   229,     0,     0,   182,     0,   349,   256,     0,
    1963        0,     0,     0,    63,     0,   183,     0,     0,    54,     0,
    1964        0,    54,     0,     0,   531,     0,   719,     0,   733,     0,
    1965        0,   524,   114,     0,     0,   524,     0,   724,   524,     0,
    1966      211,     0,     0,   210,   597,     0,     0,   724,     0,     0,
    1967        0,     0,     0,     0,   457,     0,     0,   719,     0,     0,
    1968      173,     0,   724,   930,   930,   719,   719,   719,   211,     0,
    1969        0,     0,   349,   211,     0,     0,   346,   346,     0,     0,
    1970        0,     0,    75,     0,     0,     0,   210,    75,     0,     0,
    1971     1195,     0,     0,     0,     0,     0,     0,     0,   476,     0,
    1972        0,  1038,  1039,  1040,  1041,   476,  1043,     0,   344,     0,
    1973        0,     0,     0,   719,     0,     0,     0,   349,   349,   349,
    1974        0,     0,  1087,     0,   114,     0,     0,     8,     9,    10,
    1975       11,    12,     0,     0,     0,   349,  1093,     0,  1173,  1174,
    1976       36,     0,   171,   172,    39,     0,     0,   210,     0,     0,
    1977        0,    40,    41,   349,    30,     0,     0,   531,   476,     0,
    1978      211,     0,     0,     0,    72,     0,     0,     0,     0,     0,
    1979      349,     0,     0,    54,   211,  1108,     0,   372,     0,     0,
    1980        0,   220,    33,     0,     0,   210,     0,    36,     0,   210,
    1981        0,    39,     0,     0,     0,   912,  1223,  1224,    40,    41,
    1982        0,   346,   987,    54,   919,   503,    72,     0,   921,   349,
    1983        0,     0,     0,     0,  1135,     0,    77,     0,     0,     0,
    1984        0,  1143,     0,     0,   739,   173,  1147,   114,     0,     0,
    1985        0,  1151,     0,  1152,   740,     0,     0,  1154,  1155,  1156,
    1986        0,     0,  1159,     0,     0,   349,     0,    77,    75,   531,
    1987     1195,  1171,     0,     0,     0,     0,     0,  1195,   173,     0,
    1988      724,   724,     0,   351,     0,     0,     0,   211,    75,  1186,
    1989     1187,     0,     0,     0,   173,   210,    75,     0,     0,     0,
    1990        0,     0,   221,     0,     0,     0,     0,   349,   173,     0,
    1991        0,     0,     0,     0,     0,     0,  1217,   349,     0,  1219,
    1992      349,     0,   351,     0,     0,   219,     0,   349,     0,     0,
    1993     1195,     0,   349,     0,     0,     0,     0,  1546,   724,   724,
    1994      351,  -290,    75,    36,     0,   180,   181,    39,     8,     9,
    1995       10,    11,    12,     0,    40,    41,     0,  1234,     0,     0,
    1996        0,     0,     0,  1238,  1239,     0,     0,     0,     0,     0,
    1997        0,     0,     0,     0,  1249,    30,   210,     0,     0,  1253,
    1998      262,     0,  1257,   351,  1258,     0,     0,  1260,  1347,   352,
    1999      263,     0,    84,   210,    72,     0,  1349,  1350,  1351,     0,
    2000     1268,     0,     0,    33,   344,   173,     0,     0,     0,     0,
    2001        0,     0,     0,  1275,     0,  1277,  1278,  1279,  1280,     0,
    2002        0,     0,     0,    84,     0,     0,   210,     0,     0,     0,
    2003        0,  1287,     0,  1288,     0,     0,     0,   169,     0,     0,
    2004        0,     0,     0,  1497,  1386,  1497,     0,     0,   351,     0,
    2005        0,     0,     0,     0,     0,     0,     0,     0,   222,     0,
    2006        0,  1094,   531,    54,     0,  -291,  1316,  1317,     0,     0,
    2007        0,     0,     8,     9,    10,    11,    12,   349,   211,  1321,
    2008     1497,     0,  1497,     0,    77,   409,     0,     0,     0,    77,
    2009        0,     0,   417,   351,   351,   351,     0,     0,     0,    30,
    2010        0,     0,     0,   513,   344,     0,     0,     0,     0,     0,
    2011      724,   351,     0,     0,     0,     0,  1352,  1353,   724,   724,
    2012      724,     0,     0,     0,     0,     0,  1363,    33,     0,   351,
    2013      349,   349,     0,   349,   349,     0,     0,     0,     0,     0,
    2014       75,     0,     0,     0,     0,   359,   351,     0,   210,     0,
    2015        0,     0,     0,    72,     0,     0,     0,     0,     0,     0,
    2016        0,     0,     0,     0,   409,     0,   724,     0,     0,   344,
    2017      173,     0,     0,     0,     0,     0,   210,     0,  1396,     0,
    2018        0,   210,    75,   221,     0,   351,     0,     0,   349,   349,
    2019     1400,     0,  1401,  1402,  1403,     0,     0,    36,     0,   180,
    2020      181,    39,     0,     0,  1407,     0,     0,  1210,    40,    41,
    2021        0,     0,     0,  1418,   344,   344,   344,     0,   531,   580,
    2022        0,   351,     0,     0,     0,     0,     0,   584,     0,  1431,
    2023      587,     0,   344,     0,  1521,     0,   407,     0,     0,     0,
    2024       84,     0,     0,     0,  1522,    84,     0,     0,     0,     0,
    2025       77,   349,     0,     0,     0,     0,   211,     0,     0,     0,
    2026        0,     0,     0,   351,     0,   352,     0,     0,   210,     0,
    2027       77,     0,     0,   351,     0,     0,   351,     0,    77,     0,
    2028        0,   220,   210,   351,     0,  1480,  1481,     0,   351,     0,
    2029        0,     0,     0,   409,   219,     0,     0,   417,  1486,     0,
    2030        0,     0,   503,     0,   352,  1486,   344,     0,     0,     0,
    2031        0,     0,     0,     0,     0,     0,    72,     0,     0,     0,
    2032        0,     0,   352,     0,    77,     0,     0,     0,     0,   349,
    2033        0,   349,     0,     0,     0,     0,     0,     0,  1520,   222,
    2034        0,     0,  1526,     0,     0,     0,     0,     0,     0,     0,
    2035       75,   211,     0,     0,     0,     0,     0,     0,     0,     0,
    2036      349,     0,     0,     0,     0,   352,     0,     0,   349,   349,
    2037      349,  1548,     0,  1549,     0,   210,     0,     0,     0,   349,
    2038      349,     0,   409,     0,     8,     9,    10,    11,    12,     0,
    2039        0,     0,     0,    72,     0,     0,     0,   344,     0,     0,
    2040        0,  1564,  1565,     0,   344,     0,    84,     0,     0,  1568,
    2041     1569,    30,     0,     0,     0,     0,   349,     0,     0,     0,
    2042        0,   359,     0,     0,     0,     0,    84,     0,     0,     0,
    2043      352,     0,     0,   351,    84,     0,     0,     0,     0,    33,
    2044        0,     0,     0,     0,    36,  1377,   180,   181,    39,     0,
    2045        0,     0,     0,     0,     0,    40,    41,     0,     0,     0,
    2046      359,     0,     0,     0,     0,   173,     0,     0,     0,     0,
    2047        0,    54,     0,   580,   580,   352,   352,   352,   359,     0,
    2048       84,   605,     0,   606,     0,     0,   351,   351,     0,   351,
    2049      351,   607,     0,   352,     0,     0,     0,     0,     0,     0,
    2050        0,     0,     0,     0,   349,     0,     0,     0,     0,    75,
    2051        0,   352,     0,     0,     0,     0,     0,     0,     0,     0,
    2052        0,   359,    77,     0,     0,     0,     0,     0,   352,     8,
    2053        9,    10,    11,    12,     0,     0,     0,     0,    54,     0,
    2054        0,     0,     0,     0,   351,   351,     0,   123,   123,   123,
    2055        0,     0,     0,    72,   344,     0,    30,     0,     0,     0,
    2056       72,   905,     0,     0,    77,   908,   210,   352,   540,   541,
    2057      542,   543,   544,   545,   546,   547,   548,   549,     0,     0,
    2058        0,     0,     0,     0,    33,     0,   359,     0,     0,    36,
    2059        0,   180,   181,    39,     0,     0,     0,     0,   409,     0,
    2060       40,    41,   550,   352,  1494,     0,  1498,   351,     0,     0,
    2061      344,   344,     0,    72,     0,     0,     0,     0,   123,     0,
    2062      123,     0,     0,     0,     0,     0,   693,     0,   407,     0,
    2063       54,   359,   359,   359,     0,     0,   695,     0,     0,     0,
    2064      173,  1527,     0,  1529,   272,   352,     0,     0,     0,   359,
    2065      220,     0,     0,     0,     0,   352,     0,     0,   352,     0,
    2066        0,     0,     0,   221,     0,   352,     0,   359,     0,     0,
    2067      352,     0,    75,     0,     0,     0,     0,     0,    84,     8,
    2068        9,    10,    11,    12,   359,   351,  1558,   351,  1559,     0,
    2069        0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
    2070      123,  1566,  1567,     0,     0,     0,    30,     0,   123,     0,
    2071      123,   123,   580,     0,     0,   123,   351,   123,   123,    30,
    2072       84,     0,     0,   359,   351,   351,   351,     0,     0,   121,
    2073      124,   125,    77,     0,    33,   351,   351,     0,     0,    36,
    2074        0,   180,   181,    39,   210,     0,     0,    33,     0,    75,
    2075       40,    41,    36,     0,   180,   181,    39,     0,     0,   359,
    2076        0,     0,     0,    40,    41,     0,     0,     0,     0,     0,
    2077       54,    54,   351,     0,     0,     0,  1521,     0,   407,     0,
    2078        0,     0,     0,     0,     0,     0,  1522,   123,     0,   182,
    2079        0,     0,     0,    54,     0,     0,     0,     0,     0,   183,
    2080      251,   359,   252,     0,     0,     0,     0,     0,   208,     0,
    2081        0,   359,    54,     0,   359,   352,     0,     0,   228,   222,
    2082      232,   359,   234,     0,   162,   409,   359,     0,     0,   243,
    2083        0,     0,     0,     0,     0,     0,     0,     0,     0,   210,
    2084        0,     0,     0,   215,     0,     0,     0,     0,     0,     0,
    2085        8,     9,    10,    11,    12,     0,   344,   344,     0,   208,
    2086      351,   232,   234,   243,     0,    54,     0,     0,   352,   352,
    2087       54,   352,   352,     0,     0,     0,     0,    30,     0,     0,
    2088        0,     0,   392,     0,     0,     0,     0,     0,    84,   162,
    2089        0,    77,   411,   412,   269,     0,     0,   416,     0,   418,
    2090      419,     0,   208,  1149,    54,    33,     0,     0,     0,    75,
    2091       36,     0,   180,   181,    39,     0,    75,     0,     0,  1161,
    2092        0,    40,    41,   162,     0,     0,   352,   352,     0,     0,
    2093        0,     0,     0,   365,     0,     0,     0,   371,     0,     0,
    2094        0,     0,     0,     0,     0,     0,     0,   262,     0,     0,
    2095        0,     0,     0,     0,     0,     0,     0,   263,     0,     0,
    2096        0,     0,     0,   208,     0,   232,   234,   243,     0,    75,
    2097        0,   359,     0,     0,     0,     0,     0,     0,     0,     0,
    2098        0,   344,     0,     0,     0,     0,   162,     0,     0,   352,
    2099        0,     0,     0,     0,     0,     0,  1229,     0,   215,     0,
    2100        0,   208,     0,     0,     0,   208,     0,    54,     0,     0,
    2101        0,     0,     0,     0,     0,     0,   162,   458,     0,     0,
    2102        0,   501,     0,     0,   359,   359,     0,   359,   359,     0,
    2103       54,     0,   221,     0,     0,     0,     0,    54,     0,     0,
    2104      371,     0,     0,     0,     0,     0,     0,    84,   162,     0,
    2105        0,     0,     0,     0,    77,     0,     0,     0,     0,     0,
    2106        0,     0,     0,     0,     0,     0,     0,   352,     0,   352,
    2107      208,   458,     0,     0,   162,     0,     0,     0,     0,     0,
     1747     110,   146,    46,   147,    95,   393,   148,   447,   394,   378,
     1748     395,   111,   704,   422,   401,   402,   434,   885,   923,   396,
     1749     397,   731,   398,   399,   500,   836,   611,   263,   256,   965,
     1750     473,   861,   924,    46,   743,    95,   925,   140,   748,   844,
     1751     710,  1078,  1129,   630,    46,   832,    46,   634,   158,  1374,
     1752     113,   778,   837,  1137,  1171,    47,    46,    30,    30,   404,
     1753     838,   843,    46,   835,   189,    46,   699,   212,    46,   847,
     1754     222,   606,    30,   810,   120,   854,   215,   338,   108,   108,
     1755     984,  1436,   108,   276,   941,   393,    47,   530,   394,   149,
     1756     395,  1432,   671,   156,   401,   402,   923,   927,   150,   396,
     1757     397,  1181,   398,   399,   833,    30,    46,  1169,  1170,    46,
     1758     924,   419,   680,  1120,   925,    46,   198,   119,   403,   940,
     1759     684,   151,   248,   405,   405,  1199,    60,  1177,   286,   598,
     1760    -225,  -225,    30,   477,   479,   277,   413,  1195,   405,   770,
     1761     146,  1197,   147,  1447,   834,   148,    46,  1077,   158,   248,
     1762     325,    67,   254,  1178,    46,  1432,   968,    60,   156,    46,
     1763     199,   368,   478,   675,   677,  1436,  1394,  1395,   108,   483,
     1764    1436,   405,   139,   875,   875,   875,    30,   108,   521,   832,
     1765      54,    54,    67,    46,    46,  1187,   158,  1436,   507,   567,
     1766     473,   875,   319,   108,  1436,  -225,   160,  1066,   108,    46,
     1767     530,   335,   530,    30,   138,   669,   774,    46,  1246,   158,
     1768     473,    54,   141,    66,   208,   780,    46,   738,   473,    46,
     1769     146,   437,   147,   568,   143,   148,   731,   753,   149,  1085,
     1770    1396,  1327,   666,   667,   754,  1247,  1329,   150,   833,   747,
     1771     845,   864,   603,    54,    66,   865,    54,   467,  1171,    46,
     1772     424,    95,   836,   465,   428,   237,   240,   761,    53,   112,
     1773     151,   160,   589,    46,    46,   875,   158,   852,   152,   603,
     1774      46,   704,   832,   732,   821,   167,  1026,    46,   834,   837,
     1775     372,   530,   695,   697,   319,   450,   611,   838,   518,    53,
     1776    1013,   338,   741,  -455,  1323,   847,   373,  1171,  1025,   104,
     1777     104,   731,    47,  1508,   658,  1186,  1139,  1377,   674,   676,
     1778    1002,   887,  1394,  1395,   666,   667,   428,   870,   530,   490,
     1779    1517,   206,   814,  -455,   216,  -455,    46,  1521,   368,  -455,
     1780     104,   833,   673,   343,   173,  1457,  1509,  1201,   678,   523,
     1781     381,   888,   156,   645,    74,    46,    46,   889,   550,   165,
     1782    1169,  1170,   966,   551,   552,   875,   382,   429,  1192,  1078,
     1783    1522,  1178,    46,   916,   441,   104,    46,   108,   436,   136,
     1784     137,   834,   836,    60,  1119,    74,  1405,   866,   474,   478,
     1785     177,   867,   598,   462,   257,   844,   588,   258,   455,   595,
     1786     197,   108,    46,   136,   137,  -281,   521,    54,    67,   837,
     1787     521,   569,    46,   521,   368,   881,   848,   838,   628,   384,
     1788     851,   598,   632,  1171,   459,   335,   598,   752,   861,   429,
     1789      46,   108,  1187,   136,   234,   385,    46,    54,    46,  -109,
     1790     225,   868,   239,   386,   226,   871,  1381,   230,   578,   232,
     1791    1421,  1422,   525,    36,   579,   160,   241,    39,   243,   387,
     1792    -109,   338,    46,   246,    40,    41,   803,   235,  -109,  -109,
     1793      66,   473,   236,  -506,   169,  1077,   685,  1427,   110,   319,
     1794     319,   248,   579,   755,  -109,   435,    46,   756,   732,   829,
     1795     762,   603,  1157,  1159,    46,   722,   368,   -10,    46,   604,
     1796      95,   723,    46,   886,   433,  1242,   208,   450,  1107,   500,
     1797     450,  1088,  1121,   945,  1007,    53,   450,   249,   821,  1122,
     1798    1135,   388,   260,   758,   393,  1066,   739,   394,   113,   395,
     1799     553,   554,   740,   611,   401,   402,  1236,   389,   396,   397,
     1800     775,   398,   399,   758,   899,   781,  -431,  1026,   474,  -432,
     1801     705,    47,  1360,   490,  1093,   319,   104,   490,   485,   495,
     1802     646,   496,   699,   732,   326,   502,   706,   523,   474,   557,
     1803     558,   523,   707,   319,   523,  1358,   474,  1168,  1024,  1187,
     1804     897,   225,   705,   707,  1184,   335,  1187,  1184,   708,   906,
     1805     379,   749,   467,  1275,  1276,    94,  1312,   750,   919,   920,
     1806    1185,    74,    46,  1303,   559,   560,    74,  1093,   821,   272,
     1807     455,   411,  1313,   455,    46,  1367,    46,   343,   720,   455,
     1808     729,   274,    60,   338,   876,   877,    94,  1314,   866,   580,
     1809    1187,   405,  1103,   173,   431,    46,   208,   145,   319,    94,
     1810     709,   895,   275,  1315,   439,   459,   163,    67,  1404,   819,
     1811     631,    46,   595,  1321,   635,   185,   765,   366,    94,   704,
     1812    1322,    94,   766,   766,   896,    46,   898,  -102,    46,  1393,
     1813     525,  -102,  1401,  1029,   525,   969,    54,   525,   742,  1361,
     1814     746,   860,   910,   874,   874,   874,   595,   327,   766,  1037,
     1815     328,  1024,   869,   731,   108,   329,   136,   137,   338,  1463,
     1816     330,   874,    46,  1346,    46,   331,  1463,  1347,  1482,    66,
     1817    1082,   163,   522,  1435,  1487,   948,   367,   343,  1439,  -109,
     1818     225,  -109,   230,   555,   556,  -109,  1465,   571,  1466,   405,
     1819     744,  1504,   944,   561,   562,   745,  1511,   572,  1044,    94,
     1820    -109,  -109,  1115,  1456,   583,   323,   405,   335,    46,    46,
     1821    1505,   768,    94,   405,    53,     2,   202,     4,     5,     6,
     1822       7,   769,    46,   371,  1234,  1104,    74,   912,  1238,   450,
     1823     666,   667,   383,   766,  1506,   874,   392,   185,   695,   697,
     1824     391,   343,   949,   821,   603,   436,    74,   248,   325,   405,
     1825     992,  1004,   950,  1417,    74,   104,   993,   723,  1232,   490,
     1826      94,   413,   662,   405,   579,  1005,   403,   430,   598,   225,
     1827    1429,   420,    94,    34,   823,    35,   900,  1516,   405,   474,
     1828    1349,   421,   335,  1516,   720,   729,   343,   343,   343,   923,
     1829     882,   426,  1516,  1354,   766,   997,  1516,   323,   444,   766,
     1830      74,    46,    94,   924,   343,  1161,    36,   925,   179,   180,
     1831      39,    36,   457,    46,  1355,    39,   481,    40,    41,   682,
     1832     766,   474,    40,    41,  1357,   874,   483,   325,   405,   430,
     1833     766,   463,   455,  1480,  1429,    -3,   903,   208,   405,  1006,
     1834    1362,   464,   602,   819,   603,   460,   766,    42,   159,   108,
     1835     935,   208,   604,   724,   486,   163,   938,   144,   506,  1182,
     1836     729,  1064,  1418,  1437,   190,  1475,  1525,   213,  1415,   766,
     1837     223,  1476,   579,   863,   791,   792,   793,   794,   343,    94,
     1838       8,     9,    10,    11,    12,   108,    46,   136,   137,   878,
     1839     522,   845,   325,   603,   522,   514,  1141,   522,   405,   605,
     1840      46,   526,   600,   894,  1153,   732,   405,    30,    46,     2,
     1841     202,     4,     5,     6,     7,   286,  1156,   720,   603,   530,
     1842      36,    63,   114,  1158,    39,   603,    46,   720,   325,   405,
     1843      33,    40,    41,   819,  1328,  1330,  1331,   450,  1220,  1108,
     1844     405,   563,   720,   208,   931,   564,   931,   566,   159,   531,
     1845     532,   533,    63,  1294,  1295,   185,   736,  1415,  1416,  1131,
     1846     565,   369,   758,  -428,  1131,   157,   737,    34,   343,    35,
     1847     569,   571,   534,   405,   535,   343,   536,   490,  1110,   319,
     1848     334,   572,   323,   323,   732,   587,   159,   217,    60,   126,
     1849     590,   127,   128,   129,  1227,  1458,  1459,    74,   640,   969,
     1850     502,  1394,  1395,   969,   969,   696,   787,   788,   823,   159,
     1851     789,   790,  1131,    67,   659,   795,   796,   660,   661,   663,
     1852     664,   438,  1064,   668,   255,  1196,  1198,  1200,   860,   646,
     1853     665,   670,   253,   711,   688,   751,  1049,   713,  -229,    74,
     1854     455,    94,    54,   763,   767,   605,   771,   824,  1283,  1284,
     1855     826,  1286,   828,   908,   839,   884,  1494,  1290,   323,   891,
     1856    1293,   -12,   915,   883,   211,   324,   917,     8,     9,    10,
     1857      11,    12,   911,   255,   345,    66,   323,   913,   914,   918,
     1858     691,   238,    46,   939,     8,     9,    10,    11,    12,  -405,
     1859    -510,   953,   960,   740,    30,   962,   967,   973,   974,  1093,
     1860     977,   338,   978,   400,   979,   721,   976,   450,   819,    54,
     1861     999,    30,   988,  1000,  1001,   211,  1319,    33,   418,  1015,
     1862      53,   423,   425,  1016,  1017,   343,   157,   646,   369,  1018,
     1863    1019,  1020,  1021,   436,    33,  1032,  -393,  -392,  1079,   720,
     1864     720,   323,  1081,  1046,  1089,  1090,   474,   442,  1091,  1092,
     1865    1097,   445,  1096,   446,  1099,   600,  -282,   831,   211,   605,
     1866    1098,   104,   461,     8,     9,    10,    11,    12,    63,   215,
     1867    1100,    67,  1106,   475,  1116,   768,   766,   405,    46,  1064,
     1868     343,   343,  1117,   482,   862,   769,  1118,  1109,   982,   600,
     1869      30,   425,  1123,  1127,  1130,   720,   720,  1151,  1174,  1375,
     1870      54,  1172,  1173,  1375,   369,  1175,    74,  1190,  1176,  1108,
     1871     455,  1206,  1191,    33,  1400,  1131,  1131,  1131,   211,    36,
     1872    1193,   170,   171,    39,  1049,   335,  1194,  1202,   104,  1207,
     1873      40,    41,    36,  1189,   170,   171,    39,  1208,    -3,  1213,
     1874    1515,  1218,   729,    40,    41,   922,  1224,   696,  1110,   495,
     1875    1228,  1233,  1235,  1237,  1240,  -283,   211,  1413,   255,  1244,
     1876     211,   596,     8,     9,    10,    11,    12,   624,   367,  1064,
     1877    1248,  1253,  1251,  1255,    72,  1256,  1257,  1285,    53,  1258,
     1878     629,  1259,  1261,  1268,   629,   393,  1277,   255,   394,    30,
     1879     395,   831,   605,  1278,   401,   402,  1448,  1108,  1087,   396,
     1880     397,  1302,   398,   399,  1310,    72,    60,  1288,  1289,   208,
     1881    1291,   721,    33,  1316,  1292,   666,   667,  1299,  1318,   104,
     1882    1320,   729,  1325,  1064,  1324,  1326,  1064,  1332,  1333,  1281,
     1883    1334,    67,  1336,   475,  1342,  1308,  1110,  1343,    54,    54,
     1884     218,  1344,  1345,  1356,    46,    46,   211,  1352,   345,  1353,
     1885    1363,  1131,  1131,   475,  1493,  1295,  1366,  1368,  1369,  1371,
     1886      54,   475,  1378,  1381,    74,  1388,   720,  1064,  1389,  -394,
     1887    1392,  1403,  1064,  1407,   720,   720,   720,  1409,  1414,    54,
     1888    1423,  1419,  1424,   474,   831,  1449,  1428,   716,  1425,  1426,
     1889     425,  1108,  1433,    66,  1438,  1442,   605,  1064,  1347,  1440,
     1890    1444,  1446,  -284,   436,  1453,   730,  1451,    63,    67,     8,
     1891       9,    10,    11,    12,  1472,   425,   206,   216,   720,   425,
     1892     146,  1452,   147,   343,   343,   148,   211,   348,  1474,  1464,
     1893    1110,  1478,    54,  1479,  1486,  1498,    30,    54,    53,  1499,
     1894    1495,  1518,    46,  1203,   721,  1500,  1503,   255,   345,   909,
     1895    1510,  1064,  1512,   926,   721,  1524,  1064,  1109,   104,    33,
     1896     797,   799,  1470,    46,    46,   798,   158,    54,   800,   721,
     1897    1189,  1064,  1243,  1064,   801,   926,   211,  1064,   172,   104,
     1898    1064,  1406,  1481,   696,  1301,    46,  1064,   368,  1526,  1365,
     1899    1064,   696,  1470,   809,  1497,  1239,  1379,  1467,   104,  1212,
     1900     443,   686,   687,  1094,   932,  1045,  1095,  1126,   890,   605,
     1901     435,   629,   822,   955,   596,    53,   715,   319,   816,  1311,
     1902    1105,    72,   323,   734,    74,   841,    72,   806,   172,   210,
     1903     474,   172,   963,   807,   808,     0,     0,   474,     0,     0,
     1904     343,     0,     0,   596,     0,  1109,     0,     0,   596,     0,
     1905       0,     0,     0,     0,   629,    67,   104,   345,   345,   345,
     1906       0,    54,    67,     0,   996,  1471,    36,     0,   179,   180,
     1907      39,   862,     0,     0,     0,   345,   172,    40,    41,     0,
     1908     210,   474,   998,     0,    54,    75,   104,     0,     0,     0,
     1909       0,    54,  1003,   716,     0,  1471,     0,   211,     0,     0,
     1910       0,    74,   181,     0,   475,     0,    67,  1014,     0,   255,
     1911     730,     0,   182,   928,     0,     0,    75,  1189,     0,     0,
     1912     218,     0,  1412,   210,  1189,   211,     0,     0,     0,     0,
     1913     211,     0,     0,     0,     0,    54,     0,     0,   172,  1109,
     1914     407,     0,  1039,     0,     0,     0,   475,   415,     0,   345,
     1915       0,   219,    36,     0,   179,   180,    39,     0,   954,     0,
     1916       0,   425,    53,    40,    41,     0,   721,   721,  1189,    53,
     1917       0,     0,     0,     0,     0,     0,     0,  1364,     0,     0,
     1918     104,     0,     0,   210,   255,   730,    72,     0,   261,     0,
     1919     981,     0,   172,    36,     0,   170,   171,    39,   262,   172,
     1920       0,   348,     0,   104,    40,    41,    72,     0,     0,     0,
     1921     104,     0,     0,    53,    72,     0,     0,   211,     0,   407,
     1922       0,   210,   721,   721,     0,   210,   716,     0,     0,   371,
     1923     926,   211,     0,     0,     0,     0,   716,     0,   350,   345,
     1924     348,   629,     0,     0,  1012,   629,   822,     0,    74,     0,
     1925       0,   716,     0,     0,   104,    74,     0,     0,   348,  1138,
     1926      72,  1023,     8,     9,    10,    11,    12,   172,     0,     0,
     1927       0,     0,     0,     0,   577,     8,     9,    10,    11,    12,
     1928       0,     0,   581,     0,   172,   584,     0,     0,   172,    30,
     1929       0,     0,     0,     0,     0,     0,     0,     0,     0,    74,
     1930       0,   348,    30,     0,  1166,  1167,     0,     0,     0,  1039,
     1931       0,   210,    33,    63,     0,     0,     0,    36,     0,   179,
     1932     180,    39,     0,   211,  1468,    33,     0,     0,    40,    41,
     1933      36,     0,    75,     0,    39,   629,     0,    75,     0,     0,
     1934       0,    40,    41,     0,     0,     0,     0,   407,     0,     0,
     1935     172,   415,     0,   602,  1496,   603,     0,     0,     0,     0,
     1936    1215,  1216,  1309,   604,     0,   348,    42,     0,    77,     0,
     1937       0,  1102,     0,     0,     0,     0,   144,     0,     0,   425,
     1938     114,     0,   926,     0,     0,     0,     0,     0,     0,     0,
     1939       0,   210,     0,   721,  1523,    84,   345,     0,     0,    77,
     1940       0,   721,   721,   721,     0,     0,  1528,     0,     0,     0,
     1941     348,   348,   348,     0,     0,     0,     0,     0,     0,   511,
     1942       0,     0,     0,     0,     0,     0,    84,     0,   348,     0,
     1943     596,   219,   528,   529,   220,     0,   407,     0,     0,   926,
     1944     926,   210,     0,   423,   549,   721,   348,     0,   716,   716,
     1945       0,   345,   345,     0,     0,     0,     0,    72,     0,     0,
     1946       0,   221,     0,   348,     0,     8,     9,    10,    11,    12,
     1947       0,  1188,     2,   202,     4,     5,     6,     7,     0,     0,
     1948     529,     0,    36,     0,   179,   180,    39,     0,     0,     0,
     1949       0,     0,    30,    40,    41,     0,     0,    75,     0,    72,
     1950     224,     0,   348,     0,   716,   716,     0,     0,     0,     0,
     1951     629,     0,   350,   211,   172,    33,   529,    75,   690,     0,
     1952     405,   351,     0,     0,     0,    75,   577,   577,   692,     0,
     1953      34,  1335,    35,     0,     0,     0,     0,     0,   348,  1337,
     1954    1338,  1339,     0,     0,     0,     0,   481,   172,   358,     0,
     1955       0,   350,     0,     0,     0,     0,   949,     0,   603,     0,
     1956     323,     0,   210,   172,     0,     0,   950,   730,     0,   350,
     1957      36,    75,   179,   180,    39,     0,     0,   172,     0,   348,
     1958       0,    40,    41,  1370,     0,     0,   209,     0,     0,   348,
     1959     210,     0,   348,     0,     0,   210,   228,   218,     0,   348,
     1960       0,     0,     0,     0,   348,     0,  1491,     0,   405,     0,
     1961    1282,     0,   350,     0,   901,    77,  1492,     0,   904,     0,
     1962      77,    36,     0,   179,   180,    39,     0,   255,     0,     0,
     1963       0,    63,    40,    41,     0,     0,     0,   209,     0,   926,
     1964       0,     0,    84,     0,   716,     0,   730,    84,     0,     0,
     1965     114,   407,     0,     0,     0,     0,   926,   690,     0,   405,
     1966       0,     0,     0,     0,     0,   691,    72,   692,     0,     0,
     1967       0,     0,     0,     0,   172,   716,   350,     0,     0,     0,
     1968     209,     0,   210,   716,   716,   716,     0,     0,     0,   211,
     1969     784,   785,   786,     0,   345,   345,   210,   537,   538,   539,
     1970     540,   541,   542,   543,   544,   545,   546,     0,  1188,     0,
     1971       0,     0,     0,     0,   220,     0,     0,     0,     0,   926,
     1972     926,   350,   350,   350,     0,     0,     0,   716,     0,     0,
     1973     547,     0,     0,   529,     0,     0,     0,     0,   114,   350,
     1974     209,   221,     0,     0,     0,     0,     0,     0,     0,   348,
     1975       0,     0,     0,     0,     0,     0,     0,   350,     0,     8,
     1976       9,    10,    11,    12,   577,     0,     0,     0,    75,     0,
     1977       0,     0,     0,     0,   350,     0,     0,     0,   209,     0,
     1978      77,     0,   209,   211,     0,     0,    30,     0,   210,     0,
     1979       0,     0,     0,     0,     0,   351,     0,     0,   501,     0,
     1980      77,   348,   348,     0,   348,   348,     0,    84,    77,    33,
     1981      75,   345,     0,   350,    36,     0,   179,   180,    39,     0,
     1982       0,     0,   358,     0,    72,    40,    41,    84,     0,     0,
     1983       0,     0,   114,     0,   351,    84,     0,     0,   172,     0,
     1984       0,     0,     0,     0,     0,     0,     0,     0,     0,   350,
     1985     181,     0,   351,     0,    77,  1188,     0,   348,   348,     0,
     1986     182,   358,  1188,     0,     0,     0,   529,     0,   209,     0,
     1987       0,     0,     0,     0,     0,     0,     0,   407,     0,   358,
     1988       0,    84,     0,     0,     0,     0,     0,     0,     0,     0,
     1989     350,     0,     0,     0,     0,   351,     0,     0,     0,     0,
     1990     350,     0,     0,   350,     0,     0,  1188,     0,   219,     0,
     1991     350,   983,     0,  1513,     0,   350,     0,     0,     0,     0,
     1992     348,     0,   358,     0,   469,     2,   202,     4,     5,     6,
     1993       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     1994      17,    18,    19,    20,    21,    22,    23,    24,   209,     0,
     1995      25,    26,    27,     0,  1142,     0,     0,   529,    30,   351,
     1996       0,     0,     0,   218,     0,   209,     0,     0,     0,     0,
     1997    1154,     0,     0,     0,     0,     0,     0,    75,   210,     0,
     1998       0,    33,     0,    34,    72,    35,   358,     0,    37,    38,
     1999       0,     0,     0,     0,     0,     0,     0,   348,   209,   348,
     2000       0,     0,     0,     0,   351,   351,   351,     0,     0,     0,
     2001       0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
     2002      12,     0,   351,     0,     0,     0,     0,    -3,   348,     0,
     2003       0,   358,   358,   358,     0,     0,   348,   348,   348,     0,
     2004     351,     0,     0,    30,     0,  1221,     0,   348,   348,   358,
     2005       0,    77,     0,     0,     0,     0,     0,   351,     0,     0,
     2006     350,    72,     0,   164,     0,   168,    33,   358,   174,   175,
     2007     176,    36,   178,   179,   180,    39,     0,     0,    84,     0,
     2008     348,     0,    40,    41,   358,     0,     0,   229,     0,     0,
     2009       0,     0,     0,    77,     0,     0,   351,     0,     0,   244,
     2010     245,     0,     0,     0,     0,     0,     0,   690,     0,   405,
     2011       0,     0,   350,   350,     0,   350,   350,   692,     0,   209,
     2012      84,     0,     0,   358,     0,     0,     0,     0,     0,     0,
     2013     172,     0,   351,     0,     0,    75,     0,     0,     0,     0,
     2014       0,     0,     0,     0,     0,     0,     0,   209,     0,   529,
     2015       0,     0,   209,     0,   210,     0,     0,     0,     0,   358,
     2016       0,     0,     0,     0,   348,     0,     0,     0,   350,   350,
     2017       0,     0,     0,   351,     0,     0,     0,     8,     9,    10,
     2018      11,    12,     0,   351,     0,     0,   351,     0,     0,     0,
     2019     511,   220,     0,   351,     0,     0,     0,     0,   351,     0,
     2020     358,     0,     0,     0,    30,     0,     0,     0,    72,     0,
     2021     358,     0,     0,   358,     0,    72,     0,     0,   221,     0,
     2022     358,     0,     0,     0,     0,   358,     0,    33,     0,     0,
     2023       0,   350,    36,     0,   179,   180,    39,     0,     0,   209,
     2024       0,     0,     0,    40,    41,     0,     0,     0,   210,     0,
     2025       0,     0,     0,   209,     0,     0,     0,     0,     0,    72,
     2026      77,     8,     9,    10,    11,    12,     0,     0,  1491,     0,
     2027     405,     0,     0,   501,   219,     0,     0,     0,  1492,     0,
     2028       0,     0,     0,     0,     0,     0,     0,    84,    30,     0,
     2029       0,     0,     0,     0,     0,    75,   172,     0,     0,     0,
     2030       0,     0,     0,   529,     0,     0,     0,     0,   350,     0,
     2031     350,    33,     0,     0,     0,     0,    36,     0,   179,   180,
     2032      39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
     2033       0,     0,   123,   123,   123,     0,     0,     0,     0,   350,
     2034       0,     0,     0,   351,     0,   209,     0,   350,   350,   350,
     2035       0,     0,   261,   594,   601,     0,     0,     0,   350,   350,
     2036       0,     0,   262,     0,     0,   625,   626,     0,     0,     0,
     2037     358,     0,    75,     0,     0,     0,     0,     0,     0,     0,
     2038       0,     0,   121,   124,   125,     0,     0,     0,     0,     0,
     2039       0,   350,     0,     0,   162,   351,   351,     0,   351,   351,
     2040       0,     0,     0,   123,     0,   123,     0,     8,     9,    10,
     2041      11,    12,     0,   214,     0,     0,     0,     0,    77,     0,
     2042       0,     0,   358,   358,     0,   358,   358,     0,     0,   271,
     2043       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
     2044       0,     0,     0,     0,     0,    84,     0,     0,     0,     0,
     2045       0,   351,   351,   250,     0,   251,     0,    33,     0,   162,
     2046       0,     0,    36,     0,   268,     0,    39,     0,     0,     0,
     2047       0,     0,     0,    40,    41,   350,     0,     0,   358,   358,
     2048       0,     0,     0,     0,   123,     0,     0,     0,     0,     0,
     2049       0,     0,   123,   162,   123,   123,     0,     0,   736,   123,
     2050       0,   123,   123,   364,     0,     0,     0,   370,   737,     0,
     2051       0,     0,     0,     0,   351,     0,     0,     0,     0,    75,
     2052       0,     0,     0,     0,     0,   278,    75,   279,     0,     0,
     2053       0,     0,     0,     0,   390,   209,     0,     0,     0,     0,
     2054       0,   358,     0,     0,   409,   410,     0,     0,   280,   414,
     2055       0,   416,   417,     0,   281,   162,     0,   220,   282,     0,
     2056       0,   283,   284,   285,   286,    40,    41,   214,   287,   288,
     2057      75,   123,     0,     0,     0,     0,   289,     0,    77,     0,
     2058       0,     0,     0,     0,   221,   162,   456,     0,     0,     0,
     2059     290,   351,   374,   351,     0,     0,     0,     0,     0,   292,
     2060     376,   294,   295,   296,   297,    84,     0,     0,     0,   370,
     2061       0,     0,     0,  1204,     0,     0,     0,   162,   358,     0,
     2062     358,     0,   351,     0,     0,     0,     0,     0,     0,     0,
     2063     351,   351,   351,     0,     0,     0,     0,     0,     0,     0,
     2064     456,   351,   351,   162,     0,     0,     0,  1022,     0,   358,
     2065       8,     9,    10,    11,    12,    77,     0,   358,   358,   358,
     2066       0,     0,     0,     0,     0,     0,     0,     0,   358,   358,
     2067       0,     0,     0,     0,   351,     0,   278,    30,   279,     0,
     2068       0,     0,    84,     0,     0,     0,     0,     0,     0,     0,
     2069     599,     0,     0,     0,     0,   623,     0,     0,     0,   280,
     2070      33,   358,     0,     0,     0,   281,     0,     0,     0,   282,
     2071       0,   209,   283,   284,   285,   286,    40,    41,     0,   287,
     2072     288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
     2073     942,     0,   943,     0,     0,     0,     0,     0,     0,   946,
     2074     947,   290,     0,   374,   952,     0,     0,     0,     0,     0,
     2075     292,   817,   294,   295,   296,   297,   957,     0,   351,     0,
     2076       0,   961,     0,     0,     0,     0,     0,     0,     0,     0,
     2077     162,   162,     0,     0,     0,     0,     0,   364,     0,     0,
     2078       0,     0,     0,     0,     0,   358,   989,     0,     0,     0,
     2079       0,     0,     0,     0,     0,     0,     0,     0,   456,     0,
     2080       0,   456,    77,     0,     0,   209,     0,   456,     0,    77,
     2081       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2082      18,    19,    20,    21,    22,    23,    24,  -285,     0,    84,
     2083     594,     0,     0,     0,   733,     0,    84,    30,     0,     0,
     2084       0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
     2085       0,     0,     0,    77,     0,     0,     0,     0,   456,     0,
     2086      33,     0,   456,     0,   162,   456,     0,     0,     0,     0,
     2087       0,  -285,     0,     0,     0,     0,     0,   364,     0,     0,
     2088      84,     0,   123,   123,     0,     0,     0,  1033,  1034,  1035,
     2089    1036,     0,  1038,     0,     0,     0,     0,     0,     0,     0,
     2090       0,     0,     0,     0,     0,     0,     0,     0,  1080,     0,
     2091       0,     0,   123,     0,     0,   123,   123,     0,   123,     0,
     2092     123,   123,  1086,     0,     0,   123,   123,     0,     0,   162,
     2093       0,     0,   811,   812,     0,     0,     0,     0,     0,     0,
     2094       0,   364,     0,   599,     0,     0,   827,     0,     0,     0,
     2095       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2096       0,  1101,   846,     0,     0,   849,   850,     0,   853,     0,
     2097     855,   856,   599,     0,     0,   857,   858,   599,     0,     0,
     2098       0,     0,     0,     0,     0,     0,   364,   364,   364,     0,
     2099       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2100    1128,     0,     0,   123,   364,     0,     0,  1136,   123,   123,
     2101       0,  1140,     0,     0,   123,     0,  1144,     0,  1145,     0,
     2102       0,     0,  1147,  1148,  1149,     0,     0,  1152,     0,     0,
     2103       0,     0,     0,     0,     0,     0,  1164,     0,     0,   733,
     2104       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2105       0,     0,     0,     0,  1179,  1180,     0,     0,   933,   934,
     2106     456,     0,     0,     0,   936,     0,     0,     0,     0,     0,
     2107       0,     0,     0,     0,     0,     0,     0,     0,   364,  1209,
     2108     951,     0,  1211,     8,     9,    10,    11,    12,    13,    14,
     2109      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2110       0,     0,    25,    26,    27,     0,     0,   207,     0,     0,
     2111      30,     0,     0,     0,   733,     0,     0,   227,     0,   231,
     2112    1226,   233,     0,     0,     0,     0,  1230,  1231,   242,     0,
     2113       0,     0,     0,    33,     0,     0,     0,  1241,     0,     0,
     2114     203,    38,  1245,     0,     0,  1249,     0,  1250,     0,     0,
     2115    1252,     0,     0,     0,     0,     0,     0,     0,   207,     0,
     2116     231,   233,   242,  1260,     0,     0,     0,     0,   364,     0,
     2117       0,     0,   623,     0,     0,   364,  1267,     0,  1269,  1270,
     2118    1271,  1272,     0,     0,   267,     0,     0,     0,     0,     0,
     2119       0,     0,     0,     0,  1279,     0,  1280,     0,     0,     0,
     2120     168,   207,     0,     0,     0,     0,     0,     0,     0,     0,
     2121       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2122       0,     0,     0,     0,     0,     0,     0,     0,  1304,  1305,
     2123       0,     0,   201,     2,   202,     4,     5,     6,     7,     8,
     2124       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2125      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2126      27,   207,     0,   231,   233,   242,    30,     0,   456,     0,
     2127       0,     0,     0,     0,     0,   153,     0,     0,  1340,  1341,
     2128       0,     0,     0,     0,     0,     0,     0,     0,  1351,    33,
     2129       0,    34,     0,    35,    36,     0,   203,    38,    39,   207,
     2130       0,     0,     0,   207,     0,    40,    41,     0,     0,     0,
     2131     162,     0,     0,     0,     0,     0,     0,     0,     0,   499,
     2132       0,   247,     0,     0,     0,   364,     0,     0,     0,     0,
     2133      42,   252,   204,     0,     0,     0,  1380,     0,     0,     0,
     2134     205,     0,     0,     0,     0,     0,     0,     0,  1384,     0,
     2135    1385,  1386,  1387,     0,     0,     0,     0,     0,     0,   599,
     2136       0,     0,  1391,     0,     0,     0,     0,     0,   207,     0,
     2137       0,  1402,     0,     0,   278,     0,   279,     0,     0,     0,
     2138     364,   364,     0,  1410,     0,     0,   153,     0,     0,   207,
     2139       0,     0,   123,     0,   231,   233,     0,   280,     0,   380,
     2140       0,     0,   242,   281,     0,     0,     0,   282,     0,     0,
     2141     283,   284,   285,   286,    40,    41,     0,   287,   288,     0,
     2142       0,     0,   412,     0,     0,   289,     0,     0,     0,     0,
     2143       0,     0,     0,     0,  1454,  1455,   427,     0,   456,   290,
     2144       0,   374,  1217,     0,   207,   432,   772,  1460,   292,   376,
     2145     294,   295,   296,   297,  1460,   440,     0,     0,     0,     0,
     2146       0,     0,   207,     0,     0,     0,     0,   207,     0,   207,
     2147       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2148     466,     0,  1490,     0,     0,   476,   207,     0,     0,   207,
     2149     207,     0,     0,     0,     0,     0,   733,     0,   484,     0,
     2150       0,     0,     0,     0,   494,   207,   498,     0,     0,     0,
     2151    1514,     0,     0,     0,   123,     0,     0,     0,     0,   207,
     2152       0,     0,     0,   527,     0,     0,   207,     0,     0,     0,
     2153       0,     0,     0,     0,     0,     0,  1527,     0,   214,     0,
     2154       0,  1529,     0,     0,     0,     0,     0,     0,     0,     0,
     2155       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2156       0,     0,     0,     0,  1300,     0,   586,     0,     0,     0,
     2157       0,   591,     0,     0,     0,   733,     0,     0,     0,     0,
     2158       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2159      17,    18,    19,    20,    21,    22,    23,    24,     0,   637,
     2160      25,    26,    27,   638,   639,     0,   641,     0,    30,     0,
     2161       0,     0,   652,   653,     0,   654,   655,     0,   656,     0,
     2162     657,     0,  1162,   364,   364,     8,     9,    10,    11,    12,
     2163       0,    33,   214,     0,     0,     0,     0,   586,   203,    38,
     2164     207,     0,     0,     0,     0,   672,     0,     0,     0,     0,
     2165       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2166       0,     0,     0,     0,     0,     0,     0,     0,   207,     0,
     2167     683,     0,     0,   207,   280,    33,     0,     0,     0,     0,
     2168     281,   689,   622,     0,   282,     0,     0,   283,   284,   285,
     2169     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2170       0,     0,   289,     0,   725,     0,     0,     0,     0,     0,
     2171     728,     0,     0,     0,     0,   466,   290,     0,   374,     0,
     2172       0,     0,     0,     0,     0,   292,  1163,   294,   295,   296,
     2173     297,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2174     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2175       0,   764,     0,     0,   509,   510,   513,     0,     0,     0,
     2176     207,     0,     0,   516,   517,     0,     0,   779,   510,   510,
     2177       0,     0,     0,     0,   207,     0,     0,     0,     0,     0,
     2178     510,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2179       0,     0,     0,   456,   499,     0,     0,     0,     0,     0,
     2180       0,     0,     0,   805,   337,   359,     0,     0,     0,     0,
     2181       0,     0,   815,     0,     0,     0,   510,     0,     0,   818,
     2182       0,     0,     0,   456,   825,     0,     0,     0,     0,     0,
     2183       0,     0,     0,     0,     0,   840,     0,   408,     0,     0,
     2184       0,     0,     0,     0,   408,     0,     0,     0,   162,     0,
     2185       0,     0,   510,   207,     0,     0,     0,     0,     0,     0,
     2186       0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
     2187       0,     0,     0,     0,     0,     0,   880,     0,     0,     0,
     2188       0,     0,     0,  -505,     0,   207,     1,     2,     3,     4,
     2189       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2190      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2191       0,   825,    25,    26,    27,    28,   408,     0,    29,     0,
     2192      30,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     2193       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2194      32,     0,     0,    33,     0,    34,     0,    35,    36,     0,
     2195      37,    38,    39,     0,     0,     0,     0,     0,     0,    40,
     2196      41,     0,     0,     0,     0,     0,   247,     0,     0,     0,
     2197       0,   408,   207,     0,     0,     0,   958,   959,     0,   408,
     2198     582,     0,   408,   585,    42,     0,    43,     0,     0,   975,
     2199       0,     0,   359,     0,    44,     0,   615,     0,   207,     0,
     2200       0,     0,     0,     0,     0,     0,   990,     0,   991,     0,
     2201       0,     0,   995,     0,     0,   633,     0,     0,   337,     0,
     2202       0,     0,     0,     0,     0,   207,   510,   510,   510,   510,
     2203     510,   510,   510,   510,   510,   510,   510,   510,   510,   510,
     2204     510,   510,   510,   510,   408,     0,     0,     0,   408,   278,
     2205       0,   279,     0,     0,     0,     0,   207,     0,     0,     0,
     2206       0,     0,     0,     0,     0,     0,     0,   207,     0,   510,
     2207       0,     0,   280,     0,     0,     0,     0,  1027,   642,   359,
     2208     136,   137,   282,     0,  1028,   283,   643,   285,   286,    40,
     2209      41,     0,   287,   288,     0,     0,     0,  1030,     0,  1031,
     2210     289,     0,   408,     0,     0,     0,     0,     0,     0,     0,
     2211       0,     0,     0,  1043,   290,     0,   644,     0,   645,   375,
     2212    1047,     0,     0,   292,   376,   294,   295,   296,   297,     0,
     2213       0,     0,  1083,   408,     0,  1084,   359,     0,     0,     0,
     2214       0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
     2215       0,     0,     0,   591,     0,     0,     0,     0,     0,     0,
     2216       0,     0,     0,     0,     0,     0,     0,   510,     0,     0,
     2217       0,     0,     0,     0,     0,   408,     0,     0,   337,   359,
     2218       0,     0,     0,     0,     0,     0,     0,     0,     0,   510,
     2219       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2220     317,     0,   510,     0,     0,     0,     0,     0,     0,     0,
     2221     341,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,   377,   408,   408,     0,     0,     0,     0,     0,
     2223       0,     0,   207,     0,     0,     0,     0,     0,     0,     0,
     2224    1146,     0,   820,   359,     0,   359,     0,   510,     0,     0,
     2225       0,     0,     0,     0,   615,     0,   615,   615,     0,     0,
     2226       0,     0,     0,   615,     0,     0,     0,     0,     0,     0,
     2227       0,     0,     0,   859,   359,     0,     0,     0,   510,   359,
     2228       0,     0,     0,     0,     0,     0,     0,     0,   359,   359,
     2229     359,     0,   317,   510,     0,   527,     0,     0,     0,     0,
     2230       0,  1210,     0,     0,     0,     0,   359,     0,     0,     0,
     2231       0,   408,   902,     0,     0,   408,   905,   480,     0,     0,
     2232       0,     0,   907,     0,     0,     0,   207,     0,     0,     0,
     2233    1223,     0,     0,     0,     0,  1225,     0,     0,     0,     0,
     2234     337,   359,   408,  1229,   408,     0,     0,     0,   408,   201,
     2235       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     2236      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2237      22,    23,    24,  1254,     0,    25,    26,    27,     0,     0,
     2238     359,   615,     0,    30,     0,  1262,     0,     0,  1263,     0,
     2239    1264,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2240       0,     0,     0,     0,  1273,  1274,    33,     0,    34,     0,
     2241      35,     0,     0,   203,    38,   337,   359,     0,     0,     0,
     2242     408,   408,     0,     0,     0,     0,  1287,     0,     0,     0,
     2243       0,     0,   377,     0,     0,     0,     0,     0,     0,     0,
     2244       0,     0,     0,     0,   510,     0,     0,     0,     0,   204,
     2245       0,     0,  1306,     0,     0,     0,     0,   267,     0,     0,
     2246       0,   408,     0,     0,     0,     0,     0,     0,     0,     0,
     2247     359,     0,     0,   510,     0,     0,   820,   359,     0,     0,
     2248       0,   615,     0,   615,     0,   510,     0,     0,     0,     0,
     2249       0,     0,     0,   615,     0,     0,     0,     8,     9,    10,
     2250      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2251      21,    22,    23,    24,  -285,     0,    25,    26,    27,     0,
     2252       0,     0,     0,     0,    30,     0,   510,     0,     0,     0,
     2253       0,     0,     0,   727,     0,     0,     0,     0,     0,     0,
     2254       0,     0,     0,     0,  1372,     0,  1373,    33,     0,     0,
     2255       0,     0,    36,     0,   332,   333,    39,   207,  -285,  1382,
     2256       0,  1383,     0,    40,    41,     0,   820,     0,     0,     0,
     2257       0,   760,     0,     0,   408,     0,     0,     0,     0,  1390,
     2258     408,     0,     0,     0,   773,     0,     0,     0,   408,     0,
     2259     334,   760,     0,     0,     0,  1408,   510,     0,   109,     0,
     2260       0,   615,   615,  1411,   782,   783,  1229,     0,     8,     9,
     2261      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2262      20,    21,    22,    23,    24,  -286,   804,   359,  1434,     0,
     2263       0,     0,     0,   408,     0,    30,   813,  1441,     0,   510,
     2264    1443,  1445,     0,   341,     0,     0,     0,     0,   773,     0,
     2265       0,   408,  1143,   510,   510,     0,     0,     0,    33,     0,
     2266       0,   359,     0,     0,     0,     0,     0,   408,  1155,  -286,
     2267     615,   615,  1160,     0,     0,     0,     0,  1473,     0,  1229,
    21082268       0,     0,   359,   359,     0,     0,     0,     0,     0,     0,
    2109       54,   208,     0,     0,     0,     0,   232,   234,   352,     0,
    2110      123,   123,     0,     0,   243,     0,   352,   352,   352,     0,
    2111        0,     0,     0,     0,     0,     0,     0,   352,   352,     0,
    2112        0,   602,     0,     0,     0,     0,   626,     0,     0,     0,
    2113      123,    77,     0,   123,   123,   279,   123,   280,   123,   123,
    2114        0,     0,     0,   123,   123,   359,     0,   208,     0,     0,
    2115        0,     0,     0,     0,   352,     0,     0,     0,     0,     0,
    2116        0,     0,     0,   281,     0,   208,     0,     0,     0,   282,
    2117      208,     0,   208,   283,     0,     0,   284,   285,   286,   287,
    2118       40,    41,     0,   288,   289,     0,     0,     0,   222,   208,
    2119        0,   290,   208,   208,     0,     0,     0,     0,     0,     0,
    2120        0,     0,   162,   162,     0,     0,   510,     0,   208,   365,
    2121       84,     0,     0,     0,     0,   293,   377,   295,   296,   297,
    2122      298,   123,   208,   359,     0,   359,   123,   123,     0,   208,
    2123      458,     0,   123,   458,     0,     0,     0,     0,     0,   458,
    2124        0,     0,   352,     0,     0,     0,     0,     0,     0,     0,
    2125        0,     0,     0,     0,   359,     0,     0,     0,     0,     0,
    2126        0,     0,   359,   359,   359,     0,   736,     0,     0,     0,
    2127        0,     0,     0,   359,   359,     0,     0,     0,   162,     0,
    2128        0,     0,   815,   816,     0,     0,   153,    84,     0,     0,
    2129      458,    77,     0,     0,   458,     0,   162,   458,    77,     0,
    2130        0,     0,     0,     0,     0,     0,     0,     0,     0,   365,
    2131      359,     0,   850,     0,     0,   853,   854,     0,   857,     0,
    2132      859,   860,     0,     0,     0,   861,   862,     0,     0,     0,
    2133        0,     0,   248,     0,     0,     0,     0,     0,     0,     0,
    2134        0,     0,   253,     0,   208,     0,     0,     0,     0,     0,
    2135        0,    77,     0,     0,     0,     0,     0,     0,     0,     0,
    2136        0,     0,   162,     0,     0,     0,     0,     0,     0,     0,
    2137        0,     0,   208,     0,   365,     0,   602,   208,     0,   831,
     2269       0,     0,     0,     0,  1485,     0,     0,     0,   879,     0,
     2270       0,     0,     0,     0,     0,     0,   377,     2,   202,     4,
     2271       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2272      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2273       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2274      30,   820,   408,  1222,     0,     0,   341,     0,     0,     0,
     2275       0,     0,     0,     0,   615,     0,     0,     0,     0,     0,
     2276       0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
     2277     203,    38,     0,     1,     2,     3,     4,     5,     6,     7,
    21382278       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2139       18,    19,    20,    21,    22,    23,    24,   153,   359,    25,
    2140       26,    27,     0,     0,     0,   602,     0,    30,   937,   938,
    2141      602,   382,     0,     0,   940,     0,     0,     0,     0,   365,
    2142      365,   365,     0,     0,     0,     0,     0,     0,     0,     0,
    2143        0,     0,     0,     0,   414,    33,     0,   365,     0,     0,
    2144       36,     0,    37,    38,    39,     0,     0,    84,   429,     0,
    2145        0,    40,    41,     0,    84,     0,     0,   434,     0,     0,
    2146        0,     0,     0,     0,   208,     0,     0,   442,     0,     0,
    2147        0,     0,   736,     0,     0,     0,     0,    42,   208,   154,
    2148        0,   279,     0,   280,     0,     0,     0,    44,     0,     0,
    2149        0,     0,   468,   458,     0,     0,     0,   478,   501,     0,
    2150        0,     0,     0,     0,     0,     0,     0,    84,     0,   281,
    2151      486,   365,     0,   955,     0,   282,   496,     0,   500,   283,
    2152        0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
    2153      289,     0,     0,     0,     0,   529,     0,   290,     0,     0,
    2154        0,     0,     0,     0,     0,     0,     0,   736,     0,     0,
    2155        0,     0,   291,     0,   375,     0,     0,   376,   208,     0,
    2156        0,   293,   377,   295,   296,   297,   298,     0,     0,     0,
    2157        0,   208,     0,     0,     0,     0,     0,     0,   589,     0,
    2158        0,     0,     0,   594,     0,     0,     0,     0,     0,     0,
    2159      208,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2160        0,     0,   365,     0,     0,     0,   626,     0,     0,   365,
    2161        0,   640,     0,     0,   123,   641,   642,     0,   644,     0,
    2162        0,     0,     0,     0,     0,   655,   656,     0,   657,   658,
    2163        0,   659,     0,   660,     0,     0,     0,     0,     0,     0,
    2164        0,  1027,     0,     0,     8,     9,    10,    11,    12,     0,
    2165      589,     0,     0,     0,     0,     0,     0,     0,   675,     0,
     2279      18,    19,    20,    21,    22,    23,    24,     0,   359,    25,
     2280      26,    27,    28,     0,     0,    29,   266,    30,    31,     0,
     2281       0,     0,     0,     0,   622,     0,     0,     0,     0,     0,
     2282       0,   773,     0,   980,     0,     0,     0,    32,     0,   985,
     2283      33,     0,    34,     0,    35,    36,   994,    37,    38,    39,
     2284       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
     2285       0,     0,     0,   510,     0,     0,     0,     0,   337,     0,
    21662286       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2167      279,    30,   280,     0,     0,     0,     0,   208,     0,     0,
    2168        0,     0,     0,   686,     0,     0,     0,     0,     0,     0,
    2169        0,     0,     0,     0,   692,     0,     0,     0,   281,    33,
    2170        0,     0,   458,   208,   282,     0,     0,     0,   283,     0,
    2171        0,   284,   285,   286,   287,    40,    41,   728,   288,   289,
    2172        0,     0,     0,   731,     0,     0,   290,     0,   468,     0,
    2173      208,     0,     0,     0,     0,     0,     0,   123,     0,     0,
    2174        0,   291,     0,   375,   162,     0,     0,     0,     0,     0,
    2175      293,   821,   295,   296,   297,   298,     0,     0,     0,   365,
    2176        0,     0,   208,     0,   767,     0,     0,     0,     0,     0,
    2177        0,     0,     0,   208,     0,     0,     0,     0,     0,     0,
    2178      782,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2179        0,     0,     0,     0,   602,     0,  1225,     0,     0,  1169,
    2180        0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
    2181        0,     0,     0,     0,     0,   365,   365,   809,     0,     0,
    2182        0,     0,     0,     0,     0,   318,   819,     0,   279,    30,
    2183      280,     0,     0,   822,     0,   342,     0,     0,   829,     0,
    2184        0,     0,     0,     0,     0,     0,     0,   378,   378,   844,
    2185        0,     0,     0,     0,   208,     0,   281,    33,     0,     0,
    2186        0,     0,   282,     0,     0,     0,   283,     0,     0,   284,
    2187      285,   286,   287,    40,    41,   458,   288,   289,     0,     0,
    2188        0,     0,     0,     0,   290,     0,     0,     0,     0,     0,
    2189      884,     0,     0,     0,     0,     0,     0,     0,     0,   291,
    2190        0,   375,     0,     0,     0,     0,     0,     0,   293,  1170,
    2191      295,   296,   297,   298,     0,     0,     0,     0,   318,  1312,
    2192        0,     0,     0,     0,     0,   829,     0,   338,   360,     0,
    2193        0,     0,     0,   736,     0,     0,     0,     0,     0,     0,
    2194      208,     0,     0,   482,     8,     9,    10,    11,    12,    13,
    2195       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2196       24,   410,     0,    25,    26,    27,     0,     0,   410,     0,
    2197        0,    30,     0,     0,     0,   215,     0,     0,     0,     0,
    2198      248,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2199      962,   963,     0,     0,     0,     0,     0,     0,     0,    33,
    2200        0,     0,     0,   979,    36,     0,    37,    38,    39,     0,
    2201        0,     0,     0,   736,     0,    40,    41,     0,     0,     0,
    2202      994,     0,   995,     0,     0,     0,   999,     0,     0,     0,
    2203        0,     0,     0,     0,     0,   208,     0,     0,     0,     0,
    2204      410,    42,     0,    43,     0,     0,     0,     0,     0,     0,
    2205        0,    44,     0,     0,     0,     0,     0,     0,   378,     0,
    2206        0,   365,   365,     0,     0,     0,     0,     0,     0,     0,
    2207      215,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2208        0,   279,     0,   280,     0,     0,     0,     0,     0,     0,
    2209        0,     0,  1032,     0,     0,   410,     0,     0,     0,  1033,
    2210        0,     0,     0,   410,   585,     0,   410,   588,     0,   281,
    2211        0,     0,  1035,     0,  1036,   645,   360,   136,   137,   283,
    2212      618,     0,   284,   646,   286,   287,    40,    41,  1048,   288,
    2213      289,     0,     0,     0,     0,  1052,     0,   290,     0,   636,
    2214        0,     0,   338,     0,     0,     0,     0,  1090,     0,     0,
    2215     1091,     0,   291,     0,   647,     0,   648,   376,     0,     0,
    2216      730,   293,   377,   295,   296,   297,   298,     0,   594,   410,
    2217        0,     0,     0,   410,     0,     0,     0,     0,     0,     0,
    2218        0,     0,     0,     0,     0,     0,   365,     0,     0,     0,
    2219        0,     0,     0,     0,     0,     0,     0,     0,   763,     0,
    2220        0,     0,     0,     0,   360,     0,     0,     0,     0,     0,
    2221        0,   776,     0,     0,     0,     0,     0,     0,   763,     0,
    2222        0,   763,     0,     0,     0,     0,     0,   410,     0,     0,
    2223        0,     0,   786,   787,     0,     0,     0,     0,     0,     0,
    2224        0,     0,     0,     0,   458,     0,   458,     0,     0,     0,
    2225        0,     0,     0,     0,   808,     0,  1153,     0,   410,     0,
    2226        0,   360,     0,     0,   817,     0,     0,     0,     0,     0,
    2227        0,   342,     0,     0,     0,     0,   776,     0,     0,     0,
    2228        0,   458,     0,   458,     0,     0,     0,     0,     0,     0,
    2229        0,   208,     0,     0,     0,     0,     0,     0,     0,     0,
    2230      410,     0,     0,   338,   360,     0,     0,     0,     0,     0,
    2231        0,   162,   529,     0,     0,     0,     0,     0,     0,  1218,
    2232        0,     0,     0,     0,     0,     0,   883,     0,     0,     0,
    2233        0,     0,     0,     0,   378,     0,     0,     0,     0,     0,
    2234        0,     0,     0,     0,     0,     0,     0,     0,  1231,   410,
    2235      410,     0,     0,  1233,     0,     0,     0,     0,     0,     0,
    2236        0,  1237,     0,     0,     0,     0,     0,     0,   824,   360,
    2237        0,   360,     0,     0,   342,     0,     0,     0,     0,     0,
    2238      618,     0,   618,   618,     0,     0,     0,     0,     0,   618,
    2239        0,  1262,     0,     0,     0,     0,     0,     0,     0,   863,
    2240      360,     0,     0,  1270,     0,   360,  1271,     0,  1272,     0,
    2241        0,     0,     0,     0,   360,   360,   360,     0,     0,     0,
    2242        0,     0,  1281,  1282,     0,     0,     0,     0,     0,     0,
    2243        0,     0,   360,     0,     0,     0,     0,   410,   906,     0,
    2244        0,   410,   909,     0,  1295,     0,     0,     0,   911,   776,
    2245        0,   984,     0,     0,     0,     0,     0,   989,     0,     0,
    2246        0,     0,     0,     0,   998,     0,   338,   360,   410,     0,
    2247      410,  1318,     0,     0,   410,     0,     8,     9,    10,    11,
     2287     510,    42,     0,    43,     0,     0,     0,   359,     0,  1010,
     2288    1011,    44,   341,     0,     0,     0,     0,     0,     0,     0,
     2289       0,     0,     0,     0,     0,     0,     0,   341,     0,     0,
     2290       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2291      18,    19,    20,    21,    22,    23,    24,     0,     0,     0,
     2292       0,     0,     0,     0,     0,   359,   359,    30,     0,     0,
     2293       0,     0,     0,   510,   510,     0,     0,  1041,     0,     0,
     2294       0,   377,     0,     0,     0,     0,     0,     0,     0,     0,
     2295      33,     0,     0,     0,     1,     2,   202,     4,     5,     6,
     2296       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2297      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2298      25,    26,    27,    28,     0,     0,    29,   278,    30,  1050,
     2299    1051,     0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,
     2300    1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
     2301     280,    33,     0,    34,     0,    35,   642,   317,    37,    38,
     2302     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2303     287,   288,  1124,  1125,     0,     0,     0,     0,   289,   377,
     2304       0,     0,   359,     0,     0,   985,     0,     0,  1134,     0,
     2305     760,     0,   290,     0,  1063,     0,   278,   167,   279,     0,
     2306       0,   292,   293,   294,   295,   296,   297,     0,     0,  1150,
     2307       0,     0,     0,     0,     0,  -126,     0,     0,     0,   280,
     2308    1165,     0,     0,     0,     0,   281,     0,     0,     0,   282,
     2309       0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
     2310     288,     0,   377,     0,  1183,     0,     0,   289,     0,     0,
     2311       0,     0,     0,     0,     0,     0,     0,     0,     0,  1205,
     2312       0,   290,   408,   374,     0,     0,   375,     0,     0,     0,
     2313     292,   376,   294,   295,   296,   297,     0,   278,  1214,   279,
     2314    1051,     0,  1052,   408,   408,  1053,  1054,  1055,  1056,  1057,
     2315    1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
     2316     280,     0,     0,     0,     0,   408,   642,     0,     0,     0,
     2317     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2318     287,   288,     0,     0,   985,     0,     0,     0,   289,     0,
     2319       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2320       0,     0,   290,   879,   374,     0,     0,   167,     0,     0,
     2321       0,   292,   376,   294,   295,   296,   297,     0,  1265,  1266,
     2322       0,     0,     1,     2,   202,     4,     5,     6,     7,     8,
     2323       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2324      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2325      27,    28,     0,     0,    29,   278,    30,   279,     0,     0,
     2326       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2327       0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
     2328       0,    34,     0,    35,   281,     0,    37,    38,   282,     0,
     2329       0,   283,   284,   285,   286,    40,    41,   985,   287,   288,
     2330       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2331       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2332     290,     0,  1063,     0,     0,     0,     0,     0,     0,   292,
     2333     293,   294,   295,   296,   297,     0,     0,     0,     0,     0,
     2334       0,     0,     0,  -126,     1,     2,   202,     4,     5,     6,
     2335       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2336      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2337      25,    26,    27,    28,     0,     0,    29,   278,    30,   279,
     2338       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2339       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2340     280,    33,     0,    34,     0,    35,   281,     0,    37,    38,
     2341     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2342     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2343       0,     0,     0,     0,     0,     0,     0,     0,  1420,     0,
     2344       0,     0,   290,     0,    43,     0,     0,     0,     0,     0,
     2345       0,   292,   293,   294,   295,   296,   297,     2,   202,     4,
     2346       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2347      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2348       0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
     2349      30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
     2350       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2351    1477,     0,   280,    33,     0,    34,     0,    35,   281,     0,
     2352      37,    38,   282,     0,     0,   283,   284,   285,   286,    40,
     2353      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2354     289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2355       0,     0,     0,     0,   290,   317,   339,     0,     0,     0,
     2356       0,   772,     0,   292,   340,   294,   295,   296,   297,     2,
     2357     202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2358      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2359      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2360       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2361       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2362       0,     0,     0,     0,   280,    33,     0,    34,     0,    35,
     2363     281,     0,    37,    38,   282,     0,     0,   283,   284,   285,
     2364     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2365       0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
     2366       0,     0,     0,     0,     0,     0,   290,     0,   921,     0,
     2367       0,     0,     0,   772,     0,   292,   340,   294,   295,   296,
     2368     297,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2369      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2370      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2371       0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
     2372       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2373       0,     0,     0,     0,     0,     0,   280,    33,     0,    34,
     2374       0,    35,   281,     0,    37,    38,   282,     0,     0,   283,
     2375     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2376       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2377       0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
     2378     921,     0,     0,     0,     0,   772,     0,   292,   593,   294,
     2379     295,   296,   297,     2,   202,     4,     5,     6,     7,     8,
     2380       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2381      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2382      27,     0,     0,     0,     0,   278,    30,   279,     0,     0,
     2383       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2384       0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
     2385       0,    34,     0,    35,   281,     0,    37,    38,   282,     0,
     2386       0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
     2387       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2388       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2389     290,     0,   339,     0,     0,     0,     0,     0,     0,   292,
     2390     340,   294,   295,   296,   297,     2,   202,     4,     5,     6,
     2391       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2392      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2393      25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
     2394       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2395       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2396     280,    33,     0,    34,     0,    35,   281,     0,    37,    38,
     2397     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2398     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2399       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2400       0,     0,   290,     0,   921,     0,     0,     0,     0,     0,
     2401       0,   292,   340,   294,   295,   296,   297,     2,   202,     4,
     2402       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2403      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2404       0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
     2405      30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
     2406       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2407       0,     0,   280,    33,     0,    34,     0,    35,   281,     0,
     2408     203,    38,   282,     0,     0,   283,   284,   285,   286,    40,
     2409      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2410     289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2411       0,     0,     0,     0,   290,     0,  1008,     0,     0,     0,
     2412       0,     0,     0,   292,  1009,   294,   295,   296,   297,     2,
     2413     202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2414      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2415      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2416       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2417       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2418       0,     0,     0,     0,   280,    33,     0,    34,     0,    35,
     2419     281,     0,   203,    38,   282,     0,     0,   283,   284,   285,
     2420     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2421       0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
     2422       0,     0,     0,     0,     0,     0,   290,     0,   374,     0,
     2423       0,     0,     0,     0,     0,   292,   376,   294,   295,   296,
     2424     297,     1,     2,     3,     4,     5,     6,     7,     8,     9,
     2425      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2426      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2427      28,     0,     0,    29,     0,    30,    31,     0,     0,     0,
     2428       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2429       0,     0,     0,     0,     0,    32,     0,     0,    33,     0,
     2430      34,     0,    35,    36,     0,    37,    38,    39,     0,     0,
     2431       0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
     2432       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2433       0,     0,     0,     0,     0,     0,     0,     0,     0,    42,
     2434       0,    43,     0,     0,     0,  -509,     0,     0,     0,    44,
     2435       1,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2436      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2437      21,    22,    23,    24,  -285,     0,    25,    26,    27,    28,
     2438       0,     0,    29,     0,    30,     0,     0,     0,     0,     0,
     2439       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2440       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2441       0,    35,     0,     0,    37,    38,     0,     0,  -285,     1,
     2442       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     2443      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2444      22,    23,    24,     0,     0,    25,    26,    27,    28,     0,
     2445      43,    29,     0,    30,     0,     0,     0,     0,   109,     0,
     2446       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2447       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2448      35,     0,     0,    37,    38,     2,   202,     4,     5,     6,
     2449       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2450      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2451      25,    26,    27,     0,     0,     0,     0,     0,    30,    43,
     2452       0,     0,     0,     0,     0,     0,     0,   109,     0,     0,
     2453       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2454       0,    33,     0,    34,     0,    35,    36,     0,   203,    38,
     2455      39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
     2456       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2457       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2458       0,     0,    42,     0,   204,     0,     0,     0,     0,     0,
     2459       0,     0,   205,     2,   202,     4,     5,     6,     7,     8,
     2460       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2461      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2462      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
     2463       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2464       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2465       0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
     2466       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    22482467      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    22492468      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2250        0,     0,     0,    30,   450,     0,   360,   618,  1015,  1016,
    2251        0,   342,     0,     0,     0,     0,     0,     0,     0,     0,
    2252        0,     0,     0,     0,     0,     0,   342,     0,     0,     0,
    2253        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2254        0,   338,   360,     0,     0,     0,   410,   410,     0,     0,
     2469       0,  -390,   679,    30,     0,     0,     0,     0,     0,     0,
     2470     627,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2471       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2472      35,     0,     0,    37,    38,     0,     0,     0,     0,     0,
    22552473       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2256        0,     0,     0,     0,     0,     0,  1046,  1388,     0,  1389,
    2257      378,     0,     0,     0,     0,   451,     0,     0,     0,   706,
    2258        0,     0,  1398,   109,  1399,     0,     0,     0,   410,     0,
    2259        0,     0,     0,     0,     0,     0,     0,   360,     0,     0,
    2260        0,     0,  1406,   824,   360,     0,     0,     0,   618,     0,
    2261      618,     0,     0,     0,   511,   512,   515,     0,  1424,  1426,
    2262      618,     0,     0,   518,   519,     0,     0,     0,   512,   512,
    2263     1432,     0,     0,  1237,     0,     0,     0,     0,     0,     0,
    2264      512,     0,     0,     0,     0,     0,   318,     0,     0,     0,
    2265        0,     0,     0,     0,     0,  1455,     0,     0,     0,     0,
    2266        0,  1131,  1132,     0,  1462,     0,     0,  1464,   378,  1466,
    2267     1468,  1470,     0,     0,   989,     0,   512,  1141,     0,   763,
     2474       0,     0,     0,     0,     0,  1348,     0,     0,     0,     0,
     2475       0,     0,     0,     0,     0,     0,     0,     0,     0,   679,
     2476       0,     0,     0,     0,     0,     0,     0,   627,     2,   202,
     2477       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2478      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2479      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2480       0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
     2481      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2482       0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
     2483       0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
    22682484       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2269        0,     0,     0,   824,     0,     0,     0,     0,     0,  1157,
    2270        0,   410,     0,     0,     0,     0,     0,   410,     0,     0,
    2271     1172,  1501,   512,  1503,     0,   410,  1237,     0,     0,     0,
    2272        0,     0,     0,     0,     0,     0,     0,     0,   618,   618,
    2273        0,  1515,   378,     0,  1190,     0,     0,     0,     0,     0,
    2274        0,     0,     0,     0,     0,     0,     0,     0,     0,   989,
    2275      989,     0,     0,     0,   360,     0,     0,     0,     0,     0,
    2276      410,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2277     1222,     0,     0,     0,     0,     0,     0,     0,     0,   410,
    2278     1150,   279,     0,   280,     0,     0,     0,     0,     0,   360,
    2279        0,     0,     0,     0,     0,   410,  1162,     0,   618,   618,
    2280     1167,     0,     0,     0,     0,     0,     0,     0,     0,   281,
    2281      360,   360,     0,     0,     0,   282,   989,     0,     0,   283,
    2282        0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
    2283      289,     0,     0,     0,     0,   883,     0,   290,     0,     0,
    2284        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2285     1273,  1274,   291,     0,   375,     0,     0,     0,     0,     0,
    2286      806,   293,   377,   295,   296,   297,   298,     0,     0,     0,
    2287        0,   824,   410,  1230,     0,     0,     0,     0,     0,     0,
    2288        0,     0,     0,     0,   618,     0,     0,     0,   512,   512,
    2289      512,   512,   512,   512,   512,   512,   512,   512,   512,   512,
    2290      512,   512,   512,   512,   512,   512,     0,     0,     0,     0,
    2291        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2292        0,     0,     0,     0,     0,     0,     0,     0,   360,     0,
    2293      989,   512,  -514,     0,     0,     1,     2,     3,     4,     5,
    2294        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2295       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2296        0,    25,    26,    27,    28,     0,     0,    29,     0,    30,
    2297       31,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2298       17,    18,    19,    20,    21,    22,    23,    24,   338,     0,
    2299        0,  1381,     0,   763,    32,     0,     0,    33,    30,    34,
    2300        0,    35,    36,     0,    37,    38,    39,     0,   360,     0,
    2301        0,     0,     0,    40,    41,     0,     0,     0,     0,     0,
    2302        0,     0,     0,     0,     0,     0,    33,     0,     0,   512,
    2303        0,     0,     0,     0,     0,     0,     0,     0,     0,    42,
    2304        0,    43,     0,     0,     0,     0,     0,     0,     0,    44,
    2305        0,   512,     0,     0,     0,     0,   360,   360,     0,     0,
    2306        0,     0,     0,     0,   512,     0,     0,     0,     0,     0,
    2307        0,     0,     0,     0,     0,     0,     0,     0,     0,  1441,
    2308        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2309        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2310        0,     0,     0,     0,     0,     0,     0,     0,     0,   512,
    2311        0,     0,     0,     0,     0,     0,     1,     2,   203,     4,
    2312        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2313       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2314        0,   512,    25,    26,    27,    28,     0,     0,    29,   279,
    2315       30,   280,     0,     0,     0,     0,   512,     0,     0,     0,
    2316        0,  1507,     0,     0,     0,     0,     0,     0,     0,     0,
    2317        0,     0,     0,     0,     0,     0,     0,   281,    33,     0,
    2318       34,   360,    35,   282,     0,    37,    38,   283,     0,     0,
    2319      284,   285,   286,   287,    40,    41,     0,   288,   289,     0,
    2320        0,     0,     0,     0,     0,   290,     0,     0,     0,     0,
    2321        0,     0,     0,   318,     0,     0,     0,     0,     0,     0,
    2322      291,     0,  1069,     0,     0,     0,     0,     0,     0,   293,
    2323      294,   295,   296,   297,   298,     0,     0,     0,     0,     0,
    2324        0,     0,     0,  -127,     0,     0,     0,     0,     0,     0,
    2325        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2326        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2327        0,   410,   471,     2,   203,     4,     5,     6,     7,     8,
    2328        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2329       19,    20,    21,    22,    23,    24,   410,   410,    25,    26,
    2330       27,     0,     0,     0,     0,     0,    30,   512,     0,     0,
    2331        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2332        0,   410,     0,     0,     0,     0,     0,     0,     0,     0,
    2333        0,     0,     0,     0,    33,     0,    34,   512,    35,     0,
    2334        0,    37,    38,     0,     0,     0,     0,     0,     0,   512,
    2335        1,     2,   203,     4,     5,     6,     7,     8,     9,    10,
    2336       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2337       21,    22,    23,    24,     0,     0,    25,    26,    27,    28,
    2338        0,    -3,    29,   279,    30,  1055,  1056,     0,  1057,     0,
    2339      512,  1058,  1059,  1060,  1061,  1062,  1063,  1064,  1065,     0,
    2340        0,     0,  1066,     0,     0,     0,  1067,  1068,     0,    32,
    2341        0,   281,    33,     0,    34,     0,    35,   645,     0,    37,
    2342       38,   283,     0,     0,   284,   285,   286,   287,    40,    41,
    2343        0,   288,   289,     0,     0,     0,     0,     0,     0,   290,
    2344        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2345        0,     0,     0,     0,   291,     0,  1069,     0,     0,   168,
    2346        0,     0,   512,   293,   294,   295,   296,   297,   298,     0,
    2347        0,     0,     0,  1070,     0,     0,     0,  -127,     0,     0,
    2348        1,     2,   203,     4,     5,     6,     7,     8,     9,    10,
    2349       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2350       21,    22,    23,    24,     0,   512,    25,    26,    27,    28,
    2351        0,     0,    29,   279,    30,   280,     0,     0,     0,   512,
    2352      512,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2353       17,    18,    19,    20,    21,    22,    23,    24,  -292,     0,
    2354        0,   281,    33,     0,    34,     0,    35,   282,    30,    37,
    2355       38,   283,     0,     0,   284,   285,   286,   287,    40,    41,
    2356        0,   288,   289,     0,     0,     0,     0,     0,     0,   290,
    2357        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2358        0,     0,     0,     0,   291,     0,    43,  -292,     0,     0,
    2359        0,     0,     0,   293,   294,   295,   296,   297,   298,     2,
    2360      203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2361       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2362       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2363        0,   279,    30,   280,     8,     9,    10,    11,    12,    13,
    2364       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2365       24,  -292,     0,    25,    26,    27,     0,     0,     0,   281,
    2366       33,    30,    34,     0,    35,   282,     0,    37,    38,   283,
    2367        0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
    2368      289,     0,     0,     0,     0,     0,     0,   290,     0,    33,
    2369        0,     0,     0,     0,    36,     0,   333,   334,    39,     0,
    2370     -292,     0,   291,     0,   340,    40,    41,     0,     0,   775,
    2371        0,   293,   341,   295,   296,   297,   298,     0,     0,     0,
    2372        0,     0,     0,     0,     0,     0,     0,     0,   512,     0,
    2373        0,   639,     0,   335,     0,     0,     0,     0,     0,     0,
    2374        0,   630,     0,     0,     0,   512,     0,     2,   203,     4,
    2375        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2376       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2377        0,     0,    25,    26,    27,     0,     0,     0,     0,   279,
    2378       30,   280,     8,     9,    10,    11,    12,    13,    14,    15,
    2379       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2380        0,    25,    26,    27,     0,     0,     0,   281,    33,    30,
    2381       34,     0,    35,   282,     0,    37,    38,   283,   512,   512,
    2382      284,   285,   286,   287,    40,    41,     0,   288,   289,     0,
    2383        0,     0,     0,     0,     0,   290,     0,    33,     0,     0,
    2384        0,     0,     0,     0,   204,    38,     0,     0,     0,     0,
    2385      291,     0,   925,     0,     0,     0,     0,   775,     0,   293,
    2386      341,   295,   296,   297,   298,     2,   203,     4,     5,     6,
    2387        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2388       17,    18,    19,    20,    21,    22,    23,    24,     0,   268,
    2389       25,    26,    27,     0,     0,     0,     0,   279,    30,   280,
    2390        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2391       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2392       26,    27,     0,     0,     0,   281,    33,    30,    34,     0,
    2393       35,   282,     0,    37,    38,   283,     0,     0,   284,   285,
    2394      286,   287,    40,    41,     0,   288,   289,     0,     0,     0,
    2395        0,     0,     0,   290,     0,    33,     0,     0,     0,     0,
    2396        0,     0,   204,    38,     0,     0,     0,     0,   291,     0,
    2397      925,     0,     0,     0,     0,   775,     0,   293,   596,   295,
    2398      296,   297,   298,     2,   203,     4,     5,     6,     7,     8,
    2399        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2400       19,    20,    21,    22,    23,    24,     0,   625,    25,    26,
    2401       27,     0,     0,     0,     0,   279,    30,   280,     8,     9,
    2402       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2403       20,    21,    22,    23,    24,  -293,     0,     0,     0,     0,
    2404        0,     0,     0,   281,    33,    30,    34,     0,    35,   282,
    2405        0,    37,    38,   283,     0,     0,   284,   285,   286,   287,
    2406       40,    41,     0,   288,   289,     0,     0,     0,     0,     0,
    2407        0,   290,     0,    33,     0,     0,     0,     0,     0,     0,
    2408        0,     0,     0,     0,  -293,     0,   291,     0,   340,     0,
    2409        0,     0,     0,     0,     0,   293,   341,   295,   296,   297,
    2410      298,     2,   203,     4,     5,     6,     7,     8,     9,    10,
    2411       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2412       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2413        0,     0,     0,   279,    30,   280,     8,     9,    10,    11,
    2414       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2415       22,    23,    24,     0,     0,    25,    26,    27,   489,   490,
    2416      491,   281,    33,    30,    34,     0,    35,   282,     0,    37,
    2417       38,   283,     0,     0,   284,   285,   286,   287,    40,    41,
    2418        0,   288,   289,     0,     0,     0,     0,     0,     0,   290,
    2419        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2420        0,     0,     0,     0,   291,     0,   925,     0,     0,     0,
    2421        0,     0,     0,   293,   341,   295,   296,   297,   298,     2,
    2422      203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2423       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2424       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2425        0,   279,    30,   280,     8,     9,    10,    11,    12,    13,
    2426       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2427       24,     0,     0,    25,    26,    27,     0,     0,     0,   281,
    2428       33,    30,    34,     0,    35,   282,     0,   204,    38,   283,
    2429        0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
    2430      289,     0,     0,     0,     0,     0,     0,   290,     0,    33,
    2431        0,     0,     0,     0,   108,     0,    37,    38,     0,     0,
    2432        0,     0,   291,     0,  1013,     0,     0,     0,     0,     0,
    2433        0,   293,  1014,   295,   296,   297,   298,     2,   203,     4,
    2434        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2435       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2436        0,     0,    25,    26,    27,     0,     0,     0,     0,   279,
    2437       30,   280,     8,     9,    10,    11,    12,    13,    14,    15,
    2438       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2439        0,    25,    26,    27,     0,     0,     0,   281,    33,    30,
    2440       34,     0,    35,   282,     0,   204,    38,   283,     0,     0,
    2441      284,   285,   286,   287,    40,    41,     0,   288,   289,     0,
    2442        0,     0,     0,     0,     0,   290,     0,    33,     0,     0,
    2443        0,     0,     0,     0,    37,    38,     0,     0,     0,     0,
    2444      291,     0,   375,     0,     0,     0,     0,     0,     0,   293,
    2445      377,   295,   296,   297,   298,     1,     2,     3,     4,     5,
    2446        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2447       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2448        0,    25,    26,    27,    28,     0,     0,    29,     0,    30,
    2449       31,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2450       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2451       25,    26,    27,     0,    32,     0,     0,    33,    30,    34,
    2452        0,    35,    36,     0,    37,    38,    39,     0,     0,     0,
    2453        0,     0,     0,    40,    41,     0,     0,     0,     0,     0,
    2454        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2455        0,     0,     0,   204,    38,     0,     0,     0,     0,    42,
    2456        0,    43,     0,     0,     0,  -518,     0,     0,     0,    44,
    2457        1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
    2458       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2459       21,    22,    23,    24,     0,     0,    25,    26,    27,    28,
    2460        0,     0,    29,     0,    30,    31,     0,     0,     0,     0,
    2461        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2462        0,     0,     0,     0,     0,     0,     0,     0,     0,    32,
    2463        0,     0,    33,     0,    34,     0,    35,    36,     0,    37,
    2464       38,    39,     0,     0,     0,     0,     0,     0,    40,    41,
    2465        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2466        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2467        0,     0,     0,     0,    42,     0,    43,     0,     0,     0,
    2468        0,     0,     0,     0,    44,   202,     2,   203,     4,     5,
     2485       0,     0,    33,  1350,     0,     0,     0,   108,     0,    37,
     2486      38,     0,     0,     0,     0,     0,     0,   679,     0,     0,
     2487       0,     0,     0,     0,     0,   627,     2,   202,     4,     5,
    24692488       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    24702489      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     
    24722491       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24732492       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2493       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2494      38,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2495      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2496      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2497       0,     0,     0,     0,    30,   679,     0,     0,     0,     0,
     2498       0,     0,     0,   627,     0,     0,     0,     0,     0,     0,
    24742499       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2475        0,    35,    36,     0,   204,    38,    39,     0,     0,     0,
    2476        0,     0,     0,    40,    41,     0,     0,     0,     0,     0,
     2500       0,    35,     0,     0,    37,    38,     2,   202,     4,     5,
     2501       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2502      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2503       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2504     592,     0,     0,     0,     0,     0,     0,     0,   627,     0,
    24772505       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2478        0,     0,     0,     0,     0,     0,     0,     0,     0,    42,
    2479        0,   205,     0,     0,     0,     0,     0,     0,     0,   206,
    2480        1,     2,   203,     4,     5,     6,     7,     8,     9,    10,
     2506       0,     0,    33,     0,    34,     0,    35,     0,     0,   203,
     2507      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2508      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2509      25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
     2510       0,     0,     0,     0,     0,   204,     0,     0,     0,     0,
     2511       0,     0,     0,   267,     0,     0,     0,     0,     0,     0,
     2512     280,    33,     0,     0,     0,     0,   281,     0,    37,    38,
     2513     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2514     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2515       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2516       0,     0,   290,     0,   519,     0,     0,   167,     0,     0,
     2517       0,   292,   293,   294,   295,   296,   297,     8,     9,    10,
    24812518      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2482       21,    22,    23,    24,  -292,     0,    25,    26,    27,    28,
    2483        0,     0,    29,     0,    30,     0,     0,     0,     0,     0,
     2519      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2520       0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
     2521       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2522       0,     0,     0,     0,     0,     0,   280,    33,     0,     0,
     2523       0,     0,   281,     0,    37,    38,   282,     0,     0,   283,
     2524     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2525       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2526       0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
     2527     592,    -3,     0,     0,     0,     0,     0,   292,   593,   294,
     2528     295,   296,   297,     8,     9,    10,    11,    12,    13,    14,
     2529      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2530       0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
     2531      30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
     2532       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2533       0,     0,   280,    33,     0,     0,     0,     0,   642,     0,
     2534      37,    38,   282,     0,     0,   283,   284,   285,   286,    40,
     2535      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2536     289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2537       0,     0,     0,     0,   290,   -33,   757,     0,     0,     0,
     2538       0,     0,     0,   292,   293,   294,   295,   296,   297,     8,
     2539       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2540      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2541      27,     0,     0,     0,     0,   278,    30,   279,     0,     0,
     2542       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2543       0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
     2544       0,     0,     0,     0,   281,     0,    37,    38,   282,     0,
     2545       0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
     2546       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2547       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2548     290,     0,   291,     0,     0,     0,     0,     0,     0,   292,
     2549     293,   294,   295,   296,   297,     8,     9,    10,    11,    12,
     2550      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2551      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2552       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2553       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2554       0,     0,     0,     0,   280,    33,     0,     0,     0,     0,
     2555     281,     0,    37,    38,   282,     0,     0,   283,   284,   285,
     2556     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2557       0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
     2558       0,     0,     0,     0,     0,     0,   290,     0,   154,     0,
     2559       0,     0,     0,     0,     0,   292,   293,   294,   295,   296,
     2560     297,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2561      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2562      25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
    24842563       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24852564       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2486        0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2487       38,     0,     0,  -292,     0,     1,     2,   203,     4,     5,
    2488        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2489       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2490        0,    25,    26,    27,    28,     0,    43,    29,     0,    30,
     2565     280,    33,     0,     0,     0,     0,   281,     0,    37,    38,
     2566     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2567     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2568       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2569       0,     0,   290,     0,   592,     0,     0,     0,     0,     0,
     2570       0,   292,   593,   294,   295,   296,   297,     8,     9,    10,
     2571      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2572      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2573       0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
     2574       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2575       0,     0,     0,     0,     0,     0,   280,    33,     0,     0,
     2576       0,     0,   281,     0,    37,    38,   282,     0,     0,   283,
     2577     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2578       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2579       0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
     2580     374,     0,     0,     0,     0,     0,     0,   292,   376,   294,
     2581     295,   296,   297,     8,     9,    10,    11,    12,    13,    14,
     2582      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2583    -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2584      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2585       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2586       0,     0,     0,    33,     0,     0,     0,     0,    36,     0,
     2587     332,   333,    39,     0,  -285,     0,     0,     0,     0,    40,
     2588      41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2589      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2590      25,    26,    27,     0,   636,     0,   334,     0,    30,     0,
     2591       0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
     2592       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2593       0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
     2594      39,     0,     0,     0,     0,     0,     0,    40,    41,     8,
     2595       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2596      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2597      27,     0,    42,     0,   154,     0,    30,     0,     0,     0,
     2598       0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
     2599       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2600       0,     0,     0,     0,    36,     0,    37,    38,    39,     0,
     2601       0,     0,     0,     0,     0,    40,    41,     8,     9,    10,
     2602      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2603      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2604      42,     0,    43,     0,    30,     0,     0,     0,     0,     0,
     2605      44,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2606       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2607       0,     0,    36,     0,   203,    38,    39,     0,     0,     0,
     2608       0,     0,     0,    40,    41,     8,     9,    10,    11,    12,
     2609      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2610      23,    24,     0,     0,    25,    26,    27,     0,    42,     0,
     2611     266,     0,    30,     0,     0,     0,     0,     0,   205,     0,
     2612       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2613       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2614      36,     0,   332,   333,    39,     0,     0,     0,     0,     0,
     2615       0,    40,    41,     8,     9,    10,    11,    12,    13,    14,
     2616      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2617       0,     0,    25,    26,    27,     0,   636,     0,   334,     0,
     2618      30,     0,     0,     0,     0,     0,   627,     0,     0,     0,
     2619       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2620       0,     0,     0,    33,     0,     0,     0,     0,    36,     0,
     2621     332,   333,    39,     0,     0,     0,     0,     0,     0,    40,
     2622      41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2623      17,    18,    19,    20,    21,    22,    23,    24,  -285,     0,
     2624      25,    26,    27,     0,     0,     0,   334,     0,    30,     0,
    24912625       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    24922626       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2493        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2494        0,    35,     0,     0,    37,    38,   202,     2,   203,     4,
    2495        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2627       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2628       0,     0,  -285,     8,     9,    10,    11,    12,    13,    14,
     2629      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2630    -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2631      30,     0,   636,     0,   334,     0,     0,     0,     0,     0,
     2632       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
     2633       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2634      37,    38,     0,     0,  -285,     8,     9,    10,    11,    12,
     2635      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2636      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2637       0,     0,    30,   448,   636,     0,   334,     0,     0,     0,
     2638       0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
     2639       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2640       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2641      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2642      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2643       0,    30,   448,     0,     0,     0,     0,     0,   449,     0,
     2644       0,     0,   703,     0,     0,     0,   109,     0,     0,     0,
     2645       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2646       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2647      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2648    -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2649      30,     0,     0,     0,     0,     0,     0,   449,     0,     0,
     2650       0,   937,     0,     0,     0,   109,     0,     0,     0,     0,
     2651       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2652      37,    38,     0,     0,  -285,     8,     9,    10,    11,    12,
     2653      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2654      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2655       0,     0,    30,   448,     0,     0,   334,     0,     0,     0,
     2656       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2657       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2658       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2659      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2660      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2661       0,    30,     0,     0,     0,     0,     0,     0,   449,     0,
     2662       0,     0,  1219,     0,     0,     0,   109,     0,     0,     0,
     2663       0,     0,     0,     0,    33,     0,     0,     0,     0,   108,
     2664       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    24962665      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    24972666       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2498       30,    43,     0,     0,     0,     0,     0,     0,     0,   109,
    2499        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2500        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2501       34,     0,    35,     0,     0,   204,    38,     2,   203,     4,
    2502        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2503       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2504        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2505       30,     0,   205,     0,     0,     0,     0,     0,     0,     0,
    2506      268,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2507        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2508       34,     0,    35,    36,     0,   204,    38,    39,     0,     0,
    2509        0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
    2510        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2511        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2512       42,     0,   205,     0,     0,     0,     0,     0,     0,     0,
    2513      206,     2,   203,     4,     5,     6,     7,     8,     9,    10,
     2667      30,   448,     0,     0,     0,     0,     0,    43,     0,     0,
     2668       0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
     2669       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2670      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2671      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2672       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2673       0,     0,     0,     0,     0,     0,   449,     0,     0,     0,
     2674       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2675       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2676      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2677      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2678      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2679       0,     0,     0,   636,     0,   334,     0,     0,     0,     0,
     2680       0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
     2681       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2682       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2683      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2684      26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
     2685       0,     0,   636,     0,   334,     0,     0,     0,     0,     0,
     2686       0,     0,   627,     0,     0,     0,     0,     0,     0,     0,
     2687      33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
     2688       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2689      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2690      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
     2691       0,     0,     0,   253,     0,     0,     0,     0,     0,     0,
     2692       0,   109,     0,     0,     0,     0,     0,     0,     0,    33,
     2693       0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
     2694      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2695      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2696       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
     2697       0,     0,   154,     0,     0,     0,     0,     0,     0,     0,
     2698     109,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2699       0,     0,     0,     0,     0,   203,    38,     8,     9,    10,
    25142700      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    25152701      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    25162702       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2517        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2518        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2519        0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2520       38,     2,   203,     4,     5,     6,     7,     8,     9,    10,
    2521       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2522       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2523        0,     0,     0,     0,    30,  -397,   682,     0,     0,     0,
    2524        0,     0,     0,     0,   630,     0,     0,     0,     0,     0,
    2525        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2526        0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2527       38,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2528        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2529        0,  1360,     0,     0,     0,     0,     0,     0,     0,     0,
    2530        0,     0,     0,     0,     0,     0,   682,     0,     0,     0,
    2531        0,     0,     0,     0,   630,     2,   203,     4,     5,     6,
    2532        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2703       0,   266,     0,     0,     0,     0,     0,     0,     0,   267,
     2704       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2705       0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
     2706      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2707      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2708       0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
     2709     253,     0,     0,     0,     0,     0,     0,     0,   627,     0,
     2710       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
     2711       0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
     2712      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2713      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2714       0,     0,    30,     0,     0,     0,     0,     0,     0,   334,
     2715       0,     0,     0,     0,     0,     0,     0,   627,     0,     0,
     2716       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2717       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2718      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2719      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2720       0,    30,     0,     0,     0,     0,     0,     0,   449,     0,
     2721       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
     2722       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2723       0,   203,    38,     8,     9,    10,    11,    12,    13,    14,
     2724      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2725       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2726      30,     0,     0,     0,     0,     0,     0,   266,     0,     0,
     2727       0,     0,     0,     0,     0,   622,     0,     0,     0,     0,
     2728       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2729      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2730      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2731       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2732       0,     0,     0,     0,     0,     0,   592,     0,     0,     0,
     2733       0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
     2734       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2735      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    25332736      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    25342737      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2535        0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2536       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2537       24,     0,     0,    25,    26,    27,    33,     0,    34,     0,
    2538       35,    30,     0,    37,    38,     0,     0,     0,     0,     0,
     2738       0,     0,     0,     0,     0,   334,     0,     0,     0,     0,
     2739       0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
     2740       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2741       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     2742      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2743      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2744       0,     0,     0,    30,    43,     0,     0,     0,     0,     0,
     2745       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
     2746       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2747      35,     0,     0,    37,    38,     0,   278,     0,   279,  1051,
     2748       0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,  1058,
     2749    1059,  1060,  1507,  1061,     0,     0,  1062,    32,     0,   280,
     2750       0,     0,     0,     0,     0,   642,     0,     0,  -403,   282,
     2751       0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
     2752     288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
    25392753       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2540        0,     0,     0,     0,     0,  1362,     0,     0,     0,    33,
    2541        0,     0,     0,     0,    36,     0,   333,   334,    39,     0,
    2542      682,     0,     0,     0,     0,    40,    41,     0,   630,     2,
    2543      203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2544       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2545       23,    24,     0,   335,    25,    26,    27,     0,     0,     0,
    2546        0,   109,    30,     0,     0,     0,     0,     0,     0,     0,
     2754       0,   290,     0,   374,     0,     0,   167,     0,     0,     0,
     2755     292,   376,   294,   295,   296,   297,     0,   278,     0,   279,
     2756    1051,     0,  1052,     0,  -126,  1053,  1054,  1055,  1056,  1057,
     2757    1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
     2758     280,     0,     0,     0,     0,     0,   642,     0,     0,     0,
     2759     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2760     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    25472761       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2548        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2549       33,     0,    34,     0,    35,     0,     0,   204,    38,     2,
    2550      203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2551       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2552       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2553        0,     0,    30,     0,   267,     0,     0,     0,     0,     0,
    2554        0,     0,   625,     0,     0,     0,     0,     0,     0,     0,
    2555        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2556       33,     0,    34,     0,    35,     0,     0,    37,    38,     2,
    2557      203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2558       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2559       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2560        0,     0,    30,     0,   682,     0,     0,     0,     0,     0,
    2561        0,     0,   630,     0,     0,     0,     0,     0,     0,     0,
    2562        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2563       33,     0,    34,     0,    35,     0,     0,    37,    38,     2,
    2564      203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2565       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2566       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2567        0,     0,    30,     0,   595,     0,     0,     0,     0,     0,
    2568        0,     0,   630,     0,     0,     0,     0,     0,     0,     0,
    2569        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2570       33,     0,    34,     0,    35,     0,     0,   204,    38,     8,
    2571        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2572       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2573       27,     0,     0,     0,     0,   279,    30,   280,     0,     0,
    2574        0,     0,     0,     0,   205,     0,     0,     0,     0,     0,
    2575        0,     0,   268,     0,     0,     0,     0,     0,     0,     0,
    2576        0,     0,     0,   281,    33,     0,     0,     0,     0,   282,
    2577        0,    37,    38,   283,     0,     0,   284,   285,   286,   287,
    2578       40,    41,     0,   288,   289,     0,     0,     0,     0,     0,
    2579        0,   290,     0,     0,     0,     0,     0,     0,     0,     0,
    2580        0,     0,     0,     0,     0,     0,   291,     0,   521,     0,
    2581        0,   168,     0,     0,     0,   293,   294,   295,   296,   297,
    2582      298,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2583       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2584       25,    26,    27,     0,     0,     0,     0,   279,    30,   280,
    2585        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2586       17,    18,    19,    20,    21,    22,    23,    24,  -292,     0,
    2587       25,    26,    27,     0,     0,   281,    33,     0,    30,     0,
    2588        0,   282,     0,    37,    38,   283,     0,     0,   284,   285,
    2589      286,   287,    40,    41,     0,   288,   289,     0,     0,     0,
    2590        0,     0,     0,   290,     0,     0,    33,     0,     0,     0,
    2591        0,    36,     0,   333,   334,    39,     0,  -292,   291,     0,
    2592      595,    -3,    40,    41,     0,     0,     0,   293,   596,   295,
    2593      296,   297,   298,     8,     9,    10,    11,    12,    13,    14,
    2594       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2595      335,     0,    25,    26,    27,     0,     0,     0,   109,   279,
    2596       30,   280,     0,     8,     9,    10,    11,    12,    13,    14,
    2597       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2598     -292,     0,    25,    26,    27,     0,     0,   281,    33,     0,
    2599       30,     0,     0,   645,     0,    37,    38,   283,     0,     0,
    2600      284,   285,   286,   287,    40,    41,     0,   288,   289,     0,
    2601        0,     0,     0,     0,     0,   290,     0,     0,    33,     0,
    2602        0,     0,     0,     0,     0,    37,    38,     0,     0,  -292,
    2603      291,   -34,   760,     0,     0,     0,     0,     0,     0,   293,
    2604      294,   295,   296,   297,   298,     8,     9,    10,    11,    12,
    2605       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2606       23,    24,   335,     0,    25,    26,    27,     0,     0,     0,
    2607      109,   279,    30,   280,     0,     8,     9,    10,    11,    12,
    2608       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2609       23,    24,     0,     0,    25,    26,    27,     0,     0,   281,
    2610       33,     0,    30,     0,     0,   282,     0,    37,    38,   283,
    2611        0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
    2612      289,     0,     0,     0,     0,     0,     0,   290,     0,     0,
    2613       33,     0,     0,     0,     0,   108,     0,    37,    38,     0,
    2614        0,     0,   291,     0,   292,     0,     0,     0,     0,     0,
    2615        0,   293,   294,   295,   296,   297,   298,     8,     9,    10,
    2616       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2617       21,    22,    23,    24,    43,     0,    25,    26,    27,     0,
    2618        0,     0,   109,   279,    30,   280,     0,     8,     9,    10,
    2619       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2620       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2621        0,   281,    33,     0,    30,   450,     0,   282,     0,    37,
    2622       38,   283,     0,     0,   284,   285,   286,   287,    40,    41,
    2623        0,   288,   289,     0,     0,     0,     0,     0,     0,   290,
    2624        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2625       38,     0,     0,     0,   291,     0,   154,     0,     0,     0,
    2626        0,     0,     0,   293,   294,   295,   296,   297,   298,     8,
    2627        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2628       19,    20,    21,    22,    23,    24,   451,     0,    25,    26,
    2629       27,     0,     0,     0,   109,   279,    30,   280,     0,     8,
    2630        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2631       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2632       27,     0,     0,   281,    33,     0,    30,     0,     0,   282,
    2633        0,    37,    38,   283,     0,     0,   284,   285,   286,   287,
    2634       40,    41,     0,   288,   289,     0,     0,     0,     0,     0,
    2635        0,   290,     0,     0,    33,     0,     0,     0,     0,     0,
    2636        0,    37,    38,     0,     0,     0,   291,     0,   595,     0,
    2637        0,     0,     0,     0,     0,   293,   596,   295,   296,   297,
    2638      298,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2639       17,    18,    19,    20,    21,    22,    23,    24,   254,     0,
    2640       25,    26,    27,     0,     0,     0,   109,   279,    30,   280,
     2762       0,     0,   290,     0,   374,     0,     0,   167,     0,     0,
     2763       0,   292,   376,   294,   295,   296,   297,     0,     0,     0,
     2764       0,     0,     0,     0,     0,  -126,     2,   202,     4,     5,
     2765       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2766      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2767       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    26412768       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    26422769      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2643       26,    27,     0,     0,     0,   281,    33,    30,     0,     0,
    2644        0,   282,     0,    37,    38,   283,     0,     0,   284,   285,
    2645      286,   287,    40,    41,     0,   288,   289,     0,     0,     0,
    2646        0,     0,     0,   290,     0,    33,     0,     0,     0,     0,
    2647       36,     0,   204,    38,    39,     0,     0,     0,   291,     0,
    2648      375,    40,    41,     0,     0,     0,     0,   293,   377,   295,
    2649      296,   297,   298,     0,     0,     0,     0,     0,     0,     0,
    2650        0,     0,     0,     0,     0,     0,     0,    42,     0,   267,
    2651        0,     0,     0,     0,     0,     0,     0,   206,     8,     9,
     2770      26,    27,    33,     0,    34,     0,    35,    30,     0,    37,
     2771      38,     0,   278,     0,   279,  1051,     0,  1052,  1394,  1395,
     2772    1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,  1507,  1061,
     2773      33,  1307,  1062,    32,     0,   280,     0,    37,    38,     0,
     2774       0,   642,     0,     0,     0,   282,     0,     0,   283,   284,
     2775     285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
     2776       0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
     2777       0,     0,     0,     0,     0,     0,     0,   290,     0,   374,
     2778       0,     0,   167,     0,     0,     0,   292,   376,   294,   295,
     2779     296,   297,   278,     0,   279,  1051,     0,  1052,  1394,  1395,
     2780    1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,     0,  1061,
     2781       0,     0,  1062,    32,     0,   280,     0,     0,     0,     0,
     2782       0,   642,     0,     0,     0,   282,     0,     0,   283,   284,
     2783     285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
     2784       0,     0,     0,   289,     0,     0,     0,     0,     0,   278,
     2785       0,   279,     0,     0,     0,     0,     0,   290,     0,   374,
     2786       0,     0,   167,     0,     0,     0,   292,   376,   294,   295,
     2787     296,   297,   280,     0,     0,     0,     0,     0,   281,     0,
     2788       0,     0,   282,     0,     0,   283,   284,   285,   286,    40,
     2789      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2790     289,     0,     0,     0,     0,     0,   278,     0,   279,     0,
     2791       0,     0,     0,     0,   290,     0,   374,     0,     0,     0,
     2792       0,     0,   802,   292,   376,   294,   295,   296,   297,   280,
     2793       0,     0,     0,     0,     0,   281,     0,     0,     0,   282,
     2794       0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
     2795     288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
     2796       0,     0,     0,   278,     0,   279,     0,     0,     0,     0,
     2797       0,   290,     0,   374,     0,     0,   982,     0,     0,     0,
     2798     292,   376,   294,   295,   296,   297,   280,     0,     0,     0,
     2799       0,     0,   281,     0,     0,     0,   282,     0,     0,   283,
     2800     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2801       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2802     278,     0,   279,     0,     0,     0,     0,     0,   290,     0,
     2803     374,     0,     0,     0,     0,     0,     0,   292,   376,   294,
     2804     295,   296,   297,   280,     0,     0,     0,     0,     0,   281,
     2805       0,     0,     0,   282,     0,     0,   283,   284,   285,   286,
     2806      40,    41,     0,   287,   288,     0,     0,     0,     0,     0,
     2807       0,   289,     0,     0,     0,     0,     0,   278,     0,   279,
     2808       0,     0,     0,     0,     0,   290,     0,   374,     0,     0,
     2809       0,     0,     0,     0,   292,   726,   294,   295,   296,   297,
     2810     280,     0,     0,     0,     0,     0,   642,     0,     0,     0,
     2811     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2812     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2813       0,     0,     0,     0,   278,     0,   279,     0,     0,     0,
     2814       0,     0,   290,     0,   776,     0,     0,     0,     0,     0,
     2815       0,   292,   376,   294,   295,   296,   297,   280,     0,     0,
     2816       0,     0,     0,   281,     0,     0,     0,   282,     0,     0,
     2817     283,   284,   285,   286,    40,    41,     0,   287,   288,     0,
     2818       0,     0,     0,     0,     0,   289,     0,     0,     0,     0,
     2819       0,   278,     0,   279,     0,     0,     0,     0,     0,   290,
     2820       0,   374,     0,     0,     0,     0,     0,     0,   292,   817,
     2821     294,   295,   296,   297,   280,     0,     0,     0,     0,     0,
     2822     281,     0,     0,     0,   282,     0,     0,   283,   284,   285,
     2823     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2824       0,     0,   289,     0,     0,     0,     0,     0,   278,     0,
     2825     279,     0,     0,     0,     0,     0,   508,     0,     0,     0,
     2826       0,     0,     0,     0,     0,   292,   376,   294,   295,   296,
     2827     297,   280,     0,     0,     0,     0,     0,   281,     0,     0,
     2828       0,   282,     0,     0,   283,   284,   285,   286,    40,    41,
     2829       0,   287,   288,     0,     0,     0,     0,     0,     0,   289,
     2830       0,     0,     0,     0,     0,   278,     0,   279,     0,     0,
     2831       0,     0,     0,   290,     0,     0,     0,     0,     0,     0,
     2832       0,     0,   292,   376,   294,   295,   296,   297,   280,     0,
     2833       0,     0,     0,     0,   281,     0,     0,     0,   282,     0,
     2834       0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
     2835       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2836       0,     0,   278,     0,   279,     0,     0,     0,     0,     0,
     2837     512,     0,     0,     0,     0,     0,     0,     0,     0,   292,
     2838     376,   294,   295,   296,   297,   280,     0,     0,     0,     0,
     2839       0,   281,     0,     0,     0,   282,     0,     0,   283,   284,
     2840     285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
     2841       0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
     2842       0,     0,     0,     0,     0,     0,     0,   515,     0,     0,
     2843       0,     0,     0,     0,     0,     0,   292,   376,   294,   295,
     2844     296,   297,     2,   202,     4,     5,     6,     7,     8,     9,
    26522845      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2653       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2654        0,     0,     0,     0,     0,    30,     0,     8,     9,    10,
    2655       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2656       21,    22,    23,    24,  -292,     0,    25,    26,    27,     0,
    2657        0,     0,     0,    33,    30,     0,     0,     0,    36,     0,
    2658      333,   334,    39,     0,     0,     0,     0,     0,     0,    40,
    2659       41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2660        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2661       38,     0,     0,  -292,     0,   639,     0,   335,     0,     0,
    2662        0,     0,     0,     0,     0,   630,     0,     0,     0,     0,
    2663        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2664        0,     0,     0,     0,   639,     0,   335,     0,     0,     0,
    2665        0,     0,     0,     0,   109,     8,     9,    10,    11,    12,
    2666       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2667       23,    24,  -292,     0,    25,    26,    27,     0,     0,     0,
    2668        0,     0,    30,     0,     8,     9,    10,    11,    12,    13,
    2669       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2670       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2671       33,    30,   450,     0,     0,     0,     0,    37,    38,     0,
    2672        0,  -292,     8,     9,    10,    11,    12,    13,    14,    15,
    2673       16,    17,    18,    19,    20,    21,    22,    23,    24,    33,
    2674        0,    25,    26,    27,     0,     0,    37,    38,     0,    30,
    2675      450,     0,   639,     0,   335,     0,     0,     0,     0,     0,
    2676        0,     0,   630,     0,     0,     0,     0,     0,     0,     0,
    2677        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2678        0,     0,     0,   451,    37,    38,     0,   941,     0,     0,
    2679        0,   109,     8,     9,    10,    11,    12,    13,    14,    15,
    2680       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2681        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2682        0,   451,     0,     0,     0,  1227,     0,     0,     0,   109,
    2683        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2684       18,    19,    20,    21,    22,    23,    24,    33,     0,    25,
    2685       26,    27,     0,     0,    37,    38,     0,    30,     0,     8,
    2686        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2687       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2688       27,     0,     0,     0,     0,    33,    30,     0,     0,   639,
    2689        0,   335,    37,    38,     0,     0,     0,     0,     0,   109,
    2690        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2691        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2692        0,    37,    38,     0,     0,     0,     0,   639,     0,   335,
    2693        0,     0,     0,     0,     0,     0,     0,   630,     0,     0,
    2694        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2695       18,    19,    20,    21,    22,    23,    24,     0,   154,    25,
    2696       26,    27,     0,     0,     0,     0,   109,    30,     0,     8,
    2697        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2698       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2699       27,     0,     0,     0,     0,    33,    30,     0,     0,     0,
    2700        0,     0,   204,    38,     0,     0,     0,     8,     9,    10,
    2701       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2702       21,    22,    23,    24,    33,     0,    25,    26,    27,     0,
    2703        0,    37,    38,     0,    30,     0,     0,     0,     0,   267,
    2704        0,     0,     0,     0,     0,     0,     0,   268,     0,     0,
    2705        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2706        0,     0,    33,     0,     0,     0,     0,     0,   254,    37,
    2707       38,     0,     0,     0,     0,     0,   630,     8,     9,    10,
    2708       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2709       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2710        0,     0,     0,     0,    30,     0,   335,     0,     0,     0,
    2711        0,     0,     0,     0,   630,     8,     9,    10,    11,    12,
    2712       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2713       23,    24,    33,     0,    25,    26,    27,     0,     0,    37,
    2714       38,     0,    30,     0,     8,     9,    10,    11,    12,    13,
    2715       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2716       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2717       33,    30,     0,     0,     0,     0,   451,   204,    38,     0,
    2718        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2719        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2720        0,     0,     0,     0,     0,     0,    37,    38,     0,     0,
    2721        0,     0,     0,     0,   267,     0,     0,     0,     0,     0,
    2722        0,     0,   625,     0,     0,     8,     9,    10,    11,    12,
    2723       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2724       23,    24,     0,   595,    25,    26,    27,     0,     0,     0,
    2725        0,   630,    30,     0,     8,     9,    10,    11,    12,    13,
    2726       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2727       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2728       33,    30,     0,     0,     0,     0,     0,    37,    38,     0,
    2729        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2730        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2731        0,     0,     0,     0,     0,     0,    37,    38,     0,     0,
    2732        0,     0,     0,     0,   335,     0,     0,     0,     0,     0,
    2733        0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
    2734        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2735        0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
    2736        0,   109,     2,   203,     4,     5,     6,     7,     8,     9,
    2737       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2738       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2739        0,     0,     0,     0,     0,    30,     0,     0,   279,     0,
    2740      280,  1056,     0,  1057,     0,     0,  1058,  1059,  1060,  1061,
    2741     1062,  1063,  1064,  1065,     0,     0,  1540,  1066,     0,     0,
    2742        0,  1067,  1068,    33,    32,    34,   281,    35,     0,     0,
    2743       37,    38,   645,     0,     0,     0,   283,     0,     0,   284,
    2744      285,   286,   287,    40,    41,     0,   288,   289,     0,     0,
    2745        0,     0,     0,     0,   290,     0,     0,     0,     0,     0,
    2746        0,     0,     0,     0,     0,     0,  -410,     0,     0,   291,
    2747        0,   375,     0,     0,   168,     0,     0,     0,   293,   377,
    2748      295,   296,   297,   298,     0,     0,     0,     0,  1070,     0,
    2749        0,   279,  -127,   280,  1056,     0,  1057,     0,     0,  1058,
    2750     1059,  1060,  1061,  1062,  1063,  1064,  1065,     0,     0,     0,
    2751     1066,     0,     0,     0,  1067,  1068,     0,    32,     0,   281,
    2752        0,     0,     0,     0,     0,   645,     0,     0,     0,   283,
    2753        0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
    2754      289,     0,     0,     0,     0,     0,     0,   290,     0,     0,
    2755        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2756        0,     0,   291,     0,   375,     0,     0,   168,     0,     0,
    2757        0,   293,   377,   295,   296,   297,   298,     0,     0,     0,
    2758        0,  1070,     0,     0,   279,  -127,   280,  1056,     0,  1057,
    2759     1410,  1411,  1058,  1059,  1060,  1061,  1062,  1063,  1064,  1065,
    2760        0,     0,  1540,  1066,     0,     0,     0,  1067,  1068,     0,
    2761       32,     0,   281,     0,     0,     0,     0,     0,   645,     0,
    2762        0,     0,   283,     0,     0,   284,   285,   286,   287,    40,
    2763       41,     0,   288,   289,     0,     0,     0,     0,     0,     0,
    2764      290,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2765        0,     0,     0,     0,     0,   291,     0,   375,     0,     0,
    2766      168,     0,     0,     0,   293,   377,   295,   296,   297,   298,
    2767      279,     0,   280,  1056,  1070,  1057,  1410,  1411,  1058,  1059,
    2768     1060,  1061,  1062,  1063,  1064,  1065,     0,     0,     0,  1066,
    2769        0,     0,     0,  1067,  1068,     0,    32,     0,   281,     0,
    2770        0,     0,     0,     0,   645,     0,     0,     0,   283,     0,
    2771        0,   284,   285,   286,   287,    40,    41,     0,   288,   289,
    2772        0,     0,     0,     0,     0,     0,   290,     0,     0,     0,
    2773        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2774        0,   291,     0,   375,     0,     0,   168,     0,     0,     0,
    2775      293,   377,   295,   296,   297,   298,   279,     0,   280,  1056,
    2776     1070,  1057,     0,     0,  1058,  1059,  1060,  1061,  1062,  1063,
    2777     1064,  1065,     0,     0,     0,  1066,     0,     0,     0,  1067,
    2778     1068,     0,    32,     0,   281,     0,     0,     0,     0,     0,
    2779      645,     0,     0,     0,   283,     0,     0,   284,   285,   286,
    2780      287,    40,    41,     0,   288,   289,     0,     0,     0,     0,
    2781        0,     0,   290,     0,     0,     0,     0,     0,     0,     0,
    2782        0,     0,     0,     0,     0,     0,     0,   291,     0,   375,
    2783        0,     0,   168,     0,     0,     0,   293,   377,   295,   296,
    2784      297,   298,     0,     0,     0,     0,  1070,     2,   203,     4,
    2785        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2786       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2787        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2788       30,     0,     0,   279,     0,   280,     0,     0,     0,     0,
    2789        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2790        0,     0,   279,     0,   280,     0,     0,     0,    33,     0,
    2791       34,   281,    35,     0,     0,    37,    38,   282,     0,     0,
    2792        0,   283,     0,     0,   284,   285,   286,   287,    40,    41,
    2793      281,   288,   289,     0,     0,     0,   282,  1319,     0,   290,
    2794      283,     0,     0,   284,   285,   286,   287,    40,    41,     0,
    2795      288,   289,     0,     0,   291,     0,   375,     0,   290,     0,
    2796      279,   775,   280,   293,   377,   295,   296,   297,   298,     0,
    2797        0,     0,     0,   291,     0,   375,     0,     0,   986,   279,
    2798        0,   280,   293,   377,   295,   296,   297,   298,   281,     0,
    2799        0,     0,     0,     0,   282,     0,     0,     0,   283,     0,
    2800        0,   284,   285,   286,   287,    40,    41,   281,   288,   289,
    2801        0,     0,     0,   282,     0,     0,   290,   283,     0,     0,
    2802      284,   285,   286,   287,    40,    41,     0,   288,   289,     0,
    2803        0,   291,     0,   375,     0,   290,     0,   279,     0,   280,
    2804      293,   377,   295,   296,   297,   298,     0,     0,     0,     0,
    2805      291,     0,   375,     0,     0,     0,   279,     0,   280,   293,
    2806      729,   295,   296,   297,   298,   281,     0,     0,     0,     0,
    2807        0,   645,     0,     0,     0,   283,     0,     0,   284,   285,
    2808      286,   287,    40,    41,   281,   288,   289,     0,     0,     0,
    2809      282,     0,     0,   290,   283,     0,     0,   284,   285,   286,
    2810      287,    40,    41,     0,   288,   289,     0,     0,   291,     0,
    2811      779,     0,   290,     0,   279,     0,   280,   293,   377,   295,
    2812      296,   297,   298,     0,     0,     0,     0,   291,     0,   375,
    2813        0,     0,     0,   279,     0,   280,   293,   821,   295,   296,
    2814      297,   298,   281,     0,     0,     0,     0,     0,   282,     0,
    2815        0,     0,   283,     0,     0,   284,   285,   286,   287,    40,
    2816       41,   281,   288,   289,     0,     0,     0,   282,     0,     0,
    2817      290,   283,     0,     0,   284,   285,   286,   287,    40,    41,
    2818        0,   288,   289,     0,     0,   291,     0,     0,     0,   290,
    2819        0,   279,     0,   280,   293,   377,   295,   296,   297,   298,
    2820        0,     0,     0,     0,   514,     0,     0,     0,     0,     0,
    2821        0,     0,     0,   293,   377,   295,   296,   297,   298,   281,
    2822        0,     0,     0,     0,     0,   282,     0,     0,     0,   283,
    2823        0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
    2824      289,     0,     0,     0,     0,     0,     0,   290,     0,     0,
    2825        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2826        0,     0,   517,     0,     0,     0,     0,     0,     0,     0,
    2827        0,   293,   377,   295,   296,   297,   298,     2,   203,     4,
    2828        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2829       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2830        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2831       30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2846      20,    21,    22,    23,    24,     0,     0,     0,     0,     0,
     2847       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    28322848       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28332849       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2834       34,     0,    35,    36,     0,   171,   172,    39,     0,     0,
    2835        0,     0,     0,     0,    40,    41,   202,     2,   203,     4,
     2850      34,     0,    35,    36,     0,   170,   171,    39,     0,     0,
     2851       0,     0,     0,     0,    40,    41,   201,     2,   202,     4,
    28362852       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    28372853      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     
    28392855      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28402856       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2841        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2842       34,     0,    35,     0,     0,   204,    38,   471,     2,   203,
     2857       0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
     2858     203,    38,   469,     2,   202,     4,     5,     6,     7,     8,
     2859       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2860      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2861      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
     2862       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2863       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2864       0,    34,     0,    35,     0,     0,    37,    38,     2,   202,
    28432865       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    28442866      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    28462868       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    28472869       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2848        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2849        0,    34,     0,    35,     0,     0,    37,    38,     2,   203,
     2870       0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
     2871       0,   203,    38,     8,     9,    10,    11,    12,    13,    14,
     2872      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2873       0,     0,    25,    26,    27,   487,   488,   489,     0,     0,
     2874      30,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2875      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2876      25,    26,    27,    33,     0,     0,     0,     0,    30,     0,
     2877      37,    38,     0,     0,     0,     0,     0,     0,     0,     0,
     2878       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2879       0,    33,     0,     0,     0,     0,     0,     0,   203,    38
     2880};
     2881
     2882#define yypact_value_is_default(yystate) \
     2883  ((yystate) == (-1318))
     2884
     2885#define yytable_value_is_error(yytable_value) \
     2886  YYID (0)
     2887
     2888static const yytype_int16 yycheck[] =
     2889{
     2890       1,    42,     0,    42,     0,   181,    42,   235,   181,   165,
     2891     181,     1,   451,   200,   182,   182,   215,   648,   690,   181,
     2892     181,   484,   181,   181,   275,   602,   344,   113,   103,   751,
     2893     252,   622,   690,    31,   494,    31,   690,    31,   498,   604,
     2894     457,   892,   988,   359,    42,   602,    44,   363,    44,  1317,
     2895       1,   534,   602,   995,  1031,     0,    54,    37,    37,   183,
     2896     602,   604,    60,   602,    60,    63,   450,    63,    66,   605,
     2897      66,   344,    37,   572,   101,   611,    66,   152,    65,    65,
     2898     771,  1398,    65,    49,   715,   261,    31,    75,   261,    42,
     2899     261,  1394,   412,    44,   262,   262,   768,   691,    42,   261,
     2900     261,  1043,   261,   261,   602,    37,   104,  1030,  1031,   107,
     2901     768,   197,   432,   101,   768,   113,    27,    75,    57,   713,
     2902     440,    42,   101,   103,   103,   111,     0,    89,    75,   340,
     2903      42,    43,    37,   257,   258,   101,   101,   124,   103,   523,
     2904     181,   124,   181,  1411,   602,   181,   144,   892,   144,   101,
     2905     102,     0,   103,   115,   152,  1458,   103,    31,   109,   157,
     2906      71,   157,   101,   420,   421,  1482,    42,    43,    65,   101,
     2907    1487,   103,   101,   636,   637,   638,    37,    65,   290,   736,
     2908       0,     1,    31,   181,   182,  1050,   182,  1504,   277,    88,
     2909     412,   654,   143,    65,  1511,   107,    44,   892,    65,   197,
     2910      75,   152,    75,    37,    29,   404,   103,   205,    78,   205,
     2911     432,    31,    11,     0,    63,   103,   214,   490,   440,   217,
     2912     261,   217,   261,   122,   101,   261,   689,   102,   181,   102,
     2913     106,   103,   400,   400,   109,   105,   103,   181,   736,   496,
     2914     101,   104,   103,    63,    31,   108,    66,   248,  1225,   247,
     2915     201,   247,   829,   247,   205,    80,    81,   514,     0,     1,
     2916     181,   109,   337,   261,   262,   728,   262,   101,   104,   103,
     2917     268,   710,   829,   484,   590,   106,   841,   275,   736,   829,
     2918     108,    75,   450,   450,   235,   236,   604,   829,   289,    31,
     2919     829,   366,   492,    73,  1240,   831,   124,  1274,   841,     0,
     2920       1,   764,   247,  1487,   390,  1050,   997,   101,   420,   421,
     2921     809,    73,    42,    43,   482,   482,   267,   633,    75,   270,
     2922    1504,    63,   579,   103,    66,   105,   324,  1511,   324,   109,
     2923      31,   829,   418,   153,    54,    89,  1487,  1059,   424,   290,
     2924     108,   103,   293,   105,     0,   343,   344,   109,   111,   123,
     2925    1273,  1274,   109,   116,   117,   818,   124,   205,  1053,  1210,
     2926    1511,   115,   360,   683,   224,    66,   364,    65,   217,    67,
     2927      68,   829,   949,   247,   968,    31,   106,   104,   252,   101,
     2928     108,   108,   593,   243,   104,   950,   337,   107,   236,   340,
     2929       3,    65,   390,    67,    68,     3,   508,   217,   247,   949,
     2930     512,   123,   400,   515,   400,   103,   606,   949,   359,   108,
     2931     610,   622,   363,  1390,   239,   366,   627,   506,  1009,   267,
     2932     418,    65,  1287,    67,    68,   124,   424,   247,   426,   102,
     2933      67,   631,   106,   108,    71,   635,   109,    74,   102,    76,
     2934    1382,  1383,   290,    65,   108,   293,    83,    69,   108,   124,
     2935     123,   526,   450,     0,    76,    77,   568,   101,   107,   108,
     2936     247,   683,   106,     0,    52,  1210,   102,  1390,   469,   420,
     2937     421,   101,   108,   508,   123,   217,   474,   512,   689,   101,
     2938     515,   103,  1018,  1019,   482,   102,   482,   101,   486,   111,
     2939     486,   108,   490,   649,   214,  1126,   345,   448,   958,   750,
     2940     451,   918,   102,   725,   820,   247,   457,    95,   824,   109,
     2941     993,   108,   123,   514,   690,  1210,   102,   690,   469,   690,
     2942     113,   114,   108,   841,   692,   692,  1120,   124,   690,   690,
     2943     531,   690,   690,   534,   658,   536,   101,  1102,   412,   101,
     2944     108,   486,  1287,   494,   928,   496,   247,   498,   268,   121,
     2945     375,   123,   936,   764,   102,   275,   124,   508,   432,    83,
     2946      84,   512,   108,   514,   515,  1287,   440,  1030,   841,  1434,
     2947     656,   208,   108,   108,   108,   526,  1441,   108,   124,   668,
     2948     107,   102,   583,  1177,  1178,     0,   108,   108,   124,   124,
     2949     124,   247,   590,   124,   118,   119,   252,   981,   914,   101,
     2950     448,   189,   124,   451,   602,  1300,   604,   427,   466,   457,
     2951     484,   101,   486,   688,   637,   638,    31,   108,   104,   101,
     2952    1485,   103,   108,   343,   212,   623,   475,    42,   579,    44,
     2953     455,   654,   101,   124,   222,   460,    44,   486,  1360,   590,
     2954     360,   639,   593,   102,   364,    60,   102,   104,    63,  1088,
     2955     109,    66,   108,   108,   655,   653,   657,   104,   656,  1354,
     2956     508,   108,  1357,   863,   512,   754,   486,   515,   493,   124,
     2957     495,   622,   102,   636,   637,   638,   627,   102,   108,   878,
     2958     102,   954,   633,  1146,    65,   102,    67,    68,   763,  1434,
     2959     102,   654,   690,   104,   692,   102,  1441,   108,  1461,   486,
     2960     899,   109,   290,  1398,  1467,   728,   101,   527,  1403,   102,
     2961     347,   104,   349,    81,    82,   108,  1438,   101,  1440,   103,
     2962     101,  1484,   723,    85,    86,   106,  1489,   111,   884,   144,
     2963     123,   124,   960,  1428,   101,   143,   103,   688,   736,   737,
     2964    1485,   101,   157,   103,   486,     4,     5,     6,     7,     8,
     2965       9,   111,   750,   101,  1118,   955,   412,   102,  1122,   710,
     2966     928,   928,   101,   108,  1486,   728,   181,   182,   936,   936,
     2967     124,   591,   101,  1089,   103,   624,   432,   101,   102,   103,
     2968     102,   102,   111,  1377,   440,   486,   108,   108,   102,   740,
     2969     205,   101,   102,   103,   108,   818,    57,   205,  1009,   436,
     2970    1394,   101,   217,    62,   591,    64,   101,  1502,   103,   683,
     2971    1273,   101,   763,  1508,   672,   689,   636,   637,   638,  1491,
     2972     645,   104,  1517,   102,   108,   109,  1521,   235,   124,   108,
     2973     486,   829,   247,  1491,   654,  1022,    65,  1491,    67,    68,
     2974      69,    65,   106,   841,   102,    69,   261,    76,    77,   437,
     2975     108,   725,    76,    77,   102,   818,   101,   102,   103,   267,
     2976     108,   124,   710,  1457,  1458,   124,   101,   716,   103,   820,
     2977     102,   124,   101,   824,   103,   106,   108,   101,    44,    65,
     2978     705,   730,   111,   471,   106,   293,   711,   111,   101,  1045,
     2979     764,   892,   102,   102,    60,   102,   102,    63,   108,   108,
     2980      66,   108,   108,   623,   557,   558,   559,   560,   728,   324,
     2981      10,    11,    12,    13,    14,    65,   914,    67,    68,   639,
     2982     508,   101,   102,   103,   512,   101,   101,   515,   103,   344,
     2983     928,   104,   340,   653,   101,  1146,   103,    37,   936,     4,
     2984       5,     6,     7,     8,     9,    75,   101,   805,   103,    75,
     2985      65,     0,     1,   101,    69,   103,   954,   815,   102,   103,
     2986      60,    76,    77,   914,  1246,  1247,  1248,   918,   101,   959,
     2987     103,   112,   830,   822,   695,   120,   697,    87,   144,    78,
     2988      79,    80,    31,    54,    55,   400,   101,   108,   109,   990,
     2989     121,   157,   993,   101,   995,    44,   111,    62,   818,    64,
     2990     123,   101,   101,   103,   103,   825,   105,   958,   959,   960,
     2991     103,   111,   420,   421,  1225,   101,   182,    66,   892,    65,
     2992     104,    67,    68,    69,  1110,   108,   109,   683,   104,  1118,
     2993     750,    42,    43,  1122,  1123,   450,   553,   554,   825,   205,
     2994     555,   556,  1043,   892,   102,   561,   562,   102,   102,   102,
     2995     102,   217,  1053,   101,   103,  1056,  1057,  1058,  1009,   884,
     2996     102,   104,   103,   108,   104,   101,   891,   123,   106,   725,
     2997     918,   486,   892,   104,   102,   490,   102,   104,  1190,  1191,
     2998     104,  1193,   104,   671,   104,   108,  1470,  1199,   496,    28,
     2999    1202,   109,   680,   109,    63,   144,   684,    10,    11,    12,
     3000      13,    14,   102,   152,   153,   892,   514,   102,   104,   106,
     3001     109,    80,  1110,   107,    10,    11,    12,    13,    14,   102,
     3002     107,   107,   101,   108,    37,   102,   124,   102,   102,  1513,
     3003     102,  1206,   102,   182,   102,   466,   109,  1088,  1089,   959,
     3004     102,    37,   108,   102,   102,   114,  1235,    60,   197,   102,
     3005     892,   200,   201,   102,   102,   975,   205,   982,   324,   102,
     3006     102,   102,   102,  1012,    60,   102,   102,   102,    28,  1027,
     3007    1028,   579,   123,   107,   104,   102,  1050,   226,   102,   102,
     3008     102,   230,   107,   232,   104,   593,     3,   602,   157,   604,
     3009     108,   892,   241,    10,    11,    12,    13,    14,   247,  1189,
     3010     104,  1050,   102,   252,   102,   101,   108,   103,  1206,  1210,
     3011    1030,  1031,   102,   262,   622,   111,   109,   959,   106,   627,
     3012      37,   270,   108,   108,   104,  1083,  1084,   102,   102,  1318,
     3013    1050,   108,   108,  1322,   400,   102,   892,   101,   104,  1229,
     3014    1088,   104,   101,    60,  1356,  1246,  1247,  1248,   217,    65,
     3015     101,    67,    68,    69,  1079,  1206,   101,   101,   959,   109,
     3016      76,    77,    65,  1050,    67,    68,    69,   124,   107,   102,
     3017    1498,   102,  1146,    76,    77,   690,   102,   692,  1229,   121,
     3018     107,   106,   104,   124,   108,     3,   255,  1373,   337,   104,
     3019     259,   340,    10,    11,    12,    13,    14,   346,   101,  1300,
     3020     108,   102,   104,   102,     0,   102,   104,    45,  1050,   104,
     3021     359,   104,   102,   104,   363,  1491,   104,   366,  1491,    37,
     3022    1491,   736,   737,   104,  1492,  1492,  1415,  1317,   916,  1491,
     3023    1491,   107,  1491,  1491,   102,    31,  1210,   124,   124,  1188,
     3024     124,   672,    60,   107,   124,  1513,  1513,   124,   109,  1050,
     3025     102,  1225,   107,  1354,   104,   104,  1357,   104,   104,  1184,
     3026     104,  1210,   104,   412,   104,  1223,  1317,   104,  1188,  1189,
     3027      66,   102,   102,   101,  1372,  1373,   345,   104,   427,   104,
     3028     101,  1382,  1383,   432,  1470,    55,    54,   102,   102,   106,
     3029    1210,   440,   124,   109,  1050,   104,  1254,  1398,   104,   102,
     3030     104,   102,  1403,    89,  1262,  1263,  1264,   101,   107,  1229,
     3031     102,   104,   102,  1287,   829,  1416,    40,   466,   102,   102,
     3032     469,  1411,   109,  1210,   124,   102,   841,  1428,   108,   124,
     3033      89,   102,     3,  1282,   109,   484,   102,   486,  1287,    10,
     3034      11,    12,    13,    14,   102,   494,  1188,  1189,  1306,   498,
     3035    1491,   124,  1491,  1273,  1274,  1491,   425,   153,   107,   124,
     3036    1411,   104,  1282,   104,   124,   101,    37,  1287,  1210,   124,
     3037    1471,   124,  1470,  1061,   805,  1476,   107,   526,   527,   672,
     3038     107,  1482,   102,   691,   815,   102,  1487,  1229,  1189,    60,
     3039     563,   565,  1443,  1491,  1492,   564,  1492,  1317,   566,   830,
     3040    1287,  1502,  1127,  1504,   567,   713,   475,  1508,    54,  1210,
     3041    1511,  1362,  1458,   928,  1210,  1513,  1517,  1513,  1521,  1296,
     3042    1521,   936,  1473,   572,  1473,  1123,  1322,  1441,  1229,  1079,
     3043     226,   448,   448,   936,   697,   884,   938,   982,   650,   954,
     3044    1282,   590,   591,   740,   593,  1287,   460,  1498,   583,  1229,
     3045     956,   247,   960,   486,  1210,   604,   252,   571,   104,    63,
     3046    1434,   107,   750,   571,   571,    -1,    -1,  1441,    -1,    -1,
     3047    1390,    -1,    -1,   622,    -1,  1317,    -1,    -1,   627,    -1,
     3048      -1,    -1,    -1,    -1,   633,  1434,  1287,   636,   637,   638,
     3049      -1,  1411,  1441,    -1,   802,  1443,    65,    -1,    67,    68,
     3050      69,  1009,    -1,    -1,    -1,   654,   152,    76,    77,    -1,
     3051     114,  1485,   805,    -1,  1434,     0,  1317,    -1,    -1,    -1,
     3052      -1,  1441,   815,   672,    -1,  1473,    -1,   596,    -1,    -1,
     3053      -1,  1287,   101,    -1,   683,    -1,  1485,   830,    -1,   688,
     3054     689,    -1,   111,   692,    -1,    -1,    31,  1434,    -1,    -1,
     3055     346,    -1,  1372,   157,  1441,   624,    -1,    -1,    -1,    -1,
     3056     629,    -1,    -1,    -1,    -1,  1485,    -1,    -1,   214,  1411,
     3057     185,    -1,   880,    -1,    -1,    -1,   725,   192,    -1,   728,
     3058      -1,    66,    65,    -1,    67,    68,    69,    -1,   737,    -1,
     3059      -1,   740,  1434,    76,    77,    -1,  1027,  1028,  1485,  1441,
     3060      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1295,    -1,    -1,
     3061    1411,    -1,    -1,   217,   763,   764,   412,    -1,   101,    -1,
     3062     769,    -1,   268,    65,    -1,    67,    68,    69,   111,   275,
     3063      -1,   427,    -1,  1434,    76,    77,   432,    -1,    -1,    -1,
     3064    1441,    -1,    -1,  1485,   440,    -1,    -1,   716,    -1,   264,
     3065      -1,   255,  1083,  1084,    -1,   259,   805,    -1,    -1,   101,
     3066     968,   730,    -1,    -1,    -1,    -1,   815,    -1,   153,   818,
     3067     466,   820,    -1,    -1,   823,   824,   825,    -1,  1434,    -1,
     3068      -1,   830,    -1,    -1,  1485,  1441,    -1,    -1,   484,   997,
     3069     486,   840,    10,    11,    12,    13,    14,   343,    -1,    -1,
     3070      -1,    -1,    -1,    -1,   319,    10,    11,    12,    13,    14,
     3071      -1,    -1,   327,    -1,   360,   330,    -1,    -1,   364,    37,
     3072      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1485,
     3073      -1,   527,    37,    -1,  1027,  1028,    -1,    -1,    -1,  1047,
     3074      -1,   345,    60,   892,    -1,    -1,    -1,    65,    -1,    67,
     3075      68,    69,    -1,   822,  1442,    60,    -1,    -1,    76,    77,
     3076      65,    -1,   247,    -1,    69,   914,    -1,   252,    -1,    -1,
     3077      -1,    76,    77,    -1,    -1,    -1,    -1,   392,    -1,    -1,
     3078     426,   396,    -1,   101,  1472,   103,    -1,    -1,    -1,    -1,
     3079    1083,  1084,  1223,   111,    -1,   591,   101,    -1,     0,    -1,
     3080      -1,   950,    -1,    -1,    -1,    -1,   111,    -1,    -1,   958,
     3081     959,    -1,  1120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3082      -1,   425,    -1,  1254,  1512,     0,   975,    -1,    -1,    31,
     3083      -1,  1262,  1263,  1264,    -1,    -1,  1524,    -1,    -1,    -1,
     3084     636,   637,   638,    -1,    -1,    -1,    -1,    -1,    -1,   279,
     3085      -1,    -1,    -1,    -1,    -1,    -1,    31,    -1,   654,    -1,
     3086    1009,   346,   292,   293,    66,    -1,   481,    -1,    -1,  1177,
     3087    1178,   475,    -1,  1022,   304,  1306,   672,    -1,  1027,  1028,
     3088      -1,  1030,  1031,    -1,    -1,    -1,    -1,   683,    -1,    -1,
     3089      -1,    66,    -1,   689,    -1,    10,    11,    12,    13,    14,
     3090      -1,  1050,     4,     5,     6,     7,     8,     9,    -1,    -1,
     3091     340,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
     3092      -1,    -1,    37,    76,    77,    -1,    -1,   412,    -1,   725,
     3093      32,    -1,   728,    -1,  1083,  1084,    -1,    -1,    -1,    -1,
     3094    1089,    -1,   427,  1012,   590,    60,   376,   432,   101,    -1,
     3095     103,   153,    -1,    -1,    -1,   440,   571,   572,   111,    -1,
     3096      62,  1254,    64,    -1,    -1,    -1,    -1,    -1,   764,  1262,
     3097    1263,  1264,    -1,    -1,    -1,    -1,  1491,   623,   153,    -1,
     3098      -1,   466,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3099    1498,    -1,   596,   639,    -1,    -1,   111,  1146,    -1,   484,
     3100      65,   486,    67,    68,    69,    -1,    -1,   653,    -1,   805,
     3101      -1,    76,    77,  1306,    -1,    -1,    63,    -1,    -1,   815,
     3102     624,    -1,   818,    -1,    -1,   629,    73,   823,    -1,   825,
     3103      -1,    -1,    -1,    -1,   830,    -1,   101,    -1,   103,    -1,
     3104    1189,    -1,   527,    -1,   659,   247,   111,    -1,   663,    -1,
     3105     252,    65,    -1,    67,    68,    69,    -1,  1206,    -1,    -1,
     3106      -1,  1210,    76,    77,    -1,    -1,    -1,   114,    -1,  1377,
     3107      -1,    -1,   247,    -1,  1223,    -1,  1225,   252,    -1,    -1,
     3108    1229,   696,    -1,    -1,    -1,    -1,  1394,   101,    -1,   103,
     3109      -1,    -1,    -1,    -1,    -1,   109,   892,   111,    -1,    -1,
     3110      -1,    -1,    -1,    -1,   750,  1254,   591,    -1,    -1,    -1,
     3111     157,    -1,   716,  1262,  1263,  1264,    -1,    -1,    -1,  1188,
     3112     550,   551,   552,    -1,  1273,  1274,   730,    90,    91,    92,
     3113      93,    94,    95,    96,    97,    98,    99,    -1,  1287,    -1,
     3114      -1,    -1,    -1,    -1,   346,    -1,    -1,    -1,    -1,  1457,
     3115    1458,   636,   637,   638,    -1,    -1,    -1,  1306,    -1,    -1,
     3116     123,    -1,    -1,   593,    -1,    -1,    -1,    -1,  1317,   654,
     3117     217,   346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   975,
     3118      -1,    -1,    -1,    -1,    -1,    -1,    -1,   672,    -1,    10,
     3119      11,    12,    13,    14,   809,    -1,    -1,    -1,   683,    -1,
     3120      -1,    -1,    -1,    -1,   689,    -1,    -1,    -1,   255,    -1,
     3121     412,    -1,   259,  1282,    -1,    -1,    37,    -1,   822,    -1,
     3122      -1,    -1,    -1,    -1,    -1,   427,    -1,    -1,   275,    -1,
     3123     432,  1027,  1028,    -1,  1030,  1031,    -1,   412,   440,    60,
     3124     725,  1390,    -1,   728,    65,    -1,    67,    68,    69,    -1,
     3125      -1,    -1,   427,    -1,  1050,    76,    77,   432,    -1,    -1,
     3126      -1,    -1,  1411,    -1,   466,   440,    -1,    -1,   914,    -1,
     3127      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   764,
     3128     101,    -1,   484,    -1,   486,  1434,    -1,  1083,  1084,    -1,
     3129     111,   466,  1441,    -1,    -1,    -1,   726,    -1,   345,    -1,
     3130      -1,    -1,    -1,    -1,    -1,    -1,    -1,   922,    -1,   484,
     3131      -1,   486,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3132     805,    -1,    -1,    -1,    -1,   527,    -1,    -1,    -1,    -1,
     3133     815,    -1,    -1,   818,    -1,    -1,  1485,    -1,   823,    -1,
     3134     825,   771,    -1,  1492,    -1,   830,    -1,    -1,    -1,    -1,
     3135    1146,    -1,   527,    -1,     3,     4,     5,     6,     7,     8,
     3136       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3137      19,    20,    21,    22,    23,    24,    25,    26,   425,    -1,
     3138      29,    30,    31,    -1,   999,    -1,    -1,   817,    37,   591,
     3139      -1,    -1,    -1,  1189,    -1,   442,    -1,    -1,    -1,    -1,
     3140    1015,    -1,    -1,    -1,    -1,    -1,    -1,   892,  1012,    -1,
     3141      -1,    60,    -1,    62,  1210,    64,   591,    -1,    67,    68,
     3142      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1223,   475,  1225,
     3143      -1,    -1,    -1,    -1,   636,   637,   638,    -1,    -1,    -1,
     3144      -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3145      14,    -1,   654,    -1,    -1,    -1,    -1,   106,  1254,    -1,
     3146      -1,   636,   637,   638,    -1,    -1,  1262,  1263,  1264,    -1,
     3147     672,    -1,    -1,    37,    -1,  1090,    -1,  1273,  1274,   654,
     3148      -1,   683,    -1,    -1,    -1,    -1,    -1,   689,    -1,    -1,
     3149     975,  1287,    -1,    50,    -1,    52,    60,   672,    55,    56,
     3150      57,    65,    59,    67,    68,    69,    -1,    -1,   683,    -1,
     3151    1306,    -1,    76,    77,   689,    -1,    -1,    74,    -1,    -1,
     3152      -1,    -1,    -1,   725,    -1,    -1,   728,    -1,    -1,    86,
     3153      87,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3154      -1,    -1,  1027,  1028,    -1,  1030,  1031,   111,    -1,   596,
     3155     725,    -1,    -1,   728,    -1,    -1,    -1,    -1,    -1,    -1,
     3156    1206,    -1,   764,    -1,    -1,  1050,    -1,    -1,    -1,    -1,
     3157      -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,  1009,
     3158      -1,    -1,   629,    -1,  1188,    -1,    -1,    -1,    -1,   764,
     3159      -1,    -1,    -1,    -1,  1390,    -1,    -1,    -1,  1083,  1084,
     3160      -1,    -1,    -1,   805,    -1,    -1,    -1,    10,    11,    12,
     3161      13,    14,    -1,   815,    -1,    -1,   818,    -1,    -1,    -1,
     3162    1050,   823,    -1,   825,    -1,    -1,    -1,    -1,   830,    -1,
     3163     805,    -1,    -1,    -1,    37,    -1,    -1,    -1,  1434,    -1,
     3164     815,    -1,    -1,   818,    -1,  1441,    -1,    -1,   823,    -1,
     3165     825,    -1,    -1,    -1,    -1,   830,    -1,    60,    -1,    -1,
     3166      -1,  1146,    65,    -1,    67,    68,    69,    -1,    -1,   716,
     3167      -1,    -1,    -1,    76,    77,    -1,    -1,    -1,  1282,    -1,
     3168      -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,    -1,  1485,
     3169     892,    10,    11,    12,    13,    14,    -1,    -1,   101,    -1,
     3170     103,    -1,    -1,   750,  1189,    -1,    -1,    -1,   111,    -1,
     3171      -1,    -1,    -1,    -1,    -1,    -1,    -1,   892,    37,    -1,
     3172      -1,    -1,    -1,    -1,    -1,  1210,  1372,    -1,    -1,    -1,
     3173      -1,    -1,    -1,  1163,    -1,    -1,    -1,    -1,  1223,    -1,
     3174    1225,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3175      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
     3176      -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,  1254,
     3177      -1,    -1,    -1,   975,    -1,   822,    -1,  1262,  1263,  1264,
     3178      -1,    -1,   101,   340,   341,    -1,    -1,    -1,  1273,  1274,
     3179      -1,    -1,   111,    -1,    -1,   352,   353,    -1,    -1,    -1,
     3180     975,    -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3181      -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
     3182      -1,  1306,    -1,    -1,    44,  1027,  1028,    -1,  1030,  1031,
     3183      -1,    -1,    -1,    96,    -1,    98,    -1,    10,    11,    12,
     3184      13,    14,    -1,    63,    -1,    -1,    -1,    -1,  1050,    -1,
     3185      -1,    -1,  1027,  1028,    -1,  1030,  1031,    -1,    -1,   122,
     3186      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3187      -1,    -1,    -1,    -1,    -1,  1050,    -1,    -1,    -1,    -1,
     3188      -1,  1083,  1084,    96,    -1,    98,    -1,    60,    -1,   109,
     3189      -1,    -1,    65,    -1,   114,    -1,    69,    -1,    -1,    -1,
     3190      -1,    -1,    -1,    76,    77,  1390,    -1,    -1,  1083,  1084,
     3191      -1,    -1,    -1,    -1,   177,    -1,    -1,    -1,    -1,    -1,
     3192      -1,    -1,   185,   143,   187,   188,    -1,    -1,   101,   192,
     3193      -1,   194,   195,   153,    -1,    -1,    -1,   157,   111,    -1,
     3194      -1,    -1,    -1,    -1,  1146,    -1,    -1,    -1,    -1,  1434,
     3195      -1,    -1,    -1,    -1,    -1,    36,  1441,    38,    -1,    -1,
     3196      -1,    -1,    -1,    -1,   177,  1012,    -1,    -1,    -1,    -1,
     3197      -1,  1146,    -1,    -1,   187,   188,    -1,    -1,    59,   192,
     3198      -1,   194,   195,    -1,    65,   205,    -1,  1189,    69,    -1,
     3199      -1,    72,    73,    74,    75,    76,    77,   217,    79,    80,
     3200    1485,   264,    -1,    -1,    -1,    -1,    87,    -1,  1210,    -1,
     3201      -1,    -1,    -1,    -1,  1189,   235,   236,    -1,    -1,    -1,
     3202     101,  1223,   103,  1225,    -1,    -1,    -1,    -1,    -1,   110,
     3203     111,   112,   113,   114,   115,  1210,    -1,    -1,    -1,   259,
     3204      -1,    -1,    -1,   124,    -1,    -1,    -1,   267,  1223,    -1,
     3205    1225,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3206    1262,  1263,  1264,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3207     290,  1273,  1274,   293,    -1,    -1,    -1,     7,    -1,  1254,
     3208      10,    11,    12,    13,    14,  1287,    -1,  1262,  1263,  1264,
     3209      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,
     3210      -1,    -1,    -1,    -1,  1306,    -1,    36,    37,    38,    -1,
     3211      -1,    -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3212     340,    -1,    -1,    -1,    -1,   345,    -1,    -1,    -1,    59,
     3213      60,  1306,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     3214      -1,  1188,    72,    73,    74,    75,    76,    77,    -1,    79,
     3215      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3216     717,    -1,   719,    -1,    -1,    -1,    -1,    -1,    -1,   726,
     3217     727,   101,    -1,   103,   731,    -1,    -1,    -1,    -1,    -1,
     3218     110,   111,   112,   113,   114,   115,   743,    -1,  1390,    -1,
     3219      -1,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3220     420,   421,    -1,    -1,    -1,    -1,    -1,   427,    -1,    -1,
     3221      -1,    -1,    -1,    -1,    -1,  1390,   773,    -1,    -1,    -1,
     3222      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   448,    -1,
     3223      -1,   451,  1434,    -1,    -1,  1282,    -1,   457,    -1,  1441,
     3224      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3225      20,    21,    22,    23,    24,    25,    26,    27,    -1,  1434,
     3226     817,    -1,    -1,    -1,   484,    -1,  1441,    37,    -1,    -1,
     3227      -1,    -1,    -1,    -1,    -1,    -1,   496,    -1,    -1,    -1,
     3228      -1,    -1,    -1,  1485,    -1,    -1,    -1,    -1,   508,    -1,
     3229      60,    -1,   512,    -1,   514,   515,    -1,    -1,    -1,    -1,
     3230      -1,    71,    -1,    -1,    -1,    -1,    -1,   527,    -1,    -1,
     3231    1485,    -1,   575,   576,    -1,    -1,    -1,   874,   875,   876,
     3232     877,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3233      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   895,    -1,
     3234      -1,    -1,   605,    -1,    -1,   608,   609,    -1,   611,    -1,
     3235     613,   614,   909,    -1,    -1,   618,   619,    -1,    -1,   579,
     3236      -1,    -1,   575,   576,    -1,    -1,    -1,    -1,    -1,    -1,
     3237      -1,   591,    -1,   593,    -1,    -1,   596,    -1,    -1,    -1,
     3238      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3239      -1,   948,   605,    -1,    -1,   608,   609,    -1,   611,    -1,
     3240     613,   614,   622,    -1,    -1,   618,   619,   627,    -1,    -1,
     3241      -1,    -1,    -1,    -1,    -1,    -1,   636,   637,   638,    -1,
     3242      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3243     987,    -1,    -1,   696,   654,    -1,    -1,   994,   701,   702,
     3244      -1,   998,    -1,    -1,   707,    -1,  1003,    -1,  1005,    -1,
     3245      -1,    -1,  1009,  1010,  1011,    -1,    -1,  1014,    -1,    -1,
     3246      -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,    -1,   689,
     3247      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3248      -1,    -1,    -1,    -1,  1041,  1042,    -1,    -1,   701,   702,
     3249     710,    -1,    -1,    -1,   707,    -1,    -1,    -1,    -1,    -1,
     3250      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   728,  1066,
     3251     730,    -1,  1069,    10,    11,    12,    13,    14,    15,    16,
     3252      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3253      -1,    -1,    29,    30,    31,    -1,    -1,    63,    -1,    -1,
     3254      37,    -1,    -1,    -1,   764,    -1,    -1,    73,    -1,    75,
     3255    1107,    77,    -1,    -1,    -1,    -1,  1113,  1114,    84,    -1,
     3256      -1,    -1,    -1,    60,    -1,    -1,    -1,  1124,    -1,    -1,
     3257      67,    68,  1129,    -1,    -1,  1132,    -1,  1134,    -1,    -1,
     3258    1137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
     3259     116,   117,   118,  1150,    -1,    -1,    -1,    -1,   818,    -1,
     3260      -1,    -1,   822,    -1,    -1,   825,  1163,    -1,  1165,  1166,
     3261    1167,  1168,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3262      -1,    -1,    -1,    -1,  1181,    -1,  1183,    -1,    -1,    -1,
     3263    1187,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3264      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3265      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1215,  1216,
     3266      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3267      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3268      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3269      31,   217,    -1,   219,   220,   221,    37,    -1,   918,    -1,
     3270      -1,    -1,    -1,    -1,    -1,    43,    -1,    -1,  1265,  1266,
     3271      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1275,    60,
     3272      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,   255,
     3273      -1,    -1,    -1,   259,    -1,    76,    77,    -1,    -1,    -1,
     3274     960,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   275,
     3275      -1,    89,    -1,    -1,    -1,   975,    -1,    -1,    -1,    -1,
     3276     101,    99,   103,    -1,    -1,    -1,  1323,    -1,    -1,    -1,
     3277     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1335,    -1,
     3278    1337,  1338,  1339,    -1,    -1,    -1,    -1,    -1,    -1,  1009,
     3279      -1,    -1,  1349,    -1,    -1,    -1,    -1,    -1,   324,    -1,
     3280      -1,  1358,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
     3281    1030,  1031,    -1,  1370,    -1,    -1,   154,    -1,    -1,   345,
     3282      -1,    -1,  1085,    -1,   350,   351,    -1,    59,    -1,   167,
     3283      -1,    -1,   358,    65,    -1,    -1,    -1,    69,    -1,    -1,
     3284      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
     3285      -1,    -1,   190,    -1,    -1,    87,    -1,    -1,    -1,    -1,
     3286      -1,    -1,    -1,    -1,  1421,  1422,   204,    -1,  1088,   101,
     3287      -1,   103,  1085,    -1,   400,   213,   108,  1434,   110,   111,
     3288     112,   113,   114,   115,  1441,   223,    -1,    -1,    -1,    -1,
     3289      -1,    -1,   418,    -1,    -1,    -1,    -1,   423,    -1,   425,
     3290      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3291     248,    -1,  1469,    -1,    -1,   253,   442,    -1,    -1,   445,
     3292     446,    -1,    -1,    -1,    -1,    -1,  1146,    -1,   266,    -1,
     3293      -1,    -1,    -1,    -1,   272,   461,   274,    -1,    -1,    -1,
     3294    1497,    -1,    -1,    -1,  1207,    -1,    -1,    -1,    -1,   475,
     3295      -1,    -1,    -1,   291,    -1,    -1,   482,    -1,    -1,    -1,
     3296      -1,    -1,    -1,    -1,    -1,    -1,  1523,    -1,  1188,    -1,
     3297      -1,  1528,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3298      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3299      -1,    -1,    -1,    -1,  1207,    -1,   334,    -1,    -1,    -1,
     3300      -1,   339,    -1,    -1,    -1,  1225,    -1,    -1,    -1,    -1,
     3301      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3302      19,    20,    21,    22,    23,    24,    25,    26,    -1,   367,
     3303      29,    30,    31,   371,   372,    -1,   374,    -1,    37,    -1,
     3304      -1,    -1,   380,   381,    -1,   383,   384,    -1,   386,    -1,
     3305     388,    -1,     7,  1273,  1274,    10,    11,    12,    13,    14,
     3306      -1,    60,  1282,    -1,    -1,    -1,    -1,   405,    67,    68,
     3307     596,    -1,    -1,    -1,    -1,   413,    -1,    -1,    -1,    -1,
     3308      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3309      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,
     3310     438,    -1,    -1,   629,    59,    60,    -1,    -1,    -1,    -1,
     3311      65,   449,   111,    -1,    69,    -1,    -1,    72,    73,    74,
     3312      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3313      -1,    -1,    87,    -1,   472,    -1,    -1,    -1,    -1,    -1,
     3314     478,    -1,    -1,    -1,    -1,   483,   101,    -1,   103,    -1,
     3315      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3316     115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3317    1390,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3318      -1,   519,    -1,    -1,   278,   279,   280,    -1,    -1,    -1,
     3319     716,    -1,    -1,   287,   288,    -1,    -1,   535,   292,   293,
     3320      -1,    -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,    -1,
     3321     304,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3322      -1,    -1,    -1,  1443,   750,    -1,    -1,    -1,    -1,    -1,
     3323      -1,    -1,    -1,   571,   152,   153,    -1,    -1,    -1,    -1,
     3324      -1,    -1,   580,    -1,    -1,    -1,   340,    -1,    -1,   587,
     3325      -1,    -1,    -1,  1473,   592,    -1,    -1,    -1,    -1,    -1,
     3326      -1,    -1,    -1,    -1,    -1,   603,    -1,   185,    -1,    -1,
     3327      -1,    -1,    -1,    -1,   192,    -1,    -1,    -1,  1498,    -1,
     3328      -1,    -1,   376,   809,    -1,    -1,    -1,    -1,    -1,    -1,
     3329      -1,    -1,    -1,    -1,    -1,    -1,   822,    -1,    -1,    -1,
     3330      -1,    -1,    -1,    -1,    -1,    -1,   644,    -1,    -1,    -1,
     3331      -1,    -1,    -1,     0,    -1,   841,     3,     4,     5,     6,
     3332       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3333      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3334      -1,   679,    29,    30,    31,    32,   264,    -1,    35,    -1,
     3335      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3336      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3337      57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
     3338      67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
     3339      77,    -1,    -1,    -1,    -1,    -1,   734,    -1,    -1,    -1,
     3340      -1,   319,   928,    -1,    -1,    -1,   744,   745,    -1,   327,
     3341     328,    -1,   330,   331,   101,    -1,   103,    -1,    -1,   757,
     3342      -1,    -1,   340,    -1,   111,    -1,   344,    -1,   954,    -1,
     3343      -1,    -1,    -1,    -1,    -1,    -1,   774,    -1,   776,    -1,
     3344      -1,    -1,   780,    -1,    -1,   363,    -1,    -1,   366,    -1,
     3345      -1,    -1,    -1,    -1,    -1,   981,   550,   551,   552,   553,
     3346     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
     3347     564,   565,   566,   567,   392,    -1,    -1,    -1,   396,    36,
     3348      -1,    38,    -1,    -1,    -1,    -1,  1012,    -1,    -1,    -1,
     3349      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,   593,
     3350      -1,    -1,    59,    -1,    -1,    -1,    -1,   845,    65,   427,
     3351      67,    68,    69,    -1,   852,    72,    73,    74,    75,    76,
     3352      77,    -1,    79,    80,    -1,    -1,    -1,   865,    -1,   867,
     3353      87,    -1,   450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3354      -1,    -1,    -1,   881,   101,    -1,   103,    -1,   105,   106,
     3355     888,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
     3356      -1,    -1,   900,   481,    -1,   903,   484,    -1,    -1,    -1,
     3357      -1,    -1,    -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,
     3358      -1,    -1,    -1,   921,    -1,    -1,    -1,    -1,    -1,    -1,
     3359      -1,    -1,    -1,    -1,    -1,    -1,    -1,   691,    -1,    -1,
     3360      -1,    -1,    -1,    -1,    -1,   523,    -1,    -1,   526,   527,
     3361      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   713,
     3362      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3363     143,    -1,   726,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3364     153,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3365      -1,    -1,   165,   571,   572,    -1,    -1,    -1,    -1,    -1,
     3366      -1,    -1,  1188,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3367    1008,    -1,   590,   591,    -1,   593,    -1,   771,    -1,    -1,
     3368      -1,    -1,    -1,    -1,   602,    -1,   604,   605,    -1,    -1,
     3369      -1,    -1,    -1,   611,    -1,    -1,    -1,    -1,    -1,    -1,
     3370      -1,    -1,    -1,   621,   622,    -1,    -1,    -1,   802,   627,
     3371      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   636,   637,
     3372     638,    -1,   235,   817,    -1,  1063,    -1,    -1,    -1,    -1,
     3373      -1,  1069,    -1,    -1,    -1,    -1,   654,    -1,    -1,    -1,
     3374      -1,   659,   660,    -1,    -1,   663,   664,   260,    -1,    -1,
     3375      -1,    -1,   670,    -1,    -1,    -1,  1282,    -1,    -1,    -1,
     3376    1098,    -1,    -1,    -1,    -1,  1103,    -1,    -1,    -1,    -1,
     3377     688,   689,   690,  1111,   692,    -1,    -1,    -1,   696,     3,
    28503378       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    28513379      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2852       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2853        0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    2854        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2855        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2856        0,    34,     0,    35,     0,     0,   204,    38
    2857 };
    2858 
    2859 #define yypact_value_is_default(yystate) \
    2860   ((yystate) == (-1362))
    2861 
    2862 #define yytable_value_is_error(yytable_value) \
    2863   YYID (0)
    2864 
    2865 static const yytype_int16 yycheck[] =
    2866 {
    2867        1,   236,     0,     0,    42,   113,   693,   516,   183,   165,
    2868      166,    42,    42,     1,   182,   182,   201,   539,   693,   182,
    2869      182,   216,   276,   182,   651,   453,     0,     1,   625,   459,
    2870      182,   182,   605,    31,    31,  1055,   183,   896,   496,     0,
    2871      693,   452,   500,   992,    42,   341,    44,    44,   607,  1410,
    2872     1329,   605,   345,   896,   414,     0,    54,    31,   345,   607,
    2873      360,  1036,    60,    60,   364,    63,    63,    42,    66,    66,
    2874       31,     0,     1,   999,   434,   103,    54,    31,    66,   575,
    2875      605,    70,   442,   774,   771,   605,    31,     1,   263,    63,
    2876      198,   718,    66,  1414,   262,   262,   771,   754,    61,   262,
    2877      262,   184,    31,   262,  1035,  1036,   104,   605,    80,   107,
    2878      262,   262,    42,    93,   525,   113,   263,   605,   771,    37,
    2879      605,    42,  1048,  1484,   152,    49,   104,    37,    27,   107,
    2880       44,    37,    70,    80,    70,   253,   108,    66,     0,    42,
    2881       43,   130,   694,     0,   182,    80,   144,   144,   128,    42,
    2882       43,   182,   182,  1432,   152,   608,   640,   641,    37,   157,
    2883      157,   614,   109,    70,   716,   107,   739,   130,    44,    31,
    2884      639,   640,   641,   657,    31,   258,   259,    76,  1067,  1068,
    2885       42,   117,    44,   107,   182,   183,   183,   486,   657,   103,
    2886      486,  1512,   130,    42,    43,   109,  1517,   107,    60,   109,
    2887      198,    63,   109,   109,    66,   492,    63,   182,   206,   206,
    2888      113,   406,  1055,    83,   739,   105,  1537,   215,    29,   112,
    2889      218,   218,    80,  1544,   262,   107,    80,   402,   107,   143,
    2890      109,   262,   262,   109,    70,    62,   108,   215,   152,   129,
    2891      114,   111,   468,   115,   218,  1134,  1466,   731,   249,   225,
    2892      248,   248,   182,   107,   739,   402,   130,   115,  1233,     0,
    2893      833,   182,   731,   112,   262,   263,   263,   143,   244,    80,
    2894       81,   269,    11,   109,   248,  1295,    70,   452,   276,   833,
    2895      107,  1501,   144,  1503,   392,   713,   845,   248,   202,   290,
    2896       31,   269,   206,   593,   248,   157,   414,   845,   276,  1248,
    2897      596,   107,    37,   248,   494,   452,    94,  1282,   833,   484,
    2898      338,  1002,   420,   833,   607,   109,   434,   813,   426,   248,
    2899      182,   183,   236,   237,   442,    37,   686,   325,   325,   625,
    2900      206,    37,    70,   121,   630,   833,   636,   484,   822,   367,
    2901      639,   640,   641,    80,   206,   833,   344,   345,   833,   114,
    2902     1281,  1282,    94,   822,   268,   110,   218,   271,   657,  1218,
    2903      236,   218,   107,   361,   110,   130,   344,   365,   114,    67,
    2904      107,   109,   107,    71,   109,  1218,    74,   291,    76,   121,
    2905      294,   108,   835,   361,   129,    83,   248,   365,   115,    88,
    2906       89,   248,   268,   692,   392,   107,   692,   109,   112,   953,
    2907      262,   107,   129,   109,   402,   402,   954,  1064,    80,   422,
    2908      423,     4,     5,     6,     7,     8,     9,  1014,   294,   609,
    2909      972,   114,   420,   613,   338,   124,   125,   341,   426,   240,
    2910      428,  1406,   731,   953,  1517,  1455,   108,  1517,    70,    32,
    2911       72,    73,  1462,   115,   634,   108,   360,   110,   638,   675,
    2912      364,   114,  1295,   367,   452,   953,    70,  1537,    72,    73,
    2913        3,  1544,   108,   325,  1544,   341,   129,   130,   767,   115,
    2914      471,   767,  1398,  1399,    67,  1406,    69,     3,   476,    70,
    2915      112,    72,    73,   345,   114,   498,   484,   484,   997,   346,
    2916      488,   488,   922,   107,   492,  1515,   652,   107,   112,   753,
    2917      528,   113,   114,   516,   962,     0,  1133,   248,   422,   423,
    2918      108,   209,   253,     0,   488,   516,   114,   129,   109,     0,
    2919      695,   932,   129,   822,   824,   693,   693,   488,   828,   940,
    2920      693,   693,   533,   114,   693,   536,   450,   538,   539,   453,
    2921      402,   693,   693,   488,    31,   459,   422,   423,   695,   130,
    2922      896,   659,   845,   107,   108,   109,   114,   471,   845,   488,
    2923      291,  1109,   107,   114,    70,   376,    72,    73,   686,   582,
    2924     1023,  1024,   130,   114,   985,  1127,    70,   107,   661,   130,
    2925       74,   114,   496,   809,   498,   586,   500,    81,    82,   130,
    2926      452,   108,   108,   819,   107,   593,   510,   130,   114,   107,
    2927      514,   107,   516,   517,    63,    70,   112,   605,   834,   607,
    2928      728,   114,  1455,   107,   528,   109,    81,    82,   918,  1462,
    2929      477,    80,   498,   117,   107,   114,   488,   130,   626,   114,
    2930      492,   488,  1184,  1185,   127,   110,   129,   114,  1295,   114,
    2931      516,   130,   107,    78,   642,   130,   457,   108,   626,   594,
    2932      348,   462,   350,   130,   114,   114,  1487,   658,   656,   660,
    2933      107,   659,  1493,   691,   642,     0,     1,  1095,   582,   114,
    2934      130,   958,  1515,   414,   109,   108,   111,   867,   656,   593,
    2935      115,   114,   596,  1514,   495,   130,   497,   882,  1519,   114,
    2936       78,   422,   423,   434,   108,   693,    31,   695,   157,   110,
    2937      107,   442,   109,   114,   108,   130,   582,   108,   903,    44,
    2938      117,   625,  1058,   278,   108,  1372,   630,   107,  1014,   109,
    2939      596,   109,   636,   111,   107,   726,   109,   115,   107,   964,
    2940      109,    66,   888,   108,   117,   107,  1035,   109,   766,   114,
    2941      438,   739,   740,   605,   108,   607,   107,   488,   109,   625,
    2942      114,   110,   108,   107,   630,   753,   117,   932,   114,   218,
    2943       70,   248,    72,    73,    74,   940,   253,   108,   103,   959,
    2944      627,    81,    82,   114,   510,   753,   108,   691,   514,   510,
    2945      107,   517,   114,   514,   108,   932,   517,   110,   108,  1311,
    2946      114,   114,   108,   940,   114,   113,  1096,   256,   114,   713,
    2947      107,   260,  1459,   107,  1461,   117,  1032,  1033,   108,   144,
    2948      122,   123,   110,   108,   114,   130,   114,   152,   153,   114,
    2949        4,     5,     6,     7,     8,     9,   107,   108,   109,   743,
    2950       62,   693,    70,   695,  1521,   833,    74,   648,   110,   108,
    2951      571,  1393,  1027,    81,    82,   114,  1521,   845,   183,   108,
    2952      108,   107,   766,   109,  1153,   114,   114,  1153,  1410,  1516,
    2953      107,   108,   719,   198,  1090,  1091,   201,   202,  1521,   107,
    2954     1125,   206,  1218,    44,  1129,   130,   733,   739,   740,   117,
    2955       83,    84,    85,    67,   829,    69,   107,   346,    70,   112,
    2956       72,    73,   227,   108,  1050,   896,   231,   708,   233,   114,
    2957      107,   108,   109,   714,   107,   130,   109,   242,   111,   112,
    2958      824,   108,    70,   248,   828,   108,    74,   114,   253,   130,
    2959      918,   114,   896,    81,    82,   119,   120,   414,   263,    86,
    2960       87,  1483,  1484,   107,   932,   109,   271,  1233,   109,   107,
    2961      108,   109,   940,   508,    70,   686,   130,   434,   107,   107,
    2962      109,   896,    90,    91,    44,   442,    56,    57,    58,   117,
    2963      958,    10,    11,    12,    13,    14,  1312,   896,   427,   826,
    2964       60,   833,   107,    63,   109,   963,    66,    70,   112,    72,
    2965       73,    74,  1281,   845,  1254,  1255,  1256,   728,    37,   963,
    2966      107,   112,   109,   994,   107,   107,   997,   109,   999,   486,
    2967       80,   488,   107,   338,   918,  1231,   341,   110,   922,  1117,
    2968       80,   698,   347,   700,   113,   114,    65,   118,   477,   126,
    2969     1366,   108,   109,  1369,    92,   360,   114,   115,   109,   364,
    2970       56,    57,   367,   127,   963,   206,  1262,   113,   114,   896,
    2971      560,   561,   562,   563,  1270,  1271,  1272,  1048,   962,   963,
    2972      964,   114,   115,   107,   144,   114,   115,  1058,    42,    43,
    2973     1061,  1062,  1063,   129,   556,   557,   237,   157,  1414,   107,
    2974      932,   110,   108,  1419,   558,   559,   110,   888,   940,   414,
    2975      108,  1055,   564,   565,   895,  1496,   108,   108,   964,    83,
    2976       84,    85,  1318,   183,   429,   108,   958,   268,   108,   434,
    2977     1014,   107,   110,  1449,   109,   114,   671,   442,   110,   129,
    2978     1055,   112,   107,   107,   110,   109,   206,   111,   112,  1117,
    2979      291,   108,   108,   294,   115,   110,  1055,   110,   218,   110,
    2980      110,    28,   114,   468,   108,  1546,   471,   115,  1014,   108,
    2981      599,   112,   110,    50,   694,    52,   113,   113,    55,    56,
    2982       57,   486,    59,   488,   115,   896,   108,   113,   107,   114,
    2983     1017,   496,   108,   108,   108,   500,   716,    74,   627,   108,
    2984      130,   108,   115,   632,   108,   986,   114,   108,   108,    86,
    2985       87,  1095,  1096,   108,   108,  1213,   108,   108,   108,  1535,
    2986      108,   108,   757,   528,   529,  1541,   108,   108,  1055,   686,
    2987       70,    28,    72,    73,    74,   692,  1552,   108,  1196,   108,
    2988     1556,    81,    82,   113,   129,  1213,     3,  1218,   110,   108,
    2989      108,  1195,  1196,    10,    11,    12,    13,    14,   108,   113,
    2990       10,    11,    12,    13,    14,   325,   108,   107,   114,   109,
    2991      575,   728,   110,   110,  1218,   115,   108,   117,   108,  1237,
    2992       37,   114,   108,  1254,  1255,  1256,   806,    37,   593,   594,
    2993      719,   596,   115,  1237,   114,   112,   114,  1196,   110,   108,
    2994      114,   114,   607,  1218,   733,  1086,   108,   108,    65,   450,
    2995      767,  1389,   453,   107,   110,    65,   107,   107,   459,  1218,
    2996      625,   107,   107,   110,   130,   630,  1531,   115,   108,  1213,
    2997      113,   636,   108,   108,   639,   640,   641,   110,  1237,   113,
    2998     1311,  1312,   402,   127,  1055,   112,  1290,   110,   130,   114,
    2999      114,  1295,   657,  1237,   110,   108,   108,   107,    45,   109,
    3000      108,   110,   108,   110,   884,   110,   110,   117,  1195,   510,
    3001      675,  1329,   110,   514,   110,   130,   517,  1522,     0,   130,
    3002     1295,   686,   113,  1521,  1521,  1329,   691,   692,  1521,  1521,
    3003      695,  1218,  1521,   130,   108,  1366,  1295,   826,  1369,  1521,
    3004     1521,  1546,   130,   130,    63,  1522,   113,   115,   108,    31,
    3005     1191,   110,   113,   110,   110,   110,   110,   110,  1496,   110,
    3006     1388,  1389,   110,   728,   108,   108,   731,  1398,  1399,  1546,
    3007     1329,   110,   110,   107,   107,   740,   107,    58,   743,   896,
    3008     1388,   108,   108,  1414,    66,  1329,   115,    70,  1419,    72,
    3009       73,    74,   972,   130,   112,   114,   110,   110,    81,    82,
    3010      108,   766,   767,  1290,   341,   342,  1437,   772,  1295,   110,
    3011      108,   107,   107,    52,  1432,    94,   353,   354,  1449,    94,
    3012      130,   113,  1002,   110,   107,   114,   109,    40,  1432,   115,
    3013      108,   108,   108,   130,   117,   108,  1197,  1198,   157,  1200,
    3014      130,   108,   108,    94,   809,  1206,    94,  1218,  1209,   108,
    3015      130,  1455,   108,  1521,   819,   115,    95,   822,  1462,   824,
    3016     1521,  1521,   827,   828,   829,   130,  1497,   130,  1496,   834,
    3017      108,   153,  1052,  1432,   108,  1506,   113,   110,   110,   844,
    3018     1455,  1512,   107,   130,   130,   113,  1517,  1462,  1432,   113,
    3019      108,   108,   108,  1521,  1522,  1522,  1455,   108,  1070,   218,
    3020      130,   566,   569,  1462,  1535,    70,  1537,    72,    73,    74,
    3021     1541,  1515,   713,  1544,   567,   570,    81,    82,  1546,  1546,
    3022     1464,  1552,  1466,   568,  1295,  1556,    54,  1218,  1017,  1484,
    3023     1125,   896,  1374,  1556,  1129,  1130,   468,   256,  1055,  1130,
    3024     1515,   260,   107,  1305,   109,   227,  1334,  1127,   280,  1462,
    3025      940,   190,   117,   918,  1086,   450,  1515,  1501,   462,  1503,
    3026      700,   293,   294,   450,   942,   986,   248,   586,  1455,   888,
    3027      653,   253,   743,   305,   213,  1462,   104,   960,  1237,   107,
    3028      488,   753,   574,    -1,   223,   574,   574,  1531,    -1,   954,
    3029        4,     5,     6,     7,     8,     9,    -1,   962,   963,    -1,
    3030       -1,    -1,    -1,    -1,  1184,  1185,    -1,  1368,    -1,   341,
    3031       -1,    -1,    -1,    -1,   979,    -1,    -1,    -1,    -1,    -1,
    3032       -1,   675,    -1,    -1,   152,  1531,    -1,   346,  1515,  1521,
    3033       10,    11,    12,    13,    14,    -1,  1153,    -1,    -1,    10,
    3034       11,    12,    13,    14,    -1,   377,    -1,    -1,  1243,  1014,
    3035       -1,    -1,   291,    67,    -1,    69,    -1,    37,    -1,    -1,
    3036       -1,    -1,  1027,    -1,    -1,   347,    37,  1032,  1033,    -1,
    3037     1035,  1036,    -1,    -1,     0,    10,    11,    12,    13,    14,
    3038       -1,    -1,    -1,    -1,  1455,    65,    -1,   215,    -1,    -1,
    3039     1055,  1462,    -1,    -1,    65,    -1,    -1,    -1,    -1,    70,
    3040       -1,  1218,    37,    74,    -1,    31,  1195,    -1,   427,    -1,
    3041       81,    82,    -1,    -1,    -1,    -1,  1233,    -1,    -1,    -1,
    3042       -1,   922,    -1,    -1,    -1,  1090,  1091,   107,    -1,   109,
    3043       65,  1096,   414,    -1,    -1,  1330,   107,   117,    -1,  1334,
    3044       66,   269,    -1,   675,  1515,    -1,   117,   429,   276,    -1,
    3045       -1,    -1,   434,    -1,    -1,   809,    -1,    -1,   477,    -1,
    3046      442,    -1,    -1,    -1,    -1,   819,    -1,    -1,    -1,    -1,
    3047       -1,    -1,   107,    -1,   109,    -1,    -1,    -1,  1295,    -1,
    3048      834,    -1,   117,   720,    -1,   722,   468,    70,  1153,    72,
    3049       73,    74,   729,   730,    -1,     0,     1,   734,    81,    82,
    3050      439,  1290,    -1,    -1,   486,    -1,   488,    -1,    70,   746,
    3051       72,    73,    74,  1393,   751,    -1,   344,    -1,    -1,    81,
    3052       82,   553,   554,   555,   107,    -1,    31,   153,    -1,    -1,
    3053     1410,  1196,    63,   361,   473,    -1,    -1,   365,    -1,   776,
    3054       -1,  1436,    73,    -1,    -1,   107,    -1,   529,  1213,    -1,
    3055       -1,    -1,    -1,  1218,    -1,   117,    -1,    -1,    63,    -1,
    3056       -1,    66,    -1,    -1,   596,    -1,  1231,    -1,  1233,    -1,
    3057       -1,   510,  1237,    -1,    -1,   514,    -1,   809,   517,    -1,
    3058      599,    -1,    -1,   114,   821,    -1,    -1,   819,    -1,    -1,
    3059       -1,    -1,    -1,    -1,  1095,    -1,    -1,  1262,    -1,    -1,
    3060      428,    -1,   834,  1483,  1484,  1270,  1271,  1272,   627,    -1,
    3061       -1,    -1,   594,   632,    -1,    -1,  1281,  1282,    -1,    -1,
    3062       -1,    -1,   248,    -1,    -1,    -1,   157,   253,    -1,    -1,
    3063     1295,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1455,    -1,
    3064       -1,   878,   879,   880,   881,  1462,   883,    -1,   153,    -1,
    3065       -1,    -1,    -1,  1318,    -1,    -1,    -1,   639,   640,   641,
    3066       -1,    -1,   899,    -1,  1329,    -1,    -1,    10,    11,    12,
    3067       13,    14,    -1,    -1,    -1,   657,   913,    -1,  1032,  1033,
    3068       70,    -1,    72,    73,    74,    -1,    -1,   218,    -1,    -1,
    3069       -1,    81,    82,   675,    37,    -1,    -1,   729,  1515,    -1,
    3070      719,    -1,    -1,    -1,   686,    -1,    -1,    -1,    -1,    -1,
    3071      692,    -1,    -1,   218,   733,   952,    -1,   107,    -1,    -1,
    3072       -1,   347,    65,    -1,    -1,   256,    -1,    70,    -1,   260,
    3073       -1,    74,    -1,    -1,    -1,   674,  1090,  1091,    81,    82,
    3074       -1,  1406,   774,   248,   683,   276,   728,    -1,   687,   731,
    3075       -1,    -1,    -1,    -1,   991,    -1,     0,    -1,    -1,    -1,
    3076       -1,   998,    -1,    -1,   107,   593,  1003,  1432,    -1,    -1,
    3077       -1,  1008,    -1,  1010,   117,    -1,    -1,  1014,  1015,  1016,
    3078       -1,    -1,  1019,    -1,    -1,   767,    -1,    31,   414,   821,
    3079     1455,  1028,    -1,    -1,    -1,    -1,    -1,  1462,   626,    -1,
    3080     1032,  1033,    -1,   429,    -1,    -1,    -1,   826,   434,  1046,
    3081     1047,    -1,    -1,    -1,   642,   346,   442,    -1,    -1,    -1,
    3082       -1,    -1,    66,    -1,    -1,    -1,    -1,   809,   656,    -1,
    3083       -1,    -1,    -1,    -1,    -1,    -1,  1073,   819,    -1,  1076,
    3084      822,    -1,   468,    -1,    -1,   827,    -1,   829,    -1,    -1,
    3085     1515,    -1,   834,    -1,    -1,    -1,    -1,  1522,  1090,  1091,
    3086      486,     3,   488,    70,    -1,    72,    73,    74,    10,    11,
    3087       12,    13,    14,    -1,    81,    82,    -1,  1114,    -1,    -1,
    3088       -1,    -1,    -1,  1120,  1121,    -1,    -1,    -1,    -1,    -1,
    3089       -1,    -1,    -1,    -1,  1131,    37,   427,    -1,    -1,  1136,
    3090      107,    -1,  1139,   529,  1141,    -1,    -1,  1144,  1262,   153,
    3091      117,    -1,     0,   444,   896,    -1,  1270,  1271,  1272,    -1,
    3092     1157,    -1,    -1,    65,   429,   753,    -1,    -1,    -1,    -1,
    3093       -1,    -1,    -1,  1170,    -1,  1172,  1173,  1174,  1175,    -1,
    3094       -1,    -1,    -1,    31,    -1,    -1,   477,    -1,    -1,    -1,
    3095       -1,  1188,    -1,  1190,    -1,    -1,    -1,  1194,    -1,    -1,
    3096       -1,    -1,    -1,  1464,  1318,  1466,    -1,    -1,   594,    -1,
    3097       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,
    3098       -1,   920,  1014,   488,    -1,     3,  1223,  1224,    -1,    -1,
    3099       -1,    -1,    10,    11,    12,    13,    14,   979,  1017,  1231,
    3100     1501,    -1,  1503,    -1,   248,   186,    -1,    -1,    -1,   253,
    3101       -1,    -1,   193,   639,   640,   641,    -1,    -1,    -1,    37,
    3102       -1,    -1,    -1,  1055,   529,    -1,    -1,    -1,    -1,    -1,
    3103     1262,   657,    -1,    -1,    -1,    -1,  1273,  1274,  1270,  1271,
    3104     1272,    -1,    -1,    -1,    -1,    -1,  1283,    65,    -1,   675,
    3105     1032,  1033,    -1,  1035,  1036,    -1,    -1,    -1,    -1,    -1,
    3106      686,    -1,    -1,    -1,    -1,   153,   692,    -1,   599,    -1,
    3107       -1,    -1,    -1,  1055,    -1,    -1,    -1,    -1,    -1,    -1,
    3108       -1,    -1,    -1,    -1,   265,    -1,  1318,    -1,    -1,   594,
    3109      918,    -1,    -1,    -1,    -1,    -1,   627,    -1,  1335,    -1,
    3110       -1,   632,   728,   347,    -1,   731,    -1,    -1,  1090,  1091,
    3111     1347,    -1,  1349,  1350,  1351,    -1,    -1,    70,    -1,    72,
    3112       73,    74,    -1,    -1,  1361,    -1,    -1,  1066,    81,    82,
    3113       -1,    -1,    -1,  1370,   639,   640,   641,    -1,  1170,   320,
    3114       -1,   767,    -1,    -1,    -1,    -1,    -1,   328,    -1,  1386,
    3115      331,    -1,   657,    -1,   107,    -1,   109,    -1,    -1,    -1,
    3116      248,    -1,    -1,    -1,   117,   253,    -1,    -1,    -1,    -1,
    3117      414,  1153,    -1,    -1,    -1,    -1,  1195,    -1,    -1,    -1,
    3118       -1,    -1,    -1,   809,    -1,   429,    -1,    -1,   719,    -1,
    3119      434,    -1,    -1,   819,    -1,    -1,   822,    -1,   442,    -1,
    3120       -1,   827,   733,   829,    -1,  1442,  1443,    -1,   834,    -1,
    3121       -1,    -1,    -1,   394,  1196,    -1,    -1,   398,  1455,    -1,
    3122       -1,    -1,   753,    -1,   468,  1462,   731,    -1,    -1,    -1,
    3123       -1,    -1,    -1,    -1,    -1,    -1,  1218,    -1,    -1,    -1,
    3124       -1,    -1,   486,    -1,   488,    -1,    -1,    -1,    -1,  1231,
    3125       -1,  1233,    -1,    -1,    -1,    -1,    -1,    -1,  1495,   347,
    3126       -1,    -1,  1499,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3127      896,  1290,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3128     1262,    -1,    -1,    -1,    -1,   529,    -1,    -1,  1270,  1271,
    3129     1272,  1528,    -1,  1530,    -1,   826,    -1,    -1,    -1,  1281,
    3130     1282,    -1,   483,    -1,    10,    11,    12,    13,    14,    -1,
    3131       -1,    -1,    -1,  1295,    -1,    -1,    -1,   822,    -1,    -1,
    3132       -1,  1558,  1559,    -1,   829,    -1,   414,    -1,    -1,  1566,
    3133     1567,    37,    -1,    -1,    -1,    -1,  1318,    -1,    -1,    -1,
    3134       -1,   429,    -1,    -1,    -1,    -1,   434,    -1,    -1,    -1,
    3135      594,    -1,    -1,   979,   442,    -1,    -1,    -1,    -1,    65,
    3136       -1,    -1,    -1,    -1,    70,  1304,    72,    73,    74,    -1,
    3137       -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    -1,    -1,
    3138      468,    -1,    -1,    -1,    -1,  1213,    -1,    -1,    -1,    -1,
    3139       -1,   896,    -1,   574,   575,   639,   640,   641,   486,    -1,
    3140      488,   107,    -1,   109,    -1,    -1,  1032,  1033,    -1,  1035,
    3141     1036,   117,    -1,   657,    -1,    -1,    -1,    -1,    -1,    -1,
    3142       -1,    -1,    -1,    -1,  1406,    -1,    -1,    -1,    -1,  1055,
    3143       -1,   675,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3144       -1,   529,   686,    -1,    -1,    -1,    -1,    -1,   692,    10,
    3145       11,    12,    13,    14,    -1,    -1,    -1,    -1,   963,    -1,
    3146       -1,    -1,    -1,    -1,  1090,  1091,    -1,    25,    26,    27,
    3147       -1,    -1,    -1,  1455,   979,    -1,    37,    -1,    -1,    -1,
    3148     1462,   662,    -1,    -1,   728,   666,  1017,   731,    95,    96,
    3149       97,    98,    99,   100,   101,   102,   103,   104,    -1,    -1,
    3150       -1,    -1,    -1,    -1,    65,    -1,   594,    -1,    -1,    70,
    3151       -1,    72,    73,    74,    -1,    -1,    -1,    -1,   699,    -1,
    3152       81,    82,   129,   767,  1463,    -1,  1465,  1153,    -1,    -1,
    3153     1035,  1036,    -1,  1515,    -1,    -1,    -1,    -1,    96,    -1,
    3154       98,    -1,    -1,    -1,    -1,    -1,   107,    -1,   109,    -1,
    3155     1055,   639,   640,   641,    -1,    -1,   117,    -1,    -1,    -1,
    3156     1388,  1500,    -1,  1502,   122,   809,    -1,    -1,    -1,   657,
    3157     1196,    -1,    -1,    -1,    -1,   819,    -1,    -1,   822,    -1,
    3158       -1,    -1,    -1,   827,    -1,   829,    -1,   675,    -1,    -1,
    3159      834,    -1,  1218,    -1,    -1,    -1,    -1,    -1,   686,    10,
    3160       11,    12,    13,    14,   692,  1231,  1545,  1233,  1547,    -1,
    3161       -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3162      178,  1560,  1561,    -1,    -1,    -1,    37,    -1,   186,    -1,
    3163      188,   189,   813,    -1,    -1,   193,  1262,   195,   196,    37,
    3164      728,    -1,    -1,   731,  1270,  1271,  1272,    -1,    -1,    25,
    3165       26,    27,   896,    -1,    65,  1281,  1282,    -1,    -1,    70,
    3166       -1,    72,    73,    74,  1195,    -1,    -1,    65,    -1,  1295,
    3167       81,    82,    70,    -1,    72,    73,    74,    -1,    -1,   767,
    3168       -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
    3169     1195,  1196,  1318,    -1,    -1,    -1,   107,    -1,   109,    -1,
    3170       -1,    -1,    -1,    -1,    -1,    -1,   117,   265,    -1,   107,
    3171       -1,    -1,    -1,  1218,    -1,    -1,    -1,    -1,    -1,   117,
    3172       96,   809,    98,    -1,    -1,    -1,    -1,    -1,    63,    -1,
    3173       -1,   819,  1237,    -1,   822,   979,    -1,    -1,    73,   827,
    3174       75,   829,    77,    -1,    44,   926,   834,    -1,    -1,    84,
    3175       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1290,
    3176       -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,    -1,
    3177       10,    11,    12,    13,    14,    -1,  1281,  1282,    -1,   114,
    3178     1406,   116,   117,   118,    -1,  1290,    -1,    -1,  1032,  1033,
    3179     1295,  1035,  1036,    -1,    -1,    -1,    -1,    37,    -1,    -1,
    3180       -1,    -1,   178,    -1,    -1,    -1,    -1,    -1,   896,   109,
    3181       -1,  1055,   188,   189,   114,    -1,    -1,   193,    -1,   195,
    3182      196,    -1,   157,  1004,  1329,    65,    -1,    -1,    -1,  1455,
    3183       70,    -1,    72,    73,    74,    -1,  1462,    -1,    -1,  1020,
    3184       -1,    81,    82,   143,    -1,    -1,  1090,  1091,    -1,    -1,
    3185       -1,    -1,    -1,   153,    -1,    -1,    -1,   157,    -1,    -1,
    3186       -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,
    3187       -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,
    3188       -1,    -1,    -1,   218,    -1,   220,   221,   222,    -1,  1515,
    3189       -1,   979,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3190       -1,  1406,    -1,    -1,    -1,    -1,   206,    -1,    -1,  1153,
    3191       -1,    -1,    -1,    -1,    -1,    -1,  1097,    -1,   218,    -1,
    3192       -1,   256,    -1,    -1,    -1,   260,    -1,  1432,    -1,    -1,
    3193       -1,    -1,    -1,    -1,    -1,    -1,   236,   237,    -1,    -1,
    3194       -1,   276,    -1,    -1,  1032,  1033,    -1,  1035,  1036,    -1,
    3195     1455,    -1,  1196,    -1,    -1,    -1,    -1,  1462,    -1,    -1,
    3196      260,    -1,    -1,    -1,    -1,    -1,    -1,  1055,   268,    -1,
    3197       -1,    -1,    -1,    -1,  1218,    -1,    -1,    -1,    -1,    -1,
    3198       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1231,    -1,  1233,
    3199      325,   291,    -1,    -1,   294,    -1,    -1,    -1,    -1,    -1,
    3200       -1,    -1,  1090,  1091,    -1,    -1,    -1,    -1,    -1,    -1,
    3201     1515,   346,    -1,    -1,    -1,    -1,   351,   352,  1262,    -1,
    3202      578,   579,    -1,    -1,   359,    -1,  1270,  1271,  1272,    -1,
    3203       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1281,  1282,    -1,
    3204       -1,   341,    -1,    -1,    -1,    -1,   346,    -1,    -1,    -1,
    3205      608,  1295,    -1,   611,   612,    36,   614,    38,   616,   617,
    3206       -1,    -1,    -1,   621,   622,  1153,    -1,   402,    -1,    -1,
    3207       -1,    -1,    -1,    -1,  1318,    -1,    -1,    -1,    -1,    -1,
    3208       -1,    -1,    -1,    64,    -1,   420,    -1,    -1,    -1,    70,
    3209      425,    -1,   427,    74,    -1,    -1,    77,    78,    79,    80,
    3210       81,    82,    -1,    84,    85,    -1,    -1,    -1,  1196,   444,
    3211       -1,    92,   447,   448,    -1,    -1,    -1,    -1,    -1,    -1,
    3212       -1,    -1,   422,   423,    -1,    -1,   107,    -1,   463,   429,
    3213     1218,    -1,    -1,    -1,    -1,   116,   117,   118,   119,   120,
    3214      121,   699,   477,  1231,    -1,  1233,   704,   705,    -1,   484,
    3215      450,    -1,   710,   453,    -1,    -1,    -1,    -1,    -1,   459,
    3216       -1,    -1,  1406,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3217       -1,    -1,    -1,    -1,  1262,    -1,    -1,    -1,    -1,    -1,
    3218       -1,    -1,  1270,  1271,  1272,    -1,   486,    -1,    -1,    -1,
    3219       -1,    -1,    -1,  1281,  1282,    -1,    -1,    -1,   498,    -1,
    3220       -1,    -1,   578,   579,    -1,    -1,    43,  1295,    -1,    -1,
    3221      510,  1455,    -1,    -1,   514,    -1,   516,   517,  1462,    -1,
    3222       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   529,
    3223     1318,    -1,   608,    -1,    -1,   611,   612,    -1,   614,    -1,
    3224      616,   617,    -1,    -1,    -1,   621,   622,    -1,    -1,    -1,
    3225       -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3226       -1,    -1,    99,    -1,   599,    -1,    -1,    -1,    -1,    -1,
    3227       -1,  1515,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3228       -1,    -1,   582,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3229       -1,    -1,   627,    -1,   594,    -1,   596,   632,    -1,   599,
     3380      24,    25,    26,  1141,    -1,    29,    30,    31,    -1,    -1,
     3381     728,   729,    -1,    37,    -1,  1153,    -1,    -1,  1156,    -1,
     3382    1158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3383      -1,    -1,    -1,    -1,  1172,  1173,    60,    -1,    62,    -1,
     3384      64,    -1,    -1,    67,    68,   763,   764,    -1,    -1,    -1,
     3385     768,   769,    -1,    -1,    -1,    -1,  1194,    -1,    -1,    -1,
     3386      -1,    -1,   375,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3387      -1,    -1,    -1,    -1,   968,    -1,    -1,    -1,    -1,   103,
     3388      -1,    -1,  1220,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3389      -1,   809,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3390     818,    -1,    -1,   997,    -1,    -1,   824,   825,    -1,    -1,
     3391      -1,   829,    -1,   831,    -1,  1009,    -1,    -1,    -1,    -1,
     3392      -1,    -1,    -1,   841,    -1,    -1,    -1,    10,    11,    12,
     3393      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3394      23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
     3395      -1,    -1,    -1,    -1,    37,    -1,  1050,    -1,    -1,    -1,
     3396      -1,    -1,    -1,   476,    -1,    -1,    -1,    -1,    -1,    -1,
     3397      -1,    -1,    -1,    -1,  1312,    -1,  1314,    60,    -1,    -1,
     3398      -1,    -1,    65,    -1,    67,    68,    69,  1513,    71,  1327,
     3399      -1,  1329,    -1,    76,    77,    -1,   914,    -1,    -1,    -1,
     3400      -1,   514,    -1,    -1,   922,    -1,    -1,    -1,    -1,  1347,
     3401     928,    -1,    -1,    -1,   527,    -1,    -1,    -1,   936,    -1,
     3402     103,   534,    -1,    -1,    -1,  1363,  1120,    -1,   111,    -1,
     3403      -1,   949,   950,  1371,   547,   548,  1374,    -1,    10,    11,
     3404      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3405      22,    23,    24,    25,    26,    27,   569,   975,  1396,    -1,
     3406      -1,    -1,    -1,   981,    -1,    37,   579,  1405,    -1,  1163,
     3407    1408,  1409,    -1,   586,    -1,    -1,    -1,    -1,   591,    -1,
     3408      -1,   999,  1000,  1177,  1178,    -1,    -1,    -1,    60,    -1,
     3409      -1,  1009,    -1,    -1,    -1,    -1,    -1,  1015,  1016,    71,
     3410    1018,  1019,  1020,    -1,    -1,    -1,    -1,  1445,    -1,  1447,
     3411      -1,    -1,  1030,  1031,    -1,    -1,    -1,    -1,    -1,    -1,
     3412      -1,    -1,    -1,    -1,  1462,    -1,    -1,    -1,   641,    -1,
     3413      -1,    -1,    -1,    -1,    -1,    -1,   649,     4,     5,     6,
     3414       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3415      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3416      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3417      37,  1089,  1090,  1091,    -1,    -1,   689,    -1,    -1,    -1,
     3418      -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,    -1,    -1,
     3419      -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
     3420      67,    68,    -1,     3,     4,     5,     6,     7,     8,     9,
    32303421      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3231       20,    21,    22,    23,    24,    25,    26,   154,  1406,    29,
    3232       30,    31,    -1,    -1,    -1,   625,    -1,    37,   704,   705,
    3233      630,   168,    -1,    -1,   710,    -1,    -1,    -1,    -1,   639,
    3234      640,   641,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3235       -1,    -1,    -1,    -1,   191,    65,    -1,   657,    -1,    -1,
    3236       70,    -1,    72,    73,    74,    -1,    -1,  1455,   205,    -1,
    3237       -1,    81,    82,    -1,  1462,    -1,    -1,   214,    -1,    -1,
    3238       -1,    -1,    -1,    -1,   719,    -1,    -1,   224,    -1,    -1,
    3239       -1,    -1,   692,    -1,    -1,    -1,    -1,   107,   733,   109,
    3240       -1,    36,    -1,    38,    -1,    -1,    -1,   117,    -1,    -1,
    3241       -1,    -1,   249,   713,    -1,    -1,    -1,   254,   753,    -1,
    3242       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1515,    -1,    64,
    3243      267,   731,    -1,   733,    -1,    70,   273,    -1,   275,    74,
    3244       -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
    3245       85,    -1,    -1,    -1,    -1,   292,    -1,    92,    -1,    -1,
    3246       -1,    -1,    -1,    -1,    -1,    -1,    -1,   767,    -1,    -1,
    3247       -1,    -1,   107,    -1,   109,    -1,    -1,   112,   813,    -1,
    3248       -1,   116,   117,   118,   119,   120,   121,    -1,    -1,    -1,
    3249       -1,   826,    -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,
    3250       -1,    -1,    -1,   340,    -1,    -1,    -1,    -1,    -1,    -1,
    3251      845,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3252       -1,    -1,   822,    -1,    -1,    -1,   826,    -1,    -1,   829,
    3253       -1,   368,    -1,    -1,  1092,   372,   373,    -1,   375,    -1,
    3254       -1,    -1,    -1,    -1,    -1,   382,   383,    -1,   385,   386,
    3255       -1,   388,    -1,   390,    -1,    -1,    -1,    -1,    -1,    -1,
    3256       -1,     7,    -1,    -1,    10,    11,    12,    13,    14,    -1,
    3257      407,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   415,    -1,
     3422      20,    21,    22,    23,    24,    25,    26,    -1,  1146,    29,
     3423      30,    31,    32,    -1,    -1,    35,   103,    37,    38,    -1,
     3424      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3425      -1,   764,    -1,   766,    -1,    -1,    -1,    57,    -1,   772,
     3426      60,    -1,    62,    -1,    64,    65,   779,    67,    68,    69,
     3427      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
     3428      -1,    -1,    -1,  1377,    -1,    -1,    -1,    -1,  1206,    -1,
    32583429      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3259       36,    37,    38,    -1,    -1,    -1,    -1,   932,    -1,    -1,
    3260       -1,    -1,    -1,   440,    -1,    -1,    -1,    -1,    -1,    -1,
    3261       -1,    -1,    -1,    -1,   451,    -1,    -1,    -1,    64,    65,
    3262       -1,    -1,   922,   958,    70,    -1,    -1,    -1,    74,    -1,
    3263       -1,    77,    78,    79,    80,    81,    82,   474,    84,    85,
    3264       -1,    -1,    -1,   480,    -1,    -1,    92,    -1,   485,    -1,
    3265      985,    -1,    -1,    -1,    -1,    -1,    -1,  1215,    -1,    -1,
    3266       -1,   107,    -1,   109,   964,    -1,    -1,    -1,    -1,    -1,
    3267      116,   117,   118,   119,   120,   121,    -1,    -1,    -1,   979,
    3268       -1,    -1,  1017,    -1,   521,    -1,    -1,    -1,    -1,    -1,
    3269       -1,    -1,    -1,  1028,    -1,    -1,    -1,    -1,    -1,    -1,
    3270      537,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3271       -1,    -1,    -1,    -1,  1014,    -1,  1092,    -1,    -1,     7,
    3272       -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3273       -1,    -1,    -1,    -1,    -1,  1035,  1036,   574,    -1,    -1,
    3274       -1,    -1,    -1,    -1,    -1,   143,   583,    -1,    36,    37,
    3275       38,    -1,    -1,   590,    -1,   153,    -1,    -1,   595,    -1,
    3276       -1,    -1,    -1,    -1,    -1,    -1,    -1,   165,   166,   606,
    3277       -1,    -1,    -1,    -1,  1109,    -1,    64,    65,    -1,    -1,
    3278       -1,    -1,    70,    -1,    -1,    -1,    74,    -1,    -1,    77,
    3279       78,    79,    80,    81,    82,  1095,    84,    85,    -1,    -1,
    3280       -1,    -1,    -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,
    3281      647,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
    3282       -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,   116,   117,
    3283      118,   119,   120,   121,    -1,    -1,    -1,    -1,   236,  1215,
    3284       -1,    -1,    -1,    -1,    -1,   682,    -1,   152,   153,    -1,
    3285       -1,    -1,    -1,  1153,    -1,    -1,    -1,    -1,    -1,    -1,
    3286     1195,    -1,    -1,   261,    10,    11,    12,    13,    14,    15,
    3287       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3288       26,   186,    -1,    29,    30,    31,    -1,    -1,   193,    -1,
    3289       -1,    37,    -1,    -1,    -1,  1195,    -1,    -1,    -1,    -1,
    3290      737,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3291      747,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
    3292       -1,    -1,    -1,   760,    70,    -1,    72,    73,    74,    -1,
    3293       -1,    -1,    -1,  1233,    -1,    81,    82,    -1,    -1,    -1,
    3294      777,    -1,   779,    -1,    -1,    -1,   783,    -1,    -1,    -1,
    3295       -1,    -1,    -1,    -1,    -1,  1290,    -1,    -1,    -1,    -1,
    3296      265,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
    3297       -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,   376,    -1,
    3298       -1,  1281,  1282,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3299     1290,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3300       -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3301       -1,    -1,   849,    -1,    -1,   320,    -1,    -1,    -1,   856,
    3302       -1,    -1,    -1,   328,   329,    -1,   331,   332,    -1,    64,
    3303       -1,    -1,   869,    -1,   871,    70,   341,    72,    73,    74,
    3304      345,    -1,    77,    78,    79,    80,    81,    82,   885,    84,
    3305       85,    -1,    -1,    -1,    -1,   892,    -1,    92,    -1,   364,
    3306       -1,    -1,   367,    -1,    -1,    -1,    -1,   904,    -1,    -1,
    3307      907,    -1,   107,    -1,   109,    -1,   111,   112,    -1,    -1,
    3308      478,   116,   117,   118,   119,   120,   121,    -1,   925,   394,
    3309       -1,    -1,    -1,   398,    -1,    -1,    -1,    -1,    -1,    -1,
    3310       -1,    -1,    -1,    -1,    -1,    -1,  1406,    -1,    -1,    -1,
    3311       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   516,    -1,
    3312       -1,    -1,    -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,
    3313       -1,   529,    -1,    -1,    -1,    -1,    -1,    -1,   536,    -1,
    3314       -1,   539,    -1,    -1,    -1,    -1,    -1,   452,    -1,    -1,
    3315       -1,    -1,   550,   551,    -1,    -1,    -1,    -1,    -1,    -1,
    3316       -1,    -1,    -1,    -1,  1464,    -1,  1466,    -1,    -1,    -1,
    3317       -1,    -1,    -1,    -1,   572,    -1,  1013,    -1,   483,    -1,
    3318       -1,   486,    -1,    -1,   582,    -1,    -1,    -1,    -1,    -1,
    3319       -1,   589,    -1,    -1,    -1,    -1,   594,    -1,    -1,    -1,
    3320       -1,  1501,    -1,  1503,    -1,    -1,    -1,    -1,    -1,    -1,
    3321       -1,  1546,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3322      525,    -1,    -1,   528,   529,    -1,    -1,    -1,    -1,    -1,
    3323       -1,  1531,  1069,    -1,    -1,    -1,    -1,    -1,    -1,  1076,
    3324       -1,    -1,    -1,    -1,    -1,    -1,   644,    -1,    -1,    -1,
    3325       -1,    -1,    -1,    -1,   652,    -1,    -1,    -1,    -1,    -1,
    3326       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1105,   574,
    3327      575,    -1,    -1,  1110,    -1,    -1,    -1,    -1,    -1,    -1,
    3328       -1,  1118,    -1,    -1,    -1,    -1,    -1,    -1,   593,   594,
    3329       -1,   596,    -1,    -1,   692,    -1,    -1,    -1,    -1,    -1,
    3330      605,    -1,   607,   608,    -1,    -1,    -1,    -1,    -1,   614,
    3331       -1,  1148,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,
    3332      625,    -1,    -1,  1160,    -1,   630,  1163,    -1,  1165,    -1,
    3333       -1,    -1,    -1,    -1,   639,   640,   641,    -1,    -1,    -1,
    3334       -1,    -1,  1179,  1180,    -1,    -1,    -1,    -1,    -1,    -1,
    3335       -1,    -1,   657,    -1,    -1,    -1,    -1,   662,   663,    -1,
    3336       -1,   666,   667,    -1,  1201,    -1,    -1,    -1,   673,   767,
    3337       -1,   769,    -1,    -1,    -1,    -1,    -1,   775,    -1,    -1,
    3338       -1,    -1,    -1,    -1,   782,    -1,   691,   692,   693,    -1,
    3339      695,  1228,    -1,    -1,   699,    -1,    10,    11,    12,    13,
    3340       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3341       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3342       -1,    -1,    -1,    37,    38,    -1,   731,   732,   826,   827,
    3343       -1,   829,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3344       -1,    -1,    -1,    -1,    -1,    -1,   844,    -1,    -1,    -1,
    3345       -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
    3346       -1,   766,   767,    -1,    -1,    -1,   771,   772,    -1,    -1,
     3430    1394,   101,    -1,   103,    -1,    -1,    -1,  1225,    -1,   822,
     3431     823,   111,   825,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3432      -1,    -1,    -1,    -1,    -1,    -1,    -1,   840,    -1,    -1,
     3433      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3434      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
     3435      -1,    -1,    -1,    -1,    -1,  1273,  1274,    37,    -1,    -1,
     3436      -1,    -1,    -1,  1457,  1458,    -1,    -1,   880,    -1,    -1,
     3437      -1,   884,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3438      60,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
     3439       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3440      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3441      29,    30,    31,    32,    -1,    -1,    35,    36,    37,    38,
     3442      39,    -1,    41,    -1,    -1,    44,    45,    46,    47,    48,
     3443      49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
     3444      59,    60,    -1,    62,    -1,    64,    65,   960,    67,    68,
     3445      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3446      79,    80,   975,   976,    -1,    -1,    -1,    -1,    87,   982,
     3447      -1,    -1,  1390,    -1,    -1,   988,    -1,    -1,   991,    -1,
     3448     993,    -1,   101,    -1,   103,    -1,    36,   106,    38,    -1,
     3449      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,  1012,
     3450      -1,    -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,    59,
     3451    1023,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     3452      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3453      80,    -1,  1045,    -1,  1047,    -1,    -1,    87,    -1,    -1,
     3454      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1062,
     3455      -1,   101,  1470,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3456     110,   111,   112,   113,   114,   115,    -1,    36,  1081,    38,
     3457      39,    -1,    41,  1491,  1492,    44,    45,    46,    47,    48,
     3458      49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
     3459      59,    -1,    -1,    -1,    -1,  1513,    65,    -1,    -1,    -1,
     3460      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3461      79,    80,    -1,    -1,  1127,    -1,    -1,    -1,    87,    -1,
    33473462      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3348       -1,    -1,    -1,    -1,    -1,    -1,   884,  1324,    -1,  1326,
    3349      888,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,   113,
    3350       -1,    -1,  1339,   117,  1341,    -1,    -1,    -1,   813,    -1,
    3351       -1,    -1,    -1,    -1,    -1,    -1,    -1,   822,    -1,    -1,
    3352       -1,    -1,  1359,   828,   829,    -1,    -1,    -1,   833,    -1,
    3353      835,    -1,    -1,    -1,   279,   280,   281,    -1,  1375,  1376,
    3354      845,    -1,    -1,   288,   289,    -1,    -1,    -1,   293,   294,
    3355     1387,    -1,    -1,  1390,    -1,    -1,    -1,    -1,    -1,    -1,
    3356      305,    -1,    -1,    -1,    -1,    -1,   964,    -1,    -1,    -1,
    3357       -1,    -1,    -1,    -1,    -1,  1412,    -1,    -1,    -1,    -1,
    3358       -1,   979,   980,    -1,  1421,    -1,    -1,  1424,   986,  1426,
    3359     1427,  1428,    -1,    -1,   992,    -1,   341,   995,    -1,   997,
     3463      -1,    -1,   101,  1146,   103,    -1,    -1,   106,    -1,    -1,
     3464      -1,   110,   111,   112,   113,   114,   115,    -1,  1161,  1162,
     3465      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3466      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3467      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3468      31,    32,    -1,    -1,    35,    36,    37,    38,    -1,    -1,
    33603469      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3361       -1,    -1,    -1,   918,    -1,    -1,    -1,    -1,    -1,  1017,
    3362       -1,   926,    -1,    -1,    -1,    -1,    -1,   932,    -1,    -1,
    3363     1028,  1468,   377,  1470,    -1,   940,  1473,    -1,    -1,    -1,
    3364       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   953,   954,
    3365       -1,  1488,  1050,    -1,  1052,    -1,    -1,    -1,    -1,    -1,
    3366       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1067,
    3367     1068,    -1,    -1,    -1,   979,    -1,    -1,    -1,    -1,    -1,
    3368      985,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3369     1088,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1004,
    3370     1005,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,  1014,
    3371       -1,    -1,    -1,    -1,    -1,  1020,  1021,    -1,  1023,  1024,
    3372     1025,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
    3373     1035,  1036,    -1,    -1,    -1,    70,  1134,    -1,    -1,    74,
    3374       -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
    3375       85,    -1,    -1,    -1,    -1,  1153,    -1,    92,    -1,    -1,
     3470      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3471      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     3472      -1,    72,    73,    74,    75,    76,    77,  1240,    79,    80,
     3473      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    33763474      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3377     1168,  1169,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    3378      115,   116,   117,   118,   119,   120,   121,    -1,    -1,    -1,
    3379       -1,  1096,  1097,  1098,    -1,    -1,    -1,    -1,    -1,    -1,
    3380       -1,    -1,    -1,    -1,  1109,    -1,    -1,    -1,   553,   554,
    3381      555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
    3382      565,   566,   567,   568,   569,   570,    -1,    -1,    -1,    -1,
    3383       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3384       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1153,    -1,
    3385     1248,   596,     0,    -1,    -1,     3,     4,     5,     6,     7,
    3386        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3387       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3388       -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,    37,
    3389       38,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3390       19,    20,    21,    22,    23,    24,    25,    26,  1213,    -1,
    3391       -1,  1309,    -1,  1311,    62,    -1,    -1,    65,    37,    67,
    3392       -1,    69,    70,    -1,    72,    73,    74,    -1,  1233,    -1,
    3393       -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
    3394       -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,   694,
    3395       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
    3396       -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
    3397       -1,   716,    -1,    -1,    -1,    -1,  1281,  1282,    -1,    -1,
    3398       -1,    -1,    -1,    -1,   729,    -1,    -1,    -1,    -1,    -1,
    3399       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1397,
     3475     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3476     111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,
     3477      -1,    -1,    -1,   124,     3,     4,     5,     6,     7,     8,
     3478       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3479      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3480      29,    30,    31,    32,    -1,    -1,    35,    36,    37,    38,
    34003481      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34013482      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3402       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   774,
    3403       -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
     3483      59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
     3484      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3485      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3486      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1381,    -1,
     3487      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3488      -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
    34043489       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    34053490      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3406       -1,   806,    29,    30,    31,    32,    -1,    -1,    35,    36,
    3407       37,    38,    -1,    -1,    -1,    -1,   821,    -1,    -1,    -1,
    3408       -1,  1479,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3409       -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    65,    -1,
    3410       67,  1406,    69,    70,    -1,    72,    73,    74,    -1,    -1,
    3411       77,    78,    79,    80,    81,    82,    -1,    84,    85,    -1,
    3412       -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,    -1,    -1,
    3413       -1,    -1,    -1,  1531,    -1,    -1,    -1,    -1,    -1,    -1,
    3414      107,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,   116,
    3415      117,   118,   119,   120,   121,    -1,    -1,    -1,    -1,    -1,
    3416       -1,    -1,    -1,   130,    -1,    -1,    -1,    -1,    -1,    -1,
     3491      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
     3492      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34173493      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3418       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3419       -1,  1496,     3,     4,     5,     6,     7,     8,     9,    10,
    3420       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3421       21,    22,    23,    24,    25,    26,  1521,  1522,    29,    30,
    3422       31,    -1,    -1,    -1,    -1,    -1,    37,   972,    -1,    -1,
    3423       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3424       -1,  1546,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3425       -1,    -1,    -1,    -1,    65,    -1,    67,  1002,    69,    -1,
    3426       -1,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,  1014,
    3427        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3428       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3429       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    32,
    3430       -1,   112,    35,    36,    37,    38,    39,    -1,    41,    -1,
    3431     1055,    44,    45,    46,    47,    48,    49,    50,    51,    -1,
    3432       -1,    -1,    55,    -1,    -1,    -1,    59,    60,    -1,    62,
    3433       -1,    64,    65,    -1,    67,    -1,    69,    70,    -1,    72,
    3434       73,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
    3435       -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    92,
    3436       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3437       -1,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,   112,
    3438       -1,    -1,  1127,   116,   117,   118,   119,   120,   121,    -1,
    3439       -1,    -1,    -1,   126,    -1,    -1,    -1,   130,    -1,    -1,
    3440        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3441       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3442       23,    24,    25,    26,    -1,  1170,    29,    30,    31,    32,
    3443       -1,    -1,    35,    36,    37,    38,    -1,    -1,    -1,  1184,
    3444     1185,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3445       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3446       -1,    64,    65,    -1,    67,    -1,    69,    70,    37,    72,
    3447       73,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
    3448       -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    92,
    3449       -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    3450       -1,    -1,    -1,    -1,   107,    -1,   109,    76,    -1,    -1,
    3451       -1,    -1,    -1,   116,   117,   118,   119,   120,   121,     4,
     3494    1453,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
     3495      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3496      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3497      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3498      -1,    -1,    -1,    -1,   101,  1498,   103,    -1,    -1,    -1,
     3499      -1,   108,    -1,   110,   111,   112,   113,   114,   115,     4,
    34523500       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    34533501      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    34543502      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3455       -1,    36,    37,    38,    10,    11,    12,    13,    14,    15,
    3456       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3457       26,    27,    -1,    29,    30,    31,    -1,    -1,    -1,    64,
    3458       65,    37,    67,    -1,    69,    70,    -1,    72,    73,    74,
    3459       -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
    3460       85,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    65,
    3461       -1,    -1,    -1,    -1,    70,    -1,    72,    73,    74,    -1,
    3462       76,    -1,   107,    -1,   109,    81,    82,    -1,    -1,   114,
    3463       -1,   116,   117,   118,   119,   120,   121,    -1,    -1,    -1,
    3464       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1393,    -1,
    3465       -1,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
    3466       -1,   117,    -1,    -1,    -1,  1410,    -1,     4,     5,     6,
     3503      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3504      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3505      -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
     3506      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3507      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3508      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3509      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3510      -1,    -1,    -1,   108,    -1,   110,   111,   112,   113,   114,
     3511     115,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3512      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3513      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3514      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3515      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3516      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,
     3517      -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3518      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3519      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3521     103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,   112,
     3522     113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
     3523      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3524      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3525      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
     3526      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3527      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3528      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     3529      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3530      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3531      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3532     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3533     111,   112,   113,   114,   115,     4,     5,     6,     7,     8,
     3534       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3535      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3536      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
     3537      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3538      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3539      59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
     3540      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3541      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3542      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3543      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3544      -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
    34673545       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    34683546      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    34693547      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
    3470       37,    38,    10,    11,    12,    13,    14,    15,    16,    17,
    3471       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3472       -1,    29,    30,    31,    -1,    -1,    -1,    64,    65,    37,
    3473       67,    -1,    69,    70,    -1,    72,    73,    74,  1483,  1484,
    3474       77,    78,    79,    80,    81,    82,    -1,    84,    85,    -1,
    3475       -1,    -1,    -1,    -1,    -1,    92,    -1,    65,    -1,    -1,
    3476       -1,    -1,    -1,    -1,    72,    73,    -1,    -1,    -1,    -1,
    3477      107,    -1,   109,    -1,    -1,    -1,    -1,   114,    -1,   116,
    3478      117,   118,   119,   120,   121,     4,     5,     6,     7,     8,
    3479        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3480       19,    20,    21,    22,    23,    24,    25,    26,    -1,   117,
    3481       29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    3482       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3483       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3484       30,    31,    -1,    -1,    -1,    64,    65,    37,    67,    -1,
    3485       69,    70,    -1,    72,    73,    74,    -1,    -1,    77,    78,
    3486       79,    80,    81,    82,    -1,    84,    85,    -1,    -1,    -1,
    3487       -1,    -1,    -1,    92,    -1,    65,    -1,    -1,    -1,    -1,
    3488       -1,    -1,    72,    73,    -1,    -1,    -1,    -1,   107,    -1,
    3489      109,    -1,    -1,    -1,    -1,   114,    -1,   116,   117,   118,
    3490      119,   120,   121,     4,     5,     6,     7,     8,     9,    10,
    3491       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3492       21,    22,    23,    24,    25,    26,    -1,   117,    29,    30,
    3493       31,    -1,    -1,    -1,    -1,    36,    37,    38,    10,    11,
    3494       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3495       22,    23,    24,    25,    26,    27,    -1,    -1,    -1,    -1,
    3496       -1,    -1,    -1,    64,    65,    37,    67,    -1,    69,    70,
    3497       -1,    72,    73,    74,    -1,    -1,    77,    78,    79,    80,
    3498       81,    82,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
    3499       -1,    92,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
    3500       -1,    -1,    -1,    -1,    76,    -1,   107,    -1,   109,    -1,
    3501       -1,    -1,    -1,    -1,    -1,   116,   117,   118,   119,   120,
    3502      121,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3503       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3504       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3505       -1,    -1,    -1,    36,    37,    38,    10,    11,    12,    13,
    3506       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3507       24,    25,    26,    -1,    -1,    29,    30,    31,    32,    33,
    3508       34,    64,    65,    37,    67,    -1,    69,    70,    -1,    72,
    3509       73,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
    3510       -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    92,
    3511       -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
    3512       -1,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,    -1,
    3513       -1,    -1,    -1,   116,   117,   118,   119,   120,   121,     4,
     3548      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3550      -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
     3551      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3552      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3553      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3554      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3555      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,     4,
    35143556       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    35153557      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    35163558      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3517       -1,    36,    37,    38,    10,    11,    12,    13,    14,    15,
    3518       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3519       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    64,
    3520       65,    37,    67,    -1,    69,    70,    -1,    72,    73,    74,
    3521       -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
    3522       85,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    65,
    3523       -1,    -1,    -1,    -1,    70,    -1,    72,    73,    -1,    -1,
    3524       -1,    -1,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    3525       -1,   116,   117,   118,   119,   120,   121,     4,     5,     6,
    3526        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3527       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3528       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
    3529       37,    38,    10,    11,    12,    13,    14,    15,    16,    17,
    3530       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3531       -1,    29,    30,    31,    -1,    -1,    -1,    64,    65,    37,
    3532       67,    -1,    69,    70,    -1,    72,    73,    74,    -1,    -1,
    3533       77,    78,    79,    80,    81,    82,    -1,    84,    85,    -1,
    3534       -1,    -1,    -1,    -1,    -1,    92,    -1,    65,    -1,    -1,
    3535       -1,    -1,    -1,    -1,    72,    73,    -1,    -1,    -1,    -1,
    3536      107,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,   116,
    3537      117,   118,   119,   120,   121,     3,     4,     5,     6,     7,
    3538        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3539       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3540       -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,    37,
    3541       38,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3542       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3543       29,    30,    31,    -1,    62,    -1,    -1,    65,    37,    67,
    3544       -1,    69,    70,    -1,    72,    73,    74,    -1,    -1,    -1,
    3545       -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
    3546       -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    3547       -1,    -1,    -1,    72,    73,    -1,    -1,    -1,    -1,   107,
    3548       -1,   109,    -1,    -1,    -1,   113,    -1,    -1,    -1,   117,
     3559      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3560      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3561      -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
     3562      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3563      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3564      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3565      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3566      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3567     115,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3568      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3569      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     3570      32,    -1,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,
     3571      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3572      -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,
     3573      62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
     3574      -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
     3575      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3576      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
     3577      -1,   103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,
    35493578       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    35503579      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3551       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    32,
    3552       -1,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,    -1,
     3580      23,    24,    25,    26,    27,    -1,    29,    30,    31,    32,
     3581      -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    35533582      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3554       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
    3555       -1,    -1,    65,    -1,    67,    -1,    69,    70,    -1,    72,
    3556       73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,
     3583      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
     3584      -1,    64,    -1,    -1,    67,    68,    -1,    -1,    71,     3,
     3585       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3586      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3587      24,    25,    26,    -1,    -1,    29,    30,    31,    32,    -1,
     3588     103,    35,    -1,    37,    -1,    -1,    -1,    -1,   111,    -1,
     3589      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3590      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3591      64,    -1,    -1,    67,    68,     4,     5,     6,     7,     8,
     3592       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3593      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3594      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,   103,
     3595      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3596      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3597      -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
     3598      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
    35573599      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35583600      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3559       -1,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,    -1,
    3560       -1,    -1,    -1,    -1,   117,     3,     4,     5,     6,     7,
     3601      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3602      -1,    -1,   111,     4,     5,     6,     7,     8,     9,    10,
     3603      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3604      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3605      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
     3606      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3607      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     3608      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
     3609       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3610      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3611      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
     3612      -1,   102,   103,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     3613     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3614      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3615      64,    -1,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
     3616      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3617      -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,
     3618      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
     3619      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
     3620       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3621      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3622      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3623      -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
     3624      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3625      -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
     3626      -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3627      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3628      -1,    -1,    60,    89,    -1,    -1,    -1,    65,    -1,    67,
     3629      68,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3630      -1,    -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,
    35613631       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    35623632      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     
    35643634      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35653635      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3566       -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    67,
    3567       -1,    69,    70,    -1,    72,    73,    74,    -1,    -1,    -1,
    3568       -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
     3636      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     3637      68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3638      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3639      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3640      -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
     3641      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3642      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
     3643      -1,    64,    -1,    -1,    67,    68,     4,     5,     6,     7,
     3644       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3645      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3646      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3647     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    35693648      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3570       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
    3571       -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
    3572        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3649      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     3650      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3651      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3652      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
     3653      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
     3654      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3655      59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3656      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3657      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3658      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3659      -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
     3660      -1,   110,   111,   112,   113,   114,   115,    10,    11,    12,
    35733661      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3574       23,    24,    25,    26,    27,    -1,    29,    30,    31,    32,
    3575       -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3662      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3663      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3664      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3665      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
     3666      -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3667      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3668      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3669      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3670     103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3671     113,   114,   115,    10,    11,    12,    13,    14,    15,    16,
     3672      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3673      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
     3674      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3675      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3676      -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,
     3677      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3678      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3679      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3680      -1,    -1,    -1,    -1,   101,   102,   103,    -1,    -1,    -1,
     3681      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    10,
     3682      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3683      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3684      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
     3685      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3686      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3687      -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
     3688      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3689      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3690      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3691     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3692     111,   112,   113,   114,   115,    10,    11,    12,    13,    14,
     3693      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3694      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3695      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3696      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3697      -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,
     3698      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3699      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3700      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3701      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3702      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3703     115,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3704      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3705      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    35763706      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35773707      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3578       -1,    -1,    65,    -1,    67,    -1,    69,    -1,    -1,    72,
    3579       73,    -1,    -1,    76,    -1,     3,     4,     5,     6,     7,
    3580        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3581       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3582       -1,    29,    30,    31,    32,    -1,   109,    35,    -1,    37,
    3583       -1,    -1,    -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,
     3708      59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3709      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3710      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    35843711      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3585       -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    67,
    3586       -1,    69,    -1,    -1,    72,    73,     3,     4,     5,     6,
    3587        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3712      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3713      -1,   110,   111,   112,   113,   114,   115,    10,    11,    12,
     3714      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3715      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3716      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3717      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3718      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
     3719      -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3720      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3721      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3722      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3723     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3724     113,   114,   115,    10,    11,    12,    13,    14,    15,    16,
     3725      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3726      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3727      37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3728      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3729      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
     3730      67,    68,    69,    -1,    71,    -1,    -1,    -1,    -1,    76,
     3731      77,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3732      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3733      29,    30,    31,    -1,   101,    -1,   103,    -1,    37,    -1,
     3734      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3735      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3736      -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3737      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    10,
     3738      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3739      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3740      31,    -1,   101,    -1,   103,    -1,    37,    -1,    -1,    -1,
     3741      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3742      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     3743      -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
     3744      -1,    -1,    -1,    -1,    -1,    76,    77,    10,    11,    12,
     3745      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3746      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3747     101,    -1,   103,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3748     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3749      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
     3750      -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
     3751      -1,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
     3752      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3753      25,    26,    -1,    -1,    29,    30,    31,    -1,   101,    -1,
     3754     103,    -1,    37,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3755      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3756      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3757      65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
     3758      -1,    76,    77,    10,    11,    12,    13,    14,    15,    16,
     3759      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3760      -1,    -1,    29,    30,    31,    -1,   101,    -1,   103,    -1,
     3761      37,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3762      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3763      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
     3764      67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
     3765      77,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3766      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3767      29,    30,    31,    -1,    -1,    -1,   103,    -1,    37,    -1,
     3768      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3769      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3770      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     3771      -1,    -1,    71,    10,    11,    12,    13,    14,    15,    16,
     3772      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3773      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3774      37,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3775      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3776      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3777      67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
     3778      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3779      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3780      -1,    -1,    37,    38,   101,    -1,   103,    -1,    -1,    -1,
     3781      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3782      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3783      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
     3784      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3785      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3786      -1,    37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,
     3787      -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3788      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3789      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     3790      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3791      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3792      37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3793      -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3794      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3795      67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
     3796      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3797      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3798      -1,    -1,    37,    38,    -1,    -1,   103,    -1,    -1,    -1,
     3799      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3800      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3801      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
     3802      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3803      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3804      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
     3805      -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3806      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,
     3807      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    35883808      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    35893809      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3590       37,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
    3591       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3592       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    3593       67,    -1,    69,    -1,    -1,    72,    73,     4,     5,     6,
    3594        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3595       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3596       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3597       37,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3598      117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3599       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    3600       67,    -1,    69,    70,    -1,    72,    73,    74,    -1,    -1,
    3601       -1,    -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,
    3602       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3603       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3604      107,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3605      117,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3810      37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3811      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3812      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3813      67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
     3814      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3815      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3816      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
     3817      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3818      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3819      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3820      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3821      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
     3822      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
     3823      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3824      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     3825      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3826      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     3827      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
     3828      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3829      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3830      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
     3831      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3832      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3833      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
     3834      -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
     3835      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     3836      -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,
     3837      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3838      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     3839      -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
     3840      -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3841     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
     3842      -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,
    36063843      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    36073844      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    36083845      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    3609       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3610       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3611       -1,    -1,    65,    -1,    67,    -1,    69,    -1,    -1,    72,
    3612       73,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3613       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3614       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3615       -1,    -1,    -1,    -1,    37,   108,   109,    -1,    -1,    -1,
    3616       -1,    -1,    -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,
    3617       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3618       -1,    -1,    65,    -1,    67,    -1,    69,    -1,    -1,    72,
    3619       73,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3620       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3621       -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3622       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    3623       -1,    -1,    -1,    -1,   117,     4,     5,     6,     7,     8,
    3624        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3846      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3847      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
     3848      -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
     3849      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3850      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
     3851      -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     3852     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3853      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
     3854      -1,    -1,    -1,    67,    68,    10,    11,    12,    13,    14,
     3855      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3856      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3857      -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,
     3858      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3859      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3860      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
     3861      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3862      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3863      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
     3864      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3865      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3866      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     3867      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3868      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3869      37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3870      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3871      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3872      67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
     3873      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3874      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3875      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
     3876      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3877      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3878      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    36253879      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    36263880      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3627       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3628       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3629       26,    -1,    -1,    29,    30,    31,    65,    -1,    67,    -1,
    3630       69,    37,    -1,    72,    73,    -1,    -1,    -1,    -1,    -1,
     3881      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
     3882      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3883      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     3884       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3885      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3886      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
     3887      -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,    -1,
     3888      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3889      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3890      64,    -1,    -1,    67,    68,    -1,    36,    -1,    38,    39,
     3891      -1,    41,    -1,    -1,    44,    45,    46,    47,    48,    49,
     3892      50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    59,
     3893      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,   102,    69,
     3894      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3895      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    36313896      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3632       -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    65,
    3633       -1,    -1,    -1,    -1,    70,    -1,    72,    73,    74,    -1,
    3634      109,    -1,    -1,    -1,    -1,    81,    82,    -1,   117,     4,
    3635        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3636       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3637       25,    26,    -1,   109,    29,    30,    31,    -1,    -1,    -1,
    3638       -1,   117,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3897      -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3898     110,   111,   112,   113,   114,   115,    -1,    36,    -1,    38,
     3899      39,    -1,    41,    -1,   124,    44,    45,    46,    47,    48,
     3900      49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
     3901      59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
     3902      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3903      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    36393904      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3640       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3641       65,    -1,    67,    -1,    69,    -1,    -1,    72,    73,     4,
    3642        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3643       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3644       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3645       -1,    -1,    37,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    3646       -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3647       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3648       65,    -1,    67,    -1,    69,    -1,    -1,    72,    73,     4,
    3649        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3650       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3651       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3652       -1,    -1,    37,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    3653       -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3654       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3655       65,    -1,    67,    -1,    69,    -1,    -1,    72,    73,     4,
    3656        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3657       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3658       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3659       -1,    -1,    37,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    3660       -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3661       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3662       65,    -1,    67,    -1,    69,    -1,    -1,    72,    73,    10,
    3663       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3664       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3665       31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    3666       -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    3667       -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3668       -1,    -1,    -1,    64,    65,    -1,    -1,    -1,    -1,    70,
    3669       -1,    72,    73,    74,    -1,    -1,    77,    78,    79,    80,
    3670       81,    82,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
    3671       -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3672       -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,   109,    -1,
    3673       -1,   112,    -1,    -1,    -1,   116,   117,   118,   119,   120,
    3674      121,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3675       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3676       29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    3677       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3678       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3679       29,    30,    31,    -1,    -1,    64,    65,    -1,    37,    -1,
    3680       -1,    70,    -1,    72,    73,    74,    -1,    -1,    77,    78,
    3681       79,    80,    81,    82,    -1,    84,    85,    -1,    -1,    -1,
    3682       -1,    -1,    -1,    92,    -1,    -1,    65,    -1,    -1,    -1,
    3683       -1,    70,    -1,    72,    73,    74,    -1,    76,   107,    -1,
    3684      109,   110,    81,    82,    -1,    -1,    -1,   116,   117,   118,
    3685      119,   120,   121,    10,    11,    12,    13,    14,    15,    16,
    3686       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3687      109,    -1,    29,    30,    31,    -1,    -1,    -1,   117,    36,
    3688       37,    38,    -1,    10,    11,    12,    13,    14,    15,    16,
    3689       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3690       27,    -1,    29,    30,    31,    -1,    -1,    64,    65,    -1,
    3691       37,    -1,    -1,    70,    -1,    72,    73,    74,    -1,    -1,
    3692       77,    78,    79,    80,    81,    82,    -1,    84,    85,    -1,
    3693       -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,    65,    -1,
    3694       -1,    -1,    -1,    -1,    -1,    72,    73,    -1,    -1,    76,
    3695      107,   108,   109,    -1,    -1,    -1,    -1,    -1,    -1,   116,
    3696      117,   118,   119,   120,   121,    10,    11,    12,    13,    14,
    3697       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3698       25,    26,   109,    -1,    29,    30,    31,    -1,    -1,    -1,
    3699      117,    36,    37,    38,    -1,    10,    11,    12,    13,    14,
    3700       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3701       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    64,
    3702       65,    -1,    37,    -1,    -1,    70,    -1,    72,    73,    74,
    3703       -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
    3704       85,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,
    3705       65,    -1,    -1,    -1,    -1,    70,    -1,    72,    73,    -1,
    3706       -1,    -1,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    3707       -1,   116,   117,   118,   119,   120,   121,    10,    11,    12,
    3708       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3709       23,    24,    25,    26,   109,    -1,    29,    30,    31,    -1,
    3710       -1,    -1,   117,    36,    37,    38,    -1,    10,    11,    12,
    3711       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3712       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3713       -1,    64,    65,    -1,    37,    38,    -1,    70,    -1,    72,
    3714       73,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
    3715       -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    92,
    3716       -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
    3717       73,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,    -1,
    3718       -1,    -1,    -1,   116,   117,   118,   119,   120,   121,    10,
    3719       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3720       21,    22,    23,    24,    25,    26,   109,    -1,    29,    30,
    3721       31,    -1,    -1,    -1,   117,    36,    37,    38,    -1,    10,
    3722       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3723       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3724       31,    -1,    -1,    64,    65,    -1,    37,    -1,    -1,    70,
    3725       -1,    72,    73,    74,    -1,    -1,    77,    78,    79,    80,
    3726       81,    82,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
    3727       -1,    92,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
    3728       -1,    72,    73,    -1,    -1,    -1,   107,    -1,   109,    -1,
    3729       -1,    -1,    -1,    -1,    -1,   116,   117,   118,   119,   120,
    3730      121,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3731       19,    20,    21,    22,    23,    24,    25,    26,   109,    -1,
    3732       29,    30,    31,    -1,    -1,    -1,   117,    36,    37,    38,
     3905      -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
     3906      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
     3907      -1,    -1,    -1,    -1,    -1,   124,     4,     5,     6,     7,
     3908       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3909      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3910      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    37333911      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    37343912      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3735       30,    31,    -1,    -1,    -1,    64,    65,    37,    -1,    -1,
    3736       -1,    70,    -1,    72,    73,    74,    -1,    -1,    77,    78,
    3737       79,    80,    81,    82,    -1,    84,    85,    -1,    -1,    -1,
    3738       -1,    -1,    -1,    92,    -1,    65,    -1,    -1,    -1,    -1,
    3739       70,    -1,    72,    73,    74,    -1,    -1,    -1,   107,    -1,
    3740      109,    81,    82,    -1,    -1,    -1,    -1,   116,   117,   118,
    3741      119,   120,   121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3742       -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,   109,
    3743       -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    10,    11,
     3913      30,    31,    60,    -1,    62,    -1,    64,    37,    -1,    67,
     3914      68,    -1,    36,    -1,    38,    39,    -1,    41,    42,    43,
     3915      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
     3916      60,    89,    56,    57,    -1,    59,    -1,    67,    68,    -1,
     3917      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     3918      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
     3919      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3920      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3921      -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
     3922     114,   115,    36,    -1,    38,    39,    -1,    41,    42,    43,
     3923      44,    45,    46,    47,    48,    49,    50,    51,    -1,    53,
     3924      -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,
     3925      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     3926      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
     3927      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,
     3928      -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3929      -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
     3930     114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
     3931      -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3932      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3933      87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
     3934      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3935      -1,    -1,   109,   110,   111,   112,   113,   114,   115,    59,
     3936      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     3937      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3938      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3939      -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
     3940      -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3941     110,   111,   112,   113,   114,   115,    59,    -1,    -1,    -1,
     3942      -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
     3943      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3944      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3945      36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3946     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3947     113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,
     3948      -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,
     3949      76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
     3950      -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,
     3951      -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
     3952      -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
     3953      59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
     3954      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3955      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3956      -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
     3957      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3958      -1,   110,   111,   112,   113,   114,   115,    59,    -1,    -1,
     3959      -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
     3960      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
     3961      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
     3962      -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,
     3963      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
     3964     112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,
     3965      65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
     3966      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3967      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,
     3968      38,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
     3969      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3970     115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
     3971      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
     3972      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     3973      -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,
     3974      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
     3975      -1,    -1,   110,   111,   112,   113,   114,   115,    59,    -1,
     3976      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     3977      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3978      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3979      -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,
     3980     101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3981     111,   112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,
     3982      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     3983      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
     3984      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3985      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
     3986      -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
     3987     114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
    37443988      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3745       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3746       -1,    -1,    -1,    -1,    -1,    37,    -1,    10,    11,    12,
    3747       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3748       23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
    3749       -1,    -1,    -1,    65,    37,    -1,    -1,    -1,    70,    -1,
    3750       72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    81,
    3751       82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3752       -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
    3753       73,    -1,    -1,    76,    -1,   107,    -1,   109,    -1,    -1,
    3754       -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,    -1,    -1,
     3989      22,    23,    24,    25,    26,    -1,    -1,    -1,    -1,    -1,
     3990      -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    37553991      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3756       -1,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,    -1,
    3757       -1,    -1,    -1,    -1,   117,    10,    11,    12,    13,    14,
    3758       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3759       25,    26,    27,    -1,    29,    30,    31,    -1,    -1,    -1,
    3760       -1,    -1,    37,    -1,    10,    11,    12,    13,    14,    15,
    3761       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3762       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3763       65,    37,    38,    -1,    -1,    -1,    -1,    72,    73,    -1,
    3764       -1,    76,    10,    11,    12,    13,    14,    15,    16,    17,
    3765       18,    19,    20,    21,    22,    23,    24,    25,    26,    65,
    3766       -1,    29,    30,    31,    -1,    -1,    72,    73,    -1,    37,
    3767       38,    -1,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    3768       -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3769       -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
    3770       -1,    -1,    -1,   109,    72,    73,    -1,   113,    -1,    -1,
    3771       -1,   117,    10,    11,    12,    13,    14,    15,    16,    17,
    3772       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3773       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3774       -1,   109,    -1,    -1,    -1,   113,    -1,    -1,    -1,   117,
    3775       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3776       20,    21,    22,    23,    24,    25,    26,    65,    -1,    29,
    3777       30,    31,    -1,    -1,    72,    73,    -1,    37,    -1,    10,
    3778       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3779       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3780       31,    -1,    -1,    -1,    -1,    65,    37,    -1,    -1,   107,
    3781       -1,   109,    72,    73,    -1,    -1,    -1,    -1,    -1,   117,
    3782       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3783       -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
    3784       -1,    72,    73,    -1,    -1,    -1,    -1,   107,    -1,   109,
    3785       -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,
    3786       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3787       20,    21,    22,    23,    24,    25,    26,    -1,   109,    29,
    3788       30,    31,    -1,    -1,    -1,    -1,   117,    37,    -1,    10,
    3789       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3790       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3791       31,    -1,    -1,    -1,    -1,    65,    37,    -1,    -1,    -1,
    3792       -1,    -1,    72,    73,    -1,    -1,    -1,    10,    11,    12,
    3793       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3794       23,    24,    25,    26,    65,    -1,    29,    30,    31,    -1,
    3795       -1,    72,    73,    -1,    37,    -1,    -1,    -1,    -1,   109,
    3796       -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,
    3797       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3798       -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,   109,    72,
    3799       73,    -1,    -1,    -1,    -1,    -1,   117,    10,    11,    12,
    3800       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3801       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3802       -1,    -1,    -1,    -1,    37,    -1,   109,    -1,    -1,    -1,
    3803       -1,    -1,    -1,    -1,   117,    10,    11,    12,    13,    14,
    3804       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3805       25,    26,    65,    -1,    29,    30,    31,    -1,    -1,    72,
    3806       73,    -1,    37,    -1,    10,    11,    12,    13,    14,    15,
    3807       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3808       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3809       65,    37,    -1,    -1,    -1,    -1,   109,    72,    73,    -1,
    3810       -1,    -1,    -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,
    3811       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
    3812       -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    -1,    -1,
    3813       -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    3814       -1,    -1,   117,    -1,    -1,    10,    11,    12,    13,    14,
    3815       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3816       25,    26,    -1,   109,    29,    30,    31,    -1,    -1,    -1,
    3817       -1,   117,    37,    -1,    10,    11,    12,    13,    14,    15,
    3818       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3819       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3820       65,    37,    -1,    -1,    -1,    -1,    -1,    72,    73,    -1,
    3821       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3822       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
    3823       -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    -1,    -1,
    3824       -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    3825       -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3826       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3827       -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
    3828       -1,   117,     4,     5,     6,     7,     8,     9,    10,    11,
    3829       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3830       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3831       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    36,    -1,
    3832       38,    39,    -1,    41,    -1,    -1,    44,    45,    46,    47,
    3833       48,    49,    50,    51,    -1,    -1,    54,    55,    -1,    -1,
    3834       -1,    59,    60,    65,    62,    67,    64,    69,    -1,    -1,
    3835       72,    73,    70,    -1,    -1,    -1,    74,    -1,    -1,    77,
    3836       78,    79,    80,    81,    82,    -1,    84,    85,    -1,    -1,
    3837       -1,    -1,    -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,
    3838       -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,    -1,   107,
    3839       -1,   109,    -1,    -1,   112,    -1,    -1,    -1,   116,   117,
    3840      118,   119,   120,   121,    -1,    -1,    -1,    -1,   126,    -1,
    3841       -1,    36,   130,    38,    39,    -1,    41,    -1,    -1,    44,
    3842       45,    46,    47,    48,    49,    50,    51,    -1,    -1,    -1,
    3843       55,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
    3844       -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    74,
    3845       -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
    3846       85,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,
    3847       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3848       -1,    -1,   107,    -1,   109,    -1,    -1,   112,    -1,    -1,
    3849       -1,   116,   117,   118,   119,   120,   121,    -1,    -1,    -1,
    3850       -1,   126,    -1,    -1,    36,   130,    38,    39,    -1,    41,
    3851       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
    3852       -1,    -1,    54,    55,    -1,    -1,    -1,    59,    60,    -1,
    3853       62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3854       -1,    -1,    74,    -1,    -1,    77,    78,    79,    80,    81,
    3855       82,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,
    3856       92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3857       -1,    -1,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,
    3858      112,    -1,    -1,    -1,   116,   117,   118,   119,   120,   121,
    3859       36,    -1,    38,    39,   126,    41,    42,    43,    44,    45,
    3860       46,    47,    48,    49,    50,    51,    -1,    -1,    -1,    55,
    3861       -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,    -1,
    3862       -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    74,    -1,
    3863       -1,    77,    78,    79,    80,    81,    82,    -1,    84,    85,
    3864       -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,    -1,
    3865       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3866       -1,   107,    -1,   109,    -1,    -1,   112,    -1,    -1,    -1,
    3867      116,   117,   118,   119,   120,   121,    36,    -1,    38,    39,
    3868      126,    41,    -1,    -1,    44,    45,    46,    47,    48,    49,
    3869       50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,
    3870       60,    -1,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
    3871       70,    -1,    -1,    -1,    74,    -1,    -1,    77,    78,    79,
    3872       80,    81,    82,    -1,    84,    85,    -1,    -1,    -1,    -1,
    3873       -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3874       -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,   109,
    3875       -1,    -1,   112,    -1,    -1,    -1,   116,   117,   118,   119,
    3876      120,   121,    -1,    -1,    -1,    -1,   126,     4,     5,     6,
    3877        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3878       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3879       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3880       37,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
    3881       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3882       -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    65,    -1,
    3883       67,    64,    69,    -1,    -1,    72,    73,    70,    -1,    -1,
    3884       -1,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
    3885       64,    84,    85,    -1,    -1,    -1,    70,    94,    -1,    92,
    3886       74,    -1,    -1,    77,    78,    79,    80,    81,    82,    -1,
    3887       84,    85,    -1,    -1,   107,    -1,   109,    -1,    92,    -1,
    3888       36,   114,    38,   116,   117,   118,   119,   120,   121,    -1,
    3889       -1,    -1,    -1,   107,    -1,   109,    -1,    -1,   112,    36,
    3890       -1,    38,   116,   117,   118,   119,   120,   121,    64,    -1,
    3891       -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    74,    -1,
    3892       -1,    77,    78,    79,    80,    81,    82,    64,    84,    85,
    3893       -1,    -1,    -1,    70,    -1,    -1,    92,    74,    -1,    -1,
    3894       77,    78,    79,    80,    81,    82,    -1,    84,    85,    -1,
    3895       -1,   107,    -1,   109,    -1,    92,    -1,    36,    -1,    38,
    3896      116,   117,   118,   119,   120,   121,    -1,    -1,    -1,    -1,
    3897      107,    -1,   109,    -1,    -1,    -1,    36,    -1,    38,   116,
    3898      117,   118,   119,   120,   121,    64,    -1,    -1,    -1,    -1,
    3899       -1,    70,    -1,    -1,    -1,    74,    -1,    -1,    77,    78,
    3900       79,    80,    81,    82,    64,    84,    85,    -1,    -1,    -1,
    3901       70,    -1,    -1,    92,    74,    -1,    -1,    77,    78,    79,
    3902       80,    81,    82,    -1,    84,    85,    -1,    -1,   107,    -1,
    3903      109,    -1,    92,    -1,    36,    -1,    38,   116,   117,   118,
    3904      119,   120,   121,    -1,    -1,    -1,    -1,   107,    -1,   109,
    3905       -1,    -1,    -1,    36,    -1,    38,   116,   117,   118,   119,
    3906      120,   121,    64,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3907       -1,    -1,    74,    -1,    -1,    77,    78,    79,    80,    81,
    3908       82,    64,    84,    85,    -1,    -1,    -1,    70,    -1,    -1,
    3909       92,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
    3910       -1,    84,    85,    -1,    -1,   107,    -1,    -1,    -1,    92,
    3911       -1,    36,    -1,    38,   116,   117,   118,   119,   120,   121,
    3912       -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,
    3913       -1,    -1,    -1,   116,   117,   118,   119,   120,   121,    64,
    3914       -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    74,
    3915       -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
    3916       85,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,
    3917       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3918       -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3919       -1,   116,   117,   118,   119,   120,   121,     4,     5,     6,
    3920        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3921       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3922       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3923       37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3924       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3925       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    3926       67,    -1,    69,    70,    -1,    72,    73,    74,    -1,    -1,
    3927       -1,    -1,    -1,    -1,    81,    82,     3,     4,     5,     6,
     3992      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
     3993      62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
     3994      -1,    -1,    -1,    -1,    76,    77,     3,     4,     5,     6,
    39283995       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    39293996      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     
    39313998      37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39323999      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3933       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    3934       67,    -1,    69,    -1,    -1,    72,    73,     3,     4,     5,
     4000      -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
     4001      67,    68,     3,     4,     5,     6,     7,     8,     9,    10,
     4002      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     4003      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     4004      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
     4005      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4006      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     4007      -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,     5,
    39354008       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    39364009      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     
    39384011      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39394012      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3940       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
    3941       -1,    67,    -1,    69,    -1,    -1,    72,    73,     4,     5,
    3942        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3943       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3944       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3945       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4013      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
     4014      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     4015      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4016      -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
     4017      37,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     4018      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     4019      29,    30,    31,    60,    -1,    -1,    -1,    -1,    37,    -1,
     4020      67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39464021      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3947       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
    3948       -1,    67,    -1,    69,    -1,    -1,    72,    73
     4022      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68
    39494023};
    39504024
     
    39564030      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    39574031      22,    23,    24,    25,    26,    29,    30,    31,    32,    35,
    3958       37,    38,    62,    65,    67,    69,    70,    72,    73,    74,
    3959       81,    82,   107,   109,   117,   135,   138,   195,   209,   210,
    3960      211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
    3961      221,   222,   223,   224,   225,   226,   228,   229,   230,   231,
    3962      232,   233,   234,   235,   237,   238,   239,   240,   241,   242,
    3963      243,   251,   252,   278,   279,   280,   288,   291,   297,   298,
    3964      300,   302,   303,   309,   314,   318,   319,   320,   321,   322,
    3965      323,   324,   325,   345,   362,   363,   364,   365,    70,   117,
    3966      137,   212,   214,   222,   224,   234,   238,   240,   279,    80,
    3967      107,   307,   308,   309,   307,   307,    70,    72,    73,    74,
    3968      136,   137,   268,   269,   289,   290,    72,    73,   269,   107,
    3969      300,    11,   196,   107,   117,   314,   319,   320,   321,   323,
    3970      324,   325,   110,   132,   109,   215,   222,   224,   318,   322,
    3971      361,   362,   365,   366,   133,   105,   129,   272,   112,   133,
    3972      170,    72,    73,   135,   267,   133,   133,   133,   114,   133,
    3973       72,    73,   107,   117,   304,   313,   314,   315,   316,   317,
    3974      318,   322,   326,   327,   328,   329,   330,   336,     3,    27,
    3975       76,   236,     3,     5,    72,   109,   117,   214,   225,   229,
    3976      232,   241,   280,   318,   322,   365,   212,   214,   224,   234,
    3977      238,   240,   279,   318,   322,    32,   230,   230,   225,   232,
    3978      133,   230,   225,   230,   225,    73,   107,   112,   269,   280,
    3979      112,   269,   230,   225,   114,   133,   133,     0,   132,   107,
    3980      170,   307,   307,   132,   109,   222,   224,   363,   267,   267,
    3981      224,   129,   107,   117,   304,   314,   318,   109,   117,   365,
    3982      301,   227,   309,   107,   285,   107,   107,    49,   107,    36,
    3983       38,    64,    70,    74,    77,    78,    79,    80,    84,    85,
    3984       92,   107,   109,   116,   117,   118,   119,   120,   121,   134,
    3985      138,   139,   140,   141,   146,   147,   148,   149,   150,   151,
    3986      152,   153,   154,   155,   156,   157,   158,   159,   161,   163,
    3987      222,   271,   287,   361,   366,   224,   108,   108,   108,   108,
    3988      108,   108,   108,    72,    73,   109,   222,   267,   345,   363,
    3989      109,   117,   161,   214,   215,   221,   224,   228,   229,   234,
    3990      237,   238,   240,   257,   258,   262,   263,   264,   265,   279,
    3991      345,   357,   358,   359,   360,   365,   366,   110,   107,   318,
    3992      322,   365,   107,   114,   130,   109,   112,   117,   161,   273,
    3993      273,   113,   132,   114,   130,   107,   114,   130,   114,   130,
    3994      114,   130,   307,   130,   314,   315,   316,   317,   327,   328,
    3995      329,   330,   224,   313,   326,    62,   306,   109,   307,   344,
    3996      345,   307,   307,   170,   132,   107,   307,   344,   307,   307,
    3997      224,   304,   107,   107,   223,   224,   222,   224,   110,   132,
    3998      222,   361,   366,   170,   132,   267,   272,   214,   229,   318,
    3999      322,   170,   132,   289,   224,   234,   130,   224,   224,   287,
    4000       38,   109,   222,   244,   245,   246,   247,   361,   365,   112,
    4001      253,   269,   112,   224,   289,   130,   130,   300,   132,   137,
    4002      266,     3,   133,   204,   205,   219,   221,   224,   132,   306,
    4003      107,   306,   161,   314,   224,   107,   132,   267,   112,    32,
    4004       33,    34,   222,   281,   282,   284,   132,   127,   129,   286,
    4005      132,   225,   231,   232,   267,   310,   311,   312,   107,   139,
    4006      107,   146,   146,   148,   107,   146,   107,   107,   146,   146,
    4007      137,   109,   161,   166,   170,   222,   270,   361,   110,   132,
    4008      148,   148,    80,    83,    84,    85,   107,   109,   111,   112,
    4009       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    4010      129,   165,   148,   117,   122,   123,   119,   120,    86,    87,
    4011       88,    89,   124,   125,    90,    91,   118,   126,   127,    92,
    4012       93,   128,   129,   368,   107,   117,   340,   341,   342,   343,
    4013      344,   108,   114,   107,   344,   345,   107,   344,   345,   132,
    4014      107,   222,   363,   110,   132,   109,   117,   133,   222,   224,
    4015      356,   357,   365,   366,   133,   107,   109,   117,   314,   331,
    4016      332,   333,   334,   335,   336,   337,   338,   339,   345,   346,
    4017      347,   348,   349,   350,   351,   117,   365,   224,   133,   133,
    4018      117,   222,   224,   358,   267,   222,   345,   358,   267,   107,
    4019      132,   132,   132,   110,   132,    70,    78,   109,   111,   269,
    4020      273,   274,   275,   276,   277,   132,   132,   132,   132,   132,
    4021      132,   304,   108,   108,   108,   108,   108,   108,   108,   313,
    4022      326,   107,   272,   110,   204,   132,   304,   166,   271,   166,
    4023      271,   304,   109,   204,   306,   170,   132,   204,   108,   246,
    4024      247,   110,   132,   107,   115,   117,   248,   250,   313,   314,
    4025      326,   344,   352,   353,   354,   355,   113,   245,   114,   130,
    4026      114,   130,   269,   244,   114,   367,   129,   254,   253,   224,
    4027      259,   260,   261,   264,   265,   108,   114,   170,   132,   117,
    4028      161,   132,   221,   224,   258,   357,   365,   298,   299,   107,
    4029      117,   331,   108,   114,   368,   269,   281,   107,   112,   269,
    4030      271,   281,   108,   114,   107,   139,   108,   115,   270,   270,
    4031      109,   137,   143,   161,   271,   270,   110,   132,   108,   114,
    4032      108,   107,   117,   352,   108,   114,   161,   109,   137,   109,
    4033      142,   143,   132,   109,   137,   142,   161,   161,   148,   148,
    4034      148,   149,   149,   150,   150,   151,   151,   151,   151,   152,
    4035      152,   153,   154,   155,   156,   157,   115,   166,   161,   132,
    4036      341,   342,   343,   224,   340,   307,   307,   161,   271,   132,
    4037      266,   117,   132,   222,   345,   358,   224,   228,   110,   132,
    4038      110,   365,   110,   107,   132,   314,   332,   333,   334,   337,
    4039      347,   348,   349,   110,   132,   224,   331,   335,   346,   107,
    4040      307,   350,   368,   307,   307,   368,   107,   307,   350,   307,
    4041      307,   307,   307,   345,   222,   356,   366,   267,   110,   114,
    4042      110,   114,   368,   222,   358,   368,   255,   256,   257,   258,
    4043      255,   255,   267,   161,   132,   109,   269,   115,   114,   367,
    4044      273,    78,   109,   115,   277,    28,   206,   207,   267,   255,
    4045      137,   304,   137,   306,   107,   344,   345,   107,   344,   345,
    4046      139,   345,   170,   259,   108,   108,   108,   108,   110,   170,
    4047      204,   170,   112,   130,   130,   109,   314,   353,   354,   355,
    4048      159,   160,   224,   352,   249,   250,   249,   307,   307,   269,
    4049      307,   113,   269,   113,   160,   367,   133,   133,   137,   219,
    4050      133,   133,   255,   107,   117,   365,   133,   113,   224,   282,
    4051      283,   133,   132,   132,   107,   133,   108,   311,   166,   167,
    4052      115,   130,   109,   139,   197,   198,   199,   108,   108,   132,
    4053      115,   108,   108,   108,   161,   224,   112,   148,   163,   161,
    4054      162,   164,   114,   133,   132,   132,   108,   114,   161,   132,
    4055      113,   159,   115,   259,   108,   108,   108,   340,   259,   108,
    4056      255,   222,   358,   109,   117,   161,   161,   224,   337,   259,
    4057      108,   108,   108,   108,   108,   108,   108,     7,   224,   331,
    4058      335,   346,   132,   132,   368,   132,   132,   108,   133,   133,
    4059      133,   133,   272,   133,   159,   160,   161,   305,   132,   273,
    4060      275,   113,   132,   208,   269,    38,    39,    41,    44,    45,
    4061       46,    47,    48,    49,    50,    51,    55,    59,    60,   109,
    4062      126,   137,   167,   168,   169,   170,   171,   172,   174,   175,
    4063      187,   189,   190,   195,   209,   303,    28,   133,   129,   272,
    4064      132,   132,   108,   133,   170,   244,   110,   108,   108,   108,
    4065      352,   248,   254,   113,   108,   114,   110,   110,   133,   224,
    4066      114,   368,   285,   108,   281,   212,   214,   222,   293,   294,
    4067      295,   296,   287,   108,   108,   115,   160,   107,   108,   115,
    4068      114,   161,   161,   274,   114,   133,   164,   110,   137,   144,
    4069      145,   161,   143,   133,   144,   159,   163,   133,   107,   344,
    4070      345,   133,   133,   132,   133,   133,   133,   161,   108,   133,
    4071      107,   344,   345,   107,   350,   107,   350,   345,   223,     7,
    4072      117,   133,   161,   259,   259,   258,   262,   262,   263,   114,
    4073      114,   108,   108,   110,    94,   121,   133,   133,   144,   273,
    4074      161,   114,   130,   209,   213,   224,   228,   107,   107,   168,
    4075      107,   107,   130,   137,   130,   137,   117,   137,   167,   107,
    4076      170,   162,   162,   110,   141,   115,   130,   133,   132,   133,
    4077      208,   108,   161,   259,   259,   307,   108,   113,   107,   344,
    4078      345,   132,   108,   132,   133,   304,   113,   132,   133,   133,
    4079      108,   112,   197,   110,   160,   130,   197,   199,   114,   133,
    4080      367,   162,   110,   133,    83,   111,   114,   133,   133,   110,
    4081      133,   108,   132,   108,   108,   110,   110,   110,   133,   108,
    4082      132,   132,   132,   161,   161,   133,   110,   133,   133,   133,
    4083      133,   132,   132,   160,   160,   110,   110,   133,   133,   269,
    4084      224,   166,   166,    45,   166,   132,   130,   130,   166,   130,
    4085      130,   166,    56,    57,    58,   191,   192,   193,   130,    61,
    4086      130,   112,   307,   172,   113,   130,   133,   133,   132,    94,
    4087      264,   265,   108,   294,   114,   130,   114,   130,   113,   292,
    4088      115,   139,   108,   108,   115,   164,   110,   113,   110,   109,
    4089      145,   109,   145,   145,   110,   110,   110,   259,   110,   259,
    4090      259,   259,   133,   133,   110,   110,   108,   108,   110,   114,
    4091       94,   258,    94,   133,   110,   110,   108,   108,   107,   108,
    4092      167,   188,   209,   130,   108,   107,   107,   170,   193,    56,
    4093       57,   161,   142,   168,   108,   108,   259,   112,   132,   132,
    4094      293,   139,   200,   107,   130,   200,   133,   115,   132,   132,
    4095      133,   133,   133,   133,   110,   110,   132,   133,   110,   168,
    4096       42,    43,   112,   178,   179,   180,   166,   168,   133,   108,
    4097      167,   112,   180,    94,   132,    94,   132,   107,   107,   130,
    4098      113,   133,   132,   267,   304,   113,   114,   115,   160,   108,
    4099      110,   161,   144,   144,   108,   108,   108,   108,   262,    40,
    4100      160,   176,   177,   305,   115,   132,   168,   178,   108,   130,
    4101      168,   130,   132,   108,   132,   108,   132,    94,   132,    94,
    4102      132,   130,   108,   293,   139,   137,   201,   108,   130,   115,
    4103      133,   133,   168,    94,   114,   115,   133,   202,   203,   209,
    4104      130,   167,   167,   202,   170,   194,   222,   361,   170,   194,
    4105      108,   132,   108,   132,   113,   108,   114,   161,   110,   110,
    4106      160,   176,   179,   181,   182,   132,   130,   179,   183,   184,
    4107      133,   107,   117,   304,   352,   137,   133,   170,   194,   170,
    4108      194,   107,   130,   137,   168,   173,   113,   179,   209,   167,
    4109       54,   173,   186,   113,   179,   108,   224,   108,   133,   133,
    4110      287,   168,   173,   130,   185,   186,   173,   186,   170,   170,
    4111      108,   108,   108,   185,   133,   133,   170,   170,   133,   133
     4032      37,    38,    57,    60,    62,    64,    65,    67,    68,    69,
     4033      76,    77,   101,   103,   111,   129,   132,   189,   203,   204,
     4034     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     4035     215,   216,   217,   218,   219,   220,   222,   223,   224,   225,
     4036     226,   227,   228,   229,   231,   232,   233,   234,   235,   236,
     4037     237,   245,   246,   272,   273,   274,   282,   285,   291,   292,
     4038     294,   296,   297,   303,   308,   312,   313,   314,   315,   316,
     4039     317,   318,   319,   339,   356,   357,   358,   359,    65,   111,
     4040     131,   206,   208,   216,   218,   228,   232,   234,   273,    75,
     4041     101,   301,   302,   303,   301,   301,    65,    67,    68,    69,
     4042     130,   131,   262,   263,   283,   284,    67,    68,   263,   101,
     4043     294,    11,   190,   101,   111,   308,   313,   314,   315,   317,
     4044     318,   319,   104,   126,   103,   209,   216,   218,   312,   316,
     4045     355,   356,   359,   360,   127,   123,   266,   106,   127,   164,
     4046      67,    68,   129,   261,   127,   127,   127,   108,   127,    67,
     4047      68,   101,   111,   298,   307,   308,   309,   310,   311,   312,
     4048     316,   320,   321,   322,   323,   324,   330,     3,    27,    71,
     4049     230,     3,     5,    67,   103,   111,   208,   219,   223,   226,
     4050     235,   274,   312,   316,   359,   206,   208,   218,   228,   232,
     4051     234,   273,   312,   316,    32,   224,   224,   219,   226,   127,
     4052     224,   219,   224,   219,    68,   101,   106,   263,   274,   106,
     4053     263,   224,   219,   108,   127,   127,     0,   126,   101,   164,
     4054     301,   301,   126,   103,   216,   218,   357,   261,   261,   218,
     4055     123,   101,   111,   298,   308,   312,   103,   111,   359,   295,
     4056     221,   303,   101,   279,   101,   101,    49,   101,    36,    38,
     4057      59,    65,    69,    72,    73,    74,    75,    79,    80,    87,
     4058     101,   103,   110,   111,   112,   113,   114,   115,   128,   132,
     4059     133,   134,   135,   140,   141,   142,   143,   144,   145,   146,
     4060     147,   148,   149,   150,   151,   152,   153,   155,   157,   216,
     4061     265,   281,   355,   360,   218,   102,   102,   102,   102,   102,
     4062     102,   102,    67,    68,   103,   216,   261,   339,   357,   103,
     4063     111,   155,   208,   209,   215,   218,   222,   223,   228,   231,
     4064     232,   234,   251,   252,   256,   257,   258,   259,   273,   339,
     4065     351,   352,   353,   354,   359,   360,   104,   101,   312,   316,
     4066     359,   101,   108,   124,   103,   106,   111,   155,   267,   107,
     4067     126,   108,   124,   101,   108,   124,   108,   124,   108,   124,
     4068     301,   124,   308,   309,   310,   311,   321,   322,   323,   324,
     4069     218,   307,   320,    57,   300,   103,   301,   338,   339,   301,
     4070     301,   164,   126,   101,   301,   338,   301,   301,   218,   298,
     4071     101,   101,   217,   218,   216,   218,   104,   126,   216,   355,
     4072     360,   164,   126,   261,   266,   208,   223,   312,   316,   164,
     4073     126,   283,   218,   228,   124,   218,   218,   281,    38,   103,
     4074     216,   238,   239,   240,   241,   355,   359,   106,   247,   263,
     4075     106,   218,   283,   124,   124,   294,   126,   131,   260,     3,
     4076     127,   198,   199,   213,   215,   218,   126,   300,   101,   300,
     4077     155,   308,   218,   101,   126,   261,   106,    32,    33,    34,
     4078     216,   275,   276,   278,   126,   121,   123,   280,   126,   219,
     4079     225,   226,   261,   304,   305,   306,   101,   133,   101,   140,
     4080     140,   142,   101,   140,   101,   101,   140,   140,   131,   103,
     4081     155,   160,   164,   216,   264,   355,   104,   126,   142,   142,
     4082      75,    78,    79,    80,   101,   103,   105,    90,    91,    92,
     4083      93,    94,    95,    96,    97,    98,    99,   123,   159,   142,
     4084     111,   116,   117,   113,   114,    81,    82,    83,    84,   118,
     4085     119,    85,    86,   112,   120,   121,    87,    88,   122,   123,
     4086     362,   101,   111,   334,   335,   336,   337,   338,   102,   108,
     4087     101,   338,   339,   101,   338,   339,   126,   101,   216,   357,
     4088     104,   126,   103,   111,   127,   216,   218,   350,   351,   359,
     4089     360,   127,   101,   103,   111,   308,   325,   326,   327,   328,
     4090     329,   330,   331,   332,   333,   339,   340,   341,   342,   343,
     4091     344,   345,   111,   359,   218,   127,   127,   111,   216,   218,
     4092     352,   261,   216,   339,   352,   261,   101,   126,   126,   126,
     4093     104,   126,    65,    73,   103,   105,   263,   267,   268,   269,
     4094     270,   271,   126,   126,   126,   126,   126,   126,   298,   102,
     4095     102,   102,   102,   102,   102,   102,   307,   320,   101,   266,
     4096     104,   198,   126,   298,   160,   265,   160,   265,   298,   103,
     4097     198,   300,   164,   126,   198,   102,   240,   241,   104,   126,
     4098     101,   109,   111,   242,   244,   307,   308,   320,   338,   346,
     4099     347,   348,   349,   107,   239,   108,   124,   108,   124,   263,
     4100     238,   108,   361,   123,   248,   247,   218,   253,   254,   255,
     4101     258,   259,   102,   108,   164,   126,   111,   155,   126,   215,
     4102     218,   252,   351,   359,   292,   293,   101,   111,   325,   102,
     4103     108,   362,   263,   275,   101,   106,   263,   265,   275,   102,
     4104     108,   101,   133,   102,   109,   264,   264,   103,   131,   137,
     4105     155,   265,   264,   104,   126,   102,   108,   102,   101,   111,
     4106     346,   102,   108,   155,   103,   131,   103,   136,   137,   126,
     4107     103,   131,   155,   155,   142,   142,   142,   143,   143,   144,
     4108     144,   145,   145,   145,   145,   146,   146,   147,   148,   149,
     4109     150,   151,   109,   160,   155,   126,   335,   336,   337,   218,
     4110     334,   301,   301,   155,   265,   126,   260,   111,   126,   216,
     4111     339,   352,   218,   222,   104,   126,   104,   359,   104,   101,
     4112     126,   308,   326,   327,   328,   331,   341,   342,   343,   104,
     4113     126,   218,   325,   329,   340,   101,   301,   344,   362,   301,
     4114     301,   362,   101,   301,   344,   301,   301,   301,   301,   339,
     4115     216,   350,   360,   261,   104,   108,   104,   108,   362,   216,
     4116     352,   362,   249,   250,   251,   252,   249,   249,   261,   155,
     4117     126,   103,   263,   109,   108,   361,   267,    73,   103,   109,
     4118     271,    28,   200,   201,   261,   249,   131,   298,   131,   300,
     4119     101,   338,   339,   101,   338,   339,   133,   339,   164,   253,
     4120     102,   102,   102,   102,   104,   164,   198,   164,   106,   124,
     4121     124,   103,   308,   347,   348,   349,   153,   154,   218,   346,
     4122     243,   244,   243,   301,   301,   263,   301,   107,   263,   107,
     4123     154,   361,   127,   127,   131,   213,   127,   127,   249,   101,
     4124     111,   359,   127,   107,   218,   276,   277,   127,   126,   126,
     4125     101,   127,   102,   305,   160,   161,   109,   124,   103,   133,
     4126     191,   192,   193,   102,   102,   126,   109,   102,   102,   102,
     4127     155,   218,   106,   142,   157,   155,   156,   158,   108,   127,
     4128     126,   126,   102,   108,   155,   126,   153,   109,   253,   102,
     4129     102,   102,   334,   253,   102,   249,   216,   352,   103,   111,
     4130     155,   155,   218,   331,   253,   102,   102,   102,   102,   102,
     4131     102,   102,     7,   218,   325,   329,   340,   126,   126,   362,
     4132     126,   126,   102,   127,   127,   127,   127,   266,   127,   153,
     4133     154,   155,   299,   126,   267,   269,   107,   126,   202,   263,
     4134      38,    39,    41,    44,    45,    46,    47,    48,    49,    50,
     4135      51,    53,    56,   103,   131,   161,   162,   163,   164,   165,
     4136     166,   168,   169,   181,   183,   184,   189,   203,   297,    28,
     4137     127,   123,   266,   126,   126,   102,   127,   164,   238,   104,
     4138     102,   102,   102,   346,   242,   248,   107,   102,   108,   104,
     4139     104,   127,   218,   108,   362,   279,   102,   275,   206,   208,
     4140     216,   287,   288,   289,   290,   281,   102,   102,   109,   154,
     4141     101,   102,   109,   108,   155,   155,   268,   108,   127,   158,
     4142     104,   131,   138,   139,   155,   137,   127,   138,   153,   157,
     4143     127,   101,   338,   339,   127,   127,   126,   127,   127,   127,
     4144     155,   102,   127,   101,   338,   339,   101,   344,   101,   344,
     4145     339,   217,     7,   111,   127,   155,   253,   253,   252,   256,
     4146     256,   257,   108,   108,   102,   102,   104,    89,   115,   127,
     4147     127,   138,   267,   155,   108,   124,   203,   207,   218,   222,
     4148     101,   101,   162,   101,   101,   124,   131,   124,   131,   111,
     4149     131,   161,   101,   164,   124,   155,   104,   109,   124,   127,
     4150     126,   127,   202,   102,   155,   253,   253,   301,   102,   107,
     4151     101,   338,   339,   126,   102,   126,   127,   298,   107,   126,
     4152     127,   127,   102,   106,   191,   104,   154,   124,   191,   193,
     4153     108,   127,   361,   156,   104,   127,    78,   105,   108,   127,
     4154     127,   104,   127,   102,   126,   102,   102,   104,   104,   104,
     4155     127,   102,   126,   126,   126,   155,   155,   127,   104,   127,
     4156     127,   127,   127,   126,   126,   154,   154,   104,   104,   127,
     4157     127,   263,   218,   160,   160,    45,   160,   126,   124,   124,
     4158     160,   124,   124,   160,    54,    55,   185,   186,   187,   124,
     4159     301,   166,   107,   124,   127,   127,   126,    89,   258,   259,
     4160     102,   288,   108,   124,   108,   124,   107,   286,   109,   133,
     4161     102,   102,   109,   158,   104,   107,   104,   103,   139,   103,
     4162     139,   139,   104,   104,   104,   253,   104,   253,   253,   253,
     4163     127,   127,   104,   104,   102,   102,   104,   108,    89,   252,
     4164      89,   127,   104,   104,   102,   102,   101,   102,   161,   182,
     4165     203,   124,   102,   101,   164,   187,    54,   162,   102,   102,
     4166     253,   106,   126,   126,   287,   133,   194,   101,   124,   194,
     4167     127,   109,   126,   126,   127,   127,   127,   127,   104,   104,
     4168     126,   127,   104,   162,    42,    43,   106,   172,   173,   174,
     4169     160,   162,   127,   102,   161,   106,   174,    89,   126,   101,
     4170     127,   126,   261,   298,   107,   108,   109,   154,   102,   104,
     4171     155,   138,   138,   102,   102,   102,   102,   256,    40,   154,
     4172     170,   171,   299,   109,   126,   162,   172,   102,   124,   162,
     4173     124,   126,   102,   126,    89,   126,   102,   287,   133,   131,
     4174     195,   102,   124,   109,   127,   127,   162,    89,   108,   109,
     4175     127,   196,   197,   203,   124,   161,   161,   196,   164,   188,
     4176     216,   355,   102,   126,   107,   102,   108,   155,   104,   104,
     4177     154,   170,   173,   175,   176,   126,   124,   173,   177,   178,
     4178     127,   101,   111,   298,   346,   131,   164,   188,   101,   124,
     4179     131,   162,   167,   107,   173,   203,   161,    52,   167,   180,
     4180     107,   173,   102,   218,   127,   281,   162,   167,   124,   179,
     4181     180,   167,   180,   164,   102,   102,   179,   127,   164,   127
    41124182};
    41134183
     
    49465016
    49475017/* Line 1806 of yacc.c  */
    4948 #line 290 "parser.yy"
     5018#line 288 "parser.yy"
    49495019    {
    49505020                        typedefTable.enterScope();
     
    49555025
    49565026/* Line 1806 of yacc.c  */
    4957 #line 296 "parser.yy"
     5027#line 294 "parser.yy"
    49585028    {
    49595029                        typedefTable.leaveScope();
     
    49645034
    49655035/* Line 1806 of yacc.c  */
     5036#line 303 "parser.yy"
     5037    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
     5038    break;
     5039
     5040  case 5:
     5041
     5042/* Line 1806 of yacc.c  */
     5043#line 304 "parser.yy"
     5044    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
     5045    break;
     5046
     5047  case 6:
     5048
     5049/* Line 1806 of yacc.c  */
    49665050#line 305 "parser.yy"
    4967     { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    4968     break;
    4969 
    4970   case 5:
    4971 
    4972 /* Line 1806 of yacc.c  */
    4973 #line 306 "parser.yy"
    4974     { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    4975     break;
    4976 
    4977   case 6:
    4978 
    4979 /* Line 1806 of yacc.c  */
    4980 #line 307 "parser.yy"
    49815051    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    49825052    break;
     
    49855055
    49865056/* Line 1806 of yacc.c  */
    4987 #line 332 "parser.yy"
     5057#line 329 "parser.yy"
    49885058    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    49895059    break;
     
    49925062
    49935063/* Line 1806 of yacc.c  */
    4994 #line 333 "parser.yy"
     5064#line 330 "parser.yy"
    49955065    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    49965066    break;
     
    49995069
    50005070/* Line 1806 of yacc.c  */
    5001 #line 340 "parser.yy"
     5071#line 337 "parser.yy"
    50025072    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50035073    break;
     
    50065076
    50075077/* Line 1806 of yacc.c  */
    5008 #line 342 "parser.yy"
     5078#line 339 "parser.yy"
    50095079    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50105080    break;
     
    50135083
    50145084/* Line 1806 of yacc.c  */
    5015 #line 344 "parser.yy"
     5085#line 341 "parser.yy"
    50165086    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50175087    break;
     
    50205090
    50215091/* Line 1806 of yacc.c  */
    5022 #line 346 "parser.yy"
     5092#line 343 "parser.yy"
    50235093    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    50245094    break;
     
    50275097
    50285098/* Line 1806 of yacc.c  */
    5029 #line 356 "parser.yy"
     5099#line 353 "parser.yy"
    50305100    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    50315101    break;
     
    50345104
    50355105/* Line 1806 of yacc.c  */
    5036 #line 358 "parser.yy"
     5106#line 355 "parser.yy"
    50375107    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    50385108    break;
     
    50415111
    50425112/* Line 1806 of yacc.c  */
     5113#line 357 "parser.yy"
     5114    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
     5115    break;
     5116
     5117  case 26:
     5118
     5119/* Line 1806 of yacc.c  */
    50435120#line 360 "parser.yy"
    5044     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    5045     break;
    5046 
    5047   case 26:
     5121    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
     5122    break;
     5123
     5124  case 28:
    50485125
    50495126/* Line 1806 of yacc.c  */
    50505127#line 363 "parser.yy"
    5051     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    5052     break;
    5053 
    5054   case 28:
    5055 
    5056 /* Line 1806 of yacc.c  */
    5057 #line 366 "parser.yy"
    50585128    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    50595129    break;
     
    50625132
    50635133/* Line 1806 of yacc.c  */
     5134#line 365 "parser.yy"
     5135    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
     5136    break;
     5137
     5138  case 30:
     5139
     5140/* Line 1806 of yacc.c  */
    50645141#line 368 "parser.yy"
    5065     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    5066     break;
    5067 
    5068   case 30:
    5069 
    5070 /* Line 1806 of yacc.c  */
    5071 #line 370 "parser.yy"
    50725142    { (yyval.en) = 0; }
    50735143    break;
    50745144
    5075   case 31:
    5076 
    5077 /* Line 1806 of yacc.c  */
    5078 #line 372 "parser.yy"
    5079     {
    5080                         Token fn; fn.str = new std::string( "?{}" ); // location undefined
    5081                         (yyval.en) = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) );
    5082                 }
     5145  case 32:
     5146
     5147/* Line 1806 of yacc.c  */
     5148#line 374 "parser.yy"
     5149    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    50835150    break;
    50845151
     
    50865153
    50875154/* Line 1806 of yacc.c  */
    5088 #line 381 "parser.yy"
    5089     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    5090     break;
    5091 
    5092   case 34:
    5093 
    5094 /* Line 1806 of yacc.c  */
    5095 #line 386 "parser.yy"
     5155#line 379 "parser.yy"
    50965156    { (yyval.en) = 0; }
    50975157    break;
    50985158
     5159  case 35:
     5160
     5161/* Line 1806 of yacc.c  */
     5162#line 382 "parser.yy"
     5163    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
     5164    break;
     5165
    50995166  case 36:
    51005167
    51015168/* Line 1806 of yacc.c  */
     5169#line 387 "parser.yy"
     5170    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
     5171    break;
     5172
     5173  case 37:
     5174
     5175/* Line 1806 of yacc.c  */
    51025176#line 389 "parser.yy"
    5103     { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
    5104     break;
    5105 
    5106   case 37:
     5177    { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
     5178    break;
     5179
     5180  case 39:
    51075181
    51085182/* Line 1806 of yacc.c  */
    51095183#line 394 "parser.yy"
    5110     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
    5111     break;
    5112 
    5113   case 38:
    5114 
    5115 /* Line 1806 of yacc.c  */
    5116 #line 396 "parser.yy"
    5117     { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
     5184    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    51185185    break;
    51195186
     
    51215188
    51225189/* Line 1806 of yacc.c  */
     5190#line 399 "parser.yy"
     5191    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5192    break;
     5193
     5194  case 41:
     5195
     5196/* Line 1806 of yacc.c  */
    51235197#line 401 "parser.yy"
     5198    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
     5199    break;
     5200
     5201  case 42:
     5202
     5203/* Line 1806 of yacc.c  */
     5204#line 403 "parser.yy"
     5205    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
     5206    break;
     5207
     5208  case 43:
     5209
     5210/* Line 1806 of yacc.c  */
     5211#line 405 "parser.yy"
     5212    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
     5213    break;
     5214
     5215  case 44:
     5216
     5217/* Line 1806 of yacc.c  */
     5218#line 407 "parser.yy"
     5219    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
     5220    break;
     5221
     5222  case 46:
     5223
     5224/* Line 1806 of yacc.c  */
     5225#line 415 "parser.yy"
     5226    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5227    break;
     5228
     5229  case 47:
     5230
     5231/* Line 1806 of yacc.c  */
     5232#line 417 "parser.yy"
     5233    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5234    break;
     5235
     5236  case 48:
     5237
     5238/* Line 1806 of yacc.c  */
     5239#line 419 "parser.yy"
     5240    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
     5241    break;
     5242
     5243  case 49:
     5244
     5245/* Line 1806 of yacc.c  */
     5246#line 421 "parser.yy"
     5247    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
     5248    break;
     5249
     5250  case 50:
     5251
     5252/* Line 1806 of yacc.c  */
     5253#line 423 "parser.yy"
     5254    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     5255    break;
     5256
     5257  case 51:
     5258
     5259/* Line 1806 of yacc.c  */
     5260#line 425 "parser.yy"
     5261    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     5262    break;
     5263
     5264  case 52:
     5265
     5266/* Line 1806 of yacc.c  */
     5267#line 427 "parser.yy"
     5268    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
     5269    break;
     5270
     5271  case 53:
     5272
     5273/* Line 1806 of yacc.c  */
     5274#line 429 "parser.yy"
     5275    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
     5276    break;
     5277
     5278  case 54:
     5279
     5280/* Line 1806 of yacc.c  */
     5281#line 435 "parser.yy"
     5282    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
     5283    break;
     5284
     5285  case 55:
     5286
     5287/* Line 1806 of yacc.c  */
     5288#line 437 "parser.yy"
     5289    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5290    break;
     5291
     5292  case 56:
     5293
     5294/* Line 1806 of yacc.c  */
     5295#line 439 "parser.yy"
     5296    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
     5297    break;
     5298
     5299  case 57:
     5300
     5301/* Line 1806 of yacc.c  */
     5302#line 441 "parser.yy"
     5303    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5304    break;
     5305
     5306  case 58:
     5307
     5308/* Line 1806 of yacc.c  */
     5309#line 443 "parser.yy"
     5310    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
     5311    break;
     5312
     5313  case 59:
     5314
     5315/* Line 1806 of yacc.c  */
     5316#line 445 "parser.yy"
     5317    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
     5318    break;
     5319
     5320  case 60:
     5321
     5322/* Line 1806 of yacc.c  */
     5323#line 447 "parser.yy"
     5324    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5325    break;
     5326
     5327  case 61:
     5328
     5329/* Line 1806 of yacc.c  */
     5330#line 449 "parser.yy"
     5331    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
     5332    break;
     5333
     5334  case 62:
     5335
     5336/* Line 1806 of yacc.c  */
     5337#line 453 "parser.yy"
     5338    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
     5339    break;
     5340
     5341  case 63:
     5342
     5343/* Line 1806 of yacc.c  */
     5344#line 454 "parser.yy"
     5345    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
     5346    break;
     5347
     5348  case 64:
     5349
     5350/* Line 1806 of yacc.c  */
     5351#line 455 "parser.yy"
     5352    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
     5353    break;
     5354
     5355  case 65:
     5356
     5357/* Line 1806 of yacc.c  */
     5358#line 456 "parser.yy"
     5359    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
     5360    break;
     5361
     5362  case 67:
     5363
     5364/* Line 1806 of yacc.c  */
     5365#line 462 "parser.yy"
     5366    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
     5367    break;
     5368
     5369  case 68:
     5370
     5371/* Line 1806 of yacc.c  */
     5372#line 464 "parser.yy"
     5373    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
     5374    break;
     5375
     5376  case 70:
     5377
     5378/* Line 1806 of yacc.c  */
     5379#line 470 "parser.yy"
     5380    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5381    break;
     5382
     5383  case 71:
     5384
     5385/* Line 1806 of yacc.c  */
     5386#line 472 "parser.yy"
     5387    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5388    break;
     5389
     5390  case 72:
     5391
     5392/* Line 1806 of yacc.c  */
     5393#line 474 "parser.yy"
     5394    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5395    break;
     5396
     5397  case 74:
     5398
     5399/* Line 1806 of yacc.c  */
     5400#line 480 "parser.yy"
     5401    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5402    break;
     5403
     5404  case 75:
     5405
     5406/* Line 1806 of yacc.c  */
     5407#line 482 "parser.yy"
     5408    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5409    break;
     5410
     5411  case 77:
     5412
     5413/* Line 1806 of yacc.c  */
     5414#line 488 "parser.yy"
     5415    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5416    break;
     5417
     5418  case 78:
     5419
     5420/* Line 1806 of yacc.c  */
     5421#line 490 "parser.yy"
     5422    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5423    break;
     5424
     5425  case 80:
     5426
     5427/* Line 1806 of yacc.c  */
     5428#line 496 "parser.yy"
     5429    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5430    break;
     5431
     5432  case 81:
     5433
     5434/* Line 1806 of yacc.c  */
     5435#line 498 "parser.yy"
     5436    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5437    break;
     5438
     5439  case 82:
     5440
     5441/* Line 1806 of yacc.c  */
     5442#line 500 "parser.yy"
     5443    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5444    break;
     5445
     5446  case 83:
     5447
     5448/* Line 1806 of yacc.c  */
     5449#line 502 "parser.yy"
     5450    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5451    break;
     5452
     5453  case 85:
     5454
     5455/* Line 1806 of yacc.c  */
     5456#line 508 "parser.yy"
     5457    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5458    break;
     5459
     5460  case 86:
     5461
     5462/* Line 1806 of yacc.c  */
     5463#line 510 "parser.yy"
     5464    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5465    break;
     5466
     5467  case 88:
     5468
     5469/* Line 1806 of yacc.c  */
     5470#line 516 "parser.yy"
     5471    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5472    break;
     5473
     5474  case 90:
     5475
     5476/* Line 1806 of yacc.c  */
     5477#line 522 "parser.yy"
     5478    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5479    break;
     5480
     5481  case 92:
     5482
     5483/* Line 1806 of yacc.c  */
     5484#line 528 "parser.yy"
     5485    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5486    break;
     5487
     5488  case 94:
     5489
     5490/* Line 1806 of yacc.c  */
     5491#line 534 "parser.yy"
     5492    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5493    break;
     5494
     5495  case 96:
     5496
     5497/* Line 1806 of yacc.c  */
     5498#line 540 "parser.yy"
     5499    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5500    break;
     5501
     5502  case 98:
     5503
     5504/* Line 1806 of yacc.c  */
     5505#line 546 "parser.yy"
     5506    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
     5507    break;
     5508
     5509  case 99:
     5510
     5511/* Line 1806 of yacc.c  */
     5512#line 548 "parser.yy"
     5513    { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5514    break;
     5515
     5516  case 100:
     5517
     5518/* Line 1806 of yacc.c  */
     5519#line 550 "parser.yy"
     5520    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
     5521    break;
     5522
     5523  case 103:
     5524
     5525/* Line 1806 of yacc.c  */
     5526#line 561 "parser.yy"
     5527    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5528    break;
     5529
     5530  case 104:
     5531
     5532/* Line 1806 of yacc.c  */
     5533#line 563 "parser.yy"
     5534    { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5535    break;
     5536
     5537  case 105:
     5538
     5539/* Line 1806 of yacc.c  */
     5540#line 565 "parser.yy"
     5541    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     5542    break;
     5543
     5544  case 106:
     5545
     5546/* Line 1806 of yacc.c  */
     5547#line 570 "parser.yy"
     5548    { (yyval.en) = new NullExprNode; }
     5549    break;
     5550
     5551  case 108:
     5552
     5553/* Line 1806 of yacc.c  */
     5554#line 578 "parser.yy"
     5555    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     5556    break;
     5557
     5558  case 109:
     5559
     5560/* Line 1806 of yacc.c  */
     5561#line 580 "parser.yy"
     5562    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
     5563    break;
     5564
     5565  case 110:
     5566
     5567/* Line 1806 of yacc.c  */
     5568#line 582 "parser.yy"
     5569    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
     5570    break;
     5571
     5572  case 111:
     5573
     5574/* Line 1806 of yacc.c  */
     5575#line 584 "parser.yy"
     5576    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
     5577    break;
     5578
     5579  case 113:
     5580
     5581/* Line 1806 of yacc.c  */
     5582#line 590 "parser.yy"
    51245583    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    51255584    break;
    51265585
    5127   case 41:
    5128 
    5129 /* Line 1806 of yacc.c  */
    5130 #line 406 "parser.yy"
    5131     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    5132     break;
    5133 
    5134   case 42:
    5135 
    5136 /* Line 1806 of yacc.c  */
    5137 #line 408 "parser.yy"
    5138     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5139     break;
    5140 
    5141   case 43:
    5142 
    5143 /* Line 1806 of yacc.c  */
    5144 #line 410 "parser.yy"
    5145     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5146     break;
    5147 
    5148   case 44:
    5149 
    5150 /* Line 1806 of yacc.c  */
    5151 #line 412 "parser.yy"
    5152     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5153     break;
    5154 
    5155   case 45:
    5156 
    5157 /* Line 1806 of yacc.c  */
    5158 #line 414 "parser.yy"
    5159     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5160     break;
    5161 
    5162   case 47:
    5163 
    5164 /* Line 1806 of yacc.c  */
    5165 #line 422 "parser.yy"
    5166     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5167     break;
    5168 
    5169   case 48:
    5170 
    5171 /* Line 1806 of yacc.c  */
    5172 #line 424 "parser.yy"
    5173     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5174     break;
    5175 
    5176   case 49:
    5177 
    5178 /* Line 1806 of yacc.c  */
    5179 #line 426 "parser.yy"
    5180     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    5181     break;
    5182 
    5183   case 50:
    5184 
    5185 /* Line 1806 of yacc.c  */
    5186 #line 428 "parser.yy"
    5187     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
    5188     break;
    5189 
    5190   case 51:
    5191 
    5192 /* Line 1806 of yacc.c  */
    5193 #line 430 "parser.yy"
    5194     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    5195     break;
    5196 
    5197   case 52:
    5198 
    5199 /* Line 1806 of yacc.c  */
    5200 #line 432 "parser.yy"
    5201     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5202     break;
    5203 
    5204   case 53:
    5205 
    5206 /* Line 1806 of yacc.c  */
    5207 #line 434 "parser.yy"
    5208     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    5209     break;
    5210 
    5211   case 54:
    5212 
    5213 /* Line 1806 of yacc.c  */
    5214 #line 436 "parser.yy"
    5215     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
    5216     break;
    5217 
    5218   case 55:
    5219 
    5220 /* Line 1806 of yacc.c  */
    5221 #line 442 "parser.yy"
    5222     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    5223     break;
    5224 
    5225   case 56:
    5226 
    5227 /* Line 1806 of yacc.c  */
    5228 #line 444 "parser.yy"
    5229     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5230     break;
    5231 
    5232   case 57:
    5233 
    5234 /* Line 1806 of yacc.c  */
    5235 #line 446 "parser.yy"
    5236     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    5237     break;
    5238 
    5239   case 58:
    5240 
    5241 /* Line 1806 of yacc.c  */
    5242 #line 448 "parser.yy"
    5243     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5244     break;
    5245 
    5246   case 59:
    5247 
    5248 /* Line 1806 of yacc.c  */
    5249 #line 450 "parser.yy"
    5250     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    5251     break;
    5252 
    5253   case 60:
    5254 
    5255 /* Line 1806 of yacc.c  */
    5256 #line 452 "parser.yy"
    5257     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    5258     break;
    5259 
    5260   case 61:
    5261 
    5262 /* Line 1806 of yacc.c  */
    5263 #line 454 "parser.yy"
    5264     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }
    5265     break;
    5266 
    5267   case 62:
    5268 
    5269 /* Line 1806 of yacc.c  */
    5270 #line 456 "parser.yy"
    5271     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); }
    5272     break;
    5273 
    5274   case 63:
    5275 
    5276 /* Line 1806 of yacc.c  */
    5277 #line 460 "parser.yy"
    5278     { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    5279     break;
    5280 
    5281   case 64:
    5282 
    5283 /* Line 1806 of yacc.c  */
    5284 #line 461 "parser.yy"
    5285     { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    5286     break;
    5287 
    5288   case 65:
    5289 
    5290 /* Line 1806 of yacc.c  */
    5291 #line 462 "parser.yy"
    5292     { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    5293     break;
    5294 
    5295   case 66:
    5296 
    5297 /* Line 1806 of yacc.c  */
    5298 #line 463 "parser.yy"
    5299     { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    5300     break;
    5301 
    5302   case 68:
    5303 
    5304 /* Line 1806 of yacc.c  */
    5305 #line 469 "parser.yy"
    5306     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5307     break;
    5308 
    5309   case 69:
    5310 
    5311 /* Line 1806 of yacc.c  */
    5312 #line 471 "parser.yy"
    5313     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5314     break;
    5315 
    5316   case 71:
    5317 
    5318 /* Line 1806 of yacc.c  */
    5319 #line 477 "parser.yy"
    5320     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5321     break;
    5322 
    5323   case 72:
    5324 
    5325 /* Line 1806 of yacc.c  */
    5326 #line 479 "parser.yy"
    5327     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5328     break;
    5329 
    5330   case 73:
    5331 
    5332 /* Line 1806 of yacc.c  */
    5333 #line 481 "parser.yy"
    5334     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5335     break;
    5336 
    5337   case 75:
    5338 
    5339 /* Line 1806 of yacc.c  */
    5340 #line 487 "parser.yy"
    5341     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5342     break;
    5343 
    5344   case 76:
    5345 
    5346 /* Line 1806 of yacc.c  */
    5347 #line 489 "parser.yy"
    5348     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5349     break;
    5350 
    5351   case 78:
    5352 
    5353 /* Line 1806 of yacc.c  */
    5354 #line 495 "parser.yy"
    5355     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5356     break;
    5357 
    5358   case 79:
    5359 
    5360 /* Line 1806 of yacc.c  */
    5361 #line 497 "parser.yy"
    5362     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5363     break;
    5364 
    5365   case 81:
    5366 
    5367 /* Line 1806 of yacc.c  */
    5368 #line 503 "parser.yy"
    5369     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5370     break;
    5371 
    5372   case 82:
    5373 
    5374 /* Line 1806 of yacc.c  */
    5375 #line 505 "parser.yy"
    5376     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5377     break;
    5378 
    5379   case 83:
    5380 
    5381 /* Line 1806 of yacc.c  */
    5382 #line 507 "parser.yy"
    5383     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5384     break;
    5385 
    5386   case 84:
    5387 
    5388 /* Line 1806 of yacc.c  */
    5389 #line 509 "parser.yy"
    5390     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5391     break;
    5392 
    5393   case 86:
    5394 
    5395 /* Line 1806 of yacc.c  */
    5396 #line 515 "parser.yy"
    5397     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5398     break;
    5399 
    5400   case 87:
    5401 
    5402 /* Line 1806 of yacc.c  */
    5403 #line 517 "parser.yy"
    5404     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5405     break;
    5406 
    5407   case 89:
    5408 
    5409 /* Line 1806 of yacc.c  */
    5410 #line 523 "parser.yy"
    5411     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5412     break;
    5413 
    5414   case 91:
    5415 
    5416 /* Line 1806 of yacc.c  */
    5417 #line 529 "parser.yy"
    5418     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5419     break;
    5420 
    5421   case 93:
    5422 
    5423 /* Line 1806 of yacc.c  */
    5424 #line 535 "parser.yy"
    5425     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5426     break;
    5427 
    5428   case 95:
    5429 
    5430 /* Line 1806 of yacc.c  */
    5431 #line 541 "parser.yy"
    5432     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5433     break;
    5434 
    5435   case 97:
    5436 
    5437 /* Line 1806 of yacc.c  */
    5438 #line 547 "parser.yy"
    5439     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5440     break;
    5441 
    5442   case 99:
    5443 
    5444 /* Line 1806 of yacc.c  */
    5445 #line 553 "parser.yy"
    5446     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    5447     break;
    5448 
    5449   case 100:
    5450 
    5451 /* Line 1806 of yacc.c  */
    5452 #line 555 "parser.yy"
    5453     { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5454     break;
    5455 
    5456   case 101:
    5457 
    5458 /* Line 1806 of yacc.c  */
    5459 #line 557 "parser.yy"
    5460     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    5461     break;
    5462 
    5463   case 104:
    5464 
    5465 /* Line 1806 of yacc.c  */
    5466 #line 568 "parser.yy"
    5467     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5468     break;
    5469 
    5470   case 105:
    5471 
    5472 /* Line 1806 of yacc.c  */
    5473 #line 570 "parser.yy"
    5474     { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5475     break;
    5476 
    5477   case 106:
    5478 
    5479 /* Line 1806 of yacc.c  */
    5480 #line 572 "parser.yy"
    5481     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5482     break;
    5483 
    5484   case 107:
    5485 
    5486 /* Line 1806 of yacc.c  */
    5487 #line 577 "parser.yy"
    5488     { (yyval.en) = new NullExprNode; }
    5489     break;
    5490 
    5491   case 109:
    5492 
    5493 /* Line 1806 of yacc.c  */
    5494 #line 585 "parser.yy"
    5495     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    5496     break;
    5497 
    5498   case 110:
    5499 
    5500 /* Line 1806 of yacc.c  */
    5501 #line 587 "parser.yy"
    5502     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    5503     break;
    5504 
    5505   case 111:
    5506 
    5507 /* Line 1806 of yacc.c  */
    5508 #line 589 "parser.yy"
    5509     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    5510     break;
    5511 
    5512   case 112:
    5513 
    5514 /* Line 1806 of yacc.c  */
    5515 #line 591 "parser.yy"
    5516     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    5517     break;
    5518 
    55195586  case 114:
    55205587
    55215588/* Line 1806 of yacc.c  */
     5589#line 594 "parser.yy"
     5590    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
     5591    break;
     5592
     5593  case 115:
     5594
     5595/* Line 1806 of yacc.c  */
     5596#line 595 "parser.yy"
     5597    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
     5598    break;
     5599
     5600  case 116:
     5601
     5602/* Line 1806 of yacc.c  */
     5603#line 596 "parser.yy"
     5604    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
     5605    break;
     5606
     5607  case 117:
     5608
     5609/* Line 1806 of yacc.c  */
    55225610#line 597 "parser.yy"
    5523     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5524     break;
    5525 
    5526   case 115:
     5611    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
     5612    break;
     5613
     5614  case 118:
     5615
     5616/* Line 1806 of yacc.c  */
     5617#line 598 "parser.yy"
     5618    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
     5619    break;
     5620
     5621  case 119:
     5622
     5623/* Line 1806 of yacc.c  */
     5624#line 599 "parser.yy"
     5625    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
     5626    break;
     5627
     5628  case 120:
     5629
     5630/* Line 1806 of yacc.c  */
     5631#line 600 "parser.yy"
     5632    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
     5633    break;
     5634
     5635  case 121:
    55275636
    55285637/* Line 1806 of yacc.c  */
    55295638#line 601 "parser.yy"
    5530     { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    5531     break;
    5532 
    5533   case 116:
     5639    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
     5640    break;
     5641
     5642  case 122:
    55345643
    55355644/* Line 1806 of yacc.c  */
    55365645#line 602 "parser.yy"
    5537     { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    5538     break;
    5539 
    5540   case 117:
     5646    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
     5647    break;
     5648
     5649  case 123:
    55415650
    55425651/* Line 1806 of yacc.c  */
    55435652#line 603 "parser.yy"
    5544     { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    5545     break;
    5546 
    5547   case 118:
    5548 
    5549 /* Line 1806 of yacc.c  */
    5550 #line 604 "parser.yy"
    5551     { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    5552     break;
    5553 
    5554   case 119:
    5555 
    5556 /* Line 1806 of yacc.c  */
    5557 #line 605 "parser.yy"
    5558     { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    5559     break;
    5560 
    5561   case 120:
    5562 
    5563 /* Line 1806 of yacc.c  */
    5564 #line 606 "parser.yy"
    5565     { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    5566     break;
    5567 
    5568   case 121:
    5569 
    5570 /* Line 1806 of yacc.c  */
    5571 #line 607 "parser.yy"
    5572     { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    5573     break;
    5574 
    5575   case 122:
    5576 
    5577 /* Line 1806 of yacc.c  */
    5578 #line 608 "parser.yy"
    5579     { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    5580     break;
    5581 
    5582   case 123:
     5653    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
     5654    break;
     5655
     5656  case 125:
    55835657
    55845658/* Line 1806 of yacc.c  */
    55855659#line 609 "parser.yy"
    5586     { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    5587     break;
    5588 
    5589   case 124:
    5590 
    5591 /* Line 1806 of yacc.c  */
    5592 #line 610 "parser.yy"
    5593     { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
     5660    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55945661    break;
    55955662
     
    55975664
    55985665/* Line 1806 of yacc.c  */
    5599 #line 616 "parser.yy"
    5600     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5601     break;
    5602 
    5603   case 127:
    5604 
    5605 /* Line 1806 of yacc.c  */
    5606 #line 621 "parser.yy"
     5666#line 614 "parser.yy"
    56075667    { (yyval.en) = 0; }
    56085668    break;
    56095669
    5610   case 131:
    5611 
    5612 /* Line 1806 of yacc.c  */
    5613 #line 630 "parser.yy"
     5670  case 130:
     5671
     5672/* Line 1806 of yacc.c  */
     5673#line 623 "parser.yy"
    56145674    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56155675    break;
    56165676
    5617   case 137:
    5618 
    5619 /* Line 1806 of yacc.c  */
    5620 #line 637 "parser.yy"
    5621     {
    5622                         Token fn; fn.str = new std::string( "^?{}" ); // location undefined
    5623                         (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
    5624                                 (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), (yyvsp[(2) - (6)].en) ))->set_link( (yyvsp[(4) - (6)].en) ) ), 0 );
    5625                 }
    5626     break;
    5627 
    5628   case 138:
    5629 
    5630 /* Line 1806 of yacc.c  */
    5631 #line 646 "parser.yy"
     5677  case 136:
     5678
     5679/* Line 1806 of yacc.c  */
     5680#line 633 "parser.yy"
    56325681    {
    56335682                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56355684    break;
    56365685
    5637   case 139:
     5686  case 137:
     5687
     5688/* Line 1806 of yacc.c  */
     5689#line 640 "parser.yy"
     5690    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
     5691    break;
     5692
     5693  case 138:
     5694
     5695/* Line 1806 of yacc.c  */
     5696#line 647 "parser.yy"
     5697    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
     5698    break;
     5699
     5700  case 140:
    56385701
    56395702/* Line 1806 of yacc.c  */
    56405703#line 653 "parser.yy"
    5641     { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    5642     break;
    5643 
    5644   case 140:
     5704    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5705    break;
     5706
     5707  case 141:
     5708
     5709/* Line 1806 of yacc.c  */
     5710#line 658 "parser.yy"
     5711    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5712    break;
     5713
     5714  case 142:
    56455715
    56465716/* Line 1806 of yacc.c  */
    56475717#line 660 "parser.yy"
    5648     { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    5649     break;
    5650 
    5651   case 142:
    5652 
    5653 /* Line 1806 of yacc.c  */
    5654 #line 666 "parser.yy"
    5655     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5718    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    56565719    break;
    56575720
     
    56595722
    56605723/* Line 1806 of yacc.c  */
    5661 #line 671 "parser.yy"
     5724#line 662 "parser.yy"
    56625725    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    56635726    break;
    56645727
    5665   case 144:
    5666 
    5667 /* Line 1806 of yacc.c  */
    5668 #line 673 "parser.yy"
    5669     { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    5670     break;
    5671 
    5672   case 145:
    5673 
    5674 /* Line 1806 of yacc.c  */
    5675 #line 675 "parser.yy"
    5676     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5728  case 146:
     5729
     5730/* Line 1806 of yacc.c  */
     5731#line 669 "parser.yy"
     5732    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5733    break;
     5734
     5735  case 147:
     5736
     5737/* Line 1806 of yacc.c  */
     5738#line 674 "parser.yy"
     5739    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    56775740    break;
    56785741
     
    56805743
    56815744/* Line 1806 of yacc.c  */
     5745#line 680 "parser.yy"
     5746    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5747    break;
     5748
     5749  case 149:
     5750
     5751/* Line 1806 of yacc.c  */
    56825752#line 682 "parser.yy"
    5683     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    5684     break;
    5685 
    5686   case 149:
    5687 
    5688 /* Line 1806 of yacc.c  */
    5689 #line 687 "parser.yy"
    5690     { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
     5753    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    56915754    break;
    56925755
     
    56945757
    56955758/* Line 1806 of yacc.c  */
     5759#line 684 "parser.yy"
     5760    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5761    break;
     5762
     5763  case 151:
     5764
     5765/* Line 1806 of yacc.c  */
     5766#line 686 "parser.yy"
     5767    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
     5768    break;
     5769
     5770  case 152:
     5771
     5772/* Line 1806 of yacc.c  */
     5773#line 691 "parser.yy"
     5774    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5775    break;
     5776
     5777  case 153:
     5778
     5779/* Line 1806 of yacc.c  */
    56965780#line 693 "parser.yy"
    5697     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5698     break;
    5699 
    5700   case 151:
    5701 
    5702 /* Line 1806 of yacc.c  */
    5703 #line 695 "parser.yy"
    5704     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    5705     break;
    5706 
    5707   case 152:
    5708 
    5709 /* Line 1806 of yacc.c  */
    5710 #line 697 "parser.yy"
    5711     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5712     break;
    5713 
    5714   case 153:
    5715 
    5716 /* Line 1806 of yacc.c  */
    5717 #line 699 "parser.yy"
    5718     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
     5781    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    57195782    break;
    57205783
     
    57225785
    57235786/* Line 1806 of yacc.c  */
    5724 #line 704 "parser.yy"
    5725     { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5787#line 700 "parser.yy"
     5788    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57265789    break;
    57275790
     
    57295792
    57305793/* Line 1806 of yacc.c  */
    5731 #line 706 "parser.yy"
    5732     { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    5733     break;
    5734 
    5735   case 156:
     5794#line 702 "parser.yy"
     5795    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5796    break;
     5797
     5798  case 158:
     5799
     5800/* Line 1806 of yacc.c  */
     5801#line 709 "parser.yy"
     5802    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
     5803    break;
     5804
     5805  case 159:
    57365806
    57375807/* Line 1806 of yacc.c  */
    57385808#line 713 "parser.yy"
    5739     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    5740     break;
    5741 
    5742   case 157:
    5743 
    5744 /* Line 1806 of yacc.c  */
    5745 #line 715 "parser.yy"
    5746     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5809    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    57475810    break;
    57485811
     
    57505813
    57515814/* Line 1806 of yacc.c  */
    5752 #line 722 "parser.yy"
    5753     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
    5754     break;
    5755 
    5756   case 161:
    5757 
    5758 /* Line 1806 of yacc.c  */
    5759 #line 726 "parser.yy"
    5760     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
     5815#line 714 "parser.yy"
     5816    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    57615817    break;
    57625818
     
    57645820
    57655821/* Line 1806 of yacc.c  */
    5766 #line 727 "parser.yy"
    5767     { (yyval.sn) = new StatementNode( StatementNode::Default ); }
     5822#line 720 "parser.yy"
     5823    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
     5824    break;
     5825
     5826  case 163:
     5827
     5828/* Line 1806 of yacc.c  */
     5829#line 724 "parser.yy"
     5830    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    57685831    break;
    57695832
     
    57715834
    57725835/* Line 1806 of yacc.c  */
    5773 #line 733 "parser.yy"
    5774     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    5775     break;
    5776 
    5777   case 165:
     5836#line 729 "parser.yy"
     5837    { (yyval.sn) = 0; }
     5838    break;
     5839
     5840  case 166:
     5841
     5842/* Line 1806 of yacc.c  */
     5843#line 735 "parser.yy"
     5844    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     5845    break;
     5846
     5847  case 167:
    57785848
    57795849/* Line 1806 of yacc.c  */
    57805850#line 737 "parser.yy"
    5781     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    5782     break;
    5783 
    5784   case 166:
     5851    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5852    break;
     5853
     5854  case 168:
    57855855
    57865856/* Line 1806 of yacc.c  */
     
    57895859    break;
    57905860
    5791   case 168:
     5861  case 170:
    57925862
    57935863/* Line 1806 of yacc.c  */
     
    57965866    break;
    57975867
    5798   case 169:
     5868  case 171:
    57995869
    58005870/* Line 1806 of yacc.c  */
    58015871#line 750 "parser.yy"
     5872    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
     5873    break;
     5874
     5875  case 172:
     5876
     5877/* Line 1806 of yacc.c  */
     5878#line 752 "parser.yy"
    58025879    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58035880    break;
    58045881
    5805   case 170:
    5806 
    5807 /* Line 1806 of yacc.c  */
    5808 #line 755 "parser.yy"
     5882  case 173:
     5883
     5884/* Line 1806 of yacc.c  */
     5885#line 754 "parser.yy"
     5886    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
     5887    break;
     5888
     5889  case 174:
     5890
     5891/* Line 1806 of yacc.c  */
     5892#line 759 "parser.yy"
    58095893    { (yyval.sn) = 0; }
    58105894    break;
    58115895
    5812   case 172:
    5813 
    5814 /* Line 1806 of yacc.c  */
    5815 #line 761 "parser.yy"
    5816     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    5817     break;
    5818 
    5819   case 173:
    5820 
    5821 /* Line 1806 of yacc.c  */
    5822 #line 763 "parser.yy"
    5823     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
    5824     break;
    5825 
    5826   case 174:
     5896  case 176:
     5897
     5898/* Line 1806 of yacc.c  */
     5899#line 764 "parser.yy"
     5900    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
     5901    break;
     5902
     5903  case 177:
    58275904
    58285905/* Line 1806 of yacc.c  */
    58295906#line 765 "parser.yy"
    5830     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    5831     break;
    5832 
    5833   case 175:
    5834 
    5835 /* Line 1806 of yacc.c  */
    5836 #line 767 "parser.yy"
    5837     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
    5838     break;
    5839 
    5840   case 176:
     5907    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
     5908    break;
     5909
     5910  case 178:
     5911
     5912/* Line 1806 of yacc.c  */
     5913#line 770 "parser.yy"
     5914    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5915    break;
     5916
     5917  case 179:
    58415918
    58425919/* Line 1806 of yacc.c  */
    58435920#line 772 "parser.yy"
    5844     { (yyval.sn) = 0; }
    5845     break;
    5846 
    5847   case 178:
    5848 
    5849 /* Line 1806 of yacc.c  */
    5850 #line 777 "parser.yy"
    5851     { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    5852     break;
    5853 
    5854   case 179:
    5855 
    5856 /* Line 1806 of yacc.c  */
    5857 #line 778 "parser.yy"
    5858     { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
     5921    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    58595922    break;
    58605923
     
    58625925
    58635926/* Line 1806 of yacc.c  */
    5864 #line 783 "parser.yy"
    5865     { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5927#line 774 "parser.yy"
     5928    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    58665929    break;
    58675930
     
    58695932
    58705933/* Line 1806 of yacc.c  */
    5871 #line 785 "parser.yy"
    5872     { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
     5934#line 779 "parser.yy"
     5935    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    58735936    break;
    58745937
     
    58765939
    58775940/* Line 1806 of yacc.c  */
    5878 #line 787 "parser.yy"
    5879     { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
     5941#line 781 "parser.yy"
     5942    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    58805943    break;
    58815944
     
    58835946
    58845947/* Line 1806 of yacc.c  */
    5885 #line 792 "parser.yy"
    5886     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     5948#line 786 "parser.yy"
     5949    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    58875950    break;
    58885951
     
    58905953
    58915954/* Line 1806 of yacc.c  */
    5892 #line 794 "parser.yy"
    5893     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5955#line 790 "parser.yy"
     5956    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    58945957    break;
    58955958
     
    58975960
    58985961/* Line 1806 of yacc.c  */
    5899 #line 799 "parser.yy"
    5900     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
     5962#line 793 "parser.yy"
     5963    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    59015964    break;
    59025965
     
    59045967
    59055968/* Line 1806 of yacc.c  */
    5906 #line 803 "parser.yy"
    5907     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
     5969#line 797 "parser.yy"
     5970    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    59085971    break;
    59095972
     
    59115974
    59125975/* Line 1806 of yacc.c  */
     5976#line 800 "parser.yy"
     5977    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
     5978    break;
     5979
     5980  case 188:
     5981
     5982/* Line 1806 of yacc.c  */
     5983#line 804 "parser.yy"
     5984    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     5985    break;
     5986
     5987  case 189:
     5988
     5989/* Line 1806 of yacc.c  */
    59135990#line 806 "parser.yy"
    5914     { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    5915     break;
    5916 
    5917   case 188:
     5991    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
     5992    break;
     5993
     5994  case 190:
     5995
     5996/* Line 1806 of yacc.c  */
     5997#line 808 "parser.yy"
     5998    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     5999    break;
     6000
     6001  case 191:
    59186002
    59196003/* Line 1806 of yacc.c  */
    59206004#line 810 "parser.yy"
    5921     { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    5922     break;
    5923 
    5924   case 189:
    5925 
    5926 /* Line 1806 of yacc.c  */
    5927 #line 813 "parser.yy"
    5928     { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    5929     break;
    5930 
    5931   case 190:
     6005    { (yyval.sn) = new StatementNode( StatementNode::Throw ); }
     6006    break;
     6007
     6008  case 192:
     6009
     6010/* Line 1806 of yacc.c  */
     6011#line 815 "parser.yy"
     6012    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     6013    break;
     6014
     6015  case 193:
    59326016
    59336017/* Line 1806 of yacc.c  */
    59346018#line 817 "parser.yy"
    5935     { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    5936     break;
    5937 
    5938   case 191:
     6019    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     6020    break;
     6021
     6022  case 194:
    59396023
    59406024/* Line 1806 of yacc.c  */
    59416025#line 819 "parser.yy"
    5942     { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    5943     break;
    5944 
    5945   case 192:
    5946 
    5947 /* Line 1806 of yacc.c  */
    5948 #line 821 "parser.yy"
    5949     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    5950     break;
    5951 
    5952   case 193:
    5953 
    5954 /* Line 1806 of yacc.c  */
    5955 #line 825 "parser.yy"
    5956     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    5957     break;
    5958 
    5959   case 194:
    5960 
    5961 /* Line 1806 of yacc.c  */
    5962 #line 827 "parser.yy"
    5963     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
    5964     break;
    5965 
    5966   case 195:
    5967 
    5968 /* Line 1806 of yacc.c  */
    5969 #line 834 "parser.yy"
    5970     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    5971     break;
    5972 
    5973   case 196:
    5974 
    5975 /* Line 1806 of yacc.c  */
    5976 #line 836 "parser.yy"
    5977     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    5978     break;
    5979 
    5980   case 197:
    5981 
    5982 /* Line 1806 of yacc.c  */
    5983 #line 838 "parser.yy"
    59846026    {
    59856027                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    59886030    break;
    59896031
     6032  case 196:
     6033
     6034/* Line 1806 of yacc.c  */
     6035#line 830 "parser.yy"
     6036    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6037    break;
     6038
     6039  case 197:
     6040
     6041/* Line 1806 of yacc.c  */
     6042#line 832 "parser.yy"
     6043    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6044    break;
     6045
     6046  case 198:
     6047
     6048/* Line 1806 of yacc.c  */
     6049#line 837 "parser.yy"
     6050    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
     6051    break;
     6052
    59906053  case 199:
    59916054
    59926055/* Line 1806 of yacc.c  */
    5993 #line 849 "parser.yy"
    5994     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6056#line 839 "parser.yy"
     6057    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    59956058    break;
    59966059
     
    59986061
    59996062/* Line 1806 of yacc.c  */
    6000 #line 851 "parser.yy"
    6001     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    6002     break;
    6003 
    6004   case 201:
    6005 
    6006 /* Line 1806 of yacc.c  */
    6007 #line 853 "parser.yy"
    6008     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    6009     break;
    6010 
    6011   case 202:
    6012 
    6013 /* Line 1806 of yacc.c  */
    6014 #line 855 "parser.yy"
    6015     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    6016     break;
    6017 
    6018   case 203:
    6019 
    6020 /* Line 1806 of yacc.c  */
    6021 #line 860 "parser.yy"
    6022     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    6023     break;
    6024 
    6025   case 204:
    6026 
    6027 /* Line 1806 of yacc.c  */
    6028 #line 862 "parser.yy"
    6029     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    6030     break;
    6031 
    6032   case 205:
    6033 
    6034 /* Line 1806 of yacc.c  */
    6035 #line 864 "parser.yy"
    6036     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    6037     break;
    6038 
    6039   case 206:
    6040 
    6041 /* Line 1806 of yacc.c  */
    6042 #line 866 "parser.yy"
    6043     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    6044     break;
    6045 
    6046   case 207:
    6047 
    6048 /* Line 1806 of yacc.c  */
    6049 #line 871 "parser.yy"
     6063#line 844 "parser.yy"
    60506064    {
    60516065                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    60546068    break;
    60556069
    6056   case 209:
    6057 
    6058 /* Line 1806 of yacc.c  */
    6059 #line 885 "parser.yy"
     6070  case 202:
     6071
     6072/* Line 1806 of yacc.c  */
     6073#line 858 "parser.yy"
    60606074    {
    60616075                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60646078    break;
    60656079
    6066   case 210:
    6067 
    6068 /* Line 1806 of yacc.c  */
    6069 #line 890 "parser.yy"
     6080  case 203:
     6081
     6082/* Line 1806 of yacc.c  */
     6083#line 863 "parser.yy"
    60706084    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    60716085    break;
    60726086
    6073   case 211:
    6074 
    6075 /* Line 1806 of yacc.c  */
    6076 #line 892 "parser.yy"
     6087  case 204:
     6088
     6089/* Line 1806 of yacc.c  */
     6090#line 865 "parser.yy"
    60776091    {
    60786092                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60816095    break;
    60826096
     6097  case 206:
     6098
     6099/* Line 1806 of yacc.c  */
     6100#line 874 "parser.yy"
     6101    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     6102    break;
     6103
     6104  case 207:
     6105
     6106/* Line 1806 of yacc.c  */
     6107#line 876 "parser.yy"
     6108    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     6109    break;
     6110
     6111  case 208:
     6112
     6113/* Line 1806 of yacc.c  */
     6114#line 878 "parser.yy"
     6115    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     6116    break;
     6117
     6118  case 209:
     6119
     6120/* Line 1806 of yacc.c  */
     6121#line 880 "parser.yy"
     6122    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
     6123    break;
     6124
     6125  case 210:
     6126
     6127/* Line 1806 of yacc.c  */
     6128#line 882 "parser.yy"
     6129    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
     6130    break;
     6131
     6132  case 211:
     6133
     6134/* Line 1806 of yacc.c  */
     6135#line 887 "parser.yy"
     6136    { (yyval.flag) = false; }
     6137    break;
     6138
     6139  case 212:
     6140
     6141/* Line 1806 of yacc.c  */
     6142#line 889 "parser.yy"
     6143    { (yyval.flag) = true; }
     6144    break;
     6145
    60836146  case 213:
    60846147
    60856148/* Line 1806 of yacc.c  */
     6149#line 894 "parser.yy"
     6150    { (yyval.en) = 0; }
     6151    break;
     6152
     6153  case 216:
     6154
     6155/* Line 1806 of yacc.c  */
    60866156#line 901 "parser.yy"
    6087     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    6088     break;
    6089 
    6090   case 214:
    6091 
    6092 /* Line 1806 of yacc.c  */
    6093 #line 903 "parser.yy"
    6094     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    6095     break;
    6096 
    6097   case 215:
    6098 
    6099 /* Line 1806 of yacc.c  */
    6100 #line 905 "parser.yy"
    6101     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    6102     break;
    6103 
    6104   case 216:
    6105 
    6106 /* Line 1806 of yacc.c  */
    6107 #line 907 "parser.yy"
    6108     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
     6157    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    61096158    break;
    61106159
     
    61126161
    61136162/* Line 1806 of yacc.c  */
    6114 #line 909 "parser.yy"
    6115     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
     6163#line 906 "parser.yy"
     6164    { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
    61166165    break;
    61176166
     
    61196168
    61206169/* Line 1806 of yacc.c  */
    6121 #line 914 "parser.yy"
    6122     { (yyval.flag) = false; }
     6170#line 908 "parser.yy"
     6171    { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
    61236172    break;
    61246173
     
    61266175
    61276176/* Line 1806 of yacc.c  */
    6128 #line 916 "parser.yy"
    6129     { (yyval.flag) = true; }
     6177#line 913 "parser.yy"
     6178    { (yyval.constant) = 0; }
    61306179    break;
    61316180
     
    61336182
    61346183/* Line 1806 of yacc.c  */
    6135 #line 921 "parser.yy"
    6136     { (yyval.en) = 0; }
     6184#line 915 "parser.yy"
     6185    { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
     6186    break;
     6187
     6188  case 221:
     6189
     6190/* Line 1806 of yacc.c  */
     6191#line 917 "parser.yy"
     6192    { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
     6193    break;
     6194
     6195  case 222:
     6196
     6197/* Line 1806 of yacc.c  */
     6198#line 922 "parser.yy"
     6199    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    61376200    break;
    61386201
     
    61406203
    61416204/* Line 1806 of yacc.c  */
    6142 #line 928 "parser.yy"
    6143     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     6205#line 924 "parser.yy"
     6206    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    61446207    break;
    61456208
     
    61476210
    61486211/* Line 1806 of yacc.c  */
    6149 #line 933 "parser.yy"
    6150     { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
    6151     break;
    6152 
    6153   case 225:
    6154 
    6155 /* Line 1806 of yacc.c  */
    6156 #line 935 "parser.yy"
    6157     { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
    6158     break;
    6159 
    6160   case 226:
    6161 
    6162 /* Line 1806 of yacc.c  */
    6163 #line 940 "parser.yy"
    6164     { (yyval.constant) = 0; }
     6212#line 931 "parser.yy"
     6213    { (yyval.decl) = 0; }
    61656214    break;
    61666215
     
    61686217
    61696218/* Line 1806 of yacc.c  */
    6170 #line 942 "parser.yy"
    6171     { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
     6219#line 938 "parser.yy"
     6220    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    61726221    break;
    61736222
     
    61756224
    61766225/* Line 1806 of yacc.c  */
    6177 #line 944 "parser.yy"
    6178     { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    6179     break;
    6180 
    6181   case 229:
    6182 
    6183 /* Line 1806 of yacc.c  */
    6184 #line 949 "parser.yy"
    6185     { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    6186     break;
    6187 
    6188   case 230:
    6189 
    6190 /* Line 1806 of yacc.c  */
    6191 #line 951 "parser.yy"
    6192     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
     6226#line 943 "parser.yy"
     6227    { (yyval.decl) = 0; }
    61936228    break;
    61946229
     
    61966231
    61976232/* Line 1806 of yacc.c  */
    6198 #line 958 "parser.yy"
    6199     { (yyval.decl) = 0; }
    6200     break;
    6201 
    6202   case 234:
     6233#line 950 "parser.yy"
     6234    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6235    break;
     6236
     6237  case 236:
     6238
     6239/* Line 1806 of yacc.c  */
     6240#line 964 "parser.yy"
     6241    {}
     6242    break;
     6243
     6244  case 237:
    62036245
    62046246/* Line 1806 of yacc.c  */
    62056247#line 965 "parser.yy"
    6206     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6207     break;
    6208 
    6209   case 235:
    6210 
    6211 /* Line 1806 of yacc.c  */
    6212 #line 970 "parser.yy"
    6213     { (yyval.decl) = 0; }
    6214     break;
    6215 
    6216   case 238:
    6217 
    6218 /* Line 1806 of yacc.c  */
    6219 #line 977 "parser.yy"
    6220     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6221     break;
    6222 
    6223   case 243:
    6224 
    6225 /* Line 1806 of yacc.c  */
    6226 #line 991 "parser.yy"
    62276248    {}
    62286249    break;
    62296250
    6230   case 244:
    6231 
    6232 /* Line 1806 of yacc.c  */
    6233 #line 992 "parser.yy"
    6234     {}
    6235     break;
    6236 
    6237   case 252:
    6238 
    6239 /* Line 1806 of yacc.c  */
    6240 #line 1021 "parser.yy"
     6251  case 245:
     6252
     6253/* Line 1806 of yacc.c  */
     6254#line 994 "parser.yy"
    62416255    {
    62426256                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62456259    break;
    62466260
    6247   case 253:
    6248 
    6249 /* Line 1806 of yacc.c  */
    6250 #line 1028 "parser.yy"
     6261  case 246:
     6262
     6263/* Line 1806 of yacc.c  */
     6264#line 1001 "parser.yy"
    62516265    {
    62526266                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62556269    break;
    62566270
    6257   case 254:
    6258 
    6259 /* Line 1806 of yacc.c  */
    6260 #line 1033 "parser.yy"
     6271  case 247:
     6272
     6273/* Line 1806 of yacc.c  */
     6274#line 1006 "parser.yy"
    62616275    {
    62626276                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    62656279    break;
    62666280
    6267   case 255:
    6268 
    6269 /* Line 1806 of yacc.c  */
    6270 #line 1043 "parser.yy"
     6281  case 248:
     6282
     6283/* Line 1806 of yacc.c  */
     6284#line 1016 "parser.yy"
    62716285    {
    62726286                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62756289    break;
    62766290
    6277   case 256:
    6278 
    6279 /* Line 1806 of yacc.c  */
    6280 #line 1048 "parser.yy"
     6291  case 249:
     6292
     6293/* Line 1806 of yacc.c  */
     6294#line 1021 "parser.yy"
    62816295    {
    62826296                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62856299    break;
    62866300
    6287   case 257:
    6288 
    6289 /* Line 1806 of yacc.c  */
    6290 #line 1053 "parser.yy"
     6301  case 250:
     6302
     6303/* Line 1806 of yacc.c  */
     6304#line 1026 "parser.yy"
    62916305    {
    62926306                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    62956309    break;
    62966310
    6297   case 258:
    6298 
    6299 /* Line 1806 of yacc.c  */
    6300 #line 1061 "parser.yy"
     6311  case 251:
     6312
     6313/* Line 1806 of yacc.c  */
     6314#line 1034 "parser.yy"
    63016315    {
    63026316                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63056319    break;
    63066320
    6307   case 259:
    6308 
    6309 /* Line 1806 of yacc.c  */
    6310 #line 1066 "parser.yy"
     6321  case 252:
     6322
     6323/* Line 1806 of yacc.c  */
     6324#line 1039 "parser.yy"
    63116325    {
    63126326                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63156329    break;
    63166330
    6317   case 260:
    6318 
    6319 /* Line 1806 of yacc.c  */
    6320 #line 1071 "parser.yy"
     6331  case 253:
     6332
     6333/* Line 1806 of yacc.c  */
     6334#line 1044 "parser.yy"
    63216335    {
    63226336                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63256339    break;
    63266340
    6327   case 261:
    6328 
    6329 /* Line 1806 of yacc.c  */
    6330 #line 1076 "parser.yy"
     6341  case 254:
     6342
     6343/* Line 1806 of yacc.c  */
     6344#line 1049 "parser.yy"
    63316345    {
    63326346                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63356349    break;
    63366350
    6337   case 262:
    6338 
    6339 /* Line 1806 of yacc.c  */
    6340 #line 1081 "parser.yy"
     6351  case 255:
     6352
     6353/* Line 1806 of yacc.c  */
     6354#line 1054 "parser.yy"
    63416355    {
    63426356                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    63456359    break;
    63466360
    6347   case 263:
    6348 
    6349 /* Line 1806 of yacc.c  */
    6350 #line 1089 "parser.yy"
     6361  case 256:
     6362
     6363/* Line 1806 of yacc.c  */
     6364#line 1062 "parser.yy"
    63516365    {
    63526366                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    63546368    break;
    63556369
    6356   case 264:
    6357 
    6358 /* Line 1806 of yacc.c  */
    6359 #line 1112 "parser.yy"
     6370  case 257:
     6371
     6372/* Line 1806 of yacc.c  */
     6373#line 1085 "parser.yy"
    63606374    {
    63616375                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63636377    break;
    63646378
    6365   case 265:
    6366 
    6367 /* Line 1806 of yacc.c  */
    6368 #line 1116 "parser.yy"
     6379  case 258:
     6380
     6381/* Line 1806 of yacc.c  */
     6382#line 1089 "parser.yy"
    63696383    {
    63706384                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63726386    break;
    63736387
    6374   case 266:
    6375 
    6376 /* Line 1806 of yacc.c  */
    6377 #line 1123 "parser.yy"
     6388  case 259:
     6389
     6390/* Line 1806 of yacc.c  */
     6391#line 1096 "parser.yy"
    63786392    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    63796393    break;
    63806394
    6381   case 267:
    6382 
    6383 /* Line 1806 of yacc.c  */
    6384 #line 1127 "parser.yy"
     6395  case 260:
     6396
     6397/* Line 1806 of yacc.c  */
     6398#line 1100 "parser.yy"
    63856399    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    63866400    break;
    63876401
    6388   case 268:
    6389 
    6390 /* Line 1806 of yacc.c  */
    6391 #line 1132 "parser.yy"
     6402  case 261:
     6403
     6404/* Line 1806 of yacc.c  */
     6405#line 1105 "parser.yy"
    63926406    {
    63936407                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63966410    break;
    63976411
    6398   case 269:
    6399 
    6400 /* Line 1806 of yacc.c  */
    6401 #line 1137 "parser.yy"
     6412  case 262:
     6413
     6414/* Line 1806 of yacc.c  */
     6415#line 1110 "parser.yy"
    64026416    {
    64036417                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64066420    break;
    64076421
    6408   case 270:
    6409 
    6410 /* Line 1806 of yacc.c  */
    6411 #line 1142 "parser.yy"
     6422  case 263:
     6423
     6424/* Line 1806 of yacc.c  */
     6425#line 1115 "parser.yy"
    64126426    {
    64136427                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64166430    break;
    64176431
    6418   case 271:
    6419 
    6420 /* Line 1806 of yacc.c  */
    6421 #line 1153 "parser.yy"
     6432  case 264:
     6433
     6434/* Line 1806 of yacc.c  */
     6435#line 1126 "parser.yy"
    64226436    {
    64236437                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64266440    break;
    64276441
    6428   case 272:
    6429 
    6430 /* Line 1806 of yacc.c  */
    6431 #line 1158 "parser.yy"
     6442  case 265:
     6443
     6444/* Line 1806 of yacc.c  */
     6445#line 1131 "parser.yy"
    64326446    {
    64336447                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64366450    break;
    64376451
    6438   case 273:
    6439 
    6440 /* Line 1806 of yacc.c  */
    6441 #line 1163 "parser.yy"
     6452  case 266:
     6453
     6454/* Line 1806 of yacc.c  */
     6455#line 1136 "parser.yy"
    64426456    {
    64436457                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64466460    break;
    64476461
    6448   case 274:
    6449 
    6450 /* Line 1806 of yacc.c  */
    6451 #line 1168 "parser.yy"
     6462  case 267:
     6463
     6464/* Line 1806 of yacc.c  */
     6465#line 1141 "parser.yy"
    64526466    {
    64536467                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64566470    break;
    64576471
    6458   case 275:
    6459 
    6460 /* Line 1806 of yacc.c  */
    6461 #line 1173 "parser.yy"
     6472  case 268:
     6473
     6474/* Line 1806 of yacc.c  */
     6475#line 1146 "parser.yy"
    64626476    {
    64636477                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64666480    break;
    64676481
    6468   case 276:
    6469 
    6470 /* Line 1806 of yacc.c  */
    6471 #line 1182 "parser.yy"
     6482  case 269:
     6483
     6484/* Line 1806 of yacc.c  */
     6485#line 1155 "parser.yy"
    64726486    {
    64736487                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    64766490    break;
    64776491
    6478   case 277:
    6479 
    6480 /* Line 1806 of yacc.c  */
    6481 #line 1187 "parser.yy"
     6492  case 270:
     6493
     6494/* Line 1806 of yacc.c  */
     6495#line 1160 "parser.yy"
    64826496    {
    64836497                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    64866500    break;
    64876501
    6488   case 282:
    6489 
    6490 /* Line 1806 of yacc.c  */
    6491 #line 1204 "parser.yy"
     6502  case 275:
     6503
     6504/* Line 1806 of yacc.c  */
     6505#line 1177 "parser.yy"
    64926506    {
    64936507                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64966510    break;
    64976511
    6498   case 283:
    6499 
    6500 /* Line 1806 of yacc.c  */
    6501 #line 1209 "parser.yy"
     6512  case 276:
     6513
     6514/* Line 1806 of yacc.c  */
     6515#line 1182 "parser.yy"
    65026516    {
    65036517                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65066520    break;
    65076521
     6522  case 285:
     6523
     6524/* Line 1806 of yacc.c  */
     6525#line 1204 "parser.yy"
     6526    { (yyval.decl) = 0; }
     6527    break;
     6528
     6529  case 288:
     6530
     6531/* Line 1806 of yacc.c  */
     6532#line 1216 "parser.yy"
     6533    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6534    break;
     6535
     6536  case 291:
     6537
     6538/* Line 1806 of yacc.c  */
     6539#line 1227 "parser.yy"
     6540    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6541    break;
     6542
    65086543  case 292:
    65096544
    65106545/* Line 1806 of yacc.c  */
     6546#line 1229 "parser.yy"
     6547    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6548    break;
     6549
     6550  case 293:
     6551
     6552/* Line 1806 of yacc.c  */
    65116553#line 1231 "parser.yy"
    6512     { (yyval.decl) = 0; }
     6554    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     6555    break;
     6556
     6557  case 294:
     6558
     6559/* Line 1806 of yacc.c  */
     6560#line 1233 "parser.yy"
     6561    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    65136562    break;
    65146563
     
    65166565
    65176566/* Line 1806 of yacc.c  */
    6518 #line 1243 "parser.yy"
    6519     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6520     break;
    6521 
    6522   case 298:
    6523 
    6524 /* Line 1806 of yacc.c  */
    6525 #line 1254 "parser.yy"
    6526     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    6527     break;
    6528 
    6529   case 299:
    6530 
    6531 /* Line 1806 of yacc.c  */
    6532 #line 1256 "parser.yy"
    6533     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    6534     break;
    6535 
    6536   case 300:
    6537 
    6538 /* Line 1806 of yacc.c  */
    6539 #line 1258 "parser.yy"
    6540     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    6541     break;
    6542 
    6543   case 301:
    6544 
    6545 /* Line 1806 of yacc.c  */
    6546 #line 1260 "parser.yy"
    6547     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    6548     break;
    6549 
    6550   case 302:
    6551 
    6552 /* Line 1806 of yacc.c  */
    6553 #line 1262 "parser.yy"
     6567#line 1235 "parser.yy"
    65546568    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    65556569    break;
    65566570
    6557   case 303:
    6558 
    6559 /* Line 1806 of yacc.c  */
    6560 #line 1264 "parser.yy"
     6571  case 296:
     6572
     6573/* Line 1806 of yacc.c  */
     6574#line 1237 "parser.yy"
    65616575    {
    65626576                        typedefTable.enterScope();
     
    65646578    break;
    65656579
    6566   case 304:
    6567 
    6568 /* Line 1806 of yacc.c  */
    6569 #line 1268 "parser.yy"
     6580  case 297:
     6581
     6582/* Line 1806 of yacc.c  */
     6583#line 1241 "parser.yy"
    65706584    {
    65716585                        typedefTable.leaveScope();
     
    65746588    break;
    65756589
     6590  case 299:
     6591
     6592/* Line 1806 of yacc.c  */
     6593#line 1250 "parser.yy"
     6594    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6595    break;
     6596
     6597  case 300:
     6598
     6599/* Line 1806 of yacc.c  */
     6600#line 1252 "parser.yy"
     6601    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6602    break;
     6603
     6604  case 302:
     6605
     6606/* Line 1806 of yacc.c  */
     6607#line 1263 "parser.yy"
     6608    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6609    break;
     6610
     6611  case 304:
     6612
     6613/* Line 1806 of yacc.c  */
     6614#line 1272 "parser.yy"
     6615    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     6616    break;
     6617
     6618  case 305:
     6619
     6620/* Line 1806 of yacc.c  */
     6621#line 1274 "parser.yy"
     6622    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     6623    break;
     6624
    65766625  case 306:
    65776626
    65786627/* Line 1806 of yacc.c  */
    6579 #line 1277 "parser.yy"
     6628#line 1276 "parser.yy"
     6629    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     6630    break;
     6631
     6632  case 307:
     6633
     6634/* Line 1806 of yacc.c  */
     6635#line 1278 "parser.yy"
     6636    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     6637    break;
     6638
     6639  case 308:
     6640
     6641/* Line 1806 of yacc.c  */
     6642#line 1280 "parser.yy"
     6643    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     6644    break;
     6645
     6646  case 309:
     6647
     6648/* Line 1806 of yacc.c  */
     6649#line 1282 "parser.yy"
     6650    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     6651    break;
     6652
     6653  case 310:
     6654
     6655/* Line 1806 of yacc.c  */
     6656#line 1284 "parser.yy"
     6657    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     6658    break;
     6659
     6660  case 311:
     6661
     6662/* Line 1806 of yacc.c  */
     6663#line 1286 "parser.yy"
     6664    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     6665    break;
     6666
     6667  case 312:
     6668
     6669/* Line 1806 of yacc.c  */
     6670#line 1291 "parser.yy"
     6671    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6672    break;
     6673
     6674  case 313:
     6675
     6676/* Line 1806 of yacc.c  */
     6677#line 1293 "parser.yy"
     6678    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6679    break;
     6680
     6681  case 314:
     6682
     6683/* Line 1806 of yacc.c  */
     6684#line 1295 "parser.yy"
     6685    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6686    break;
     6687
     6688  case 315:
     6689
     6690/* Line 1806 of yacc.c  */
     6691#line 1297 "parser.yy"
     6692    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6693    break;
     6694
     6695  case 316:
     6696
     6697/* Line 1806 of yacc.c  */
     6698#line 1299 "parser.yy"
     6699    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6700    break;
     6701
     6702  case 317:
     6703
     6704/* Line 1806 of yacc.c  */
     6705#line 1301 "parser.yy"
     6706    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6707    break;
     6708
     6709  case 318:
     6710
     6711/* Line 1806 of yacc.c  */
     6712#line 1303 "parser.yy"
     6713    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6714    break;
     6715
     6716  case 319:
     6717
     6718/* Line 1806 of yacc.c  */
     6719#line 1305 "parser.yy"
     6720    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6721    break;
     6722
     6723  case 320:
     6724
     6725/* Line 1806 of yacc.c  */
     6726#line 1307 "parser.yy"
     6727    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6728    break;
     6729
     6730  case 321:
     6731
     6732/* Line 1806 of yacc.c  */
     6733#line 1309 "parser.yy"
     6734    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6735    break;
     6736
     6737  case 322:
     6738
     6739/* Line 1806 of yacc.c  */
     6740#line 1311 "parser.yy"
     6741    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6742    break;
     6743
     6744  case 323:
     6745
     6746/* Line 1806 of yacc.c  */
     6747#line 1313 "parser.yy"
     6748    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6749    break;
     6750
     6751  case 325:
     6752
     6753/* Line 1806 of yacc.c  */
     6754#line 1320 "parser.yy"
     6755    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6756    break;
     6757
     6758  case 326:
     6759
     6760/* Line 1806 of yacc.c  */
     6761#line 1322 "parser.yy"
    65806762    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65816763    break;
    65826764
    6583   case 307:
    6584 
    6585 /* Line 1806 of yacc.c  */
    6586 #line 1279 "parser.yy"
     6765  case 327:
     6766
     6767/* Line 1806 of yacc.c  */
     6768#line 1324 "parser.yy"
    65876769    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    65886770    break;
    65896771
    6590   case 309:
    6591 
    6592 /* Line 1806 of yacc.c  */
    6593 #line 1290 "parser.yy"
     6772  case 328:
     6773
     6774/* Line 1806 of yacc.c  */
     6775#line 1326 "parser.yy"
     6776    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6777    break;
     6778
     6779  case 330:
     6780
     6781/* Line 1806 of yacc.c  */
     6782#line 1332 "parser.yy"
     6783    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6784    break;
     6785
     6786  case 332:
     6787
     6788/* Line 1806 of yacc.c  */
     6789#line 1339 "parser.yy"
     6790    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6791    break;
     6792
     6793  case 333:
     6794
     6795/* Line 1806 of yacc.c  */
     6796#line 1341 "parser.yy"
    65946797    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65956798    break;
    65966799
    6597   case 311:
    6598 
    6599 /* Line 1806 of yacc.c  */
    6600 #line 1299 "parser.yy"
    6601     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6602     break;
    6603 
    6604   case 312:
    6605 
    6606 /* Line 1806 of yacc.c  */
    6607 #line 1301 "parser.yy"
    6608     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6609     break;
    6610 
    6611   case 313:
    6612 
    6613 /* Line 1806 of yacc.c  */
    6614 #line 1303 "parser.yy"
    6615     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6616     break;
    6617 
    6618   case 314:
    6619 
    6620 /* Line 1806 of yacc.c  */
    6621 #line 1305 "parser.yy"
    6622     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6623     break;
    6624 
    6625   case 315:
    6626 
    6627 /* Line 1806 of yacc.c  */
    6628 #line 1307 "parser.yy"
    6629     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    6630     break;
    6631 
    6632   case 316:
    6633 
    6634 /* Line 1806 of yacc.c  */
    6635 #line 1309 "parser.yy"
    6636     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6637     break;
    6638 
    6639   case 317:
    6640 
    6641 /* Line 1806 of yacc.c  */
    6642 #line 1311 "parser.yy"
    6643     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    6644     break;
    6645 
    6646   case 318:
    6647 
    6648 /* Line 1806 of yacc.c  */
    6649 #line 1313 "parser.yy"
    6650     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    6651     break;
    6652 
    6653   case 319:
    6654 
    6655 /* Line 1806 of yacc.c  */
    6656 #line 1318 "parser.yy"
    6657     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6658     break;
    6659 
    6660   case 320:
    6661 
    6662 /* Line 1806 of yacc.c  */
    6663 #line 1320 "parser.yy"
    6664     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6665     break;
    6666 
    6667   case 321:
    6668 
    6669 /* Line 1806 of yacc.c  */
    6670 #line 1322 "parser.yy"
    6671     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6672     break;
    6673 
    6674   case 322:
    6675 
    6676 /* Line 1806 of yacc.c  */
    6677 #line 1324 "parser.yy"
    6678     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6679     break;
    6680 
    6681   case 323:
    6682 
    6683 /* Line 1806 of yacc.c  */
    6684 #line 1326 "parser.yy"
    6685     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    6686     break;
    6687 
    6688   case 324:
    6689 
    6690 /* Line 1806 of yacc.c  */
    6691 #line 1328 "parser.yy"
    6692     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    6693     break;
    6694 
    6695   case 325:
    6696 
    6697 /* Line 1806 of yacc.c  */
    6698 #line 1330 "parser.yy"
    6699     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    6700     break;
    6701 
    6702   case 326:
    6703 
    6704 /* Line 1806 of yacc.c  */
    6705 #line 1332 "parser.yy"
    6706     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    6707     break;
    6708 
    6709   case 327:
    6710 
    6711 /* Line 1806 of yacc.c  */
    6712 #line 1334 "parser.yy"
    6713     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6714     break;
    6715 
    6716   case 328:
    6717 
    6718 /* Line 1806 of yacc.c  */
    6719 #line 1336 "parser.yy"
    6720     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6721     break;
    6722 
    6723   case 329:
    6724 
    6725 /* Line 1806 of yacc.c  */
    6726 #line 1338 "parser.yy"
    6727     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    6728     break;
    6729 
    6730   case 330:
    6731 
    6732 /* Line 1806 of yacc.c  */
    6733 #line 1340 "parser.yy"
    6734     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    6735     break;
    6736 
    6737   case 332:
    6738 
    6739 /* Line 1806 of yacc.c  */
    6740 #line 1347 "parser.yy"
     6800  case 334:
     6801
     6802/* Line 1806 of yacc.c  */
     6803#line 1343 "parser.yy"
     6804    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6805    break;
     6806
     6807  case 335:
     6808
     6809/* Line 1806 of yacc.c  */
     6810#line 1348 "parser.yy"
     6811    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6812    break;
     6813
     6814  case 336:
     6815
     6816/* Line 1806 of yacc.c  */
     6817#line 1350 "parser.yy"
     6818    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6819    break;
     6820
     6821  case 337:
     6822
     6823/* Line 1806 of yacc.c  */
     6824#line 1352 "parser.yy"
     6825    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6826    break;
     6827
     6828  case 338:
     6829
     6830/* Line 1806 of yacc.c  */
     6831#line 1354 "parser.yy"
     6832    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6833    break;
     6834
     6835  case 340:
     6836
     6837/* Line 1806 of yacc.c  */
     6838#line 1360 "parser.yy"
    67416839    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67426840    break;
    67436841
    6744   case 333:
    6745 
    6746 /* Line 1806 of yacc.c  */
    6747 #line 1349 "parser.yy"
     6842  case 341:
     6843
     6844/* Line 1806 of yacc.c  */
     6845#line 1362 "parser.yy"
    67486846    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67496847    break;
    67506848
    6751   case 334:
    6752 
    6753 /* Line 1806 of yacc.c  */
    6754 #line 1351 "parser.yy"
     6849  case 342:
     6850
     6851/* Line 1806 of yacc.c  */
     6852#line 1364 "parser.yy"
    67556853    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67566854    break;
    67576855
    6758   case 335:
    6759 
    6760 /* Line 1806 of yacc.c  */
    6761 #line 1353 "parser.yy"
    6762     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    6763     break;
    6764 
    6765   case 337:
    6766 
    6767 /* Line 1806 of yacc.c  */
    6768 #line 1359 "parser.yy"
    6769     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6770     break;
    6771 
    6772   case 339:
    6773 
    6774 /* Line 1806 of yacc.c  */
    6775 #line 1366 "parser.yy"
     6856  case 344:
     6857
     6858/* Line 1806 of yacc.c  */
     6859#line 1370 "parser.yy"
    67766860    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67776861    break;
    67786862
    6779   case 340:
    6780 
    6781 /* Line 1806 of yacc.c  */
    6782 #line 1368 "parser.yy"
     6863  case 345:
     6864
     6865/* Line 1806 of yacc.c  */
     6866#line 1372 "parser.yy"
    67836867    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67846868    break;
    67856869
    6786   case 341:
    6787 
    6788 /* Line 1806 of yacc.c  */
    6789 #line 1370 "parser.yy"
    6790     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    6791     break;
    6792 
    6793   case 342:
    6794 
    6795 /* Line 1806 of yacc.c  */
    6796 #line 1375 "parser.yy"
    6797     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    6798     break;
    6799 
    6800   case 343:
    6801 
    6802 /* Line 1806 of yacc.c  */
    6803 #line 1377 "parser.yy"
    6804     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    6805     break;
    6806 
    6807   case 344:
    6808 
    6809 /* Line 1806 of yacc.c  */
    6810 #line 1379 "parser.yy"
    6811     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    6812     break;
    6813 
    6814   case 345:
    6815 
    6816 /* Line 1806 of yacc.c  */
    6817 #line 1381 "parser.yy"
    6818     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    6819     break;
    6820 
    68216870  case 347:
    68226871
    68236872/* Line 1806 of yacc.c  */
     6873#line 1378 "parser.yy"
     6874    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6875    break;
     6876
     6877  case 348:
     6878
     6879/* Line 1806 of yacc.c  */
     6880#line 1380 "parser.yy"
     6881    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6882    break;
     6883
     6884  case 349:
     6885
     6886/* Line 1806 of yacc.c  */
     6887#line 1382 "parser.yy"
     6888    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6889    break;
     6890
     6891  case 350:
     6892
     6893/* Line 1806 of yacc.c  */
    68246894#line 1387 "parser.yy"
    6825     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6826     break;
    6827 
    6828   case 348:
     6895    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     6896    break;
     6897
     6898  case 351:
    68296899
    68306900/* Line 1806 of yacc.c  */
    68316901#line 1389 "parser.yy"
     6902    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6903    break;
     6904
     6905  case 352:
     6906
     6907/* Line 1806 of yacc.c  */
     6908#line 1391 "parser.yy"
    68326909    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68336910    break;
    68346911
    6835   case 349:
    6836 
    6837 /* Line 1806 of yacc.c  */
    6838 #line 1391 "parser.yy"
    6839     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6840     break;
    6841 
    6842   case 351:
    6843 
    6844 /* Line 1806 of yacc.c  */
    6845 #line 1397 "parser.yy"
    6846     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6847     break;
    6848 
    6849   case 352:
    6850 
    6851 /* Line 1806 of yacc.c  */
    6852 #line 1399 "parser.yy"
    6853     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6854     break;
    6855 
    6856   case 354:
     6912  case 355:
     6913
     6914/* Line 1806 of yacc.c  */
     6915#line 1401 "parser.yy"
     6916    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
     6917    break;
     6918
     6919  case 356:
     6920
     6921/* Line 1806 of yacc.c  */
     6922#line 1403 "parser.yy"
     6923    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
     6924    break;
     6925
     6926  case 357:
    68576927
    68586928/* Line 1806 of yacc.c  */
    68596929#line 1405 "parser.yy"
    6860     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6861     break;
    6862 
    6863   case 355:
     6930    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
     6931    break;
     6932
     6933  case 358:
    68646934
    68656935/* Line 1806 of yacc.c  */
    68666936#line 1407 "parser.yy"
    6867     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6868     break;
    6869 
    6870   case 356:
     6937    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
     6938    break;
     6939
     6940  case 359:
    68716941
    68726942/* Line 1806 of yacc.c  */
    68736943#line 1409 "parser.yy"
    6874     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6875     break;
    6876 
    6877   case 357:
     6944    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     6945    break;
     6946
     6947  case 360:
    68786948
    68796949/* Line 1806 of yacc.c  */
    68806950#line 1414 "parser.yy"
    6881     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    6882     break;
    6883 
    6884   case 358:
     6951    { (yyval.aggKey) = DeclarationNode::Struct; }
     6952    break;
     6953
     6954  case 361:
    68856955
    68866956/* Line 1806 of yacc.c  */
    68876957#line 1416 "parser.yy"
    6888     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6889     break;
    6890 
    6891   case 359:
    6892 
    6893 /* Line 1806 of yacc.c  */
    6894 #line 1418 "parser.yy"
    6895     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6958    { (yyval.aggKey) = DeclarationNode::Union; }
    68966959    break;
    68976960
     
    68996962
    69006963/* Line 1806 of yacc.c  */
    6901 #line 1428 "parser.yy"
    6902     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
     6964#line 1421 "parser.yy"
     6965    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    69036966    break;
    69046967
     
    69066969
    69076970/* Line 1806 of yacc.c  */
    6908 #line 1430 "parser.yy"
    6909     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
    6910     break;
    6911 
    6912   case 364:
     6971#line 1423 "parser.yy"
     6972    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     6973    break;
     6974
     6975  case 365:
     6976
     6977/* Line 1806 of yacc.c  */
     6978#line 1429 "parser.yy"
     6979    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     6980    break;
     6981
     6982  case 367:
    69136983
    69146984/* Line 1806 of yacc.c  */
    69156985#line 1432 "parser.yy"
    6916     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
    6917     break;
    6918 
    6919   case 365:
    6920 
    6921 /* Line 1806 of yacc.c  */
    6922 #line 1434 "parser.yy"
    6923     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
    6924     break;
    6925 
    6926   case 366:
    6927 
    6928 /* Line 1806 of yacc.c  */
    6929 #line 1436 "parser.yy"
    6930     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    6931     break;
    6932 
    6933   case 367:
    6934 
    6935 /* Line 1806 of yacc.c  */
    6936 #line 1441 "parser.yy"
    6937     { (yyval.aggKey) = DeclarationNode::Struct; }
    6938     break;
    6939 
    6940   case 368:
    6941 
    6942 /* Line 1806 of yacc.c  */
    6943 #line 1443 "parser.yy"
    6944     { (yyval.aggKey) = DeclarationNode::Union; }
     6986    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    69456987    break;
    69466988
     
    69486990
    69496991/* Line 1806 of yacc.c  */
    6950 #line 1448 "parser.yy"
    6951     { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
     6992#line 1438 "parser.yy"
     6993    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    69526994    break;
    69536995
     
    69556997
    69566998/* Line 1806 of yacc.c  */
    6957 #line 1450 "parser.yy"
    6958     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     6999#line 1440 "parser.yy"
     7000    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     7001    break;
     7002
     7003  case 371:
     7004
     7005/* Line 1806 of yacc.c  */
     7006#line 1442 "parser.yy"
     7007    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    69597008    break;
    69607009
     
    69627011
    69637012/* Line 1806 of yacc.c  */
     7013#line 1447 "parser.yy"
     7014    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7015    break;
     7016
     7017  case 373:
     7018
     7019/* Line 1806 of yacc.c  */
     7020#line 1449 "parser.yy"
     7021    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     7022    break;
     7023
     7024  case 374:
     7025
     7026/* Line 1806 of yacc.c  */
     7027#line 1454 "parser.yy"
     7028    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     7029    break;
     7030
     7031  case 375:
     7032
     7033/* Line 1806 of yacc.c  */
    69647034#line 1456 "parser.yy"
    6965     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    6966     break;
    6967 
    6968   case 374:
     7035    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7036    break;
     7037
     7038  case 376:
    69697039
    69707040/* Line 1806 of yacc.c  */
    69717041#line 1459 "parser.yy"
    6972     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    6973     break;
    6974 
    6975   case 376:
    6976 
    6977 /* Line 1806 of yacc.c  */
    6978 #line 1465 "parser.yy"
    6979     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7042    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    69807043    break;
    69817044
     
    69837046
    69847047/* Line 1806 of yacc.c  */
    6985 #line 1467 "parser.yy"
    6986     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    6987     break;
    6988 
    6989   case 378:
    6990 
    6991 /* Line 1806 of yacc.c  */
    6992 #line 1469 "parser.yy"
    6993     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7048#line 1462 "parser.yy"
     7049    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    69947050    break;
    69957051
     
    69977053
    69987054/* Line 1806 of yacc.c  */
    6999 #line 1474 "parser.yy"
    7000     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7055#line 1468 "parser.yy"
     7056    { (yyval.en) = 0; }
    70017057    break;
    70027058
     
    70047060
    70057061/* Line 1806 of yacc.c  */
    7006 #line 1476 "parser.yy"
    7007     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     7062#line 1470 "parser.yy"
     7063    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    70087064    break;
    70097065
     
    70117067
    70127068/* Line 1806 of yacc.c  */
    7013 #line 1481 "parser.yy"
    7014     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    7015     break;
    7016 
    7017   case 382:
    7018 
    7019 /* Line 1806 of yacc.c  */
    7020 #line 1483 "parser.yy"
    7021     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7069#line 1475 "parser.yy"
     7070    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    70227071    break;
    70237072
     
    70257074
    70267075/* Line 1806 of yacc.c  */
     7076#line 1484 "parser.yy"
     7077    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     7078    break;
     7079
     7080  case 384:
     7081
     7082/* Line 1806 of yacc.c  */
    70277083#line 1486 "parser.yy"
    7028     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7029     break;
    7030 
    7031   case 384:
    7032 
    7033 /* Line 1806 of yacc.c  */
    7034 #line 1489 "parser.yy"
    7035     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7084    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
     7085    break;
     7086
     7087  case 385:
     7088
     7089/* Line 1806 of yacc.c  */
     7090#line 1488 "parser.yy"
     7091    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    70367092    break;
    70377093
     
    70397095
    70407096/* Line 1806 of yacc.c  */
     7097#line 1493 "parser.yy"
     7098    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7099    break;
     7100
     7101  case 387:
     7102
     7103/* Line 1806 of yacc.c  */
    70417104#line 1495 "parser.yy"
     7105    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     7106    break;
     7107
     7108  case 388:
     7109
     7110/* Line 1806 of yacc.c  */
     7111#line 1500 "parser.yy"
    70427112    { (yyval.en) = 0; }
    70437113    break;
    70447114
    7045   case 387:
    7046 
    7047 /* Line 1806 of yacc.c  */
    7048 #line 1497 "parser.yy"
    7049     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    7050     break;
    7051 
    7052   case 388:
     7115  case 389:
    70537116
    70547117/* Line 1806 of yacc.c  */
     
    70607123
    70617124/* Line 1806 of yacc.c  */
    7062 #line 1511 "parser.yy"
    7063     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7064     break;
    7065 
    7066   case 391:
    7067 
    7068 /* Line 1806 of yacc.c  */
    7069 #line 1513 "parser.yy"
    7070     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    7071     break;
    7072 
    7073   case 392:
    7074 
    7075 /* Line 1806 of yacc.c  */
    7076 #line 1515 "parser.yy"
    7077     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    7078     break;
    7079 
    7080   case 393:
    7081 
    7082 /* Line 1806 of yacc.c  */
    7083 #line 1520 "parser.yy"
    7084     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7125#line 1509 "parser.yy"
     7126    { (yyval.decl) = 0; }
    70857127    break;
    70867128
     
    70887130
    70897131/* Line 1806 of yacc.c  */
    7090 #line 1522 "parser.yy"
    7091     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     7132#line 1517 "parser.yy"
     7133    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70927134    break;
    70937135
     
    70957137
    70967138/* Line 1806 of yacc.c  */
    7097 #line 1527 "parser.yy"
    7098     { (yyval.en) = 0; }
     7139#line 1519 "parser.yy"
     7140    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    70997141    break;
    71007142
     
    71027144
    71037145/* Line 1806 of yacc.c  */
     7146#line 1521 "parser.yy"
     7147    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7148    break;
     7149
     7150  case 398:
     7151
     7152/* Line 1806 of yacc.c  */
    71047153#line 1529 "parser.yy"
    7105     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7106     break;
    7107 
    7108   case 397:
    7109 
    7110 /* Line 1806 of yacc.c  */
    7111 #line 1536 "parser.yy"
     7154    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7155    break;
     7156
     7157  case 399:
     7158
     7159/* Line 1806 of yacc.c  */
     7160#line 1531 "parser.yy"
     7161    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7162    break;
     7163
     7164  case 400:
     7165
     7166/* Line 1806 of yacc.c  */
     7167#line 1533 "parser.yy"
     7168    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7169    break;
     7170
     7171  case 402:
     7172
     7173/* Line 1806 of yacc.c  */
     7174#line 1539 "parser.yy"
     7175    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7176    break;
     7177
     7178  case 403:
     7179
     7180/* Line 1806 of yacc.c  */
     7181#line 1544 "parser.yy"
    71127182    { (yyval.decl) = 0; }
    71137183    break;
    71147184
    7115   case 401:
    7116 
    7117 /* Line 1806 of yacc.c  */
    7118 #line 1544 "parser.yy"
    7119     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7120     break;
    7121 
    7122   case 402:
    7123 
    7124 /* Line 1806 of yacc.c  */
    7125 #line 1546 "parser.yy"
     7185  case 406:
     7186
     7187/* Line 1806 of yacc.c  */
     7188#line 1551 "parser.yy"
    71267189    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71277190    break;
    71287191
    7129   case 403:
    7130 
    7131 /* Line 1806 of yacc.c  */
    7132 #line 1548 "parser.yy"
    7133     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7134     break;
    7135 
    7136   case 405:
    7137 
    7138 /* Line 1806 of yacc.c  */
    7139 #line 1556 "parser.yy"
    7140     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7141     break;
    7142 
    7143   case 406:
     7192  case 409:
    71447193
    71457194/* Line 1806 of yacc.c  */
     
    71487197    break;
    71497198
    7150   case 407:
     7199  case 410:
    71517200
    71527201/* Line 1806 of yacc.c  */
    71537202#line 1560 "parser.yy"
    7154     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7155     break;
    7156 
    7157   case 409:
    7158 
    7159 /* Line 1806 of yacc.c  */
    7160 #line 1566 "parser.yy"
    71617203    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71627204    break;
    71637205
    7164   case 410:
    7165 
    7166 /* Line 1806 of yacc.c  */
    7167 #line 1571 "parser.yy"
    7168     { (yyval.decl) = 0; }
     7206  case 412:
     7207
     7208/* Line 1806 of yacc.c  */
     7209#line 1569 "parser.yy"
     7210    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    71697211    break;
    71707212
     
    71727214
    71737215/* Line 1806 of yacc.c  */
    7174 #line 1578 "parser.yy"
    7175     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7176     break;
    7177 
    7178   case 416:
    7179 
    7180 /* Line 1806 of yacc.c  */
    7181 #line 1585 "parser.yy"
    7182     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7183     break;
    7184 
    7185   case 417:
    7186 
    7187 /* Line 1806 of yacc.c  */
    7188 #line 1587 "parser.yy"
    7189     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7216#line 1572 "parser.yy"
     7217    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     7218    break;
     7219
     7220  case 414:
     7221
     7222/* Line 1806 of yacc.c  */
     7223#line 1574 "parser.yy"
     7224    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    71907225    break;
    71917226
     
    71937228
    71947229/* Line 1806 of yacc.c  */
    7195 #line 1596 "parser.yy"
    7196     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7197     break;
    7198 
    7199   case 420:
    7200 
    7201 /* Line 1806 of yacc.c  */
    7202 #line 1599 "parser.yy"
    7203     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     7230#line 1584 "parser.yy"
     7231    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72047232    break;
    72057233
     
    72077235
    72087236/* Line 1806 of yacc.c  */
    7209 #line 1601 "parser.yy"
    7210     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    7211     break;
    7212 
    7213   case 426:
    7214 
    7215 /* Line 1806 of yacc.c  */
    7216 #line 1611 "parser.yy"
    7217     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7218     break;
    7219 
    7220   case 428:
    7221 
    7222 /* Line 1806 of yacc.c  */
    7223 #line 1617 "parser.yy"
     7237#line 1590 "parser.yy"
    72247238    {
    72257239                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    72287242    break;
    72297243
    7230   case 429:
    7231 
    7232 /* Line 1806 of yacc.c  */
    7233 #line 1622 "parser.yy"
     7244  case 422:
     7245
     7246/* Line 1806 of yacc.c  */
     7247#line 1595 "parser.yy"
    72347248    {
    72357249                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    72387252    break;
    72397253
    7240   case 431:
    7241 
    7242 /* Line 1806 of yacc.c  */
    7243 #line 1631 "parser.yy"
     7254  case 424:
     7255
     7256/* Line 1806 of yacc.c  */
     7257#line 1604 "parser.yy"
    72447258    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72457259    break;
    72467260
    7247   case 432:
     7261  case 425:
     7262
     7263/* Line 1806 of yacc.c  */
     7264#line 1613 "parser.yy"
     7265    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     7266    break;
     7267
     7268  case 426:
     7269
     7270/* Line 1806 of yacc.c  */
     7271#line 1615 "parser.yy"
     7272    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     7273    break;
     7274
     7275  case 438:
    72487276
    72497277/* Line 1806 of yacc.c  */
    72507278#line 1640 "parser.yy"
    7251     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    7252     break;
    7253 
    7254   case 433:
    7255 
    7256 /* Line 1806 of yacc.c  */
    7257 #line 1642 "parser.yy"
    7258     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     7279    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7280    break;
     7281
     7282  case 442:
     7283
     7284/* Line 1806 of yacc.c  */
     7285#line 1648 "parser.yy"
     7286    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7287    break;
     7288
     7289  case 443:
     7290
     7291/* Line 1806 of yacc.c  */
     7292#line 1653 "parser.yy"
     7293    { (yyval.in) = 0; }
     7294    break;
     7295
     7296  case 444:
     7297
     7298/* Line 1806 of yacc.c  */
     7299#line 1655 "parser.yy"
     7300    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    72597301    break;
    72607302
     
    72627304
    72637305/* Line 1806 of yacc.c  */
    7264 #line 1667 "parser.yy"
    7265     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7306#line 1659 "parser.yy"
     7307    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7308    break;
     7309
     7310  case 446:
     7311
     7312/* Line 1806 of yacc.c  */
     7313#line 1660 "parser.yy"
     7314    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7315    break;
     7316
     7317  case 448:
     7318
     7319/* Line 1806 of yacc.c  */
     7320#line 1665 "parser.yy"
     7321    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    72667322    break;
    72677323
     
    72697325
    72707326/* Line 1806 of yacc.c  */
    7271 #line 1675 "parser.yy"
    7272     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7327#line 1666 "parser.yy"
     7328    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    72737329    break;
    72747330
     
    72767332
    72777333/* Line 1806 of yacc.c  */
    7278 #line 1680 "parser.yy"
    7279     { (yyval.in) = 0; }
    7280     break;
    7281 
    7282   case 451:
    7283 
    7284 /* Line 1806 of yacc.c  */
    7285 #line 1682 "parser.yy"
    7286     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7334#line 1668 "parser.yy"
     7335    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    72877336    break;
    72887337
     
    72917340/* Line 1806 of yacc.c  */
    72927341#line 1684 "parser.yy"
    7293     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7294     break;
    7295 
    7296   case 453:
    7297 
    7298 /* Line 1806 of yacc.c  */
    7299 #line 1688 "parser.yy"
    7300     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7342    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    73017343    break;
    73027344
     
    73047346
    73057347/* Line 1806 of yacc.c  */
    7306 #line 1689 "parser.yy"
    7307     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7348#line 1690 "parser.yy"
     7349    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    73087350    break;
    73097351
     
    73117353
    73127354/* Line 1806 of yacc.c  */
    7313 #line 1694 "parser.yy"
    7314     { (yyval.in) = 0; }
     7355#line 1697 "parser.yy"
     7356    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
     7357    break;
     7358
     7359  case 456:
     7360
     7361/* Line 1806 of yacc.c  */
     7362#line 1699 "parser.yy"
     7363    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    73157364    break;
    73167365
     
    73187367
    73197368/* Line 1806 of yacc.c  */
    7320 #line 1696 "parser.yy"
    7321     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7369#line 1702 "parser.yy"
     7370    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    73227371    break;
    73237372
     
    73257374
    73267375/* Line 1806 of yacc.c  */
    7327 #line 1697 "parser.yy"
    7328     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
     7376#line 1704 "parser.yy"
     7377    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    73297378    break;
    73307379
     
    73327381
    73337382/* Line 1806 of yacc.c  */
    7334 #line 1699 "parser.yy"
    7335     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    7336     break;
    7337 
    7338   case 461:
    7339 
    7340 /* Line 1806 of yacc.c  */
    7341 #line 1715 "parser.yy"
    7342     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
     7383#line 1706 "parser.yy"
     7384    { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
     7385    break;
     7386
     7387  case 460:
     7388
     7389/* Line 1806 of yacc.c  */
     7390#line 1708 "parser.yy"
     7391    { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
     7392    break;
     7393
     7394  case 462:
     7395
     7396/* Line 1806 of yacc.c  */
     7397#line 1732 "parser.yy"
     7398    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73437399    break;
    73447400
     
    73467402
    73477403/* Line 1806 of yacc.c  */
    7348 #line 1721 "parser.yy"
    7349     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     7404#line 1734 "parser.yy"
     7405    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73507406    break;
    73517407
     
    73537409
    73547410/* Line 1806 of yacc.c  */
    7355 #line 1729 "parser.yy"
    7356     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    7357     break;
    7358 
    7359   case 465:
    7360 
    7361 /* Line 1806 of yacc.c  */
    7362 #line 1731 "parser.yy"
    7363     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
     7411#line 1736 "parser.yy"
     7412    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    73647413    break;
    73657414
     
    73677416
    73687417/* Line 1806 of yacc.c  */
    7369 #line 1734 "parser.yy"
    7370     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7418#line 1742 "parser.yy"
     7419    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73717420    break;
    73727421
     
    73747423
    73757424/* Line 1806 of yacc.c  */
    7376 #line 1736 "parser.yy"
    7377     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7425#line 1744 "parser.yy"
     7426    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73787427    break;
    73797428
     
    73817430
    73827431/* Line 1806 of yacc.c  */
    7383 #line 1738 "parser.yy"
    7384     { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
    7385     break;
    7386 
    7387   case 469:
    7388 
    7389 /* Line 1806 of yacc.c  */
    7390 #line 1740 "parser.yy"
    7391     { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
     7432#line 1749 "parser.yy"
     7433    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     7434    break;
     7435
     7436  case 470:
     7437
     7438/* Line 1806 of yacc.c  */
     7439#line 1755 "parser.yy"
     7440    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    73927441    break;
    73937442
     
    73957444
    73967445/* Line 1806 of yacc.c  */
    7397 #line 1764 "parser.yy"
    7398     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7446#line 1760 "parser.yy"
     7447    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    73997448    break;
    74007449
     
    74027451
    74037452/* Line 1806 of yacc.c  */
    7404 #line 1766 "parser.yy"
    7405     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7406     break;
    7407 
    7408   case 473:
     7453#line 1762 "parser.yy"
     7454    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     7455    break;
     7456
     7457  case 474:
    74097458
    74107459/* Line 1806 of yacc.c  */
    74117460#line 1768 "parser.yy"
    7412     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7461    { (yyval.tclass) = DeclarationNode::Type; }
    74137462    break;
    74147463
     
    74167465
    74177466/* Line 1806 of yacc.c  */
    7418 #line 1774 "parser.yy"
    7419     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7467#line 1770 "parser.yy"
     7468    { (yyval.tclass) = DeclarationNode::Ftype; }
    74207469    break;
    74217470
     
    74237472
    74247473/* Line 1806 of yacc.c  */
    7425 #line 1776 "parser.yy"
    7426     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7474#line 1772 "parser.yy"
     7475    { (yyval.tclass) = DeclarationNode::Dtype; }
    74277476    break;
    74287477
     
    74307479
    74317480/* Line 1806 of yacc.c  */
    7432 #line 1781 "parser.yy"
    7433     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     7481#line 1777 "parser.yy"
     7482    { (yyval.decl) = 0; }
     7483    break;
     7484
     7485  case 478:
     7486
     7487/* Line 1806 of yacc.c  */
     7488#line 1779 "parser.yy"
     7489    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    74347490    break;
    74357491
     
    74377493
    74387494/* Line 1806 of yacc.c  */
    7439 #line 1787 "parser.yy"
    7440     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    7441     break;
    7442 
    7443   case 480:
    7444 
    7445 /* Line 1806 of yacc.c  */
    7446 #line 1792 "parser.yy"
    7447     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    7448     break;
    7449 
    7450   case 481:
    7451 
    7452 /* Line 1806 of yacc.c  */
    7453 #line 1794 "parser.yy"
    7454     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    7455     break;
    7456 
    7457   case 483:
    7458 
    7459 /* Line 1806 of yacc.c  */
    7460 #line 1800 "parser.yy"
    7461     { (yyval.tclass) = DeclarationNode::Type; }
    7462     break;
    7463 
    7464   case 484:
    7465 
    7466 /* Line 1806 of yacc.c  */
    7467 #line 1802 "parser.yy"
    7468     { (yyval.tclass) = DeclarationNode::Ftype; }
    7469     break;
    7470 
    7471   case 485:
    7472 
    7473 /* Line 1806 of yacc.c  */
    7474 #line 1804 "parser.yy"
    7475     { (yyval.tclass) = DeclarationNode::Dtype; }
    7476     break;
    7477 
    7478   case 486:
    7479 
    7480 /* Line 1806 of yacc.c  */
    7481 #line 1809 "parser.yy"
    7482     { (yyval.decl) = 0; }
    7483     break;
    7484 
    7485   case 487:
    7486 
    7487 /* Line 1806 of yacc.c  */
    7488 #line 1811 "parser.yy"
    7489     { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    7490     break;
    7491 
    7492   case 488:
    7493 
    7494 /* Line 1806 of yacc.c  */
    7495 #line 1816 "parser.yy"
     7495#line 1784 "parser.yy"
    74967496    {
    74977497                        typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );
     
    75007500    break;
    75017501
     7502  case 480:
     7503
     7504/* Line 1806 of yacc.c  */
     7505#line 1789 "parser.yy"
     7506    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7507    break;
     7508
     7509  case 481:
     7510
     7511/* Line 1806 of yacc.c  */
     7512#line 1791 "parser.yy"
     7513    { (yyval.decl) = 0; }
     7514    break;
     7515
     7516  case 482:
     7517
     7518/* Line 1806 of yacc.c  */
     7519#line 1796 "parser.yy"
     7520    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     7521    break;
     7522
     7523  case 484:
     7524
     7525/* Line 1806 of yacc.c  */
     7526#line 1799 "parser.yy"
     7527    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
     7528    break;
     7529
     7530  case 485:
     7531
     7532/* Line 1806 of yacc.c  */
     7533#line 1801 "parser.yy"
     7534    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     7535    break;
     7536
     7537  case 486:
     7538
     7539/* Line 1806 of yacc.c  */
     7540#line 1806 "parser.yy"
     7541    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7542    break;
     7543
     7544  case 487:
     7545
     7546/* Line 1806 of yacc.c  */
     7547#line 1808 "parser.yy"
     7548    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     7549    break;
     7550
     7551  case 488:
     7552
     7553/* Line 1806 of yacc.c  */
     7554#line 1810 "parser.yy"
     7555    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     7556    break;
     7557
    75027558  case 489:
    75037559
    75047560/* Line 1806 of yacc.c  */
    7505 #line 1821 "parser.yy"
    7506     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7561#line 1815 "parser.yy"
     7562    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    75077563    break;
    75087564
     
    75107566
    75117567/* Line 1806 of yacc.c  */
    7512 #line 1823 "parser.yy"
    7513     { (yyval.decl) = 0; }
     7568#line 1817 "parser.yy"
     7569    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    75147570    break;
    75157571
     
    75177573
    75187574/* Line 1806 of yacc.c  */
    7519 #line 1828 "parser.yy"
    7520     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    7521     break;
    7522 
    7523   case 493:
    7524 
    7525 /* Line 1806 of yacc.c  */
    7526 #line 1831 "parser.yy"
    7527     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    7528     break;
    7529 
    7530   case 494:
    7531 
    7532 /* Line 1806 of yacc.c  */
    7533 #line 1833 "parser.yy"
    7534     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    7535     break;
    7536 
    7537   case 495:
    7538 
    7539 /* Line 1806 of yacc.c  */
    7540 #line 1838 "parser.yy"
    7541     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7542     break;
    7543 
    7544   case 496:
    7545 
    7546 /* Line 1806 of yacc.c  */
    7547 #line 1840 "parser.yy"
    7548     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    7549     break;
    7550 
    7551   case 497:
    7552 
    7553 /* Line 1806 of yacc.c  */
    7554 #line 1842 "parser.yy"
    7555     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    7556     break;
    7557 
    7558   case 498:
    7559 
    7560 /* Line 1806 of yacc.c  */
    7561 #line 1847 "parser.yy"
    7562     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7563     break;
    7564 
    7565   case 499:
    7566 
    7567 /* Line 1806 of yacc.c  */
    7568 #line 1849 "parser.yy"
    7569     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7570     break;
    7571 
    7572   case 500:
    7573 
    7574 /* Line 1806 of yacc.c  */
    7575 #line 1854 "parser.yy"
     7575#line 1822 "parser.yy"
    75767576    {
    75777577                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    75807580    break;
    75817581
    7582   case 501:
    7583 
    7584 /* Line 1806 of yacc.c  */
    7585 #line 1859 "parser.yy"
     7582  case 492:
     7583
     7584/* Line 1806 of yacc.c  */
     7585#line 1827 "parser.yy"
    75867586    {
    75877587                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    75907590    break;
    75917591
    7592   case 502:
    7593 
    7594 /* Line 1806 of yacc.c  */
    7595 #line 1867 "parser.yy"
     7592  case 493:
     7593
     7594/* Line 1806 of yacc.c  */
     7595#line 1835 "parser.yy"
    75967596    {
    75977597                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76007600    break;
    76017601
    7602   case 503:
    7603 
    7604 /* Line 1806 of yacc.c  */
    7605 #line 1872 "parser.yy"
     7602  case 494:
     7603
     7604/* Line 1806 of yacc.c  */
     7605#line 1840 "parser.yy"
    76067606    {
    76077607                        typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
     
    76107610    break;
    76117611
    7612   case 504:
    7613 
    7614 /* Line 1806 of yacc.c  */
    7615 #line 1877 "parser.yy"
     7612  case 495:
     7613
     7614/* Line 1806 of yacc.c  */
     7615#line 1845 "parser.yy"
    76167616    {
    76177617                        typedefTable.leaveContext();
     
    76217621    break;
    76227622
    7623   case 506:
    7624 
    7625 /* Line 1806 of yacc.c  */
    7626 #line 1887 "parser.yy"
     7623  case 497:
     7624
     7625/* Line 1806 of yacc.c  */
     7626#line 1855 "parser.yy"
    76277627    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    76287628    break;
    76297629
    7630   case 509:
    7631 
    7632 /* Line 1806 of yacc.c  */
    7633 #line 1897 "parser.yy"
     7630  case 500:
     7631
     7632/* Line 1806 of yacc.c  */
     7633#line 1865 "parser.yy"
    76347634    {
    76357635                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76387638    break;
    76397639
    7640   case 510:
    7641 
    7642 /* Line 1806 of yacc.c  */
    7643 #line 1902 "parser.yy"
     7640  case 501:
     7641
     7642/* Line 1806 of yacc.c  */
     7643#line 1870 "parser.yy"
    76447644    {
    76457645                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76487648    break;
    76497649
    7650   case 511:
    7651 
    7652 /* Line 1806 of yacc.c  */
    7653 #line 1907 "parser.yy"
     7650  case 502:
     7651
     7652/* Line 1806 of yacc.c  */
     7653#line 1875 "parser.yy"
    76547654    {
    76557655                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    76587658    break;
    76597659
    7660   case 512:
    7661 
    7662 /* Line 1806 of yacc.c  */
    7663 #line 1915 "parser.yy"
     7660  case 503:
     7661
     7662/* Line 1806 of yacc.c  */
     7663#line 1883 "parser.yy"
    76647664    {
    76657665                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76687668    break;
    76697669
    7670   case 513:
    7671 
    7672 /* Line 1806 of yacc.c  */
    7673 #line 1920 "parser.yy"
     7670  case 504:
     7671
     7672/* Line 1806 of yacc.c  */
     7673#line 1888 "parser.yy"
    76747674    {
    76757675                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76787678    break;
    76797679
    7680   case 514:
    7681 
    7682 /* Line 1806 of yacc.c  */
    7683 #line 1930 "parser.yy"
     7680  case 505:
     7681
     7682/* Line 1806 of yacc.c  */
     7683#line 1898 "parser.yy"
    76847684    {}
    76857685    break;
    76867686
    7687   case 515:
    7688 
    7689 /* Line 1806 of yacc.c  */
    7690 #line 1932 "parser.yy"
     7687  case 506:
     7688
     7689/* Line 1806 of yacc.c  */
     7690#line 1900 "parser.yy"
    76917691    {
    76927692                        if ( theTree ) {
     
    76987698    break;
    76997699
    7700   case 517:
    7701 
    7702 /* Line 1806 of yacc.c  */
    7703 #line 1944 "parser.yy"
     7700  case 508:
     7701
     7702/* Line 1806 of yacc.c  */
     7703#line 1912 "parser.yy"
    77047704    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77057705    break;
    77067706
    7707   case 518:
    7708 
    7709 /* Line 1806 of yacc.c  */
    7710 #line 1949 "parser.yy"
     7707  case 509:
     7708
     7709/* Line 1806 of yacc.c  */
     7710#line 1917 "parser.yy"
    77117711    { (yyval.decl) = 0; }
    77127712    break;
    77137713
    7714   case 522:
    7715 
    7716 /* Line 1806 of yacc.c  */
    7717 #line 1957 "parser.yy"
     7714  case 513:
     7715
     7716/* Line 1806 of yacc.c  */
     7717#line 1925 "parser.yy"
    77187718    {}
    77197719    break;
    77207720
    7721   case 523:
    7722 
    7723 /* Line 1806 of yacc.c  */
    7724 #line 1959 "parser.yy"
     7721  case 514:
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1927 "parser.yy"
    77257725    {
    77267726                        linkageStack.push( linkage );
     
    77297729    break;
    77307730
    7731   case 524:
    7732 
    7733 /* Line 1806 of yacc.c  */
    7734 #line 1964 "parser.yy"
     7731  case 515:
     7732
     7733/* Line 1806 of yacc.c  */
     7734#line 1932 "parser.yy"
    77357735    {
    77367736                        linkage = linkageStack.top();
     
    77407740    break;
    77417741
    7742   case 525:
    7743 
    7744 /* Line 1806 of yacc.c  */
    7745 #line 1970 "parser.yy"
     7742  case 516:
     7743
     7744/* Line 1806 of yacc.c  */
     7745#line 1938 "parser.yy"
    77467746    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    77477747    break;
    77487748
    7749   case 527:
    7750 
    7751 /* Line 1806 of yacc.c  */
    7752 #line 1980 "parser.yy"
     7749  case 518:
     7750
     7751/* Line 1806 of yacc.c  */
     7752#line 1948 "parser.yy"
    77537753    {
    77547754                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77587758    break;
    77597759
    7760   case 528:
    7761 
    7762 /* Line 1806 of yacc.c  */
    7763 #line 1986 "parser.yy"
     7760  case 519:
     7761
     7762/* Line 1806 of yacc.c  */
     7763#line 1954 "parser.yy"
    77647764    {
    77657765                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77697769    break;
    77707770
    7771   case 529:
    7772 
    7773 /* Line 1806 of yacc.c  */
    7774 #line 1995 "parser.yy"
     7771  case 520:
     7772
     7773/* Line 1806 of yacc.c  */
     7774#line 1963 "parser.yy"
    77757775    {
    77767776                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77807780    break;
    77817781
    7782   case 530:
    7783 
    7784 /* Line 1806 of yacc.c  */
    7785 #line 2001 "parser.yy"
     7782  case 521:
     7783
     7784/* Line 1806 of yacc.c  */
     7785#line 1969 "parser.yy"
    77867786    {
    77877787                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77917791    break;
    77927792
    7793   case 531:
    7794 
    7795 /* Line 1806 of yacc.c  */
    7796 #line 2007 "parser.yy"
     7793  case 522:
     7794
     7795/* Line 1806 of yacc.c  */
     7796#line 1975 "parser.yy"
    77977797    {
    77987798                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78027802    break;
    78037803
    7804   case 532:
    7805 
    7806 /* Line 1806 of yacc.c  */
    7807 #line 2013 "parser.yy"
     7804  case 523:
     7805
     7806/* Line 1806 of yacc.c  */
     7807#line 1981 "parser.yy"
    78087808    {
    78097809                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78137813    break;
    78147814
    7815   case 533:
    7816 
    7817 /* Line 1806 of yacc.c  */
    7818 #line 2019 "parser.yy"
     7815  case 524:
     7816
     7817/* Line 1806 of yacc.c  */
     7818#line 1987 "parser.yy"
    78197819    {
    78207820                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78247824    break;
    78257825
    7826   case 534:
    7827 
    7828 /* Line 1806 of yacc.c  */
    7829 #line 2027 "parser.yy"
     7826  case 525:
     7827
     7828/* Line 1806 of yacc.c  */
     7829#line 1995 "parser.yy"
    78307830    {
    78317831                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78357835    break;
    78367836
    7837   case 535:
    7838 
    7839 /* Line 1806 of yacc.c  */
    7840 #line 2033 "parser.yy"
     7837  case 526:
     7838
     7839/* Line 1806 of yacc.c  */
     7840#line 2001 "parser.yy"
    78417841    {
    78427842                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78467846    break;
    78477847
    7848   case 536:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 2041 "parser.yy"
     7848  case 527:
     7849
     7850/* Line 1806 of yacc.c  */
     7851#line 2009 "parser.yy"
    78527852    {
    78537853                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78577857    break;
    78587858
    7859   case 537:
    7860 
    7861 /* Line 1806 of yacc.c  */
    7862 #line 2047 "parser.yy"
     7859  case 528:
     7860
     7861/* Line 1806 of yacc.c  */
     7862#line 2015 "parser.yy"
    78637863    {
    78647864                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78687868    break;
    78697869
    7870   case 541:
    7871 
    7872 /* Line 1806 of yacc.c  */
    7873 #line 2062 "parser.yy"
     7870  case 532:
     7871
     7872/* Line 1806 of yacc.c  */
     7873#line 2030 "parser.yy"
    78747874    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    78757875    break;
    78767876
    7877   case 544:
    7878 
    7879 /* Line 1806 of yacc.c  */
    7880 #line 2072 "parser.yy"
     7877  case 535:
     7878
     7879/* Line 1806 of yacc.c  */
     7880#line 2040 "parser.yy"
    78817881    { (yyval.decl) = 0; }
    78827882    break;
    78837883
     7884  case 538:
     7885
     7886/* Line 1806 of yacc.c  */
     7887#line 2047 "parser.yy"
     7888    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7889    break;
     7890
     7891  case 539:
     7892
     7893/* Line 1806 of yacc.c  */
     7894#line 2053 "parser.yy"
     7895    { (yyval.decl) = 0; }
     7896    break;
     7897
     7898  case 545:
     7899
     7900/* Line 1806 of yacc.c  */
     7901#line 2068 "parser.yy"
     7902    {}
     7903    break;
     7904
     7905  case 546:
     7906
     7907/* Line 1806 of yacc.c  */
     7908#line 2069 "parser.yy"
     7909    {}
     7910    break;
     7911
    78847912  case 547:
    78857913
    78867914/* Line 1806 of yacc.c  */
    7887 #line 2079 "parser.yy"
    7888     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7915#line 2070 "parser.yy"
     7916    {}
    78897917    break;
    78907918
     
    78927920
    78937921/* Line 1806 of yacc.c  */
    7894 #line 2085 "parser.yy"
    7895     { (yyval.decl) = 0; }
    7896     break;
    7897 
    7898   case 554:
    7899 
    7900 /* Line 1806 of yacc.c  */
    7901 #line 2100 "parser.yy"
     7922#line 2071 "parser.yy"
    79027923    {}
    79037924    break;
    79047925
    7905   case 555:
    7906 
    7907 /* Line 1806 of yacc.c  */
    7908 #line 2101 "parser.yy"
    7909     {}
    7910     break;
    7911 
    7912   case 556:
    7913 
    7914 /* Line 1806 of yacc.c  */
    7915 #line 2102 "parser.yy"
    7916     {}
    7917     break;
    7918 
    7919   case 557:
    7920 
    7921 /* Line 1806 of yacc.c  */
    7922 #line 2103 "parser.yy"
    7923     {}
    7924     break;
    7925 
    7926   case 558:
    7927 
    7928 /* Line 1806 of yacc.c  */
    7929 #line 2138 "parser.yy"
     7926  case 549:
     7927
     7928/* Line 1806 of yacc.c  */
     7929#line 2106 "parser.yy"
    79307930    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79317931    break;
    79327932
    7933   case 560:
    7934 
    7935 /* Line 1806 of yacc.c  */
    7936 #line 2141 "parser.yy"
     7933  case 551:
     7934
     7935/* Line 1806 of yacc.c  */
     7936#line 2109 "parser.yy"
    79377937    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79387938    break;
    79397939
    7940   case 561:
    7941 
    7942 /* Line 1806 of yacc.c  */
    7943 #line 2143 "parser.yy"
     7940  case 552:
     7941
     7942/* Line 1806 of yacc.c  */
     7943#line 2111 "parser.yy"
    79447944    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79457945    break;
    79467946
    7947   case 562:
    7948 
    7949 /* Line 1806 of yacc.c  */
    7950 #line 2148 "parser.yy"
     7947  case 553:
     7948
     7949/* Line 1806 of yacc.c  */
     7950#line 2116 "parser.yy"
    79517951    {
    79527952                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    79557955    break;
    79567956
     7957  case 554:
     7958
     7959/* Line 1806 of yacc.c  */
     7960#line 2121 "parser.yy"
     7961    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7962    break;
     7963
     7964  case 555:
     7965
     7966/* Line 1806 of yacc.c  */
     7967#line 2126 "parser.yy"
     7968    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7969    break;
     7970
     7971  case 556:
     7972
     7973/* Line 1806 of yacc.c  */
     7974#line 2128 "parser.yy"
     7975    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7976    break;
     7977
     7978  case 557:
     7979
     7980/* Line 1806 of yacc.c  */
     7981#line 2130 "parser.yy"
     7982    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7983    break;
     7984
     7985  case 558:
     7986
     7987/* Line 1806 of yacc.c  */
     7988#line 2135 "parser.yy"
     7989    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     7990    break;
     7991
     7992  case 559:
     7993
     7994/* Line 1806 of yacc.c  */
     7995#line 2137 "parser.yy"
     7996    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7997    break;
     7998
     7999  case 560:
     8000
     8001/* Line 1806 of yacc.c  */
     8002#line 2139 "parser.yy"
     8003    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8004    break;
     8005
     8006  case 561:
     8007
     8008/* Line 1806 of yacc.c  */
     8009#line 2141 "parser.yy"
     8010    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8011    break;
     8012
     8013  case 562:
     8014
     8015/* Line 1806 of yacc.c  */
     8016#line 2146 "parser.yy"
     8017    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8018    break;
     8019
    79578020  case 563:
    79588021
    79598022/* Line 1806 of yacc.c  */
    7960 #line 2153 "parser.yy"
     8023#line 2148 "parser.yy"
    79618024    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79628025    break;
     
    79668029/* Line 1806 of yacc.c  */
    79678030#line 2158 "parser.yy"
     8031    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8032    break;
     8033
     8034  case 566:
     8035
     8036/* Line 1806 of yacc.c  */
     8037#line 2161 "parser.yy"
     8038    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8039    break;
     8040
     8041  case 567:
     8042
     8043/* Line 1806 of yacc.c  */
     8044#line 2166 "parser.yy"
     8045    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8046    break;
     8047
     8048  case 568:
     8049
     8050/* Line 1806 of yacc.c  */
     8051#line 2168 "parser.yy"
     8052    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8053    break;
     8054
     8055  case 569:
     8056
     8057/* Line 1806 of yacc.c  */
     8058#line 2170 "parser.yy"
     8059    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8060    break;
     8061
     8062  case 570:
     8063
     8064/* Line 1806 of yacc.c  */
     8065#line 2175 "parser.yy"
    79688066    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    79698067    break;
    79708068
    7971   case 565:
    7972 
    7973 /* Line 1806 of yacc.c  */
    7974 #line 2160 "parser.yy"
     8069  case 571:
     8070
     8071/* Line 1806 of yacc.c  */
     8072#line 2177 "parser.yy"
    79758073    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    79768074    break;
    79778075
    7978   case 566:
    7979 
    7980 /* Line 1806 of yacc.c  */
    7981 #line 2162 "parser.yy"
     8076  case 572:
     8077
     8078/* Line 1806 of yacc.c  */
     8079#line 2179 "parser.yy"
    79828080    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79838081    break;
    79848082
    7985   case 567:
    7986 
    7987 /* Line 1806 of yacc.c  */
    7988 #line 2167 "parser.yy"
     8083  case 573:
     8084
     8085/* Line 1806 of yacc.c  */
     8086#line 2184 "parser.yy"
     8087    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8088    break;
     8089
     8090  case 574:
     8091
     8092/* Line 1806 of yacc.c  */
     8093#line 2186 "parser.yy"
     8094    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8095    break;
     8096
     8097  case 575:
     8098
     8099/* Line 1806 of yacc.c  */
     8100#line 2188 "parser.yy"
     8101    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8102    break;
     8103
     8104  case 579:
     8105
     8106/* Line 1806 of yacc.c  */
     8107#line 2203 "parser.yy"
     8108    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8109    break;
     8110
     8111  case 580:
     8112
     8113/* Line 1806 of yacc.c  */
     8114#line 2205 "parser.yy"
     8115    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8116    break;
     8117
     8118  case 581:
     8119
     8120/* Line 1806 of yacc.c  */
     8121#line 2207 "parser.yy"
     8122    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8123    break;
     8124
     8125  case 582:
     8126
     8127/* Line 1806 of yacc.c  */
     8128#line 2212 "parser.yy"
     8129    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8130    break;
     8131
     8132  case 583:
     8133
     8134/* Line 1806 of yacc.c  */
     8135#line 2214 "parser.yy"
     8136    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8137    break;
     8138
     8139  case 584:
     8140
     8141/* Line 1806 of yacc.c  */
     8142#line 2216 "parser.yy"
     8143    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8144    break;
     8145
     8146  case 585:
     8147
     8148/* Line 1806 of yacc.c  */
     8149#line 2221 "parser.yy"
     8150    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8151    break;
     8152
     8153  case 586:
     8154
     8155/* Line 1806 of yacc.c  */
     8156#line 2223 "parser.yy"
     8157    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8158    break;
     8159
     8160  case 587:
     8161
     8162/* Line 1806 of yacc.c  */
     8163#line 2225 "parser.yy"
     8164    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8165    break;
     8166
     8167  case 588:
     8168
     8169/* Line 1806 of yacc.c  */
     8170#line 2240 "parser.yy"
     8171    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8172    break;
     8173
     8174  case 590:
     8175
     8176/* Line 1806 of yacc.c  */
     8177#line 2243 "parser.yy"
     8178    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8179    break;
     8180
     8181  case 591:
     8182
     8183/* Line 1806 of yacc.c  */
     8184#line 2245 "parser.yy"
     8185    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8186    break;
     8187
     8188  case 593:
     8189
     8190/* Line 1806 of yacc.c  */
     8191#line 2251 "parser.yy"
     8192    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8193    break;
     8194
     8195  case 594:
     8196
     8197/* Line 1806 of yacc.c  */
     8198#line 2256 "parser.yy"
     8199    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8200    break;
     8201
     8202  case 595:
     8203
     8204/* Line 1806 of yacc.c  */
     8205#line 2258 "parser.yy"
     8206    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8207    break;
     8208
     8209  case 596:
     8210
     8211/* Line 1806 of yacc.c  */
     8212#line 2260 "parser.yy"
     8213    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8214    break;
     8215
     8216  case 597:
     8217
     8218/* Line 1806 of yacc.c  */
     8219#line 2265 "parser.yy"
    79898220    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    79908221    break;
    79918222
    7992   case 568:
    7993 
    7994 /* Line 1806 of yacc.c  */
    7995 #line 2169 "parser.yy"
     8223  case 598:
     8224
     8225/* Line 1806 of yacc.c  */
     8226#line 2267 "parser.yy"
    79968227    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79978228    break;
    79988229
    7999   case 569:
    8000 
    8001 /* Line 1806 of yacc.c  */
    8002 #line 2171 "parser.yy"
     8230  case 599:
     8231
     8232/* Line 1806 of yacc.c  */
     8233#line 2269 "parser.yy"
    80038234    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80048235    break;
    80058236
    8006   case 570:
    8007 
    8008 /* Line 1806 of yacc.c  */
    8009 #line 2173 "parser.yy"
     8237  case 600:
     8238
     8239/* Line 1806 of yacc.c  */
     8240#line 2271 "parser.yy"
    80108241    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80118242    break;
    80128243
    8013   case 571:
    8014 
    8015 /* Line 1806 of yacc.c  */
    8016 #line 2178 "parser.yy"
     8244  case 601:
     8245
     8246/* Line 1806 of yacc.c  */
     8247#line 2276 "parser.yy"
     8248    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8249    break;
     8250
     8251  case 602:
     8252
     8253/* Line 1806 of yacc.c  */
     8254#line 2278 "parser.yy"
    80178255    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80188256    break;
    80198257
    8020   case 572:
    8021 
    8022 /* Line 1806 of yacc.c  */
    8023 #line 2180 "parser.yy"
     8258  case 603:
     8259
     8260/* Line 1806 of yacc.c  */
     8261#line 2280 "parser.yy"
    80248262    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80258263    break;
    80268264
    8027   case 573:
    8028 
    8029 /* Line 1806 of yacc.c  */
    8030 #line 2190 "parser.yy"
     8265  case 604:
     8266
     8267/* Line 1806 of yacc.c  */
     8268#line 2290 "parser.yy"
    80318269    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80328270    break;
    80338271
    8034   case 575:
    8035 
    8036 /* Line 1806 of yacc.c  */
    8037 #line 2193 "parser.yy"
     8272  case 606:
     8273
     8274/* Line 1806 of yacc.c  */
     8275#line 2293 "parser.yy"
    80388276    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80398277    break;
    80408278
    8041   case 576:
    8042 
    8043 /* Line 1806 of yacc.c  */
    8044 #line 2198 "parser.yy"
     8279  case 607:
     8280
     8281/* Line 1806 of yacc.c  */
     8282#line 2295 "parser.yy"
     8283    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8284    break;
     8285
     8286  case 608:
     8287
     8288/* Line 1806 of yacc.c  */
     8289#line 2300 "parser.yy"
     8290    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8291    break;
     8292
     8293  case 609:
     8294
     8295/* Line 1806 of yacc.c  */
     8296#line 2302 "parser.yy"
     8297    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8298    break;
     8299
     8300  case 610:
     8301
     8302/* Line 1806 of yacc.c  */
     8303#line 2304 "parser.yy"
     8304    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8305    break;
     8306
     8307  case 611:
     8308
     8309/* Line 1806 of yacc.c  */
     8310#line 2309 "parser.yy"
     8311    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8312    break;
     8313
     8314  case 612:
     8315
     8316/* Line 1806 of yacc.c  */
     8317#line 2311 "parser.yy"
     8318    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8319    break;
     8320
     8321  case 613:
     8322
     8323/* Line 1806 of yacc.c  */
     8324#line 2313 "parser.yy"
     8325    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8326    break;
     8327
     8328  case 614:
     8329
     8330/* Line 1806 of yacc.c  */
     8331#line 2315 "parser.yy"
     8332    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8333    break;
     8334
     8335  case 615:
     8336
     8337/* Line 1806 of yacc.c  */
     8338#line 2320 "parser.yy"
    80458339    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    80468340    break;
    80478341
    8048   case 577:
    8049 
    8050 /* Line 1806 of yacc.c  */
    8051 #line 2200 "parser.yy"
     8342  case 616:
     8343
     8344/* Line 1806 of yacc.c  */
     8345#line 2322 "parser.yy"
    80528346    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80538347    break;
    80548348
    8055   case 578:
    8056 
    8057 /* Line 1806 of yacc.c  */
    8058 #line 2202 "parser.yy"
     8349  case 617:
     8350
     8351/* Line 1806 of yacc.c  */
     8352#line 2324 "parser.yy"
    80598353    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80608354    break;
    80618355
    8062   case 579:
    8063 
    8064 /* Line 1806 of yacc.c  */
    8065 #line 2207 "parser.yy"
    8066     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8067     break;
    8068 
    8069   case 580:
    8070 
    8071 /* Line 1806 of yacc.c  */
    8072 #line 2209 "parser.yy"
    8073     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8074     break;
    8075 
    8076   case 581:
    8077 
    8078 /* Line 1806 of yacc.c  */
    8079 #line 2211 "parser.yy"
    8080     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8081     break;
    8082 
    8083   case 582:
    8084 
    8085 /* Line 1806 of yacc.c  */
    8086 #line 2216 "parser.yy"
    8087     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8088     break;
    8089 
    8090   case 583:
    8091 
    8092 /* Line 1806 of yacc.c  */
    8093 #line 2218 "parser.yy"
    8094     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8095     break;
    8096 
    8097   case 584:
    8098 
    8099 /* Line 1806 of yacc.c  */
    8100 #line 2220 "parser.yy"
    8101     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8102     break;
    8103 
    8104   case 588:
    8105 
    8106 /* Line 1806 of yacc.c  */
    8107 #line 2235 "parser.yy"
    8108     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8109     break;
    8110 
    8111   case 589:
    8112 
    8113 /* Line 1806 of yacc.c  */
    8114 #line 2237 "parser.yy"
    8115     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8116     break;
    8117 
    8118   case 590:
    8119 
    8120 /* Line 1806 of yacc.c  */
    8121 #line 2239 "parser.yy"
    8122     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8123     break;
    8124 
    8125   case 591:
    8126 
    8127 /* Line 1806 of yacc.c  */
    8128 #line 2244 "parser.yy"
    8129     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8130     break;
    8131 
    8132   case 592:
    8133 
    8134 /* Line 1806 of yacc.c  */
    8135 #line 2246 "parser.yy"
    8136     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8137     break;
    8138 
    8139   case 593:
    8140 
    8141 /* Line 1806 of yacc.c  */
    8142 #line 2248 "parser.yy"
    8143     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8144     break;
    8145 
    8146   case 594:
    8147 
    8148 /* Line 1806 of yacc.c  */
    8149 #line 2253 "parser.yy"
    8150     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8151     break;
    8152 
    8153   case 595:
    8154 
    8155 /* Line 1806 of yacc.c  */
    8156 #line 2255 "parser.yy"
    8157     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8158     break;
    8159 
    8160   case 596:
    8161 
    8162 /* Line 1806 of yacc.c  */
    8163 #line 2257 "parser.yy"
    8164     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8165     break;
    8166 
    8167   case 597:
    8168 
    8169 /* Line 1806 of yacc.c  */
    8170 #line 2272 "parser.yy"
     8356  case 618:
     8357
     8358/* Line 1806 of yacc.c  */
     8359#line 2355 "parser.yy"
    81718360    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81728361    break;
    81738362
    8174   case 599:
    8175 
    8176 /* Line 1806 of yacc.c  */
    8177 #line 2275 "parser.yy"
     8363  case 620:
     8364
     8365/* Line 1806 of yacc.c  */
     8366#line 2358 "parser.yy"
    81788367    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81798368    break;
    81808369
    8181   case 600:
    8182 
    8183 /* Line 1806 of yacc.c  */
    8184 #line 2277 "parser.yy"
     8370  case 621:
     8371
     8372/* Line 1806 of yacc.c  */
     8373#line 2360 "parser.yy"
    81858374    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81868375    break;
    81878376
    8188   case 602:
    8189 
    8190 /* Line 1806 of yacc.c  */
    8191 #line 2283 "parser.yy"
    8192     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8193     break;
    8194 
    8195   case 603:
    8196 
    8197 /* Line 1806 of yacc.c  */
    8198 #line 2288 "parser.yy"
    8199     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8200     break;
    8201 
    8202   case 604:
    8203 
    8204 /* Line 1806 of yacc.c  */
    8205 #line 2290 "parser.yy"
    8206     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8207     break;
    8208 
    8209   case 605:
    8210 
    8211 /* Line 1806 of yacc.c  */
    8212 #line 2292 "parser.yy"
    8213     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8214     break;
    8215 
    8216   case 606:
    8217 
    8218 /* Line 1806 of yacc.c  */
    8219 #line 2297 "parser.yy"
    8220     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8221     break;
    8222 
    8223   case 607:
    8224 
    8225 /* Line 1806 of yacc.c  */
    8226 #line 2299 "parser.yy"
    8227     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8228     break;
    8229 
    8230   case 608:
    8231 
    8232 /* Line 1806 of yacc.c  */
    8233 #line 2301 "parser.yy"
    8234     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8235     break;
    8236 
    8237   case 609:
    8238 
    8239 /* Line 1806 of yacc.c  */
    8240 #line 2303 "parser.yy"
    8241     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8242     break;
    8243 
    8244   case 610:
    8245 
    8246 /* Line 1806 of yacc.c  */
    8247 #line 2308 "parser.yy"
    8248     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8249     break;
    8250 
    8251   case 611:
    8252 
    8253 /* Line 1806 of yacc.c  */
    8254 #line 2310 "parser.yy"
    8255     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8256     break;
    8257 
    8258   case 612:
    8259 
    8260 /* Line 1806 of yacc.c  */
    8261 #line 2312 "parser.yy"
    8262     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8263     break;
    8264 
    8265   case 613:
    8266 
    8267 /* Line 1806 of yacc.c  */
    8268 #line 2322 "parser.yy"
    8269     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8270     break;
    8271 
    8272   case 615:
    8273 
    8274 /* Line 1806 of yacc.c  */
    8275 #line 2325 "parser.yy"
    8276     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8277     break;
    8278 
    8279   case 616:
    8280 
    8281 /* Line 1806 of yacc.c  */
    8282 #line 2327 "parser.yy"
    8283     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8284     break;
    8285 
    8286   case 617:
    8287 
    8288 /* Line 1806 of yacc.c  */
    8289 #line 2332 "parser.yy"
    8290     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8291     break;
    8292 
    8293   case 618:
    8294 
    8295 /* Line 1806 of yacc.c  */
    8296 #line 2334 "parser.yy"
    8297     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8298     break;
    8299 
    8300   case 619:
    8301 
    8302 /* Line 1806 of yacc.c  */
    8303 #line 2336 "parser.yy"
    8304     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8305     break;
    8306 
    8307   case 620:
    8308 
    8309 /* Line 1806 of yacc.c  */
    8310 #line 2341 "parser.yy"
    8311     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8312     break;
    8313 
    8314   case 621:
    8315 
    8316 /* Line 1806 of yacc.c  */
    8317 #line 2343 "parser.yy"
    8318     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8319     break;
    8320 
    83218377  case 622:
    83228378
    83238379/* Line 1806 of yacc.c  */
    8324 #line 2345 "parser.yy"
    8325     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8326     break;
    8327 
    8328   case 623:
    8329 
    8330 /* Line 1806 of yacc.c  */
    8331 #line 2347 "parser.yy"
    8332     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8333     break;
    8334 
    8335   case 624:
    8336 
    8337 /* Line 1806 of yacc.c  */
    8338 #line 2352 "parser.yy"
    8339     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8340     break;
    8341 
    8342   case 625:
    8343 
    8344 /* Line 1806 of yacc.c  */
    8345 #line 2354 "parser.yy"
    8346     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8347     break;
    8348 
    8349   case 626:
    8350 
    8351 /* Line 1806 of yacc.c  */
    8352 #line 2356 "parser.yy"
    8353     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8354     break;
    8355 
    8356   case 627:
    8357 
    8358 /* Line 1806 of yacc.c  */
    8359 #line 2387 "parser.yy"
    8360     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8361     break;
    8362 
    8363   case 629:
    8364 
    8365 /* Line 1806 of yacc.c  */
    8366 #line 2390 "parser.yy"
    8367     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8368     break;
    8369 
    8370   case 630:
    8371 
    8372 /* Line 1806 of yacc.c  */
    8373 #line 2392 "parser.yy"
    8374     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8375     break;
    8376 
    8377   case 631:
    8378 
    8379 /* Line 1806 of yacc.c  */
    8380 #line 2397 "parser.yy"
     8380#line 2365 "parser.yy"
    83818381    {
    83828382                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83858385    break;
    83868386
    8387   case 632:
    8388 
    8389 /* Line 1806 of yacc.c  */
    8390 #line 2402 "parser.yy"
     8387  case 623:
     8388
     8389/* Line 1806 of yacc.c  */
     8390#line 2370 "parser.yy"
    83918391    {
    83928392                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83958395    break;
    83968396
     8397  case 624:
     8398
     8399/* Line 1806 of yacc.c  */
     8400#line 2378 "parser.yy"
     8401    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8402    break;
     8403
     8404  case 625:
     8405
     8406/* Line 1806 of yacc.c  */
     8407#line 2380 "parser.yy"
     8408    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8409    break;
     8410
     8411  case 626:
     8412
     8413/* Line 1806 of yacc.c  */
     8414#line 2382 "parser.yy"
     8415    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8416    break;
     8417
     8418  case 627:
     8419
     8420/* Line 1806 of yacc.c  */
     8421#line 2387 "parser.yy"
     8422    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8423    break;
     8424
     8425  case 628:
     8426
     8427/* Line 1806 of yacc.c  */
     8428#line 2389 "parser.yy"
     8429    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8430    break;
     8431
     8432  case 629:
     8433
     8434/* Line 1806 of yacc.c  */
     8435#line 2394 "parser.yy"
     8436    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8437    break;
     8438
     8439  case 630:
     8440
     8441/* Line 1806 of yacc.c  */
     8442#line 2396 "parser.yy"
     8443    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8444    break;
     8445
     8446  case 632:
     8447
     8448/* Line 1806 of yacc.c  */
     8449#line 2411 "parser.yy"
     8450    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8451    break;
     8452
    83978453  case 633:
    83988454
    83998455/* Line 1806 of yacc.c  */
    8400 #line 2410 "parser.yy"
     8456#line 2413 "parser.yy"
     8457    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8458    break;
     8459
     8460  case 634:
     8461
     8462/* Line 1806 of yacc.c  */
     8463#line 2418 "parser.yy"
     8464    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8465    break;
     8466
     8467  case 635:
     8468
     8469/* Line 1806 of yacc.c  */
     8470#line 2420 "parser.yy"
     8471    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8472    break;
     8473
     8474  case 636:
     8475
     8476/* Line 1806 of yacc.c  */
     8477#line 2422 "parser.yy"
    84018478    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84028479    break;
    84038480
    8404   case 634:
    8405 
    8406 /* Line 1806 of yacc.c  */
    8407 #line 2412 "parser.yy"
     8481  case 637:
     8482
     8483/* Line 1806 of yacc.c  */
     8484#line 2424 "parser.yy"
    84088485    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84098486    break;
    84108487
    8411   case 635:
    8412 
    8413 /* Line 1806 of yacc.c  */
    8414 #line 2414 "parser.yy"
     8488  case 638:
     8489
     8490/* Line 1806 of yacc.c  */
     8491#line 2426 "parser.yy"
    84158492    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84168493    break;
    84178494
    8418   case 636:
    8419 
    8420 /* Line 1806 of yacc.c  */
    8421 #line 2419 "parser.yy"
     8495  case 640:
     8496
     8497/* Line 1806 of yacc.c  */
     8498#line 2432 "parser.yy"
     8499    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8500    break;
     8501
     8502  case 641:
     8503
     8504/* Line 1806 of yacc.c  */
     8505#line 2434 "parser.yy"
     8506    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8507    break;
     8508
     8509  case 642:
     8510
     8511/* Line 1806 of yacc.c  */
     8512#line 2436 "parser.yy"
     8513    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8514    break;
     8515
     8516  case 643:
     8517
     8518/* Line 1806 of yacc.c  */
     8519#line 2441 "parser.yy"
     8520    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8521    break;
     8522
     8523  case 644:
     8524
     8525/* Line 1806 of yacc.c  */
     8526#line 2443 "parser.yy"
     8527    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8528    break;
     8529
     8530  case 645:
     8531
     8532/* Line 1806 of yacc.c  */
     8533#line 2445 "parser.yy"
     8534    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8535    break;
     8536
     8537  case 646:
     8538
     8539/* Line 1806 of yacc.c  */
     8540#line 2451 "parser.yy"
     8541    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8542    break;
     8543
     8544  case 647:
     8545
     8546/* Line 1806 of yacc.c  */
     8547#line 2453 "parser.yy"
     8548    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8549    break;
     8550
     8551  case 649:
     8552
     8553/* Line 1806 of yacc.c  */
     8554#line 2459 "parser.yy"
     8555    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8556    break;
     8557
     8558  case 650:
     8559
     8560/* Line 1806 of yacc.c  */
     8561#line 2461 "parser.yy"
     8562    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8563    break;
     8564
     8565  case 651:
     8566
     8567/* Line 1806 of yacc.c  */
     8568#line 2463 "parser.yy"
     8569    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8570    break;
     8571
     8572  case 652:
     8573
     8574/* Line 1806 of yacc.c  */
     8575#line 2465 "parser.yy"
     8576    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8577    break;
     8578
     8579  case 654:
     8580
     8581/* Line 1806 of yacc.c  */
     8582#line 2480 "parser.yy"
     8583    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8584    break;
     8585
     8586  case 655:
     8587
     8588/* Line 1806 of yacc.c  */
     8589#line 2482 "parser.yy"
     8590    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8591    break;
     8592
     8593  case 656:
     8594
     8595/* Line 1806 of yacc.c  */
     8596#line 2487 "parser.yy"
     8597    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8598    break;
     8599
     8600  case 657:
     8601
     8602/* Line 1806 of yacc.c  */
     8603#line 2489 "parser.yy"
     8604    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8605    break;
     8606
     8607  case 658:
     8608
     8609/* Line 1806 of yacc.c  */
     8610#line 2491 "parser.yy"
     8611    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8612    break;
     8613
     8614  case 659:
     8615
     8616/* Line 1806 of yacc.c  */
     8617#line 2493 "parser.yy"
     8618    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8619    break;
     8620
     8621  case 660:
     8622
     8623/* Line 1806 of yacc.c  */
     8624#line 2495 "parser.yy"
     8625    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8626    break;
     8627
     8628  case 662:
     8629
     8630/* Line 1806 of yacc.c  */
     8631#line 2501 "parser.yy"
     8632    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8633    break;
     8634
     8635  case 663:
     8636
     8637/* Line 1806 of yacc.c  */
     8638#line 2503 "parser.yy"
     8639    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8640    break;
     8641
     8642  case 664:
     8643
     8644/* Line 1806 of yacc.c  */
     8645#line 2505 "parser.yy"
     8646    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8647    break;
     8648
     8649  case 665:
     8650
     8651/* Line 1806 of yacc.c  */
     8652#line 2510 "parser.yy"
     8653    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8654    break;
     8655
     8656  case 666:
     8657
     8658/* Line 1806 of yacc.c  */
     8659#line 2512 "parser.yy"
     8660    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8661    break;
     8662
     8663  case 667:
     8664
     8665/* Line 1806 of yacc.c  */
     8666#line 2514 "parser.yy"
     8667    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8668    break;
     8669
     8670  case 669:
     8671
     8672/* Line 1806 of yacc.c  */
     8673#line 2521 "parser.yy"
    84228674    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84238675    break;
    84248676
    8425   case 637:
    8426 
    8427 /* Line 1806 of yacc.c  */
    8428 #line 2421 "parser.yy"
     8677  case 671:
     8678
     8679/* Line 1806 of yacc.c  */
     8680#line 2532 "parser.yy"
     8681    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8682    break;
     8683
     8684  case 672:
     8685
     8686/* Line 1806 of yacc.c  */
     8687#line 2535 "parser.yy"
     8688    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8689    break;
     8690
     8691  case 673:
     8692
     8693/* Line 1806 of yacc.c  */
     8694#line 2537 "parser.yy"
     8695    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8696    break;
     8697
     8698  case 674:
     8699
     8700/* Line 1806 of yacc.c  */
     8701#line 2540 "parser.yy"
     8702    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8703    break;
     8704
     8705  case 675:
     8706
     8707/* Line 1806 of yacc.c  */
     8708#line 2542 "parser.yy"
     8709    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8710    break;
     8711
     8712  case 676:
     8713
     8714/* Line 1806 of yacc.c  */
     8715#line 2544 "parser.yy"
     8716    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8717    break;
     8718
     8719  case 678:
     8720
     8721/* Line 1806 of yacc.c  */
     8722#line 2558 "parser.yy"
     8723    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8724    break;
     8725
     8726  case 679:
     8727
     8728/* Line 1806 of yacc.c  */
     8729#line 2560 "parser.yy"
     8730    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8731    break;
     8732
     8733  case 680:
     8734
     8735/* Line 1806 of yacc.c  */
     8736#line 2565 "parser.yy"
     8737    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8738    break;
     8739
     8740  case 681:
     8741
     8742/* Line 1806 of yacc.c  */
     8743#line 2567 "parser.yy"
     8744    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8745    break;
     8746
     8747  case 682:
     8748
     8749/* Line 1806 of yacc.c  */
     8750#line 2569 "parser.yy"
     8751    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8752    break;
     8753
     8754  case 683:
     8755
     8756/* Line 1806 of yacc.c  */
     8757#line 2571 "parser.yy"
     8758    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8759    break;
     8760
     8761  case 684:
     8762
     8763/* Line 1806 of yacc.c  */
     8764#line 2573 "parser.yy"
     8765    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8766    break;
     8767
     8768  case 686:
     8769
     8770/* Line 1806 of yacc.c  */
     8771#line 2579 "parser.yy"
    84298772    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84308773    break;
    84318774
    8432   case 638:
    8433 
    8434 /* Line 1806 of yacc.c  */
    8435 #line 2426 "parser.yy"
    8436     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8437     break;
    8438 
    8439   case 639:
    8440 
    8441 /* Line 1806 of yacc.c  */
    8442 #line 2428 "parser.yy"
     8775  case 687:
     8776
     8777/* Line 1806 of yacc.c  */
     8778#line 2581 "parser.yy"
     8779    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8780    break;
     8781
     8782  case 688:
     8783
     8784/* Line 1806 of yacc.c  */
     8785#line 2583 "parser.yy"
     8786    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8787    break;
     8788
     8789  case 689:
     8790
     8791/* Line 1806 of yacc.c  */
     8792#line 2588 "parser.yy"
    84438793    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84448794    break;
    84458795
    8446   case 641:
    8447 
    8448 /* Line 1806 of yacc.c  */
    8449 #line 2443 "parser.yy"
    8450     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8451     break;
    8452 
    8453   case 642:
    8454 
    8455 /* Line 1806 of yacc.c  */
    8456 #line 2445 "parser.yy"
    8457     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8458     break;
    8459 
    8460   case 643:
    8461 
    8462 /* Line 1806 of yacc.c  */
    8463 #line 2450 "parser.yy"
    8464     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8465     break;
    8466 
    8467   case 644:
    8468 
    8469 /* Line 1806 of yacc.c  */
    8470 #line 2452 "parser.yy"
    8471     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8472     break;
    8473 
    8474   case 645:
    8475 
    8476 /* Line 1806 of yacc.c  */
    8477 #line 2454 "parser.yy"
    8478     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8479     break;
    8480 
    8481   case 646:
    8482 
    8483 /* Line 1806 of yacc.c  */
    8484 #line 2456 "parser.yy"
    8485     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8486     break;
    8487 
    8488   case 647:
    8489 
    8490 /* Line 1806 of yacc.c  */
    8491 #line 2458 "parser.yy"
     8796  case 690:
     8797
     8798/* Line 1806 of yacc.c  */
     8799#line 2590 "parser.yy"
    84928800    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84938801    break;
    84948802
    8495   case 649:
    8496 
    8497 /* Line 1806 of yacc.c  */
    8498 #line 2464 "parser.yy"
    8499     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8500     break;
    8501 
    8502   case 650:
    8503 
    8504 /* Line 1806 of yacc.c  */
    8505 #line 2466 "parser.yy"
    8506     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8507     break;
    8508 
    8509   case 651:
    8510 
    8511 /* Line 1806 of yacc.c  */
    8512 #line 2468 "parser.yy"
    8513     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8514     break;
    8515 
    8516   case 652:
    8517 
    8518 /* Line 1806 of yacc.c  */
    8519 #line 2473 "parser.yy"
    8520     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8521     break;
    8522 
    8523   case 653:
    8524 
    8525 /* Line 1806 of yacc.c  */
    8526 #line 2475 "parser.yy"
    8527     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8528     break;
    8529 
    8530   case 654:
    8531 
    8532 /* Line 1806 of yacc.c  */
    8533 #line 2477 "parser.yy"
    8534     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8535     break;
    8536 
    8537   case 655:
    8538 
    8539 /* Line 1806 of yacc.c  */
    8540 #line 2483 "parser.yy"
    8541     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8542     break;
    8543 
    8544   case 656:
    8545 
    8546 /* Line 1806 of yacc.c  */
    8547 #line 2485 "parser.yy"
    8548     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8549     break;
    8550 
    8551   case 658:
    8552 
    8553 /* Line 1806 of yacc.c  */
    8554 #line 2491 "parser.yy"
    8555     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8556     break;
    8557 
    8558   case 659:
    8559 
    8560 /* Line 1806 of yacc.c  */
    8561 #line 2493 "parser.yy"
    8562     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8563     break;
    8564 
    8565   case 660:
    8566 
    8567 /* Line 1806 of yacc.c  */
    8568 #line 2495 "parser.yy"
    8569     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8570     break;
    8571 
    8572   case 661:
    8573 
    8574 /* Line 1806 of yacc.c  */
    8575 #line 2497 "parser.yy"
    8576     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8577     break;
    8578 
    8579   case 663:
    8580 
    8581 /* Line 1806 of yacc.c  */
    8582 #line 2512 "parser.yy"
    8583     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8584     break;
    8585 
    8586   case 664:
    8587 
    8588 /* Line 1806 of yacc.c  */
    8589 #line 2514 "parser.yy"
    8590     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8591     break;
    8592 
    8593   case 665:
    8594 
    8595 /* Line 1806 of yacc.c  */
    8596 #line 2519 "parser.yy"
    8597     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8598     break;
    8599 
    8600   case 666:
    8601 
    8602 /* Line 1806 of yacc.c  */
    8603 #line 2521 "parser.yy"
    8604     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8605     break;
    8606 
    8607   case 667:
    8608 
    8609 /* Line 1806 of yacc.c  */
    8610 #line 2523 "parser.yy"
    8611     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8612     break;
    8613 
    8614   case 668:
    8615 
    8616 /* Line 1806 of yacc.c  */
    8617 #line 2525 "parser.yy"
    8618     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8619     break;
    8620 
    8621   case 669:
    8622 
    8623 /* Line 1806 of yacc.c  */
    8624 #line 2527 "parser.yy"
    8625     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8626     break;
    8627 
    8628   case 671:
    8629 
    8630 /* Line 1806 of yacc.c  */
    8631 #line 2533 "parser.yy"
    8632     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8633     break;
    8634 
    8635   case 672:
    8636 
    8637 /* Line 1806 of yacc.c  */
    8638 #line 2535 "parser.yy"
    8639     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8640     break;
    8641 
    8642   case 673:
    8643 
    8644 /* Line 1806 of yacc.c  */
    8645 #line 2537 "parser.yy"
    8646     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8647     break;
    8648 
    8649   case 674:
    8650 
    8651 /* Line 1806 of yacc.c  */
    8652 #line 2542 "parser.yy"
    8653     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8654     break;
    8655 
    8656   case 675:
    8657 
    8658 /* Line 1806 of yacc.c  */
    8659 #line 2544 "parser.yy"
    8660     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8661     break;
    8662 
    8663   case 676:
    8664 
    8665 /* Line 1806 of yacc.c  */
    8666 #line 2546 "parser.yy"
    8667     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8668     break;
    8669 
    8670   case 678:
    8671 
    8672 /* Line 1806 of yacc.c  */
    8673 #line 2553 "parser.yy"
    8674     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8675     break;
    8676 
    8677   case 680:
    8678 
    8679 /* Line 1806 of yacc.c  */
    8680 #line 2564 "parser.yy"
    8681     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8682     break;
    8683 
    8684   case 681:
    8685 
    8686 /* Line 1806 of yacc.c  */
    8687 #line 2567 "parser.yy"
     8803  case 693:
     8804
     8805/* Line 1806 of yacc.c  */
     8806#line 2600 "parser.yy"
     8807    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8808    break;
     8809
     8810  case 696:
     8811
     8812/* Line 1806 of yacc.c  */
     8813#line 2610 "parser.yy"
     8814    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8815    break;
     8816
     8817  case 697:
     8818
     8819/* Line 1806 of yacc.c  */
     8820#line 2612 "parser.yy"
     8821    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8822    break;
     8823
     8824  case 698:
     8825
     8826/* Line 1806 of yacc.c  */
     8827#line 2614 "parser.yy"
     8828    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8829    break;
     8830
     8831  case 699:
     8832
     8833/* Line 1806 of yacc.c  */
     8834#line 2616 "parser.yy"
     8835    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8836    break;
     8837
     8838  case 700:
     8839
     8840/* Line 1806 of yacc.c  */
     8841#line 2618 "parser.yy"
     8842    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8843    break;
     8844
     8845  case 701:
     8846
     8847/* Line 1806 of yacc.c  */
     8848#line 2620 "parser.yy"
     8849    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8850    break;
     8851
     8852  case 702:
     8853
     8854/* Line 1806 of yacc.c  */
     8855#line 2627 "parser.yy"
     8856    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8857    break;
     8858
     8859  case 703:
     8860
     8861/* Line 1806 of yacc.c  */
     8862#line 2629 "parser.yy"
     8863    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8864    break;
     8865
     8866  case 704:
     8867
     8868/* Line 1806 of yacc.c  */
     8869#line 2631 "parser.yy"
     8870    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8871    break;
     8872
     8873  case 705:
     8874
     8875/* Line 1806 of yacc.c  */
     8876#line 2633 "parser.yy"
     8877    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8878    break;
     8879
     8880  case 706:
     8881
     8882/* Line 1806 of yacc.c  */
     8883#line 2635 "parser.yy"
     8884    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8885    break;
     8886
     8887  case 707:
     8888
     8889/* Line 1806 of yacc.c  */
     8890#line 2637 "parser.yy"
     8891    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8892    break;
     8893
     8894  case 708:
     8895
     8896/* Line 1806 of yacc.c  */
     8897#line 2639 "parser.yy"
     8898    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8899    break;
     8900
     8901  case 709:
     8902
     8903/* Line 1806 of yacc.c  */
     8904#line 2641 "parser.yy"
     8905    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8906    break;
     8907
     8908  case 710:
     8909
     8910/* Line 1806 of yacc.c  */
     8911#line 2643 "parser.yy"
     8912    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8913    break;
     8914
     8915  case 711:
     8916
     8917/* Line 1806 of yacc.c  */
     8918#line 2645 "parser.yy"
     8919    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8920    break;
     8921
     8922  case 712:
     8923
     8924/* Line 1806 of yacc.c  */
     8925#line 2650 "parser.yy"
    86888926    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    86898927    break;
    86908928
    8691   case 682:
    8692 
    8693 /* Line 1806 of yacc.c  */
    8694 #line 2569 "parser.yy"
    8695     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8696     break;
    8697 
    8698   case 683:
    8699 
    8700 /* Line 1806 of yacc.c  */
    8701 #line 2572 "parser.yy"
     8929  case 713:
     8930
     8931/* Line 1806 of yacc.c  */
     8932#line 2652 "parser.yy"
    87028933    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    87038934    break;
    87048935
    8705   case 684:
    8706 
    8707 /* Line 1806 of yacc.c  */
    8708 #line 2574 "parser.yy"
    8709     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8710     break;
    8711 
    8712   case 685:
    8713 
    8714 /* Line 1806 of yacc.c  */
    8715 #line 2576 "parser.yy"
    8716     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    8717     break;
    8718 
    8719   case 687:
    8720 
    8721 /* Line 1806 of yacc.c  */
    8722 #line 2590 "parser.yy"
    8723     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8724     break;
    8725 
    8726   case 688:
    8727 
    8728 /* Line 1806 of yacc.c  */
    8729 #line 2592 "parser.yy"
    8730     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8731     break;
    8732 
    8733   case 689:
    8734 
    8735 /* Line 1806 of yacc.c  */
    8736 #line 2597 "parser.yy"
    8737     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8738     break;
    8739 
    8740   case 690:
    8741 
    8742 /* Line 1806 of yacc.c  */
    8743 #line 2599 "parser.yy"
    8744     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8745     break;
    8746 
    8747   case 691:
    8748 
    8749 /* Line 1806 of yacc.c  */
    8750 #line 2601 "parser.yy"
    8751     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8752     break;
    8753 
    8754   case 692:
    8755 
    8756 /* Line 1806 of yacc.c  */
    8757 #line 2603 "parser.yy"
    8758     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8759     break;
    8760 
    8761   case 693:
    8762 
    8763 /* Line 1806 of yacc.c  */
    8764 #line 2605 "parser.yy"
    8765     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8766     break;
    8767 
    8768   case 695:
    8769 
    8770 /* Line 1806 of yacc.c  */
    8771 #line 2611 "parser.yy"
    8772     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8773     break;
    8774 
    8775   case 696:
    8776 
    8777 /* Line 1806 of yacc.c  */
    8778 #line 2613 "parser.yy"
    8779     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8780     break;
    8781 
    8782   case 697:
    8783 
    8784 /* Line 1806 of yacc.c  */
    8785 #line 2615 "parser.yy"
    8786     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8787     break;
    8788 
    8789   case 698:
    8790 
    8791 /* Line 1806 of yacc.c  */
    8792 #line 2620 "parser.yy"
    8793     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8794     break;
    8795 
    8796   case 699:
    8797 
    8798 /* Line 1806 of yacc.c  */
    8799 #line 2622 "parser.yy"
    8800     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8801     break;
    8802 
    8803   case 702:
    8804 
    8805 /* Line 1806 of yacc.c  */
    8806 #line 2632 "parser.yy"
     8936  case 714:
     8937
     8938/* Line 1806 of yacc.c  */
     8939#line 2657 "parser.yy"
     8940    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     8941    break;
     8942
     8943  case 715:
     8944
     8945/* Line 1806 of yacc.c  */
     8946#line 2659 "parser.yy"
     8947    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     8948    break;
     8949
     8950  case 717:
     8951
     8952/* Line 1806 of yacc.c  */
     8953#line 2686 "parser.yy"
    88078954    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88088955    break;
    88098956
    8810   case 705:
    8811 
    8812 /* Line 1806 of yacc.c  */
    8813 #line 2642 "parser.yy"
     8957  case 721:
     8958
     8959/* Line 1806 of yacc.c  */
     8960#line 2697 "parser.yy"
    88148961    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88158962    break;
    88168963
    8817   case 706:
    8818 
    8819 /* Line 1806 of yacc.c  */
    8820 #line 2644 "parser.yy"
     8964  case 722:
     8965
     8966/* Line 1806 of yacc.c  */
     8967#line 2699 "parser.yy"
    88218968    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88228969    break;
    88238970
    8824   case 707:
    8825 
    8826 /* Line 1806 of yacc.c  */
    8827 #line 2646 "parser.yy"
     8971  case 723:
     8972
     8973/* Line 1806 of yacc.c  */
     8974#line 2701 "parser.yy"
    88288975    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88298976    break;
    88308977
    8831   case 708:
    8832 
    8833 /* Line 1806 of yacc.c  */
    8834 #line 2648 "parser.yy"
     8978  case 724:
     8979
     8980/* Line 1806 of yacc.c  */
     8981#line 2703 "parser.yy"
    88358982    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88368983    break;
    88378984
    8838   case 709:
    8839 
    8840 /* Line 1806 of yacc.c  */
    8841 #line 2650 "parser.yy"
     8985  case 725:
     8986
     8987/* Line 1806 of yacc.c  */
     8988#line 2705 "parser.yy"
    88428989    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88438990    break;
    88448991
    8845   case 710:
    8846 
    8847 /* Line 1806 of yacc.c  */
    8848 #line 2652 "parser.yy"
     8992  case 726:
     8993
     8994/* Line 1806 of yacc.c  */
     8995#line 2707 "parser.yy"
    88498996    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88508997    break;
    88518998
    8852   case 711:
    8853 
    8854 /* Line 1806 of yacc.c  */
    8855 #line 2659 "parser.yy"
     8999  case 727:
     9000
     9001/* Line 1806 of yacc.c  */
     9002#line 2714 "parser.yy"
    88569003    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88579004    break;
    88589005
    8859   case 712:
    8860 
    8861 /* Line 1806 of yacc.c  */
    8862 #line 2661 "parser.yy"
     9006  case 728:
     9007
     9008/* Line 1806 of yacc.c  */
     9009#line 2716 "parser.yy"
     9010    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9011    break;
     9012
     9013  case 729:
     9014
     9015/* Line 1806 of yacc.c  */
     9016#line 2718 "parser.yy"
    88639017    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88649018    break;
    88659019
    8866   case 713:
    8867 
    8868 /* Line 1806 of yacc.c  */
    8869 #line 2663 "parser.yy"
     9020  case 730:
     9021
     9022/* Line 1806 of yacc.c  */
     9023#line 2720 "parser.yy"
     9024    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9025    break;
     9026
     9027  case 731:
     9028
     9029/* Line 1806 of yacc.c  */
     9030#line 2722 "parser.yy"
    88709031    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88719032    break;
    88729033
    8873   case 714:
    8874 
    8875 /* Line 1806 of yacc.c  */
    8876 #line 2665 "parser.yy"
    8877     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8878     break;
    8879 
    8880   case 715:
    8881 
    8882 /* Line 1806 of yacc.c  */
    8883 #line 2667 "parser.yy"
     9034  case 732:
     9035
     9036/* Line 1806 of yacc.c  */
     9037#line 2724 "parser.yy"
    88849038    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88859039    break;
    88869040
    8887   case 716:
    8888 
    8889 /* Line 1806 of yacc.c  */
    8890 #line 2669 "parser.yy"
    8891     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8892     break;
    8893 
    8894   case 717:
    8895 
    8896 /* Line 1806 of yacc.c  */
    8897 #line 2671 "parser.yy"
    8898     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8899     break;
    8900 
    8901   case 718:
    8902 
    8903 /* Line 1806 of yacc.c  */
    8904 #line 2673 "parser.yy"
    8905     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8906     break;
    8907 
    8908   case 719:
    8909 
    8910 /* Line 1806 of yacc.c  */
    8911 #line 2675 "parser.yy"
    8912     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8913     break;
    8914 
    8915   case 720:
    8916 
    8917 /* Line 1806 of yacc.c  */
    8918 #line 2677 "parser.yy"
    8919     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8920     break;
    8921 
    8922   case 721:
    8923 
    8924 /* Line 1806 of yacc.c  */
    8925 #line 2682 "parser.yy"
    8926     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    8927     break;
    8928 
    8929   case 722:
    8930 
    8931 /* Line 1806 of yacc.c  */
    8932 #line 2684 "parser.yy"
    8933     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    8934     break;
    8935 
    8936   case 723:
    8937 
    8938 /* Line 1806 of yacc.c  */
    8939 #line 2689 "parser.yy"
    8940     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    8941     break;
    8942 
    8943   case 724:
    8944 
    8945 /* Line 1806 of yacc.c  */
    8946 #line 2691 "parser.yy"
    8947     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    8948     break;
    8949 
    8950   case 726:
    8951 
    8952 /* Line 1806 of yacc.c  */
    8953 #line 2718 "parser.yy"
    8954     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    8955     break;
    8956 
    8957   case 730:
     9041  case 733:
    89589042
    89599043/* Line 1806 of yacc.c  */
    89609044#line 2729 "parser.yy"
    8961     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8962     break;
    8963 
    8964   case 731:
    8965 
    8966 /* Line 1806 of yacc.c  */
    8967 #line 2731 "parser.yy"
    8968     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    8969     break;
    8970 
    8971   case 732:
    8972 
    8973 /* Line 1806 of yacc.c  */
    8974 #line 2733 "parser.yy"
    8975     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8976     break;
    8977 
    8978   case 733:
    8979 
    8980 /* Line 1806 of yacc.c  */
    8981 #line 2735 "parser.yy"
    8982     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9045    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    89839046    break;
    89849047
     
    89869049
    89879050/* Line 1806 of yacc.c  */
    8988 #line 2737 "parser.yy"
    8989     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9051#line 2734 "parser.yy"
     9052    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    89909053    break;
    89919054
     
    89939056
    89949057/* Line 1806 of yacc.c  */
    8995 #line 2739 "parser.yy"
    8996     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9058#line 2736 "parser.yy"
     9059    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    89979060    break;
    89989061
     
    90009063
    90019064/* Line 1806 of yacc.c  */
    9002 #line 2746 "parser.yy"
    9003     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9004     break;
    9005 
    9006   case 737:
    9007 
    9008 /* Line 1806 of yacc.c  */
    9009 #line 2748 "parser.yy"
    9010     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9011     break;
    9012 
    9013   case 738:
    9014 
    9015 /* Line 1806 of yacc.c  */
    9016 #line 2750 "parser.yy"
    9017     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9065#line 2738 "parser.yy"
     9066    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90189067    break;
    90199068
     
    90219070
    90229071/* Line 1806 of yacc.c  */
    9023 #line 2752 "parser.yy"
    9024     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9072#line 2762 "parser.yy"
     9073    { (yyval.en) = 0; }
    90259074    break;
    90269075
     
    90289077
    90299078/* Line 1806 of yacc.c  */
    9030 #line 2754 "parser.yy"
    9031     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9032     break;
    9033 
    9034   case 741:
    9035 
    9036 /* Line 1806 of yacc.c  */
    9037 #line 2756 "parser.yy"
    9038     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9039     break;
    9040 
    9041   case 742:
    9042 
    9043 /* Line 1806 of yacc.c  */
    9044 #line 2761 "parser.yy"
    9045     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    9046     break;
    9047 
    9048   case 743:
    9049 
    9050 /* Line 1806 of yacc.c  */
    9051 #line 2766 "parser.yy"
    9052     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    9053     break;
    9054 
    9055   case 744:
    9056 
    9057 /* Line 1806 of yacc.c  */
    9058 #line 2768 "parser.yy"
    9059     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9060     break;
    9061 
    9062   case 745:
    9063 
    9064 /* Line 1806 of yacc.c  */
    9065 #line 2770 "parser.yy"
    9066     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9067     break;
    9068 
    9069   case 748:
    9070 
    9071 /* Line 1806 of yacc.c  */
    9072 #line 2794 "parser.yy"
    9073     { (yyval.en) = 0; }
    9074     break;
    9075 
    9076   case 749:
    9077 
    9078 /* Line 1806 of yacc.c  */
    9079 #line 2796 "parser.yy"
     9079#line 2764 "parser.yy"
    90809080    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    90819081    break;
     
    93159315
    93169316/* Line 2067 of yacc.c  */
    9317 #line 2799 "parser.yy"
     9317#line 2767 "parser.yy"
    93189318
    93199319// ----end of grammar----
  • src/Parser/parser.h

    rd2ded3e7 r698664b3  
    8787     RETURN = 305,
    8888     CHOOSE = 306,
    89      DISABLE = 307,
    90      ENABLE = 308,
    91      FALLTHRU = 309,
    92      TRY = 310,
    93      CATCH = 311,
    94      CATCHRESUME = 312,
    95      FINALLY = 313,
    96      THROW = 314,
    97      THROWRESUME = 315,
    98      AT = 316,
    99      ASM = 317,
    100      ALIGNAS = 318,
    101      ALIGNOF = 319,
    102      ATOMIC = 320,
    103      GENERIC = 321,
    104      NORETURN = 322,
    105      STATICASSERT = 323,
    106      THREADLOCAL = 324,
    107      IDENTIFIER = 325,
    108      QUOTED_IDENTIFIER = 326,
    109      TYPEDEFname = 327,
    110      TYPEGENname = 328,
    111      ATTR_IDENTIFIER = 329,
    112      ATTR_TYPEDEFname = 330,
    113      ATTR_TYPEGENname = 331,
    114      INTEGERconstant = 332,
    115      FLOATINGconstant = 333,
    116      CHARACTERconstant = 334,
    117      STRINGliteral = 335,
    118      ZERO = 336,
    119      ONE = 337,
    120      ARROW = 338,
    121      ICR = 339,
    122      DECR = 340,
    123      LS = 341,
    124      RS = 342,
    125      LE = 343,
    126      GE = 344,
    127      EQ = 345,
    128      NE = 346,
    129      ANDAND = 347,
    130      OROR = 348,
    131      ELLIPSIS = 349,
    132      MULTassign = 350,
    133      DIVassign = 351,
    134      MODassign = 352,
    135      PLUSassign = 353,
    136      MINUSassign = 354,
    137      LSassign = 355,
    138      RSassign = 356,
    139      ANDassign = 357,
    140      ERassign = 358,
    141      ORassign = 359,
    142      ATassign = 360,
    143      THEN = 361
     89     FALLTHRU = 307,
     90     TRY = 308,
     91     CATCH = 309,
     92     FINALLY = 310,
     93     THROW = 311,
     94     ASM = 312,
     95     ALIGNAS = 313,
     96     ALIGNOF = 314,
     97     ATOMIC = 315,
     98     GENERIC = 316,
     99     NORETURN = 317,
     100     STATICASSERT = 318,
     101     THREADLOCAL = 319,
     102     IDENTIFIER = 320,
     103     QUOTED_IDENTIFIER = 321,
     104     TYPEDEFname = 322,
     105     TYPEGENname = 323,
     106     ATTR_IDENTIFIER = 324,
     107     ATTR_TYPEDEFname = 325,
     108     ATTR_TYPEGENname = 326,
     109     INTEGERconstant = 327,
     110     FLOATINGconstant = 328,
     111     CHARACTERconstant = 329,
     112     STRINGliteral = 330,
     113     ZERO = 331,
     114     ONE = 332,
     115     ARROW = 333,
     116     ICR = 334,
     117     DECR = 335,
     118     LS = 336,
     119     RS = 337,
     120     LE = 338,
     121     GE = 339,
     122     EQ = 340,
     123     NE = 341,
     124     ANDAND = 342,
     125     OROR = 343,
     126     ELLIPSIS = 344,
     127     MULTassign = 345,
     128     DIVassign = 346,
     129     MODassign = 347,
     130     PLUSassign = 348,
     131     MINUSassign = 349,
     132     LSassign = 350,
     133     RSassign = 351,
     134     ANDassign = 352,
     135     ERassign = 353,
     136     ORassign = 354,
     137     THEN = 355
    144138   };
    145139#endif
     
    194188#define RETURN 305
    195189#define CHOOSE 306
    196 #define DISABLE 307
    197 #define ENABLE 308
    198 #define FALLTHRU 309
    199 #define TRY 310
    200 #define CATCH 311
    201 #define CATCHRESUME 312
    202 #define FINALLY 313
    203 #define THROW 314
    204 #define THROWRESUME 315
    205 #define AT 316
    206 #define ASM 317
    207 #define ALIGNAS 318
    208 #define ALIGNOF 319
    209 #define ATOMIC 320
    210 #define GENERIC 321
    211 #define NORETURN 322
    212 #define STATICASSERT 323
    213 #define THREADLOCAL 324
    214 #define IDENTIFIER 325
    215 #define QUOTED_IDENTIFIER 326
    216 #define TYPEDEFname 327
    217 #define TYPEGENname 328
    218 #define ATTR_IDENTIFIER 329
    219 #define ATTR_TYPEDEFname 330
    220 #define ATTR_TYPEGENname 331
    221 #define INTEGERconstant 332
    222 #define FLOATINGconstant 333
    223 #define CHARACTERconstant 334
    224 #define STRINGliteral 335
    225 #define ZERO 336
    226 #define ONE 337
    227 #define ARROW 338
    228 #define ICR 339
    229 #define DECR 340
    230 #define LS 341
    231 #define RS 342
    232 #define LE 343
    233 #define GE 344
    234 #define EQ 345
    235 #define NE 346
    236 #define ANDAND 347
    237 #define OROR 348
    238 #define ELLIPSIS 349
    239 #define MULTassign 350
    240 #define DIVassign 351
    241 #define MODassign 352
    242 #define PLUSassign 353
    243 #define MINUSassign 354
    244 #define LSassign 355
    245 #define RSassign 356
    246 #define ANDassign 357
    247 #define ERassign 358
    248 #define ORassign 359
    249 #define ATassign 360
    250 #define THEN 361
     190#define FALLTHRU 307
     191#define TRY 308
     192#define CATCH 309
     193#define FINALLY 310
     194#define THROW 311
     195#define ASM 312
     196#define ALIGNAS 313
     197#define ALIGNOF 314
     198#define ATOMIC 315
     199#define GENERIC 316
     200#define NORETURN 317
     201#define STATICASSERT 318
     202#define THREADLOCAL 319
     203#define IDENTIFIER 320
     204#define QUOTED_IDENTIFIER 321
     205#define TYPEDEFname 322
     206#define TYPEGENname 323
     207#define ATTR_IDENTIFIER 324
     208#define ATTR_TYPEDEFname 325
     209#define ATTR_TYPEGENname 326
     210#define INTEGERconstant 327
     211#define FLOATINGconstant 328
     212#define CHARACTERconstant 329
     213#define STRINGliteral 330
     214#define ZERO 331
     215#define ONE 332
     216#define ARROW 333
     217#define ICR 334
     218#define DECR 335
     219#define LS 336
     220#define RS 337
     221#define LE 338
     222#define GE 339
     223#define EQ 340
     224#define NE 341
     225#define ANDAND 342
     226#define OROR 343
     227#define ELLIPSIS 344
     228#define MULTassign 345
     229#define DIVassign 346
     230#define MODassign 347
     231#define PLUSassign 348
     232#define MINUSassign 349
     233#define LSassign 350
     234#define RSassign 351
     235#define ANDassign 352
     236#define ERassign 353
     237#define ORassign 354
     238#define THEN 355
    251239
    252240
     
    258246
    259247/* Line 2068 of yacc.c  */
    260 #line 110 "parser.yy"
     248#line 108 "parser.yy"
    261249
    262250        Token tok;
     
    275263
    276264/* Line 2068 of yacc.c  */
    277 #line 278 "Parser/parser.h"
     265#line 266 "Parser/parser.h"
    278266} YYSTYPE;
    279267# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    rd2ded3e7 r698664b3  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Oct  8 17:17:54 2015
    13 // Update Count     : 1473
     12// Last Modified On : Tue Aug 11 16:01:49 2015
     13// Update Count     : 1350
    1414//
    1515
     
    8181%token ATTRIBUTE EXTENSION                                                              // GCC
    8282%token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN
    83 %token CHOOSE DISABLE ENABLE FALLTHRU TRY CATCH CATCHRESUME FINALLY THROW THROWRESUME AT        // CFA
     83%token CHOOSE FALLTHRU TRY CATCH FINALLY THROW                  // CFA
    8484%token ASM                                                                                              // C99, extension ISO/IEC 9899:1999 Section J.5.10(1)
    8585%token ALIGNAS ALIGNOF ATOMIC GENERIC NORETURN STATICASSERT THREADLOCAL // C11
     
    103103%token LSassign         RSassign                                                        // <<=  >>=
    104104%token ANDassign        ERassign        ORassign                                // &=   ^=      |=
    105 
    106 %token ATassign                                                                                 // @=
    107105
    108106// Types declaration
     
    122120}
    123121
    124 %type<tok> identifier  no_01_identifier  no_attr_identifier zero_one
     122%type<tok> zero_one  identifier  no_attr_identifier  no_01_identifier
    125123%type<tok> identifier_or_type_name  no_attr_identifier_or_type_name  no_01_identifier_or_type_name
    126124%type<constant> string_literal_list
     
    319317        ;
    320318
    321 // no zero_one because ambiguity with 0.0 : double constant or field selection
    322319no_attr_identifier:
    323320        IDENTIFIER
     
    367364        | postfix_expression DECR
    368365                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), $1 ); }
     366                // GCC has priority: cast_expression
    369367        | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
    370368                { $$ = 0; }
    371         | postfix_expression '{' argument_expression_list '}' // CFA
    372                 {
    373                         Token fn; fn.str = new std::string( "?{}" ); // location undefined
    374                         $$ = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( $1 )->set_link( $3 ) );
    375                 }
    376369        ;
    377370
     
    452445                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); }
    453446        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    454                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 ) ); }
     447                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 )); }
    455448        | ANDAND no_attr_identifier                                                     // GCC, address of label
    456                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }
     449                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true )); }
    457450        ;
    458451
     
    634627        | exception_statement
    635628        | asm_statement
    636         | '^' postfix_expression '{' argument_expression_list '}' ';' // CFA
    637                 {
    638                         Token fn; fn.str = new std::string( "^?{}" ); // location undefined
    639                         $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
    640                                 (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), $2 ))->set_link( $4 ) ), 0 );
    641                 }
    642629        ;
    643630
     
    818805        | RETURN comma_expression_opt ';'
    819806                { $$ = new StatementNode( StatementNode::Return, $2, 0 ); }
    820         | THROW assignment_expression_opt ';'
     807        | THROW assignment_expression ';'
    821808                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    822 //      | THROW ';'
    823 //              { $$ = new StatementNode( StatementNode::Throw ); }
    824         | THROWRESUME assignment_expression_opt ';'
    825                 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    826         | THROWRESUME assignment_expression_opt AT assignment_expression ';'
    827                 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    828 //      | THROWRESUME ';'
    829 //              { $$ = new StatementNode( StatementNode::Throw ); }
     809        | THROW ';'
     810                { $$ = new StatementNode( StatementNode::Throw ); }
    830811        ;
    831812
     
    850831        | handler_clause CATCH '(' ELLIPSIS ')' compound_statement
    851832                { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
    852         | CATCHRESUME '(' ELLIPSIS ')' compound_statement
    853                 { $$ = StatementNode::newCatchStmt( 0, $5, true ); }
    854         | handler_clause CATCHRESUME '(' ELLIPSIS ')' compound_statement
    855                 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
    856833        ;
    857834
     
    860837                { $$ = StatementNode::newCatchStmt( $5, $8 ); }
    861838        | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
    862                 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
    863         | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
    864                 { $$ = StatementNode::newCatchStmt( $5, $8 ); }
    865         | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
    866839                { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
    867840        ;
     
    16811654        | '=' initializer
    16821655                { $$ = $2; }
    1683         | ATassign initializer
    1684                 { $$ = $2; }
    16851656        ;
    16861657
     
    16911662
    16921663initializer_list:
    1693         // empty
    1694                 { $$ = 0; }
    1695         | initializer
     1664        initializer
    16961665        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
    16971666        | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_link( $3 ) ); }
     
    17241693
    17251694designator:
    1726         // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0
    17271695        // only ".0" and ".1" allowed => semantic check
    17281696        FLOATINGconstant
  • src/SymTab/Indexer.h

    rd2ded3e7 r698664b3  
    1010// Created On       : Sun May 17 21:38:55 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Sep 17 16:05:38 2015
    13 // Update Count     : 5
     12// Last Modified On : Wed Aug 05 13:51:39 2015
     13// Update Count     : 4
    1414//
    1515
     
    1919#include <list>
    2020#include <string>
     21#include <map>
    2122
    2223#include "SynTree/Visitor.h"
  • src/SymTab/Validate.cc

    rd2ded3e7 r698664b3  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:50:04 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Aug 11 16:59:35 2015
    13 // Update Count     : 196
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 05 14:00:24 2015
     13// Update Count     : 195
    1414//
    1515
     
    894894                DeclarationWithType *ret = Mutator::mutate( objDecl );
    895895                typedefNames = oldNames;
    896                 // is the type a function?
    897896                if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) {
    898                         // replace the current object declaration with a function declaration
    899897                        return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() );
    900898                } else if ( objDecl->get_isInline() || objDecl->get_isNoreturn() ) {
  • src/SynTree/ArrayType.cc

    rd2ded3e7 r698664b3  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 14:19:07 2015
    13 // Update Count     : 11
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jun  6 14:11:48 2015
     13// Update Count     : 9
    1414//
    1515
     
    5050        } // if
    5151        if ( dimension ) {
    52                 os << " with dimension of ";
    53                 dimension->print( os, 0 );
     52                os << "with dimension of ";
     53                dimension->print( os, indent );
    5454        } // if
    5555}
  • src/SynTree/BasicType.cc

    rd2ded3e7 r698664b3  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 14:15:45 2015
    13 // Update Count     : 6
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sun Jun  7 08:44:36 2015
     13// Update Count     : 5
    1414//
    1515
     
    2828
    2929        Type::print( os, indent );
    30         os << kindNames[ kind ];
     30        os << kindNames[ kind ] << ' ';
    3131}
    3232
  • src/SynTree/Expression.cc

    rd2ded3e7 r698664b3  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Sep 02 12:07:10 2015
    13 // Update Count     : 33
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul 28 16:27:17 2015
     13// Update Count     : 22
    1414//
    1515
     
    3131Expression::Expression( Expression *_aname ) : env( 0 ), argName( _aname ) {}
    3232
    33 Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ) {
     33Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ) {
    3434        cloneAll( other.results, results );
     35        argName = other.get_argName();
    3536}
    3637
     
    7172
    7273void ConstantExpr::print( std::ostream &os, int indent ) const {
    73         os << std::string( indent, ' ' ) << "constant expression " ;
     74        os << "constant expression " ;
    7475        constant.print( os );
    7576        Expression::print( os, indent );
    76         os << std::endl;
    7777}
    7878
  • src/SynTree/Initializer.cc

    rd2ded3e7 r698664b3  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 14:05:25 2015
    13 // Update Count     : 14
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 09:02:45 2015
     13// Update Count     : 2
    1414//
    1515
     
    4343
    4444void SingleInit::print( std::ostream &os, int indent ) {
    45         os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl;
    46         value->print( os, indent+4 );
     45        os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: ";
     46        value->print( os, indent+2 );
    4747
    4848        if ( ! designators.empty() ) {
    49                 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "   << std::endl;
    50                 for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) {
     49                os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "  ;
     50                for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ )
    5151                        ( *i )->print(os, indent + 4 );
    52                 }
    5352        } // if
    5453}
  • src/driver/cfa.cc

    rd2ded3e7 r698664b3  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 17 15:24:30 2015
    13 // Update Count     : 126
     12// Last Modified On : Thu Jul 16 17:09:23 2015
     13// Update Count     : 124
    1414//
    1515
     
    263263        args[nargs] = ( *new string( string("-D__CFA_PATCHLEVEL__=") + Patch ) ).c_str();
    264264        nargs += 1;
    265         args[nargs] = "-D__CFORALL__=1";
    266         nargs += 1;
    267265
    268266        if ( cpp_flag ) {
  • src/examples/control_structures.c

    rd2ded3e7 r698664b3  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Sep 18 08:12:17 2015
    13 // Update Count     : 28
     12// Last Modified On : Thu Jun  4 14:02:50 2015
     13// Update Count     : 24
    1414//
    1515
     
    2626                                                break L3;
    2727                                                break L4;
    28                                                 //continue L1;                                  // error: not enclosing loop
    29                                                 //continue L2;                                  // error: not enclosing loop
     28                                                //continue L1;                                  // labelled continue - should be an error
     29                                                //continue L2;                                  // should be an error
    3030                                                continue L3;
    3131                                                continue L4;
  • src/examples/sum.c

    rd2ded3e7 r698664b3  
    77// sum.c --
    88//
    9 // Author           : Peter A. Buhr
     9// Author           : Richard C. Bilson
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 28 15:09:55 2015
    13 // Update Count     : 118
     12// Last Modified On : Mon Jun  1 20:46:35 2015
     13// Update Count     : 18
    1414//
    1515
    1616extern "C" {
    17         int printf( char *, ... );
     17        int printf( const char *, ... );
    1818}
    19 #include "fstream.h"
    2019
    2120context sumable( type T ) {
    2221        const T 0;
    2322        T ?+?( T, T );
     23        T ?++( T * );
    2424        T ?+=?( T *, T );
    25         T ++?( T * );
    26         T ?++( T * );
    2725};
    2826
    2927forall( type T | sumable( T ) )
    30 T sum( unsigned int n, T a[] ) {
    31         T total = 0;                                                                            // instantiate T, select 0
    32         for ( unsigned int i = 0; i < n; i += 1 )
    33                 total += a[i];                                                                  // select +
     28T sum( int n, T a[] ) {
     29        T total;                                                                                        // instantiate T, select 0
     30        total = 0;
     31        for ( int i = 0; i < n; i += 1 )
     32                total = total + a[i];                                                   // select +
    3433        return total;
    3534}
     
    3736// Required to satisfy sumable as char does not have addition.
    3837const char 0;
    39 char ?+?( char op1, char op2 ) { return (int)op1 + op2; } // cast forces integer addition or recursion
    40 char ++?( char *op ) { *op += 1; return *op; }
    41 char ?++( char *op ) { char temp = *op; *op += 1; return temp; }
     38char ?+?( char op1, char op2 ) { return op1 + op2; }
     39char ?++( char *op ) { return *op + 1; }
     40
     41const double 0; // TEMPORARY, incorrect use of int 0
    4242
    4343int main() {
    4444        const int low = 5, High = 15, size = High - low;
    45 
    46         ofstream *sout = ofstream_stdout();
    47 
    48         char s = 0, a[size];
    49         char v = low;
    50         for ( int i = 0; i < size; i += 1, v += 1 ) {
    51                 s += v;
    52                 a[i] = v;
    53         }
    54         sout << "sum from " << low << " to " << High << " is "
    55                  << (int)sum( size, a ) << ", check " << (int)s << "\n";
    56 
    57         int s = 0, a[size];
     45        int si = 0, ai[size];
    5846        int v = low;
    5947        for ( int i = 0; i < size; i += 1, v += 1 ) {
    60                 s += (int)v;
    61                 a[i] = (int)v;
     48                si += v;
     49                ai[i] = v;
    6250        }
    63         sout << "sum from " << low << " to " << High << " is "
    64                  << sum( size, (int *)a ) << ", check " << (int)s << "\n";
     51        printf( "sum from %d to %d is %d, check %d\n",
     52                        low, High, sum( size, ai ), si );
    6553
    66         double s = 0.0, a[size];
     54//      char ci[size];
     55//      char c = sum( size, ci );
     56//      float fi[size];
     57//      float f = sum( size, fi );
     58
     59        double sd = 0.0, ad[size];
    6760        double v = low / 10.0;
    6861        for ( int i = 0; i < size; i += 1, v += 0.1 ) {
    69                 s += (double)v;
    70                 a[i] = (double)v;
     62                sd += v;
     63                ad[i] = v;
    7164        }
    72         printf( "%g\n", sum( size, (double *)a ) );
    73 //      sout << "sum from " << low / 10.0 << " to " << High / 10.0 << " is "
    74 //               << sum( size, (double *)a ) << ", check " << (double)s << "\n";
    75 
    76         float s = 0.0, a[size];
    77         float v = low / 10.0;
    78         for ( int i = 0; i < size; i += 1, v += 0.1f ) {
    79                 s += (float)v;
    80                 a[i] = (float)v;
    81         }
    82         printf( "%g\n", sum( size, (float *)a ) );
    83 //      sout << "sum from " << low / 10.0 << " to " << High / 10.0 << " is "
    84 //               << sum( size, (float *)a ) << ", check " << (float)s << "\n";
     65        printf( "sum from %g to %g is %g, check %g\n",
     66                        low / 10.0, High / 10.0, sum( size, ad ), sd );
    8567}
    8668
    8769// Local Variables: //
    8870// tab-width: 4 //
    89 // compile-command: "cfa sum.c fstream.o iostream.o" //
     71// compile-command: "cfa sum.c" //
    9072// End: //
Note: See TracChangeset for help on using the changeset viewer.