diff --git a/doc/tutorial/gf-tutorial2.txt b/doc/tutorial/gf-tutorial2.txt index 0d530c22a..9ba3a9619 100644 --- a/doc/tutorial/gf-tutorial2.txt +++ b/doc/tutorial/gf-tutorial2.txt @@ -1704,6 +1704,36 @@ Product types and tuples are syntactic sugar for record types and records: Thus the labels ``p1, p2,...``` are hard-coded. +===Record and tuple patterns=== + +Record types of parameter types are also parameter types. +A typical example is a record of agreement features, e.g. French +``` + oper Agr : PType = {g : Gender ; n : Number ; p : Person} ; +``` +Notice the term ``PType`` rather than just ``Type`` referring to +parameter types. Every ``PType`` is also a ``Type``. + +Pattern matching is done in the expected way, but it can moreover +utilize partial records: the branch +``` + {g = Fem} => t +``` +in a table of type ``Agr => T`` means the same as +``` + {g = Fem ; n = _ ; p = _} => t +``` +Tuple patterns are translated to record patterns in the +same way as tuples to records; partial patterns make it +possible to write, slightly surprisingly, +``` + case of { + => t + ... + } +``` + + %--! ===Prefix-dependent choices=== diff --git a/examples/systemS/ProofSymb.gf b/examples/systemS/ProofSymb.gf index 4ff18ca14..3de1b91b7 100644 --- a/examples/systemS/ProofSymb.gf +++ b/examples/systemS/ProofSymb.gf @@ -18,7 +18,7 @@ concrete ProofSymb of Proof = FormulaSymb ** open Prelude, Precedence in { RedAbs form = continue ["Reductio ad absurdum"] (task neg abs) where { neg = useTop (prefixR 4 "~" form) } ; - ExFalso form = finish (["Ex falso quodlibet"] ++ form.s) "Ø" ; --- form + ExFalso form = finish (["Ex falso quodlibet"] ++ toProve form) "Ø" ; --- form ConjSplit a b c = continue ["Conjunction split"] @@ -81,4 +81,10 @@ concrete ProofSymb of Proof = FormulaSymb ** open Prelude, Precedence in { abs = "_|_" ; + toProve : PrecExp -> Str = \c -> + variants { + [] ; -- for generation + useTop c -- for parsing + } ; + } \ No newline at end of file diff --git a/src/GF/Source/AbsGF.hs b/src/GF/Source/AbsGF.hs index 4cdc911d2..5e00b938a 100644 --- a/src/GF/Source/AbsGF.hs +++ b/src/GF/Source/AbsGF.hs @@ -1,5 +1,4 @@ - -module GF.Source.AbsGF where +module GF.Source.AbsGF where --H import GF.Infra.Ident --H @@ -189,16 +188,17 @@ data Exp = | ESelect Exp Exp | ETupTyp Exp Exp | EExtend Exp Exp + | EGlue Exp Exp + | EConcat Exp Exp | EAbstr [Bind] Exp | ECTable [Bind] Exp | EProd Decl Exp | ETType Exp Exp - | EConcat Exp Exp - | EGlue Exp Exp | ELet [LocDef] Exp | ELetb [LocDef] Exp | EWhere Exp [LocDef] | EEqs [Equation] + | EExample Exp String | ELString LString | ELin Ident deriving (Eq,Ord,Show) @@ -220,6 +220,7 @@ data Patt = | PTup [PattTupleComp] | PC Ident [Patt] | PQC Ident Ident [Patt] + | PDisj Patt Patt deriving (Eq,Ord,Show) data PattAss = @@ -239,10 +240,6 @@ data Sort = | Sort_Strs deriving (Eq,Ord,Show) -data PattAlt = - AltP Patt - deriving (Eq,Ord,Show) - data Bind = BIdent Ident | BWild @@ -262,7 +259,7 @@ data PattTupleComp = deriving (Eq,Ord,Show) data Case = - Case [PattAlt] Exp + Case Patt Exp deriving (Eq,Ord,Show) data Equation = diff --git a/src/GF/Source/GF.cf b/src/GF/Source/GF.cf index ec07d3c0f..cdfb59d25 100644 --- a/src/GF/Source/GF.cf +++ b/src/GF/Source/GF.cf @@ -150,75 +150,80 @@ separator LocDef ";" ; -- terms and types -EIdent. Exp4 ::= Ident ; -EConstr. Exp4 ::= "{" Ident "}" ; -ECons. Exp4 ::= "%" Ident "%" ; -ESort. Exp4 ::= Sort ; -EString. Exp4 ::= String ; -EInt. Exp4 ::= Integer ; -EFloat. Exp4 ::= Double ; -EMeta. Exp4 ::= "?" ; -EEmpty. Exp4 ::= "[" "]" ; -EData. Exp4 ::= "data" ; -EList. Exp4 ::= "[" Ident Exps "]" ; -EStrings. Exp4 ::= "[" String "]" ; -ERecord. Exp4 ::= "{" [LocDef] "}" ; -- ! -ETuple. Exp4 ::= "<" [TupleComp] ">" ; --- needed for separator "," -EIndir. Exp4 ::= "(" "in" Ident ")" ; -- indirection, used in judgements -ETyped. Exp4 ::= "<" Exp ":" Exp ">" ; -- typing, used for annotations +EIdent. Exp6 ::= Ident ; +EConstr. Exp6 ::= "{" Ident "}" ; +ECons. Exp6 ::= "%" Ident "%" ; +ESort. Exp6 ::= Sort ; +EString. Exp6 ::= String ; +EInt. Exp6 ::= Integer ; +EFloat. Exp6 ::= Double ; +EMeta. Exp6 ::= "?" ; +EEmpty. Exp6 ::= "[" "]" ; +EData. Exp6 ::= "data" ; +EList. Exp6 ::= "[" Ident Exps "]" ; +EStrings. Exp6 ::= "[" String "]" ; +ERecord. Exp6 ::= "{" [LocDef] "}" ; -- ! +ETuple. Exp6 ::= "<" [TupleComp] ">" ; --- needed for separator "," +EIndir. Exp6 ::= "(" "in" Ident ")" ; -- indirection, used in judgements +ETyped. Exp6 ::= "<" Exp ":" Exp ">" ; -- typing, used for annotations -EProj. Exp3 ::= Exp3 "." Label ; -EQConstr. Exp3 ::= "{" Ident "." Ident "}" ; -- qualified constructor -EQCons. Exp3 ::= "%" Ident "." Ident ; -- qualified constant +EProj. Exp5 ::= Exp5 "." Label ; +EQConstr. Exp5 ::= "{" Ident "." Ident "}" ; -- qualified constructor +EQCons. Exp5 ::= "%" Ident "." Ident ; -- qualified constant -EApp. Exp2 ::= Exp2 Exp3 ; -ETable. Exp2 ::= "table" "{" [Case] "}" ; -ETTable. Exp2 ::= "table" Exp4 "{" [Case] "}" ; -EVTable. Exp2 ::= "table" Exp4 "[" [Exp] "]" ; -ECase. Exp2 ::= "case" Exp "of" "{" [Case] "}" ; -EVariants. Exp2 ::= "variants" "{" [Exp] "}" ; -EPre. Exp2 ::= "pre" "{" Exp ";" [Altern] "}" ; -EStrs. Exp2 ::= "strs" "{" [Exp] "}" ; -EConAt. Exp2 ::= Ident "@" Exp4 ; +EApp. Exp4 ::= Exp4 Exp5 ; +ETable. Exp4 ::= "table" "{" [Case] "}" ; +ETTable. Exp4 ::= "table" Exp6 "{" [Case] "}" ; +EVTable. Exp4 ::= "table" Exp6 "[" [Exp] "]" ; +ECase. Exp4 ::= "case" Exp "of" "{" [Case] "}" ; +EVariants. Exp4 ::= "variants" "{" [Exp] "}" ; +EPre. Exp4 ::= "pre" "{" Exp ";" [Altern] "}" ; +EStrs. Exp4 ::= "strs" "{" [Exp] "}" ; +EConAt. Exp4 ::= Ident "@" Exp6 ; -ESelect. Exp1 ::= Exp1 "!" Exp2 ; -ETupTyp. Exp1 ::= Exp1 "*" Exp2 ; -EExtend. Exp1 ::= Exp1 "**" Exp2 ; +ESelect. Exp3 ::= Exp3 "!" Exp4 ; +ETupTyp. Exp3 ::= Exp3 "*" Exp4 ; +EExtend. Exp3 ::= Exp3 "**" Exp4 ; + +EGlue. Exp1 ::= Exp2 "+" Exp1 ; + +EConcat. Exp ::= Exp1 "++" Exp ; EAbstr. Exp ::= "\\" [Bind] "->" Exp ; ECTable. Exp ::= "\\""\\" [Bind] "=>" Exp ; EProd. Exp ::= Decl "->" Exp ; -ETType. Exp ::= Exp1 "=>" Exp ; -- these are thus right associative -EConcat. Exp ::= Exp1 "++" Exp ; -EGlue. Exp ::= Exp1 "+" Exp ; +ETType. Exp ::= Exp3 "=>" Exp ; -- these are thus right associative ELet. Exp ::= "let" "{" [LocDef] "}" "in" Exp ; ELetb. Exp ::= "let" [LocDef] "in" Exp ; -EWhere. Exp ::= Exp1 "where" "{" [LocDef] "}" ; +EWhere. Exp ::= Exp3 "where" "{" [LocDef] "}" ; EEqs. Exp ::= "fn" "{" [Equation] "}" ; +EExample. Exp ::= "in" Exp5 String ; + coercions Exp 4 ; separator Exp ";" ; -- in variants -- list of arguments to category NilExp. Exps ::= ; -ConsExp. Exps ::= Exp4 Exps ; -- Exp4 to force parantheses +ConsExp. Exps ::= Exp6 Exps ; -- Exp6 to force parantheses -- patterns -PW. Patt1 ::= "_" ; -PV. Patt1 ::= Ident ; -PCon. Patt1 ::= "{" Ident "}" ; -PQ. Patt1 ::= Ident "." Ident ; -PInt. Patt1 ::= Integer ; -PFloat. Patt1 ::= Double ; -PStr. Patt1 ::= String ; -PR. Patt1 ::= "{" [PattAss] "}" ; -PTup. Patt1 ::= "<" [PattTupleComp] ">" ; -PC. Patt ::= Ident [Patt] ; -PQC. Patt ::= Ident "." Ident [Patt] ; +PW. Patt2 ::= "_" ; +PV. Patt2 ::= Ident ; +PCon. Patt2 ::= "{" Ident "}" ; +PQ. Patt2 ::= Ident "." Ident ; +PInt. Patt2 ::= Integer ; +PFloat. Patt2 ::= Double ; +PStr. Patt2 ::= String ; +PR. Patt2 ::= "{" [PattAss] "}" ; +PTup. Patt2 ::= "<" [PattTupleComp] ">" ; +PC. Patt1 ::= Ident [Patt] ; +PQC. Patt1 ::= Ident "." Ident [Patt] ; +PDisj. Patt ::= Patt "|" Patt1 ; -coercions Patt 1 ; +coercions Patt 2 ; PA. PattAss ::= [Ident] "=" Patt ; @@ -233,13 +238,10 @@ rules Sort ::= "Type" | "PType" | "Tok" | "Str" | "Strs" ; separator PattAss ";" ; -AltP. PattAlt ::= Patt ; - -- this is explicit to force higher precedence level on rhs -(:[]). [Patt] ::= Patt1 ; -(:). [Patt] ::= Patt1 [Patt] ; +(:[]). [Patt] ::= Patt2 ; +(:). [Patt] ::= Patt2 [Patt] ; -separator nonempty PattAlt "|" ; -- binds in lambdas and lin rules @@ -252,7 +254,7 @@ separator Bind "," ; -- declarations in function types DDec. Decl ::= "(" [Bind] ":" Exp ")" ; -DExp. Decl ::= Exp2 ; -- can thus be an application +DExp. Decl ::= Exp4 ; -- can thus be an application -- tuple component (term or pattern) @@ -264,7 +266,7 @@ separator PattTupleComp "," ; -- case branches -Case. Case ::= [PattAlt] "=>" Exp ; +Case. Case ::= Patt "=>" Exp ; separator nonempty Case ";" ; @@ -283,7 +285,7 @@ separator Altern ";" ; -- in a context, higher precedence is required than in function types DDDec. DDecl ::= "(" [Bind] ":" Exp ")" ; -DDExp. DDecl ::= Exp4 ; -- can thus *not* be an application +DDExp. DDecl ::= Exp6 ; -- can thus *not* be an application separator DDecl "" ; @@ -308,8 +310,8 @@ FMinus. FileName ::= "-" FileName ; FAddId. FileName ::= Ident FileName ; token LString '\'' (char - '\'')* '\'' ; -ELString. Exp4 ::= LString ; -ELin. Exp2 ::= "Lin" Ident ; +ELString. Exp6 ::= LString ; +ELin. Exp4 ::= "Lin" Ident ; DefPrintOld. TopDef ::= "printname" [PrintDef] ; DefLintype. TopDef ::= "lintype" [Def] ; diff --git a/src/GF/Source/GrammarToSource.hs b/src/GF/Source/GrammarToSource.hs index 8375af2af..c5ecf6b19 100644 --- a/src/GF/Source/GrammarToSource.hs +++ b/src/GF/Source/GrammarToSource.hs @@ -205,8 +205,8 @@ trAssign (lab, (mty, t)) = maybe (P.LDDef x t') (\ty -> P.LDFull x (trt ty) t') trLabelling (lab,ty) = P.LDDecl [trLabelIdent lab] (trt ty) -trCase (patt, trm) = P.Case [P.AltP (trp patt)] (trt trm) -trCases (patts,trm) = P.Case (map (P.AltP . trp) patts) (trt trm) +trCase (patt, trm) = P.Case (trp patt) (trt trm) +trCases (patts,trm) = P.Case (foldl1 P.PDisj (map trp patts)) (trt trm) trDecl (x,ty) = P.DDDec [trb x] (trt ty) diff --git a/src/GF/Source/LexGF.hs b/src/GF/Source/LexGF.hs index d29f702b8..9aa802910 100644 --- a/src/GF/Source/LexGF.hs +++ b/src/GF/Source/LexGF.hs @@ -1,16 +1,10 @@ {-# OPTIONS -fglasgow-exts -cpp #-} {-# LINE 3 "LexGF.x" #-} -module GF.Source.LexGF where -- H +module GF.Source.LexGF where --H -import GF.Data.ErrM -- H -import GF.Data.SharedString -- H +import GF.Data.ErrM --H +import GF.Data.SharedString --H - -#if __GLASGOW_HASKELL__ >= 603 -#include "ghcconfig.h" -#else -#include "config.h" -#endif #if __GLASGOW_HASKELL__ >= 503 import Data.Array import Data.Char (ord) @@ -25,24 +19,24 @@ import GHC.Exts import GlaExts #endif alex_base :: AlexAddr -alex_base = AlexA# "\x01\x00\x00\x00\x15\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x13\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\xd5\x00\x00\x00\x35\x00\x00\x00\xe7\x00\x00\x00\xf2\x00\x00\x00\x1d\x01\x00\x00\x6c\x01\x00\x00\x79\x01\x00\x00"# +alex_base = AlexA# "\x01\x00\x15\x00\x39\x00\x3a\x00\x18\x00\x19\x00\x1a\x00\x00\x00\x44\x00\x45\x00\x1b\x00\x1c\x00\x1d\x00\x42\x00\x00\x00\x26\x00\x27\x00\x13\x00\x00\x00\x2c\x00\x2d\x00\x9c\x00\x6c\x01\x00\x00\x17\x01\xe7\x01\xd5\x00\x35\x00\xe7\x00\xf2\x00\x1d\x01\xc2\x01\xcc\x01"# alex_table :: AlexAddr -alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x16\x00\xff\xff\x0e\x00\x0e\x00\xff\xff\x13\x00\x0e\x00\x0e\x00\x0f\x00\x11\x00\x0e\x00\x05\x00\x0e\x00\x0e\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x0e\x00\x0e\x00\x0e\x00\x10\x00\x0e\x00\x0e\x00\x0e\x00\x04\x00\xff\xff\xff\xff\x03\x00\x03\x00\x09\x00\x09\x00\x09\x00\x0b\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\x0e\x00\x0e\x00\x12\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x0e\x00\xff\xff\x0d\x00\x1b\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x09\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0e\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x07\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x16\x00\xff\xff\x00\x00\x00\x00\x14\x00\x16\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\xff\xff\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x1d\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x17\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1c\x00\x00\x00\x00\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x18\x00\xff\xff\x0e\x00\x0e\x00\xff\xff\x13\x00\x0e\x00\x0e\x00\x0f\x00\x10\x00\x0e\x00\x05\x00\x0e\x00\x0e\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x0e\x00\x0e\x00\x0e\x00\x11\x00\x0e\x00\x0e\x00\x0e\x00\x04\x00\xff\xff\xff\xff\x02\x00\x02\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\x0e\x00\x0e\x00\x12\x00\x12\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x0e\x00\xff\xff\x0d\x00\x1e\x00\x00\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x00\x00\x00\x00\x09\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0e\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x07\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x19\x00\xff\xff\x00\x00\x00\x00\x16\x00\x19\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\xff\xff\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x1f\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x1a\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\xff\xff\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x1a\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# alex_check :: AlexAddr -alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2d\x00\x0a\x00\x0a\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2a\x00\x3e\x00\x2b\x00\x27\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x20\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x2d\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x7d\x00\x7d\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xf7\x00\xff\xff\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x65\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# +alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2d\x00\x0a\x00\x0a\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2a\x00\x3e\x00\x2b\x00\x27\x00\x27\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x20\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x2d\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x7d\x00\x7d\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xf7\x00\xff\xff\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x65\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# alex_deflt :: AlexAddr -alex_deflt = AlexA# "\x14\x00\xff\xff\x02\x00\x02\x00\xff\xff\xff\xff\x0a\x00\xff\xff\x0a\x00\x0a\x00\x0a\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# +alex_deflt = AlexA# "\x15\x00\xff\xff\x03\x00\x03\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0b\x00\x0b\x00\x0b\x00\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x14\x00\xff\xff\xff\xff\xff\xff\x19\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# -alex_accept = listArray (0::Int,29) [[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[],[],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[],[],[]] +alex_accept = listArray (0::Int,32) [[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[],[],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[],[],[],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[],[],[]] {-# LINE 35 "LexGF.x" #-} tok f p s = f p s share :: String -> String -share = shareString --H +share = shareString data Tok = TS !String -- reserved words @@ -147,9 +141,6 @@ alex_action_6 = tok (\p s -> PT p (TL $ share $ unescapeInitTail s)) alex_action_7 = tok (\p s -> PT p (TI $ share s)) alex_action_8 = tok (\p s -> PT p (TD $ share s)) {-# LINE 1 "GenericTemplate.hs" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "GenericTemplate.hs" #-} -- ----------------------------------------------------------------------------- -- ALEX TEMPLATE -- @@ -160,7 +151,18 @@ alex_action_8 = tok (\p s -> PT p (TD $ share s)) -- INTERNALS and main scanner engine -{-# LINE 35 "GenericTemplate.hs" #-} + + + + + + + + + + + +{-# LINE 34 "GenericTemplate.hs" #-} @@ -175,54 +177,24 @@ alex_action_8 = tok (\p s -> PT p (TD $ share s)) data AlexAddr = AlexA# Addr# -#if __GLASGOW_HASKELL__ < 503 -uncheckedShiftL# = shiftL# +{-# INLINE alexIndexShortOffAddr #-} +alexIndexShortOffAddr (AlexA# arr) off = +#if __GLASGOW_HASKELL__ > 500 + narrow16Int# i +#elif __GLASGOW_HASKELL__ == 500 + intToInt16# i +#else + (i `iShiftL#` 16#) `iShiftRA#` 16# #endif - -{-# INLINE alexIndexInt16OffAddr #-} -alexIndexInt16OffAddr (AlexA# arr) off = -#ifdef WORDS_BIGENDIAN - narrow16Int# i where - i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low) +#if __GLASGOW_HASKELL__ >= 503 + i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low) +#else + i = word2Int# ((high `shiftL#` 8#) `or#` low) +#endif high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#))) low = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 2# -#else - indexInt16OffAddr# arr off -#endif - - - - - -{-# INLINE alexIndexInt32OffAddr #-} -alexIndexInt32OffAddr (AlexA# arr) off = -#ifdef WORDS_BIGENDIAN - narrow32Int# i - where - i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#` - (b2 `uncheckedShiftL#` 16#) `or#` - (b1 `uncheckedShiftL#` 8#) `or#` b0) - b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#))) - b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#))) - b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#))) - b0 = int2Word# (ord# (indexCharOffAddr# arr off')) - off' = off *# 4# -#else - indexInt32OffAddr# arr off -#endif - - - - - -#if __GLASGOW_HASKELL__ < 503 -quickIndex arr i = arr ! i -#else --- GHC >= 503, unsafeAt is available from Data.Array.Base. -quickIndex = unsafeAt -#endif @@ -253,7 +225,7 @@ alexScanUser user input (I# (sc)) - AlexError input' + AlexError input (AlexLastSkip input len, _) -> @@ -279,7 +251,7 @@ alex_scan_tkn user orig_input len input s last_acc = alex_scan_tkn' user orig_input len input s last_acc = let - new_acc = check_accs (alex_accept `quickIndex` (I# (s))) + new_acc = check_accs (alex_accept `unsafeAt` (I# (s))) in new_acc `seq` case alexGetChar input of @@ -289,14 +261,14 @@ alex_scan_tkn' user orig_input len input s last_acc = let - base = alexIndexInt32OffAddr alex_base s + base = alexIndexShortOffAddr alex_base s (I# (ord_c)) = ord c offset = (base +# ord_c) - check = alexIndexInt16OffAddr alex_check offset + check = alexIndexShortOffAddr alex_check offset new_s = if (offset >=# 0#) && (check ==# ord_c) - then alexIndexInt16OffAddr alex_table offset - else alexIndexInt16OffAddr alex_deflt s + then alexIndexShortOffAddr alex_table offset + else alexIndexShortOffAddr alex_deflt s in alex_scan_tkn user orig_input (len +# 1#) new_input new_s new_acc diff --git a/src/GF/Source/ParGF.hs b/src/GF/Source/ParGF.hs index 3f22068bf..d75c29977 100644 --- a/src/GF/Source/ParGF.hs +++ b/src/GF/Source/ParGF.hs @@ -332,186 +332,192 @@ happyIn59 x = unsafeCoerce# x happyOut59 :: (HappyAbsSyn ) -> (Exp) happyOut59 x = unsafeCoerce# x {-# INLINE happyOut59 #-} -happyIn60 :: ([Exp]) -> (HappyAbsSyn ) +happyIn60 :: (Exp) -> (HappyAbsSyn ) happyIn60 x = unsafeCoerce# x {-# INLINE happyIn60 #-} -happyOut60 :: (HappyAbsSyn ) -> ([Exp]) +happyOut60 :: (HappyAbsSyn ) -> (Exp) happyOut60 x = unsafeCoerce# x {-# INLINE happyOut60 #-} -happyIn61 :: (Exps) -> (HappyAbsSyn ) +happyIn61 :: (Exp) -> (HappyAbsSyn ) happyIn61 x = unsafeCoerce# x {-# INLINE happyIn61 #-} -happyOut61 :: (HappyAbsSyn ) -> (Exps) +happyOut61 :: (HappyAbsSyn ) -> (Exp) happyOut61 x = unsafeCoerce# x {-# INLINE happyOut61 #-} -happyIn62 :: (Patt) -> (HappyAbsSyn ) +happyIn62 :: ([Exp]) -> (HappyAbsSyn ) happyIn62 x = unsafeCoerce# x {-# INLINE happyIn62 #-} -happyOut62 :: (HappyAbsSyn ) -> (Patt) +happyOut62 :: (HappyAbsSyn ) -> ([Exp]) happyOut62 x = unsafeCoerce# x {-# INLINE happyOut62 #-} -happyIn63 :: (Patt) -> (HappyAbsSyn ) +happyIn63 :: (Exps) -> (HappyAbsSyn ) happyIn63 x = unsafeCoerce# x {-# INLINE happyIn63 #-} -happyOut63 :: (HappyAbsSyn ) -> (Patt) +happyOut63 :: (HappyAbsSyn ) -> (Exps) happyOut63 x = unsafeCoerce# x {-# INLINE happyOut63 #-} -happyIn64 :: (PattAss) -> (HappyAbsSyn ) +happyIn64 :: (Patt) -> (HappyAbsSyn ) happyIn64 x = unsafeCoerce# x {-# INLINE happyIn64 #-} -happyOut64 :: (HappyAbsSyn ) -> (PattAss) +happyOut64 :: (HappyAbsSyn ) -> (Patt) happyOut64 x = unsafeCoerce# x {-# INLINE happyOut64 #-} -happyIn65 :: (Label) -> (HappyAbsSyn ) +happyIn65 :: (Patt) -> (HappyAbsSyn ) happyIn65 x = unsafeCoerce# x {-# INLINE happyIn65 #-} -happyOut65 :: (HappyAbsSyn ) -> (Label) +happyOut65 :: (HappyAbsSyn ) -> (Patt) happyOut65 x = unsafeCoerce# x {-# INLINE happyOut65 #-} -happyIn66 :: (Sort) -> (HappyAbsSyn ) +happyIn66 :: (Patt) -> (HappyAbsSyn ) happyIn66 x = unsafeCoerce# x {-# INLINE happyIn66 #-} -happyOut66 :: (HappyAbsSyn ) -> (Sort) +happyOut66 :: (HappyAbsSyn ) -> (Patt) happyOut66 x = unsafeCoerce# x {-# INLINE happyOut66 #-} -happyIn67 :: ([PattAss]) -> (HappyAbsSyn ) +happyIn67 :: (PattAss) -> (HappyAbsSyn ) happyIn67 x = unsafeCoerce# x {-# INLINE happyIn67 #-} -happyOut67 :: (HappyAbsSyn ) -> ([PattAss]) +happyOut67 :: (HappyAbsSyn ) -> (PattAss) happyOut67 x = unsafeCoerce# x {-# INLINE happyOut67 #-} -happyIn68 :: (PattAlt) -> (HappyAbsSyn ) +happyIn68 :: (Label) -> (HappyAbsSyn ) happyIn68 x = unsafeCoerce# x {-# INLINE happyIn68 #-} -happyOut68 :: (HappyAbsSyn ) -> (PattAlt) +happyOut68 :: (HappyAbsSyn ) -> (Label) happyOut68 x = unsafeCoerce# x {-# INLINE happyOut68 #-} -happyIn69 :: ([Patt]) -> (HappyAbsSyn ) +happyIn69 :: (Sort) -> (HappyAbsSyn ) happyIn69 x = unsafeCoerce# x {-# INLINE happyIn69 #-} -happyOut69 :: (HappyAbsSyn ) -> ([Patt]) +happyOut69 :: (HappyAbsSyn ) -> (Sort) happyOut69 x = unsafeCoerce# x {-# INLINE happyOut69 #-} -happyIn70 :: ([PattAlt]) -> (HappyAbsSyn ) +happyIn70 :: ([PattAss]) -> (HappyAbsSyn ) happyIn70 x = unsafeCoerce# x {-# INLINE happyIn70 #-} -happyOut70 :: (HappyAbsSyn ) -> ([PattAlt]) +happyOut70 :: (HappyAbsSyn ) -> ([PattAss]) happyOut70 x = unsafeCoerce# x {-# INLINE happyOut70 #-} -happyIn71 :: (Bind) -> (HappyAbsSyn ) +happyIn71 :: ([Patt]) -> (HappyAbsSyn ) happyIn71 x = unsafeCoerce# x {-# INLINE happyIn71 #-} -happyOut71 :: (HappyAbsSyn ) -> (Bind) +happyOut71 :: (HappyAbsSyn ) -> ([Patt]) happyOut71 x = unsafeCoerce# x {-# INLINE happyOut71 #-} -happyIn72 :: ([Bind]) -> (HappyAbsSyn ) +happyIn72 :: (Bind) -> (HappyAbsSyn ) happyIn72 x = unsafeCoerce# x {-# INLINE happyIn72 #-} -happyOut72 :: (HappyAbsSyn ) -> ([Bind]) +happyOut72 :: (HappyAbsSyn ) -> (Bind) happyOut72 x = unsafeCoerce# x {-# INLINE happyOut72 #-} -happyIn73 :: (Decl) -> (HappyAbsSyn ) +happyIn73 :: ([Bind]) -> (HappyAbsSyn ) happyIn73 x = unsafeCoerce# x {-# INLINE happyIn73 #-} -happyOut73 :: (HappyAbsSyn ) -> (Decl) +happyOut73 :: (HappyAbsSyn ) -> ([Bind]) happyOut73 x = unsafeCoerce# x {-# INLINE happyOut73 #-} -happyIn74 :: (TupleComp) -> (HappyAbsSyn ) +happyIn74 :: (Decl) -> (HappyAbsSyn ) happyIn74 x = unsafeCoerce# x {-# INLINE happyIn74 #-} -happyOut74 :: (HappyAbsSyn ) -> (TupleComp) +happyOut74 :: (HappyAbsSyn ) -> (Decl) happyOut74 x = unsafeCoerce# x {-# INLINE happyOut74 #-} -happyIn75 :: (PattTupleComp) -> (HappyAbsSyn ) +happyIn75 :: (TupleComp) -> (HappyAbsSyn ) happyIn75 x = unsafeCoerce# x {-# INLINE happyIn75 #-} -happyOut75 :: (HappyAbsSyn ) -> (PattTupleComp) +happyOut75 :: (HappyAbsSyn ) -> (TupleComp) happyOut75 x = unsafeCoerce# x {-# INLINE happyOut75 #-} -happyIn76 :: ([TupleComp]) -> (HappyAbsSyn ) +happyIn76 :: (PattTupleComp) -> (HappyAbsSyn ) happyIn76 x = unsafeCoerce# x {-# INLINE happyIn76 #-} -happyOut76 :: (HappyAbsSyn ) -> ([TupleComp]) +happyOut76 :: (HappyAbsSyn ) -> (PattTupleComp) happyOut76 x = unsafeCoerce# x {-# INLINE happyOut76 #-} -happyIn77 :: ([PattTupleComp]) -> (HappyAbsSyn ) +happyIn77 :: ([TupleComp]) -> (HappyAbsSyn ) happyIn77 x = unsafeCoerce# x {-# INLINE happyIn77 #-} -happyOut77 :: (HappyAbsSyn ) -> ([PattTupleComp]) +happyOut77 :: (HappyAbsSyn ) -> ([TupleComp]) happyOut77 x = unsafeCoerce# x {-# INLINE happyOut77 #-} -happyIn78 :: (Case) -> (HappyAbsSyn ) +happyIn78 :: ([PattTupleComp]) -> (HappyAbsSyn ) happyIn78 x = unsafeCoerce# x {-# INLINE happyIn78 #-} -happyOut78 :: (HappyAbsSyn ) -> (Case) +happyOut78 :: (HappyAbsSyn ) -> ([PattTupleComp]) happyOut78 x = unsafeCoerce# x {-# INLINE happyOut78 #-} -happyIn79 :: ([Case]) -> (HappyAbsSyn ) +happyIn79 :: (Case) -> (HappyAbsSyn ) happyIn79 x = unsafeCoerce# x {-# INLINE happyIn79 #-} -happyOut79 :: (HappyAbsSyn ) -> ([Case]) +happyOut79 :: (HappyAbsSyn ) -> (Case) happyOut79 x = unsafeCoerce# x {-# INLINE happyOut79 #-} -happyIn80 :: (Equation) -> (HappyAbsSyn ) +happyIn80 :: ([Case]) -> (HappyAbsSyn ) happyIn80 x = unsafeCoerce# x {-# INLINE happyIn80 #-} -happyOut80 :: (HappyAbsSyn ) -> (Equation) +happyOut80 :: (HappyAbsSyn ) -> ([Case]) happyOut80 x = unsafeCoerce# x {-# INLINE happyOut80 #-} -happyIn81 :: ([Equation]) -> (HappyAbsSyn ) +happyIn81 :: (Equation) -> (HappyAbsSyn ) happyIn81 x = unsafeCoerce# x {-# INLINE happyIn81 #-} -happyOut81 :: (HappyAbsSyn ) -> ([Equation]) +happyOut81 :: (HappyAbsSyn ) -> (Equation) happyOut81 x = unsafeCoerce# x {-# INLINE happyOut81 #-} -happyIn82 :: (Altern) -> (HappyAbsSyn ) +happyIn82 :: ([Equation]) -> (HappyAbsSyn ) happyIn82 x = unsafeCoerce# x {-# INLINE happyIn82 #-} -happyOut82 :: (HappyAbsSyn ) -> (Altern) +happyOut82 :: (HappyAbsSyn ) -> ([Equation]) happyOut82 x = unsafeCoerce# x {-# INLINE happyOut82 #-} -happyIn83 :: ([Altern]) -> (HappyAbsSyn ) +happyIn83 :: (Altern) -> (HappyAbsSyn ) happyIn83 x = unsafeCoerce# x {-# INLINE happyIn83 #-} -happyOut83 :: (HappyAbsSyn ) -> ([Altern]) +happyOut83 :: (HappyAbsSyn ) -> (Altern) happyOut83 x = unsafeCoerce# x {-# INLINE happyOut83 #-} -happyIn84 :: (DDecl) -> (HappyAbsSyn ) +happyIn84 :: ([Altern]) -> (HappyAbsSyn ) happyIn84 x = unsafeCoerce# x {-# INLINE happyIn84 #-} -happyOut84 :: (HappyAbsSyn ) -> (DDecl) +happyOut84 :: (HappyAbsSyn ) -> ([Altern]) happyOut84 x = unsafeCoerce# x {-# INLINE happyOut84 #-} -happyIn85 :: ([DDecl]) -> (HappyAbsSyn ) +happyIn85 :: (DDecl) -> (HappyAbsSyn ) happyIn85 x = unsafeCoerce# x {-# INLINE happyIn85 #-} -happyOut85 :: (HappyAbsSyn ) -> ([DDecl]) +happyOut85 :: (HappyAbsSyn ) -> (DDecl) happyOut85 x = unsafeCoerce# x {-# INLINE happyOut85 #-} -happyIn86 :: (OldGrammar) -> (HappyAbsSyn ) +happyIn86 :: ([DDecl]) -> (HappyAbsSyn ) happyIn86 x = unsafeCoerce# x {-# INLINE happyIn86 #-} -happyOut86 :: (HappyAbsSyn ) -> (OldGrammar) +happyOut86 :: (HappyAbsSyn ) -> ([DDecl]) happyOut86 x = unsafeCoerce# x {-# INLINE happyOut86 #-} -happyIn87 :: (Include) -> (HappyAbsSyn ) +happyIn87 :: (OldGrammar) -> (HappyAbsSyn ) happyIn87 x = unsafeCoerce# x {-# INLINE happyIn87 #-} -happyOut87 :: (HappyAbsSyn ) -> (Include) +happyOut87 :: (HappyAbsSyn ) -> (OldGrammar) happyOut87 x = unsafeCoerce# x {-# INLINE happyOut87 #-} -happyIn88 :: (FileName) -> (HappyAbsSyn ) +happyIn88 :: (Include) -> (HappyAbsSyn ) happyIn88 x = unsafeCoerce# x {-# INLINE happyIn88 #-} -happyOut88 :: (HappyAbsSyn ) -> (FileName) +happyOut88 :: (HappyAbsSyn ) -> (Include) happyOut88 x = unsafeCoerce# x {-# INLINE happyOut88 #-} -happyIn89 :: ([FileName]) -> (HappyAbsSyn ) +happyIn89 :: (FileName) -> (HappyAbsSyn ) happyIn89 x = unsafeCoerce# x {-# INLINE happyIn89 #-} -happyOut89 :: (HappyAbsSyn ) -> ([FileName]) +happyOut89 :: (HappyAbsSyn ) -> (FileName) happyOut89 x = unsafeCoerce# x {-# INLINE happyOut89 #-} +happyIn90 :: ([FileName]) -> (HappyAbsSyn ) +happyIn90 x = unsafeCoerce# x +{-# INLINE happyIn90 #-} +happyOut90 :: (HappyAbsSyn ) -> ([FileName]) +happyOut90 x = unsafeCoerce# x +{-# INLINE happyOut90 #-} happyInTok :: Token -> (HappyAbsSyn ) happyInTok x = unsafeCoerce# x {-# INLINE happyInTok #-} @@ -520,21 +526,21 @@ happyOutTok x = unsafeCoerce# x {-# INLINE happyOutTok #-} happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x00\x00\x39\x01\x5a\x05\xb7\x00\x3c\x05\x00\x00\x72\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x05\x42\x01\x72\x01\x20\x05\x00\x00\x75\x05\x25\x05\x1b\x00\xf9\xff\x25\x05\x00\x00\xb7\x00\xd9\x00\x25\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x6c\x05\xff\xff\x6b\x05\x6a\x05\x1a\x02\x69\x05\x00\x00\x00\x00\x00\x00\x00\x00\x19\x05\x00\x00\x78\x00\x0e\x00\xd4\x05\x1e\x05\x00\x00\x16\x05\x9a\x02\x5c\x05\x54\x05\x46\x05\x08\x05\x08\x05\x08\x05\x08\x05\x08\x05\x08\x05\x00\x00\x78\x00\x00\x00\x40\x05\x00\x00\x78\x00\x78\x00\x78\x00\xd6\x05\xb7\x00\x00\x00\xf3\x01\x7e\x00\x69\x00\xf4\x04\xb7\x00\xb7\x00\x2c\x05\xda\x02\x28\x05\xfe\x04\xdf\x04\x7e\x00\xe9\x04\x00\x00\x00\x00\x15\x05\x0b\x05\xf6\xff\x00\x00\x0a\x05\x04\x05\xfc\x04\x47\x02\xe8\x01\x00\x05\x00\x00\x20\x00\xfb\x04\xf6\x04\xb4\x04\x25\x02\xfa\x04\xb7\x00\xec\x00\xec\x00\xec\x00\xb7\x00\xb7\x00\xb7\x00\xf9\x04\xed\x04\x63\x00\xe8\x01\x00\x00\xae\x04\x00\x00\x00\x00\xac\x04\xab\x04\x00\x00\x00\x00\x00\x00\xc7\x01\xc7\x01\xc7\x01\x00\x00\x00\x00\x00\x00\xab\x04\xab\x04\xdd\x04\xb7\x00\x00\x00\x00\x00\x95\x01\xd6\x04\x9e\x04\x00\x00\x00\x00\xb7\x00\xb7\x00\xc8\x04\xb7\x00\xf6\xff\xdb\x04\xc9\x04\x00\x00\x00\x00\x00\x00\x7e\x00\xc0\x04\xcb\x04\xc7\x04\x7b\x04\x7e\x00\x7e\x00\x00\x00\xc5\x04\xb7\x00\x7a\x04\xb7\x00\xb7\x00\xc4\x04\xc3\x04\xbe\x04\xa0\x04\x4a\x02\x00\x00\x00\x00\xa8\x04\x96\x04\xa1\x04\x97\x04\x7e\x00\xb7\x00\x94\x04\x00\x00\x68\x00\x4b\x04\x62\x00\x4b\x04\x4b\x04\x62\x00\x62\x00\x62\x00\x62\x00\x62\x00\x4b\x04\x4b\x04\x62\x00\x97\x00\x4b\x04\x62\x00\x62\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x8f\x04\x00\x00\x00\x00\x55\x04\x4e\x04\x00\x00\x36\x00\x80\x04\x5e\x04\x9e\x00\x00\x00\x42\x04\x70\x04\x62\x04\x1f\x04\x1f\x04\x1f\x04\x1f\x04\x24\x00\x00\x00\x00\x00\x5a\x04\x00\x00\x72\x00\x91\x00\x1c\x04\x00\x00\x59\x04\x52\x04\x00\x00\x47\x04\x44\x04\x62\x00\x62\x00\x00\x00\x43\x04\x3d\x04\x00\x00\x3a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x04\x00\x00\x30\x04\x36\x04\x35\x04\x00\x00\x00\x00\x0e\x01\x34\x04\x00\x00\x00\x00\x00\x00\x32\x04\x00\x00\xe8\x03\x00\x00\x1a\x04\x98\x00\x2d\x04\x00\x00\x7e\x00\xb7\x00\x7e\x00\x00\x00\xd9\x03\x00\x00\xb7\x00\xb7\x00\x22\x04\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\x18\x04\x02\x04\x1b\x04\x2a\x01\x10\x04\x0f\x04\xfa\x03\x00\x00\x7e\x00\xb7\x00\x00\x00\xb0\x03\x7e\x00\x00\x00\x00\x00\xb7\x00\xf2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\xec\x03\x00\x00\xeb\x03\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x03\x7e\x00\x00\x00\x00\x00\x00\x00\x7e\x00\xb7\x00\xb7\x00\xce\x03\xe9\x03\xde\x03\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x74\x01\x9d\x03\x9d\x03\x9d\x03\x9d\x03\xb7\x00\x9d\x03\xdd\x03\x89\x03\x23\x00\x00\x00\x00\x00\xb7\x00\x05\x00\x05\x00\x00\x00\xc0\x03\xb7\x00\xb7\x00\xc9\x03\x05\x00\x00\x00\xa9\x03\xa3\x02\x00\x00\x00\x00\xc7\x02\x00\x00\x00\x00\x7e\x03\x7e\x03\xc6\x03\x1a\x00\x68\x03\xa8\x03\x1a\x00\xae\x03\x63\x03\x00\x00\x8b\x03\x61\x03\x88\x03\x65\x03\x00\x00\x46\x03\x00\x00\x33\x03\x00\x00\x00\x00\x1a\x00\x00\x00\xb7\x00\x7c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x03\x00\x00\x4e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x03\x66\x03\x00\x00\x60\x03\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x21\x01\x00\x00\x00\x00\xb7\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x03\x59\x03\x09\x03\x09\x03\xd2\x02\x09\x03\x09\x03\x74\x01\xb7\x00\x00\x00\x00\x00\xea\x01\x1a\x00\xb1\x02\x00\x00\x00\x00\x53\x03\x1a\x00\x49\x03\xfd\x02\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x02\x00\x00\x00\x00\x00\x00\x40\x03\x44\x03\x00\x00\x00\x00\xb7\x00\xf1\x02\x39\x03\x36\x03\x00\x00\x00\x00\x35\x03\x37\x03\x2d\x03\x29\x03\x00\x00\xdb\x02\xdb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x03\x00\x00\xcd\x02\x30\x01\x1a\x00\x1a\x00\x1e\x03\x0e\x03\x00\x00\x00\x00\x00\x00"# +happyActOffsets = HappyA# "\x00\x00\x98\x01\xf3\x04\x48\x01\xc9\x04\x00\x00\xff\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x05\xb2\x01\x89\x00\xf9\x04\xbe\x04\xf8\x04\x00\x00\x0a\x05\xc1\x04\x5e\x00\x27\x00\xc1\x04\x00\x00\x48\x01\x74\x00\xc1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\x09\x05\xb2\x02\x16\x00\x08\x05\x07\x05\x99\x02\x05\x05\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x04\x00\x00\x28\x00\x0e\x00\x90\x04\xae\x04\x00\x00\xa7\x04\x86\x01\xf7\x04\xf5\x04\xf4\x04\xa9\x04\xa9\x04\xa9\x04\xa9\x04\xa9\x04\xa9\x04\x00\x00\x28\x00\x00\x00\xef\x04\x00\x00\x28\x00\x28\x00\x28\x00\x7f\x07\x48\x01\x00\x00\x15\x00\x75\x00\xfa\x00\xa8\x04\xac\x00\xac\x00\xe9\x04\xeb\x00\xee\x04\xc0\x04\xa5\x04\x1d\x00\x75\x00\xa6\x04\x00\x00\x00\x00\xe2\x04\xe3\x04\x2f\x00\x00\x00\xd6\x04\xd2\x04\xc7\x04\x97\x02\x80\x02\xcf\x04\x00\x00\x2e\x03\xd3\x04\xce\x04\x4b\x02\x7c\x04\xd4\x04\xac\x00\x7d\x01\xac\x00\x7d\x01\x7d\x01\x7d\x01\xac\x00\xd1\x04\xc5\x04\xfa\xff\x32\x02\x00\x00\x84\x04\x00\x00\x00\x00\x76\x04\x74\x04\x00\x00\x19\x02\x19\x02\x19\x02\x00\x00\x19\x02\x7f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x74\x04\xb9\x04\xac\x00\x00\x00\x00\x00\xe4\x01\xb2\x04\x70\x04\x00\x00\x00\x00\xac\x00\xac\x00\xa3\x04\xac\x00\x2f\x00\xb7\x04\xab\x04\x00\x00\x00\x00\x00\x00\x75\x00\xb0\x04\xa4\x04\xb1\x04\x58\x04\x75\x00\x75\x00\x00\x00\x00\x00\xa2\x04\xac\x00\x57\x04\xac\x00\xac\x00\xa1\x04\xa0\x04\x9b\x04\x8e\x04\x00\x03\x00\x00\x00\x00\x0d\x00\x9c\x04\x98\x04\x75\x00\xac\x00\x88\x04\x00\x00\x8d\x00\x3c\x04\x8c\x00\x3c\x04\x3c\x04\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x3c\x04\x3c\x04\x8c\x00\x7a\x00\x3c\x04\x8c\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x7e\x04\x00\x00\x00\x00\x51\x04\x4f\x04\x00\x00\xfc\xff\x80\x04\x5e\x04\x37\x00\x00\x00\x48\x04\x66\x04\x64\x04\x1b\x04\x1b\x04\x1b\x04\x1b\x04\x21\x00\x00\x00\x00\x00\x65\x04\x00\x00\xb5\x00\x4e\x00\x19\x04\x00\x00\x63\x04\x53\x04\x00\x00\x49\x04\x50\x04\x8c\x00\x8c\x00\x00\x00\x46\x04\x37\x04\x00\x00\x44\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x04\x00\x00\x28\x04\x2f\x04\x2d\x04\x00\x00\x00\x00\x88\x01\x2b\x04\x00\x00\x00\x00\x00\x00\x29\x04\x00\x00\xe1\x03\x00\x00\x0e\x04\x97\x00\x17\x04\x00\x00\x75\x00\x75\x00\xac\x00\x00\x00\xcd\x03\x00\x00\xac\x00\xac\x00\x16\x04\x00\x00\x00\x00\x00\x00\xe9\x03\xf0\x03\x0b\x04\xea\x03\x95\x00\xf1\x02\xfc\x03\xfb\x03\xe0\x03\x00\x00\x75\x00\xac\x00\x00\x00\xa7\x03\x75\x00\x00\x00\x00\x00\xac\x00\xd2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\xdf\x03\x00\x00\xd6\x03\x00\x00\x79\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x03\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x03\x75\x00\x00\x00\x00\x00\x00\x00\x75\x00\xac\x00\xac\x00\xb9\x03\xc8\x03\xc4\x03\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\xcb\x01\x7b\x03\x7b\x03\x7b\x03\x7b\x03\xac\x00\x7b\x03\xbe\x03\x74\x03\x20\x00\x00\x00\x00\x00\xac\x00\x3c\x00\x3c\x00\x00\x00\xaf\x03\xac\x00\xac\x00\x9e\x03\x3c\x00\x00\x00\xac\x03\x0e\x02\x00\x00\x00\x00\xcc\x01\x00\x00\x00\x00\x53\x03\x53\x03\x8d\x03\xfd\xff\x41\x03\x7c\x03\xfd\xff\x83\x03\x31\x03\x00\x00\x72\x03\x2d\x03\x6f\x03\x49\x03\x00\x00\x22\x03\x00\x00\x24\x03\x00\x00\x00\x00\xfd\xff\x00\x00\xac\x00\x68\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x03\x00\x00\x33\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x03\x58\x03\x00\x00\x51\x03\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x18\x00\x00\x00\x00\x00\xac\x00\xac\x00\x00\x00\x00\x00\x00\x00\x3a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x45\x03\x39\x03\xf5\x02\xf5\x02\x6d\x03\xf5\x02\xf5\x02\xcb\x01\xac\x00\x00\x00\x00\x00\xa4\x01\xfd\xff\x4c\x03\x00\x00\x00\x00\x32\x03\xfd\xff\x36\x03\xef\x02\x00\x00\x00\x00\x00\x00\x00\x00\xef\x02\x00\x00\x00\x00\x00\x00\x27\x03\x18\x03\x00\x00\x00\x00\xac\x00\xc4\x02\x0c\x03\x21\x03\x00\x00\x00\x00\x12\x03\x0a\x03\xfc\x02\xf8\x02\x00\x00\xc1\x02\xc1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\xb0\x02\xf3\xff\xfd\xff\xfd\xff\xf4\x02\xe8\x02\x00\x00\x00\x00\x00\x00"# happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\x09\x02\xaa\x01\xd4\xff\x78\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x04\x1b\x03\xf5\x01\x0d\x03\x00\x00\x9d\x02\xa0\x00\x0b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x05\x00\x00\x00\x00\xf1\x03\x00\x00\x00\x00\xb1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x02\x04\x00\x00\x00\xf7\x02\xf5\x02\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00\xf0\x02\xea\x02\xe4\x02\xe3\x02\xde\x02\xcc\x02\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x08\x00\x07\x00\xa5\x02\x86\x03\x00\x00\x00\x00\x73\x01\x4f\x05\xbd\x02\x6a\x03\x43\x05\x00\x00\x00\x00\x00\x00\x00\x00\x19\x03\x1e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x2e\x05\x28\x03\xc2\x02\x20\x02\x1a\x05\x07\x05\xf2\x04\x00\x00\x00\x00\x12\x00\x54\x04\x00\x00\x91\x02\x00\x00\x00\x00\xa6\x02\x03\x02\x00\x00\x00\x00\x00\x00\x80\x02\x80\x02\x80\x02\x00\x00\x00\x00\x00\x00\x30\x00\x93\x02\x00\x00\xe5\x04\x00\x00\x00\x00\x79\x02\x00\x00\x8d\x02\x00\x00\x00\x00\x86\x02\xd2\x04\x00\x00\xbd\x04\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x13\x01\xda\x01\x19\x01\x00\x00\x00\x00\xa9\x04\x7e\x01\x9d\x04\x88\x04\x00\x00\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x02\x50\x03\x00\x00\x00\x00\xdb\x00\xcb\x05\xc2\x05\x58\x01\xd2\x05\xbe\x05\xa0\x05\xb6\x05\x9d\x05\x9a\x05\x8c\x02\xae\x01\x12\x05\x8f\x05\x61\x02\x10\x05\x6d\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x44\x02\x00\x00\x00\x00\x41\x02\x28\x02\x30\x02\x27\x02\x78\x02\x00\x00\x00\x00\x00\x00\x00\x00\x77\x03\x00\x00\x26\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x05\xe9\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x00\x00\xde\x01\x00\x00\x00\x00\x20\x03\x00\x00\x00\x00\x5d\x02\x74\x04\xeb\x00\x00\x00\xb9\x01\x00\x00\x34\x03\x43\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x61\x04\x00\x00\xa8\x01\xc5\x01\x00\x00\x00\x00\x4c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\xce\x01\x00\x00\x00\x00\x00\x00\xd1\x00\x3f\x04\x2c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x01\xa1\x00\x14\x00\x2e\x00\x25\x03\x1d\x01\x89\x01\x17\x04\x57\x01\x00\x00\x59\x01\x9f\x01\x00\x00\x00\x00\xf7\x03\xb1\x00\xd3\x01\x00\x00\x00\x00\xdb\x03\xcf\x03\x00\x00\xb3\x01\x00\x00\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x83\x01\x00\x00\x9b\x02\x22\x00\x00\x00\x7f\x02\x00\x00\x7d\x01\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x5d\x01\x00\x00\x00\x00\x5a\x01\x00\x00\x00\x00\x2d\x02\x00\x00\xc2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\x14\x00\x00\x00\x00\x00\x18\x02\xa6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x01\xb0\x00\xcf\x00\xa4\x00\x36\x01\x14\x00\x8c\x03\x00\x00\x00\x00\x00\x00\x16\x01\x65\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x03\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x00\x25\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\xee\x01\x48\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyGotoOffsets = HappyA# "\x58\x01\x3e\x01\xe3\x00\xf1\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x03\xb6\x03\x32\x00\xeb\x02\x00\x00\x28\x03\x30\x00\xe4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x06\x00\x00\x00\x00\x2a\x07\x34\x03\x00\x00\x00\x00\x32\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x02\x04\x00\x00\x00\xa5\x02\xd9\x02\x00\x00\x00\x00\x28\x01\x00\x00\x00\x00\x00\x00\xd7\x02\xd6\x02\xcb\x02\xc6\x02\xb6\x02\xb4\x02\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x08\x00\x07\x00\x9a\x02\x25\x04\x00\x00\x00\x00\x1c\x03\xba\x06\xb1\x02\x09\x04\x9e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x03\xa4\x02\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x04\x00\x00\x00\x00\x83\x06\x0c\x07\x67\x06\x1b\x07\x13\x03\xdf\x01\x4c\x06\x00\x00\x00\x00\x2d\x00\xf8\x01\x00\x00\x90\x01\x00\x00\x00\x00\x95\x02\x56\x01\x00\x00\x4d\x04\x4d\x04\x4d\x04\x00\x00\x4d\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x93\x02\x00\x00\x30\x06\x00\x00\x00\x00\xc2\x03\x00\x00\x75\x02\x00\x00\x00\x00\x46\x02\x15\x06\x00\x00\xf9\x05\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x03\x00\x00\x00\x00\x00\x00\x30\x01\x10\x04\x12\x02\x00\x00\x00\x00\x00\x00\xde\x05\x26\x01\xc2\x05\xa7\x05\x00\x00\x00\x00\x00\x00\x00\x00\x06\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x01\xed\x03\x00\x00\x00\x00\x09\x02\x7e\x01\x77\x07\x2e\x01\x29\x07\x70\x07\x5e\x07\x57\x07\x55\x07\x51\x07\x70\x02\x08\x02\x4f\x07\x19\x07\x64\x02\x49\x07\x30\x07\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x00\x00\x00\x00\x51\x02\x00\x00\x00\x00\x60\x02\xf7\x01\x4f\x02\x45\x02\x2c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x02\x00\x00\x2e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x03\x52\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x01\x00\x00\x00\x00\x25\x02\x00\x00\x00\x00\x35\x01\x00\x00\x00\x00\x06\x01\xbc\x03\x8b\x05\x00\x00\x16\x02\x00\x00\xd1\x03\xf0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x70\x05\x00\x00\x0b\x02\xdb\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x77\x01\x00\x00\x00\x00\x00\x00\xab\x01\x39\x05\x1d\x05\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x01\x65\x01\x11\x00\x93\x01\x42\x01\xee\x00\xfd\x01\x02\x05\x62\x02\x00\x00\xa8\x01\x5c\x01\x00\x00\x00\x00\xe6\x04\x0e\x01\x9d\x02\x00\x00\x00\x00\xcb\x04\xaf\x04\x00\x00\xc0\x02\x00\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xa7\x01\x00\x00\x61\x02\xc9\x00\x00\x00\x5e\x02\x00\x00\x74\x01\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\xa9\x01\x00\x00\x00\x00\x4c\x01\x00\x00\x00\x00\xde\x01\x00\x00\x94\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x03\x00\x00\x11\x00\x00\x00\x00\x00\xac\x02\x78\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\xf1\x00\xc8\x00\xd6\x00\xa8\x00\x11\x00\x5d\x04\x00\x00\x00\x00\x00\x00\xfe\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\xbf\x02\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x04\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\x8a\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xf5\xff\xd0\xff\x0f\xff\x00\x00\x00\x00\xfb\xff\x80\xff\x7b\xff\x7c\xff\x7a\xff\x6f\xff\x6b\xff\x61\xff\x5c\xff\x51\xff\x00\x00\x7d\xff\x00\x00\x83\xff\x2c\xff\x00\x00\x00\x00\x79\xff\x25\xff\x2c\xff\x00\x00\x3a\xff\x38\xff\x37\xff\x39\xff\x3b\xff\x00\x00\x77\xff\x00\x00\x83\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xf9\xff\xf8\xff\xf7\xff\x00\x00\xdc\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xff\x00\x00\xd0\xff\xf4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xff\x0c\xff\x0d\xff\x00\x00\x0e\xff\x00\x00\x00\x00\x00\x00\x10\xff\x50\xff\x80\xff\x00\x00\x83\xff\x00\x00\x00\x00\x50\xff\x00\x00\x8c\xff\x00\x00\x82\xff\x00\x00\x83\xff\x1b\xff\x00\x00\x60\xff\x2e\xff\x2b\xff\x00\x00\x2c\xff\x2d\xff\x27\xff\x24\xff\x00\x00\x00\x00\x4d\xff\x00\x00\x78\xff\x80\xff\x00\x00\x00\x00\x00\x00\x8c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x00\x00\x00\x00\x62\xff\x83\xff\x3d\xff\x6e\xff\x00\x00\x83\xff\x56\xff\x57\xff\x58\xff\x5e\xff\x5f\xff\x5d\xff\x59\xff\x74\xff\x7f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x70\xff\x75\xff\x4d\xff\x00\x00\x00\x00\x7e\xff\x73\xff\x25\xff\x00\x00\x00\x00\x00\x00\x2c\xff\x00\x00\x4a\xff\x47\xff\x45\xff\x46\xff\x32\xff\x00\x00\x1a\xff\x00\x00\x36\xff\x00\x00\x22\xff\x4b\xff\x00\x00\x00\x00\x83\xff\x00\x00\x00\x00\x00\x00\x4f\xff\x00\x00\x00\x00\x8c\xff\x3f\xff\x33\xff\x30\xff\x00\x00\x1e\xff\x00\x00\x00\x00\x50\xff\x00\x00\xdb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\xff\x0a\xff\x09\xff\x07\xff\x08\xff\x00\x00\xe6\xff\xe5\xff\x00\x00\x00\x00\xe7\xff\xd9\xff\x00\x00\x00\x00\xc8\xff\xf1\xff\xd5\xff\x00\x00\xca\xff\x00\x00\xcb\xff\x00\x00\x00\x00\x00\x00\x06\xff\x8a\xff\x00\x00\xaf\xff\x88\xff\x00\x00\x00\x00\xbc\xff\x00\x00\x00\x00\xb3\xff\x88\xff\x00\x00\x00\x00\x00\x00\xb1\xff\xa1\xff\x00\x00\xbb\xff\x00\x00\xba\xff\xb2\xff\xb8\xff\xb9\xff\xb7\xff\x00\x00\xc0\xff\x00\x00\x00\x00\x00\x00\xb4\xff\xbe\xff\x8c\xff\x00\x00\xbf\xff\xbd\xff\x12\xff\x00\x00\xc1\xff\x00\x00\x65\xff\x00\x00\x4a\xff\x00\x00\x69\xff\x00\x00\x00\x00\x00\x00\x41\xff\x00\x00\x63\xff\x50\xff\x17\xff\x86\xff\x85\xff\x81\xff\x54\xff\x00\x00\x26\xff\x21\xff\x00\x00\x00\x00\x8c\xff\x00\x00\x35\xff\x00\x00\x52\xff\x1b\xff\x00\x00\x31\xff\x00\x00\x00\x00\x2a\xff\x5b\xff\x00\x00\x00\x00\x27\xff\x23\xff\x6c\xff\x76\xff\x4c\xff\x00\x00\x72\xff\x00\x00\x8b\xff\x00\x00\x3c\xff\x8c\xff\x53\xff\x6d\xff\x29\xff\x71\xff\x5a\xff\x00\x00\x48\xff\x1c\xff\x19\xff\x44\xff\x36\xff\x00\x00\x49\xff\x42\xff\x43\xff\x22\xff\x00\x00\x00\x00\x00\x00\x16\xff\x00\x00\x4e\xff\x48\xff\x2f\xff\x1f\xff\x1d\xff\x68\xff\x67\xff\x12\xff\x9b\xff\xad\xff\x97\xff\xa6\xff\x91\xff\x00\x00\x00\x00\x99\xff\x00\x00\x95\xff\x8f\xff\xb5\xff\xb6\xff\x00\x00\x00\x00\x93\xff\xae\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\xd3\xff\x00\x00\xce\xff\xe3\xff\xe4\xff\xc8\xff\xdd\xff\xde\xff\xcb\xff\xda\xff\x00\x00\xd8\xff\x00\x00\x00\x00\xd8\xff\x00\x00\x00\x00\xe0\xff\xd7\xff\x00\x00\x00\x00\x00\x00\xdc\xff\x00\x00\xc9\xff\x00\x00\xcd\xff\xcc\xff\x00\x00\x9c\xff\x00\x00\xc5\xff\xc4\xff\x89\xff\x92\xff\x87\xff\x9f\xff\x12\xff\x8e\xff\xa3\xff\x00\x00\x94\xff\xdc\xff\x98\xff\xaa\xff\x9e\xff\x90\xff\xa8\xff\xa5\xff\xa9\xff\x00\x00\x96\xff\x13\xff\x11\xff\x2c\xff\x9a\xff\x00\x00\x40\xff\x64\xff\x17\xff\x00\x00\x84\xff\x55\xff\x20\xff\x3e\xff\x34\xff\x66\xff\x18\xff\x15\xff\xac\xff\x00\x00\xa6\xff\x00\x00\x00\x00\x00\x00\x8f\xff\xa0\xff\x00\x00\xc3\xff\xe2\xff\x00\x00\xd8\xff\x00\x00\xd4\xff\xc7\xff\x00\x00\xd8\xff\x00\x00\xef\xff\xd6\xff\xc6\xff\xe1\xff\xdf\xff\x00\x00\xd2\xff\xc2\xff\x8d\xff\x00\x00\x00\x00\xa7\xff\xa4\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\xa2\xff\x00\x00\x00\x00\xee\xff\x00\x00\xf2\xff\xef\xff\x00\x00\xd1\xff\x14\xff\xab\xff\xeb\xff\xf0\xff\xed\xff\xec\xff\xea\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xff\xe8\xff"# +happyDefActions = HappyA# "\xf5\xff\xd0\xff\x0d\xff\x00\x00\x00\x00\xfb\xff\x80\xff\x7b\xff\x7c\xff\x7a\xff\x6f\xff\x6b\xff\x61\xff\x5c\xff\x4e\xff\x4f\xff\x00\x00\x5a\xff\x7d\xff\x00\x00\x83\xff\x2a\xff\x00\x00\x00\x00\x79\xff\x23\xff\x2a\xff\x00\x00\x35\xff\x33\xff\x32\xff\x34\xff\x36\xff\x00\x00\x77\xff\x00\x00\x00\x00\x83\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xf9\xff\xf8\xff\xf7\xff\x00\x00\xdc\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xff\x00\x00\xd0\xff\xf4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xff\x0a\xff\x0b\xff\x00\x00\x0c\xff\x00\x00\x00\x00\x00\x00\x0e\xff\x4d\xff\x80\xff\x00\x00\x83\xff\x00\x00\x00\x00\x4d\xff\x00\x00\x8c\xff\x00\x00\x82\xff\x00\x00\x83\xff\x00\x00\x19\xff\x00\x00\x60\xff\x2c\xff\x29\xff\x00\x00\x2a\xff\x2b\xff\x25\xff\x22\xff\x00\x00\x00\x00\x4a\xff\x00\x00\x78\xff\x80\xff\x00\x00\x00\x00\x00\x00\x8c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x00\x00\x00\x00\x62\xff\x83\xff\x38\xff\x6e\xff\x00\x00\x83\xff\x55\xff\x5e\xff\x5f\xff\x5d\xff\x59\xff\x5c\xff\x4e\xff\x5b\xff\x56\xff\x74\xff\x7f\xff\x00\x00\x00\x00\x80\xff\x00\x00\x70\xff\x75\xff\x4a\xff\x00\x00\x00\x00\x7e\xff\x73\xff\x23\xff\x00\x00\x00\x00\x00\x00\x2a\xff\x00\x00\x47\xff\x44\xff\x42\xff\x43\xff\x2e\xff\x00\x00\x18\xff\x00\x00\x31\xff\x00\x00\x20\xff\x48\xff\x50\xff\x00\x00\x00\x00\x83\xff\x00\x00\x00\x00\x00\x00\x4c\xff\x00\x00\x00\x00\x8c\xff\x3c\xff\x3a\xff\x00\x00\x1c\xff\x00\x00\x00\x00\x4d\xff\x00\x00\xdb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\xff\x08\xff\x07\xff\x05\xff\x06\xff\x00\x00\xe6\xff\xe5\xff\x00\x00\x00\x00\xe7\xff\xd9\xff\x00\x00\x00\x00\xc8\xff\xf1\xff\xd5\xff\x00\x00\xca\xff\x00\x00\xcb\xff\x00\x00\x00\x00\x00\x00\x04\xff\x8a\xff\x00\x00\xaf\xff\x88\xff\x00\x00\x00\x00\xbc\xff\x00\x00\x00\x00\xb3\xff\x88\xff\x00\x00\x00\x00\x00\x00\xb1\xff\xa1\xff\x00\x00\xbb\xff\x00\x00\xba\xff\xb2\xff\xb8\xff\xb9\xff\xb7\xff\x00\x00\xc0\xff\x00\x00\x00\x00\x00\x00\xb4\xff\xbe\xff\x8c\xff\x00\x00\xbf\xff\xbd\xff\x10\xff\x00\x00\xc1\xff\x00\x00\x65\xff\x00\x00\x47\xff\x00\x00\x69\xff\x00\x00\x00\x00\x00\x00\x3e\xff\x00\x00\x63\xff\x4d\xff\x15\xff\x86\xff\x85\xff\x81\xff\x53\xff\x00\x00\x24\xff\x1f\xff\x00\x00\x00\x00\x8c\xff\x00\x00\x30\xff\x00\x00\x51\xff\x19\xff\x00\x00\x2d\xff\x00\x00\x00\x00\x28\xff\x58\xff\x00\x00\x00\x00\x25\xff\x21\xff\x6c\xff\x76\xff\x49\xff\x00\x00\x72\xff\x00\x00\x8b\xff\x00\x00\x37\xff\x8c\xff\x52\xff\x6d\xff\x27\xff\x71\xff\x57\xff\x00\x00\x45\xff\x1a\xff\x17\xff\x41\xff\x31\xff\x00\x00\x46\xff\x3f\xff\x40\xff\x20\xff\x00\x00\x00\x00\x00\x00\x14\xff\x00\x00\x4b\xff\x45\xff\x1d\xff\x3b\xff\x1b\xff\x68\xff\x67\xff\x10\xff\x9b\xff\xad\xff\x97\xff\xa6\xff\x91\xff\x00\x00\x00\x00\x99\xff\x00\x00\x95\xff\x8f\xff\xb5\xff\xb6\xff\x00\x00\x00\x00\x93\xff\xae\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\xd3\xff\x00\x00\xce\xff\xe3\xff\xe4\xff\xc8\xff\xdd\xff\xde\xff\xcb\xff\xda\xff\x00\x00\xd8\xff\x00\x00\x00\x00\xd8\xff\x00\x00\x00\x00\xe0\xff\xd7\xff\x00\x00\x00\x00\x00\x00\xdc\xff\x00\x00\xc9\xff\x00\x00\xcd\xff\xcc\xff\x00\x00\x9c\xff\x00\x00\xc5\xff\xc4\xff\x89\xff\x92\xff\x87\xff\x9f\xff\x10\xff\x8e\xff\xa3\xff\x00\x00\x94\xff\xdc\xff\x98\xff\xaa\xff\x9e\xff\x90\xff\xa8\xff\xa5\xff\xa9\xff\x00\x00\x96\xff\x11\xff\x0f\xff\x2a\xff\x9a\xff\x00\x00\x3d\xff\x64\xff\x15\xff\x00\x00\x84\xff\x54\xff\x1e\xff\x39\xff\x2f\xff\x66\xff\x16\xff\x13\xff\xac\xff\x00\x00\xa6\xff\x00\x00\x00\x00\x00\x00\x8f\xff\xa0\xff\x00\x00\xc3\xff\xe2\xff\x00\x00\xd8\xff\x00\x00\xd4\xff\xc7\xff\x00\x00\xd8\xff\x00\x00\xef\xff\xd6\xff\xc6\xff\xe1\xff\xdf\xff\x00\x00\xd2\xff\xc2\xff\x8d\xff\x00\x00\x00\x00\xa7\xff\xa4\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\xa2\xff\x00\x00\x00\x00\xee\xff\x00\x00\xf2\xff\xef\xff\x00\x00\xd1\xff\x12\xff\xab\xff\xeb\xff\xf0\xff\xed\xff\xec\xff\xea\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xff\xe8\xff"# happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x00\x00\x03\x00\x02\x00\x00\x00\x0c\x00\x02\x00\x00\x00\x00\x00\x02\x00\x02\x00\x00\x00\x00\x00\x02\x00\x02\x00\x01\x00\x0b\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x03\x00\x05\x00\x05\x00\x00\x00\x00\x00\x4f\x00\x50\x00\x00\x00\x0b\x00\x07\x00\x05\x00\x05\x00\x0a\x00\x10\x00\x11\x00\x12\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x17\x00\x0c\x00\x14\x00\x0b\x00\x1b\x00\x16\x00\x17\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x09\x00\x25\x00\x01\x00\x4c\x00\x28\x00\x30\x00\x4c\x00\x2b\x00\x4e\x00\x2b\x00\x2e\x00\x1c\x00\x4c\x00\x3a\x00\x2b\x00\x33\x00\x3b\x00\x37\x00\x4c\x00\x51\x00\x52\x00\x26\x00\x51\x00\x52\x00\x3e\x00\x51\x00\x51\x00\x3f\x00\x2b\x00\x51\x00\x51\x00\x43\x00\x44\x00\x52\x00\x4d\x00\x49\x00\x4a\x00\x49\x00\x0b\x00\x4c\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x0b\x00\x05\x00\x4c\x00\x4c\x00\x40\x00\x41\x00\x0b\x00\x0b\x00\x03\x00\x4c\x00\x05\x00\x42\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x47\x00\x19\x00\x1c\x00\x17\x00\x03\x00\x4c\x00\x05\x00\x12\x00\x0d\x00\x0e\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1b\x00\x25\x00\x00\x00\x12\x00\x28\x00\x00\x00\x02\x00\x2b\x00\x1d\x00\x00\x00\x2e\x00\x07\x00\x1b\x00\x07\x00\x03\x00\x33\x00\x05\x00\x08\x00\x09\x00\x00\x00\x00\x00\x0b\x00\x11\x00\x00\x00\x13\x00\x0e\x00\x14\x00\x3f\x00\x0b\x00\x12\x00\x0d\x00\x43\x00\x44\x00\x4c\x00\x4c\x00\x00\x00\x00\x00\x49\x00\x1b\x00\x4c\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x1a\x00\x05\x00\x26\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0b\x00\x2c\x00\x4c\x00\x24\x00\x4e\x00\x10\x00\x11\x00\x12\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x17\x00\x40\x00\x41\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x25\x00\x2c\x00\x2d\x00\x28\x00\x40\x00\x41\x00\x2b\x00\x4c\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x19\x00\x4b\x00\x33\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x17\x00\x05\x00\x04\x00\x0f\x00\x1b\x00\x1a\x00\x3f\x00\x0b\x00\x0a\x00\x00\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x24\x00\x49\x00\x08\x00\x09\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x37\x00\x38\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x02\x00\x25\x00\x00\x00\x00\x00\x28\x00\x44\x00\x00\x00\x46\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x37\x00\x38\x00\x03\x00\x4c\x00\x05\x00\x11\x00\x3d\x00\x13\x00\x3f\x00\x3f\x00\x0b\x00\x0c\x00\x04\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x49\x00\x00\x00\x4e\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x2b\x00\x2b\x00\x22\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x03\x00\x29\x00\x05\x00\x00\x00\x28\x00\x08\x00\x39\x00\x39\x00\x0b\x00\x3c\x00\x3c\x00\x37\x00\x38\x00\x10\x00\x11\x00\x12\x00\x37\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x3e\x00\x44\x00\x2e\x00\x46\x00\x2a\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x2d\x00\x49\x00\x4a\x00\x30\x00\x28\x00\x3b\x00\x0f\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x1f\x00\x05\x00\x22\x00\x09\x00\x25\x00\x00\x00\x00\x00\x0b\x00\x27\x00\x29\x00\x2b\x00\x00\x00\x10\x00\x11\x00\x12\x00\x15\x00\x16\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x03\x00\x15\x00\x05\x00\x0e\x00\x28\x00\x10\x00\x2b\x00\x00\x00\x0b\x00\x2e\x00\x2f\x00\x16\x00\x17\x00\x10\x00\x11\x00\x12\x00\x00\x00\x2b\x00\x37\x00\x38\x00\x2e\x00\x2f\x00\x00\x00\x4e\x00\x3d\x00\x07\x00\x3f\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x47\x00\x48\x00\x4a\x00\x28\x00\x14\x00\x20\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2a\x00\x03\x00\x18\x00\x05\x00\x1f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0b\x00\x00\x00\x00\x00\x27\x00\x23\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x2c\x00\x2d\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x03\x00\x02\x00\x05\x00\x00\x00\x28\x00\x06\x00\x1d\x00\x1e\x00\x0b\x00\x21\x00\x00\x00\x03\x00\x02\x00\x10\x00\x11\x00\x12\x00\x28\x00\x37\x00\x38\x00\x0b\x00\x2c\x00\x2d\x00\x13\x00\x3d\x00\x00\x00\x3f\x00\x37\x00\x38\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x47\x00\x48\x00\x05\x00\x06\x00\x28\x00\x37\x00\x38\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x4e\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x04\x00\x10\x00\x11\x00\x12\x00\x00\x00\x2b\x00\x0a\x00\x00\x00\x2e\x00\x2f\x00\x0e\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x16\x00\x17\x00\x13\x00\x00\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x03\x00\x04\x00\x05\x00\x30\x00\x31\x00\x32\x00\x3b\x00\x0a\x00\x0e\x00\x12\x00\x10\x00\x0e\x00\x0f\x00\x42\x00\x3b\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x18\x00\x4b\x00\x4c\x00\x1b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x42\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x13\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x11\x00\x00\x00\x13\x00\x00\x00\x37\x00\x38\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x3d\x00\x00\x00\x3f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x37\x00\x38\x00\x47\x00\x48\x00\x37\x00\x01\x00\x3d\x00\x30\x00\x3f\x00\x00\x00\x11\x00\x3e\x00\x13\x00\x36\x00\x30\x00\x31\x00\x47\x00\x48\x00\x3b\x00\x04\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x3b\x00\x2b\x00\x00\x00\x19\x00\x2e\x00\x2f\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2d\x00\x42\x00\x43\x00\x30\x00\x45\x00\x00\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x0b\x00\x30\x00\x0d\x00\x32\x00\x04\x00\x26\x00\x3b\x00\x28\x00\x29\x00\x2a\x00\x02\x00\x2c\x00\x00\x00\x42\x00\x43\x00\x07\x00\x45\x00\x00\x00\x00\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x3a\x00\x52\x00\x3c\x00\x3d\x00\x3e\x00\x00\x00\x40\x00\x30\x00\x31\x00\x32\x00\x00\x00\x45\x00\x46\x00\x26\x00\x48\x00\x28\x00\x29\x00\x2a\x00\x3b\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0d\x00\x0f\x00\x34\x00\x35\x00\x36\x00\x37\x00\x21\x00\x00\x00\x3a\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x28\x00\x40\x00\x46\x00\x06\x00\x2c\x00\x2d\x00\x45\x00\x46\x00\x00\x00\x48\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x06\x00\x00\x00\x05\x00\x4c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x3b\x00\x06\x00\x06\x00\x04\x00\x4d\x00\x40\x00\x41\x00\x42\x00\x1d\x00\x1e\x00\x2b\x00\x01\x00\x06\x00\x2e\x00\x2f\x00\x4c\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x3b\x00\x37\x00\x30\x00\x31\x00\x32\x00\x40\x00\x41\x00\x42\x00\x3e\x00\x0c\x00\x07\x00\x03\x00\x02\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0f\x00\x42\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0e\x00\x2e\x00\x0f\x00\x02\x00\x4c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4b\x00\x42\x00\x2e\x00\x0c\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x42\x00\x4c\x00\x37\x00\x4c\x00\x02\x00\x08\x00\x42\x00\x0b\x00\x4c\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x42\x00\x03\x00\x4c\x00\x02\x00\x0c\x00\x37\x00\x42\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3e\x00\x4c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x3b\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x42\x00\x4c\x00\x01\x00\x1d\x00\x4c\x00\x06\x00\x04\x00\x04\x00\x04\x00\x00\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x3b\x00\x04\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x42\x00\x13\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x01\x00\x42\x00\x02\x00\x30\x00\x31\x00\x13\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2b\x00\x42\x00\x3b\x00\x2e\x00\x2f\x00\x06\x00\x0a\x00\x2e\x00\x02\x00\x4c\x00\x0c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x3b\x00\x01\x00\x4c\x00\x01\x00\x01\x00\x07\x00\x02\x00\x42\x00\x01\x00\x00\x00\x02\x00\x37\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3e\x00\x02\x00\x02\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0a\x00\x3b\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x42\x00\x01\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2b\x00\x3b\x00\x4c\x00\x2e\x00\x2f\x00\x4c\x00\x0a\x00\x00\x00\x42\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x09\x00\x3b\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x42\x00\x24\x00\x03\x00\x30\x00\x18\x00\x38\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x38\x00\x42\x00\x3b\x00\x23\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x07\x00\x4c\x00\x04\x00\x2c\x00\x2d\x00\x04\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x01\x00\x42\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x18\x00\x3b\x00\x10\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x42\x00\x0f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x3b\x00\x01\x00\x01\x00\x4c\x00\x4c\x00\x08\x00\x04\x00\x42\x00\x04\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0e\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x03\x00\x42\x00\x18\x00\x30\x00\x0c\x00\x06\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x42\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x3b\x00\x4d\x00\x4c\x00\x0e\x00\x03\x00\x07\x00\x04\x00\x42\x00\x4c\x00\x06\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0c\x00\x3b\x00\x0a\x00\x13\x00\x00\x00\x07\x00\x00\x00\x08\x00\x42\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0a\x00\x3b\x00\x38\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x42\x00\x18\x00\x01\x00\x18\x00\x4c\x00\x2e\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x23\x00\x42\x00\x23\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x2c\x00\x2d\x00\x2c\x00\x2d\x00\x4c\x00\x01\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x42\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x3b\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x42\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x52\x00\x3b\x00\x4c\x00\x52\x00\x03\x00\x03\x00\x03\x00\x03\x00\x42\x00\x4c\x00\x52\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x08\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x0e\x00\x42\x00\x14\x00\x30\x00\x4c\x00\x2f\x00\x3b\x00\xff\xff\x00\x00\x36\x00\xff\xff\x00\x00\xff\xff\x42\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x3b\x00\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x42\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\xff\xff\xff\xff\x21\x00\xff\xff\x18\x00\x3b\x00\x28\x00\x18\x00\x00\x00\x28\x00\x2c\x00\x2d\x00\x42\x00\x2c\x00\x2d\x00\x23\x00\x00\x00\xff\xff\x23\x00\x21\x00\x00\x00\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x28\x00\x2c\x00\x2d\x00\x00\x00\x2c\x00\x2d\x00\x18\x00\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\x18\x00\xff\xff\xff\xff\x23\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x2c\x00\x2d\x00\xff\xff\x23\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x2c\x00\x2d\x00\xff\xff\x1b\x00\x2c\x00\x2d\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\x25\x00\x24\x00\xff\xff\xff\xff\x27\x00\x26\x00\x2b\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x41\x00\x40\x00\xff\xff\xff\xff\xff\xff\x46\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# +happyCheck = HappyA# "\xff\xff\x00\x00\x05\x00\x02\x00\x00\x00\x09\x00\x02\x00\x00\x00\x00\x00\x02\x00\x02\x00\x00\x00\x00\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1c\x00\x19\x00\x03\x00\x03\x00\x00\x00\x03\x00\x0f\x00\x05\x00\x00\x00\x00\x00\x0b\x00\x2e\x00\x0b\x00\x0b\x00\x0c\x00\x05\x00\x05\x00\x1a\x00\x10\x00\x11\x00\x12\x00\x0e\x00\x00\x00\x00\x00\x3b\x00\x11\x00\x00\x00\x13\x00\x00\x00\x0c\x00\x02\x00\x0d\x00\x0e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1d\x00\x1e\x00\x42\x00\x13\x00\x28\x00\x30\x00\x0b\x00\x47\x00\x0d\x00\x1d\x00\x4c\x00\x0b\x00\x4c\x00\x4c\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3e\x00\x02\x00\x41\x00\x42\x00\x52\x00\x53\x00\x07\x00\x52\x00\x53\x00\x0b\x00\x52\x00\x52\x00\x41\x00\x42\x00\x52\x00\x52\x00\x4e\x00\x52\x00\x03\x00\x4c\x00\x05\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x0b\x00\x3d\x00\x4e\x00\x4c\x00\x4c\x00\x10\x00\x11\x00\x12\x00\x41\x00\x42\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\x19\x00\x03\x00\x1b\x00\x05\x00\x4c\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4b\x00\x25\x00\x39\x00\x0b\x00\x28\x00\x12\x00\x4c\x00\x2b\x00\x00\x00\x40\x00\x2e\x00\x19\x00\x00\x00\x1b\x00\x1b\x00\x33\x00\x09\x00\x0c\x00\x0a\x00\x4a\x00\x4b\x00\x0b\x00\x0b\x00\x4c\x00\x03\x00\x06\x00\x05\x00\x3f\x00\x15\x00\x16\x00\x26\x00\x43\x00\x44\x00\x1a\x00\x0f\x00\x0e\x00\x2c\x00\x49\x00\x00\x00\x12\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x01\x00\x05\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0b\x00\x03\x00\x2b\x00\x05\x00\x00\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x4c\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x19\x00\x4c\x00\x12\x00\x20\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1b\x00\x25\x00\x2a\x00\x4a\x00\x28\x00\x00\x00\x00\x00\x2b\x00\x4c\x00\x4c\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x00\x00\x19\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3f\x00\x39\x00\x02\x00\x00\x00\x43\x00\x44\x00\x00\x00\x07\x00\x40\x00\x2b\x00\x49\x00\x16\x00\x17\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x00\x00\x05\x00\x2b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x10\x00\x11\x00\x12\x00\x2b\x00\x00\x00\x11\x00\x22\x00\x13\x00\x0f\x00\x19\x00\x39\x00\x3a\x00\x3b\x00\x29\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3c\x00\x25\x00\x39\x00\x3f\x00\x28\x00\x48\x00\x49\x00\x2b\x00\x00\x00\x40\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x00\x00\x07\x00\x00\x00\x4a\x00\x4b\x00\x50\x00\x51\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3f\x00\x2c\x00\x2d\x00\x14\x00\x43\x00\x44\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x49\x00\x4f\x00\x07\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x00\x00\x05\x00\x48\x00\x49\x00\x22\x00\x2b\x00\x14\x00\x0b\x00\x2e\x00\x2f\x00\x00\x00\x29\x00\x10\x00\x11\x00\x12\x00\x2b\x00\x00\x00\x05\x00\x06\x00\x1d\x00\x1e\x00\x19\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3c\x00\x25\x00\x39\x00\x3f\x00\x28\x00\x48\x00\x49\x00\x2b\x00\x00\x00\x40\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x20\x00\x04\x00\x00\x00\x1a\x00\x03\x00\x2b\x00\x05\x00\x0a\x00\x2e\x00\x2f\x00\x2a\x00\x3f\x00\x0b\x00\x24\x00\x02\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x00\x00\x49\x00\x0a\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1b\x00\x1c\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x25\x00\x25\x00\x26\x00\x28\x00\x02\x00\x00\x00\x00\x00\x2b\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1c\x00\x39\x00\x3a\x00\x3b\x00\x2d\x00\x13\x00\x03\x00\x30\x00\x05\x00\x0f\x00\x26\x00\x08\x00\x2b\x00\x3f\x00\x0b\x00\x2e\x00\x2f\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x2d\x00\x49\x00\x1f\x00\x30\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x27\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x0b\x00\x52\x00\x0d\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x39\x00\x3a\x00\x3b\x00\x03\x00\x15\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x45\x00\x13\x00\x47\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x28\x00\x16\x00\x17\x00\x30\x00\x31\x00\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x3e\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1a\x00\x0b\x00\x00\x00\x4f\x00\x1f\x00\x30\x00\x10\x00\x11\x00\x12\x00\x00\x00\x24\x00\x00\x00\x27\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x3e\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x30\x00\x13\x00\x32\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x39\x00\x3a\x00\x3b\x00\x03\x00\x00\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x45\x00\x39\x00\x47\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x11\x00\x00\x00\x13\x00\x11\x00\x28\x00\x13\x00\x00\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x1b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x3e\x00\x05\x00\x00\x00\x25\x00\x09\x00\x43\x00\x44\x00\x0b\x00\x46\x00\x2b\x00\x08\x00\x09\x00\x10\x00\x11\x00\x12\x00\x00\x00\x15\x00\x16\x00\x01\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x00\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x0e\x00\x02\x00\x10\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x0d\x00\x19\x00\x00\x00\x03\x00\x00\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x21\x00\x00\x00\x00\x00\x28\x00\x10\x00\x11\x00\x12\x00\x28\x00\x00\x00\x08\x00\x09\x00\x2c\x00\x2d\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x18\x00\x00\x00\x28\x00\x0f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x23\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x3e\x00\x00\x00\x2c\x00\x2d\x00\x06\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x46\x00\x05\x00\x4c\x00\x4d\x00\x06\x00\x0a\x00\x04\x00\x01\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x04\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0a\x00\x00\x00\x02\x00\x4c\x00\x0e\x00\x0f\x00\x04\x00\x4d\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x06\x00\x01\x00\x1a\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x06\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x43\x00\x00\x00\x07\x00\x2b\x00\x01\x00\x0a\x00\x2e\x00\x2f\x00\x4c\x00\x4c\x00\x4d\x00\x0c\x00\x39\x00\x07\x00\x4c\x00\x14\x00\x30\x00\x31\x00\x32\x00\x40\x00\x2b\x00\x03\x00\x0f\x00\x2e\x00\x2f\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x04\x00\x3e\x00\x00\x00\x02\x00\x0e\x00\x39\x00\x3a\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x2b\x00\x00\x00\x2e\x00\x2e\x00\x2f\x00\x48\x00\x49\x00\x3e\x00\x0f\x00\x39\x00\x0f\x00\x02\x00\x43\x00\x44\x00\x4b\x00\x46\x00\x40\x00\x4c\x00\x04\x00\x26\x00\x21\x00\x28\x00\x29\x00\x2a\x00\x2e\x00\x2c\x00\x4c\x00\x28\x00\x0c\x00\x0a\x00\x4c\x00\x2c\x00\x2d\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x02\x00\x3a\x00\x0b\x00\x3c\x00\x3d\x00\x3e\x00\x2b\x00\x40\x00\x4c\x00\x2e\x00\x2f\x00\x03\x00\x45\x00\x46\x00\x26\x00\x48\x00\x28\x00\x29\x00\x2a\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x02\x00\x34\x00\x35\x00\x36\x00\x37\x00\x21\x00\x0e\x00\x3a\x00\x10\x00\x3c\x00\x3d\x00\x3e\x00\x28\x00\x40\x00\x16\x00\x17\x00\x2c\x00\x2d\x00\x45\x00\x46\x00\x08\x00\x48\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4c\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x04\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1d\x00\x4c\x00\x3e\x00\x04\x00\x04\x00\x41\x00\x42\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x04\x00\x13\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x4c\x00\x3e\x00\x39\x00\x3a\x00\x41\x00\x42\x00\x43\x00\x38\x00\x06\x00\x01\x00\x13\x00\x02\x00\x0f\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x43\x00\x0a\x00\x38\x00\x2e\x00\x02\x00\x4c\x00\x0c\x00\x04\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x01\x00\x3e\x00\x01\x00\x4c\x00\x01\x00\x07\x00\x43\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x01\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x3e\x00\x02\x00\x39\x00\x3a\x00\x3b\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x0a\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x3e\x00\x01\x00\x4c\x00\x01\x00\x4c\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0a\x00\x09\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x31\x00\x3e\x00\x04\x00\x39\x00\x24\x00\x03\x00\x43\x00\x07\x00\x0a\x00\x38\x00\x4c\x00\x38\x00\x0e\x00\x3e\x00\x04\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x31\x00\x3e\x00\x04\x00\x01\x00\x10\x00\x04\x00\x43\x00\x01\x00\x01\x00\x4c\x00\x4c\x00\x01\x00\x04\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x24\x00\x04\x00\x3e\x00\x27\x00\x08\x00\x0e\x00\x03\x00\x43\x00\x4c\x00\x1a\x00\x0c\x00\x06\x00\x4c\x00\x31\x00\x32\x00\x4d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x41\x00\x3e\x00\x0e\x00\x03\x00\x07\x00\x46\x00\x43\x00\x04\x00\x06\x00\x13\x00\x0c\x00\x0a\x00\x07\x00\x38\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x08\x00\x0a\x00\x3e\x00\x2e\x00\x01\x00\x01\x00\x4c\x00\x43\x00\x0a\x00\x4c\x00\x4c\x00\x02\x00\x02\x00\x01\x00\x52\x00\x4c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x52\x00\x03\x00\x3e\x00\x03\x00\x03\x00\x03\x00\x4c\x00\x43\x00\x17\x00\x52\x00\x18\x00\x08\x00\x14\x00\x0e\x00\x4c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2f\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x00\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3e\x00\x00\x00\xff\xff\xff\xff\xff\xff\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x21\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x28\x00\x36\x00\xff\xff\x1b\x00\x2c\x00\x2d\x00\xff\xff\x18\x00\x00\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x25\x00\x00\x00\xff\xff\x00\x00\xff\xff\x23\x00\x2b\x00\x00\x00\xff\xff\x00\x00\xff\xff\x3e\x00\x30\x00\x31\x00\x2c\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x18\x00\x3e\x00\x18\x00\xff\xff\xff\xff\x23\x00\x18\x00\xff\xff\x18\x00\x00\x00\xff\xff\x23\x00\x3e\x00\x23\x00\x2c\x00\x2d\x00\x00\x00\x23\x00\xff\xff\x23\x00\x2c\x00\x2d\x00\x2c\x00\x2d\x00\x21\x00\xff\xff\x2c\x00\x2d\x00\x2c\x00\x2d\x00\xff\xff\x28\x00\xff\xff\x18\x00\xff\xff\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\xff\xff\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x26\x00\xff\xff\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x3e\x00\x53\x00\x3f\x00\x3e\x00\x62\x00\x3f\x00\x3e\x00\x3e\x00\x3f\x00\x3f\x00\x3e\x00\x3e\x00\x3f\x00\x3f\x00\x3e\x00\xe3\x00\x5b\x00\x75\x00\xd2\x01\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x93\x00\x94\x00\x95\x00\x96\x00\x4e\x00\x13\x00\x6a\x01\x14\x00\x6c\x01\x4e\x00\x2b\x00\x2c\x00\xdc\x01\x15\x00\x2e\xff\x90\x01\x6a\x01\x2e\xff\x16\x00\x17\x00\x18\x00\x99\x01\xdd\x01\x4e\x00\x56\x00\x19\x00\xe0\x01\x73\x00\x04\x01\x5b\x00\x7f\x01\xd6\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xcb\xff\x20\x00\xce\x01\x06\x00\x21\x00\x9b\x01\x06\x00\x22\x00\x29\x00\xbc\x01\x66\x00\xfd\x00\x06\x00\x76\x00\x7b\x01\x23\x00\x10\x00\x97\x00\x06\x00\x40\x00\xdc\x00\x9a\x01\x40\x00\x41\x00\x98\x00\xc4\x00\xc5\x00\x24\x00\x30\x01\xc6\x00\xc8\x00\x25\x00\x26\x00\xff\xff\x9c\x01\x99\x00\x3c\x01\x27\x00\xdf\x01\x06\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x13\x00\xe3\x00\x14\x00\x06\x00\x06\x00\x57\x00\x24\x01\x04\x01\x15\x00\x9c\x00\x06\x00\x9d\x00\xd8\x00\x16\x00\x17\x00\x18\x00\x60\x01\xd9\x00\xb2\x00\x78\x00\x19\x00\x9c\x00\x06\x00\x9d\x00\x9e\x00\x43\x00\x44\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x9f\x00\x20\x00\x56\x00\x9e\x00\x21\x00\x67\x01\x64\x01\x22\x00\x45\x00\xd3\x01\x66\x00\x65\x01\x9f\x00\x34\x00\x9c\x00\x23\x00\x9d\x00\xd4\x01\xde\x01\x56\x00\x00\x01\xe3\x00\xc0\x01\xc8\x01\x79\x01\x0e\x01\x2f\x00\x24\x00\x74\x01\x9e\x00\x75\x01\x25\x00\x26\x00\x06\x00\x06\x00\xca\x01\xdd\x00\x27\x00\x9f\x00\x06\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x13\x00\x01\x01\x14\x00\xea\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x15\x00\xeb\x00\x06\x00\x9e\x01\x29\x00\x16\x00\x17\x00\x18\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x19\x00\x57\x00\x8f\x00\x06\x01\x94\x00\x95\x00\x96\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x01\x20\x00\xe7\x00\x8a\x01\x21\x00\x57\x00\x58\x00\x22\x00\x06\x00\x06\x00\x28\x00\x29\x00\x2a\x00\xb2\x00\x76\x01\x23\x00\x06\x01\x94\x00\x95\x00\x96\x00\x13\x00\x5a\x00\x4b\x00\x82\x00\xb0\x01\x5b\x00\x01\x01\x24\x00\x15\x00\x83\x00\xd3\x01\x25\x00\x26\x00\x16\x00\x17\x00\x18\x00\x02\x01\x27\x00\xd4\x01\xd5\x01\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xa9\x00\x16\x01\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x55\x01\x20\x00\x4e\x00\x1a\x01\x21\x00\x17\x01\x67\x01\xa6\x01\x83\x00\x06\x01\x94\x00\x95\x00\x96\x00\xf8\x00\x93\x00\x94\x00\x95\x00\x96\x00\xa9\x00\xaa\x00\x75\x00\x06\x00\x9e\x01\xc3\x01\xab\x00\x79\x01\x4b\x01\x24\x00\x15\x00\xad\x01\x41\x01\x25\x00\x26\x00\x4c\x00\x17\x00\x18\x00\x83\x00\x27\x00\x8c\x01\xb3\x01\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1b\x01\x1b\x01\xf9\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x13\x00\x95\x01\x4b\x00\x67\x01\x21\x00\x28\xff\x1c\x01\x1c\x01\x15\x00\xa8\x01\x1d\x01\xa9\x00\x16\x01\x16\x00\x17\x00\x18\x00\x97\x00\x8d\x01\x4e\x00\xf8\x00\xec\x00\xb7\x01\xe5\x01\x98\x00\x17\x01\xe4\x01\x18\x01\xc7\x01\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x31\x00\x99\x00\x9a\x00\x32\x00\x21\x00\xe5\x01\xb9\x01\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xf5\x00\xa8\x00\x94\x00\x95\x00\x96\x00\x75\x00\xed\x00\x9e\x01\xf9\x00\x6a\x00\x92\x01\xbe\x01\x4e\x00\x15\x00\x90\x01\xfa\x00\xf7\x00\x7e\x01\x4c\x00\x17\x00\x18\x00\x6b\x00\x6c\x00\x94\x01\x6d\x00\x6e\x00\x6f\x00\xd2\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x75\x00\x80\x01\x4b\x00\xd3\x00\x21\x00\xd4\x00\x4f\x00\x8c\x01\x15\x00\x50\x00\x67\x00\xd5\x00\xd6\x00\x4c\x00\x17\x00\x18\x00\x3a\x01\x4f\x00\xa9\x00\xaa\x00\x50\x00\x13\x01\xec\x00\x9f\x01\xab\x00\x2e\x00\xac\x00\xdd\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4a\x01\xad\x00\xae\x00\x70\x00\x21\x00\x2f\x00\x8d\x01\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x06\x01\x94\x00\x95\x00\x96\x00\x8e\x01\x13\x00\xde\x00\x4b\x00\xed\x00\x06\x01\x94\x00\x95\x00\x96\x00\x15\x00\xdd\x00\x96\x01\xee\x00\x84\x01\x16\x00\x17\x00\x18\x00\x06\x01\x94\x00\x95\x00\x96\x00\x50\x01\xe0\x00\xe1\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x75\x00\xc5\x01\x4b\x00\x67\x01\x21\x00\xc6\x01\x97\x01\xcb\x01\x15\x00\xe5\x00\x5f\x00\xb0\x00\x60\x00\x4c\x00\x17\x00\x18\x00\x89\x01\xa9\x00\xaa\x00\xb1\x00\xe7\x00\xe8\x00\xe6\x01\xab\x00\x4e\x00\xac\x00\xa9\x00\xa7\x01\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xad\x00\x39\x01\x32\x00\x33\x00\x21\x00\xa9\x00\x19\x01\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4a\x00\x52\x01\x4b\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x15\x00\x62\x01\x6a\x01\x6c\x01\x82\x00\x4c\x00\x17\x00\x18\x00\x67\x01\x4f\x00\x83\x00\x6b\x01\x50\x00\x31\x01\x84\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x6d\x01\xd6\x00\xb6\x01\x6e\x01\x21\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x46\x01\x9c\x00\x82\x00\x9d\x00\x0b\x00\x0c\x00\x7c\x00\x10\x00\x83\x00\x8b\x00\x71\x01\x8c\x00\x0e\x01\x4a\xff\x11\x00\x10\x00\x9e\x00\x06\x01\x94\x00\x95\x00\x96\x00\xe4\x00\x4a\xff\x47\x01\xab\x01\x9f\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x06\x01\x94\x00\x95\x00\x96\x00\x93\x00\x94\x00\x95\x00\x96\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x46\x01\x67\x01\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x10\x00\x67\x01\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x68\x01\xef\x00\x2a\x01\x47\x01\x48\x01\x78\x01\x33\x01\x79\x01\x2f\x01\xa9\x00\xaa\x00\x06\x00\x28\x00\x29\x00\x2a\x00\xab\x00\x67\x01\xac\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xa9\x00\xaa\x00\xad\x00\x4d\x01\x97\x00\x32\x01\xab\x00\x88\x00\xac\x00\x84\x00\x7c\x01\xa0\x01\x79\x01\x2c\x01\x0b\x00\x70\x00\xad\x00\x07\x01\x10\x00\xc3\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x28\x01\x10\x00\x4f\x00\xa7\x00\xb2\x00\x50\x00\x67\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x31\x00\x11\x00\x5c\x00\x32\x00\x29\x01\xc9\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x5b\x00\x74\x01\x82\x01\x75\x01\x83\x01\xca\x01\xb4\x00\x10\x00\xb5\x00\xb6\x00\xb7\x00\xa3\x00\xb8\x00\xca\x00\x11\x00\x5c\x00\xa4\x00\x5d\x00\xcb\x00\xcc\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xdd\x00\xcd\x00\xbd\x00\xf6\xff\xbe\x00\xbf\x00\xc0\x00\xce\x00\xc1\x00\x0b\x00\x0c\x00\x7d\x00\x35\x00\xc2\x00\xc3\x00\xb4\x00\xc4\x00\xb5\x00\xb6\x00\xb7\x00\x10\x00\xb8\x00\x62\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x36\x00\x45\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xe5\x00\x55\x00\xbd\x00\x5e\x00\xbe\x00\xbf\x00\xc0\x00\x5c\x01\xc1\x00\xe3\x01\xe8\x01\xe7\x00\xe8\x00\xc2\x00\xc3\x00\x4e\x00\xc4\x00\x62\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x93\x00\x94\x00\x95\x00\x96\x00\xe9\x01\x96\x01\xe2\x01\x06\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xd7\x01\xd8\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x63\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xd9\x01\x10\x00\xda\x01\xdb\x01\xdc\x01\x28\x00\x57\x00\xad\x01\x11\x00\x97\x01\x98\x01\x4f\x00\xd1\x01\xd2\x01\x50\x00\x9f\x00\x06\x00\xc0\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x63\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x10\x00\x97\x00\x0b\x00\x0c\x00\x7e\x00\x57\x00\x64\x00\x11\x00\x0c\x01\xc2\x01\xcd\x01\xce\x01\x55\x01\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa5\x00\x49\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xaf\x01\x11\x00\x93\x00\x94\x00\x95\x00\x96\x00\xb0\x01\xb2\x01\xb3\x01\xb5\x01\x06\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa5\x00\x05\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb9\x01\x11\x00\xbb\x01\xbc\x01\xbe\x01\x93\x00\x94\x00\x95\x00\x96\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa5\x00\xa6\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xcf\x01\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x10\x00\x11\x00\x06\x00\x97\x00\x06\x00\x78\x01\x84\x01\x11\x00\x7b\x01\x06\x00\x65\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa5\x00\xb1\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xc6\x01\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x10\x00\x11\x00\x7e\x01\x06\x00\x86\x01\x89\x01\x97\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0c\x01\x06\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xaa\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x92\x01\x10\x00\xa2\x01\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x06\x00\xa3\x01\xa4\x01\x06\x00\x37\x01\xaa\x01\x35\x01\x36\x01\x4e\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xb5\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x10\x00\x3e\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x86\x01\x11\x00\x38\x01\x93\x00\x94\x00\x95\x00\x96\x00\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x87\x01\x3f\x01\x11\x00\x40\x01\x0b\x00\x70\x00\x43\x01\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4f\x00\x11\x00\x10\x00\x50\x00\x51\x00\x42\x01\x44\x01\x45\x01\x46\x01\x06\x00\x50\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x8b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4f\x01\x10\x00\x52\x01\x06\x00\x54\x01\x56\x01\x58\x01\x57\x01\x11\x00\x59\x01\x66\x00\x5a\x01\x97\x00\x5b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x21\x01\x5c\x01\x5f\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x93\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x60\x01\x10\x00\x61\x01\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x62\x01\x67\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa4\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4f\x00\x10\x00\x06\x00\x50\x00\x67\x00\x06\x00\x70\x01\xdd\x00\x11\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa5\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x71\x01\x10\x00\x73\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x38\x01\x11\x00\x77\x01\xd2\x00\x73\x00\xde\x00\xda\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xdb\x00\x11\x00\x10\x00\xdf\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x3b\x01\xdc\x00\x06\x00\x05\x01\xe0\x00\xe1\x00\x09\x01\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0a\x01\x11\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4c\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x01\x10\x00\x8c\x00\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x0c\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x11\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0f\x01\x10\x00\x10\x01\x11\x01\x06\x00\x06\x00\x21\x01\x16\x01\x11\x00\x1f\x01\x20\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x12\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x23\x01\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x14\x01\x24\x01\x11\x00\x27\x01\x48\x00\x2c\x01\x2f\x01\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x11\x00\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x25\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x10\x00\x28\x00\x06\x00\x72\x00\x79\x00\x86\x00\x81\x00\x11\x00\x06\x00\x87\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x27\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x88\x00\x10\x00\x8e\x00\x8d\x00\xdd\x00\x8f\x00\xdd\x00\x91\x00\x11\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x2d\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x92\x00\x10\x00\x93\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x79\x00\x11\x00\xde\x00\xa2\x00\xde\x00\x06\x00\xa1\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xe3\x00\x11\x00\xeb\x00\x83\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\xe0\x00\xe1\x00\xe0\x00\xe1\x00\x06\x00\xc8\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xd0\x00\x11\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7b\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x10\x00\xd1\x00\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x3e\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\x10\x00\x06\x00\xff\xff\x47\x00\x4d\x00\x4e\x00\x54\x00\x11\x00\x06\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa4\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x69\x00\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x63\x00\x72\x00\x11\x00\x73\x00\x88\x00\x06\x00\x2e\x00\x10\x00\x00\x00\xdd\x00\x89\x00\x00\x00\xdd\x00\x00\x00\x11\x00\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x54\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\xdd\x00\x10\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xe5\x00\x00\x00\x00\x00\xe5\x00\x00\x00\xde\x00\x10\x00\x5d\x01\xde\x00\xdd\x00\xe6\x00\xe7\x00\xe8\x00\x11\x00\xe7\x00\xe8\x00\xf0\x00\xdd\x00\x00\x00\xf1\x00\xe5\x00\xdd\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe1\x00\xf3\x00\xe0\x00\xe1\x00\xfc\x00\xe7\x00\xe8\x00\xde\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\xf2\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\xe0\x00\xe1\x00\x00\x00\xfb\x00\xf5\x00\xfd\x00\x00\x00\x00\x00\xe0\x00\xe1\x00\x00\x00\xf5\x00\xe0\x00\xe1\x00\xfe\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x00\xf6\x00\x38\x00\x00\x00\x00\x00\x39\x00\xb4\x00\xf7\x00\xb5\x00\xb6\x00\xb7\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\x00\x00\x00\x00\xbd\x00\x00\x00\xbe\x00\xbf\x00\xc0\x00\x3c\x00\xc1\x00\x00\x00\x00\x00\x00\x00\x3d\x00\xc2\x00\xc3\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyTable = HappyA# "\x00\x00\x41\x00\x70\x01\x42\x00\x41\x00\xcb\xff\x42\x00\x41\x00\x41\x00\x42\x00\x42\x00\x41\x00\x41\x00\x42\x00\x42\x00\x41\x00\x5a\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x7c\x00\xb8\x00\xb6\x00\x56\x00\x5a\x00\x79\x00\x11\x01\xa4\x01\x6d\x01\x9c\x01\xb7\x00\xea\x01\xe5\x01\x17\x00\xb3\x01\x96\x01\x70\x01\x12\x01\x4f\x00\x19\x00\x1a\x00\x76\x00\x6d\x01\x79\x00\xeb\x01\xc6\x01\x5a\x00\x7f\x01\x63\x00\x66\x00\x64\x00\x46\x00\x47\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x9d\x01\xd1\x01\xde\x00\xeb\x01\x23\x00\xa1\x01\x7a\x01\xdf\x00\x7b\x01\x48\x00\x06\x00\xe9\x00\x06\x00\x06\x00\x5f\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x12\x00\x6a\x01\x5b\x00\x2a\x01\x43\x00\xe2\x00\x6b\x01\x43\x00\x44\x00\x0a\x01\xca\x00\xcb\x00\x5b\x00\x95\x00\xcc\x00\xce\x00\xa2\x01\xff\xff\x15\x00\x06\x00\x16\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x17\x00\x7a\x00\x2c\x00\x06\x00\x06\x00\x18\x00\x19\x00\x1a\x00\x5b\x00\x5c\x00\x06\x00\x06\x00\x2c\x00\x2c\x00\x1b\x00\xa2\x00\x5f\x00\xa3\x00\x06\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x7c\x01\x22\x00\x9d\x00\xe9\x00\x23\x00\xa4\x00\x06\x00\x24\x00\xe2\x01\x9e\x00\x6a\x00\x5e\x00\x51\x00\x5f\x00\xa5\x00\x26\x00\x70\x00\xe6\x01\xe3\x01\x9f\x00\x42\x01\xe9\x00\x0a\x01\x06\x00\xa2\x00\x48\x01\xa3\x00\x27\x00\x71\x00\x72\x00\xf0\x00\x28\x00\x29\x00\x73\x00\x11\x01\x14\x01\xf1\x00\x2a\x00\x92\x01\xa4\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\xd4\x01\x16\x00\xa5\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x17\x00\xa2\x00\xc2\x01\xa3\x00\xd8\x01\x18\x00\x19\x00\x1a\x00\x66\x01\x06\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x1b\x00\x06\x00\xa4\x00\x93\x01\x51\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xa5\x00\x22\x00\xcd\x01\x74\x00\x23\x00\x51\x00\xce\x01\x24\x00\x06\x00\x06\x00\x25\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x26\x00\x72\x01\xb8\x00\x51\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x27\x00\x9d\x00\xaa\x00\xfe\x00\x28\x00\x29\x00\xd0\x01\xab\x00\xa6\x01\x81\x01\x2a\x00\x85\x01\xdc\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\x6d\x01\x16\x00\x36\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x17\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x18\x00\x19\x00\x1a\x00\x21\x01\xe3\x00\xc9\x01\xff\x00\x7f\x01\xb6\x01\x1b\x00\xb0\x00\xb1\x00\xb2\x00\x9b\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x01\x22\x00\x9d\x00\xae\x01\x23\x00\xb3\x00\x3f\x01\x24\x00\x51\x00\x9e\x00\x6a\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x26\x00\xfe\x00\x37\x00\x20\x01\x9f\x00\xa0\x00\x2e\x00\x2f\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x27\x00\xed\x00\x90\x01\x32\x00\x28\x00\x29\x00\xb0\x00\xb1\x00\xb2\x00\x9c\x01\x2a\x00\xb9\x01\x31\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\xbd\x01\x16\x00\xb3\x00\x53\x01\xff\x00\x52\x00\x32\x00\x17\x00\x53\x00\x19\x01\x51\x00\x00\x01\x18\x00\x19\x00\x1a\x00\x21\x01\x92\x01\x35\x00\x36\x00\x9d\x01\x9e\x01\x1b\x00\xb0\x00\xb1\x00\xb2\x00\x06\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x01\x22\x00\x9d\x00\x23\x01\x23\x00\xb3\x00\x0d\x01\x24\x00\xc4\x01\x12\x01\x25\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x26\x00\x93\x01\x88\x00\x02\x01\x07\x01\x15\x00\x52\x00\x4e\x00\x89\x00\x53\x00\x37\x01\x94\x01\x27\x00\x17\x00\xa4\x01\x5b\x01\x28\x00\x29\x00\x18\x00\x19\x00\x1a\x00\x39\x01\x2a\x00\x89\x00\x9f\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xfb\x00\x03\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x6d\x01\x22\x00\x04\x01\x05\x01\x23\x00\xcb\x01\x84\x01\xf2\x00\xfd\x00\xcc\x01\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x03\x01\xb0\x00\xb1\x00\xad\x01\x34\x00\xec\x01\x15\x00\x35\x00\x4e\x00\xbf\x01\xa0\x01\x26\xff\x52\x00\x27\x00\x17\x00\x53\x00\x6b\x00\x28\x00\x29\x00\x18\x00\x19\x00\x1a\x00\x34\x00\x2a\x00\xf3\x00\x35\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\x96\x01\xa4\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x7a\x01\xf6\xff\x7b\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x6d\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb0\x00\xb1\x00\x1c\x01\x79\x00\x86\x01\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x1d\x01\xbc\x01\xac\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x72\x01\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x9a\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xf2\x00\x06\x01\xa5\x01\x40\x01\x23\x00\x73\x01\xdc\x00\x0b\x00\x0c\x00\x7e\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x50\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\x12\x00\x4e\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x07\x01\x17\x00\x56\x01\x58\x01\xf3\x00\x77\x00\x18\x00\x19\x00\x1a\x00\x6d\x01\x08\x01\x68\x01\xf4\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\x12\x00\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x88\x01\x6e\x01\x89\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x70\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb0\x00\xb1\x00\x1c\x01\x15\x00\x71\x01\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x1d\x01\x9d\x00\x1e\x01\x23\x00\x18\x00\x19\x00\x1a\x00\x6d\x01\x6b\x01\x74\x01\x6d\x01\x51\x00\x77\x01\xea\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x7e\x01\xf5\x00\x7f\x01\x82\x01\x23\x00\x7f\x01\x30\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x2e\x01\x11\x00\xfb\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\x12\x00\x4e\x00\xd9\x01\x98\x01\x70\x00\x13\x00\x60\x00\x17\x00\x2f\x01\xfd\x00\xda\x01\xe4\x01\x4f\x00\x19\x00\x1a\x00\x35\x01\x71\x00\x72\x00\x38\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x4d\x00\xe3\x00\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x91\x00\xa5\x00\x92\x00\x23\x00\x4f\x00\x19\x00\x1a\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xae\x00\x39\x00\xb8\x00\xcf\x00\x15\x00\xd0\x00\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\xeb\x00\xd9\x01\xe3\x00\x23\x00\x18\x00\x19\x00\x1a\x00\x8f\x01\xd1\x00\xda\x01\xdb\x01\xed\x00\xee\x00\xd2\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xd3\x00\xd4\x00\xe4\x00\x38\x00\x23\x00\x48\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x4c\x01\x11\x00\x8a\x01\x59\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x12\x00\x62\x00\xe6\x00\xe7\x00\xee\x01\x13\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x47\x01\xe9\x01\xe8\x01\x4d\x01\xb1\x01\xef\x01\x89\x00\xdd\x01\xde\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xa2\x00\x88\x00\xa3\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x89\x00\x51\x00\xdf\x01\x06\x00\x14\x01\x47\xff\xe2\x01\x2b\x00\xa4\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xe0\x01\xd7\x01\x47\xff\xa5\x00\xaf\x00\x9a\x00\x9b\x00\x9c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x4c\x01\x11\x00\xe1\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xd8\x01\x12\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x13\x00\x51\x00\x2c\xff\x52\x00\xc6\x01\x2c\xff\x53\x00\xa6\x00\x06\x00\x4d\x01\x4e\x01\xc8\x01\x9d\x00\xd3\x01\x06\x00\x77\x00\x0b\x00\x0c\x00\x7f\x00\x12\x01\x52\x00\xd4\x01\x11\x01\x53\x00\x6b\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\xc9\x01\x12\x00\xe3\x00\x5b\x01\xb6\x01\xb0\x00\xb1\x00\xb2\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x5f\x00\x11\x00\x52\x00\x6a\x00\xb8\x01\x53\x00\x54\x00\xb3\x00\xb4\x00\x12\x00\xb5\x01\x9d\x00\xb9\x01\xbb\x01\x13\x00\x60\x00\xbf\x01\x61\x00\x27\x01\x06\x00\xd0\x01\xba\x00\xeb\x00\xbb\x00\xbc\x00\xbd\x00\xc1\x01\xbe\x00\x06\x00\x62\x01\xc2\x01\xc4\x01\x06\x00\xed\x00\xee\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xe3\x00\x7e\x01\xc3\x00\x81\x01\xc4\x00\xc5\x00\xc6\x00\x52\x00\xc7\x00\x06\x00\x53\x00\x6b\x00\x84\x01\xc8\x00\xc9\x00\xba\x00\xca\x00\xbb\x00\xbc\x00\xbd\x00\xd8\x00\xbe\x00\x66\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x8c\x01\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xeb\x00\xd9\x00\xc3\x00\xda\x00\xc4\x00\xc5\x00\xc6\x00\x63\x01\xc7\x00\xdb\x00\xdc\x00\xed\x00\xee\x00\xc8\x00\xc9\x00\x8a\x01\xca\x00\x66\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8f\x01\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x06\x00\x98\x01\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\xa8\x01\xa9\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x67\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xaa\x01\x06\x00\x12\x00\xb0\x01\x3b\x01\x5b\x00\xb3\x01\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x3c\x01\x44\x01\x3e\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x67\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8e\x00\x06\x00\x12\x00\xb0\x00\x52\x01\x5b\x00\x68\x00\x13\x00\x32\x01\x3d\x01\x45\x01\x49\x01\x46\x01\x11\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\x4f\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8e\x00\x12\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x13\x00\x4a\x01\x8f\x00\x4b\x01\x4c\x01\x06\x00\x56\x01\x55\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\x0b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x58\x01\x12\x00\x5a\x01\x06\x00\x5c\x01\x5e\x01\x13\x00\x5d\x01\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x5f\x01\x61\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\xad\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x60\x01\x12\x00\x62\x01\xb0\x00\xb1\x00\x1f\x01\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x65\x01\x66\x01\x67\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\xb7\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4b\x00\x12\x00\x68\x01\x06\x00\x6d\x01\x06\x00\x13\x00\x8a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x76\x01\x77\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xd5\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x74\x00\x12\x00\x88\x00\x79\x01\x7d\x01\xd8\x00\x13\x00\xe2\x00\x89\x00\xe0\x00\x06\x00\xe1\x00\x8a\x00\x12\x00\x0b\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xcc\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x56\x00\x12\x00\x0f\x01\x10\x01\x92\x00\x15\x01\x13\x00\x16\x01\x17\x01\x06\x00\x06\x00\x26\x01\x1c\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xb0\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x3b\x00\x25\x01\x12\x00\x3c\x00\x27\x01\x29\x01\x2a\x01\x13\x00\x06\x00\x2d\x01\x32\x01\x35\x01\x06\x00\x3d\x00\x3e\x00\x2b\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xbb\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x3f\x00\x12\x00\x76\x00\x7d\x00\x8c\x00\x40\x00\x13\x00\x87\x00\x8d\x00\x93\x00\x8e\x00\x94\x00\x95\x00\x99\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x8c\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x97\x00\x98\x00\x12\x00\xa8\x00\xa9\x00\xce\x00\x06\x00\x13\x00\x89\x00\x06\x00\x06\x00\xd6\x00\xd7\x00\x41\x00\xff\xff\x06\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x8d\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\x4a\x00\x12\x00\x50\x00\x51\x00\x58\x00\x06\x00\x13\x00\x6e\x00\xff\xff\x6f\x00\x6d\x00\x77\x00\x76\x00\x06\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x91\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x31\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x99\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xaa\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xab\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x3e\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x41\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x51\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x17\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x18\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x1a\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x2b\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x2d\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x33\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x7d\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x81\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x85\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xab\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x67\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x58\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\xe3\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x51\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x12\x00\xe3\x00\x00\x00\x00\x00\x00\x00\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xeb\x00\x00\x00\x0b\x00\x0c\x00\x82\x00\x83\x00\x84\x00\xec\x00\x11\x00\x00\x00\xfb\x00\xed\x00\xee\x00\x00\x00\xe4\x00\xe3\x00\x12\x00\x0b\x00\x0c\x00\x80\x00\xfc\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe5\x00\xfd\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\x12\x00\x0b\x00\x56\x00\xe6\x00\xe7\x00\xe3\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x74\x00\xe4\x00\x12\x00\xe4\x00\x00\x00\x00\x00\xe9\x00\xe4\x00\x00\x00\xe4\x00\xe3\x00\x00\x00\xf1\x00\x12\x00\xf6\x00\xe6\x00\xe7\x00\xe3\x00\xf7\x00\x00\x00\xf8\x00\xe6\x00\xe7\x00\xe6\x00\xe7\x00\xeb\x00\x00\x00\xe6\x00\xe7\x00\xe6\x00\xe7\x00\x00\x00\xf9\x00\x00\x00\xe4\x00\x00\x00\xed\x00\xee\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\xe6\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\xe7\x00\xba\x00\x00\x00\xbb\x00\xbc\x00\xbd\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\x00\x00\x00\x00\xc3\x00\x00\x00\xc4\x00\xc5\x00\xc6\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x00\xc9\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# -happyReduceArr = array (4, 249) [ +happyReduceArr = array (4, 251) [ (4 , happyReduce_4), (5 , happyReduce_5), (6 , happyReduce_6), @@ -780,11 +786,13 @@ happyReduceArr = array (4, 249) [ (246 , happyReduce_246), (247 , happyReduce_247), (248 , happyReduce_248), - (249 , happyReduce_249) + (249 , happyReduce_249), + (250 , happyReduce_250), + (251 , happyReduce_251) ] happy_n_terms = 83 :: Int -happy_n_nonterms = 83 :: Int +happy_n_nonterms = 84 :: Int happyReduce_4 = happySpecReduce_1 0# happyReduction_4 happyReduction_4 happy_x_1 @@ -1262,7 +1270,7 @@ happyReduction_58 happy_x_3 happy_x_2 happy_x_1 = case happyOut52 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> + case happyOut60 happy_x_3 of { happy_var_3 -> happyIn31 (DDecl happy_var_1 happy_var_3 )}} @@ -1272,7 +1280,7 @@ happyReduction_59 happy_x_3 happy_x_2 happy_x_1 = case happyOut52 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> + case happyOut60 happy_x_3 of { happy_var_3 -> happyIn31 (DDef happy_var_1 happy_var_3 )}} @@ -1284,8 +1292,8 @@ happyReduction_60 (happy_x_4 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut69 happy_x_2 of { happy_var_2 -> - case happyOut59 happy_x_4 of { happy_var_4 -> + case happyOut71 happy_x_2 of { happy_var_2 -> + case happyOut60 happy_x_4 of { happy_var_4 -> happyIn31 (DPatt happy_var_1 happy_var_2 happy_var_4 ) `HappyStk` happyRest}}} @@ -1298,8 +1306,8 @@ happyReduction_61 (happy_x_5 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut52 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> - case happyOut59 happy_x_5 of { happy_var_5 -> + case happyOut60 happy_x_3 of { happy_var_3 -> + case happyOut60 happy_x_5 of { happy_var_5 -> happyIn31 (DFull happy_var_1 happy_var_3 happy_var_5 ) `HappyStk` happyRest}}} @@ -1478,7 +1486,7 @@ happyReduce_82 = happySpecReduce_2 26# happyReduction_82 happyReduction_82 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> - case happyOut85 happy_x_2 of { happy_var_2 -> + case happyOut86 happy_x_2 of { happy_var_2 -> happyIn33 (SimpleCatDef happy_var_1 (reverse happy_var_2) )}} @@ -1490,7 +1498,7 @@ happyReduction_83 (happy_x_4 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut85 happy_x_3 of { happy_var_3 -> + case happyOut86 happy_x_3 of { happy_var_3 -> happyIn33 (ListCatDef happy_var_2 (reverse happy_var_3) ) `HappyStk` happyRest}} @@ -1505,7 +1513,7 @@ happyReduction_84 (happy_x_7 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut85 happy_x_3 of { happy_var_3 -> + case happyOut86 happy_x_3 of { happy_var_3 -> case happyOut8 happy_x_6 of { happy_var_6 -> happyIn33 (ListSizeCatDef happy_var_2 (reverse happy_var_3) happy_var_6 @@ -1516,7 +1524,7 @@ happyReduction_85 happy_x_3 happy_x_2 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> + case happyOut60 happy_x_3 of { happy_var_3 -> happyIn34 (FunDef happy_var_1 happy_var_3 )}} @@ -1605,7 +1613,7 @@ happyReduce_95 = happySpecReduce_2 32# happyReduction_95 happyReduction_95 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> - case happyOut85 happy_x_2 of { happy_var_2 -> + case happyOut86 happy_x_2 of { happy_var_2 -> happyIn39 (ParConstr happy_var_1 (reverse happy_var_2) )}} @@ -1615,7 +1623,7 @@ happyReduction_96 happy_x_3 happy_x_2 happy_x_1 = case happyOut52 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> + case happyOut60 happy_x_3 of { happy_var_3 -> happyIn40 (PrintDef happy_var_1 happy_var_3 )}} @@ -1833,7 +1841,7 @@ happyReduction_121 happy_x_3 happy_x_2 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> + case happyOut60 happy_x_3 of { happy_var_3 -> happyIn53 (LDDecl happy_var_1 happy_var_3 )}} @@ -1843,7 +1851,7 @@ happyReduction_122 happy_x_3 happy_x_2 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> + case happyOut60 happy_x_3 of { happy_var_3 -> happyIn53 (LDDef happy_var_1 happy_var_3 )}} @@ -1856,8 +1864,8 @@ happyReduction_123 (happy_x_5 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut50 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> - case happyOut59 happy_x_5 of { happy_var_5 -> + case happyOut60 happy_x_3 of { happy_var_3 -> + case happyOut60 happy_x_5 of { happy_var_5 -> happyIn53 (LDFull happy_var_1 happy_var_3 happy_var_5 ) `HappyStk` happyRest}}} @@ -1911,7 +1919,7 @@ happyReduction_129 happy_x_3 happyReduce_130 = happySpecReduce_1 48# happyReduction_130 happyReduction_130 happy_x_1 - = case happyOut66 happy_x_1 of { happy_var_1 -> + = case happyOut69 happy_x_1 of { happy_var_1 -> happyIn55 (ESort happy_var_1 )} @@ -1963,7 +1971,7 @@ happyReduction_137 (happy_x_4 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut61 happy_x_3 of { happy_var_3 -> + case happyOut63 happy_x_3 of { happy_var_3 -> happyIn55 (EList happy_var_2 happy_var_3 ) `HappyStk` happyRest}} @@ -1990,7 +1998,7 @@ happyReduce_140 = happySpecReduce_3 48# happyReduction_140 happyReduction_140 happy_x_3 happy_x_2 happy_x_1 - = case happyOut76 happy_x_2 of { happy_var_2 -> + = case happyOut77 happy_x_2 of { happy_var_2 -> happyIn55 (ETuple happy_var_2 )} @@ -2013,8 +2021,8 @@ happyReduction_142 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut59 happy_x_2 of { happy_var_2 -> - case happyOut59 happy_x_4 of { happy_var_4 -> + = case happyOut60 happy_x_2 of { happy_var_2 -> + case happyOut60 happy_x_4 of { happy_var_4 -> happyIn55 (ETyped happy_var_2 happy_var_4 ) `HappyStk` happyRest}} @@ -2023,7 +2031,7 @@ happyReduce_143 = happySpecReduce_3 48# happyReduction_143 happyReduction_143 happy_x_3 happy_x_2 happy_x_1 - = case happyOut59 happy_x_2 of { happy_var_2 -> + = case happyOut60 happy_x_2 of { happy_var_2 -> happyIn55 (happy_var_2 )} @@ -2040,7 +2048,7 @@ happyReduction_145 happy_x_3 happy_x_2 happy_x_1 = case happyOut56 happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_3 of { happy_var_3 -> + case happyOut68 happy_x_3 of { happy_var_3 -> happyIn56 (EProj happy_var_1 happy_var_3 )}} @@ -2092,7 +2100,7 @@ happyReduction_150 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut79 happy_x_3 of { happy_var_3 -> + = case happyOut80 happy_x_3 of { happy_var_3 -> happyIn57 (ETable happy_var_3 ) `HappyStk` happyRest} @@ -2105,7 +2113,7 @@ happyReduction_151 (happy_x_5 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut55 happy_x_2 of { happy_var_2 -> - case happyOut79 happy_x_4 of { happy_var_4 -> + case happyOut80 happy_x_4 of { happy_var_4 -> happyIn57 (ETTable happy_var_2 happy_var_4 ) `HappyStk` happyRest}} @@ -2118,7 +2126,7 @@ happyReduction_152 (happy_x_5 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut55 happy_x_2 of { happy_var_2 -> - case happyOut60 happy_x_4 of { happy_var_4 -> + case happyOut62 happy_x_4 of { happy_var_4 -> happyIn57 (EVTable happy_var_2 happy_var_4 ) `HappyStk` happyRest}} @@ -2131,8 +2139,8 @@ happyReduction_153 (happy_x_6 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut59 happy_x_2 of { happy_var_2 -> - case happyOut79 happy_x_5 of { happy_var_5 -> + = case happyOut60 happy_x_2 of { happy_var_2 -> + case happyOut80 happy_x_5 of { happy_var_5 -> happyIn57 (ECase happy_var_2 happy_var_5 ) `HappyStk` happyRest}} @@ -2143,7 +2151,7 @@ happyReduction_154 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut60 happy_x_3 of { happy_var_3 -> + = case happyOut62 happy_x_3 of { happy_var_3 -> happyIn57 (EVariants happy_var_3 ) `HappyStk` happyRest} @@ -2156,8 +2164,8 @@ happyReduction_155 (happy_x_6 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut59 happy_x_3 of { happy_var_3 -> - case happyOut83 happy_x_5 of { happy_var_5 -> + = case happyOut60 happy_x_3 of { happy_var_3 -> + case happyOut84 happy_x_5 of { happy_var_5 -> happyIn57 (EPre happy_var_3 happy_var_5 ) `HappyStk` happyRest}} @@ -2168,7 +2176,7 @@ happyReduction_156 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut60 happy_x_3 of { happy_var_3 -> + = case happyOut62 happy_x_3 of { happy_var_3 -> happyIn57 (EStrs happy_var_3 ) `HappyStk` happyRest} @@ -2235,73 +2243,80 @@ happyReduction_163 happy_x_1 (happy_var_1 )} -happyReduce_164 = happyReduce 4# 52# happyReduction_164 -happyReduction_164 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut72 happy_x_2 of { happy_var_2 -> - case happyOut59 happy_x_4 of { happy_var_4 -> - happyIn59 - (EAbstr happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_165 = happyReduce 5# 52# happyReduction_165 -happyReduction_165 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut72 happy_x_3 of { happy_var_3 -> - case happyOut59 happy_x_5 of { happy_var_5 -> - happyIn59 - (ECTable happy_var_3 happy_var_5 - ) `HappyStk` happyRest}} - -happyReduce_166 = happySpecReduce_3 52# happyReduction_166 -happyReduction_166 happy_x_3 +happyReduce_164 = happySpecReduce_3 52# happyReduction_164 +happyReduction_164 happy_x_3 happy_x_2 happy_x_1 - = case happyOut73 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> - happyIn59 - (EProd happy_var_1 happy_var_3 - )}} - -happyReduce_167 = happySpecReduce_3 52# happyReduction_167 -happyReduction_167 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> - happyIn59 - (ETType happy_var_1 happy_var_3 - )}} - -happyReduce_168 = happySpecReduce_3 52# happyReduction_168 -happyReduction_168 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> - happyIn59 - (EConcat happy_var_1 happy_var_3 - )}} - -happyReduce_169 = happySpecReduce_3 52# happyReduction_169 -happyReduction_169 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> + = case happyOut61 happy_x_1 of { happy_var_1 -> case happyOut59 happy_x_3 of { happy_var_3 -> happyIn59 (EGlue happy_var_1 happy_var_3 )}} -happyReduce_170 = happyReduce 6# 52# happyReduction_170 -happyReduction_170 (happy_x_6 `HappyStk` +happyReduce_165 = happySpecReduce_1 52# happyReduction_165 +happyReduction_165 happy_x_1 + = case happyOut61 happy_x_1 of { happy_var_1 -> + happyIn59 + (happy_var_1 + )} + +happyReduce_166 = happySpecReduce_3 53# happyReduction_166 +happyReduction_166 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut59 happy_x_1 of { happy_var_1 -> + case happyOut60 happy_x_3 of { happy_var_3 -> + happyIn60 + (EConcat happy_var_1 happy_var_3 + )}} + +happyReduce_167 = happyReduce 4# 53# happyReduction_167 +happyReduction_167 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut73 happy_x_2 of { happy_var_2 -> + case happyOut60 happy_x_4 of { happy_var_4 -> + happyIn60 + (EAbstr happy_var_2 happy_var_4 + ) `HappyStk` happyRest}} + +happyReduce_168 = happyReduce 5# 53# happyReduction_168 +happyReduction_168 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut73 happy_x_3 of { happy_var_3 -> + case happyOut60 happy_x_5 of { happy_var_5 -> + happyIn60 + (ECTable happy_var_3 happy_var_5 + ) `HappyStk` happyRest}} + +happyReduce_169 = happySpecReduce_3 53# happyReduction_169 +happyReduction_169 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut74 happy_x_1 of { happy_var_1 -> + case happyOut60 happy_x_3 of { happy_var_3 -> + happyIn60 + (EProd happy_var_1 happy_var_3 + )}} + +happyReduce_170 = happySpecReduce_3 53# happyReduction_170 +happyReduction_170 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut58 happy_x_1 of { happy_var_1 -> + case happyOut60 happy_x_3 of { happy_var_3 -> + happyIn60 + (ETType happy_var_1 happy_var_3 + )}} + +happyReduce_171 = happyReduce 6# 53# happyReduction_171 +happyReduction_171 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -2309,25 +2324,25 @@ happyReduction_170 (happy_x_6 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut54 happy_x_3 of { happy_var_3 -> - case happyOut59 happy_x_6 of { happy_var_6 -> - happyIn59 + case happyOut60 happy_x_6 of { happy_var_6 -> + happyIn60 (ELet happy_var_3 happy_var_6 ) `HappyStk` happyRest}} -happyReduce_171 = happyReduce 4# 52# happyReduction_171 -happyReduction_171 (happy_x_4 `HappyStk` +happyReduce_172 = happyReduce 4# 53# happyReduction_172 +happyReduction_172 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut54 happy_x_2 of { happy_var_2 -> - case happyOut59 happy_x_4 of { happy_var_4 -> - happyIn59 + case happyOut60 happy_x_4 of { happy_var_4 -> + happyIn60 (ELetb happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_172 = happyReduce 5# 52# happyReduction_172 -happyReduction_172 (happy_x_5 `HappyStk` +happyReduce_173 = happyReduce 5# 53# happyReduction_173 +happyReduction_173 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2335,276 +2350,270 @@ happyReduction_172 (happy_x_5 `HappyStk` happyRest) = case happyOut58 happy_x_1 of { happy_var_1 -> case happyOut54 happy_x_4 of { happy_var_4 -> - happyIn59 + happyIn60 (EWhere happy_var_1 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_173 = happyReduce 4# 52# happyReduction_173 -happyReduction_173 (happy_x_4 `HappyStk` +happyReduce_174 = happyReduce 4# 53# happyReduction_174 +happyReduction_174 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut81 happy_x_3 of { happy_var_3 -> - happyIn59 + = case happyOut82 happy_x_3 of { happy_var_3 -> + happyIn60 (EEqs happy_var_3 ) `HappyStk` happyRest} -happyReduce_174 = happySpecReduce_1 52# happyReduction_174 -happyReduction_174 happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - happyIn59 - (happy_var_1 - )} - -happyReduce_175 = happySpecReduce_0 53# happyReduction_175 -happyReduction_175 = happyIn60 - ([] - ) +happyReduce_175 = happySpecReduce_3 53# happyReduction_175 +happyReduction_175 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut56 happy_x_2 of { happy_var_2 -> + case happyOut9 happy_x_3 of { happy_var_3 -> + happyIn60 + (EExample happy_var_2 happy_var_3 + )}} happyReduce_176 = happySpecReduce_1 53# happyReduction_176 happyReduction_176 happy_x_1 = case happyOut59 happy_x_1 of { happy_var_1 -> happyIn60 + (happy_var_1 + )} + +happyReduce_177 = happySpecReduce_1 54# happyReduction_177 +happyReduction_177 happy_x_1 + = case happyOut58 happy_x_1 of { happy_var_1 -> + happyIn61 + (happy_var_1 + )} + +happyReduce_178 = happySpecReduce_0 55# happyReduction_178 +happyReduction_178 = happyIn62 + ([] + ) + +happyReduce_179 = happySpecReduce_1 55# happyReduction_179 +happyReduction_179 happy_x_1 + = case happyOut60 happy_x_1 of { happy_var_1 -> + happyIn62 ((:[]) happy_var_1 )} -happyReduce_177 = happySpecReduce_3 53# happyReduction_177 -happyReduction_177 happy_x_3 +happyReduce_180 = happySpecReduce_3 55# happyReduction_180 +happyReduction_180 happy_x_3 happy_x_2 happy_x_1 - = case happyOut59 happy_x_1 of { happy_var_1 -> - case happyOut60 happy_x_3 of { happy_var_3 -> - happyIn60 + = case happyOut60 happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_3 of { happy_var_3 -> + happyIn62 ((:) happy_var_1 happy_var_3 )}} -happyReduce_178 = happySpecReduce_0 54# happyReduction_178 -happyReduction_178 = happyIn61 +happyReduce_181 = happySpecReduce_0 56# happyReduction_181 +happyReduction_181 = happyIn63 (NilExp ) -happyReduce_179 = happySpecReduce_2 54# happyReduction_179 -happyReduction_179 happy_x_2 +happyReduce_182 = happySpecReduce_2 56# happyReduction_182 +happyReduction_182 happy_x_2 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> - case happyOut61 happy_x_2 of { happy_var_2 -> - happyIn61 + case happyOut63 happy_x_2 of { happy_var_2 -> + happyIn63 (ConsExp happy_var_1 happy_var_2 )}} -happyReduce_180 = happySpecReduce_1 55# happyReduction_180 -happyReduction_180 happy_x_1 - = happyIn62 +happyReduce_183 = happySpecReduce_1 57# happyReduction_183 +happyReduction_183 happy_x_1 + = happyIn64 (PW ) -happyReduce_181 = happySpecReduce_1 55# happyReduction_181 -happyReduction_181 happy_x_1 +happyReduce_184 = happySpecReduce_1 57# happyReduction_184 +happyReduction_184 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> - happyIn62 + happyIn64 (PV happy_var_1 )} -happyReduce_182 = happySpecReduce_3 55# happyReduction_182 -happyReduction_182 happy_x_3 +happyReduce_185 = happySpecReduce_3 57# happyReduction_185 +happyReduction_185 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_2 of { happy_var_2 -> - happyIn62 + happyIn64 (PCon happy_var_2 )} -happyReduce_183 = happySpecReduce_3 55# happyReduction_183 -happyReduction_183 happy_x_3 +happyReduce_186 = happySpecReduce_3 57# happyReduction_186 +happyReduction_186 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> case happyOut7 happy_x_3 of { happy_var_3 -> - happyIn62 + happyIn64 (PQ happy_var_1 happy_var_3 )}} -happyReduce_184 = happySpecReduce_1 55# happyReduction_184 -happyReduction_184 happy_x_1 +happyReduce_187 = happySpecReduce_1 57# happyReduction_187 +happyReduction_187 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> - happyIn62 + happyIn64 (PInt happy_var_1 )} -happyReduce_185 = happySpecReduce_1 55# happyReduction_185 -happyReduction_185 happy_x_1 +happyReduce_188 = happySpecReduce_1 57# happyReduction_188 +happyReduction_188 happy_x_1 = case happyOut10 happy_x_1 of { happy_var_1 -> - happyIn62 + happyIn64 (PFloat happy_var_1 )} -happyReduce_186 = happySpecReduce_1 55# happyReduction_186 -happyReduction_186 happy_x_1 +happyReduce_189 = happySpecReduce_1 57# happyReduction_189 +happyReduction_189 happy_x_1 = case happyOut9 happy_x_1 of { happy_var_1 -> - happyIn62 + happyIn64 (PStr happy_var_1 )} -happyReduce_187 = happySpecReduce_3 55# happyReduction_187 -happyReduction_187 happy_x_3 +happyReduce_190 = happySpecReduce_3 57# happyReduction_190 +happyReduction_190 happy_x_3 happy_x_2 happy_x_1 - = case happyOut67 happy_x_2 of { happy_var_2 -> - happyIn62 + = case happyOut70 happy_x_2 of { happy_var_2 -> + happyIn64 (PR happy_var_2 )} -happyReduce_188 = happySpecReduce_3 55# happyReduction_188 -happyReduction_188 happy_x_3 +happyReduce_191 = happySpecReduce_3 57# happyReduction_191 +happyReduction_191 happy_x_3 happy_x_2 happy_x_1 - = case happyOut77 happy_x_2 of { happy_var_2 -> - happyIn62 + = case happyOut78 happy_x_2 of { happy_var_2 -> + happyIn64 (PTup happy_var_2 )} -happyReduce_189 = happySpecReduce_3 55# happyReduction_189 -happyReduction_189 happy_x_3 +happyReduce_192 = happySpecReduce_3 57# happyReduction_192 +happyReduction_192 happy_x_3 happy_x_2 happy_x_1 - = case happyOut63 happy_x_2 of { happy_var_2 -> - happyIn62 + = case happyOut66 happy_x_2 of { happy_var_2 -> + happyIn64 (happy_var_2 )} -happyReduce_190 = happySpecReduce_2 56# happyReduction_190 -happyReduction_190 happy_x_2 +happyReduce_193 = happySpecReduce_2 58# happyReduction_193 +happyReduction_193 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> - case happyOut69 happy_x_2 of { happy_var_2 -> - happyIn63 + case happyOut71 happy_x_2 of { happy_var_2 -> + happyIn65 (PC happy_var_1 happy_var_2 )}} -happyReduce_191 = happyReduce 4# 56# happyReduction_191 -happyReduction_191 (happy_x_4 `HappyStk` +happyReduce_194 = happyReduce 4# 58# happyReduction_194 +happyReduction_194 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut7 happy_x_1 of { happy_var_1 -> case happyOut7 happy_x_3 of { happy_var_3 -> - case happyOut69 happy_x_4 of { happy_var_4 -> - happyIn63 + case happyOut71 happy_x_4 of { happy_var_4 -> + happyIn65 (PQC happy_var_1 happy_var_3 happy_var_4 ) `HappyStk` happyRest}}} -happyReduce_192 = happySpecReduce_1 56# happyReduction_192 -happyReduction_192 happy_x_1 - = case happyOut62 happy_x_1 of { happy_var_1 -> - happyIn63 +happyReduce_195 = happySpecReduce_1 58# happyReduction_195 +happyReduction_195 happy_x_1 + = case happyOut64 happy_x_1 of { happy_var_1 -> + happyIn65 (happy_var_1 )} -happyReduce_193 = happySpecReduce_3 57# happyReduction_193 -happyReduction_193 happy_x_3 +happyReduce_196 = happySpecReduce_3 59# happyReduction_196 +happyReduction_196 happy_x_3 happy_x_2 happy_x_1 - = case happyOut50 happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_3 of { happy_var_3 -> - happyIn64 - (PA happy_var_1 happy_var_3 + = case happyOut66 happy_x_1 of { happy_var_1 -> + case happyOut65 happy_x_3 of { happy_var_3 -> + happyIn66 + (PDisj happy_var_1 happy_var_3 )}} -happyReduce_194 = happySpecReduce_1 58# happyReduction_194 -happyReduction_194 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> - happyIn65 - (LIdent happy_var_1 - )} - -happyReduce_195 = happySpecReduce_2 58# happyReduction_195 -happyReduction_195 happy_x_2 - happy_x_1 - = case happyOut8 happy_x_2 of { happy_var_2 -> - happyIn65 - (LVar happy_var_2 - )} - -happyReduce_196 = happySpecReduce_1 59# happyReduction_196 -happyReduction_196 happy_x_1 - = happyIn66 - (Sort_Type - ) - happyReduce_197 = happySpecReduce_1 59# happyReduction_197 happyReduction_197 happy_x_1 - = happyIn66 + = case happyOut65 happy_x_1 of { happy_var_1 -> + happyIn66 + (happy_var_1 + )} + +happyReduce_198 = happySpecReduce_3 60# happyReduction_198 +happyReduction_198 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut50 happy_x_1 of { happy_var_1 -> + case happyOut66 happy_x_3 of { happy_var_3 -> + happyIn67 + (PA happy_var_1 happy_var_3 + )}} + +happyReduce_199 = happySpecReduce_1 61# happyReduction_199 +happyReduction_199 happy_x_1 + = case happyOut7 happy_x_1 of { happy_var_1 -> + happyIn68 + (LIdent happy_var_1 + )} + +happyReduce_200 = happySpecReduce_2 61# happyReduction_200 +happyReduction_200 happy_x_2 + happy_x_1 + = case happyOut8 happy_x_2 of { happy_var_2 -> + happyIn68 + (LVar happy_var_2 + )} + +happyReduce_201 = happySpecReduce_1 62# happyReduction_201 +happyReduction_201 happy_x_1 + = happyIn69 + (Sort_Type + ) + +happyReduce_202 = happySpecReduce_1 62# happyReduction_202 +happyReduction_202 happy_x_1 + = happyIn69 (Sort_PType ) -happyReduce_198 = happySpecReduce_1 59# happyReduction_198 -happyReduction_198 happy_x_1 - = happyIn66 +happyReduce_203 = happySpecReduce_1 62# happyReduction_203 +happyReduction_203 happy_x_1 + = happyIn69 (Sort_Tok ) -happyReduce_199 = happySpecReduce_1 59# happyReduction_199 -happyReduction_199 happy_x_1 - = happyIn66 +happyReduce_204 = happySpecReduce_1 62# happyReduction_204 +happyReduction_204 happy_x_1 + = happyIn69 (Sort_Str ) -happyReduce_200 = happySpecReduce_1 59# happyReduction_200 -happyReduction_200 happy_x_1 - = happyIn66 +happyReduce_205 = happySpecReduce_1 62# happyReduction_205 +happyReduction_205 happy_x_1 + = happyIn69 (Sort_Strs ) -happyReduce_201 = happySpecReduce_0 60# happyReduction_201 -happyReduction_201 = happyIn67 +happyReduce_206 = happySpecReduce_0 63# happyReduction_206 +happyReduction_206 = happyIn70 ([] ) -happyReduce_202 = happySpecReduce_1 60# happyReduction_202 -happyReduction_202 happy_x_1 - = case happyOut64 happy_x_1 of { happy_var_1 -> - happyIn67 - ((:[]) happy_var_1 - )} - -happyReduce_203 = happySpecReduce_3 60# happyReduction_203 -happyReduction_203 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut64 happy_x_1 of { happy_var_1 -> - case happyOut67 happy_x_3 of { happy_var_3 -> - happyIn67 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_204 = happySpecReduce_1 61# happyReduction_204 -happyReduction_204 happy_x_1 - = case happyOut63 happy_x_1 of { happy_var_1 -> - happyIn68 - (AltP happy_var_1 - )} - -happyReduce_205 = happySpecReduce_1 62# happyReduction_205 -happyReduction_205 happy_x_1 - = case happyOut62 happy_x_1 of { happy_var_1 -> - happyIn69 - ((:[]) happy_var_1 - )} - -happyReduce_206 = happySpecReduce_2 62# happyReduction_206 -happyReduction_206 happy_x_2 - happy_x_1 - = case happyOut62 happy_x_1 of { happy_var_1 -> - case happyOut69 happy_x_2 of { happy_var_2 -> - happyIn69 - ((:) happy_var_1 happy_var_2 - )}} - happyReduce_207 = happySpecReduce_1 63# happyReduction_207 happyReduction_207 happy_x_1 - = case happyOut68 happy_x_1 of { happy_var_1 -> + = case happyOut67 happy_x_1 of { happy_var_1 -> happyIn70 ((:[]) happy_var_1 )} @@ -2613,7 +2622,7 @@ happyReduce_208 = happySpecReduce_3 63# happyReduction_208 happyReduction_208 happy_x_3 happy_x_2 happy_x_1 - = case happyOut68 happy_x_1 of { happy_var_1 -> + = case happyOut67 happy_x_1 of { happy_var_1 -> case happyOut70 happy_x_3 of { happy_var_3 -> happyIn70 ((:) happy_var_1 happy_var_3 @@ -2621,109 +2630,103 @@ happyReduction_208 happy_x_3 happyReduce_209 = happySpecReduce_1 64# happyReduction_209 happyReduction_209 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut64 happy_x_1 of { happy_var_1 -> happyIn71 - (BIdent happy_var_1 - )} - -happyReduce_210 = happySpecReduce_1 64# happyReduction_210 -happyReduction_210 happy_x_1 - = happyIn71 - (BWild - ) - -happyReduce_211 = happySpecReduce_0 65# happyReduction_211 -happyReduction_211 = happyIn72 - ([] - ) - -happyReduce_212 = happySpecReduce_1 65# happyReduction_212 -happyReduction_212 happy_x_1 - = case happyOut71 happy_x_1 of { happy_var_1 -> - happyIn72 ((:[]) happy_var_1 )} -happyReduce_213 = happySpecReduce_3 65# happyReduction_213 -happyReduction_213 happy_x_3 +happyReduce_210 = happySpecReduce_2 64# happyReduction_210 +happyReduction_210 happy_x_2 + happy_x_1 + = case happyOut64 happy_x_1 of { happy_var_1 -> + case happyOut71 happy_x_2 of { happy_var_2 -> + happyIn71 + ((:) happy_var_1 happy_var_2 + )}} + +happyReduce_211 = happySpecReduce_1 65# happyReduction_211 +happyReduction_211 happy_x_1 + = case happyOut7 happy_x_1 of { happy_var_1 -> + happyIn72 + (BIdent happy_var_1 + )} + +happyReduce_212 = happySpecReduce_1 65# happyReduction_212 +happyReduction_212 happy_x_1 + = happyIn72 + (BWild + ) + +happyReduce_213 = happySpecReduce_0 66# happyReduction_213 +happyReduction_213 = happyIn73 + ([] + ) + +happyReduce_214 = happySpecReduce_1 66# happyReduction_214 +happyReduction_214 happy_x_1 + = case happyOut72 happy_x_1 of { happy_var_1 -> + happyIn73 + ((:[]) happy_var_1 + )} + +happyReduce_215 = happySpecReduce_3 66# happyReduction_215 +happyReduction_215 happy_x_3 happy_x_2 happy_x_1 - = case happyOut71 happy_x_1 of { happy_var_1 -> - case happyOut72 happy_x_3 of { happy_var_3 -> - happyIn72 + = case happyOut72 happy_x_1 of { happy_var_1 -> + case happyOut73 happy_x_3 of { happy_var_3 -> + happyIn73 ((:) happy_var_1 happy_var_3 )}} -happyReduce_214 = happyReduce 5# 66# happyReduction_214 -happyReduction_214 (happy_x_5 `HappyStk` +happyReduce_216 = happyReduce 5# 67# happyReduction_216 +happyReduction_216 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut72 happy_x_2 of { happy_var_2 -> - case happyOut59 happy_x_4 of { happy_var_4 -> - happyIn73 + = case happyOut73 happy_x_2 of { happy_var_2 -> + case happyOut60 happy_x_4 of { happy_var_4 -> + happyIn74 (DDec happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_215 = happySpecReduce_1 66# happyReduction_215 -happyReduction_215 happy_x_1 +happyReduce_217 = happySpecReduce_1 67# happyReduction_217 +happyReduction_217 happy_x_1 = case happyOut57 happy_x_1 of { happy_var_1 -> - happyIn73 + happyIn74 (DExp happy_var_1 )} -happyReduce_216 = happySpecReduce_1 67# happyReduction_216 -happyReduction_216 happy_x_1 - = case happyOut59 happy_x_1 of { happy_var_1 -> - happyIn74 +happyReduce_218 = happySpecReduce_1 68# happyReduction_218 +happyReduction_218 happy_x_1 + = case happyOut60 happy_x_1 of { happy_var_1 -> + happyIn75 (TComp happy_var_1 )} -happyReduce_217 = happySpecReduce_1 68# happyReduction_217 -happyReduction_217 happy_x_1 - = case happyOut63 happy_x_1 of { happy_var_1 -> - happyIn75 +happyReduce_219 = happySpecReduce_1 69# happyReduction_219 +happyReduction_219 happy_x_1 + = case happyOut66 happy_x_1 of { happy_var_1 -> + happyIn76 (PTComp happy_var_1 )} -happyReduce_218 = happySpecReduce_0 69# happyReduction_218 -happyReduction_218 = happyIn76 +happyReduce_220 = happySpecReduce_0 70# happyReduction_220 +happyReduction_220 = happyIn77 ([] ) -happyReduce_219 = happySpecReduce_1 69# happyReduction_219 -happyReduction_219 happy_x_1 - = case happyOut74 happy_x_1 of { happy_var_1 -> - happyIn76 - ((:[]) happy_var_1 - )} - -happyReduce_220 = happySpecReduce_3 69# happyReduction_220 -happyReduction_220 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut74 happy_x_1 of { happy_var_1 -> - case happyOut76 happy_x_3 of { happy_var_3 -> - happyIn76 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_221 = happySpecReduce_0 70# happyReduction_221 -happyReduction_221 = happyIn77 - ([] - ) - -happyReduce_222 = happySpecReduce_1 70# happyReduction_222 -happyReduction_222 happy_x_1 +happyReduce_221 = happySpecReduce_1 70# happyReduction_221 +happyReduction_221 happy_x_1 = case happyOut75 happy_x_1 of { happy_var_1 -> happyIn77 ((:[]) happy_var_1 )} -happyReduce_223 = happySpecReduce_3 70# happyReduction_223 -happyReduction_223 happy_x_3 +happyReduce_222 = happySpecReduce_3 70# happyReduction_222 +happyReduction_222 happy_x_3 happy_x_2 happy_x_1 = case happyOut75 happy_x_1 of { happy_var_1 -> @@ -2732,215 +2735,237 @@ happyReduction_223 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_224 = happySpecReduce_3 71# happyReduction_224 -happyReduction_224 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut70 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> - happyIn78 - (Case happy_var_1 happy_var_3 - )}} +happyReduce_223 = happySpecReduce_0 71# happyReduction_223 +happyReduction_223 = happyIn78 + ([] + ) -happyReduce_225 = happySpecReduce_1 72# happyReduction_225 -happyReduction_225 happy_x_1 - = case happyOut78 happy_x_1 of { happy_var_1 -> - happyIn79 +happyReduce_224 = happySpecReduce_1 71# happyReduction_224 +happyReduction_224 happy_x_1 + = case happyOut76 happy_x_1 of { happy_var_1 -> + happyIn78 ((:[]) happy_var_1 )} +happyReduce_225 = happySpecReduce_3 71# happyReduction_225 +happyReduction_225 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOut78 happy_x_3 of { happy_var_3 -> + happyIn78 + ((:) happy_var_1 happy_var_3 + )}} + happyReduce_226 = happySpecReduce_3 72# happyReduction_226 happyReduction_226 happy_x_3 happy_x_2 happy_x_1 - = case happyOut78 happy_x_1 of { happy_var_1 -> - case happyOut79 happy_x_3 of { happy_var_3 -> + = case happyOut66 happy_x_1 of { happy_var_1 -> + case happyOut60 happy_x_3 of { happy_var_3 -> happyIn79 + (Case happy_var_1 happy_var_3 + )}} + +happyReduce_227 = happySpecReduce_1 73# happyReduction_227 +happyReduction_227 happy_x_1 + = case happyOut79 happy_x_1 of { happy_var_1 -> + happyIn80 + ((:[]) happy_var_1 + )} + +happyReduce_228 = happySpecReduce_3 73# happyReduction_228 +happyReduction_228 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut79 happy_x_1 of { happy_var_1 -> + case happyOut80 happy_x_3 of { happy_var_3 -> + happyIn80 ((:) happy_var_1 happy_var_3 )}} -happyReduce_227 = happySpecReduce_3 73# happyReduction_227 -happyReduction_227 happy_x_3 +happyReduce_229 = happySpecReduce_3 74# happyReduction_229 +happyReduction_229 happy_x_3 happy_x_2 happy_x_1 - = case happyOut69 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> - happyIn80 + = case happyOut71 happy_x_1 of { happy_var_1 -> + case happyOut60 happy_x_3 of { happy_var_3 -> + happyIn81 (Equ happy_var_1 happy_var_3 )}} -happyReduce_228 = happySpecReduce_0 74# happyReduction_228 -happyReduction_228 = happyIn81 +happyReduce_230 = happySpecReduce_0 75# happyReduction_230 +happyReduction_230 = happyIn82 ([] ) -happyReduce_229 = happySpecReduce_1 74# happyReduction_229 -happyReduction_229 happy_x_1 - = case happyOut80 happy_x_1 of { happy_var_1 -> - happyIn81 +happyReduce_231 = happySpecReduce_1 75# happyReduction_231 +happyReduction_231 happy_x_1 + = case happyOut81 happy_x_1 of { happy_var_1 -> + happyIn82 ((:[]) happy_var_1 )} -happyReduce_230 = happySpecReduce_3 74# happyReduction_230 -happyReduction_230 happy_x_3 +happyReduce_232 = happySpecReduce_3 75# happyReduction_232 +happyReduction_232 happy_x_3 happy_x_2 happy_x_1 - = case happyOut80 happy_x_1 of { happy_var_1 -> - case happyOut81 happy_x_3 of { happy_var_3 -> - happyIn81 + = case happyOut81 happy_x_1 of { happy_var_1 -> + case happyOut82 happy_x_3 of { happy_var_3 -> + happyIn82 ((:) happy_var_1 happy_var_3 )}} -happyReduce_231 = happySpecReduce_3 75# happyReduction_231 -happyReduction_231 happy_x_3 +happyReduce_233 = happySpecReduce_3 76# happyReduction_233 +happyReduction_233 happy_x_3 happy_x_2 happy_x_1 - = case happyOut59 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> - happyIn82 + = case happyOut60 happy_x_1 of { happy_var_1 -> + case happyOut60 happy_x_3 of { happy_var_3 -> + happyIn83 (Alt happy_var_1 happy_var_3 )}} -happyReduce_232 = happySpecReduce_0 76# happyReduction_232 -happyReduction_232 = happyIn83 +happyReduce_234 = happySpecReduce_0 77# happyReduction_234 +happyReduction_234 = happyIn84 ([] ) -happyReduce_233 = happySpecReduce_1 76# happyReduction_233 -happyReduction_233 happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - happyIn83 +happyReduce_235 = happySpecReduce_1 77# happyReduction_235 +happyReduction_235 happy_x_1 + = case happyOut83 happy_x_1 of { happy_var_1 -> + happyIn84 ((:[]) happy_var_1 )} -happyReduce_234 = happySpecReduce_3 76# happyReduction_234 -happyReduction_234 happy_x_3 +happyReduce_236 = happySpecReduce_3 77# happyReduction_236 +happyReduction_236 happy_x_3 happy_x_2 happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOut83 happy_x_3 of { happy_var_3 -> - happyIn83 + = case happyOut83 happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_3 of { happy_var_3 -> + happyIn84 ((:) happy_var_1 happy_var_3 )}} -happyReduce_235 = happyReduce 5# 77# happyReduction_235 -happyReduction_235 (happy_x_5 `HappyStk` +happyReduce_237 = happyReduce 5# 78# happyReduction_237 +happyReduction_237 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut72 happy_x_2 of { happy_var_2 -> - case happyOut59 happy_x_4 of { happy_var_4 -> - happyIn84 + = case happyOut73 happy_x_2 of { happy_var_2 -> + case happyOut60 happy_x_4 of { happy_var_4 -> + happyIn85 (DDDec happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_236 = happySpecReduce_1 77# happyReduction_236 -happyReduction_236 happy_x_1 +happyReduce_238 = happySpecReduce_1 78# happyReduction_238 +happyReduction_238 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn84 + happyIn85 (DDExp happy_var_1 )} -happyReduce_237 = happySpecReduce_0 78# happyReduction_237 -happyReduction_237 = happyIn85 +happyReduce_239 = happySpecReduce_0 79# happyReduction_239 +happyReduction_239 = happyIn86 ([] ) -happyReduce_238 = happySpecReduce_2 78# happyReduction_238 -happyReduction_238 happy_x_2 +happyReduce_240 = happySpecReduce_2 79# happyReduction_240 +happyReduction_240 happy_x_2 happy_x_1 - = case happyOut85 happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { happy_var_2 -> - happyIn85 + = case happyOut86 happy_x_1 of { happy_var_1 -> + case happyOut85 happy_x_2 of { happy_var_2 -> + happyIn86 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_239 = happySpecReduce_2 79# happyReduction_239 -happyReduction_239 happy_x_2 - happy_x_1 - = case happyOut87 happy_x_1 of { happy_var_1 -> - case happyOut22 happy_x_2 of { happy_var_2 -> - happyIn86 - (OldGr happy_var_1 (reverse happy_var_2) - )}} - -happyReduce_240 = happySpecReduce_0 80# happyReduction_240 -happyReduction_240 = happyIn87 - (NoIncl - ) - happyReduce_241 = happySpecReduce_2 80# happyReduction_241 happyReduction_241 happy_x_2 happy_x_1 - = case happyOut89 happy_x_2 of { happy_var_2 -> + = case happyOut88 happy_x_1 of { happy_var_1 -> + case happyOut22 happy_x_2 of { happy_var_2 -> happyIn87 + (OldGr happy_var_1 (reverse happy_var_2) + )}} + +happyReduce_242 = happySpecReduce_0 81# happyReduction_242 +happyReduction_242 = happyIn88 + (NoIncl + ) + +happyReduce_243 = happySpecReduce_2 81# happyReduction_243 +happyReduction_243 happy_x_2 + happy_x_1 + = case happyOut90 happy_x_2 of { happy_var_2 -> + happyIn88 (Incl happy_var_2 )} -happyReduce_242 = happySpecReduce_1 81# happyReduction_242 -happyReduction_242 happy_x_1 +happyReduce_244 = happySpecReduce_1 82# happyReduction_244 +happyReduction_244 happy_x_1 = case happyOut9 happy_x_1 of { happy_var_1 -> - happyIn88 + happyIn89 (FString happy_var_1 )} -happyReduce_243 = happySpecReduce_1 81# happyReduction_243 -happyReduction_243 happy_x_1 +happyReduce_245 = happySpecReduce_1 82# happyReduction_245 +happyReduction_245 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> - happyIn88 + happyIn89 (FIdent happy_var_1 )} -happyReduce_244 = happySpecReduce_2 81# happyReduction_244 -happyReduction_244 happy_x_2 +happyReduce_246 = happySpecReduce_2 82# happyReduction_246 +happyReduction_246 happy_x_2 happy_x_1 - = case happyOut88 happy_x_2 of { happy_var_2 -> - happyIn88 + = case happyOut89 happy_x_2 of { happy_var_2 -> + happyIn89 (FSlash happy_var_2 )} -happyReduce_245 = happySpecReduce_2 81# happyReduction_245 -happyReduction_245 happy_x_2 - happy_x_1 - = case happyOut88 happy_x_2 of { happy_var_2 -> - happyIn88 - (FDot happy_var_2 - )} - -happyReduce_246 = happySpecReduce_2 81# happyReduction_246 -happyReduction_246 happy_x_2 - happy_x_1 - = case happyOut88 happy_x_2 of { happy_var_2 -> - happyIn88 - (FMinus happy_var_2 - )} - -happyReduce_247 = happySpecReduce_2 81# happyReduction_247 +happyReduce_247 = happySpecReduce_2 82# happyReduction_247 happyReduction_247 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> - case happyOut88 happy_x_2 of { happy_var_2 -> - happyIn88 - (FAddId happy_var_1 happy_var_2 - )}} + = case happyOut89 happy_x_2 of { happy_var_2 -> + happyIn89 + (FDot happy_var_2 + )} happyReduce_248 = happySpecReduce_2 82# happyReduction_248 happyReduction_248 happy_x_2 happy_x_1 - = case happyOut88 happy_x_1 of { happy_var_1 -> + = case happyOut89 happy_x_2 of { happy_var_2 -> happyIn89 + (FMinus happy_var_2 + )} + +happyReduce_249 = happySpecReduce_2 82# happyReduction_249 +happyReduction_249 happy_x_2 + happy_x_1 + = case happyOut7 happy_x_1 of { happy_var_1 -> + case happyOut89 happy_x_2 of { happy_var_2 -> + happyIn89 + (FAddId happy_var_1 happy_var_2 + )}} + +happyReduce_250 = happySpecReduce_2 83# happyReduction_250 +happyReduction_250 happy_x_2 + happy_x_1 + = case happyOut89 happy_x_1 of { happy_var_1 -> + happyIn90 ((:[]) happy_var_1 )} -happyReduce_249 = happySpecReduce_3 82# happyReduction_249 -happyReduction_249 happy_x_3 +happyReduce_251 = happySpecReduce_3 83# happyReduction_251 +happyReduction_251 happy_x_3 happy_x_2 happy_x_1 - = case happyOut88 happy_x_1 of { happy_var_1 -> - case happyOut89 happy_x_3 of { happy_var_3 -> - happyIn89 + = case happyOut89 happy_x_1 of { happy_var_1 -> + case happyOut90 happy_x_3 of { happy_var_3 -> + happyIn90 ((:) happy_var_1 happy_var_3 )}} @@ -2972,10 +2997,10 @@ happyNewToken action sts stk (tk:tks) = PT _ (TS "@") -> cont 20#; PT _ (TS "!") -> cont 21#; PT _ (TS "*") -> cont 22#; - PT _ (TS "\\") -> cont 23#; - PT _ (TS "=>") -> cont 24#; - PT _ (TS "++") -> cont 25#; - PT _ (TS "+") -> cont 26#; + PT _ (TS "+") -> cont 23#; + PT _ (TS "++") -> cont 24#; + PT _ (TS "\\") -> cont 25#; + PT _ (TS "=>") -> cont 26#; PT _ (TS "_") -> cont 27#; PT _ (TS "$") -> cont 28#; PT _ (TS "/") -> cont 29#; @@ -3053,10 +3078,10 @@ pModDef tks = happySomeParser where happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut14 x)) pOldGrammar tks = happySomeParser where - happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (happyOut86 x)) + happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (happyOut87 x)) pExp tks = happySomeParser where - happySomeParser = happyThen (happyParse 3# tks) (\x -> happyReturn (happyOut59 x)) + happySomeParser = happyThen (happyParse 3# tks) (\x -> happyReturn (happyOut60 x)) happySeq = happyDontSeq @@ -3072,13 +3097,22 @@ happyError ts = myLexer = tokens {-# LINE 1 "GenericTemplate.hs" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "GenericTemplate.hs" #-} -- $Id$ -{-# LINE 28 "GenericTemplate.hs" #-} + + + + + + + + + + + +{-# LINE 27 "GenericTemplate.hs" #-} + data Happy_IntList = HappyCons Int# Happy_IntList @@ -3088,10 +3122,28 @@ data Happy_IntList = HappyCons Int# Happy_IntList -{-# LINE 49 "GenericTemplate.hs" #-} -{-# LINE 59 "GenericTemplate.hs" #-} + + + + + + + + + + + + + + + + + + + + @@ -3192,7 +3244,8 @@ data HappyAddr = HappyA# Addr# ----------------------------------------------------------------------------- -- HappyState data type (not arrays) -{-# LINE 170 "GenericTemplate.hs" #-} +{-# LINE 169 "GenericTemplate.hs" #-} + ----------------------------------------------------------------------------- -- Shifting a token diff --git a/src/GF/Source/PrintGF.hs b/src/GF/Source/PrintGF.hs index 51e7317e3..c01329227 100644 --- a/src/GF/Source/PrintGF.hs +++ b/src/GF/Source/PrintGF.hs @@ -1,11 +1,10 @@ - -module GF.Source.PrintGF where +module GF.Source.PrintGF where --H -- pretty-printer generated by the BNF converter, except --H import GF.Infra.Ident --H -import GF.Source.AbsGF -import Data.Char +import GF.Source.AbsGF --H +import Data.Char --H -- the top-level printing method printTree :: Print a => a -> String @@ -27,13 +26,11 @@ render d = rend 0 (map ($ "") $ d []) "" where "[" :ts -> showChar '[' . rend i ts "(" :ts -> showChar '(' . rend i ts - "%" :ts -> showChar '%' . rend i ts "{" :ts -> showChar '{' . new (i+1) . rend (i+1) ts "}" : ";":ts -> new (i-1) . space "}" . showChar ';' . new (i-1) . rend (i-1) ts "}" :ts -> new (i-1) . showChar '}' . new (i-1) . rend (i-1) ts ";" :ts -> showChar ';' . new i . rend i ts t : "," :ts -> showString t . space "," . rend i ts - t : "%" :ts -> showString t . showChar '%' . rend i ts t : ")" :ts -> showString t . showChar ')' . rend i ts t : "]" :ts -> showString t . showChar ']' . rend i ts t :ts -> space t . rend i ts @@ -62,12 +59,6 @@ class Print a where instance Print a => Print [a] where prt _ = prtList -instance Print Integer where - prt _ x = doc (shows x) - -instance Print Double where - prt _ x = doc (shows x) - instance Print Char where prt _ s = doc (showChar '\'' . mkEsc '\'' s . showChar '\'') prtList s = doc (showChar '"' . concatS (map (mkEsc '"') s) . showChar '"') @@ -84,8 +75,16 @@ prPrec :: Int -> Int -> Doc -> Doc prPrec i j = if j (concatD [prt 0 x]) x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs]) @@ -192,6 +191,7 @@ instance Print Included where prt i e = case e of IAll id -> prPrec i 0 (concatD [prt 0 id]) ISome id ids -> prPrec i 0 (concatD [prt 0 id , doc (showString "[") , prt 0 ids , doc (showString "]")]) + IMinus id ids -> prPrec i 0 (concatD [prt 0 id , doc (showString "-") , doc (showString "[") , prt 0 ids , doc (showString "]")]) prtList es = case es of [] -> (concatD []) @@ -329,49 +329,50 @@ instance Print LocDef where instance Print Exp where prt i e = case e of - EIdent id -> prPrec i 4 (concatD [prt 0 id]) - EConstr id -> prPrec i 4 (concatD [doc (showString "{0") , prt 0 id , doc (showString "}0")]) -- H - ECons id -> prPrec i 4 (concatD [doc (showString "%") , prt 0 id , doc (showString "%")]) - ESort sort -> prPrec i 4 (concatD [prt 0 sort]) - EString str -> prPrec i 4 (concatD [prt 0 str]) - EInt n -> prPrec i 4 (concatD [prt 0 n]) - EFloat n -> prPrec i 4 (concatD [prt 0 n]) - EMeta -> prPrec i 4 (concatD [doc (showString "?")]) - EEmpty -> prPrec i 4 (concatD [doc (showString "[") , doc (showString "]")]) - EData -> prPrec i 4 (concatD [doc (showString "data")]) - EList id exps -> prPrec i 4 (concatD [doc (showString "[") , prt 0 id , prt 0 exps , doc (showString "]")]) - EStrings str -> prPrec i 4 (concatD [doc (showString "[") , prt 0 str , doc (showString "]")]) - ERecord locdefs -> prPrec i 4 (concatD [doc (showString "{") , prt 0 locdefs , doc (showString "}")]) - ETuple tuplecomps -> prPrec i 4 (concatD [doc (showString "<") , prt 0 tuplecomps , doc (showString ">")]) - EIndir id -> prPrec i 4 (concatD [doc (showString "(") , doc (showString "in") , prt 0 id , doc (showString ")")]) - ETyped exp0 exp -> prPrec i 4 (concatD [doc (showString "<") , prt 0 exp0 , doc (showString ":") , prt 0 exp , doc (showString ">")]) - EProj exp label -> prPrec i 3 (concatD [prt 3 exp , doc (showString ".") , prt 0 label]) - EQConstr id0 id -> prPrec i 3 (concatD [doc (showString "{0") , prt 0 id0 , doc (showString ".") , prt 0 id , doc (showString "}0")]) -- H - EQCons id0 id -> prPrec i 3 (concatD [doc (showString "%") , prt 0 id0 , doc (showString ".") , prt 0 id]) - EApp exp0 exp -> prPrec i 2 (concatD [prt 2 exp0 , prt 3 exp]) - ETable cases -> prPrec i 2 (concatD [doc (showString "table") , doc (showString "{") , prt 0 cases , doc (showString "}")]) - ETTable exp cases -> prPrec i 2 (concatD [doc (showString "table") , prt 4 exp , doc (showString "{") , prt 0 cases , doc (showString "}")]) - EVTable exp exps -> prPrec i 2 (concatD [doc (showString "table") , prt 4 exp , doc (showString "[") , prt 0 exps , doc (showString "]")]) - ECase exp cases -> prPrec i 2 (concatD [doc (showString "case") , prt 0 exp , doc (showString "of") , doc (showString "{") , prt 0 cases , doc (showString "}")]) - EVariants exps -> prPrec i 2 (concatD [doc (showString "variants") , doc (showString "{") , prt 0 exps , doc (showString "}")]) - EPre exp alterns -> prPrec i 2 (concatD [doc (showString "pre") , doc (showString "{") , prt 0 exp , doc (showString ";") , prt 0 alterns , doc (showString "}")]) - EStrs exps -> prPrec i 2 (concatD [doc (showString "strs") , doc (showString "{") , prt 0 exps , doc (showString "}")]) - EConAt id exp -> prPrec i 2 (concatD [prt 0 id , doc (showString "@") , prt 4 exp]) - ESelect exp0 exp -> prPrec i 1 (concatD [prt 1 exp0 , doc (showString "!") , prt 2 exp]) - ETupTyp exp0 exp -> prPrec i 1 (concatD [prt 1 exp0 , doc (showString "*") , prt 2 exp]) - EExtend exp0 exp -> prPrec i 1 (concatD [prt 1 exp0 , doc (showString "**") , prt 2 exp]) + EIdent id -> prPrec i 6 (concatD [prt 0 id]) + EConstr id -> prPrec i 6 (concatD [doc (showString "{0") , prt 0 id , doc (showString "}0")]) --H + ECons id -> prPrec i 6 (concatD [doc (showString "%") , prt 0 id , doc (showString "%")]) + ESort sort -> prPrec i 6 (concatD [prt 0 sort]) + EString str -> prPrec i 6 (concatD [prt 0 str]) + EInt n -> prPrec i 6 (concatD [prt 0 n]) + EFloat d -> prPrec i 6 (concatD [prt 0 d]) + EMeta -> prPrec i 6 (concatD [doc (showString "?")]) + EEmpty -> prPrec i 6 (concatD [doc (showString "[") , doc (showString "]")]) + EData -> prPrec i 6 (concatD [doc (showString "data")]) + EList id exps -> prPrec i 6 (concatD [doc (showString "[") , prt 0 id , prt 0 exps , doc (showString "]")]) + EStrings str -> prPrec i 6 (concatD [doc (showString "[") , prt 0 str , doc (showString "]")]) + ERecord locdefs -> prPrec i 6 (concatD [doc (showString "{") , prt 0 locdefs , doc (showString "}")]) + ETuple tuplecomps -> prPrec i 6 (concatD [doc (showString "<") , prt 0 tuplecomps , doc (showString ">")]) + EIndir id -> prPrec i 6 (concatD [doc (showString "(") , doc (showString "in") , prt 0 id , doc (showString ")")]) + ETyped exp0 exp -> prPrec i 6 (concatD [doc (showString "<") , prt 0 exp0 , doc (showString ":") , prt 0 exp , doc (showString ">")]) + EProj exp label -> prPrec i 5 (concatD [prt 5 exp , doc (showString ".") , prt 0 label]) + EQConstr id0 id -> prPrec i 5 (concatD [doc (showString "{0") , prt 0 id0 , doc (showString ".") , prt 0 id , doc (showString "}0")]) --H + EQCons id0 id -> prPrec i 5 (concatD [doc (showString "%") , prt 0 id0 , doc (showString ".") , prt 0 id]) + EApp exp0 exp -> prPrec i 4 (concatD [prt 4 exp0 , prt 5 exp]) + ETable cases -> prPrec i 4 (concatD [doc (showString "table") , doc (showString "{") , prt 0 cases , doc (showString "}")]) + ETTable exp cases -> prPrec i 4 (concatD [doc (showString "table") , prt 6 exp , doc (showString "{") , prt 0 cases , doc (showString "}")]) + EVTable exp exps -> prPrec i 4 (concatD [doc (showString "table") , prt 6 exp , doc (showString "[") , prt 0 exps , doc (showString "]")]) + ECase exp cases -> prPrec i 4 (concatD [doc (showString "case") , prt 0 exp , doc (showString "of") , doc (showString "{") , prt 0 cases , doc (showString "}")]) + EVariants exps -> prPrec i 4 (concatD [doc (showString "variants") , doc (showString "{") , prt 0 exps , doc (showString "}")]) + EPre exp alterns -> prPrec i 4 (concatD [doc (showString "pre") , doc (showString "{") , prt 0 exp , doc (showString ";") , prt 0 alterns , doc (showString "}")]) + EStrs exps -> prPrec i 4 (concatD [doc (showString "strs") , doc (showString "{") , prt 0 exps , doc (showString "}")]) + EConAt id exp -> prPrec i 4 (concatD [prt 0 id , doc (showString "@") , prt 6 exp]) + ESelect exp0 exp -> prPrec i 3 (concatD [prt 3 exp0 , doc (showString "!") , prt 4 exp]) + ETupTyp exp0 exp -> prPrec i 3 (concatD [prt 3 exp0 , doc (showString "*") , prt 4 exp]) + EExtend exp0 exp -> prPrec i 3 (concatD [prt 3 exp0 , doc (showString "**") , prt 4 exp]) + EGlue exp0 exp -> prPrec i 1 (concatD [prt 2 exp0 , doc (showString "+") , prt 1 exp]) + EConcat exp0 exp -> prPrec i 0 (concatD [prt 1 exp0 , doc (showString "++") , prt 0 exp]) EAbstr binds exp -> prPrec i 0 (concatD [doc (showString "\\") , prt 0 binds , doc (showString "->") , prt 0 exp]) ECTable binds exp -> prPrec i 0 (concatD [doc (showString "\\") , doc (showString "\\") , prt 0 binds , doc (showString "=>") , prt 0 exp]) EProd decl exp -> prPrec i 0 (concatD [prt 0 decl , doc (showString "->") , prt 0 exp]) - ETType exp0 exp -> prPrec i 0 (concatD [prt 1 exp0 , doc (showString "=>") , prt 0 exp]) - EConcat exp0 exp -> prPrec i 0 (concatD [prt 1 exp0 , doc (showString "++") , prt 0 exp]) - EGlue exp0 exp -> prPrec i 0 (concatD [prt 1 exp0 , doc (showString "+") , prt 0 exp]) + ETType exp0 exp -> prPrec i 0 (concatD [prt 3 exp0 , doc (showString "=>") , prt 0 exp]) ELet locdefs exp -> prPrec i 0 (concatD [doc (showString "let") , doc (showString "{") , prt 0 locdefs , doc (showString "}") , doc (showString "in") , prt 0 exp]) ELetb locdefs exp -> prPrec i 0 (concatD [doc (showString "let") , prt 0 locdefs , doc (showString "in") , prt 0 exp]) - EWhere exp locdefs -> prPrec i 0 (concatD [prt 1 exp , doc (showString "where") , doc (showString "{") , prt 0 locdefs , doc (showString "}")]) + EWhere exp locdefs -> prPrec i 0 (concatD [prt 3 exp , doc (showString "where") , doc (showString "{") , prt 0 locdefs , doc (showString "}")]) EEqs equations -> prPrec i 0 (concatD [doc (showString "fn") , doc (showString "{") , prt 0 equations , doc (showString "}")]) - ELString lstring -> prPrec i 4 (concatD [prt 0 lstring]) - ELin id -> prPrec i 2 (concatD [doc (showString "Lin") , prt 0 id]) + EExample exp str -> prPrec i 0 (concatD [doc (showString "in") , prt 5 exp , prt 0 str]) + ELString lstring -> prPrec i 6 (concatD [prt 0 lstring]) + ELin id -> prPrec i 4 (concatD [doc (showString "Lin") , prt 0 id]) prtList es = case es of [] -> (concatD []) @@ -381,26 +382,27 @@ instance Print Exp where instance Print Exps where prt i e = case e of NilExp -> prPrec i 0 (concatD []) - ConsExp exp exps -> prPrec i 0 (concatD [prt 4 exp , prt 0 exps]) + ConsExp exp exps -> prPrec i 0 (concatD [prt 6 exp , prt 0 exps]) instance Print Patt where prt i e = case e of - PW -> prPrec i 1 (concatD [doc (showString "_")]) - PV id -> prPrec i 1 (concatD [prt 0 id]) - PCon id -> prPrec i 1 (concatD [doc (showString "{0") , prt 0 id , doc (showString "}0")]) -- H - PQ id0 id -> prPrec i 1 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id]) - PInt n -> prPrec i 1 (concatD [prt 0 n]) - PFloat n -> prPrec i 1 (concatD [prt 0 n]) - PStr str -> prPrec i 1 (concatD [prt 0 str]) - PR pattasss -> prPrec i 1 (concatD [doc (showString "{") , prt 0 pattasss , doc (showString "}")]) - PTup patttuplecomps -> prPrec i 1 (concatD [doc (showString "<") , prt 0 patttuplecomps , doc (showString ">")]) - PC id patts -> prPrec i 0 (concatD [prt 0 id , prt 0 patts]) - PQC id0 id patts -> prPrec i 0 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id , prt 0 patts]) + PW -> prPrec i 2 (concatD [doc (showString "_")]) + PV id -> prPrec i 2 (concatD [prt 0 id]) + PCon id -> prPrec i 2 (concatD [doc (showString "{0") , prt 0 id , doc (showString "}0")]) --H + PQ id0 id -> prPrec i 2 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id]) + PInt n -> prPrec i 2 (concatD [prt 0 n]) + PFloat d -> prPrec i 2 (concatD [prt 0 d]) + PStr str -> prPrec i 2 (concatD [prt 0 str]) + PR pattasss -> prPrec i 2 (concatD [doc (showString "{") , prt 0 pattasss , doc (showString "}")]) + PTup patttuplecomps -> prPrec i 2 (concatD [doc (showString "<") , prt 0 patttuplecomps , doc (showString ">")]) + PC id patts -> prPrec i 1 (concatD [prt 0 id , prt 0 patts]) + PQC id0 id patts -> prPrec i 1 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id , prt 0 patts]) + PDisj patt0 patt -> prPrec i 0 (concatD [prt 0 patt0 , doc (showString "|") , prt 1 patt]) prtList es = case es of - [x] -> (concatD [prt 1 x]) - x:xs -> (concatD [prt 1 x , prt 0 xs]) + [x] -> (concatD [prt 2 x]) + x:xs -> (concatD [prt 2 x , prt 0 xs]) instance Print PattAss where prt i e = case e of @@ -426,14 +428,6 @@ instance Print Sort where Sort_Strs -> prPrec i 0 (concatD [doc (showString "Strs")]) -instance Print PattAlt where - prt i e = case e of - AltP patt -> prPrec i 0 (concatD [prt 0 patt]) - - prtList es = case es of - [x] -> (concatD [prt 0 x]) - x:xs -> (concatD [prt 0 x , doc (showString "|") , prt 0 xs]) - instance Print Bind where prt i e = case e of BIdent id -> prPrec i 0 (concatD [prt 0 id]) @@ -447,7 +441,7 @@ instance Print Bind where instance Print Decl where prt i e = case e of DDec binds exp -> prPrec i 0 (concatD [doc (showString "(") , prt 0 binds , doc (showString ":") , prt 0 exp , doc (showString ")")]) - DExp exp -> prPrec i 0 (concatD [prt 2 exp]) + DExp exp -> prPrec i 0 (concatD [prt 4 exp]) instance Print TupleComp where @@ -470,7 +464,7 @@ instance Print PattTupleComp where instance Print Case where prt i e = case e of - Case pattalts exp -> prPrec i 0 (concatD [prt 0 pattalts , doc (showString "=>") , prt 0 exp]) + Case patt exp -> prPrec i 0 (concatD [prt 0 patt , doc (showString "=>") , prt 0 exp]) prtList es = case es of [x] -> (concatD [prt 0 x]) @@ -497,7 +491,7 @@ instance Print Altern where instance Print DDecl where prt i e = case e of DDDec binds exp -> prPrec i 0 (concatD [doc (showString "(") , prt 0 binds , doc (showString ":") , prt 0 exp , doc (showString ")")]) - DDExp exp -> prPrec i 0 (concatD [prt 4 exp]) + DDExp exp -> prPrec i 0 (concatD [prt 6 exp]) prtList es = case es of [] -> (concatD []) diff --git a/src/GF/Source/SourceToGrammar.hs b/src/GF/Source/SourceToGrammar.hs index 00e7c0c56..cfd8ae827 100644 --- a/src/GF/Source/SourceToGrammar.hs +++ b/src/GF/Source/SourceToGrammar.hs @@ -517,6 +517,24 @@ transSort :: Sort -> Err String transSort x = case x of _ -> return $ printTree x +transPatts :: Patt -> Err [G.Patt] +transPatts p = case p of + PDisj p1 p2 -> liftM2 (++) (transPatts p1) (transPatts p2) + PC id patts -> liftM (map (G.PC id) . combinations) $ mapM transPatts patts + PR pattasss -> do + let (lss,ps) = unzip [(ls,p) | PA ls p <- pattasss] + ls = map LIdent $ concat lss + ps0 <- mapM transPatts ps + let ps' = combinations ps0 + lss' <- mapM trLabel ls + let rss = map (zip lss') ps' + return $ map G.PR rss + PTup pcs -> do + ps0 <- mapM transPatts [e | PTComp e <- pcs] + let ps' = combinations ps0 + return $ map (G.PR . M.tuple2recordPatt) ps' + _ -> liftM singleton $ transPatt p + transPatt :: Patt -> Err G.Patt transPatt x = case x of PW -> return G.wildPatt @@ -535,6 +553,7 @@ transPatt x = case x of PQ id0 id -> liftM3 G.PP (transIdent id0) (transIdent id) (return []) PQC id0 id patts -> liftM3 G.PP (transIdent id0) (transIdent id) (mapM transPatt patts) + PDisj _ _ -> Bad $ "not allowed pattern" +++ printTree x transBind :: Bind -> Err Ident transBind x = case x of @@ -553,8 +572,8 @@ transCases :: [Case] -> Err [G.Case] transCases = liftM concat . mapM transCase transCase :: Case -> Err [G.Case] -transCase (Case pattalts exp) = do - patts <- mapM transPatt [p | AltP p <- pattalts] +transCase (Case p exp) = do + patts <- transPatts p exp' <- transExp exp return [(p,exp') | p <- patts]