From c73bc4f996b3259fa162d7dd11a23224053ceeae Mon Sep 17 00:00:00 2001 From: aarne Date: Sat, 15 Mar 2008 14:53:42 +0000 Subject: [PATCH] switched to unmodified BNFC-generated components --- src/GF/Compile/GetGrammar.hs | 8 +- src/GF/Compile/PGrammar.hs | 2 +- src/GF/Grammar/Grammar.hs | 1 + src/GF/Grammar/PrGrammar.hs | 17 +- src/GF/Source/AbsGF.hs | 134 ++--- src/GF/Source/GF.cf | 124 +++-- src/GF/Source/GrammarToSource.hs | 33 +- src/GF/Source/LexGF.hs | 74 ++- src/GF/Source/ParGF.hs | 856 ++++++++++++++++--------------- src/GF/Source/PrintGF.hs | 152 +++--- src/GF/Source/SkelGF.hs | 155 +++--- src/GF/Source/SourceToGrammar.hs | 63 ++- src/GF/Source/TestGF.hs | 4 +- 13 files changed, 860 insertions(+), 763 deletions(-) diff --git a/src/GF/Compile/GetGrammar.hs b/src/GF/Compile/GetGrammar.hs index 2b908bd81..41c2c063d 100644 --- a/src/GF/Compile/GetGrammar.hs +++ b/src/GF/Compile/GetGrammar.hs @@ -19,7 +19,7 @@ module GF.Compile.GetGrammar ( ) where import GF.Data.Operations -import qualified GF.Data.ErrM as E ---- +import qualified GF.Source.ErrM as E import GF.Infra.UseIO import GF.Grammar.Grammar @@ -62,14 +62,14 @@ getSourceModule opts file0 = do Just "utf8" -> decodeUTF8 string0 _ -> string0 let tokens = myLexer string - mo1 <- ioeErr $ {- err2err $ -} pModDef tokens + mo1 <- ioeErr $ err2err $ pModDef tokens ioeErr $ transModDef mo1 getSourceGrammar :: Options -> FilePath -> IOE SourceGrammar getSourceGrammar opts file = do string <- readFileIOE file let tokens = myLexer string - gr1 <- ioeErr $ {- err2err $ -} pGrammar tokens + gr1 <- ioeErr $ err2err $ pGrammar tokens ioeErr $ transGrammar gr1 @@ -101,7 +101,7 @@ parseOldGrammar :: FilePath -> IOE ([FilePath],[A.TopDef]) parseOldGrammar file = do putStrLnE $ "reading old file" +++ file s <- ioeIO $ readFileIf file - A.OldGr incl topdefs <- ioeErr $ pOldGrammar $ oldLexer $ fixNewlines s + A.OldGr incl topdefs <- ioeErr $ err2err $ pOldGrammar $ oldLexer $ fixNewlines s includes <- ioeErr $ transInclude incl return (includes, topdefs) diff --git a/src/GF/Compile/PGrammar.hs b/src/GF/Compile/PGrammar.hs index 1890ff0dd..1c6f0b411 100644 --- a/src/GF/Compile/PGrammar.hs +++ b/src/GF/Compile/PGrammar.hs @@ -32,7 +32,7 @@ import GF.Data.Operations pTerm :: String -> Err Term pTerm s = do - e <- {- err2err $ -} pExp $ myLexer s + e <- err2err $ pExp $ myLexer s transExp e pTrm :: String -> Term diff --git a/src/GF/Grammar/Grammar.hs b/src/GF/Grammar/Grammar.hs index 85e515342..45b3da84b 100644 --- a/src/GF/Grammar/Grammar.hs +++ b/src/GF/Grammar/Grammar.hs @@ -191,6 +191,7 @@ data Patt = | PSeq Patt Patt -- ^ sequence of token parts: p + q | PRep Patt -- ^ repetition of token part: p* | PChar -- ^ string of length one + | PChars [Char] -- ^ character list deriving (Read, Show, Eq, Ord) diff --git a/src/GF/Grammar/PrGrammar.hs b/src/GF/Grammar/PrGrammar.hs index ad65f452b..c3a21d1d6 100644 --- a/src/GF/Grammar/PrGrammar.hs +++ b/src/GF/Grammar/PrGrammar.hs @@ -48,6 +48,8 @@ import GF.Infra.Option import GF.Infra.Ident import GF.Data.Str +import GF.Infra.CompactPrint + import Data.List (intersperse) class Print a where @@ -71,24 +73,27 @@ class Print a where prtBad :: Print a => String -> a -> Err b prtBad s a = Bad (s +++ prt a) +pprintTree :: P.Print a => a -> String +pprintTree = compactPrint . P.printTree + prGrammar :: SourceGrammar -> String -prGrammar = P.printTree . trGrammar +prGrammar = pprintTree . trGrammar prModule :: (Ident, SourceModInfo) -> String -prModule = P.printTree . trModule +prModule = pprintTree . trModule instance Print Term where - prt = P.printTree . trt + prt = pprintTree . trt prt_ = prExp instance Print Ident where - prt = P.printTree . tri + prt = pprintTree . tri instance Print Patt where - prt = P.printTree . trp + prt = pprintTree . trp instance Print Label where - prt = P.printTree . trLabel + prt = pprintTree . trLabel instance Print MetaSymb where prt (MetaSymb i) = "?" ++ show i diff --git a/src/GF/Source/AbsGF.hs b/src/GF/Source/AbsGF.hs index e6b389576..63cc43006 100644 --- a/src/GF/Source/AbsGF.hs +++ b/src/GF/Source/AbsGF.hs @@ -1,26 +1,24 @@ -module GF.Source.AbsGF where --H +module GF.Source.AbsGF where -import GF.Infra.Ident --H +-- Haskell module generated by the BNF converter --- Haskell module generated by the BNF converter, except --H - --- newtype Ident = Ident String deriving (Eq,Ord,Show) --H newtype LString = LString String deriving (Eq,Ord,Show) +newtype PIdent = PIdent ((Int,Int),String) deriving (Eq,Ord,Show) data Grammar = Gr [ModDef] deriving (Eq,Ord,Show) data ModDef = - MMain Ident Ident [ConcSpec] + MMain PIdent PIdent [ConcSpec] | MModule ComplMod ModType ModBody deriving (Eq,Ord,Show) data ConcSpec = - ConcSpec Ident ConcExp + ConcSpec PIdent ConcExp deriving (Eq,Ord,Show) data ConcExp = - ConcExp Ident [Transfer] + ConcExp PIdent [Transfer] deriving (Eq,Ord,Show) data Transfer = @@ -29,22 +27,22 @@ data Transfer = deriving (Eq,Ord,Show) data ModType = - MTAbstract Ident - | MTResource Ident - | MTInterface Ident - | MTConcrete Ident Ident - | MTInstance Ident Ident - | MTTransfer Ident Open Open + MTAbstract PIdent + | MTResource PIdent + | MTInterface PIdent + | MTConcrete PIdent PIdent + | MTInstance PIdent PIdent + | MTTransfer PIdent Open Open deriving (Eq,Ord,Show) data ModBody = - MNoBody [Included] - | MWithBody Included [Open] Opens [TopDef] - | MWithEBody [Included] Included [Open] Opens [TopDef] - | MBody Extend Opens [TopDef] + MBody Extend Opens [TopDef] + | MNoBody [Included] | MWith Included [Open] + | MWithBody Included [Open] Opens [TopDef] | MWithE [Included] Included [Open] - | MReuse Ident + | MWithEBody [Included] Included [Open] Opens [TopDef] + | MReuse PIdent | MUnion [Included] deriving (Eq,Ord,Show) @@ -59,9 +57,9 @@ data Opens = deriving (Eq,Ord,Show) data Open = - OName Ident - | OQualQO QualOpen Ident - | OQual QualOpen Ident Ident + OName PIdent + | OQualQO QualOpen PIdent + | OQual QualOpen PIdent PIdent deriving (Eq,Ord,Show) data ComplMod = @@ -76,9 +74,9 @@ data QualOpen = deriving (Eq,Ord,Show) data Included = - IAll Ident - | ISome Ident [Ident] - | IMinus Ident [Ident] + IAll PIdent + | ISome PIdent [PIdent] + | IMinus PIdent [PIdent] deriving (Eq,Ord,Show) data Def = @@ -106,38 +104,38 @@ data TopDef = | DefPrintOld [PrintDef] | DefLintype [Def] | DefPattern [Def] - | DefPackage Ident [TopDef] + | DefPackage PIdent [TopDef] | DefVars [Def] - | DefTokenizer Ident + | DefTokenizer PIdent deriving (Eq,Ord,Show) data CatDef = - SimpleCatDef Ident [DDecl] - | ListCatDef Ident [DDecl] - | ListSizeCatDef Ident [DDecl] Integer + SimpleCatDef PIdent [DDecl] + | ListCatDef PIdent [DDecl] + | ListSizeCatDef PIdent [DDecl] Integer deriving (Eq,Ord,Show) data FunDef = - FunDef [Ident] Exp + FunDef [PIdent] Exp deriving (Eq,Ord,Show) data DataDef = - DataDef Ident [DataConstr] + DataDef PIdent [DataConstr] deriving (Eq,Ord,Show) data DataConstr = - DataId Ident - | DataQId Ident Ident + DataId PIdent + | DataQId PIdent PIdent deriving (Eq,Ord,Show) data ParDef = - ParDefDir Ident [ParConstr] - | ParDefIndir Ident Ident - | ParDefAbs Ident + ParDefDir PIdent [ParConstr] + | ParDefIndir PIdent PIdent + | ParDefAbs PIdent deriving (Eq,Ord,Show) data ParConstr = - ParConstr Ident [DDecl] + ParConstr PIdent [DDecl] deriving (Eq,Ord,Show) data PrintDef = @@ -145,24 +143,24 @@ data PrintDef = deriving (Eq,Ord,Show) data FlagDef = - FlagDef Ident Ident + FlagDef PIdent PIdent deriving (Eq,Ord,Show) data Name = - IdentName Ident - | ListName Ident + IdentName PIdent + | ListName PIdent deriving (Eq,Ord,Show) data LocDef = - LDDecl [Ident] Exp - | LDDef [Ident] Exp - | LDFull [Ident] Exp Exp + LDDecl [PIdent] Exp + | LDDef [PIdent] Exp + | LDFull [PIdent] Exp Exp deriving (Eq,Ord,Show) data Exp = - EIdent Ident - | EConstr Ident - | ECons Ident + EIdent PIdent + | EConstr PIdent + | ECons PIdent | ESort Sort | EString String | EInt Integer @@ -170,15 +168,15 @@ data Exp = | EMeta | EEmpty | EData - | EList Ident Exps + | EList PIdent Exps | EStrings String | ERecord [LocDef] | ETuple [TupleComp] - | EIndir Ident + | EIndir PIdent | ETyped Exp Exp | EProj Exp Label - | EQConstr Ident Ident - | EQCons Ident Ident + | EQConstr PIdent PIdent + | EQCons PIdent PIdent | EApp Exp Exp | ETable [Case] | ETTable Exp [Case] @@ -187,7 +185,9 @@ data Exp = | EVariants [Exp] | EPre Exp [Altern] | EStrs [Exp] - | EConAt Ident Exp + | EConAt PIdent Exp + | EPatt Patt + | EPattType Exp | ESelect Exp Exp | ETupTyp Exp Exp | EExtend Exp Exp @@ -203,7 +203,7 @@ data Exp = | EEqs [Equation] | EExample Exp String | ELString LString - | ELin Ident + | ELin PIdent deriving (Eq,Ord,Show) data Exps = @@ -212,30 +212,34 @@ data Exps = deriving (Eq,Ord,Show) data Patt = - PW - | PV Ident - | PCon Ident - | PQ Ident Ident + PChar + | PChars String + | PMacro PIdent + | PM PIdent PIdent + | PW + | PV PIdent + | PCon PIdent + | PQ PIdent PIdent | PInt Integer | PFloat Double | PStr String | PR [PattAss] | PTup [PattTupleComp] - | PC Ident [Patt] - | PQC Ident Ident [Patt] + | PC PIdent [Patt] + | PQC PIdent PIdent [Patt] | PDisj Patt Patt | PSeq Patt Patt | PRep Patt - | PAs Ident Patt + | PAs PIdent Patt | PNeg Patt deriving (Eq,Ord,Show) data PattAss = - PA [Ident] Patt + PA [PIdent] Patt deriving (Eq,Ord,Show) data Label = - LIdent Ident + LIdent PIdent | LVar Integer deriving (Eq,Ord,Show) @@ -248,7 +252,7 @@ data Sort = deriving (Eq,Ord,Show) data Bind = - BIdent Ident + BIdent PIdent | BWild deriving (Eq,Ord,Show) @@ -293,10 +297,10 @@ data Include = data FileName = FString String - | FIdent Ident + | FIdent PIdent | FSlash FileName | FDot FileName | FMinus FileName - | FAddId Ident FileName + | FAddId PIdent FileName deriving (Eq,Ord,Show) diff --git a/src/GF/Source/GF.cf b/src/GF/Source/GF.cf index 7b12952d8..5de0d1f87 100644 --- a/src/GF/Source/GF.cf +++ b/src/GF/Source/GF.cf @@ -21,12 +21,12 @@ _. ModDef ::= ModDef ";" ; -- The $main$ multilingual grammar structure --% -MMain. ModDef ::= "grammar" Ident "=" "{" "abstract" "=" Ident ";" [ConcSpec] "}" ;--% +MMain. ModDef ::= "grammar" PIdent "=" "{" "abstract" "=" PIdent ";" [ConcSpec] "}" ;--% -ConcSpec. ConcSpec ::= Ident "=" ConcExp ;--% +ConcSpec. ConcSpec ::= PIdent "=" ConcExp ;--% separator ConcSpec ";" ;--% -ConcExp. ConcExp ::= Ident [Transfer] ;--% +ConcExp. ConcExp ::= PIdent [Transfer] ;--% separator Transfer "" ;--% TransferIn. Transfer ::= "(" "transfer" "in" Open ")" ; --% @@ -36,12 +36,12 @@ TransferOut. Transfer ::= "(" "transfer" "out" Open ")" ; --% MModule. ModDef ::= ComplMod ModType "=" ModBody ; -MTAbstract. ModType ::= "abstract" Ident ; -MTResource. ModType ::= "resource" Ident ; -MTInterface. ModType ::= "interface" Ident ; -MTConcrete. ModType ::= "concrete" Ident "of" Ident ; -MTInstance. ModType ::= "instance" Ident "of" Ident ; -MTTransfer. ModType ::= "transfer" Ident ":" Open "->" Open ; +MTAbstract. ModType ::= "abstract" PIdent ; +MTResource. ModType ::= "resource" PIdent ; +MTInterface. ModType ::= "interface" PIdent ; +MTConcrete. ModType ::= "concrete" PIdent "of" PIdent ; +MTInstance. ModType ::= "instance" PIdent "of" PIdent ; +MTTransfer. ModType ::= "transfer" PIdent ":" Open "->" Open ; MBody. ModBody ::= Extend Opens "{" [TopDef] "}" ; @@ -51,7 +51,7 @@ MWithBody. ModBody ::= Included "with" [Open] "**" Opens "{" [T MWithE. ModBody ::= [Included] "**" Included "with" [Open] ; MWithEBody. ModBody ::= [Included] "**" Included "with" [Open] "**" Opens "{" [TopDef] "}" ; -MReuse. ModBody ::= "reuse" Ident ; --% +MReuse. ModBody ::= "reuse" PIdent ; --% MUnion. ModBody ::= "union" [Included] ;--% separator TopDef "" ; @@ -63,9 +63,9 @@ separator Open "," ; NoOpens. Opens ::= ; OpenIn. Opens ::= "open" [Open] "in" ; -OName. Open ::= Ident ; -OQualQO. Open ::= "(" QualOpen Ident ")" ; -OQual. Open ::= "(" QualOpen Ident "=" Ident ")" ; +OName. Open ::= PIdent ; +OQualQO. Open ::= "(" QualOpen PIdent ")" ; +OQual. Open ::= "(" QualOpen PIdent "=" PIdent ")" ; CMCompl. ComplMod ::= ; CMIncompl. ComplMod ::= "incomplete" ; @@ -76,9 +76,9 @@ QOInterface. QualOpen ::= "interface" ;--% separator Included "," ; -IAll. Included ::= Ident ; -ISome. Included ::= Ident "[" [Ident] "]" ; -IMinus. Included ::= Ident "-" "[" [Ident] "]" ; +IAll. Included ::= PIdent ; +ISome. Included ::= PIdent "[" [PIdent] "]" ; +IMinus. Included ::= PIdent "-" "[" [PIdent] "]" ; -- definitions after the $oper$ keywords @@ -108,27 +108,27 @@ DefPrintCat. TopDef ::= "printname" "cat" [PrintDef] ; DefPrintFun. TopDef ::= "printname" "fun" [PrintDef] ; DefFlag. TopDef ::= "flags" [FlagDef] ; -SimpleCatDef. CatDef ::= Ident [DDecl] ; -ListCatDef. CatDef ::= "[" Ident [DDecl] "]" ; -ListSizeCatDef. CatDef ::= "[" Ident [DDecl] "]" "{" Integer "}" ; +SimpleCatDef. CatDef ::= PIdent [DDecl] ; +ListCatDef. CatDef ::= "[" PIdent [DDecl] "]" ; +ListSizeCatDef. CatDef ::= "[" PIdent [DDecl] "]" "{" Integer "}" ; -FunDef. FunDef ::= [Ident] ":" Exp ; +FunDef. FunDef ::= [PIdent] ":" Exp ; -DataDef. DataDef ::= Ident "=" [DataConstr] ; -DataId. DataConstr ::= Ident ; -DataQId. DataConstr ::= Ident "." Ident ; +DataDef. DataDef ::= PIdent "=" [DataConstr] ; +DataId. DataConstr ::= PIdent ; +DataQId. DataConstr ::= PIdent "." PIdent ; separator DataConstr "|" ; -ParDefDir. ParDef ::= Ident "=" [ParConstr] ; -ParDefIndir. ParDef ::= Ident "=" "(" "in" Ident ")" ; -ParDefAbs. ParDef ::= Ident ; +ParDefDir. ParDef ::= PIdent "=" [ParConstr] ; +ParDefIndir. ParDef ::= PIdent "=" "(" "in" PIdent ")" ; +ParDefAbs. ParDef ::= PIdent ; -ParConstr. ParConstr ::= Ident [DDecl] ; +ParConstr. ParConstr ::= PIdent [DDecl] ; PrintDef. PrintDef ::= [Name] "=" Exp ; -FlagDef. FlagDef ::= Ident "=" Ident ; +FlagDef. FlagDef ::= PIdent "=" PIdent ; terminator nonempty Def ";" ; terminator nonempty CatDef ";" ; @@ -141,28 +141,28 @@ terminator nonempty FlagDef ";" ; separator ParConstr "|" ; -separator nonempty Ident "," ; +separator nonempty PIdent "," ; -- names of categories and functions in definition LHS -IdentName. Name ::= Ident ; -ListName. Name ::= "[" Ident "]" ; +IdentName. Name ::= PIdent ; +ListName. Name ::= "[" PIdent "]" ; separator nonempty Name "," ; -- definitions in records and $let$ expressions -LDDecl. LocDef ::= [Ident] ":" Exp ; -LDDef. LocDef ::= [Ident] "=" Exp ; -LDFull. LocDef ::= [Ident] ":" Exp "=" Exp ; +LDDecl. LocDef ::= [PIdent] ":" Exp ; +LDDef. LocDef ::= [PIdent] "=" Exp ; +LDFull. LocDef ::= [PIdent] ":" Exp "=" Exp ; separator LocDef ";" ; -- terms and types -EIdent. Exp6 ::= Ident ; -EConstr. Exp6 ::= "{" Ident "}" ;--% -ECons. Exp6 ::= "%" Ident "%" ;--% +EIdent. Exp6 ::= PIdent ; +EConstr. Exp6 ::= "{" PIdent "}" ;--% +ECons. Exp6 ::= "%" PIdent "%" ;--% ESort. Exp6 ::= Sort ; EString. Exp6 ::= String ; EInt. Exp6 ::= Integer ; @@ -170,16 +170,16 @@ EFloat. Exp6 ::= Double ; EMeta. Exp6 ::= "?" ; EEmpty. Exp6 ::= "[" "]" ; EData. Exp6 ::= "data" ; -EList. Exp6 ::= "[" Ident Exps "]" ; +EList. Exp6 ::= "[" PIdent Exps "]" ; EStrings. Exp6 ::= "[" String "]" ; ERecord. Exp6 ::= "{" [LocDef] "}" ; -- ! ETuple. Exp6 ::= "<" [TupleComp] ">" ; --- needed for separator "," -EIndir. Exp6 ::= "(" "in" Ident ")" ; -- indirection, used in judgements --% +EIndir. Exp6 ::= "(" "in" PIdent ")" ; -- indirection, used in judgements --% ETyped. Exp6 ::= "<" Exp ":" Exp ">" ; -- typing, used for annotations EProj. Exp5 ::= Exp5 "." Label ; -EQConstr. Exp5 ::= "{" Ident "." Ident "}" ; -- qualified constructor --% -EQCons. Exp5 ::= "%" Ident "." Ident ; -- qualified constant --% +EQConstr. Exp5 ::= "{" PIdent "." PIdent "}" ; -- qualified constructor --% +EQCons. Exp5 ::= "%" PIdent "." PIdent ; -- qualified constant --% EApp. Exp4 ::= Exp4 Exp5 ; ETable. Exp4 ::= "table" "{" [Case] "}" ; @@ -187,9 +187,13 @@ ETTable. Exp4 ::= "table" Exp6 "{" [Case] "}" ; EVTable. Exp4 ::= "table" Exp6 "[" [Exp] "]" ; ECase. Exp4 ::= "case" Exp "of" "{" [Case] "}" ; EVariants. Exp4 ::= "variants" "{" [Exp] "}" ; +--- EPreCase. Exp4 ::= "pre" "{" [Case] "}" ; EPre. Exp4 ::= "pre" "{" Exp ";" [Altern] "}" ; EStrs. Exp4 ::= "strs" "{" [Exp] "}" ; -EConAt. Exp4 ::= Ident "@" Exp6 ; --% +EConAt. Exp4 ::= PIdent "@" Exp6 ; --% + +EPatt. Exp4 ::= "pattern" Patt2 ; +EPattType. Exp4 ::= "pattern" "type" Exp5 ; ESelect. Exp3 ::= Exp3 "!" Exp4 ; ETupTyp. Exp3 ::= Exp3 "*" Exp4 ; @@ -220,30 +224,34 @@ ConsExp. Exps ::= Exp6 Exps ; -- Exp6 to force parantheses -- patterns +PChar. Patt2 ::= "?" ; +PChars. Patt2 ::= "[" String "]" ; +PMacro. Patt2 ::= "#" PIdent ; +PM. Patt2 ::= "#" PIdent "." PIdent ; PW. Patt2 ::= "_" ; -PV. Patt2 ::= Ident ; -PCon. Patt2 ::= "{" Ident "}" ; --% -PQ. Patt2 ::= Ident "." Ident ; +PV. Patt2 ::= PIdent ; +PCon. Patt2 ::= "{" PIdent "}" ; --% +PQ. Patt2 ::= PIdent "." PIdent ; PInt. Patt2 ::= Integer ; PFloat. Patt2 ::= Double ; PStr. Patt2 ::= String ; PR. Patt2 ::= "{" [PattAss] "}" ; PTup. Patt2 ::= "<" [PattTupleComp] ">" ; -PC. Patt1 ::= Ident [Patt] ; -PQC. Patt1 ::= Ident "." Ident [Patt] ; +PC. Patt1 ::= PIdent [Patt] ; +PQC. Patt1 ::= PIdent "." PIdent [Patt] ; PDisj. Patt ::= Patt "|" Patt1 ; PSeq. Patt ::= Patt "+" Patt1 ; PRep. Patt1 ::= Patt2 "*" ; -PAs. Patt1 ::= Ident "@" Patt2 ; +PAs. Patt1 ::= PIdent "@" Patt2 ; PNeg. Patt1 ::= "-" Patt2 ; coercions Patt 2 ; -PA. PattAss ::= [Ident] "=" Patt ; +PA. PattAss ::= [PIdent] "=" Patt ; -- labels -LIdent. Label ::= Ident ; +LIdent. Label ::= PIdent ; LVar. Label ::= "$" Integer ; -- basic types @@ -264,7 +272,7 @@ separator PattAss ";" ; -- binds in lambdas and lin rules -BIdent. Bind ::= Ident ; +BIdent. Bind ::= PIdent ; BWild. Bind ::= "_" ; separator Bind "," ; @@ -322,23 +330,27 @@ FString. FileName ::= String ; --% terminator nonempty FileName ";" ; --% -FIdent. FileName ::= Ident ; --% +FIdent. FileName ::= PIdent ; --% FSlash. FileName ::= "/" FileName ; --% FDot. FileName ::= "." FileName ; --% FMinus. FileName ::= "-" FileName ; --% -FAddId. FileName ::= Ident FileName ; --% +FAddId. FileName ::= PIdent FileName ; --% token LString '\'' (char - '\'')* '\'' ; --% ELString. Exp6 ::= LString ; --% -ELin. Exp4 ::= "Lin" Ident ; --% +ELin. Exp4 ::= "Lin" PIdent ; --% DefPrintOld. TopDef ::= "printname" [PrintDef] ; --% DefLintype. TopDef ::= "lintype" [Def] ; --% DefPattern. TopDef ::= "pattern" [Def] ; --% -- deprecated packages are attempted to be interpreted --% -DefPackage. TopDef ::= "package" Ident "=" "{" [TopDef] "}" ";" ; --% +DefPackage. TopDef ::= "package" PIdent "=" "{" [TopDef] "}" ";" ; --% -- these two are just ignored after parsing --% DefVars. TopDef ::= "var" [Def] ; --% -DefTokenizer. TopDef ::= "tokenizer" Ident ";" ; --% +DefTokenizer. TopDef ::= "tokenizer" PIdent ";" ; --% + +-- identifiers + +position token PIdent ('_' | letter) (letter | digit | '_' | '\'')* ; diff --git a/src/GF/Source/GrammarToSource.hs b/src/GF/Source/GrammarToSource.hs index 9ad8b8850..8c70b8ea3 100644 --- a/src/GF/Source/GrammarToSource.hs +++ b/src/GF/Source/GrammarToSource.hs @@ -96,17 +96,17 @@ trAnyDef (i,info) = let i' = tri i in case info of ResOverload tysts -> [P.DefOper [P.DDef [mkName i'] ( - P.EApp (P.EIdent $ identC "overload") + P.EApp (P.EIdent $ tri $ identC "overload") (P.ERecord [P.LDFull [i'] (trt ty) (trt fu) | (ty,fu) <- tysts]))]] CncCat (Yes ty) Nope _ -> [P.DefLincat [P.PrintDef [mkName i'] (trt ty)]] CncCat pty ptr ppr -> [P.DefLindef [trDef i' pty ptr]] ++ - [P.DefPrintCat [P.PrintDef [mkName i] (trt pr)] | Yes pr <- [ppr]] + [P.DefPrintCat [P.PrintDef [mkName i'] (trt pr)] | Yes pr <- [ppr]] CncFun _ ptr ppr -> [P.DefLin [trDef i' nope ptr]] ++ - [P.DefPrintFun [P.PrintDef [mkName i] (trt pr)] | Yes pr <- [ppr]] + [P.DefPrintFun [P.PrintDef [mkName i'] (trt pr)] | Yes pr <- [ppr]] {- ---- encoding of AnyInd without changing syntax. AR 20/9/2007 AnyInd s b -> @@ -116,7 +116,7 @@ trAnyDef (i,info) = let i' = tri i in case info of _ -> [] -trDef :: Ident -> Perh Type -> Perh Term -> P.Def +trDef :: P.PIdent -> Perh Type -> Perh Term -> P.Def trDef i pty ptr = case (pty,ptr) of (Nope, Nope) -> P.DDef [mkName i] (P.EMeta) --- (_, Nope) -> P.DDecl [mkName i] (trPerh pty) @@ -131,7 +131,7 @@ trPerh p = case p of trFlag :: Option -> P.TopDef trFlag o = case o of - Opt (f,[x]) -> P.DefFlag [P.FlagDef (identC f) (identC x)] + Opt (f,[x]) -> P.DefFlag [P.FlagDef (tri $ identC f) (tri $ identC x)] _ -> P.DefFlag [] --- warning? trt :: Term -> P.Exp @@ -207,7 +207,7 @@ trp p = case p of PC c a -> P.PC (tri c) (map trp a) PP p c [] -> P.PQ (tri p) (tri c) PP p c a -> P.PQC (tri p) (tri c) (map trp a) - PR r -> P.PR [P.PA [trLabelIdent l] (trp p) | (l,p) <- r] + PR r -> P.PR [P.PA [tri $ trLabelIdent l] (trp p) | (l,p) <- r] PString s -> P.PStr s PInt i -> P.PInt i PFloat i -> P.PFloat i @@ -219,36 +219,37 @@ trp p = case p of PSeq p q -> P.PSeq (trp p) (trp q) PRep p -> P.PRep (trp p) PNeg p -> P.PNeg (trp p) - PChar -> P.PV (IC "C_") ---- temporary encoding + PChar -> P.PChar + PChars s -> P.PChars s trAssign (lab, (mty, t)) = maybe (P.LDDef x t') (\ty -> P.LDFull x (trt ty) t') mty where t' = trt t - x = [trLabelIdent lab] + x = [tri $ trLabelIdent lab] -trLabelling (lab,ty) = P.LDDecl [trLabelIdent lab] (trt ty) +trLabelling (lab,ty) = P.LDDecl [tri $ trLabelIdent lab] (trt ty) 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) -tri :: Ident -> Ident -tri i = case prIdent i of - s@('_':_:_) -> identC $ 'h':s ---- unsafe; needed since _3 etc are generated - s -> identC $ s - +tri :: Ident -> P.PIdent +tri = ppIdent . prIdent + +ppIdent i = P.PIdent ((0,0),i) + trb i = if isWildIdent i then P.BWild else P.BIdent (tri i) trLabel :: Label -> P.Label trLabel i = case i of - LIdent s -> P.LIdent $ identC s + LIdent s -> P.LIdent $ ppIdent s LVar i -> P.LVar $ toInteger i trLabelIdent i = identC $ case i of LIdent s -> s LVar i -> "v" ++ show i --- should not happen -mkName :: Ident -> P.Name +mkName :: P.PIdent -> P.Name mkName = P.IdentName diff --git a/src/GF/Source/LexGF.hs b/src/GF/Source/LexGF.hs index 4fd8922f2..0096fea3b 100644 --- a/src/GF/Source/LexGF.hs +++ b/src/GF/Source/LexGF.hs @@ -1,9 +1,9 @@ {-# OPTIONS -fglasgow-exts -cpp #-} -{-# LINE 3 "LexGF.x" #-} +{-# LINE 3 "GF/Source/LexGF.x" #-} +{-# OPTIONS -fno-warn-incomplete-patterns #-} module GF.Source.LexGF where -import GF.Data.Operations -import GF.Data.SharedString + #if __GLASGOW_HASKELL__ >= 603 #include "ghcconfig.h" @@ -24,33 +24,34 @@ 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\x27\x00\x00\x00\x13\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\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\x27\x00\x00\x00\x13\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6c\x01\x00\x00\x3c\x02\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\xe7\x01\x00\x00\xd5\x00\x00\x00\x35\x00\x00\x00\xe7\x00\x00\x00\xf2\x00\x00\x00\x1d\x01\x00\x00\xc2\x01\x00\x00\xcc\x01\x00\x00"# 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\x10\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\x11\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\x1a\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x14\x00\x0e\x00\x0e\x00\x0f\x00\x10\x00\x0e\x00\x05\x00\x0e\x00\x0e\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\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\x13\x00\x13\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x12\x00\xff\xff\x0d\x00\x20\x00\x00\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\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\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1b\x00\xff\xff\x00\x00\x00\x00\x17\x00\x1b\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\xff\xff\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\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\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x21\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1c\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\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\x00\x00\x00\x00\x18\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\xff\xff\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x1c\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x17\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\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\x00\x00\x00\x00\x18\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\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"# 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# "\x16\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\xff\xff\x15\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x1b\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))],[],[],[]] -{-# LINE 35 "LexGF.x" #-} +alex_accept = listArray (0::Int,34) [[],[],[(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_3))],[(AlexAcc (alex_action_4))],[],[],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_7))],[],[],[],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_9))],[],[],[]] +{-# LINE 36 "GF/Source/LexGF.x" #-} tok f p s = f p s share :: String -> String -share = shareString +share = id data Tok = - TS !String -- reserved words + TS !String -- reserved words and symbols | TL !String -- string literals | TI !String -- integer literals | TV !String -- identifiers | TD !String -- double precision float literals | TC !String -- character literals | T_LString !String + | T_PIdent !String deriving (Eq,Show,Ord) @@ -73,6 +74,7 @@ prToken t = case t of PT _ (TD s) -> s PT _ (TC s) -> s PT _ (T_LString s) -> s + PT _ (T_PIdent s) -> s _ -> show t @@ -86,7 +88,7 @@ eitherResIdent tv s = treeFind resWords | s > a = treeFind right | s == a = t -resWords = b "lincat" (b "def" (b "Type" (b "Str" (b "PType" (b "Lin" N N) N) (b "Tok" (b "Strs" N N) N)) (b "cat" (b "case" (b "abstract" N N) N) (b "data" (b "concrete" N N) N))) (b "include" (b "fun" (b "fn" (b "flags" N N) N) (b "in" (b "grammar" N N) N)) (b "interface" (b "instance" (b "incomplete" N N) N) (b "lin" (b "let" N N) N)))) (b "resource" (b "out" (b "of" (b "lintype" (b "lindef" N N) N) (b "oper" (b "open" N N) N)) (b "pattern" (b "param" (b "package" N N) N) (b "printname" (b "pre" N N) N))) (b "union" (b "table" (b "strs" (b "reuse" N N) N) (b "transfer" (b "tokenizer" N N) N)) (b "where" (b "variants" (b "var" N N) N) (b "with" N N)))) +resWords = b "lincat" (b "def" (b "Type" (b "Str" (b "PType" (b "Lin" N N) N) (b "Tok" (b "Strs" N N) N)) (b "cat" (b "case" (b "abstract" N N) N) (b "data" (b "concrete" N N) N))) (b "include" (b "fun" (b "fn" (b "flags" N N) N) (b "in" (b "grammar" N N) N)) (b "interface" (b "instance" (b "incomplete" N N) N) (b "lin" (b "let" N N) N)))) (b "resource" (b "out" (b "of" (b "lintype" (b "lindef" N N) N) (b "oper" (b "open" N N) N)) (b "pattern" (b "param" (b "package" N N) N) (b "printname" (b "pre" N N) N))) (b "type" (b "table" (b "strs" (b "reuse" N N) N) (b "transfer" (b "tokenizer" N N) N)) (b "variants" (b "var" (b "union" N N) N) (b "with" (b "where" N N) N)))) where b s = B s (TS s) unescapeInitTail :: String -> String @@ -116,19 +118,19 @@ alexMove (Pn a l c) '\n' = Pn (a+1) (l+1) 1 alexMove (Pn a l c) _ = Pn (a+1) l (c+1) type AlexInput = (Posn, -- current position, - Char, -- previous char - String) -- current input string + Char, -- previous char + String) -- current input string tokens :: String -> [Token] tokens str = go (alexStartPos, '\n', str) where go :: (Posn, Char, String) -> [Token] go inp@(pos, _, str) = - case alexScan inp 0 of - AlexEOF -> [] - AlexError (pos, _, _) -> [Err pos] - AlexSkip inp' len -> go inp' - AlexToken inp' len act -> act pos (take len str) : (go inp') + case alexScan inp 0 of + AlexEOF -> [] + AlexError (pos, _, _) -> [Err pos] + AlexSkip inp' len -> go inp' + AlexToken inp' len act -> act pos (take len str) : (go inp') alexGetChar :: AlexInput -> Maybe (Char,AlexInput) alexGetChar (p, c, []) = Nothing @@ -141,10 +143,11 @@ alexInputPrevChar (p, c, s) = c alex_action_3 = tok (\p s -> PT p (TS $ share s)) alex_action_4 = tok (\p s -> PT p (eitherResIdent (T_LString . share) s)) -alex_action_5 = tok (\p s -> PT p (eitherResIdent (TV . share) s)) -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)) +alex_action_5 = tok (\p s -> PT p (eitherResIdent (T_PIdent . share) s)) +alex_action_6 = tok (\p s -> PT p (eitherResIdent (TV . share) s)) +alex_action_7 = tok (\p s -> PT p (TL $ share $ unescapeInitTail s)) +alex_action_8 = tok (\p s -> PT p (TI $ share s)) +alex_action_9 = tok (\p s -> PT p (TD $ share s)) {-# LINE 1 "GenericTemplate.hs" #-} {-# LINE 1 "" #-} {-# LINE 1 "" #-} @@ -158,18 +161,9 @@ alex_action_8 = tok (\p s -> PT p (TD $ share s)) -- ----------------------------------------------------------------------------- -- INTERNALS and main scanner engine - {-# LINE 35 "GenericTemplate.hs" #-} - - - - - - - - - +{-# LINE 45 "GenericTemplate.hs" #-} data AlexAddr = AlexA# Addr# @@ -235,7 +229,7 @@ data AlexReturn a | AlexSkip !AlexInput !Int | AlexToken !AlexInput !Int a --- alexScan :: AlexInput -> StartCode -> Maybe (AlexInput,Int,act) +-- alexScan :: AlexInput -> StartCode -> AlexReturn a alexScan input (I# (sc)) = alexScanUser undefined input (I# (sc)) @@ -272,11 +266,6 @@ alexScanUser user input (I# (sc)) alex_scan_tkn user orig_input len input s last_acc = input `seq` -- strict in the input - case s of - -1# -> (last_acc, input) - _ -> 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))) in @@ -297,7 +286,12 @@ alex_scan_tkn' user orig_input len input s last_acc = then alexIndexInt16OffAddr alex_table offset else alexIndexInt16OffAddr alex_deflt s in - alex_scan_tkn user orig_input (len +# 1#) new_input new_s new_acc + case new_s of + -1# -> (new_acc, input) + -- on an error, we want to keep the input *before* the + -- character that failed, not after. + _ -> alex_scan_tkn user orig_input (len +# 1#) + new_input new_s new_acc where check_accs [] = last_acc diff --git a/src/GF/Source/ParGF.hs b/src/GF/Source/ParGF.hs index 71b4bbfec..63b997f5c 100644 --- a/src/GF/Source/ParGF.hs +++ b/src/GF/Source/ParGF.hs @@ -1,10 +1,9 @@ {-# OPTIONS -fglasgow-exts -cpp #-} {-# OPTIONS -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-} - module GF.Source.ParGF (pGrammar, pModDef, pOldGrammar, pExp, myLexer) where --H -import GF.Source.AbsGF --H -import GF.Source.LexGF --H -import GF.Infra.Ident --H -import GF.Data.ErrM --H +module GF.Source.ParGF where +import GF.Source.AbsGF +import GF.Source.LexGF +import GF.Source.ErrM #if __GLASGOW_HASKELL__ >= 503 import Data.Array #else @@ -16,42 +15,37 @@ import GHC.Exts import GlaExts #endif --- parser produced by Happy Version 1.17 +-- parser produced by Happy Version 1.16 -newtype HappyAbsSyn = HappyAbsSyn HappyAny -#if __GLASGOW_HASKELL__ >= 607 -type HappyAny = GHC.Exts.Any -#else -type HappyAny = forall a . a -#endif -happyIn7 :: (Ident) -> (HappyAbsSyn ) +newtype HappyAbsSyn = HappyAbsSyn (() -> ()) +happyIn7 :: (Integer) -> (HappyAbsSyn ) happyIn7 x = unsafeCoerce# x {-# INLINE happyIn7 #-} -happyOut7 :: (HappyAbsSyn ) -> (Ident) +happyOut7 :: (HappyAbsSyn ) -> (Integer) happyOut7 x = unsafeCoerce# x {-# INLINE happyOut7 #-} -happyIn8 :: (Integer) -> (HappyAbsSyn ) +happyIn8 :: (String) -> (HappyAbsSyn ) happyIn8 x = unsafeCoerce# x {-# INLINE happyIn8 #-} -happyOut8 :: (HappyAbsSyn ) -> (Integer) +happyOut8 :: (HappyAbsSyn ) -> (String) happyOut8 x = unsafeCoerce# x {-# INLINE happyOut8 #-} -happyIn9 :: (String) -> (HappyAbsSyn ) +happyIn9 :: (Double) -> (HappyAbsSyn ) happyIn9 x = unsafeCoerce# x {-# INLINE happyIn9 #-} -happyOut9 :: (HappyAbsSyn ) -> (String) +happyOut9 :: (HappyAbsSyn ) -> (Double) happyOut9 x = unsafeCoerce# x {-# INLINE happyOut9 #-} -happyIn10 :: (Double) -> (HappyAbsSyn ) +happyIn10 :: (LString) -> (HappyAbsSyn ) happyIn10 x = unsafeCoerce# x {-# INLINE happyIn10 #-} -happyOut10 :: (HappyAbsSyn ) -> (Double) +happyOut10 :: (HappyAbsSyn ) -> (LString) happyOut10 x = unsafeCoerce# x {-# INLINE happyOut10 #-} -happyIn11 :: (LString) -> (HappyAbsSyn ) +happyIn11 :: (PIdent) -> (HappyAbsSyn ) happyIn11 x = unsafeCoerce# x {-# INLINE happyIn11 #-} -happyOut11 :: (HappyAbsSyn ) -> (LString) +happyOut11 :: (HappyAbsSyn ) -> (PIdent) happyOut11 x = unsafeCoerce# x {-# INLINE happyOut11 #-} happyIn12 :: (Grammar) -> (HappyAbsSyn ) @@ -282,10 +276,10 @@ happyIn49 x = unsafeCoerce# x happyOut49 :: (HappyAbsSyn ) -> ([ParConstr]) happyOut49 x = unsafeCoerce# x {-# INLINE happyOut49 #-} -happyIn50 :: ([Ident]) -> (HappyAbsSyn ) +happyIn50 :: ([PIdent]) -> (HappyAbsSyn ) happyIn50 x = unsafeCoerce# x {-# INLINE happyIn50 #-} -happyOut50 :: (HappyAbsSyn ) -> ([Ident]) +happyOut50 :: (HappyAbsSyn ) -> ([PIdent]) happyOut50 x = unsafeCoerce# x {-# INLINE happyOut50 #-} happyIn51 :: (Name) -> (HappyAbsSyn ) @@ -535,23 +529,22 @@ happyOutTok :: (HappyAbsSyn ) -> Token happyOutTok x = unsafeCoerce# x {-# INLINE happyOutTok #-} - happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x00\x00\x76\x01\x41\x05\x48\x01\x23\x05\x00\x00\x59\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x05\xb2\x01\x7e\x00\x53\x05\x18\x05\x43\x05\x00\x00\x5f\x05\x1c\x05\x5e\x00\x3c\x00\x1c\x05\x00\x00\x48\x01\xa0\x00\x1c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\x56\x05\xb2\x02\x16\x00\x55\x05\x52\x05\x99\x02\x51\x05\x00\x00\x00\x00\x00\x00\x00\x00\x05\x05\x00\x00\x09\x01\x0e\x00\xf0\x04\x07\x05\x00\x00\x04\x05\xf1\xff\x50\x05\x4e\x05\x4c\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x00\x00\x09\x01\x00\x00\x4b\x05\x00\x00\x09\x01\x09\x01\x09\x01\xe0\x07\x48\x01\x00\x00\x15\x00\xe5\x00\xfa\x00\xff\x04\xac\x00\xac\x00\x34\x05\xb1\x01\x3c\x05\x0e\x05\xef\x04\x34\x00\x73\x00\x02\x05\x00\x00\x00\x00\x2f\x05\x30\x05\x29\x00\x00\x00\x2e\x05\x2a\x05\x20\x05\x53\x02\x80\x02\x24\x05\x00\x00\x59\x03\x1d\x05\x19\x05\x4b\x02\xda\x01\x1b\x05\xac\x00\x7d\x01\xac\x00\x7d\x01\x7d\x01\x7d\x01\xac\x00\x1a\x05\x10\x05\x09\x00\x32\x02\x00\x00\xce\x04\x00\x00\x00\x00\xcf\x04\xcd\x04\x00\x00\x19\x02\x19\x02\x19\x02\x00\x00\x19\x02\xc1\x02\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x04\xcd\x04\x12\x05\xac\x00\x00\x00\x00\x00\xe4\x01\x09\x05\xb9\x04\x00\x00\x00\x00\xac\x00\xac\x00\xec\x04\xac\x00\x29\x00\x01\x05\xf5\x04\x00\x00\x00\x00\x00\x00\x73\x00\xfa\x04\x00\x05\xfb\x04\xb2\x04\xe5\x00\xe5\x00\x00\x00\x00\x00\xf9\x04\xac\x00\xb0\x04\xac\x00\xac\x00\xeb\x04\xe9\x04\xe4\x04\xd9\x04\x00\x03\xd1\x04\x00\x00\x20\x03\xe5\x04\xe1\x04\x73\x00\xe5\x00\xac\x00\xdf\x04\x00\x00\x9d\x00\x94\x04\x94\x00\x94\x04\x94\x04\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x04\x94\x04\x94\x00\xbb\x00\x94\x04\x94\x00\x94\x00\x00\x00\x00\x00\x00\x00\x09\x01\x00\x00\xc7\x04\x00\x00\x00\x00\xaa\x04\x97\x04\x00\x00\x59\x00\xc4\x04\xa2\x04\x33\x02\x00\x00\xa8\x04\xbc\x04\x8d\x00\x78\x04\x78\x04\x78\x04\x78\x04\x27\x00\x00\x00\x00\x00\xb3\x04\x00\x00\x03\x01\x2f\x00\x67\x04\x00\x00\xb1\x04\xa7\x04\x00\x00\x9c\x04\x96\x04\x4d\x00\x4d\x00\x00\x00\x95\x04\x8e\x04\x00\x00\x8f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x04\x00\x00\x86\x04\x8a\x04\x89\x04\x00\x00\x00\x00\xd6\x01\x7a\x04\x00\x00\x00\x00\x00\x00\x79\x04\x00\x00\x2d\x04\x00\x00\x6c\x04\xb5\x00\x73\x04\x00\x00\x00\x00\x97\x00\x97\x00\x97\x00\xac\x00\x00\x00\x00\x00\x29\x04\x73\x00\x00\x00\xac\x00\xac\x00\x5d\x04\x00\x00\x00\x00\x00\x00\x30\x04\x18\x01\x53\x04\x49\x04\x17\x02\xf3\x01\x51\x04\x5a\x04\x52\x04\x00\x00\x73\x00\xac\x00\x00\x00\xf8\x03\x97\x00\x00\x00\x00\x00\xac\x00\x32\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x04\x00\x00\x3f\x04\x00\x00\x36\x04\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x04\x00\x00\x00\x00\x00\x00\x00\x00\xea\x03\x97\x00\x00\x00\x00\x00\x00\x00\x97\x00\xac\x00\xac\x00\x1c\x04\x28\x04\x1a\x04\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\xcb\x01\xd4\x03\xd4\x03\xd4\x03\xd4\x03\xac\x00\xd4\x03\x19\x04\xd1\x03\x26\x00\x00\x00\x00\x00\xac\x00\x0f\x00\x0f\x00\x00\x00\x0f\x04\xac\x00\xac\x00\x12\x04\x0f\x00\x00\x00\x04\x04\x5d\x00\x00\x00\x00\x00\x00\x00\xfe\x03\x00\x00\xba\x03\xfd\xff\xba\x03\x02\x04\xfd\xff\xac\x03\xe9\x03\xf0\x03\xa5\x03\xa5\x03\xe4\x03\xc1\x03\xe3\x03\x00\x00\x9d\x03\xd8\x03\x00\x00\x9b\x03\x00\x00\x00\x00\xfd\xff\x00\x00\xac\x00\xd2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x03\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x03\xb1\x03\x00\x00\xb4\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\x18\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x03\x9e\x03\x60\x03\x60\x03\xcd\x03\x60\x03\x60\x03\xcb\x01\xac\x00\x00\x00\x00\x00\xeb\x00\x69\x03\xfd\xff\xa6\x03\xfd\xff\x00\x00\x00\x00\x95\x03\x8f\x03\x51\x03\x00\x00\x00\x00\x00\x00\x96\x03\x94\x03\x4a\x03\x00\x00\x00\x00\x00\x00\x89\x03\x8b\x03\x00\x00\x00\x00\xac\x00\x44\x03\x87\x03\x75\x03\x00\x00\x00\x00\x5b\x03\x00\x00\x43\x03\x5d\x03\x48\x03\x42\x03\x00\x00\xfc\x02\xfc\x02\x3b\x03\x85\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x03\x5e\x03\x00\x00\x00\x00\xf2\x02\xa7\x00\xfd\xff\xfd\xff\x30\x03\x2c\x03\x00\x00\x00\x00\x00\x00"# +happyActOffsets = HappyA# "\x00\x00\x77\x02\xe2\x04\x48\x01\xbe\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x04\x00\x00\xfa\x04\xd6\x01\xa6\x00\xec\x04\xac\x04\xe7\x04\x00\x00\xf0\x04\xa5\x04\x58\x00\x40\x00\xa5\x04\x00\x00\x48\x01\x21\x00\xa5\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\xf3\x04\x5d\x03\x15\x00\xc1\x03\xf2\x04\xf1\x04\x2a\x03\xe3\x04\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x04\x00\x00\x80\x00\x01\x00\xed\x01\x9e\x04\x00\x00\x93\x04\x11\x00\xdb\x04\xe0\x04\xd4\x04\x83\x04\x83\x04\x83\x04\x83\x04\x83\x04\x83\x04\x00\x00\x00\x00\x80\x00\xd1\x04\x00\x00\x80\x00\x80\x00\x80\x00\x74\x08\x48\x01\x00\x00\xc8\x01\xad\x03\xf8\x00\x82\x04\xa8\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xc3\x04\x00\x00\x81\x04\xad\x03\x7f\x04\x00\x00\xad\x03\x73\x04\x00\x00\x08\x03\xaf\x04\xea\x01\xc1\x04\x7d\x04\x6e\x04\x37\x00\xd3\x03\x65\x04\x00\x00\x00\x00\xaa\x04\xa0\x04\xf6\xff\x00\x00\x99\x04\x9b\x04\x8a\x04\xf7\x00\x8e\x04\xd5\x02\x00\x00\x76\x01\x96\x04\x92\x04\xb3\x02\x63\x02\x94\x04\xa8\x00\x7e\x01\xa8\x00\x7e\x01\x7e\x01\x7e\x01\xa8\x00\x8c\x04\x7c\x04\x1e\x00\x80\x02\x00\x00\x3a\x04\x00\x00\x00\x00\x30\x04\x34\x04\x00\x00\x5e\x02\x5e\x02\x5e\x02\x00\x00\x5e\x02\xd6\x02\x00\x00\x00\x00\x00\x00\x00\x00\x34\x04\x34\x04\x7a\x04\xa8\x00\x00\x00\x2b\x02\x71\x04\x00\x00\x25\x04\x00\x00\x00\x00\xa8\x00\xa8\x00\x57\x04\xa8\x00\xf6\xff\x6c\x04\xd3\x03\x68\x04\x67\x04\x63\x04\x00\x00\x62\x04\xa8\x00\x10\x04\xa8\x00\xa8\x00\x51\x04\x4f\x04\xa0\x01\x40\x04\x00\x00\x6f\x01\x4d\x04\x41\x04\xd3\x03\x43\x04\xcb\x01\x4c\x02\x4c\x04\x4a\x04\x42\x04\xef\x03\x3f\x04\x3c\x04\x38\x04\x2b\x04\x12\x00\xa8\x02\x2c\x04\x24\x04\xad\x03\xa8\x00\x1c\x04\x00\x00\x33\x00\xcd\x03\x31\x00\xcd\x03\xcd\x03\x31\x00\x31\x00\x31\x00\x31\x00\x31\x00\xcd\x03\xcd\x03\x31\x00\x64\x00\xcd\x03\x31\x00\x31\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x17\x04\x00\x00\x00\x00\xdc\x03\xdb\x03\x00\x00\xfe\xff\x00\x04\xe8\x03\xe4\x00\x00\x00\xc7\x03\xf9\x03\x05\x00\xae\x03\xae\x03\xae\x03\xae\x03\x19\x00\x00\x00\x00\x00\xf8\x03\x00\x00\x7f\x03\x93\x00\xa3\x03\x00\x00\xf3\x03\xf2\x03\x00\x00\xd6\x03\xf0\x03\x31\x00\x31\x00\x00\x00\xee\x03\xec\x03\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\xce\x03\xd2\x03\xca\x03\x00\x00\x00\x00\x4d\x01\xc9\x03\x00\x00\x00\x00\x00\x00\xc4\x03\x00\x00\x75\x03\x00\x00\xb5\x03\xbc\x03\x00\x00\x58\x03\x58\x03\x58\x03\xa8\x00\x00\x00\x6b\x03\xd3\x03\x00\x00\xa8\x00\xa8\x00\x00\x00\x00\x00\x6b\x03\x58\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\x6b\x03\xba\x03\x00\x00\x00\x00\x00\x00\x8c\x03\x00\x00\xd3\x03\xa8\x00\x00\x00\x58\x03\x00\x00\x00\x00\xa8\x00\xa6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\xa5\x03\x00\x00\x9f\x03\x00\x00\xf1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x03\x00\x00\x00\x00\xa8\x00\xa8\x00\x00\x00\x00\x00\x14\x01\x00\x00\x87\x03\x9c\x03\x93\x03\x00\x00\x00\x00\xd3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x09\x02\x4a\x03\x4a\x03\x4a\x03\x4a\x03\xa8\x00\x4a\x03\x89\x03\x39\x03\x14\x00\x00\x00\x00\x00\xa8\x00\x1a\x00\x1a\x00\x00\x00\x81\x03\xa8\x00\xa8\x00\x85\x03\x1a\x00\x00\x00\x80\x03\xa7\x00\x00\x00\x00\x00\x00\x00\x7b\x03\x00\x00\x20\x03\xff\xff\x20\x03\x6d\x03\xff\xff\x1f\x03\x60\x03\x65\x03\x1a\x03\x1a\x03\x5a\x03\x35\x03\x57\x03\x00\x00\x12\x03\x55\x03\x00\x00\x0a\x03\x00\x00\x00\x00\xff\xff\x00\x00\xa8\x00\x52\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x03\x00\x00\x23\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x03\x40\x03\x00\x00\x41\x03\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\xb4\x01\x00\x00\x00\x00\xa8\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x03\x3a\x03\xee\x02\xee\x02\xe6\x04\xee\x02\xee\x02\x09\x02\xa8\x00\x00\x00\x00\x00\x0d\x02\x17\x03\xff\xff\xc4\x04\xff\xff\x00\x00\x00\x00\x33\x03\x37\x03\xe2\x02\x00\x00\x00\x00\x00\x00\x27\x03\x14\x03\xe1\x02\x00\x00\x00\x00\x00\x00\x1c\x03\x1e\x03\x00\x00\x00\x00\xa8\x00\xd0\x02\x19\x03\x16\x03\x00\x00\x00\x00\x15\x03\x00\x00\xdc\x02\x10\x03\x13\x03\x0d\x03\x00\x00\xbe\x02\xbe\x02\xfc\x02\xa2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x03\x80\x04\x00\x00\x00\x00\xc7\x02\x10\x01\xff\xff\xff\xff\x09\x03\xfa\x02\x00\x00\x00\x00\x00\x00"# happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\x6c\x02\x9f\x00\xd6\xff\x51\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x03\x16\x04\xc5\x01\x27\x03\x00\x00\x3f\x03\x74\x00\x15\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x07\x00\x00\x00\x00\xc9\x04\xdf\x01\x00\x00\x00\x00\x92\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x03\x04\x00\x00\x00\xff\x02\x08\x03\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\xfd\x02\xfb\x02\xf7\x02\xf6\x02\xf5\x02\xec\x02\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x08\x00\x07\x00\xd2\x02\x85\x04\x00\x00\x00\x00\x1c\x03\x1a\x07\xcb\x02\x69\x04\xfe\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x01\xd6\x02\x3f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x04\x00\x00\x00\x00\xe3\x06\x6c\x07\xc7\x06\x8a\x07\x7b\x07\x46\x02\xac\x06\x00\x00\x00\x00\x2d\x00\xf8\x01\x00\x00\x56\x01\x00\x00\x00\x00\xc6\x02\x4e\x01\x00\x00\x50\x03\x50\x03\x50\x03\x00\x00\x50\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x01\xb6\x02\x00\x00\x90\x06\x00\x00\x00\x00\x22\x04\x00\x00\xb1\x02\x00\x00\x00\x00\x28\x03\x75\x06\x00\x00\x59\x06\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x03\x00\x00\x00\x00\x00\x00\x21\x01\x70\x04\x79\x02\x00\x00\x00\x00\x00\x00\x3e\x06\x30\x01\x22\x06\x07\x06\x00\x00\x00\x00\x00\x00\x00\x00\x67\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x02\xa8\x01\x4d\x04\x00\x00\x00\x00\xc9\x02\x8d\x03\xe4\x07\xb0\x00\x99\x03\xd7\x07\xd1\x07\xc9\x07\xc7\x07\xc4\x07\xa7\x02\xb0\x01\xb6\x07\xae\x07\x96\x02\xa8\x07\x18\x03\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\x93\x02\x5e\x02\x7d\x02\x6f\x02\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x07\x79\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x02\x00\x00\x00\x00\x3f\x02\x00\x00\x00\x00\x1f\x02\x00\x00\x00\x00\x00\x00\x29\x01\xc6\x03\xac\x01\xeb\x05\x00\x00\x00\x00\x27\x02\xdb\x00\x00\x00\x31\x04\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\xd0\x05\x00\x00\x23\x02\x32\x00\x00\x00\x00\x00\xb4\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\xd3\x00\xd5\x03\x00\x00\x00\x00\x00\x00\x12\x02\x99\x05\x7d\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x01\x70\x02\x11\x00\x09\x02\xf2\x01\x1c\x00\x08\x02\x62\x05\xee\x02\x00\x00\x92\x01\x7a\x01\x00\x00\x00\x00\x46\x05\x0e\x01\xbd\x03\x00\x00\x00\x00\x2b\x05\x0f\x05\x00\x00\xe4\x02\x00\x00\x00\x00\xf6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x02\xfa\x02\x17\x00\x00\x00\xc8\x02\x11\x01\x00\x00\x00\x00\xd9\x01\x1f\x00\x00\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00\xb6\x01\x00\x00\x00\x00\xf6\x00\x00\x00\xf4\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x77\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x03\x00\x00\x11\x00\x00\x00\x00\x00\xac\x02\xd8\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x83\x01\x5e\x01\x6c\x01\x54\x01\x11\x00\xbd\x04\x00\x00\x00\x00\x00\x00\x53\x01\x4f\x02\x43\x01\xa1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x76\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x04\x1f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x02\x24\x01\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x93\x00\x00\x00\x00\x00\x0a\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyGotoOffsets = HappyA# "\x3b\x02\x0e\x01\x77\x01\x4f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x01\x4c\x05\x0c\x02\xf9\x02\x00\x00\x31\x05\xb3\x00\xf8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x08\x00\x00\x00\x00\x06\x03\x81\x01\xfc\x01\x00\x00\x00\x00\xb3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x02\x06\x00\x00\x00\xd1\x02\xf6\x02\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\xea\x02\xe9\x02\xe6\x02\xe4\x02\xe0\x02\xde\x02\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x0a\x00\x08\x00\x02\x00\xca\x02\xcf\x05\x00\x00\x00\x00\x2a\x04\x27\x08\xd9\x02\xab\x05\x04\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x78\x04\xda\x02\x00\x00\x69\x04\xc5\x02\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x01\xc9\x02\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\xf0\x07\x72\x08\xdc\x07\x07\x02\x32\x01\xe2\x00\xb9\x07\x00\x00\x00\x00\x16\x00\x92\x03\x00\x00\x4a\x01\x00\x00\x00\x00\xc8\x02\x26\x01\x00\x00\x46\x02\x46\x02\x46\x02\x00\x00\x46\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\xc2\x02\x00\x00\xa5\x07\x00\x00\x5c\x02\x00\x00\x00\x00\xb7\x02\x00\x00\x00\x00\x14\x05\x91\x07\x00\x00\x6e\x07\x0d\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x07\xfa\x00\x46\x07\x23\x07\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x48\x04\x97\x05\x00\x00\x00\x00\xfd\x01\x73\x03\x84\x05\x98\x01\xa2\x02\x33\x05\x6a\x04\xda\x04\xb8\x04\x97\x04\xb5\x02\x37\x01\x5c\x04\x11\x03\xa7\x02\x49\x04\xfa\x03\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x04\x00\x00\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\xa3\x02\x2d\x02\x95\x02\x93\x02\x3d\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x02\xf0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x02\x00\x00\x00\x00\x70\x02\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x04\x5b\x01\x0b\x01\x0f\x07\x00\x00\x66\x02\x2d\x01\x00\x00\x83\x05\x04\x04\x00\x00\x00\x00\x97\x00\xa0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x04\x00\x00\x61\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\xfb\x06\x00\x00\xf6\x03\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x06\xb0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x02\x10\x00\x2f\x00\x0a\x01\x4e\x02\x69\x01\x3e\x02\x8d\x06\x4d\x02\x00\x00\x1b\x01\xe6\x00\x00\x00\x00\x00\x79\x06\x17\x00\x4e\x01\x00\x00\x00\x00\x65\x06\x42\x06\x00\x00\xbf\x03\x00\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x85\x02\xd7\x00\x00\x00\x82\x02\x92\x00\x00\x00\x00\x00\x1f\x02\x1b\x00\x00\x00\x00\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\xba\x00\x00\x00\x2e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x05\x00\x00\x2f\x00\x00\x00\x00\x00\xe6\x03\x1a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x01\xb2\x01\x8f\x01\x97\x01\x95\x00\x2f\x00\xf7\x05\x00\x00\x00\x00\x00\x00\x70\x01\x62\x02\x78\x01\x51\x02\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x05\x65\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\xa9\x01\x00\x00\x25\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x6b\x00\x00\x00\x00\x00\x34\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xf5\xff\xcd\xff\x06\xff\x00\x00\x00\x00\xfb\xff\x7d\xff\x78\xff\x79\xff\x77\xff\x6c\xff\x68\xff\x5e\xff\x59\xff\x4b\xff\x4c\xff\x00\x00\x57\xff\x7a\xff\x00\x00\x80\xff\x23\xff\x00\x00\x00\x00\x76\xff\x1c\xff\x23\xff\x00\x00\x2e\xff\x2c\xff\x2b\xff\x2d\xff\x2f\xff\x00\x00\x74\xff\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xf9\xff\xf8\xff\xf7\xff\x00\x00\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\x00\x00\xcd\xff\xf4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xff\x03\xff\x04\xff\x00\x00\x05\xff\x00\x00\x00\x00\x00\x00\x07\xff\x4a\xff\x7d\xff\x00\x00\x80\xff\x00\x00\x00\x00\x4a\xff\x00\x00\x89\xff\x00\x00\x7f\xff\x00\x00\x80\xff\x00\x00\x12\xff\x00\x00\x5d\xff\x25\xff\x22\xff\x00\x00\x23\xff\x24\xff\x1e\xff\x1b\xff\x00\x00\x00\x00\x47\xff\x00\x00\x75\xff\x7d\xff\x00\x00\x00\x00\x00\x00\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xff\x00\x00\x00\x00\x5f\xff\x80\xff\x31\xff\x6b\xff\x00\x00\x80\xff\x52\xff\x5b\xff\x5c\xff\x5a\xff\x56\xff\x59\xff\x4b\xff\x58\xff\x53\xff\x71\xff\x7c\xff\x00\x00\x00\x00\x7d\xff\x00\x00\x6d\xff\x72\xff\x47\xff\x00\x00\x00\x00\x7b\xff\x70\xff\x1c\xff\x00\x00\x00\x00\x00\x00\x23\xff\x00\x00\x44\xff\x41\xff\x3f\xff\x40\xff\x27\xff\x00\x00\x11\xff\x00\x00\x2a\xff\x00\x00\x19\xff\x45\xff\x4d\xff\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x00\x00\x49\xff\x00\x00\x00\x00\x89\xff\x36\xff\x33\xff\x00\x00\x15\xff\x00\x00\x00\x00\x00\x00\x4a\xff\x00\x00\xd8\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\x02\xff\x01\xff\x00\xff\xfe\xfe\xff\xfe\x00\x00\xe6\xff\xe5\xff\x00\x00\x00\x00\xe7\xff\xc8\xff\x00\x00\x00\x00\xc5\xff\xf1\xff\xd2\xff\xe0\xff\xc7\xff\x00\x00\xc8\xff\x00\x00\x00\x00\x00\x00\xfd\xfe\x87\xff\x00\x00\xac\xff\x85\xff\x00\x00\x00\x00\xb9\xff\x00\x00\x00\x00\xb0\xff\x85\xff\x00\x00\x00\x00\x00\x00\xae\xff\x9e\xff\x00\x00\xb8\xff\x00\x00\xb7\xff\xaf\xff\xb5\xff\xb6\xff\xb4\xff\x00\x00\xbd\xff\x00\x00\x00\x00\x00\x00\xb1\xff\xbb\xff\x89\xff\x00\x00\xbc\xff\xba\xff\x09\xff\x00\x00\xbe\xff\x00\x00\x62\xff\x00\x00\x44\xff\x00\x00\x37\xff\x66\xff\x00\x00\x00\x00\x00\x00\x00\x00\x39\xff\x3b\xff\x00\x00\x00\x00\x60\xff\x4a\xff\x0e\xff\x83\xff\x82\xff\x7e\xff\x50\xff\x00\x00\x1d\xff\x18\xff\x00\x00\x00\x00\x89\xff\x00\x00\x29\xff\x00\x00\x4e\xff\x12\xff\x00\x00\x26\xff\x00\x00\x00\x00\x21\xff\x55\xff\x00\x00\x00\x00\x1e\xff\x1a\xff\x69\xff\x73\xff\x46\xff\x00\x00\x6f\xff\x00\x00\x88\xff\x00\x00\x30\xff\x89\xff\x4f\xff\x6a\xff\x20\xff\x6e\xff\x54\xff\x00\x00\x42\xff\x13\xff\x10\xff\x3e\xff\x2a\xff\x00\x00\x43\xff\x3c\xff\x3d\xff\x19\xff\x00\x00\x00\x00\x00\x00\x0d\xff\x00\x00\x48\xff\x38\xff\x42\xff\x16\xff\x34\xff\x35\xff\x14\xff\x65\xff\x64\xff\x09\xff\x98\xff\xaa\xff\x94\xff\xa3\xff\x8e\xff\x00\x00\x00\x00\x96\xff\x00\x00\x92\xff\x8c\xff\xb2\xff\xb3\xff\x00\x00\x00\x00\x90\xff\xab\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xff\xd0\xff\x00\x00\xcb\xff\xe3\xff\xe4\xff\xda\xff\xc7\xff\xdb\xff\xc8\xff\xd5\xff\xd7\xff\x00\x00\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\xd9\xff\x00\x00\xdf\xff\xc6\xff\x00\x00\xca\xff\xc9\xff\x00\x00\x99\xff\x00\x00\xc2\xff\xc1\xff\x86\xff\x8f\xff\x84\xff\x9c\xff\x09\xff\x8b\xff\xa0\xff\x00\x00\x91\xff\xd9\xff\x95\xff\xa7\xff\x9b\xff\x8d\xff\xa5\xff\xa2\xff\xa6\xff\x00\x00\x93\xff\x0a\xff\x08\xff\x23\xff\x97\xff\x00\x00\x3a\xff\x61\xff\x0e\xff\x00\x00\x81\xff\x51\xff\x17\xff\x32\xff\x28\xff\x63\xff\x0f\xff\x0c\xff\xa9\xff\x00\x00\xa3\xff\x00\x00\x00\x00\x00\x00\x8c\xff\x9d\xff\x00\x00\xc0\xff\xe2\xff\x00\x00\xd2\xff\xd5\xff\x00\x00\xd5\xff\xd1\xff\xc4\xff\x00\x00\x00\x00\xef\xff\xc3\xff\xd3\xff\xe1\xff\xdd\xff\x00\x00\x00\x00\xcf\xff\xbf\xff\x8a\xff\x00\x00\x00\x00\xa4\xff\xa1\xff\x00\x00\x00\x00\x00\x00\x00\x00\xad\xff\x9f\xff\x00\x00\xd9\xff\xd2\xff\x00\x00\xee\xff\x00\x00\xf2\xff\xef\xff\x00\x00\x00\x00\x00\x00\xce\xff\x0b\xff\xa8\xff\xde\xff\xd9\xff\xeb\xff\xf0\xff\xed\xff\xec\xff\x00\x00\xdc\xff\xea\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xff\xe8\xff"# +happyDefActions = HappyA# "\xf5\xff\xcd\xff\x00\xff\x00\x00\x00\x00\xfb\xff\x78\xff\x79\xff\x77\xff\x6c\xff\x7d\xff\x68\xff\x5c\xff\x57\xff\x49\xff\x4a\xff\x00\x00\x55\xff\x7a\xff\x00\x00\x80\xff\x1d\xff\x00\x00\x00\x00\x76\xff\x16\xff\x1d\xff\x00\x00\x28\xff\x26\xff\x25\xff\x27\xff\x29\xff\x00\x00\x74\xff\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xf9\xff\xf8\xff\xf7\xff\x00\x00\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\x00\x00\xcd\xff\xf4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xff\xfe\xfe\xfd\xfe\x00\x00\xff\xfe\x00\x00\x00\x00\x00\x00\x01\xff\x48\xff\x7d\xff\x00\x00\x80\xff\x00\x00\x00\x00\x48\xff\x00\x00\x3b\xff\x39\xff\x3a\xff\x3e\xff\x5e\xff\x24\xff\x00\x00\x00\x00\x43\xff\x13\xff\x00\x00\x3f\xff\x00\x00\x89\xff\x00\x00\x7f\xff\x00\x00\x80\xff\x00\x00\x0c\xff\x00\x00\x5b\xff\x1f\xff\x1c\xff\x00\x00\x1d\xff\x1e\xff\x18\xff\x15\xff\x00\x00\x00\x00\x00\x00\x45\xff\x75\xff\x7d\xff\x00\x00\x00\x00\x00\x00\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xff\x00\x00\x00\x00\x5f\xff\x80\xff\x2b\xff\x6b\xff\x00\x00\x80\xff\x50\xff\x59\xff\x5a\xff\x58\xff\x54\xff\x57\xff\x49\xff\x56\xff\x51\xff\x71\xff\x7c\xff\x00\x00\x00\x00\x7d\xff\x00\x00\x6d\xff\x45\xff\x00\x00\x72\xff\x00\x00\x7b\xff\x70\xff\x16\xff\x00\x00\x00\x00\x00\x00\x1d\xff\x00\x00\x21\xff\x00\x00\x0b\xff\x00\x00\x4b\xff\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x5d\xff\x41\xff\x3e\xff\x30\xff\x2d\xff\x17\xff\x12\xff\x00\x00\x00\x00\x00\x00\x00\x00\x89\xff\x00\x00\x23\xff\x00\x00\x00\x00\x00\x00\x47\xff\x00\x00\x00\x00\x89\xff\x00\x00\x0f\xff\x00\x00\x00\x00\x48\xff\x00\x00\xd8\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\xfc\xfe\xfb\xfe\xfa\xfe\xf8\xfe\xf9\xfe\x00\x00\xe6\xff\xe5\xff\x00\x00\x00\x00\xe7\xff\xc8\xff\x00\x00\x00\x00\xc5\xff\xf1\xff\xd2\xff\xe0\xff\xc7\xff\x00\x00\xc8\xff\x00\x00\x00\x00\x00\x00\xf7\xfe\x87\xff\x00\x00\xac\xff\x85\xff\x00\x00\x00\x00\xb9\xff\x00\x00\x00\x00\xb0\xff\x85\xff\x00\x00\x00\x00\x00\x00\xae\xff\x9e\xff\x00\x00\xb8\xff\x00\x00\xb7\xff\xaf\xff\xb5\xff\xb6\xff\xb4\xff\x00\x00\xbd\xff\x00\x00\x00\x00\x00\x00\xb1\xff\xbb\xff\x89\xff\x00\x00\xbc\xff\xba\xff\x03\xff\x00\x00\xbe\xff\x00\x00\x62\xff\x00\x00\x00\x00\x66\xff\x00\x00\x00\x00\x00\x00\x00\x00\x35\xff\x00\x00\x00\x00\x60\xff\x48\xff\x08\xff\x3c\xff\x38\xff\x24\xff\x00\x00\x3d\xff\x36\xff\x42\xff\x31\xff\x37\xff\x13\xff\x33\xff\x00\x00\x83\xff\x82\xff\x7e\xff\x4e\xff\x00\x00\x4c\xff\x0c\xff\x00\x00\x20\xff\x00\x00\x1b\xff\x53\xff\x00\x00\x00\x00\x18\xff\x14\xff\x69\xff\x73\xff\x44\xff\x00\x00\x6f\xff\x00\x00\x88\xff\x00\x00\x2a\xff\x89\xff\x4d\xff\x6a\xff\x1a\xff\x6e\xff\x52\xff\x00\x00\x0d\xff\x0a\xff\x00\x00\x00\x00\x40\xff\x11\xff\x2c\xff\x22\xff\x00\x00\x07\xff\x00\x00\x46\xff\x32\xff\x3c\xff\x10\xff\x2e\xff\x2f\xff\x0e\xff\x65\xff\x64\xff\x03\xff\x98\xff\xaa\xff\x94\xff\xa3\xff\x8e\xff\x00\x00\x00\x00\x96\xff\x00\x00\x92\xff\x8c\xff\xb2\xff\xb3\xff\x00\x00\x00\x00\x90\xff\xab\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xff\xd0\xff\x00\x00\xcb\xff\xe3\xff\xe4\xff\xda\xff\xc7\xff\xdb\xff\xc8\xff\xd5\xff\xd7\xff\x00\x00\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\xd9\xff\x00\x00\xdf\xff\xc6\xff\x00\x00\xca\xff\xc9\xff\x00\x00\x99\xff\x00\x00\xc2\xff\xc1\xff\x86\xff\x8f\xff\x84\xff\x9c\xff\x03\xff\x8b\xff\xa0\xff\x00\x00\x91\xff\xd9\xff\x95\xff\xa7\xff\x9b\xff\x8d\xff\xa5\xff\xa2\xff\xa6\xff\x00\x00\x93\xff\x04\xff\x02\xff\x1d\xff\x97\xff\x00\x00\x34\xff\x61\xff\x08\xff\x00\x00\x81\xff\x4f\xff\x63\xff\x09\xff\x06\xff\xa9\xff\x00\x00\xa3\xff\x00\x00\x00\x00\x00\x00\x8c\xff\x9d\xff\x00\x00\xc0\xff\xe2\xff\x00\x00\xd2\xff\xd5\xff\x00\x00\xd5\xff\xd1\xff\xc4\xff\x00\x00\x00\x00\xef\xff\xc3\xff\xd3\xff\xe1\xff\xdd\xff\x00\x00\x00\x00\xcf\xff\xbf\xff\x8a\xff\x00\x00\x00\x00\xa4\xff\xa1\xff\x00\x00\x00\x00\x00\x00\x00\x00\xad\xff\x9f\xff\x00\x00\xd9\xff\xd2\xff\x00\x00\xee\xff\x00\x00\xf2\xff\xef\xff\x00\x00\x00\x00\x00\x00\xce\xff\x05\xff\xa8\xff\xde\xff\xd9\xff\xeb\xff\xf0\xff\xed\xff\xec\xff\x00\x00\xdc\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\x05\x00\x02\x00\x00\x00\x00\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\x0c\x00\x00\x00\x03\x00\x03\x00\x0b\x00\x03\x00\x00\x00\x05\x00\x2d\x00\x00\x00\x0b\x00\x30\x00\x07\x00\x0b\x00\x0c\x00\x1c\x00\x50\x00\x51\x00\x10\x00\x11\x00\x12\x00\x05\x00\x05\x00\x00\x00\x17\x00\x14\x00\x0b\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x07\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x19\x00\x00\x00\x22\x00\x0f\x00\x28\x00\x30\x00\x0e\x00\x52\x00\x1b\x00\x29\x00\x41\x00\x42\x00\x0c\x00\x4c\x00\x2b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3e\x00\x13\x00\x41\x00\x42\x00\x52\x00\x53\x00\x4c\x00\x52\x00\x53\x00\x0b\x00\x52\x00\x52\x00\x4c\x00\x03\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\x39\x00\x3a\x00\x3b\x00\x10\x00\x11\x00\x12\x00\x4c\x00\x4c\x00\x4c\x00\x00\x00\x4c\x00\x03\x00\x19\x00\x05\x00\x1b\x00\x48\x00\x49\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4e\x00\x25\x00\x39\x00\x12\x00\x28\x00\x09\x00\x4c\x00\x2b\x00\x4e\x00\x40\x00\x2e\x00\x30\x00\x1b\x00\x32\x00\x00\x00\x33\x00\x39\x00\x15\x00\x16\x00\x4a\x00\x4b\x00\x0a\x00\x1a\x00\x4c\x00\x03\x00\x42\x00\x05\x00\x3f\x00\x0b\x00\x0b\x00\x47\x00\x43\x00\x44\x00\x13\x00\x0d\x00\x4c\x00\x07\x00\x49\x00\x0b\x00\x12\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x00\x00\x05\x00\x1b\x00\x14\x00\x19\x00\x41\x00\x42\x00\x0b\x00\x03\x00\x19\x00\x05\x00\x1b\x00\x10\x00\x11\x00\x12\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0e\x00\x12\x00\x19\x00\x0b\x00\x12\x00\x4a\x00\x14\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1b\x00\x25\x00\x22\x00\x00\x00\x28\x00\x2e\x00\x00\x00\x2b\x00\x4b\x00\x29\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x4c\x00\x26\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x2c\x00\x03\x00\x4c\x00\x05\x00\x3f\x00\x4c\x00\x02\x00\x0f\x00\x43\x00\x44\x00\x06\x00\x0d\x00\x1d\x00\x1e\x00\x49\x00\x00\x00\x12\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x2b\x00\x05\x00\x1b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0b\x00\x03\x00\x4c\x00\x05\x00\x13\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3f\x00\x19\x00\x39\x00\x12\x00\x0d\x00\x0e\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1b\x00\x25\x00\x01\x00\x00\x00\x28\x00\x13\x00\x00\x00\x2b\x00\x1d\x00\x0f\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x0a\x00\x17\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3f\x00\x2c\x00\x2d\x00\x2b\x00\x43\x00\x44\x00\x00\x00\x01\x00\x02\x00\x03\x00\x49\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x2b\x00\x05\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0b\x00\x00\x00\x4c\x00\x00\x00\x4e\x00\x10\x00\x11\x00\x12\x00\x2b\x00\x19\x00\x3c\x00\x2e\x00\x2f\x00\x3f\x00\x19\x00\x39\x00\x3a\x00\x3b\x00\x12\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x25\x00\x39\x00\x2b\x00\x28\x00\x48\x00\x49\x00\x2b\x00\x20\x00\x40\x00\x2e\x00\x19\x00\x39\x00\x2b\x00\x00\x00\x33\x00\x2e\x00\x2f\x00\x2a\x00\x40\x00\x03\x00\x2b\x00\x05\x00\x00\x00\x2e\x00\x2f\x00\x0f\x00\x3f\x00\x0b\x00\x4a\x00\x4b\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x00\x00\x49\x00\x00\x00\x04\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x0a\x00\x20\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x25\x00\x2d\x00\x2a\x00\x28\x00\x30\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x1f\x00\x11\x00\x02\x00\x13\x00\x03\x00\x00\x00\x05\x00\x07\x00\x27\x00\x08\x00\x2b\x00\x3f\x00\x0b\x00\x2e\x00\x2f\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x00\x00\x49\x00\x02\x00\x0f\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x1f\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x27\x00\x02\x00\x00\x00\x28\x00\x10\x00\x11\x00\x12\x00\x04\x00\x00\x00\x0a\x00\x39\x00\x3a\x00\x3b\x00\x0a\x00\x39\x00\x3a\x00\x03\x00\x0e\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x48\x00\x49\x00\x00\x00\x28\x00\x10\x00\x11\x00\x12\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0a\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\x2b\x00\x15\x00\x28\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x06\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x0b\x00\x1c\x00\x0f\x00\x00\x00\x30\x00\x10\x00\x11\x00\x12\x00\x16\x00\x17\x00\x17\x00\x26\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\x0b\x00\x00\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\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\x11\x00\x0e\x00\x13\x00\x10\x00\x4f\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\x05\x00\x06\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\x01\x00\x02\x00\x03\x00\x10\x00\x11\x00\x12\x00\x00\x00\x24\x00\x12\x00\x00\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\x08\x00\x09\x00\x00\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\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\x39\x00\x40\x00\x01\x00\x00\x00\x00\x00\x09\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x15\x00\x16\x00\x02\x00\x11\x00\x28\x00\x13\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x1a\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x3e\x00\x19\x00\x00\x00\x24\x00\x00\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x18\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x04\x00\x05\x00\x00\x00\x23\x00\x00\x00\x1b\x00\x0a\x00\x11\x00\x0d\x00\x13\x00\x0e\x00\x0f\x00\x2c\x00\x2d\x00\x12\x00\x25\x00\x14\x00\x00\x00\x16\x00\x17\x00\x00\x00\x2b\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\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0f\x00\x3e\x00\x0f\x00\x18\x00\x2b\x00\x06\x00\x43\x00\x2e\x00\x2f\x00\x06\x00\x17\x00\x46\x00\x05\x00\x1a\x00\x23\x00\x4c\x00\x4d\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2c\x00\x2d\x00\x04\x00\x2b\x00\x4c\x00\x01\x00\x2e\x00\x2f\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x39\x00\x3a\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x02\x00\x07\x00\x06\x00\x04\x00\x0a\x00\x48\x00\x49\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x43\x00\x44\x00\x14\x00\x46\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x06\x00\x39\x00\x3e\x00\x08\x00\x09\x00\x30\x00\x31\x00\x43\x00\x44\x00\x26\x00\x46\x00\x28\x00\x29\x00\x2a\x00\x04\x00\x2c\x00\x04\x00\x01\x00\x00\x00\x3e\x00\x06\x00\x01\x00\x4d\x00\x34\x00\x35\x00\x36\x00\x37\x00\x4c\x00\x03\x00\x3a\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x4c\x00\x40\x00\x09\x00\x39\x00\x0c\x00\x39\x00\x45\x00\x46\x00\x07\x00\x48\x00\x40\x00\x1b\x00\x1c\x00\x04\x00\x26\x00\x4c\x00\x28\x00\x29\x00\x2a\x00\x39\x00\x2c\x00\x25\x00\x26\x00\x1b\x00\x03\x00\x02\x00\x40\x00\x2b\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x25\x00\x3a\x00\x0f\x00\x3c\x00\x3d\x00\x3e\x00\x2b\x00\x40\x00\x00\x00\x01\x00\x02\x00\x03\x00\x45\x00\x46\x00\x26\x00\x48\x00\x28\x00\x29\x00\x2a\x00\x04\x00\x2c\x00\x0e\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x21\x00\x0f\x00\x3a\x00\x09\x00\x3c\x00\x3d\x00\x3e\x00\x28\x00\x40\x00\x4c\x00\x4b\x00\x2c\x00\x2d\x00\x45\x00\x46\x00\x0a\x00\x48\x00\x2e\x00\x0c\x00\x4c\x00\x02\x00\x26\x00\x0b\x00\x28\x00\x29\x00\x2a\x00\x4c\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x39\x00\x3a\x00\x34\x00\x35\x00\x36\x00\x37\x00\x03\x00\x4c\x00\x3a\x00\x0a\x00\x3c\x00\x3d\x00\x3e\x00\x08\x00\x40\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x45\x00\x46\x00\x02\x00\x48\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0c\x00\x03\x00\x4c\x00\x04\x00\x0e\x00\x4c\x00\x10\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x16\x00\x17\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\x4c\x00\x04\x00\x3e\x00\x1d\x00\x04\x00\x41\x00\x42\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x4c\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\x02\x00\x3e\x00\x06\x00\x04\x00\x41\x00\x42\x00\x43\x00\x38\x00\x01\x00\x13\x00\x0a\x00\x2e\x00\x02\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\x4c\x00\x38\x00\x04\x00\x0c\x00\x4c\x00\x01\x00\x01\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\x02\x00\x07\x00\x01\x00\x01\x00\x43\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x02\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\x0a\x00\x3e\x00\x01\x00\x39\x00\x3a\x00\x3b\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x01\x00\x4c\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\x4c\x00\x09\x00\x24\x00\x03\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x07\x00\x38\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\x4c\x00\x39\x00\x38\x00\x04\x00\x43\x00\x04\x00\x01\x00\x16\x00\x04\x00\x10\x00\x01\x00\x3e\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\x30\x00\x31\x00\x3e\x00\x4c\x00\x04\x00\x4c\x00\x04\x00\x43\x00\x01\x00\x08\x00\x0e\x00\x03\x00\x4c\x00\x1a\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\x0c\x00\x3e\x00\x27\x00\x06\x00\x4c\x00\x4c\x00\x43\x00\x4d\x00\x03\x00\x0e\x00\x04\x00\x07\x00\x31\x00\x32\x00\x06\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\x0c\x00\x41\x00\x3e\x00\x13\x00\x0a\x00\x07\x00\x46\x00\x43\x00\x08\x00\x0a\x00\x38\x00\x4c\x00\x2e\x00\x01\x00\x0a\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\x01\x00\x3e\x00\x02\x00\x4c\x00\x02\x00\x01\x00\x43\x00\x4c\x00\x03\x00\x03\x00\x52\x00\x52\x00\x03\x00\x03\x00\x17\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\x4c\x00\x3e\x00\x52\x00\x18\x00\x0e\x00\x14\x00\x43\x00\x4c\x00\x2f\x00\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\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\x00\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3e\x00\xff\xff\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\xff\xff\x2c\x00\x2d\x00\xff\xff\x00\x00\x21\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x00\x00\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x3e\x00\x30\x00\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x00\x00\x30\x00\x31\x00\x00\x00\x3e\x00\x00\x00\xff\xff\x23\x00\xff\xff\xff\xff\x18\x00\x21\x00\xff\xff\x00\x00\xff\xff\x3e\x00\x2c\x00\x2d\x00\x28\x00\x00\x00\xff\xff\x23\x00\x2c\x00\x2d\x00\x18\x00\xff\xff\xff\xff\x18\x00\xff\xff\x18\x00\x2c\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\x23\x00\xff\xff\x23\x00\xff\xff\xff\xff\x18\x00\x2c\x00\x2d\x00\x21\x00\x2c\x00\x2d\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x28\x00\x23\x00\xff\xff\x18\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\xff\xff\x26\x00\x23\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\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\xff\xff\xff\xff\xff\xff\xff\xff"# +happyCheck = HappyA# "\xff\xff\x03\x00\x01\x00\x01\x00\x05\x00\x01\x00\x04\x00\x01\x00\x04\x00\x01\x00\x04\x00\x01\x00\x04\x00\x01\x00\x04\x00\x0a\x00\x04\x00\x04\x00\x1c\x00\x04\x00\x04\x00\x03\x00\x04\x00\x05\x00\x03\x00\x05\x00\x04\x00\x04\x00\x0a\x00\x0b\x00\x05\x00\x04\x00\x0e\x00\x0f\x00\x13\x00\x11\x00\x12\x00\x0b\x00\x14\x00\x19\x00\x16\x00\x17\x00\x1a\x00\x0b\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x24\x00\x00\x00\x01\x00\x02\x00\x3a\x00\x04\x00\x19\x00\x1d\x00\x0b\x00\x1c\x00\x0b\x00\x2e\x00\x0c\x00\x43\x00\x31\x00\x2c\x00\x2d\x00\x0e\x00\x2b\x00\x49\x00\x52\x00\x00\x00\x01\x00\x02\x00\x0c\x00\x04\x00\x41\x00\x42\x00\x52\x00\x52\x00\x4d\x00\x3d\x00\x52\x00\x54\x00\x52\x00\x53\x00\x52\x00\x53\x00\x52\x00\x03\x00\x52\x00\x05\x00\x52\x00\x30\x00\x4e\x00\x4f\x00\x50\x00\x0b\x00\x52\x00\x54\x00\x52\x00\x52\x00\x10\x00\x11\x00\x12\x00\x52\x00\x52\x00\x3e\x00\x39\x00\x0b\x00\x52\x00\x19\x00\x52\x00\x52\x00\x1c\x00\x40\x00\x0b\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x4e\x00\x26\x00\x4a\x00\x4b\x00\x29\x00\x39\x00\x52\x00\x2c\x00\x52\x00\x4f\x00\x2f\x00\x04\x00\x40\x00\x0f\x00\x27\x00\x34\x00\x0d\x00\x0e\x00\x4f\x00\x04\x00\x2d\x00\x52\x00\x4a\x00\x4b\x00\x02\x00\x04\x00\x3f\x00\x40\x00\x04\x00\x07\x00\x04\x00\x44\x00\x45\x00\x1e\x00\x13\x00\x00\x00\x01\x00\x02\x00\x4b\x00\x04\x00\x0f\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x03\x00\x12\x00\x05\x00\x04\x00\x09\x00\x00\x00\x01\x00\x02\x00\x0b\x00\x04\x00\x20\x00\x52\x00\x04\x00\x10\x00\x11\x00\x12\x00\x15\x00\x16\x00\x2b\x00\x04\x00\x2a\x00\x1a\x00\x19\x00\x2b\x00\x07\x00\x04\x00\x41\x00\x42\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x13\x00\x26\x00\x4f\x00\x14\x00\x29\x00\x52\x00\x3c\x00\x2c\x00\x2b\x00\x3f\x00\x2f\x00\x31\x00\x39\x00\x33\x00\x04\x00\x34\x00\x00\x00\x01\x00\x02\x00\x40\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3f\x00\x40\x00\x39\x00\x04\x00\x2b\x00\x44\x00\x45\x00\x17\x00\x0b\x00\x40\x00\x0d\x00\x4c\x00\x4b\x00\x41\x00\x42\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x03\x00\x3c\x00\x05\x00\x04\x00\x3f\x00\x00\x00\x01\x00\x02\x00\x0b\x00\x04\x00\x0e\x00\x20\x00\x10\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x04\x00\x04\x00\x2a\x00\x19\x00\x30\x00\x31\x00\x32\x00\x07\x00\x39\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x40\x00\x26\x00\x04\x00\x3e\x00\x29\x00\x14\x00\x0f\x00\x2c\x00\x2b\x00\x1c\x00\x2f\x00\x2e\x00\x2f\x00\x04\x00\x17\x00\x34\x00\x00\x00\x01\x00\x02\x00\x26\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3f\x00\x40\x00\x39\x00\x1f\x00\x04\x00\x44\x00\x45\x00\x19\x00\x2f\x00\x40\x00\x04\x00\x27\x00\x4b\x00\x39\x00\x3a\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x03\x00\x3c\x00\x05\x00\x04\x00\x02\x00\x13\x00\x2b\x00\x04\x00\x0b\x00\x2e\x00\x2f\x00\x1f\x00\x0a\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x27\x00\x04\x00\x04\x00\x19\x00\x30\x00\x31\x00\x32\x00\x00\x00\x39\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x04\x00\x26\x00\x21\x00\x3e\x00\x29\x00\x16\x00\x17\x00\x2c\x00\x2b\x00\x28\x00\x2f\x00\x2e\x00\x2f\x00\x2c\x00\x2d\x00\x34\x00\x07\x00\x0f\x00\x04\x00\x0a\x00\x03\x00\x12\x00\x05\x00\x04\x00\x04\x00\x17\x00\x3f\x00\x40\x00\x0b\x00\x14\x00\x22\x00\x44\x00\x45\x00\x10\x00\x11\x00\x12\x00\x19\x00\x29\x00\x4b\x00\x39\x00\x3a\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x04\x00\x04\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x26\x00\x05\x00\x2b\x00\x29\x00\x19\x00\x2e\x00\x2f\x00\x0b\x00\x2b\x00\x04\x00\x0e\x00\x2e\x00\x2f\x00\x11\x00\x12\x00\x0a\x00\x14\x00\x04\x00\x04\x00\x03\x00\x15\x00\x05\x00\x22\x00\x1b\x00\x1c\x00\x3f\x00\x40\x00\x0b\x00\x0c\x00\x29\x00\x44\x00\x45\x00\x10\x00\x11\x00\x12\x00\x50\x00\x51\x00\x4b\x00\x04\x00\x03\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x06\x00\x0f\x00\x0b\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x0f\x00\x05\x00\x2b\x00\x29\x00\x08\x00\x2e\x00\x2f\x00\x0b\x00\x17\x00\x1d\x00\x1e\x00\x4f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x02\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x07\x00\x52\x00\x04\x00\x04\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x29\x00\x04\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x01\x00\x05\x00\x02\x00\x04\x00\x21\x00\x25\x00\x06\x00\x0b\x00\x28\x00\x04\x00\x1a\x00\x28\x00\x10\x00\x11\x00\x12\x00\x2c\x00\x2d\x00\x0f\x00\x32\x00\x33\x00\x24\x00\x39\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x42\x00\x05\x00\x04\x00\x29\x00\x21\x00\x47\x00\x39\x00\x0b\x00\x30\x00\x31\x00\x32\x00\x28\x00\x10\x00\x11\x00\x12\x00\x2c\x00\x2d\x00\x05\x00\x06\x00\x04\x00\x16\x00\x17\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x04\x00\x04\x00\x04\x00\x4f\x00\x29\x00\x04\x00\x0a\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x11\x00\x05\x00\x13\x00\x04\x00\x04\x00\x04\x00\x1b\x00\x0b\x00\x04\x00\x1d\x00\x1e\x00\x0a\x00\x10\x00\x11\x00\x12\x00\x0e\x00\x25\x00\x11\x00\x04\x00\x13\x00\x30\x00\x31\x00\x2b\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x3e\x00\x05\x00\x04\x00\x29\x00\x4f\x00\x04\x00\x04\x00\x0b\x00\x30\x00\x04\x00\x08\x00\x09\x00\x10\x00\x11\x00\x12\x00\x11\x00\x38\x00\x13\x00\x11\x00\x04\x00\x13\x00\x04\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x2e\x00\x04\x00\x04\x00\x31\x00\x29\x00\x12\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x0f\x00\x05\x00\x04\x00\x04\x00\x04\x00\x04\x00\x1b\x00\x0b\x00\x17\x00\x08\x00\x09\x00\x1a\x00\x10\x00\x11\x00\x12\x00\x04\x00\x25\x00\x00\x00\x04\x00\x01\x00\x30\x00\x31\x00\x2b\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x3e\x00\x05\x00\x01\x00\x29\x00\x04\x00\x0d\x00\x09\x00\x0b\x00\x30\x00\x04\x00\x19\x00\x04\x00\x10\x00\x11\x00\x12\x00\x04\x00\x38\x00\x04\x00\x15\x00\x16\x00\x04\x00\x04\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x04\x00\x0f\x00\x04\x00\x04\x00\x29\x00\x03\x00\x06\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x05\x00\x05\x00\x47\x00\x06\x00\x52\x00\x04\x00\x02\x00\x0b\x00\x01\x00\x04\x00\x3a\x00\x03\x00\x10\x00\x11\x00\x12\x00\x06\x00\x06\x00\x04\x00\x4e\x00\x01\x00\x30\x00\x31\x00\x06\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x3e\x00\x05\x00\x09\x00\x29\x00\x21\x00\x52\x00\x52\x00\x0b\x00\x30\x00\x31\x00\x01\x00\x28\x00\x10\x00\x11\x00\x12\x00\x2c\x00\x2d\x00\x0c\x00\x52\x00\x07\x00\x03\x00\x02\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x0f\x00\x0e\x00\x3a\x00\x2f\x00\x29\x00\x02\x00\x0f\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x03\x00\x52\x00\x05\x00\x09\x00\x4d\x00\x03\x00\x0a\x00\x05\x00\x0b\x00\x2f\x00\x0d\x00\x0c\x00\x02\x00\x0b\x00\x11\x00\x12\x00\x0b\x00\x52\x00\x10\x00\x11\x00\x12\x00\x03\x00\x52\x00\x52\x00\x1b\x00\x1c\x00\x30\x00\x31\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x3e\x00\x05\x00\x0a\x00\x29\x00\x02\x00\x08\x00\x0a\x00\x0b\x00\x52\x00\x03\x00\x0c\x00\x1b\x00\x1c\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x25\x00\x26\x00\x1b\x00\x1c\x00\x52\x00\x01\x00\x2b\x00\x04\x00\x00\x00\x01\x00\x02\x00\x04\x00\x04\x00\x1e\x00\x4e\x00\x4f\x00\x50\x00\x04\x00\x52\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x03\x00\x06\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0b\x00\x13\x00\x0d\x00\x2f\x00\x02\x00\x52\x00\x11\x00\x12\x00\x04\x00\x0c\x00\x30\x00\x04\x00\x03\x00\x01\x00\x05\x00\x52\x00\x1b\x00\x1c\x00\x01\x00\x01\x00\x0b\x00\x4e\x00\x4f\x00\x50\x00\x3e\x00\x52\x00\x11\x00\x12\x00\x02\x00\x07\x00\x03\x00\x18\x00\x05\x00\x39\x00\x3a\x00\x3b\x00\x1b\x00\x1c\x00\x0b\x00\x01\x00\x0a\x00\x02\x00\x23\x00\x30\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2c\x00\x2d\x00\x01\x00\x1b\x00\x1c\x00\x02\x00\x3e\x00\x02\x00\x01\x00\x01\x00\x52\x00\x00\x00\x01\x00\x02\x00\x01\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x04\x00\x52\x00\x52\x00\x3a\x00\x09\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x48\x00\x00\x00\x01\x00\x02\x00\x25\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x18\x00\x52\x00\x39\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x23\x00\x07\x00\x52\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x3e\x00\x52\x00\x2c\x00\x2d\x00\x04\x00\x43\x00\x00\x00\x01\x00\x02\x00\x01\x00\x04\x00\x39\x00\x3a\x00\x3b\x00\x4c\x00\x4d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x10\x00\x04\x00\x01\x00\x48\x00\x49\x00\x01\x00\x52\x00\x3e\x00\x39\x00\x3a\x00\x3b\x00\x04\x00\x43\x00\x00\x00\x01\x00\x02\x00\x01\x00\x04\x00\x04\x00\x02\x00\x0c\x00\x4c\x00\x4d\x00\x48\x00\x49\x00\x13\x00\x2b\x00\x16\x00\x0a\x00\x2e\x00\x2f\x00\x00\x00\x01\x00\x02\x00\x0e\x00\x04\x00\x0e\x00\x04\x00\x18\x00\x52\x00\x39\x00\x3a\x00\x3b\x00\x04\x00\x04\x00\x01\x00\x00\x00\x01\x00\x02\x00\x23\x00\x04\x00\x04\x00\x03\x00\x08\x00\x1a\x00\x48\x00\x49\x00\x18\x00\x2c\x00\x2d\x00\x52\x00\x00\x00\x01\x00\x02\x00\x04\x00\x04\x00\x0c\x00\x4e\x00\x23\x00\x06\x00\x39\x00\x3a\x00\x3b\x00\x04\x00\x0e\x00\x52\x00\x10\x00\x2c\x00\x2d\x00\x0e\x00\x21\x00\x52\x00\x16\x00\x17\x00\x03\x00\x48\x00\x49\x00\x28\x00\x39\x00\x3a\x00\x3b\x00\x2c\x00\x2d\x00\x04\x00\x07\x00\x0c\x00\x04\x00\x06\x00\x13\x00\x39\x00\x45\x00\x07\x00\x47\x00\x39\x00\x3a\x00\x3b\x00\x0a\x00\x04\x00\x27\x00\x08\x00\x29\x00\x2a\x00\x2b\x00\x2f\x00\x2d\x00\x45\x00\x18\x00\x47\x00\x39\x00\x3a\x00\x3b\x00\x0a\x00\x35\x00\x36\x00\x37\x00\x38\x00\x0a\x00\x23\x00\x3b\x00\x04\x00\x3d\x00\x3e\x00\x3f\x00\x52\x00\x41\x00\x01\x00\x2c\x00\x2d\x00\x52\x00\x46\x00\x47\x00\x04\x00\x27\x00\x4a\x00\x29\x00\x2a\x00\x2b\x00\x4f\x00\x2d\x00\x18\x00\x0e\x00\x01\x00\x52\x00\x52\x00\x52\x00\x02\x00\x35\x00\x36\x00\x37\x00\x38\x00\x23\x00\x01\x00\x3b\x00\x04\x00\x3d\x00\x3e\x00\x3f\x00\x02\x00\x41\x00\x2c\x00\x2d\x00\x03\x00\x54\x00\x46\x00\x47\x00\x04\x00\x27\x00\x4a\x00\x29\x00\x2a\x00\x2b\x00\x52\x00\x2d\x00\x18\x00\x54\x00\x03\x00\x03\x00\x03\x00\x52\x00\x08\x00\x35\x00\x36\x00\x37\x00\x38\x00\x23\x00\x17\x00\x3b\x00\x54\x00\x3d\x00\x3e\x00\x3f\x00\x18\x00\x41\x00\x2c\x00\x2d\x00\x0e\x00\x14\x00\x46\x00\x47\x00\x4e\x00\x27\x00\x4a\x00\x29\x00\x2a\x00\x2b\x00\x30\x00\x2d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\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\x18\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\x23\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x3e\x00\x46\x00\xff\xff\x41\x00\x42\x00\x43\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\x04\x00\xff\xff\x3e\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2c\x00\x2d\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\xff\xff\x2d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\x36\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3e\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\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"# happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x41\x00\x77\x01\x42\x00\x41\x00\x5a\x00\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\xf7\x01\xd9\x00\xb7\x00\x56\x00\xea\x00\x79\x00\xff\x00\xab\x01\x34\x00\x51\x00\xb8\x00\x35\x00\x37\x00\x17\x00\xba\x01\x7c\x00\x2e\x00\x2f\x00\x4f\x00\x19\x00\x1a\x00\x9d\x01\x77\x01\x79\x00\x8a\x01\x32\x00\x0b\x01\x71\x01\x0d\x01\x9a\x00\x9b\x00\x9c\x00\x72\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xb9\x00\x74\x01\x00\x01\xf5\x01\x23\x00\xa8\x01\x76\x00\xf6\xff\x5f\x00\xa2\x01\x5b\x00\x2f\x01\x66\x00\x06\x00\xcb\x01\x99\x00\x9a\x00\x9b\x00\x9c\x00\x12\x00\xfc\x01\x5b\x00\x95\x00\x43\x00\xe3\x00\x06\x00\x43\x00\x44\x00\xea\x00\xcb\x00\xcc\x00\x06\x00\xd6\xff\xcd\x00\xcf\x00\xa9\x01\xff\xff\x15\x00\x06\x00\x16\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x17\x00\x7a\x00\xb0\x00\xb1\x00\xb2\x00\x18\x00\x19\x00\x1a\x00\x06\x00\x06\x00\x06\x00\x5a\x00\x06\x00\xa2\x00\x1b\x00\xa3\x00\x5f\x00\xb3\x00\x44\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x2c\x00\x22\x00\x9d\x00\xa4\x00\x23\x00\x70\x00\x06\x00\x24\x00\x2c\x00\x9e\x00\x6a\x00\x8f\x01\xa5\x00\x90\x01\x74\x01\x26\x00\xd6\xff\x71\x00\x72\x00\x9f\x00\x47\x01\x7d\x01\x73\x00\x06\x00\xa2\x00\xdf\x00\xa3\x00\x27\x00\xf4\x01\xea\x00\xe0\x00\x28\x00\x29\x00\xfd\x01\xb6\x00\x06\x00\x31\x00\x2a\x00\x0b\x01\xa4\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\xff\x00\x16\x00\xa5\x00\x32\x00\xb9\x00\x5b\x00\x5c\x00\x17\x00\xa2\x00\x5e\x00\xa3\x00\x5f\x00\x18\x00\x19\x00\x1a\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x18\x01\xea\x01\x1b\x00\xea\x00\xa4\x00\x74\x00\x19\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xa5\x00\x22\x00\x00\x01\x51\x00\x23\x00\xfb\x01\xa3\x01\x24\x00\x7e\x01\x01\x01\x25\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x26\x00\x06\x00\xf1\x00\xfc\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\xf2\x00\xa2\x00\x06\x00\xa3\x00\x27\x00\x06\x00\xd4\x01\xeb\x01\x28\x00\x29\x00\xd5\x01\xb6\x00\xa4\x01\xda\x01\x2a\x00\x74\x01\xa4\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\x26\x01\x16\x00\xa5\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x17\x00\xa2\x00\x06\x00\xa3\x00\xc3\x01\x18\x00\x19\x00\x1a\x00\x6d\x01\xe4\x00\x27\x01\x74\x01\x51\x00\xb5\x01\x1b\x00\x55\x01\xa4\x00\x46\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xa5\x00\x22\x00\xdd\x01\x25\x01\x23\x00\x75\x01\xf1\x01\x24\x00\x48\x00\x13\x01\x6a\x00\x0d\x01\x9a\x00\x9b\x00\x9c\x00\x26\x00\xf2\x01\x14\x01\x51\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x27\x00\xee\x00\x97\x01\x86\x01\x28\x00\x29\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x2a\x00\x51\x00\xe1\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\x26\x01\x16\x00\x51\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x17\x00\x99\x01\x06\x00\x3e\x01\x2c\x00\x18\x00\x19\x00\x1a\x00\x52\x00\xb9\x00\x27\x01\x53\x00\x1e\x01\x28\x01\x1b\x00\xb0\x00\xb1\x00\xb2\x00\xd2\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xd7\x01\x22\x00\x9d\x00\x3b\x01\x23\x00\xb3\x00\x5a\x01\x24\x00\x9a\x01\xad\x01\x25\x00\xb9\x00\x9d\x00\x52\x00\x99\x01\x26\x00\x53\x00\x3c\x01\xd6\x01\x9e\x00\x15\x00\x52\x00\x4e\x00\xd9\x01\x53\x00\x6b\x00\xbd\x01\x27\x00\x17\x00\x9f\x00\xa0\x00\x28\x00\x29\x00\x18\x00\x19\x00\x1a\x00\x51\x00\x2a\x00\xf3\x00\x88\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x89\x00\x9a\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x74\x01\x22\x00\x34\x00\x9b\x01\x23\x00\x35\x00\xc0\x01\x0d\x01\x9a\x00\x9b\x00\x9c\x00\x0d\x01\x9a\x00\x9b\x00\x9c\x00\xf3\x00\xf4\x00\xcf\x01\xaa\x00\x88\x01\x15\x00\xc4\x01\x4e\x00\xab\x00\x9d\x01\x1f\xff\x52\x00\x27\x00\x17\x00\x53\x00\xa6\x00\x28\x00\x29\x00\x18\x00\x19\x00\x1a\x00\x63\x00\x2a\x00\x64\x00\xc7\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\xf4\x00\xab\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\xf5\x00\x62\x01\xcc\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x88\x00\x51\x00\x89\x00\xb0\x00\xb1\x00\xb2\x00\x89\x00\xb0\x00\x58\x01\x79\x00\x8a\x00\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\xb3\x00\x0e\x01\xa3\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x4c\x01\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x89\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xa1\x01\xa6\x01\x52\x00\x8d\x01\x23\x00\x53\x00\x54\x00\xa4\x01\xa5\x01\xac\x01\x0d\x01\x9a\x00\x9b\x00\x9c\x00\xd9\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\x4d\x01\x4e\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x45\x01\x17\x00\x04\x01\x13\x01\x56\x01\x77\x00\x18\x00\x19\x00\x1a\x00\x8c\x01\x7a\x01\x14\x01\xa7\x01\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\x82\x01\x5d\x01\x83\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x6f\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb0\x00\xb1\x00\x21\x01\x15\x00\x74\x01\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x22\x01\x9d\x00\xb3\x01\x23\x00\x18\x00\x19\x00\x1a\x00\xd9\x00\x16\x01\xd1\x01\x91\x00\x88\x01\x92\x00\x5f\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x77\x01\x07\x01\x35\x00\x36\x00\x23\x00\x79\x01\x7a\x01\x0b\x00\x0c\x00\x7e\x00\x0d\x01\x9a\x00\x9b\x00\x9c\x00\x78\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\x12\x00\x4e\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x08\x01\x17\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x4f\x00\x19\x00\x1a\x00\x7b\x01\xab\x01\x7f\x01\xeb\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x4d\x00\xe4\x01\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\xe5\x01\xf3\x01\xf6\x00\x23\x00\x4f\x00\x19\x00\x1a\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x35\x01\xb0\x00\xb1\x00\x21\x01\x15\x00\x3a\x01\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x22\x01\x9d\x00\x23\x01\x23\x00\x18\x00\x19\x00\x1a\x00\x0f\x01\x72\x01\x3d\x01\x74\x01\x07\x01\x70\x00\xae\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x71\x00\x72\x00\xa5\x00\x87\x01\x23\x00\x88\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x51\x01\x11\x00\x08\x01\xe4\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x12\x00\xb9\x00\xd0\x00\x09\x01\x51\x00\x13\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xd1\x00\xd2\x00\xd3\x00\x52\x01\xb8\x01\x74\x01\xd4\x00\xe5\x00\xd5\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xa2\x00\x88\x00\xa3\x00\x6a\x00\x91\x01\x38\x00\xfc\x00\x89\x00\x8b\x01\x39\x00\x88\x01\x18\x01\x44\xff\xe7\x00\xe8\x00\xa4\x00\x9f\x01\x19\x01\x59\x00\x44\xff\x44\xff\xe4\x00\xfe\x00\x44\xff\xa5\x00\xaf\x00\x9a\x00\x9b\x00\x9c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x51\x01\x11\x00\x62\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x48\x00\x12\x00\x13\x01\xe5\x00\x52\x00\xff\x01\x13\x00\x53\x00\x6b\x00\x00\x02\x14\x01\xfa\x01\xf9\x01\x15\x01\xe6\x00\x52\x01\x53\x01\xf1\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xe7\x00\xe8\x00\xe8\x01\x52\x00\x06\x00\xe9\x01\x53\x00\x6b\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb0\x00\xb1\x00\xb2\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x33\x01\x11\x00\xea\x01\x25\xff\xed\x01\xf7\x01\x25\xff\xb3\x00\xb4\x00\x12\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x13\x00\x60\x00\x77\x00\x34\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x5f\x00\x11\x00\xe4\x01\x99\x00\x9a\x00\x9b\x00\x9c\x00\xee\x01\x81\x01\x12\x00\xe5\x01\xe6\x01\x0b\x00\x74\x00\x13\x00\x60\x00\xbb\x00\x61\x00\xbc\x00\xbd\x00\xbe\x00\xf0\x01\xbf\x00\xef\x01\xe0\x01\x03\x01\x12\x00\xe1\x01\xce\x01\x2b\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\x06\x00\xe3\x01\xc4\x00\x51\x00\xc5\x00\xc6\x00\xc7\x00\x06\x00\xc8\x00\xe4\x01\x9d\x00\xcf\x01\x81\x01\xc9\x00\xca\x00\xdc\x01\xcb\x00\x16\x01\xfc\x00\x04\x01\xd1\x01\xbb\x00\x06\x00\xbc\x00\xbd\x00\xbe\x00\x9d\x00\xbf\x00\x05\x01\x06\x01\xfc\x00\xdd\x01\x62\x01\x2c\x01\xfe\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xe4\x00\xfd\x00\xc4\x00\xbc\x01\xc5\x00\xc6\x00\xc7\x00\xfe\x00\xc8\x00\x0d\x01\x9a\x00\x9b\x00\x9c\x00\xc9\x00\xca\x00\xbb\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xd9\x01\xbf\x00\xbd\x01\xc2\x01\x0d\x01\x9a\x00\x9b\x00\x9c\x00\xbf\x01\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xec\x00\xc0\x01\xc4\x00\xc6\x01\xc5\x00\xc6\x00\xc7\x00\x96\x01\xc8\x00\x06\x00\xc7\x01\xee\x00\xef\x00\xc9\x00\xca\x00\xc9\x01\xcb\x00\xca\x01\xcb\x01\x06\x00\x85\x01\xbb\x00\x86\x01\xbc\x00\xbd\x00\xbe\x00\x06\x00\xbf\x00\x66\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb0\x00\x59\x01\xc0\x00\xc1\x00\xc2\x00\xc3\x00\x8a\x01\x06\x00\xc4\x00\x7d\x01\xc5\x00\xc6\x00\xc7\x00\x91\x01\xc8\x00\xb0\x00\xb1\x00\xb4\x01\xd9\x00\xc9\x00\xca\x00\x93\x01\xcb\x00\x66\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x96\x01\x9f\x01\x06\x00\xaf\x01\xda\x00\x06\x00\xdb\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xdc\x00\xdd\x00\xb0\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\x06\x00\xb7\x01\x12\x00\xb1\x01\x40\x01\x5b\x00\xba\x01\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x41\x01\x06\x00\x43\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\x4b\x01\x12\x00\x42\x01\x49\x01\x5b\x00\x68\x00\x13\x00\x37\x01\x4a\x01\x4e\x01\x4f\x01\x50\x01\x51\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\x54\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8e\x00\x12\x00\x0d\x01\x9a\x00\x9b\x00\x9c\x00\x13\x00\x06\x00\x8f\x00\x5c\x01\x5d\x01\x06\x00\x5f\x01\x61\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\x0c\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x63\x01\x12\x00\x64\x01\x65\x01\x66\x01\x68\x01\x13\x00\x67\x01\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x69\x01\x6c\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\x6d\x01\x12\x00\x6e\x01\xb0\x00\xb1\x00\x24\x01\x13\x00\x8a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x6f\x01\x06\x00\x74\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\xb8\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4b\x00\x12\x00\x06\x00\x7f\x01\x84\x01\xd9\x00\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xe3\x00\xe1\x00\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xde\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x56\x00\x12\x00\x06\x00\x81\x01\xe2\x00\x0c\x01\x13\x00\x11\x01\x12\x01\x16\x01\x1a\x01\x92\x00\x1b\x01\x12\x00\x1c\x01\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\x56\x00\x12\x00\x06\x00\x21\x01\x06\x00\x2a\x01\x13\x00\x2b\x01\x2c\x01\x2e\x01\x2f\x01\x06\x00\x32\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xb7\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x3b\x00\x37\x01\x12\x00\x3c\x00\x3a\x01\x06\x00\x06\x00\x13\x00\x2b\x00\x7d\x00\x76\x00\x87\x00\x8c\x00\x3d\x00\x3e\x00\x8d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc2\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8e\x00\x3f\x00\x12\x00\x93\x00\x94\x00\x95\x00\x40\x00\x13\x00\x97\x00\x98\x00\x99\x00\x06\x00\xa8\x00\xa9\x00\x89\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x93\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\xcf\x00\x12\x00\xd7\x00\x06\x00\xd8\x00\x41\x00\x13\x00\x06\x00\x4a\x00\x50\x00\xff\xff\xff\xff\x51\x00\x58\x00\x6e\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x94\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x6d\x00\x06\x00\x12\x00\xff\xff\x6f\x00\x76\x00\x77\x00\x13\x00\x06\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x98\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\xa0\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\xb1\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\xb2\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\x43\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\x46\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\x57\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\x1c\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\x1d\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\x1f\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\x30\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\x32\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\x38\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\xe4\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\xe4\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xec\x00\x00\x00\x0b\x00\x0c\x00\x82\x00\x83\x00\x84\x00\x69\x01\x11\x00\x00\x00\x00\x00\xee\x00\xef\x00\x00\x00\xe4\x00\xec\x00\x12\x00\x0b\x00\x0c\x00\x7f\x00\xe4\x00\x00\x00\x6a\x01\x00\x00\x00\x00\x00\x00\xee\x00\xef\x00\xe4\x00\x00\x00\x00\x00\x12\x00\x0b\x00\x0c\x00\x80\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x0b\x00\x74\x00\xe4\x00\x12\x00\xe4\x00\x00\x00\xea\x00\x00\x00\x00\x00\xe5\x00\xec\x00\x00\x00\xe4\x00\x00\x00\x12\x00\xe7\x00\xe8\x00\xed\x00\xe4\x00\x00\x00\xf2\x00\xee\x00\xef\x00\xe5\x00\x00\x00\x00\x00\xe5\x00\x00\x00\xe5\x00\xe7\x00\xe8\x00\xe4\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\xf8\x00\x00\x00\xf9\x00\x00\x00\x00\x00\xe5\x00\xe7\x00\xe8\x00\xec\x00\xe7\x00\xe8\x00\xe7\x00\xe8\x00\x00\x00\x00\x00\xfa\x00\xfb\x00\x00\x00\xe5\x00\xee\x00\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x00\xe8\x00\x00\x00\xbb\x00\x02\x01\xbc\x00\xbd\x00\xbe\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\xe7\x00\xe8\x00\x00\x00\x00\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\x00\x00\x00\x00\xc4\x00\x00\x00\xc5\x00\xc6\x00\xc7\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x00\xca\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xd6\xff\x42\x00\x42\x00\x86\x01\x42\x00\x43\x00\x42\x00\x43\x00\x42\x00\x43\x00\x42\x00\x43\x00\x42\x00\x43\x00\x8c\x01\x43\x00\x68\x00\x6d\x00\x83\x01\x1a\x01\x58\x00\x96\x00\x59\x00\x64\x00\xac\x01\x87\x00\xf7\x00\x97\x00\x5a\x00\x86\x01\x5f\x00\x28\x01\x3e\xff\x08\x02\x5b\x00\x5c\x00\xfd\x00\x29\x01\xcc\x00\x3e\xff\x3e\xff\x1b\x01\x1e\x01\x3e\xff\x5d\x00\x5e\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\xba\x01\x52\x00\x53\x00\x54\x00\xd6\xff\x55\x00\x6c\x00\x8a\x00\xfd\x00\x6d\x00\x1e\x01\x35\x00\x03\x02\xf2\x00\x36\x00\x01\x01\xa6\x01\x84\x00\xd7\x01\xf3\x00\x2f\x00\x52\x00\x53\x00\x54\x00\x74\x00\x55\x00\x69\x00\x42\x01\x2f\x00\x2f\x00\x8d\x01\x88\x00\xde\x00\xff\xff\x44\x00\xf6\x00\x44\x00\x45\x00\xdf\x00\x15\x00\xe0\x00\x16\x00\xe2\x00\xb7\x01\x06\x00\x2c\x00\x2d\x00\x17\x00\x2f\x00\xf6\xff\x2f\x00\x2f\x00\x18\x00\x19\x00\x1a\x00\x2f\x00\x2f\x00\x12\x00\xa7\x00\xfd\x00\x2f\x00\x1b\x00\x2f\x00\x2f\x00\x6d\x00\xa8\x00\x00\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xb8\x01\x22\x00\xa9\x00\x59\x01\x23\x00\xa7\x00\x2f\x00\x24\x00\x2f\x00\x2c\x00\x78\x00\x68\x00\xa8\x00\x01\x02\x04\x01\x26\x00\x47\x00\x48\x00\x2c\x00\x83\x01\x05\x01\x2f\x00\xa9\x00\xaa\x00\x80\x01\x5f\x00\x27\x00\x28\x00\xa8\x01\x81\x01\x5f\x00\x29\x00\x2a\x00\x49\x00\x09\x02\x52\x00\x53\x00\x54\x00\x2b\x00\x55\x00\xf7\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x15\x00\xf6\x01\x16\x00\x5f\x00\x7e\x00\x52\x00\x53\x00\x54\x00\x17\x00\x55\x00\xa9\x01\x2f\x00\x68\x00\x18\x00\x19\x00\x1a\x00\x7f\x00\x80\x00\x95\x01\x83\x01\xe2\x01\x81\x00\x1b\x00\xbd\x00\x38\x00\xbc\x00\x69\x00\xa3\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xcf\x01\x22\x00\x2c\x00\x33\x00\x23\x00\x2f\x00\xbe\x00\x24\x00\x4e\x01\x5f\x01\x25\x00\x9e\x01\xa7\x00\x9f\x01\xec\x00\x26\x00\x52\x00\x53\x00\x54\x00\xbc\x01\x55\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x27\x00\x28\x00\xa7\x00\xa8\x01\xbd\x00\x29\x00\x2a\x00\x99\x01\x91\x01\x81\x01\x92\x01\x82\x00\x2b\x00\x69\x00\x6a\x00\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x15\x00\xbe\x00\x16\x00\x5f\x00\xbf\x00\x52\x00\x53\x00\x54\x00\x17\x00\x55\x00\x9f\x00\xa9\x01\xa0\x00\x18\x00\x19\x00\x1a\x00\x52\x00\x53\x00\x54\x00\xb5\x01\xb3\x00\xaa\x01\x1b\x00\x0b\x00\x0c\x00\x8c\x00\x32\x00\xa7\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x26\x01\x22\x00\x06\x01\x12\x00\x23\x00\x33\x00\x24\x01\x24\x00\x60\x00\x17\x01\x78\x00\x61\x00\x3a\x01\x5f\x00\x25\x01\x26\x00\x52\x00\x53\x00\x54\x00\xb6\x01\x55\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x27\x00\x28\x00\xa7\x00\x07\x01\x06\x01\x29\x00\x2a\x00\xcc\x00\x07\x02\x40\x01\x83\x01\xac\x01\x2b\x00\xb4\x00\x67\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x15\x00\x08\x02\x16\x00\x51\x01\x71\x01\x84\x01\x60\x00\xf7\x00\x17\x00\x61\x00\x4f\x01\x07\x01\x97\x00\x18\x00\x19\x00\x1a\x00\x52\x00\x53\x00\x54\x00\x08\x01\xb3\x00\xec\x00\x1b\x00\x0b\x00\x0c\x00\x8d\x00\xe9\x01\x64\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x12\x01\x22\x00\xff\x00\x12\x00\x23\x00\x9b\x01\x89\x01\x24\x00\x60\x00\xa5\x01\x25\x00\x61\x00\x79\x00\x01\x01\x02\x01\x26\x00\x1f\xff\x24\x01\x5f\x00\x1f\xff\x15\x00\xde\x01\x4f\x00\xed\x01\x5f\x00\x25\x01\x27\x00\x28\x00\x17\x00\x85\x00\x13\x01\x29\x00\x2a\x00\x18\x00\x19\x00\x1a\x00\xcc\x00\xb1\x01\x2b\x00\xb4\x00\x68\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xe3\x01\x12\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x58\x00\x22\x00\x59\x00\x60\x00\x23\x00\xcc\x00\x61\x00\xac\x00\x5a\x00\x60\x00\xfd\x01\x28\x01\x61\x00\x62\x00\x5b\x00\x5c\x00\xfe\x01\x29\x01\x78\x00\xe5\x01\x87\x00\x9c\x01\xba\x01\x13\x01\x5d\x00\x5e\x00\x27\x00\x28\x00\x17\x00\xc6\x01\x14\x01\x29\x00\x2a\x00\x50\x00\x19\x00\x1a\x00\x2f\x00\x30\x00\x2b\x00\xb2\x01\xca\x00\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x32\x01\xc9\x01\xcb\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x15\x00\x24\x01\x4f\x00\x60\x00\x23\x00\x19\xff\x61\x00\x79\x00\x17\x00\x25\x01\xb3\x01\xe6\x01\xcc\x01\x18\x00\x19\x00\x1a\x00\x52\x00\x53\x00\x54\x00\xb0\x00\x55\x00\x06\x00\x2c\x00\x2d\x00\xb1\x00\x2f\x00\xd0\x01\xf7\x00\x96\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x97\x00\x52\x00\x53\x00\x54\x00\x23\x00\x55\x00\x1a\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x87\x00\x71\x00\xba\x01\xe0\x01\x72\x00\xff\x00\x3c\x00\xe1\x01\x17\x00\x3d\x00\xf7\x00\x1b\x01\x78\x01\x50\x00\x19\x00\x1a\x00\x01\x01\x02\x01\xd3\x01\x3e\x00\x3f\x00\x1c\x01\x33\x01\xd8\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x87\x00\x40\x00\x4f\x00\xec\x00\x23\x00\xff\x00\x41\x00\x56\x00\x17\x00\x0b\x00\x0c\x00\x8e\x00\x79\x01\x50\x00\x19\x00\x1a\x00\x01\x01\x02\x01\x36\x00\x37\x00\xb0\x01\x88\x01\x89\x01\x12\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x31\x01\x5f\x00\xb2\x01\xbb\x01\x23\x00\x83\x01\x97\x00\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x15\x00\xdb\x01\x4f\x00\x97\x01\x5c\x01\x83\x01\x96\x00\x0f\x01\x17\x00\x65\x01\xb3\x01\xb4\x01\x97\x00\x18\x00\x19\x00\x1a\x00\x98\x00\xae\x01\xdd\x01\x6c\x01\x97\x01\x0b\x00\x82\x00\x11\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x87\x00\x12\x00\x4f\x00\x83\x01\x23\x00\x6e\x01\x83\x01\xf0\x01\x17\x00\x9b\x00\x7e\x01\xf1\x01\xff\x01\x50\x00\x19\x00\x1a\x00\x96\x01\x4a\x01\x97\x01\x9a\x01\x86\x01\x97\x01\x87\x01\x12\x00\x06\x00\x07\x00\x08\x00\x09\x00\x98\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x35\x00\x5f\x00\x8a\x01\x36\x00\x23\x00\x8e\x01\xfe\x00\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x15\x00\x24\x01\x4f\x00\x09\x01\x2c\x01\x48\x01\xf0\x01\x0f\x01\x17\x00\x25\x01\xf1\x01\xf2\x01\x26\x01\x18\x00\x19\x00\x1a\x00\x4d\x01\x10\x01\x50\x01\xb2\x00\xab\x00\x0b\x00\x64\x00\x11\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x87\x00\x12\x00\x4f\x00\xba\x00\x23\x00\xc4\x00\x3a\x00\x7e\x00\x17\x00\x9b\x00\xe3\x00\xcc\x00\xe4\x00\x50\x00\x19\x00\x1a\x00\xe5\x00\x9c\x00\xe6\x00\x7f\x00\x80\x00\xe7\x00\xe8\x00\x12\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x39\x00\x49\x00\x67\x00\x70\x00\x23\x00\xfd\x01\x0b\x02\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x15\x00\x05\x02\x4f\x00\x06\x02\x0c\x02\x2f\x00\xf4\x01\xf6\x01\x17\x00\xf5\x01\xf7\x00\x90\x01\xef\x01\x18\x00\x19\x00\x1a\x00\xf9\x01\xfa\x01\xfb\x01\x06\x00\xec\x01\x0b\x00\xb1\x00\xed\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x4e\x00\x12\x00\x4f\x00\xf0\x01\x23\x00\xff\x00\x2f\x00\x2f\x00\x17\x00\x0b\x00\x64\x00\xda\x01\x00\x01\x50\x00\x19\x00\x1a\x00\x01\x01\x02\x01\xdb\x01\x2f\x00\xe8\x01\xe9\x01\x71\x01\x12\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xc8\x01\xc9\x01\x90\x01\xcb\x01\x23\x00\xce\x01\xcc\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x58\x00\x2f\x00\x59\x00\xd2\x01\xd3\x01\x15\x00\xd5\x01\x4f\x00\x5a\x00\xd6\x01\xba\x00\xd7\x01\x94\x01\x17\x00\x5b\x00\x5c\x00\x95\x01\x2f\x00\x18\x00\x19\x00\x1a\x00\x99\x01\x2f\x00\x2f\x00\x5d\x00\x5e\x00\x0b\x00\x82\x00\x16\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x58\x00\x12\x00\x59\x00\x8c\x01\x23\x00\xa2\x01\xa0\x01\x7c\x01\x5a\x00\x2f\x00\xae\x01\xa5\x01\x0f\x01\x17\x01\x5b\x00\x5c\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\xbe\x01\x18\x01\x19\x01\x5d\x00\x5e\x00\x2f\x00\xbf\x01\x11\x01\xc3\x01\x52\x00\x53\x00\x54\x00\x53\x01\xb3\x00\xc0\x01\x06\x00\x2c\x00\x2d\x00\x54\x01\x2f\x00\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x58\x00\x55\x01\x59\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x5a\x00\x56\x01\xba\x00\x5b\x01\x5c\x01\x2f\x00\x5b\x00\x5c\x00\x6b\x01\x6c\x01\x85\x00\xf7\x00\x58\x00\x6e\x01\x59\x00\x2f\x00\x5d\x00\x5e\x00\x70\x01\x72\x01\x5a\x00\x06\x00\x2c\x00\x2d\x00\x12\x00\x2f\x00\x5b\x00\x5c\x00\x73\x01\x74\x01\x58\x00\xf8\x00\x59\x00\xb4\x00\xb5\x00\x5e\x01\x5d\x00\x5e\x00\x5a\x00\x75\x01\x7c\x01\x76\x01\xa0\x01\x4c\x00\x5b\x00\x5c\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xfa\x00\xfb\x00\x77\x01\x5d\x00\x5e\x00\x78\x01\x12\x00\x7b\x01\x7d\x01\x7e\x01\x2f\x00\x52\x00\x53\x00\x54\x00\x83\x01\xb3\x00\x06\x00\x2c\x00\x2d\x00\xf7\x00\x2f\x00\x2f\x00\x90\x01\x8e\x01\xec\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x5f\x00\x52\x00\x53\x00\x54\x00\x93\x01\xb3\x00\x06\x00\x2c\x00\x2d\x00\xf8\x00\x2f\x00\xf4\x00\xf5\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x60\x01\x11\x00\xf9\x00\xf6\x00\x2f\x00\x1f\x01\x06\x00\x2c\x00\x2d\x00\x12\x00\x2f\x00\xfa\x00\xfb\x00\x22\x01\x13\x00\x52\x00\x53\x00\x54\x00\x23\x01\xc5\x00\xb4\x00\xb5\x00\xc6\x00\x61\x01\xc4\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x60\x01\x11\x00\xa0\x00\x2a\x01\x2b\x01\xc7\x00\x57\x01\x2c\x01\x2f\x00\x12\x00\xb4\x00\xb5\x00\xc6\x00\x2e\x01\x13\x00\x52\x00\x53\x00\x54\x00\x2f\x01\xb3\x00\xf7\x00\x30\x01\x33\x01\x61\x01\x62\x01\xc7\x00\x69\x01\x35\x01\x60\x00\x37\x01\x36\x01\x61\x00\x79\x00\x52\x00\x53\x00\x54\x00\x38\x01\xb3\x00\x84\x00\xf7\x00\xf8\x00\x2f\x00\xb4\x00\xb5\x00\xc6\x00\x3d\x01\x3e\x01\x3f\x01\x52\x00\x53\x00\x54\x00\xfd\x00\xb3\x00\xf7\x00\x42\x01\x40\x01\x45\x01\xc7\x00\xc8\x00\xf8\x00\xfa\x00\xfb\x00\x2f\x00\x52\x00\x53\x00\x54\x00\xec\x00\xb3\x00\x4a\x01\x06\x00\x05\x01\x4d\x01\xb4\x00\xb5\x00\xc6\x00\x03\x02\xed\x00\x2f\x00\xee\x00\xfa\x00\xfb\x00\x84\x00\xff\x00\x2f\x00\xef\x00\xf0\x00\x8b\x00\xc7\x00\x20\x01\x0d\x01\xb4\x00\xb5\x00\xb6\x00\x01\x01\x02\x01\x95\x00\x9a\x00\x9e\x00\xf7\x00\x9b\x00\xa1\x00\xa7\x00\xb7\x00\xa3\x00\x5d\x01\xb4\x00\xb5\x00\xb6\x00\xa2\x00\xfc\x01\xce\x00\xa5\x00\xcf\x00\xd0\x00\xd1\x00\xae\x00\xd2\x00\xb7\x00\xf8\x00\xb8\x00\xb4\x00\xb5\x00\xbb\x00\xa6\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x97\x00\x0a\x01\xd7\x00\xf7\x00\xd8\x00\xd9\x00\xda\x00\x2f\x00\xdb\x00\xaf\x00\xfa\x00\xfb\x00\x2f\x00\xdc\x00\xdd\x00\xdd\x01\xce\x00\xde\x00\xcf\x00\xd0\x00\xd1\x00\x2c\x00\xd2\x00\xf8\x00\xc1\x00\xe2\x00\x2f\x00\x2f\x00\x2f\x00\xea\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x0b\x01\x42\x00\xd7\x00\xf7\x00\xd8\x00\xd9\x00\xda\x00\xeb\x00\xdb\x00\xfa\x00\xfb\x00\x4b\x00\xff\xff\xdc\x00\xdd\x00\xe5\x01\xce\x00\xde\x00\xcf\x00\xd0\x00\xd1\x00\x2f\x00\xd2\x00\xf8\x00\xff\xff\x51\x00\x52\x00\x66\x00\x2f\x00\x7b\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x0c\x01\x7c\x00\xd7\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\x7d\x00\xdb\x00\xfa\x00\xfb\x00\x84\x00\x85\x00\xdc\x00\xdd\x00\x06\x00\xce\x00\xde\x00\xcf\x00\xd0\x00\xd1\x00\x32\x00\xd2\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x00\x00\x00\x00\xd7\x00\x00\x00\xd8\x00\xd9\x00\xda\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\xde\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\xf7\x00\x06\x00\x07\x00\x08\x00\x09\x00\x74\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\x46\x01\x11\x00\xf8\x00\x06\x00\x07\x00\x08\x00\x09\x00\x74\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x13\x00\x6e\x00\x00\x00\x47\x01\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x00\xfb\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x6d\x00\x11\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x75\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x6e\x00\x12\x00\x6f\x00\x00\x00\x69\x00\xc6\x01\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x75\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xf7\x00\x00\x00\x12\x00\x00\x00\x00\x00\x69\x00\x76\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xfa\x00\xfb\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc2\x00\x11\x00\x63\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc2\x00\x11\x00\x1f\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc2\x00\x11\x00\xc3\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc2\x00\x11\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xea\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\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xe1\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc3\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xce\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\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xa2\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xa3\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xa7\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\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xaf\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc0\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc1\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\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x56\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x58\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x66\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\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x38\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x39\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x3b\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\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x43\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x45\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x4b\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\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x8b\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x8f\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x93\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\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc1\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x75\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x66\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\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xce\x00\x00\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\xd2\x00\x0b\x00\x0c\x00\x90\x00\x91\x00\x92\x00\x00\x00\x11\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x00\x00\x00\x00\xd7\x00\x12\x00\xd8\x00\xd9\x00\xda\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\xde\x00\x00\x00\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, 258) [ +happyReduceArr = array (4, 264) [ (4 , happyReduce_4), (5 , happyReduce_5), (6 , happyReduce_6), @@ -806,45 +799,51 @@ happyReduceArr = array (4, 258) [ (255 , happyReduce_255), (256 , happyReduce_256), (257 , happyReduce_257), - (258 , happyReduce_258) + (258 , happyReduce_258), + (259 , happyReduce_259), + (260 , happyReduce_260), + (261 , happyReduce_261), + (262 , happyReduce_262), + (263 , happyReduce_263), + (264 , happyReduce_264) ] -happy_n_terms = 83 :: Int +happy_n_terms = 85 :: Int happy_n_nonterms = 84 :: Int happyReduce_4 = happySpecReduce_1 0# happyReduction_4 happyReduction_4 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TV happy_var_1)) -> + = case happyOutTok happy_x_1 of { (PT _ (TI happy_var_1)) -> happyIn7 - (identC happy_var_1 + ((read happy_var_1) :: Integer )} happyReduce_5 = happySpecReduce_1 1# happyReduction_5 happyReduction_5 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TI happy_var_1)) -> + = case happyOutTok happy_x_1 of { (PT _ (TL happy_var_1)) -> happyIn8 - ((read happy_var_1) :: Integer + (happy_var_1 )} happyReduce_6 = happySpecReduce_1 2# happyReduction_6 happyReduction_6 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TL happy_var_1)) -> + = case happyOutTok happy_x_1 of { (PT _ (TD happy_var_1)) -> happyIn9 - (happy_var_1 + ((read happy_var_1) :: Double )} happyReduce_7 = happySpecReduce_1 3# happyReduction_7 happyReduction_7 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TD happy_var_1)) -> + = case happyOutTok happy_x_1 of { (PT _ (T_LString happy_var_1)) -> happyIn10 - ((read happy_var_1) :: Double + (LString (happy_var_1) )} happyReduce_8 = happySpecReduce_1 4# happyReduction_8 happyReduction_8 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (T_LString happy_var_1)) -> + = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn11 - (LString (happy_var_1) + (PIdent (mkPosToken happy_var_1) )} happyReduce_9 = happySpecReduce_1 5# happyReduction_9 @@ -888,8 +887,8 @@ happyReduction_13 (happy_x_10 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_7 of { happy_var_7 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_7 of { happy_var_7 -> case happyOut16 happy_x_9 of { happy_var_9 -> happyIn14 (MMain happy_var_2 happy_var_7 happy_var_9 @@ -912,7 +911,7 @@ happyReduce_15 = happySpecReduce_3 8# happyReduction_15 happyReduction_15 happy_x_3 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut17 happy_x_3 of { happy_var_3 -> happyIn15 (ConcSpec happy_var_1 happy_var_3 @@ -943,7 +942,7 @@ happyReduction_18 happy_x_3 happyReduce_19 = happySpecReduce_2 10# happyReduction_19 happyReduction_19 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut18 happy_x_2 of { happy_var_2 -> happyIn17 (ConcExp happy_var_1 (reverse happy_var_2) @@ -990,7 +989,7 @@ happyReduction_23 (happy_x_5 `HappyStk` happyReduce_24 = happySpecReduce_2 13# happyReduction_24 happyReduction_24 happy_x_2 happy_x_1 - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> happyIn20 (MTAbstract happy_var_2 )} @@ -998,7 +997,7 @@ happyReduction_24 happy_x_2 happyReduce_25 = happySpecReduce_2 13# happyReduction_25 happyReduction_25 happy_x_2 happy_x_1 - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> happyIn20 (MTResource happy_var_2 )} @@ -1006,7 +1005,7 @@ happyReduction_25 happy_x_2 happyReduce_26 = happySpecReduce_2 13# happyReduction_26 happyReduction_26 happy_x_2 happy_x_1 - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> happyIn20 (MTInterface happy_var_2 )} @@ -1017,8 +1016,8 @@ happyReduction_27 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_4 of { happy_var_4 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_4 of { happy_var_4 -> happyIn20 (MTConcrete happy_var_2 happy_var_4 ) `HappyStk` happyRest}} @@ -1029,8 +1028,8 @@ happyReduction_28 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_4 of { happy_var_4 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_4 of { happy_var_4 -> happyIn20 (MTInstance happy_var_2 happy_var_4 ) `HappyStk` happyRest}} @@ -1043,7 +1042,7 @@ happyReduction_29 (happy_x_6 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> case happyOut26 happy_x_4 of { happy_var_4 -> case happyOut26 happy_x_6 of { happy_var_6 -> happyIn20 @@ -1137,7 +1136,7 @@ happyReduction_35 (happy_x_10 `HappyStk` happyReduce_36 = happySpecReduce_2 14# happyReduction_36 happyReduction_36 happy_x_2 happy_x_1 - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> happyIn21 (MReuse happy_var_2 )} @@ -1215,7 +1214,7 @@ happyReduction_46 happy_x_3 happyReduce_47 = happySpecReduce_1 19# happyReduction_47 happyReduction_47 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn26 (OName happy_var_1 )} @@ -1227,7 +1226,7 @@ happyReduction_48 (happy_x_4 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut28 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_3 of { happy_var_3 -> + case happyOut11 happy_x_3 of { happy_var_3 -> happyIn26 (OQualQO happy_var_2 happy_var_3 ) `HappyStk` happyRest}} @@ -1241,8 +1240,8 @@ happyReduction_49 (happy_x_6 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut28 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_3 of { happy_var_3 -> - case happyOut7 happy_x_5 of { happy_var_5 -> + case happyOut11 happy_x_3 of { happy_var_3 -> + case happyOut11 happy_x_5 of { happy_var_5 -> happyIn26 (OQual happy_var_2 happy_var_3 happy_var_5 ) `HappyStk` happyRest}}} @@ -1299,7 +1298,7 @@ happyReduction_57 happy_x_3 happyReduce_58 = happySpecReduce_1 23# happyReduction_58 happyReduction_58 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn30 (IAll happy_var_1 )} @@ -1310,7 +1309,7 @@ happyReduction_59 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut50 happy_x_3 of { happy_var_3 -> happyIn30 (ISome happy_var_1 happy_var_3 @@ -1323,7 +1322,7 @@ happyReduction_60 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut50 happy_x_4 of { happy_var_4 -> happyIn30 (IMinus happy_var_1 happy_var_4 @@ -1523,7 +1522,7 @@ happyReduction_82 (happy_x_7 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> case happyOut22 happy_x_5 of { happy_var_5 -> happyIn32 (DefPackage happy_var_2 (reverse happy_var_5) @@ -1541,7 +1540,7 @@ happyReduce_84 = happySpecReduce_3 25# happyReduction_84 happyReduction_84 happy_x_3 happy_x_2 happy_x_1 - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> happyIn32 (DefTokenizer happy_var_2 )} @@ -1549,7 +1548,7 @@ happyReduction_84 happy_x_3 happyReduce_85 = happySpecReduce_2 26# happyReduction_85 happyReduction_85 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut86 happy_x_2 of { happy_var_2 -> happyIn33 (SimpleCatDef happy_var_1 (reverse happy_var_2) @@ -1561,7 +1560,7 @@ happyReduction_86 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> case happyOut86 happy_x_3 of { happy_var_3 -> happyIn33 (ListCatDef happy_var_2 (reverse happy_var_3) @@ -1576,9 +1575,9 @@ happyReduction_87 (happy_x_7 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> case happyOut86 happy_x_3 of { happy_var_3 -> - case happyOut8 happy_x_6 of { happy_var_6 -> + case happyOut7 happy_x_6 of { happy_var_6 -> happyIn33 (ListSizeCatDef happy_var_2 (reverse happy_var_3) happy_var_6 ) `HappyStk` happyRest}}} @@ -1597,7 +1596,7 @@ happyReduce_89 = happySpecReduce_3 28# happyReduction_89 happyReduction_89 happy_x_3 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut37 happy_x_3 of { happy_var_3 -> happyIn35 (DataDef happy_var_1 happy_var_3 @@ -1605,7 +1604,7 @@ happyReduction_89 happy_x_3 happyReduce_90 = happySpecReduce_1 29# happyReduction_90 happyReduction_90 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn36 (DataId happy_var_1 )} @@ -1614,8 +1613,8 @@ happyReduce_91 = happySpecReduce_3 29# happyReduction_91 happyReduction_91 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 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_3 of { happy_var_3 -> happyIn36 (DataQId happy_var_1 happy_var_3 )}} @@ -1646,7 +1645,7 @@ happyReduce_95 = happySpecReduce_3 31# happyReduction_95 happyReduction_95 happy_x_3 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut49 happy_x_3 of { happy_var_3 -> happyIn38 (ParDefDir happy_var_1 happy_var_3 @@ -1660,15 +1659,15 @@ happyReduction_96 (happy_x_6 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_1 of { happy_var_1 -> - case happyOut7 happy_x_5 of { happy_var_5 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_5 of { happy_var_5 -> happyIn38 (ParDefIndir happy_var_1 happy_var_5 ) `HappyStk` happyRest}} happyReduce_97 = happySpecReduce_1 31# happyReduction_97 happyReduction_97 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn38 (ParDefAbs happy_var_1 )} @@ -1676,7 +1675,7 @@ happyReduction_97 happy_x_1 happyReduce_98 = happySpecReduce_2 32# happyReduction_98 happyReduction_98 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut86 happy_x_2 of { happy_var_2 -> happyIn39 (ParConstr happy_var_1 (reverse happy_var_2) @@ -1696,8 +1695,8 @@ happyReduce_100 = happySpecReduce_3 34# happyReduction_100 happyReduction_100 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 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_3 of { happy_var_3 -> happyIn41 (FlagDef happy_var_1 happy_var_3 )}} @@ -1852,7 +1851,7 @@ happyReduction_117 happy_x_3 happyReduce_118 = happySpecReduce_1 43# happyReduction_118 happyReduction_118 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn50 ((:[]) happy_var_1 )} @@ -1861,7 +1860,7 @@ happyReduce_119 = happySpecReduce_3 43# happyReduction_119 happyReduction_119 happy_x_3 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut50 happy_x_3 of { happy_var_3 -> happyIn50 ((:) happy_var_1 happy_var_3 @@ -1869,7 +1868,7 @@ happyReduction_119 happy_x_3 happyReduce_120 = happySpecReduce_1 44# happyReduction_120 happyReduction_120 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn51 (IdentName happy_var_1 )} @@ -1878,7 +1877,7 @@ happyReduce_121 = happySpecReduce_3 44# happyReduction_121 happyReduction_121 happy_x_3 happy_x_2 happy_x_1 - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> happyIn51 (ListName happy_var_2 )} @@ -1958,7 +1957,7 @@ happyReduction_129 happy_x_3 happyReduce_130 = happySpecReduce_1 48# happyReduction_130 happyReduction_130 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn55 (EIdent happy_var_1 )} @@ -1967,7 +1966,7 @@ happyReduce_131 = happySpecReduce_3 48# happyReduction_131 happyReduction_131 happy_x_3 happy_x_2 happy_x_1 - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> happyIn55 (EConstr happy_var_2 )} @@ -1976,7 +1975,7 @@ happyReduce_132 = happySpecReduce_3 48# happyReduction_132 happyReduction_132 happy_x_3 happy_x_2 happy_x_1 - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> happyIn55 (ECons happy_var_2 )} @@ -1990,21 +1989,21 @@ happyReduction_133 happy_x_1 happyReduce_134 = happySpecReduce_1 48# happyReduction_134 happyReduction_134 happy_x_1 - = case happyOut9 happy_x_1 of { happy_var_1 -> + = case happyOut8 happy_x_1 of { happy_var_1 -> happyIn55 (EString happy_var_1 )} happyReduce_135 = happySpecReduce_1 48# happyReduction_135 happyReduction_135 happy_x_1 - = case happyOut8 happy_x_1 of { happy_var_1 -> + = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn55 (EInt happy_var_1 )} happyReduce_136 = happySpecReduce_1 48# happyReduction_136 happyReduction_136 happy_x_1 - = case happyOut10 happy_x_1 of { happy_var_1 -> + = case happyOut9 happy_x_1 of { happy_var_1 -> happyIn55 (EFloat happy_var_1 )} @@ -2034,7 +2033,7 @@ happyReduction_140 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> case happyOut63 happy_x_3 of { happy_var_3 -> happyIn55 (EList happy_var_2 happy_var_3 @@ -2044,7 +2043,7 @@ happyReduce_141 = happySpecReduce_3 48# happyReduction_141 happyReduction_141 happy_x_3 happy_x_2 happy_x_1 - = case happyOut9 happy_x_2 of { happy_var_2 -> + = case happyOut8 happy_x_2 of { happy_var_2 -> happyIn55 (EStrings happy_var_2 )} @@ -2073,7 +2072,7 @@ happyReduction_144 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_3 of { happy_var_3 -> + = case happyOut11 happy_x_3 of { happy_var_3 -> happyIn55 (EIndir happy_var_3 ) `HappyStk` happyRest} @@ -2102,7 +2101,7 @@ happyReduction_146 happy_x_3 happyReduce_147 = happySpecReduce_1 48# happyReduction_147 happyReduction_147 happy_x_1 - = case happyOut11 happy_x_1 of { happy_var_1 -> + = case happyOut10 happy_x_1 of { happy_var_1 -> happyIn55 (ELString happy_var_1 )} @@ -2124,8 +2123,8 @@ happyReduction_149 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_4 of { happy_var_4 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_4 of { happy_var_4 -> happyIn56 (EQConstr happy_var_2 happy_var_4 ) `HappyStk` happyRest}} @@ -2136,8 +2135,8 @@ happyReduction_150 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_4 of { happy_var_4 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_4 of { happy_var_4 -> happyIn56 (EQCons happy_var_2 happy_var_4 ) `HappyStk` happyRest}} @@ -2249,49 +2248,66 @@ happyReduce_160 = happySpecReduce_3 50# happyReduction_160 happyReduction_160 happy_x_3 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut55 happy_x_3 of { happy_var_3 -> happyIn57 (EConAt happy_var_1 happy_var_3 )}} -happyReduce_161 = happySpecReduce_1 50# happyReduction_161 -happyReduction_161 happy_x_1 +happyReduce_161 = happySpecReduce_2 50# happyReduction_161 +happyReduction_161 happy_x_2 + happy_x_1 + = case happyOut64 happy_x_2 of { happy_var_2 -> + happyIn57 + (EPatt happy_var_2 + )} + +happyReduce_162 = happySpecReduce_3 50# happyReduction_162 +happyReduction_162 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut56 happy_x_3 of { happy_var_3 -> + happyIn57 + (EPattType happy_var_3 + )} + +happyReduce_163 = happySpecReduce_1 50# happyReduction_163 +happyReduction_163 happy_x_1 = case happyOut56 happy_x_1 of { happy_var_1 -> happyIn57 (happy_var_1 )} -happyReduce_162 = happySpecReduce_2 50# happyReduction_162 -happyReduction_162 happy_x_2 +happyReduce_164 = happySpecReduce_2 50# happyReduction_164 +happyReduction_164 happy_x_2 happy_x_1 - = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOut11 happy_x_2 of { happy_var_2 -> happyIn57 (ELin happy_var_2 )} -happyReduce_163 = happySpecReduce_3 51# happyReduction_163 -happyReduction_163 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - case happyOut57 happy_x_3 of { happy_var_3 -> - happyIn58 - (ESelect happy_var_1 happy_var_3 - )}} - -happyReduce_164 = happySpecReduce_3 51# happyReduction_164 -happyReduction_164 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - case happyOut57 happy_x_3 of { happy_var_3 -> - happyIn58 - (ETupTyp happy_var_1 happy_var_3 - )}} - happyReduce_165 = happySpecReduce_3 51# happyReduction_165 happyReduction_165 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut58 happy_x_1 of { happy_var_1 -> + case happyOut57 happy_x_3 of { happy_var_3 -> + happyIn58 + (ESelect happy_var_1 happy_var_3 + )}} + +happyReduce_166 = happySpecReduce_3 51# happyReduction_166 +happyReduction_166 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut58 happy_x_1 of { happy_var_1 -> + case happyOut57 happy_x_3 of { happy_var_3 -> + happyIn58 + (ETupTyp happy_var_1 happy_var_3 + )}} + +happyReduce_167 = happySpecReduce_3 51# happyReduction_167 +happyReduction_167 happy_x_3 happy_x_2 happy_x_1 = case happyOut58 happy_x_1 of { happy_var_1 -> @@ -2300,15 +2316,15 @@ happyReduction_165 happy_x_3 (EExtend happy_var_1 happy_var_3 )}} -happyReduce_166 = happySpecReduce_1 51# happyReduction_166 -happyReduction_166 happy_x_1 +happyReduce_168 = happySpecReduce_1 51# happyReduction_168 +happyReduction_168 happy_x_1 = case happyOut57 happy_x_1 of { happy_var_1 -> happyIn58 (happy_var_1 )} -happyReduce_167 = happySpecReduce_3 52# happyReduction_167 -happyReduction_167 happy_x_3 +happyReduce_169 = happySpecReduce_3 52# happyReduction_169 +happyReduction_169 happy_x_3 happy_x_2 happy_x_1 = case happyOut61 happy_x_1 of { happy_var_1 -> @@ -2317,15 +2333,15 @@ happyReduction_167 happy_x_3 (EGlue happy_var_1 happy_var_3 )}} -happyReduce_168 = happySpecReduce_1 52# happyReduction_168 -happyReduction_168 happy_x_1 +happyReduce_170 = happySpecReduce_1 52# happyReduction_170 +happyReduction_170 happy_x_1 = case happyOut61 happy_x_1 of { happy_var_1 -> happyIn59 (happy_var_1 )} -happyReduce_169 = happySpecReduce_3 53# happyReduction_169 -happyReduction_169 happy_x_3 +happyReduce_171 = happySpecReduce_3 53# happyReduction_171 +happyReduction_171 happy_x_3 happy_x_2 happy_x_1 = case happyOut59 happy_x_1 of { happy_var_1 -> @@ -2334,8 +2350,8 @@ happyReduction_169 happy_x_3 (EConcat happy_var_1 happy_var_3 )}} -happyReduce_170 = happyReduce 4# 53# happyReduction_170 -happyReduction_170 (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` @@ -2346,8 +2362,8 @@ happyReduction_170 (happy_x_4 `HappyStk` (EAbstr happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_171 = happyReduce 5# 53# happyReduction_171 -happyReduction_171 (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` @@ -2359,8 +2375,8 @@ happyReduction_171 (happy_x_5 `HappyStk` (ECTable happy_var_3 happy_var_5 ) `HappyStk` happyRest}} -happyReduce_172 = happySpecReduce_3 53# happyReduction_172 -happyReduction_172 happy_x_3 +happyReduce_174 = happySpecReduce_3 53# happyReduction_174 +happyReduction_174 happy_x_3 happy_x_2 happy_x_1 = case happyOut74 happy_x_1 of { happy_var_1 -> @@ -2369,8 +2385,8 @@ happyReduction_172 happy_x_3 (EProd happy_var_1 happy_var_3 )}} -happyReduce_173 = happySpecReduce_3 53# happyReduction_173 -happyReduction_173 happy_x_3 +happyReduce_175 = happySpecReduce_3 53# happyReduction_175 +happyReduction_175 happy_x_3 happy_x_2 happy_x_1 = case happyOut58 happy_x_1 of { happy_var_1 -> @@ -2379,8 +2395,8 @@ happyReduction_173 happy_x_3 (ETType happy_var_1 happy_var_3 )}} -happyReduce_174 = happyReduce 6# 53# happyReduction_174 -happyReduction_174 (happy_x_6 `HappyStk` +happyReduce_176 = happyReduce 6# 53# happyReduction_176 +happyReduction_176 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -2393,8 +2409,8 @@ happyReduction_174 (happy_x_6 `HappyStk` (ELet happy_var_3 happy_var_6 ) `HappyStk` happyRest}} -happyReduce_175 = happyReduce 4# 53# happyReduction_175 -happyReduction_175 (happy_x_4 `HappyStk` +happyReduce_177 = happyReduce 4# 53# happyReduction_177 +happyReduction_177 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -2405,8 +2421,8 @@ happyReduction_175 (happy_x_4 `HappyStk` (ELetb happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_176 = happyReduce 5# 53# happyReduction_176 -happyReduction_176 (happy_x_5 `HappyStk` +happyReduce_178 = happyReduce 5# 53# happyReduction_178 +happyReduction_178 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2418,8 +2434,8 @@ happyReduction_176 (happy_x_5 `HappyStk` (EWhere happy_var_1 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_177 = happyReduce 4# 53# happyReduction_177 -happyReduction_177 (happy_x_4 `HappyStk` +happyReduce_179 = happyReduce 4# 53# happyReduction_179 +happyReduction_179 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -2429,44 +2445,44 @@ happyReduction_177 (happy_x_4 `HappyStk` (EEqs happy_var_3 ) `HappyStk` happyRest} -happyReduce_178 = happySpecReduce_3 53# happyReduction_178 -happyReduction_178 happy_x_3 +happyReduce_180 = happySpecReduce_3 53# happyReduction_180 +happyReduction_180 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 -> + case happyOut8 happy_x_3 of { happy_var_3 -> happyIn60 (EExample happy_var_2 happy_var_3 )}} -happyReduce_179 = happySpecReduce_1 53# happyReduction_179 -happyReduction_179 happy_x_1 +happyReduce_181 = happySpecReduce_1 53# happyReduction_181 +happyReduction_181 happy_x_1 = case happyOut59 happy_x_1 of { happy_var_1 -> happyIn60 (happy_var_1 )} -happyReduce_180 = happySpecReduce_1 54# happyReduction_180 -happyReduction_180 happy_x_1 +happyReduce_182 = happySpecReduce_1 54# happyReduction_182 +happyReduction_182 happy_x_1 = case happyOut58 happy_x_1 of { happy_var_1 -> happyIn61 (happy_var_1 )} -happyReduce_181 = happySpecReduce_0 55# happyReduction_181 -happyReduction_181 = happyIn62 +happyReduce_183 = happySpecReduce_0 55# happyReduction_183 +happyReduction_183 = happyIn62 ([] ) -happyReduce_182 = happySpecReduce_1 55# happyReduction_182 -happyReduction_182 happy_x_1 +happyReduce_184 = happySpecReduce_1 55# happyReduction_184 +happyReduction_184 happy_x_1 = case happyOut60 happy_x_1 of { happy_var_1 -> happyIn62 ((:[]) happy_var_1 )} -happyReduce_183 = happySpecReduce_3 55# happyReduction_183 -happyReduction_183 happy_x_3 +happyReduce_185 = happySpecReduce_3 55# happyReduction_185 +happyReduction_185 happy_x_3 happy_x_2 happy_x_1 = case happyOut60 happy_x_1 of { happy_var_1 -> @@ -2475,13 +2491,13 @@ happyReduction_183 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_184 = happySpecReduce_0 56# happyReduction_184 -happyReduction_184 = happyIn63 +happyReduce_186 = happySpecReduce_0 56# happyReduction_186 +happyReduction_186 = happyIn63 (NilExp ) -happyReduce_185 = happySpecReduce_2 56# happyReduction_185 -happyReduction_185 happy_x_2 +happyReduce_187 = happySpecReduce_2 56# happyReduction_187 +happyReduction_187 happy_x_2 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> case happyOut63 happy_x_2 of { happy_var_2 -> @@ -2489,61 +2505,96 @@ happyReduction_185 happy_x_2 (ConsExp happy_var_1 happy_var_2 )}} -happyReduce_186 = happySpecReduce_1 57# happyReduction_186 -happyReduction_186 happy_x_1 +happyReduce_188 = happySpecReduce_1 57# happyReduction_188 +happyReduction_188 happy_x_1 = happyIn64 - (PW + (PChar ) -happyReduce_187 = happySpecReduce_1 57# happyReduction_187 -happyReduction_187 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> - happyIn64 - (PV happy_var_1 - )} - -happyReduce_188 = happySpecReduce_3 57# happyReduction_188 -happyReduction_188 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut7 happy_x_2 of { happy_var_2 -> - happyIn64 - (PCon happy_var_2 - )} - happyReduce_189 = happySpecReduce_3 57# happyReduction_189 happyReduction_189 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 -> + = case happyOut8 happy_x_2 of { happy_var_2 -> + happyIn64 + (PChars happy_var_2 + )} + +happyReduce_190 = happySpecReduce_2 57# happyReduction_190 +happyReduction_190 happy_x_2 + happy_x_1 + = case happyOut11 happy_x_2 of { happy_var_2 -> + happyIn64 + (PMacro happy_var_2 + )} + +happyReduce_191 = happyReduce 4# 57# happyReduction_191 +happyReduction_191 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_4 of { happy_var_4 -> + happyIn64 + (PM happy_var_2 happy_var_4 + ) `HappyStk` happyRest}} + +happyReduce_192 = happySpecReduce_1 57# happyReduction_192 +happyReduction_192 happy_x_1 + = happyIn64 + (PW + ) + +happyReduce_193 = happySpecReduce_1 57# happyReduction_193 +happyReduction_193 happy_x_1 + = case happyOut11 happy_x_1 of { happy_var_1 -> + happyIn64 + (PV happy_var_1 + )} + +happyReduce_194 = happySpecReduce_3 57# happyReduction_194 +happyReduction_194 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut11 happy_x_2 of { happy_var_2 -> + happyIn64 + (PCon happy_var_2 + )} + +happyReduce_195 = happySpecReduce_3 57# happyReduction_195 +happyReduction_195 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut11 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_3 of { happy_var_3 -> happyIn64 (PQ happy_var_1 happy_var_3 )}} -happyReduce_190 = happySpecReduce_1 57# happyReduction_190 -happyReduction_190 happy_x_1 - = case happyOut8 happy_x_1 of { happy_var_1 -> +happyReduce_196 = happySpecReduce_1 57# happyReduction_196 +happyReduction_196 happy_x_1 + = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn64 (PInt happy_var_1 )} -happyReduce_191 = happySpecReduce_1 57# happyReduction_191 -happyReduction_191 happy_x_1 - = case happyOut10 happy_x_1 of { happy_var_1 -> +happyReduce_197 = happySpecReduce_1 57# happyReduction_197 +happyReduction_197 happy_x_1 + = case happyOut9 happy_x_1 of { happy_var_1 -> happyIn64 (PFloat happy_var_1 )} -happyReduce_192 = happySpecReduce_1 57# happyReduction_192 -happyReduction_192 happy_x_1 - = case happyOut9 happy_x_1 of { happy_var_1 -> +happyReduce_198 = happySpecReduce_1 57# happyReduction_198 +happyReduction_198 happy_x_1 + = case happyOut8 happy_x_1 of { happy_var_1 -> happyIn64 (PStr happy_var_1 )} -happyReduce_193 = happySpecReduce_3 57# happyReduction_193 -happyReduction_193 happy_x_3 +happyReduce_199 = happySpecReduce_3 57# happyReduction_199 +happyReduction_199 happy_x_3 happy_x_2 happy_x_1 = case happyOut70 happy_x_2 of { happy_var_2 -> @@ -2551,8 +2602,8 @@ happyReduction_193 happy_x_3 (PR happy_var_2 )} -happyReduce_194 = happySpecReduce_3 57# happyReduction_194 -happyReduction_194 happy_x_3 +happyReduce_200 = happySpecReduce_3 57# happyReduction_200 +happyReduction_200 happy_x_3 happy_x_2 happy_x_1 = case happyOut78 happy_x_2 of { happy_var_2 -> @@ -2560,8 +2611,8 @@ happyReduction_194 happy_x_3 (PTup happy_var_2 )} -happyReduce_195 = happySpecReduce_3 57# happyReduction_195 -happyReduction_195 happy_x_3 +happyReduce_201 = happySpecReduce_3 57# happyReduction_201 +happyReduction_201 happy_x_3 happy_x_2 happy_x_1 = case happyOut66 happy_x_2 of { happy_var_2 -> @@ -2569,63 +2620,63 @@ happyReduction_195 happy_x_3 (happy_var_2 )} -happyReduce_196 = happySpecReduce_2 58# happyReduction_196 -happyReduction_196 happy_x_2 +happyReduce_202 = happySpecReduce_2 58# happyReduction_202 +happyReduction_202 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut71 happy_x_2 of { happy_var_2 -> happyIn65 (PC happy_var_1 happy_var_2 )}} -happyReduce_197 = happyReduce 4# 58# happyReduction_197 -happyReduction_197 (happy_x_4 `HappyStk` +happyReduce_203 = happyReduce 4# 58# happyReduction_203 +happyReduction_203 (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 happyOut11 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_3 of { happy_var_3 -> case happyOut71 happy_x_4 of { happy_var_4 -> happyIn65 (PQC happy_var_1 happy_var_3 happy_var_4 ) `HappyStk` happyRest}}} -happyReduce_198 = happySpecReduce_2 58# happyReduction_198 -happyReduction_198 happy_x_2 +happyReduce_204 = happySpecReduce_2 58# happyReduction_204 +happyReduction_204 happy_x_2 happy_x_1 = case happyOut64 happy_x_1 of { happy_var_1 -> happyIn65 (PRep happy_var_1 )} -happyReduce_199 = happySpecReduce_3 58# happyReduction_199 -happyReduction_199 happy_x_3 +happyReduce_205 = happySpecReduce_3 58# happyReduction_205 +happyReduction_205 happy_x_3 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut64 happy_x_3 of { happy_var_3 -> happyIn65 (PAs happy_var_1 happy_var_3 )}} -happyReduce_200 = happySpecReduce_2 58# happyReduction_200 -happyReduction_200 happy_x_2 +happyReduce_206 = happySpecReduce_2 58# happyReduction_206 +happyReduction_206 happy_x_2 happy_x_1 = case happyOut64 happy_x_2 of { happy_var_2 -> happyIn65 (PNeg happy_var_2 )} -happyReduce_201 = happySpecReduce_1 58# happyReduction_201 -happyReduction_201 happy_x_1 +happyReduce_207 = happySpecReduce_1 58# happyReduction_207 +happyReduction_207 happy_x_1 = case happyOut64 happy_x_1 of { happy_var_1 -> happyIn65 (happy_var_1 )} -happyReduce_202 = happySpecReduce_3 59# happyReduction_202 -happyReduction_202 happy_x_3 +happyReduce_208 = happySpecReduce_3 59# happyReduction_208 +happyReduction_208 happy_x_3 happy_x_2 happy_x_1 = case happyOut66 happy_x_1 of { happy_var_1 -> @@ -2634,8 +2685,8 @@ happyReduction_202 happy_x_3 (PDisj happy_var_1 happy_var_3 )}} -happyReduce_203 = happySpecReduce_3 59# happyReduction_203 -happyReduction_203 happy_x_3 +happyReduce_209 = happySpecReduce_3 59# happyReduction_209 +happyReduction_209 happy_x_3 happy_x_2 happy_x_1 = case happyOut66 happy_x_1 of { happy_var_1 -> @@ -2644,15 +2695,15 @@ happyReduction_203 happy_x_3 (PSeq happy_var_1 happy_var_3 )}} -happyReduce_204 = happySpecReduce_1 59# happyReduction_204 -happyReduction_204 happy_x_1 +happyReduce_210 = happySpecReduce_1 59# happyReduction_210 +happyReduction_210 happy_x_1 = case happyOut65 happy_x_1 of { happy_var_1 -> happyIn66 (happy_var_1 )} -happyReduce_205 = happySpecReduce_3 60# happyReduction_205 -happyReduction_205 happy_x_3 +happyReduce_211 = happySpecReduce_3 60# happyReduction_211 +happyReduction_211 happy_x_3 happy_x_2 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> @@ -2661,65 +2712,65 @@ happyReduction_205 happy_x_3 (PA happy_var_1 happy_var_3 )}} -happyReduce_206 = happySpecReduce_1 61# happyReduction_206 -happyReduction_206 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> +happyReduce_212 = happySpecReduce_1 61# happyReduction_212 +happyReduction_212 happy_x_1 + = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn68 (LIdent happy_var_1 )} -happyReduce_207 = happySpecReduce_2 61# happyReduction_207 -happyReduction_207 happy_x_2 +happyReduce_213 = happySpecReduce_2 61# happyReduction_213 +happyReduction_213 happy_x_2 happy_x_1 - = case happyOut8 happy_x_2 of { happy_var_2 -> + = case happyOut7 happy_x_2 of { happy_var_2 -> happyIn68 (LVar happy_var_2 )} -happyReduce_208 = happySpecReduce_1 62# happyReduction_208 -happyReduction_208 happy_x_1 +happyReduce_214 = happySpecReduce_1 62# happyReduction_214 +happyReduction_214 happy_x_1 = happyIn69 (Sort_Type ) -happyReduce_209 = happySpecReduce_1 62# happyReduction_209 -happyReduction_209 happy_x_1 +happyReduce_215 = happySpecReduce_1 62# happyReduction_215 +happyReduction_215 happy_x_1 = happyIn69 (Sort_PType ) -happyReduce_210 = happySpecReduce_1 62# happyReduction_210 -happyReduction_210 happy_x_1 +happyReduce_216 = happySpecReduce_1 62# happyReduction_216 +happyReduction_216 happy_x_1 = happyIn69 (Sort_Tok ) -happyReduce_211 = happySpecReduce_1 62# happyReduction_211 -happyReduction_211 happy_x_1 +happyReduce_217 = happySpecReduce_1 62# happyReduction_217 +happyReduction_217 happy_x_1 = happyIn69 (Sort_Str ) -happyReduce_212 = happySpecReduce_1 62# happyReduction_212 -happyReduction_212 happy_x_1 +happyReduce_218 = happySpecReduce_1 62# happyReduction_218 +happyReduction_218 happy_x_1 = happyIn69 (Sort_Strs ) -happyReduce_213 = happySpecReduce_0 63# happyReduction_213 -happyReduction_213 = happyIn70 +happyReduce_219 = happySpecReduce_0 63# happyReduction_219 +happyReduction_219 = happyIn70 ([] ) -happyReduce_214 = happySpecReduce_1 63# happyReduction_214 -happyReduction_214 happy_x_1 +happyReduce_220 = happySpecReduce_1 63# happyReduction_220 +happyReduction_220 happy_x_1 = case happyOut67 happy_x_1 of { happy_var_1 -> happyIn70 ((:[]) happy_var_1 )} -happyReduce_215 = happySpecReduce_3 63# happyReduction_215 -happyReduction_215 happy_x_3 +happyReduce_221 = happySpecReduce_3 63# happyReduction_221 +happyReduction_221 happy_x_3 happy_x_2 happy_x_1 = case happyOut67 happy_x_1 of { happy_var_1 -> @@ -2728,15 +2779,15 @@ happyReduction_215 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_216 = happySpecReduce_1 64# happyReduction_216 -happyReduction_216 happy_x_1 +happyReduce_222 = happySpecReduce_1 64# happyReduction_222 +happyReduction_222 happy_x_1 = case happyOut64 happy_x_1 of { happy_var_1 -> happyIn71 ((:[]) happy_var_1 )} -happyReduce_217 = happySpecReduce_2 64# happyReduction_217 -happyReduction_217 happy_x_2 +happyReduce_223 = happySpecReduce_2 64# happyReduction_223 +happyReduction_223 happy_x_2 happy_x_1 = case happyOut64 happy_x_1 of { happy_var_1 -> case happyOut71 happy_x_2 of { happy_var_2 -> @@ -2744,33 +2795,33 @@ happyReduction_217 happy_x_2 ((:) happy_var_1 happy_var_2 )}} -happyReduce_218 = happySpecReduce_1 65# happyReduction_218 -happyReduction_218 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> +happyReduce_224 = happySpecReduce_1 65# happyReduction_224 +happyReduction_224 happy_x_1 + = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn72 (BIdent happy_var_1 )} -happyReduce_219 = happySpecReduce_1 65# happyReduction_219 -happyReduction_219 happy_x_1 +happyReduce_225 = happySpecReduce_1 65# happyReduction_225 +happyReduction_225 happy_x_1 = happyIn72 (BWild ) -happyReduce_220 = happySpecReduce_0 66# happyReduction_220 -happyReduction_220 = happyIn73 +happyReduce_226 = happySpecReduce_0 66# happyReduction_226 +happyReduction_226 = happyIn73 ([] ) -happyReduce_221 = happySpecReduce_1 66# happyReduction_221 -happyReduction_221 happy_x_1 +happyReduce_227 = happySpecReduce_1 66# happyReduction_227 +happyReduction_227 happy_x_1 = case happyOut72 happy_x_1 of { happy_var_1 -> happyIn73 ((:[]) happy_var_1 )} -happyReduce_222 = happySpecReduce_3 66# happyReduction_222 -happyReduction_222 happy_x_3 +happyReduce_228 = happySpecReduce_3 66# happyReduction_228 +happyReduction_228 happy_x_3 happy_x_2 happy_x_1 = case happyOut72 happy_x_1 of { happy_var_1 -> @@ -2779,8 +2830,8 @@ happyReduction_222 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_223 = happyReduce 5# 67# happyReduction_223 -happyReduction_223 (happy_x_5 `HappyStk` +happyReduce_229 = happyReduce 5# 67# happyReduction_229 +happyReduction_229 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2792,41 +2843,41 @@ happyReduction_223 (happy_x_5 `HappyStk` (DDec happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_224 = happySpecReduce_1 67# happyReduction_224 -happyReduction_224 happy_x_1 +happyReduce_230 = happySpecReduce_1 67# happyReduction_230 +happyReduction_230 happy_x_1 = case happyOut57 happy_x_1 of { happy_var_1 -> happyIn74 (DExp happy_var_1 )} -happyReduce_225 = happySpecReduce_1 68# happyReduction_225 -happyReduction_225 happy_x_1 +happyReduce_231 = happySpecReduce_1 68# happyReduction_231 +happyReduction_231 happy_x_1 = case happyOut60 happy_x_1 of { happy_var_1 -> happyIn75 (TComp happy_var_1 )} -happyReduce_226 = happySpecReduce_1 69# happyReduction_226 -happyReduction_226 happy_x_1 +happyReduce_232 = happySpecReduce_1 69# happyReduction_232 +happyReduction_232 happy_x_1 = case happyOut66 happy_x_1 of { happy_var_1 -> happyIn76 (PTComp happy_var_1 )} -happyReduce_227 = happySpecReduce_0 70# happyReduction_227 -happyReduction_227 = happyIn77 +happyReduce_233 = happySpecReduce_0 70# happyReduction_233 +happyReduction_233 = happyIn77 ([] ) -happyReduce_228 = happySpecReduce_1 70# happyReduction_228 -happyReduction_228 happy_x_1 +happyReduce_234 = happySpecReduce_1 70# happyReduction_234 +happyReduction_234 happy_x_1 = case happyOut75 happy_x_1 of { happy_var_1 -> happyIn77 ((:[]) happy_var_1 )} -happyReduce_229 = happySpecReduce_3 70# happyReduction_229 -happyReduction_229 happy_x_3 +happyReduce_235 = happySpecReduce_3 70# happyReduction_235 +happyReduction_235 happy_x_3 happy_x_2 happy_x_1 = case happyOut75 happy_x_1 of { happy_var_1 -> @@ -2835,20 +2886,20 @@ happyReduction_229 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_230 = happySpecReduce_0 71# happyReduction_230 -happyReduction_230 = happyIn78 +happyReduce_236 = happySpecReduce_0 71# happyReduction_236 +happyReduction_236 = happyIn78 ([] ) -happyReduce_231 = happySpecReduce_1 71# happyReduction_231 -happyReduction_231 happy_x_1 +happyReduce_237 = happySpecReduce_1 71# happyReduction_237 +happyReduction_237 happy_x_1 = case happyOut76 happy_x_1 of { happy_var_1 -> happyIn78 ((:[]) happy_var_1 )} -happyReduce_232 = happySpecReduce_3 71# happyReduction_232 -happyReduction_232 happy_x_3 +happyReduce_238 = happySpecReduce_3 71# happyReduction_238 +happyReduction_238 happy_x_3 happy_x_2 happy_x_1 = case happyOut76 happy_x_1 of { happy_var_1 -> @@ -2857,8 +2908,8 @@ happyReduction_232 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_233 = happySpecReduce_3 72# happyReduction_233 -happyReduction_233 happy_x_3 +happyReduce_239 = happySpecReduce_3 72# happyReduction_239 +happyReduction_239 happy_x_3 happy_x_2 happy_x_1 = case happyOut66 happy_x_1 of { happy_var_1 -> @@ -2867,15 +2918,15 @@ happyReduction_233 happy_x_3 (Case happy_var_1 happy_var_3 )}} -happyReduce_234 = happySpecReduce_1 73# happyReduction_234 -happyReduction_234 happy_x_1 +happyReduce_240 = happySpecReduce_1 73# happyReduction_240 +happyReduction_240 happy_x_1 = case happyOut79 happy_x_1 of { happy_var_1 -> happyIn80 ((:[]) happy_var_1 )} -happyReduce_235 = happySpecReduce_3 73# happyReduction_235 -happyReduction_235 happy_x_3 +happyReduce_241 = happySpecReduce_3 73# happyReduction_241 +happyReduction_241 happy_x_3 happy_x_2 happy_x_1 = case happyOut79 happy_x_1 of { happy_var_1 -> @@ -2884,8 +2935,8 @@ happyReduction_235 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_236 = happySpecReduce_3 74# happyReduction_236 -happyReduction_236 happy_x_3 +happyReduce_242 = happySpecReduce_3 74# happyReduction_242 +happyReduction_242 happy_x_3 happy_x_2 happy_x_1 = case happyOut71 happy_x_1 of { happy_var_1 -> @@ -2894,20 +2945,20 @@ happyReduction_236 happy_x_3 (Equ happy_var_1 happy_var_3 )}} -happyReduce_237 = happySpecReduce_0 75# happyReduction_237 -happyReduction_237 = happyIn82 +happyReduce_243 = happySpecReduce_0 75# happyReduction_243 +happyReduction_243 = happyIn82 ([] ) -happyReduce_238 = happySpecReduce_1 75# happyReduction_238 -happyReduction_238 happy_x_1 +happyReduce_244 = happySpecReduce_1 75# happyReduction_244 +happyReduction_244 happy_x_1 = case happyOut81 happy_x_1 of { happy_var_1 -> happyIn82 ((:[]) happy_var_1 )} -happyReduce_239 = happySpecReduce_3 75# happyReduction_239 -happyReduction_239 happy_x_3 +happyReduce_245 = happySpecReduce_3 75# happyReduction_245 +happyReduction_245 happy_x_3 happy_x_2 happy_x_1 = case happyOut81 happy_x_1 of { happy_var_1 -> @@ -2916,8 +2967,8 @@ happyReduction_239 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_240 = happySpecReduce_3 76# happyReduction_240 -happyReduction_240 happy_x_3 +happyReduce_246 = happySpecReduce_3 76# happyReduction_246 +happyReduction_246 happy_x_3 happy_x_2 happy_x_1 = case happyOut60 happy_x_1 of { happy_var_1 -> @@ -2926,20 +2977,20 @@ happyReduction_240 happy_x_3 (Alt happy_var_1 happy_var_3 )}} -happyReduce_241 = happySpecReduce_0 77# happyReduction_241 -happyReduction_241 = happyIn84 +happyReduce_247 = happySpecReduce_0 77# happyReduction_247 +happyReduction_247 = happyIn84 ([] ) -happyReduce_242 = happySpecReduce_1 77# happyReduction_242 -happyReduction_242 happy_x_1 +happyReduce_248 = happySpecReduce_1 77# happyReduction_248 +happyReduction_248 happy_x_1 = case happyOut83 happy_x_1 of { happy_var_1 -> happyIn84 ((:[]) happy_var_1 )} -happyReduce_243 = happySpecReduce_3 77# happyReduction_243 -happyReduction_243 happy_x_3 +happyReduce_249 = happySpecReduce_3 77# happyReduction_249 +happyReduction_249 happy_x_3 happy_x_2 happy_x_1 = case happyOut83 happy_x_1 of { happy_var_1 -> @@ -2948,8 +2999,8 @@ happyReduction_243 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_244 = happyReduce 5# 78# happyReduction_244 -happyReduction_244 (happy_x_5 `HappyStk` +happyReduce_250 = happyReduce 5# 78# happyReduction_250 +happyReduction_250 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2961,20 +3012,20 @@ happyReduction_244 (happy_x_5 `HappyStk` (DDDec happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_245 = happySpecReduce_1 78# happyReduction_245 -happyReduction_245 happy_x_1 +happyReduce_251 = happySpecReduce_1 78# happyReduction_251 +happyReduction_251 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> happyIn85 (DDExp happy_var_1 )} -happyReduce_246 = happySpecReduce_0 79# happyReduction_246 -happyReduction_246 = happyIn86 +happyReduce_252 = happySpecReduce_0 79# happyReduction_252 +happyReduction_252 = happyIn86 ([] ) -happyReduce_247 = happySpecReduce_2 79# happyReduction_247 -happyReduction_247 happy_x_2 +happyReduce_253 = happySpecReduce_2 79# happyReduction_253 +happyReduction_253 happy_x_2 happy_x_1 = case happyOut86 happy_x_1 of { happy_var_1 -> case happyOut85 happy_x_2 of { happy_var_2 -> @@ -2982,8 +3033,8 @@ happyReduction_247 happy_x_2 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_248 = happySpecReduce_2 80# happyReduction_248 -happyReduction_248 happy_x_2 +happyReduce_254 = happySpecReduce_2 80# happyReduction_254 +happyReduction_254 happy_x_2 happy_x_1 = case happyOut88 happy_x_1 of { happy_var_1 -> case happyOut22 happy_x_2 of { happy_var_2 -> @@ -2991,76 +3042,76 @@ happyReduction_248 happy_x_2 (OldGr happy_var_1 (reverse happy_var_2) )}} -happyReduce_249 = happySpecReduce_0 81# happyReduction_249 -happyReduction_249 = happyIn88 +happyReduce_255 = happySpecReduce_0 81# happyReduction_255 +happyReduction_255 = happyIn88 (NoIncl ) -happyReduce_250 = happySpecReduce_2 81# happyReduction_250 -happyReduction_250 happy_x_2 +happyReduce_256 = happySpecReduce_2 81# happyReduction_256 +happyReduction_256 happy_x_2 happy_x_1 = case happyOut90 happy_x_2 of { happy_var_2 -> happyIn88 (Incl happy_var_2 )} -happyReduce_251 = happySpecReduce_1 82# happyReduction_251 -happyReduction_251 happy_x_1 - = case happyOut9 happy_x_1 of { happy_var_1 -> +happyReduce_257 = happySpecReduce_1 82# happyReduction_257 +happyReduction_257 happy_x_1 + = case happyOut8 happy_x_1 of { happy_var_1 -> happyIn89 (FString happy_var_1 )} -happyReduce_252 = happySpecReduce_1 82# happyReduction_252 -happyReduction_252 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> +happyReduce_258 = happySpecReduce_1 82# happyReduction_258 +happyReduction_258 happy_x_1 + = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn89 (FIdent happy_var_1 )} -happyReduce_253 = happySpecReduce_2 82# happyReduction_253 -happyReduction_253 happy_x_2 +happyReduce_259 = happySpecReduce_2 82# happyReduction_259 +happyReduction_259 happy_x_2 happy_x_1 = case happyOut89 happy_x_2 of { happy_var_2 -> happyIn89 (FSlash happy_var_2 )} -happyReduce_254 = happySpecReduce_2 82# happyReduction_254 -happyReduction_254 happy_x_2 +happyReduce_260 = happySpecReduce_2 82# happyReduction_260 +happyReduction_260 happy_x_2 happy_x_1 = case happyOut89 happy_x_2 of { happy_var_2 -> happyIn89 (FDot happy_var_2 )} -happyReduce_255 = happySpecReduce_2 82# happyReduction_255 -happyReduction_255 happy_x_2 +happyReduce_261 = happySpecReduce_2 82# happyReduction_261 +happyReduction_261 happy_x_2 happy_x_1 = case happyOut89 happy_x_2 of { happy_var_2 -> happyIn89 (FMinus happy_var_2 )} -happyReduce_256 = happySpecReduce_2 82# happyReduction_256 -happyReduction_256 happy_x_2 +happyReduce_262 = happySpecReduce_2 82# happyReduction_262 +happyReduction_262 happy_x_2 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> + = case happyOut11 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_257 = happySpecReduce_2 83# happyReduction_257 -happyReduction_257 happy_x_2 +happyReduce_263 = happySpecReduce_2 83# happyReduction_263 +happyReduction_263 happy_x_2 happy_x_1 = case happyOut89 happy_x_1 of { happy_var_1 -> happyIn90 ((:[]) happy_var_1 )} -happyReduce_258 = happySpecReduce_3 83# happyReduction_258 -happyReduction_258 happy_x_3 +happyReduce_264 = happySpecReduce_3 83# happyReduction_264 +happyReduction_264 happy_x_3 happy_x_2 happy_x_1 = case happyOut89 happy_x_1 of { happy_var_1 -> @@ -3070,7 +3121,7 @@ happyReduction_258 happy_x_3 )}} happyNewToken action sts stk [] = - happyDoAction 82# notHappyAtAll action sts stk [] + happyDoAction 84# notHappyAtAll action sts stk [] happyNewToken action sts stk (tk:tks) = let cont i = happyDoAction i tk action sts stk tks in @@ -3101,61 +3152,63 @@ happyNewToken action sts stk (tk:tks) = PT _ (TS "++") -> cont 24#; PT _ (TS "\\") -> cont 25#; PT _ (TS "=>") -> cont 26#; - PT _ (TS "_") -> cont 27#; - PT _ (TS "$") -> cont 28#; - PT _ (TS "/") -> cont 29#; - PT _ (TS "Lin") -> cont 30#; - PT _ (TS "PType") -> cont 31#; - PT _ (TS "Str") -> cont 32#; - PT _ (TS "Strs") -> cont 33#; - PT _ (TS "Tok") -> cont 34#; - PT _ (TS "Type") -> cont 35#; - PT _ (TS "abstract") -> cont 36#; - PT _ (TS "case") -> cont 37#; - PT _ (TS "cat") -> cont 38#; - PT _ (TS "concrete") -> cont 39#; - PT _ (TS "data") -> cont 40#; - PT _ (TS "def") -> cont 41#; - PT _ (TS "flags") -> cont 42#; - PT _ (TS "fn") -> cont 43#; - PT _ (TS "fun") -> cont 44#; - PT _ (TS "grammar") -> cont 45#; - PT _ (TS "in") -> cont 46#; - PT _ (TS "include") -> cont 47#; - PT _ (TS "incomplete") -> cont 48#; - PT _ (TS "instance") -> cont 49#; - PT _ (TS "interface") -> cont 50#; - PT _ (TS "let") -> cont 51#; - PT _ (TS "lin") -> cont 52#; - PT _ (TS "lincat") -> cont 53#; - PT _ (TS "lindef") -> cont 54#; - PT _ (TS "lintype") -> cont 55#; - PT _ (TS "of") -> cont 56#; - PT _ (TS "open") -> cont 57#; - PT _ (TS "oper") -> cont 58#; - PT _ (TS "out") -> cont 59#; - PT _ (TS "package") -> cont 60#; - PT _ (TS "param") -> cont 61#; - PT _ (TS "pattern") -> cont 62#; - PT _ (TS "pre") -> cont 63#; - PT _ (TS "printname") -> cont 64#; - PT _ (TS "resource") -> cont 65#; - PT _ (TS "reuse") -> cont 66#; - PT _ (TS "strs") -> cont 67#; - PT _ (TS "table") -> cont 68#; - PT _ (TS "tokenizer") -> cont 69#; - PT _ (TS "transfer") -> cont 70#; - PT _ (TS "union") -> cont 71#; - PT _ (TS "var") -> cont 72#; - PT _ (TS "variants") -> cont 73#; - PT _ (TS "where") -> cont 74#; - PT _ (TS "with") -> cont 75#; - PT _ (TV happy_dollar_dollar) -> cont 76#; - PT _ (TI happy_dollar_dollar) -> cont 77#; - PT _ (TL happy_dollar_dollar) -> cont 78#; - PT _ (TD happy_dollar_dollar) -> cont 79#; - PT _ (T_LString happy_dollar_dollar) -> cont 80#; - _ -> cont 81#; + PT _ (TS "#") -> cont 27#; + PT _ (TS "_") -> cont 28#; + PT _ (TS "$") -> cont 29#; + PT _ (TS "/") -> cont 30#; + PT _ (TS "Lin") -> cont 31#; + PT _ (TS "PType") -> cont 32#; + PT _ (TS "Str") -> cont 33#; + PT _ (TS "Strs") -> cont 34#; + PT _ (TS "Tok") -> cont 35#; + PT _ (TS "Type") -> cont 36#; + PT _ (TS "abstract") -> cont 37#; + PT _ (TS "case") -> cont 38#; + PT _ (TS "cat") -> cont 39#; + PT _ (TS "concrete") -> cont 40#; + PT _ (TS "data") -> cont 41#; + PT _ (TS "def") -> cont 42#; + PT _ (TS "flags") -> cont 43#; + PT _ (TS "fn") -> cont 44#; + PT _ (TS "fun") -> cont 45#; + PT _ (TS "grammar") -> cont 46#; + PT _ (TS "in") -> cont 47#; + PT _ (TS "include") -> cont 48#; + PT _ (TS "incomplete") -> cont 49#; + PT _ (TS "instance") -> cont 50#; + PT _ (TS "interface") -> cont 51#; + PT _ (TS "let") -> cont 52#; + PT _ (TS "lin") -> cont 53#; + PT _ (TS "lincat") -> cont 54#; + PT _ (TS "lindef") -> cont 55#; + PT _ (TS "lintype") -> cont 56#; + PT _ (TS "of") -> cont 57#; + PT _ (TS "open") -> cont 58#; + PT _ (TS "oper") -> cont 59#; + PT _ (TS "out") -> cont 60#; + PT _ (TS "package") -> cont 61#; + PT _ (TS "param") -> cont 62#; + PT _ (TS "pattern") -> cont 63#; + PT _ (TS "pre") -> cont 64#; + PT _ (TS "printname") -> cont 65#; + PT _ (TS "resource") -> cont 66#; + PT _ (TS "reuse") -> cont 67#; + PT _ (TS "strs") -> cont 68#; + PT _ (TS "table") -> cont 69#; + PT _ (TS "tokenizer") -> cont 70#; + PT _ (TS "transfer") -> cont 71#; + PT _ (TS "type") -> cont 72#; + PT _ (TS "union") -> cont 73#; + PT _ (TS "var") -> cont 74#; + PT _ (TS "variants") -> cont 75#; + PT _ (TS "where") -> cont 76#; + PT _ (TS "with") -> cont 77#; + PT _ (TI happy_dollar_dollar) -> cont 78#; + PT _ (TL happy_dollar_dollar) -> cont 79#; + PT _ (TD happy_dollar_dollar) -> cont 80#; + PT _ (T_LString happy_dollar_dollar) -> cont 81#; + PT _ (T_PIdent _) -> cont 82#; + _ -> cont 83#; _ -> happyError' (tk:tks) } @@ -3201,14 +3254,13 @@ happyError ts = _ -> " before " ++ unwords (map prToken (take 4 ts)) myLexer = tokens -{-# LINE 1 "templates/GenericTemplate.hs" #-} -{-# LINE 1 "templates/GenericTemplate.hs" #-} +{-# LINE 1 "GenericTemplate.hs" #-} {-# LINE 1 "" #-} {-# LINE 1 "" #-} -{-# LINE 1 "templates/GenericTemplate.hs" #-} +{-# LINE 1 "GenericTemplate.hs" #-} -- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp -{-# LINE 28 "templates/GenericTemplate.hs" #-} +{-# LINE 28 "GenericTemplate.hs" #-} data Happy_IntList = HappyCons Int# Happy_IntList @@ -3217,11 +3269,11 @@ data Happy_IntList = HappyCons Int# Happy_IntList -{-# LINE 49 "templates/GenericTemplate.hs" #-} +{-# LINE 49 "GenericTemplate.hs" #-} -{-# LINE 59 "templates/GenericTemplate.hs" #-} +{-# LINE 59 "GenericTemplate.hs" #-} -{-# LINE 68 "templates/GenericTemplate.hs" #-} +{-# LINE 68 "GenericTemplate.hs" #-} infixr 9 `HappyStk` data HappyStk a = HappyStk a (HappyStk a) @@ -3273,7 +3325,7 @@ happyDoAction i tk st action | check = indexShortOffAddr happyTable off_i | otherwise = indexShortOffAddr happyDefActions st -{-# LINE 127 "templates/GenericTemplate.hs" #-} +{-# LINE 127 "GenericTemplate.hs" #-} indexShortOffAddr (HappyA# arr) off = @@ -3306,7 +3358,7 @@ data HappyAddr = HappyA# Addr# ----------------------------------------------------------------------------- -- HappyState data type (not arrays) -{-# LINE 170 "templates/GenericTemplate.hs" #-} +{-# LINE 170 "GenericTemplate.hs" #-} ----------------------------------------------------------------------------- -- Shifting a token diff --git a/src/GF/Source/PrintGF.hs b/src/GF/Source/PrintGF.hs index ed45d39c4..54a582c38 100644 --- a/src/GF/Source/PrintGF.hs +++ b/src/GF/Source/PrintGF.hs @@ -1,10 +1,10 @@ -module GF.Source.PrintGF where --H +{-# OPTIONS -fno-warn-incomplete-patterns #-} +module GF.Source.PrintGF where --- pretty-printer generated by the BNF converter, except --H +-- pretty-printer generated by the BNF converter -import GF.Infra.Ident --H -import GF.Source.AbsGF --H -import Data.Char --H +import GF.Source.AbsGF +import Char -- the top-level printing method printTree :: Print a => a -> String @@ -18,12 +18,6 @@ doc = (:) render :: Doc -> String render d = rend 0 (map ($ "") $ d []) "" where rend i ss = case ss of - --H these four are hand-written - "{0" :ts -> showChar '{' . rend (i+1) ts - t :"}0" :ts -> showString t . space "}" . rend (i-1) ts - t : "." :ts -> showString t . showString "." . rend i ts - "\\" :ts -> showString "\\" . rend i ts - "[" :ts -> showChar '[' . rend i ts "(" :ts -> showChar '(' . rend i ts "{" :ts -> showChar '{' . new (i+1) . rend (i+1) ts @@ -83,17 +77,18 @@ instance Print Double where prt _ x = doc (shows x) -instance Print Ident where - prt _ i = doc (showString $ prIdent i) --H - prtList es = case es of - [x] -> (concatD [prt 0 x]) - x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs]) - instance Print LString where prt _ (LString i) = doc (showString i) +instance Print PIdent where + prt _ (PIdent (_,i)) = doc (showString i) + prtList es = case es of + [x] -> (concatD [prt 0 x]) + x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs]) + + instance Print Grammar where prt i e = case e of @@ -102,7 +97,7 @@ instance Print Grammar where instance Print ModDef where prt i e = case e of - MMain id0 id concspecs -> prPrec i 0 (concatD [doc (showString "grammar") , prt 0 id0 , doc (showString "=") , doc (showString "{") , doc (showString "abstract") , doc (showString "=") , prt 0 id , doc (showString ";") , prt 0 concspecs , doc (showString "}")]) + MMain pident0 pident concspecs -> prPrec i 0 (concatD [doc (showString "grammar") , prt 0 pident0 , doc (showString "=") , doc (showString "{") , doc (showString "abstract") , doc (showString "=") , prt 0 pident , doc (showString ";") , prt 0 concspecs , doc (showString "}")]) MModule complmod modtype modbody -> prPrec i 0 (concatD [prt 0 complmod , prt 0 modtype , doc (showString "=") , prt 0 modbody]) prtList es = case es of @@ -111,7 +106,7 @@ instance Print ModDef where instance Print ConcSpec where prt i e = case e of - ConcSpec id concexp -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 concexp]) + ConcSpec pident concexp -> prPrec i 0 (concatD [prt 0 pident , doc (showString "=") , prt 0 concexp]) prtList es = case es of [] -> (concatD []) @@ -120,7 +115,7 @@ instance Print ConcSpec where instance Print ConcExp where prt i e = case e of - ConcExp id transfers -> prPrec i 0 (concatD [prt 0 id , prt 0 transfers]) + ConcExp pident transfers -> prPrec i 0 (concatD [prt 0 pident , prt 0 transfers]) instance Print Transfer where @@ -134,25 +129,26 @@ instance Print Transfer where instance Print ModType where prt i e = case e of - MTAbstract id -> prPrec i 0 (concatD [doc (showString "abstract") , prt 0 id]) - MTResource id -> prPrec i 0 (concatD [doc (showString "resource") , prt 0 id]) - MTInterface id -> prPrec i 0 (concatD [doc (showString "interface") , prt 0 id]) - MTConcrete id0 id -> prPrec i 0 (concatD [doc (showString "concrete") , prt 0 id0 , doc (showString "of") , prt 0 id]) - MTInstance id0 id -> prPrec i 0 (concatD [doc (showString "instance") , prt 0 id0 , doc (showString "of") , prt 0 id]) - MTTransfer id open0 open -> prPrec i 0 (concatD [doc (showString "transfer") , prt 0 id , doc (showString ":") , prt 0 open0 , doc (showString "->") , prt 0 open]) + MTAbstract pident -> prPrec i 0 (concatD [doc (showString "abstract") , prt 0 pident]) + MTResource pident -> prPrec i 0 (concatD [doc (showString "resource") , prt 0 pident]) + MTInterface pident -> prPrec i 0 (concatD [doc (showString "interface") , prt 0 pident]) + MTConcrete pident0 pident -> prPrec i 0 (concatD [doc (showString "concrete") , prt 0 pident0 , doc (showString "of") , prt 0 pident]) + MTInstance pident0 pident -> prPrec i 0 (concatD [doc (showString "instance") , prt 0 pident0 , doc (showString "of") , prt 0 pident]) + MTTransfer pident open0 open -> prPrec i 0 (concatD [doc (showString "transfer") , prt 0 pident , doc (showString ":") , prt 0 open0 , doc (showString "->") , prt 0 open]) instance Print ModBody where prt i e = case e of - MNoBody includeds -> prPrec i 0 (concatD [prt 0 includeds]) - MWithBody included opens0 opens topdefs -> prPrec i 0 (concatD [prt 0 included , doc (showString "with") , prt 0 opens0 , doc (showString "**") , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")]) - MWithEBody includeds included opens0 opens topdefs -> prPrec i 0 (concatD [prt 0 includeds , doc (showString "**") , prt 0 included , doc (showString "with") , prt 0 opens0 , doc (showString "**") , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")]) MBody extend opens topdefs -> prPrec i 0 (concatD [prt 0 extend , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")]) + MNoBody includeds -> prPrec i 0 (concatD [prt 0 includeds]) MWith included opens -> prPrec i 0 (concatD [prt 0 included , doc (showString "with") , prt 0 opens]) + MWithBody included opens0 opens topdefs -> prPrec i 0 (concatD [prt 0 included , doc (showString "with") , prt 0 opens0 , doc (showString "**") , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")]) MWithE includeds included opens -> prPrec i 0 (concatD [prt 0 includeds , doc (showString "**") , prt 0 included , doc (showString "with") , prt 0 opens]) - MReuse id -> prPrec i 0 (concatD [doc (showString "reuse") , prt 0 id]) + MWithEBody includeds included opens0 opens topdefs -> prPrec i 0 (concatD [prt 0 includeds , doc (showString "**") , prt 0 included , doc (showString "with") , prt 0 opens0 , doc (showString "**") , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")]) + MReuse pident -> prPrec i 0 (concatD [doc (showString "reuse") , prt 0 pident]) MUnion includeds -> prPrec i 0 (concatD [doc (showString "union") , prt 0 includeds]) + instance Print Extend where prt i e = case e of Ext includeds -> prPrec i 0 (concatD [prt 0 includeds , doc (showString "**")]) @@ -167,9 +163,9 @@ instance Print Opens where instance Print Open where prt i e = case e of - OName id -> prPrec i 0 (concatD [prt 0 id]) - OQualQO qualopen id -> prPrec i 0 (concatD [doc (showString "(") , prt 0 qualopen , prt 0 id , doc (showString ")")]) - OQual qualopen id0 id -> prPrec i 0 (concatD [doc (showString "(") , prt 0 qualopen , prt 0 id0 , doc (showString "=") , prt 0 id , doc (showString ")")]) + OName pident -> prPrec i 0 (concatD [prt 0 pident]) + OQualQO qualopen pident -> prPrec i 0 (concatD [doc (showString "(") , prt 0 qualopen , prt 0 pident , doc (showString ")")]) + OQual qualopen pident0 pident -> prPrec i 0 (concatD [doc (showString "(") , prt 0 qualopen , prt 0 pident0 , doc (showString "=") , prt 0 pident , doc (showString ")")]) prtList es = case es of [] -> (concatD []) @@ -191,9 +187,9 @@ instance Print QualOpen where 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 "]")]) + IAll pident -> prPrec i 0 (concatD [prt 0 pident]) + ISome pident pidents -> prPrec i 0 (concatD [prt 0 pident , doc (showString "[") , prt 0 pidents , doc (showString "]")]) + IMinus pident pidents -> prPrec i 0 (concatD [prt 0 pident , doc (showString "-") , doc (showString "[") , prt 0 pidents , doc (showString "]")]) prtList es = case es of [] -> (concatD []) @@ -230,9 +226,9 @@ instance Print TopDef where DefPrintOld printdefs -> prPrec i 0 (concatD [doc (showString "printname") , prt 0 printdefs]) DefLintype defs -> prPrec i 0 (concatD [doc (showString "lintype") , prt 0 defs]) DefPattern defs -> prPrec i 0 (concatD [doc (showString "pattern") , prt 0 defs]) - DefPackage id topdefs -> prPrec i 0 (concatD [doc (showString "package") , prt 0 id , doc (showString "=") , doc (showString "{") , prt 0 topdefs , doc (showString "}") , doc (showString ";")]) + DefPackage pident topdefs -> prPrec i 0 (concatD [doc (showString "package") , prt 0 pident , doc (showString "=") , doc (showString "{") , prt 0 topdefs , doc (showString "}") , doc (showString ";")]) DefVars defs -> prPrec i 0 (concatD [doc (showString "var") , prt 0 defs]) - DefTokenizer id -> prPrec i 0 (concatD [doc (showString "tokenizer") , prt 0 id , doc (showString ";")]) + DefTokenizer pident -> prPrec i 0 (concatD [doc (showString "tokenizer") , prt 0 pident , doc (showString ";")]) prtList es = case es of [] -> (concatD []) @@ -240,9 +236,9 @@ instance Print TopDef where instance Print CatDef where prt i e = case e of - SimpleCatDef id ddecls -> prPrec i 0 (concatD [prt 0 id , prt 0 ddecls]) - ListCatDef id ddecls -> prPrec i 0 (concatD [doc (showString "[") , prt 0 id , prt 0 ddecls , doc (showString "]")]) - ListSizeCatDef id ddecls n -> prPrec i 0 (concatD [doc (showString "[") , prt 0 id , prt 0 ddecls , doc (showString "]") , doc (showString "{") , prt 0 n , doc (showString "}")]) + SimpleCatDef pident ddecls -> prPrec i 0 (concatD [prt 0 pident , prt 0 ddecls]) + ListCatDef pident ddecls -> prPrec i 0 (concatD [doc (showString "[") , prt 0 pident , prt 0 ddecls , doc (showString "]")]) + ListSizeCatDef pident ddecls n -> prPrec i 0 (concatD [doc (showString "[") , prt 0 pident , prt 0 ddecls , doc (showString "]") , doc (showString "{") , prt 0 n , doc (showString "}")]) prtList es = case es of [x] -> (concatD [prt 0 x , doc (showString ";")]) @@ -250,7 +246,7 @@ instance Print CatDef where instance Print FunDef where prt i e = case e of - FunDef ids exp -> prPrec i 0 (concatD [prt 0 ids , doc (showString ":") , prt 0 exp]) + FunDef pidents exp -> prPrec i 0 (concatD [prt 0 pidents , doc (showString ":") , prt 0 exp]) prtList es = case es of [x] -> (concatD [prt 0 x , doc (showString ";")]) @@ -258,7 +254,7 @@ instance Print FunDef where instance Print DataDef where prt i e = case e of - DataDef id dataconstrs -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 dataconstrs]) + DataDef pident dataconstrs -> prPrec i 0 (concatD [prt 0 pident , doc (showString "=") , prt 0 dataconstrs]) prtList es = case es of [x] -> (concatD [prt 0 x , doc (showString ";")]) @@ -266,8 +262,8 @@ instance Print DataDef where instance Print DataConstr where prt i e = case e of - DataId id -> prPrec i 0 (concatD [prt 0 id]) - DataQId id0 id -> prPrec i 0 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id]) + DataId pident -> prPrec i 0 (concatD [prt 0 pident]) + DataQId pident0 pident -> prPrec i 0 (concatD [prt 0 pident0 , doc (showString ".") , prt 0 pident]) prtList es = case es of [] -> (concatD []) @@ -276,9 +272,9 @@ instance Print DataConstr where instance Print ParDef where prt i e = case e of - ParDefDir id parconstrs -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 parconstrs]) - ParDefIndir id0 id -> prPrec i 0 (concatD [prt 0 id0 , doc (showString "=") , doc (showString "(") , doc (showString "in") , prt 0 id , doc (showString ")")]) - ParDefAbs id -> prPrec i 0 (concatD [prt 0 id]) + ParDefDir pident parconstrs -> prPrec i 0 (concatD [prt 0 pident , doc (showString "=") , prt 0 parconstrs]) + ParDefIndir pident0 pident -> prPrec i 0 (concatD [prt 0 pident0 , doc (showString "=") , doc (showString "(") , doc (showString "in") , prt 0 pident , doc (showString ")")]) + ParDefAbs pident -> prPrec i 0 (concatD [prt 0 pident]) prtList es = case es of [x] -> (concatD [prt 0 x , doc (showString ";")]) @@ -286,7 +282,7 @@ instance Print ParDef where instance Print ParConstr where prt i e = case e of - ParConstr id ddecls -> prPrec i 0 (concatD [prt 0 id , prt 0 ddecls]) + ParConstr pident ddecls -> prPrec i 0 (concatD [prt 0 pident , prt 0 ddecls]) prtList es = case es of [] -> (concatD []) @@ -303,7 +299,7 @@ instance Print PrintDef where instance Print FlagDef where prt i e = case e of - FlagDef id0 id -> prPrec i 0 (concatD [prt 0 id0 , doc (showString "=") , prt 0 id]) + FlagDef pident0 pident -> prPrec i 0 (concatD [prt 0 pident0 , doc (showString "=") , prt 0 pident]) prtList es = case es of [x] -> (concatD [prt 0 x , doc (showString ";")]) @@ -311,8 +307,8 @@ instance Print FlagDef where instance Print Name where prt i e = case e of - IdentName id -> prPrec i 0 (concatD [prt 0 id]) - ListName id -> prPrec i 0 (concatD [doc (showString "[") , prt 0 id , doc (showString "]")]) + IdentName pident -> prPrec i 0 (concatD [prt 0 pident]) + ListName pident -> prPrec i 0 (concatD [doc (showString "[") , prt 0 pident , doc (showString "]")]) prtList es = case es of [x] -> (concatD [prt 0 x]) @@ -320,9 +316,9 @@ instance Print Name where instance Print LocDef where prt i e = case e of - LDDecl ids exp -> prPrec i 0 (concatD [prt 0 ids , doc (showString ":") , prt 0 exp]) - LDDef ids exp -> prPrec i 0 (concatD [prt 0 ids , doc (showString "=") , prt 0 exp]) - LDFull ids exp0 exp -> prPrec i 0 (concatD [prt 0 ids , doc (showString ":") , prt 0 exp0 , doc (showString "=") , prt 0 exp]) + LDDecl pidents exp -> prPrec i 0 (concatD [prt 0 pidents , doc (showString ":") , prt 0 exp]) + LDDef pidents exp -> prPrec i 0 (concatD [prt 0 pidents , doc (showString "=") , prt 0 exp]) + LDFull pidents exp0 exp -> prPrec i 0 (concatD [prt 0 pidents , doc (showString ":") , prt 0 exp0 , doc (showString "=") , prt 0 exp]) prtList es = case es of [] -> (concatD []) @@ -331,9 +327,9 @@ instance Print LocDef where instance Print Exp where prt i e = case e of - 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 "%")]) + EIdent pident -> prPrec i 6 (concatD [prt 0 pident]) + EConstr pident -> prPrec i 6 (concatD [doc (showString "{") , prt 0 pident , doc (showString "}")]) + ECons pident -> prPrec i 6 (concatD [doc (showString "%") , prt 0 pident , 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]) @@ -341,15 +337,15 @@ instance Print Exp where 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 "]")]) + EList pident exps -> prPrec i 6 (concatD [doc (showString "[") , prt 0 pident , 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 ")")]) + EIndir pident -> prPrec i 6 (concatD [doc (showString "(") , doc (showString "in") , prt 0 pident , 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]) + EQConstr pident0 pident -> prPrec i 5 (concatD [doc (showString "{") , prt 0 pident0 , doc (showString ".") , prt 0 pident , doc (showString "}")]) + EQCons pident0 pident -> prPrec i 5 (concatD [doc (showString "%") , prt 0 pident0 , doc (showString ".") , prt 0 pident]) 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 "}")]) @@ -358,7 +354,9 @@ instance Print Exp where 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]) + EConAt pident exp -> prPrec i 4 (concatD [prt 0 pident , doc (showString "@") , prt 6 exp]) + EPatt patt -> prPrec i 4 (concatD [doc (showString "pattern") , prt 2 patt]) + EPattType exp -> prPrec i 4 (concatD [doc (showString "pattern") , doc (showString "type") , prt 5 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]) @@ -374,7 +372,7 @@ instance Print Exp where EEqs equations -> prPrec i 0 (concatD [doc (showString "fn") , doc (showString "{") , prt 0 equations , doc (showString "}")]) 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]) + ELin pident -> prPrec i 4 (concatD [doc (showString "Lin") , prt 0 pident]) prtList es = case es of [] -> (concatD []) @@ -389,21 +387,25 @@ instance Print Exps where instance Print Patt where prt i e = case e of + PChar -> prPrec i 2 (concatD [doc (showString "?")]) + PChars str -> prPrec i 2 (concatD [doc (showString "[") , prt 0 str , doc (showString "]")]) + PMacro pident -> prPrec i 2 (concatD [doc (showString "#") , prt 0 pident]) + PM pident0 pident -> prPrec i 2 (concatD [doc (showString "#") , prt 0 pident0 , doc (showString ".") , prt 0 pident]) 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]) + PV pident -> prPrec i 2 (concatD [prt 0 pident]) + PCon pident -> prPrec i 2 (concatD [doc (showString "{") , prt 0 pident , doc (showString "}")]) + PQ pident0 pident -> prPrec i 2 (concatD [prt 0 pident0 , doc (showString ".") , prt 0 pident]) 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]) + PC pident patts -> prPrec i 1 (concatD [prt 0 pident , prt 0 patts]) + PQC pident0 pident patts -> prPrec i 1 (concatD [prt 0 pident0 , doc (showString ".") , prt 0 pident , prt 0 patts]) PDisj patt0 patt -> prPrec i 0 (concatD [prt 0 patt0 , doc (showString "|") , prt 1 patt]) PSeq patt0 patt -> prPrec i 0 (concatD [prt 0 patt0 , doc (showString "+") , prt 1 patt]) PRep patt -> prPrec i 1 (concatD [prt 2 patt , doc (showString "*")]) - PAs id patt -> prPrec i 1 (concatD [prt 0 id , doc (showString "@") , prt 2 patt]) + PAs pident patt -> prPrec i 1 (concatD [prt 0 pident , doc (showString "@") , prt 2 patt]) PNeg patt -> prPrec i 1 (concatD [doc (showString "-") , prt 2 patt]) prtList es = case es of @@ -412,7 +414,7 @@ instance Print Patt where instance Print PattAss where prt i e = case e of - PA ids patt -> prPrec i 0 (concatD [prt 0 ids , doc (showString "=") , prt 0 patt]) + PA pidents patt -> prPrec i 0 (concatD [prt 0 pidents , doc (showString "=") , prt 0 patt]) prtList es = case es of [] -> (concatD []) @@ -421,7 +423,7 @@ instance Print PattAss where instance Print Label where prt i e = case e of - LIdent id -> prPrec i 0 (concatD [prt 0 id]) + LIdent pident -> prPrec i 0 (concatD [prt 0 pident]) LVar n -> prPrec i 0 (concatD [doc (showString "$") , prt 0 n]) @@ -436,7 +438,7 @@ instance Print Sort where instance Print Bind where prt i e = case e of - BIdent id -> prPrec i 0 (concatD [prt 0 id]) + BIdent pident -> prPrec i 0 (concatD [prt 0 pident]) BWild -> prPrec i 0 (concatD [doc (showString "_")]) prtList es = case es of @@ -517,11 +519,11 @@ instance Print Include where instance Print FileName where prt i e = case e of FString str -> prPrec i 0 (concatD [prt 0 str]) - FIdent id -> prPrec i 0 (concatD [prt 0 id]) + FIdent pident -> prPrec i 0 (concatD [prt 0 pident]) FSlash filename -> prPrec i 0 (concatD [doc (showString "/") , prt 0 filename]) FDot filename -> prPrec i 0 (concatD [doc (showString ".") , prt 0 filename]) FMinus filename -> prPrec i 0 (concatD [doc (showString "-") , prt 0 filename]) - FAddId id filename -> prPrec i 0 (concatD [prt 0 id , prt 0 filename]) + FAddId pident filename -> prPrec i 0 (concatD [prt 0 pident , prt 0 filename]) prtList es = case es of [x] -> (concatD [prt 0 x , doc (showString ";")]) diff --git a/src/GF/Source/SkelGF.hs b/src/GF/Source/SkelGF.hs index 5c903523b..3bd192f9d 100644 --- a/src/GF/Source/SkelGF.hs +++ b/src/GF/Source/SkelGF.hs @@ -3,24 +3,22 @@ module GF.Source.SkelGF where -- Haskell module generated by the BNF converter import GF.Source.AbsGF -import GF.Infra.Ident -import GF.Data.ErrM - +import GF.Source.ErrM type Result = Err String failure :: Show a => a -> Result failure x = Bad $ "Undefined case: " ++ show x -transIdent :: Ident -> Result -transIdent x = case x of - IC str -> failure x - - transLString :: LString -> Result transLString x = case x of LString str -> failure x +transPIdent :: PIdent -> Result +transPIdent x = case x of + PIdent str -> failure x + + transGrammar :: Grammar -> Result transGrammar x = case x of Gr moddefs -> failure x @@ -28,18 +26,18 @@ transGrammar x = case x of transModDef :: ModDef -> Result transModDef x = case x of - MMain id0 id concspecs -> failure x + MMain pident0 pident concspecs -> failure x MModule complmod modtype modbody -> failure x transConcSpec :: ConcSpec -> Result transConcSpec x = case x of - ConcSpec id concexp -> failure x + ConcSpec pident concexp -> failure x transConcExp :: ConcExp -> Result transConcExp x = case x of - ConcExp id transfers -> failure x + ConcExp pident transfers -> failure x transTransfer :: Transfer -> Result @@ -50,26 +48,29 @@ transTransfer x = case x of transModType :: ModType -> Result transModType x = case x of - MTAbstract id -> failure x - MTResource id -> failure x - MTInterface id -> failure x - MTConcrete id0 id -> failure x - MTInstance id0 id -> failure x - MTTransfer id open0 open -> failure x + MTAbstract pident -> failure x + MTResource pident -> failure x + MTInterface pident -> failure x + MTConcrete pident0 pident -> failure x + MTInstance pident0 pident -> failure x + MTTransfer pident open0 open -> failure x transModBody :: ModBody -> Result transModBody x = case x of MBody extend opens topdefs -> failure x - MWith id opens -> failure x - MWithE ids id opens -> failure x - MReuse id -> failure x + MNoBody includeds -> failure x + MWith included opens -> failure x + MWithBody included opens0 opens topdefs -> failure x + MWithE includeds included opens -> failure x + MWithEBody includeds included opens0 opens topdefs -> failure x + MReuse pident -> failure x MUnion includeds -> failure x transExtend :: Extend -> Result transExtend x = case x of - Ext ids -> failure x + Ext includeds -> failure x NoExt -> failure x @@ -81,9 +82,9 @@ transOpens x = case x of transOpen :: Open -> Result transOpen x = case x of - OName id -> failure x - OQualQO qualopen id -> failure x - OQual qualopen id0 id -> failure x + OName pident -> failure x + OQualQO qualopen pident -> failure x + OQual qualopen pident0 pident -> failure x transComplMod :: ComplMod -> Result @@ -101,8 +102,9 @@ transQualOpen x = case x of transIncluded :: Included -> Result transIncluded x = case x of - IAll id -> failure x - ISome id ids -> failure x + IAll pident -> failure x + ISome pident pidents -> failure x + IMinus pident pidents -> failure x transDef :: Def -> Result @@ -132,44 +134,44 @@ transTopDef x = case x of DefPrintOld printdefs -> failure x DefLintype defs -> failure x DefPattern defs -> failure x - DefPackage id topdefs -> failure x + DefPackage pident topdefs -> failure x DefVars defs -> failure x - DefTokenizer id -> failure x + DefTokenizer pident -> failure x transCatDef :: CatDef -> Result transCatDef x = case x of - SimpleCatDef id ddecls -> failure x - ListCatDef id ddecls -> failure x - ListSizeCatDef id ddecls n -> failure x + SimpleCatDef pident ddecls -> failure x + ListCatDef pident ddecls -> failure x + ListSizeCatDef pident ddecls n -> failure x transFunDef :: FunDef -> Result transFunDef x = case x of - FunDef ids exp -> failure x + FunDef pidents exp -> failure x transDataDef :: DataDef -> Result transDataDef x = case x of - DataDef id dataconstrs -> failure x + DataDef pident dataconstrs -> failure x transDataConstr :: DataConstr -> Result transDataConstr x = case x of - DataId id -> failure x - DataQId id0 id -> failure x + DataId pident -> failure x + DataQId pident0 pident -> failure x transParDef :: ParDef -> Result transParDef x = case x of - ParDefDir id parconstrs -> failure x - ParDefIndir id0 id -> failure x - ParDefAbs id -> failure x + ParDefDir pident parconstrs -> failure x + ParDefIndir pident0 pident -> failure x + ParDefAbs pident -> failure x transParConstr :: ParConstr -> Result transParConstr x = case x of - ParConstr id ddecls -> failure x + ParConstr pident ddecls -> failure x transPrintDef :: PrintDef -> Result @@ -179,42 +181,43 @@ transPrintDef x = case x of transFlagDef :: FlagDef -> Result transFlagDef x = case x of - FlagDef id0 id -> failure x + FlagDef pident0 pident -> failure x transName :: Name -> Result transName x = case x of - IdentName id -> failure x - ListName id -> failure x + IdentName pident -> failure x + ListName pident -> failure x transLocDef :: LocDef -> Result transLocDef x = case x of - LDDecl ids exp -> failure x - LDDef ids exp -> failure x - LDFull ids exp0 exp -> failure x + LDDecl pidents exp -> failure x + LDDef pidents exp -> failure x + LDFull pidents exp0 exp -> failure x transExp :: Exp -> Result transExp x = case x of - EIdent id -> failure x - EConstr id -> failure x - ECons id -> failure x + EIdent pident -> failure x + EConstr pident -> failure x + ECons pident -> failure x ESort sort -> failure x EString str -> failure x EInt n -> failure x + EFloat d -> failure x EMeta -> failure x EEmpty -> failure x EData -> failure x - EList id exps -> failure x + EList pident exps -> failure x EStrings str -> failure x ERecord locdefs -> failure x ETuple tuplecomps -> failure x - EIndir id -> failure x + EIndir pident -> failure x ETyped exp0 exp -> failure x EProj exp label -> failure x - EQConstr id0 id -> failure x - EQCons id0 id -> failure x + EQConstr pident0 pident -> failure x + EQCons pident0 pident -> failure x EApp exp0 exp -> failure x ETable cases -> failure x ETTable exp cases -> failure x @@ -223,22 +226,25 @@ transExp x = case x of EVariants exps -> failure x EPre exp alterns -> failure x EStrs exps -> failure x - EConAt id exp -> failure x + EConAt pident exp -> failure x + EPatt patt -> failure x + EPattType exp -> failure x ESelect exp0 exp -> failure x ETupTyp exp0 exp -> failure x EExtend exp0 exp -> failure x + EGlue exp0 exp -> failure x + EConcat exp0 exp -> failure x EAbstr binds exp -> failure x ECTable binds exp -> failure x EProd decl exp -> failure x ETType exp0 exp -> failure x - EConcat exp0 exp -> failure x - EGlue exp0 exp -> failure x ELet locdefs exp -> failure x ELetb locdefs exp -> failure x EWhere exp locdefs -> failure x EEqs equations -> failure x + EExample exp str -> failure x ELString lstring -> failure x - ELin id -> failure x + ELin pident -> failure x transExps :: Exps -> Result @@ -249,26 +255,36 @@ transExps x = case x of transPatt :: Patt -> Result transPatt x = case x of + PChar -> failure x + PChars str -> failure x + PMacro pident -> failure x + PM pident0 pident -> failure x PW -> failure x - PV id -> failure x - PCon id -> failure x - PQ id0 id -> failure x + PV pident -> failure x + PCon pident -> failure x + PQ pident0 pident -> failure x PInt n -> failure x + PFloat d -> failure x PStr str -> failure x PR pattasss -> failure x PTup patttuplecomps -> failure x - PC id patts -> failure x - PQC id0 id patts -> failure x + PC pident patts -> failure x + PQC pident0 pident patts -> failure x + PDisj patt0 patt -> failure x + PSeq patt0 patt -> failure x + PRep patt -> failure x + PAs pident patt -> failure x + PNeg patt -> failure x transPattAss :: PattAss -> Result transPattAss x = case x of - PA ids patt -> failure x + PA pidents patt -> failure x transLabel :: Label -> Result transLabel x = case x of - LIdent id -> failure x + LIdent pident -> failure x LVar n -> failure x @@ -281,14 +297,9 @@ transSort x = case x of Sort_Strs -> failure x -transPattAlt :: PattAlt -> Result -transPattAlt x = case x of - AltP patt -> failure x - - transBind :: Bind -> Result transBind x = case x of - BIdent id -> failure x + BIdent pident -> failure x BWild -> failure x @@ -310,7 +321,7 @@ transPattTupleComp x = case x of transCase :: Case -> Result transCase x = case x of - Case pattalts exp -> failure x + Case patt exp -> failure x transEquation :: Equation -> Result @@ -343,11 +354,11 @@ transInclude x = case x of transFileName :: FileName -> Result transFileName x = case x of FString str -> failure x - FIdent id -> failure x + FIdent pident -> failure x FSlash filename -> failure x FDot filename -> failure x FMinus filename -> failure x - FAddId id filename -> failure x + FAddId pident filename -> failure x diff --git a/src/GF/Source/SourceToGrammar.hs b/src/GF/Source/SourceToGrammar.hs index 8e4f334e3..b2151affb 100644 --- a/src/GF/Source/SourceToGrammar.hs +++ b/src/GF/Source/SourceToGrammar.hs @@ -45,14 +45,20 @@ type Result = Err String failure :: Show a => a -> Err b failure x = Bad $ "Undefined case: " ++ show x -transIdent :: Ident -> Err Ident -transIdent x = case x of - x -> return x +prPIdent :: PIdent -> String +prPIdent (PIdent (_,c)) = c + +getIdentPos :: PIdent -> Err (Ident,Int) +getIdentPos x = case x of + PIdent ((line,_),c) -> return (IC c,line) + +transIdent :: PIdent -> Err Ident +transIdent = liftM fst . getIdentPos transName :: Name -> Err Ident transName n = case n of IdentName i -> transIdent i - ListName i -> transIdent (mkListId i) + ListName i -> liftM mkListId (transIdent i) transGrammar :: Grammar -> Err G.SourceGrammar transGrammar x = case x of @@ -250,31 +256,34 @@ returnl = return . Left transFlagDef :: FlagDef -> Err GO.Option transFlagDef x = case x of - FlagDef f x -> return $ GO.Opt (prIdent f,[prIdent x]) + FlagDef f x -> return $ GO.Opt (prPIdent f,[prPIdent x]) -- | Cat definitions can also return some fun defs -- if it is a list category definition transCatDef :: CatDef -> Err [(Ident, G.Info)] transCatDef x = case x of - SimpleCatDef id ddecls -> liftM (:[]) $ cat id ddecls + SimpleCatDef id ddecls -> do + id' <- transIdent id + liftM (:[]) $ cat id' ddecls ListCatDef id ddecls -> listCat id ddecls 0 ListSizeCatDef id ddecls size -> listCat id ddecls size where - cat id ddecls = do - i <- transIdent id + cat i ddecls = do + -- i <- transIdent id cont <- liftM concat $ mapM transDDecl ddecls return (i, G.AbsCat (yes cont) nope) listCat id ddecls size = do + id' <- transIdent id let - li = mkListId id - baseId = mkBaseId id - consId = mkConsId id + li = mkListId id' + baseId = mkBaseId id' + consId = mkConsId id' catd0@(c,G.AbsCat (Yes cont0) _) <- cat li ddecls let catd = (c,G.AbsCat (Yes cont0) (Yes [M.cn baseId,M.cn consId])) cont = [(mkId x i,ty) | (i,(x,ty)) <- zip [0..] cont0] xs = map (G.Vr . fst) cont - cd = M.mkDecl (M.mkApp (G.Vr id) xs) + cd = M.mkDecl (M.mkApp (G.Vr id') xs) lc = M.mkApp (G.Vr li) xs niltyp = M.mkProdSimple (cont ++ genericReplicate size cd) lc nilfund = (baseId, G.AbsFun (yes niltyp) (yes G.EData)) @@ -431,7 +440,10 @@ transExp x = case x of EMeta -> return $ M.meta $ M.int2meta 0 EEmpty -> return G.Empty -- [ C x_1 ... x_n ] becomes (ListC x_1 ... x_n) - EList i es -> transExp $ foldl EApp (EIdent (mkListId i)) (exps2list es) + EList i es -> do + i' <- transIdent i + es' <- mapM transExp (exps2list es) + return $ foldl G.App (G.Vr (mkListId i')) es' EStrings [] -> return G.Empty EStrings str -> return $ foldr1 G.C $ map G.K $ words str ERecord defs -> erecord2term defs @@ -538,16 +550,17 @@ locdef2fields d = case d of trLabel :: Label -> Err G.Label trLabel x = case x of - -- this case is for bward compatibiity and should be removed - LIdent (IC ('v':ds@(_:_))) | all isDigit ds -> return $ G.LVar $ readIntArg ds + -- this case is for bward compatibility and should be removed + LIdent (PIdent (_,'v':ds@(_:_))) | all isDigit ds -> return $ G.LVar $ readIntArg ds - LIdent (IC s) -> return $ G.LIdent s + LIdent (PIdent (_, s)) -> return $ G.LIdent s LVar x -> return $ G.LVar $ fromInteger x transSort :: Sort -> Err String transSort x = case x of _ -> return $ printTree x +{- --- no more used 7/1/2006 AR transPatts :: Patt -> Err [G.Patt] transPatts p = case p of @@ -568,11 +581,11 @@ transPatts p = case p of 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 - PV (IC "C_") -> return G.PChar ---- temporary encoding PV id -> liftM G.PV $ transIdent id PC id patts -> liftM2 G.PC (transIdent id) (mapM transPatt patts) PCon id -> liftM2 G.PC (transIdent id) (return []) @@ -593,8 +606,8 @@ transPatt x = case x of PRep p -> liftM G.PRep (transPatt p) PNeg p -> liftM G.PNeg (transPatt p) PAs x p -> liftM2 G.PAs (transIdent x) (transPatt p) - - + PChar -> return G.PChar + PChars s -> return $ G.PChars s transBind :: Bind -> Err Ident transBind x = case x of @@ -681,9 +694,11 @@ transOldGrammar opts name0 x = case x of q = CMCompl name = maybe name0 (++ ".gf") $ getOptVal opts useName - absName = identC $ maybe topic id $ getOptVal opts useAbsName - resName = identC $ maybe ("Res" ++ lang) id $ getOptVal opts useResName - cncName = identC $ maybe lang id $ getOptVal opts useCncName + absName = identPI $ maybe topic id $ getOptVal opts useAbsName + resName = identPI $ maybe ("Res" ++ lang) id $ getOptVal opts useResName + cncName = identPI $ maybe lang id $ getOptVal opts useCncName + + identPI s = PIdent ((0,0),s) (beg,rest) = span (/='.') name (topic,lang) = case rest of -- to avoid overwriting old files @@ -700,11 +715,11 @@ transInclude x = case x of where trans f = case f of FString s -> s - FIdent (IC s) -> modif s + FIdent (PIdent (_, s)) -> modif s FSlash filename -> '/' : trans filename FDot filename -> '.' : trans filename FMinus filename -> '-' : trans filename - FAddId (IC s) filename -> modif s ++ trans filename + FAddId (PIdent (_, s)) filename -> modif s ++ trans filename modif s = let s' = init s ++ [toLower (last s)] in if elem s' newReservedWords then s' else s --- unsafe hack ; cf. GetGrammar.oldLexer diff --git a/src/GF/Source/TestGF.hs b/src/GF/Source/TestGF.hs index b05baade9..e4c072467 100644 --- a/src/GF/Source/TestGF.hs +++ b/src/GF/Source/TestGF.hs @@ -2,7 +2,7 @@ module Main where -import System.IO ( stdin, hGetContents ) +import IO ( stdin, hGetContents ) import System ( getArgs, getProgName ) import GF.Source.LexGF @@ -14,7 +14,7 @@ import GF.Source.AbsGF -import GF.Data.ErrM +import GF.Source.ErrM type ParseFun a = [Token] -> Err a